Skip to content

Instantly share code, notes, and snippets.

@astagi
Created December 22, 2019 21:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save astagi/5f2cd8195af8840acd5d2dd5ca825656 to your computer and use it in GitHub Desktop.
Save astagi/5f2cd8195af8840acd5d2dd5ca825656 to your computer and use it in GitHub Desktop.
R2D2
let writePacket = (characteristic, buff, waitForNotification=false, timeout=0) => {
return new Promise(function(resolve, reject) {
let dataRead = [];
let checkIsAValidRequest = (dataRead) => {
if (dataRead[5] != 0x00) {
characteristic.removeListener('data', listenerForRead);
reject(dataRead[5]);
}
}
let finish = () => {
setTimeout(() => {
characteristic.removeListener('data', listenerForRead);
resolve(true);
}, timeout);
}
let listenerForRead = (data, isNotification) => {
dataRead.push(...data)
if (data[data.length - 1] === EOP) {
if (waitForNotification) {
if (dataRead[1] % 2 == 0) {
finish();
} else {
checkIsAValidRequest(dataRead);
}
} else {
checkIsAValidRequest(dataRead);
finish();
}
dataRead = [];
}
};
characteristic.on('data', listenerForRead);
characteristic.write(Buffer.from(buff));
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment