/** * @name MuseJS * @version 1.0 | June 2022 * @author Respiire Health Systems Inc. * @license MIT */ class MuseCircularBuffer { constructor(size) { this.memory = new Array(size); for (var i=0;i> 4)); } else { samples12Bit.push(((samples[i] & 0xf) << 8) | samples[i + 1]); i++; } } return samples12Bit; } encodeCommand(cmd) { const encoded = new TextEncoder().encode(`X${cmd}\n`); encoded[0] = encoded.length - 1; return encoded; } // ------------------------------------- batteryData (event) { var data = event.target.value; data = data.buffer ? data: new DataView(data); this.batteryLevel = data.getUint16(2) / 512; } motionData(dv,scale,ofs) { return [ scale*dv.getInt16(ofs), scale*dv.getInt16(ofs+2), scale*dv.getInt16(ofs+4) ]; } accelerometerData (event) { var scale = 0.0000610352; var data = event.target.value; data = data.buffer ? data: new DataView(data); var ofs = 2; for (var i=0;i<3;i++) { var vals = this.motionData(data,scale,ofs); this.accelerometer[0].write(vals[0]); this.accelerometer[1].write(vals[1]); this.accelerometer[2].write(vals[2]); ofs+=6; } } gyroscopeData (event) { var scale = 0.0074768; var data = event.target.value; data = data.buffer ? data: new DataView(data); var ofs = 2; for (var i=0;i<3;i++) { var vals = this.motionData(data,scale,ofs); this.gyroscope[0].write(vals[0]); this.gyroscope[1].write(vals[1]); this.gyroscope[2].write(vals[2]); ofs+=6; } } controlData (event) { var data = event.target.value; data = data.buffer ? data: new DataView(data); var buf = new Uint8Array(data.buffer); var str = this.decodeInfo(buf); for (var i = 0; i