flipper-zero-tutorials/js/vgm_sensor/speaker_api.js

37 lines
1016 B
JavaScript
Raw Normal View History

2024-04-12 20:00:38 +00:00
({
_acquired: false,
_acquire: ffi("int furi_hal_speaker_acquire(int)"),
_release: ffi("void furi_hal_speaker_release(void)"),
start: ffi("void furi_hal_speaker_start(float, float)"),
stop: ffi("void furi_hal_speaker_stop(void)"),
acquire: function (timeout) {
if (!this._acquired) {
this._acquired = this._acquire(timeout);
}
return this._acquired;
},
acquired: function () {
return this._acquired;
},
release: function () {
if (this._acquired) {
this._release();
this._acquired = false;
}
},
play: function (frequency, volume, duration) {
let already_acquired = this.acquired();
if (!already_acquired) {
this.acquire(1000);
};
if (this.acquired()) {
this.start(frequency, volume);
delay(duration);
this.stop();
}
if (!already_acquired) {
this.release();
}
},
}
)