add helper functions that wait for ok or error response

This commit is contained in:
liamcottle 2025-02-14 12:35:10 +13:00
parent 904c99d018
commit 17cc2b9834

View file

@ -334,6 +334,99 @@ class Connection extends EventEmitter {
await this.sendCommandSendSelfAdvert(Constants.SelfAdvertTypes.ZeroHop);
}
setAdvertName(name) {
return new Promise(async (resolve, reject) => {
try {
// resolve promise when we receive ok
const onOk = () => {
this.off(Constants.ResponseCodes.Ok, onOk);
this.off(Constants.ResponseCodes.Err, onErr);
resolve();
}
// reject promise when we receive err
const onErr = () => {
this.off(Constants.ResponseCodes.Ok, onOk);
this.off(Constants.ResponseCodes.Err, onErr);
reject();
}
// listen for events
this.once(Constants.ResponseCodes.Ok, onOk);
this.once(Constants.ResponseCodes.Err, onErr);
// set advert name
await this.sendCommandSetAdvertName(name);
} catch(e) {
reject(e);
}
});
}
setTxPower(txPower) {
return new Promise(async (resolve, reject) => {
try {
// resolve promise when we receive ok
const onOk = () => {
this.off(Constants.ResponseCodes.Ok, onOk);
this.off(Constants.ResponseCodes.Err, onErr);
resolve();
}
// reject promise when we receive err
const onErr = () => {
this.off(Constants.ResponseCodes.Ok, onOk);
this.off(Constants.ResponseCodes.Err, onErr);
reject();
}
// listen for events
this.once(Constants.ResponseCodes.Ok, onOk);
this.once(Constants.ResponseCodes.Err, onErr);
// set tx power
await this.sendCommandSetTxPower(txPower);
} catch(e) {
reject(e);
}
});
}
setRadioParams(radioFreq, radioBw, radioSf, radioCr) {
return new Promise(async (resolve, reject) => {
try {
// resolve promise when we receive ok
const onOk = () => {
this.off(Constants.ResponseCodes.Ok, onOk);
this.off(Constants.ResponseCodes.Err, onErr);
resolve();
}
// reject promise when we receive err
const onErr = () => {
this.off(Constants.ResponseCodes.Ok, onOk);
this.off(Constants.ResponseCodes.Err, onErr);
reject();
}
// listen for events
this.once(Constants.ResponseCodes.Ok, onOk);
this.once(Constants.ResponseCodes.Err, onErr);
// set tx power
await this.sendCommandSetRadioParams(radioFreq, radioBw, radioSf, radioCr);
} catch(e) {
reject(e);
}
});
}
getContacts() {
return new Promise(async (resolve, reject) => {