obniz
Version:
obniz sdk for javascript
107 lines (89 loc) • 2.04 kB
JavaScript
class Grove_MP3 {
constructor() {
this.keys = ['vcc', 'gnd', 'mp3_rx', 'mp3_tx'];
this.requiredKeys = ['mp3_rx', 'mp3_tx'];
this.ioKeys = this.keys;
this.displayName = 'MP3';
this.displayIoNames = { mp3_rx: 'MP3Rx', mp3_tx: 'MP3Tx' };
}
static info() {
return {
name: 'Grove_MP3',
};
}
wired(obniz) {
this.obniz = obniz;
obniz.setVccGnd(this.params.vcc, this.params.gnd, '5v');
this.my_tx = this.params.mp3_rx;
this.my_rx = this.params.mp3_tx;
this.uart = this.obniz.getFreeUart();
}
async initWait(strage) {
this.uart.start({
tx: this.my_tx,
rx: this.my_rx,
baud: 9600,
});
await this.obniz.wait(100);
this.uartSend(0x0c, 0);
await this.obniz.wait(500);
this.uartSend(0x0b, 0);
await this.obniz.wait(100);
if (strage) {
if (strage == 'usb') {
this.uartSend(0x09, 1);
} else if (strage == 'sd') {
this.uartSend(0x09, 2);
}
} else {
this.uartSend(0x09, 2);
}
await this.obniz.wait(200);
}
setVolume(vol) {
if (vol >= 0 && vol <= 31) {
this.uartSend(0x06, vol);
}
}
volUp() {
this.uartSend(0x04, 0);
}
volDown() {
this.uartSend(0x05, 0);
}
play(track, folder) {
//if (!folder) folder = {};
if (folder) {
this.uart.send([0x7e, 0xff, 0x06, 0x0f, 0x00, folder, track, 0xef]);
} else {
// Play 'MP3' folder
this.uartSend(0x12, track);
}
}
stop() {
this.uartSend(0x16, 0);
}
pause() {
this.uartSend(0x0e, 0);
}
resume() {
this.uartSend(0x0d, 0);
}
next() {
this.uartSend(0x01, 0);
}
prev() {
this.uartSend(0x02, 0);
}
uartSend(command, param) {
let paramM = param >> 8;
let paramL = param & 0xff;
this.uart.send([0x7e, 0xff, 0x06, command, 0x01, paramM, paramL, 0xef]);
let response = this.uart.readBytes();
return response;
//return response;
}
}
if (typeof module === 'object') {
module.exports = Grove_MP3;
}