bthrm - Streamline the code a bit

pull/3349/head
Martin Boonk 2024-04-13 10:31:38 +02:00
parent f6432ef7b9
commit 47af3b482a
2 changed files with 37 additions and 37 deletions

View File

@ -42,3 +42,4 @@
Add debug option for disabling active scanning Add debug option for disabling active scanning
0.17: New GUI based on layout library 0.17: New GUI based on layout library
0.18: Minor code improvements 0.18: Minor code improvements
0.19: Fix setHRMPower method not returning new state

View File

@ -318,12 +318,13 @@ exports.enable = () => {
log("Starting notifications", newCharacteristic); log("Starting notifications", newCharacteristic);
var startPromise = newCharacteristic.startNotifications().then(()=>log("Notifications started", newCharacteristic)); var startPromise = newCharacteristic.startNotifications().then(()=>log("Notifications started", newCharacteristic));
log("Add " + settings.gracePeriodNotification + "ms grace period after starting notifications"); if (settings.gracePeriodNotification){
startPromise = startPromise.then(()=>{ log("Add " + settings.gracePeriodNotification + "ms grace period after starting notifications");
log("Wait after connect"); startPromise = startPromise.then(()=>{
return waitingPromise(settings.gracePeriodNotification); log("Wait after connect");
}); return waitingPromise(settings.gracePeriodNotification);
});
}
return startPromise; return startPromise;
}); });
} }
@ -397,6 +398,10 @@ exports.enable = () => {
if (settings.gracePeriodRequest){ if (settings.gracePeriodRequest){
log("Add " + settings.gracePeriodRequest + "ms grace period after request"); log("Add " + settings.gracePeriodRequest + "ms grace period after request");
promise = promise.then(()=>{
log("Wait after request");
return waitingPromise(settings.gracePeriodRequest);
});
} }
promise = promise.then((d)=>{ promise = promise.then((d)=>{
@ -404,33 +409,22 @@ exports.enable = () => {
d.on('gattserverdisconnected', onDisconnect); d.on('gattserverdisconnected', onDisconnect);
device = d; device = d;
}); });
promise = promise.then(()=>{
log("Wait after request");
return waitingPromise(settings.gracePeriodRequest);
});
} else { } else {
promise = Promise.resolve(); promise = Promise.resolve();
log("Reuse device", device); log("Reuse device", device);
} }
promise = promise.then(()=>{ promise = promise.then(()=>{
if (gatt){ gatt = device.gatt;
log("Reuse GATT", gatt);
} else { let cache = getCache();
log("GATT is new", gatt); if (device.id !== cache.id){
characteristics = []; log("Device ID changed from " + cache.id + " to " + device.id + ", clearing cache");
var cachedId = getCache().id; clearCache();
if (device.id !== cachedId){
log("Device ID changed from " + cachedId + " to " + device.id + ", clearing cache");
clearCache();
}
var newCache = getCache(); var newCache = getCache();
newCache.id = device.id; newCache.id = device.id;
writeCache(newCache); writeCache(newCache);
gatt = device.gatt;
} }
return Promise.resolve(gatt); return Promise.resolve(gatt);
}); });
@ -440,11 +434,13 @@ exports.enable = () => {
var connectPromise = gatt.connect(connectSettings).then(function() { var connectPromise = gatt.connect(connectSettings).then(function() {
log("Connected."); log("Connected.");
}); });
log("Add " + settings.gracePeriodConnect + "ms grace period after connecting"); if (settings.gracePeriodConnect){
connectPromise = connectPromise.then(()=>{ log("Add " + settings.gracePeriodConnect + "ms grace period after connecting");
log("Wait after connect"); connectPromise = connectPromise.then(()=>{
return waitingPromise(settings.gracePeriodConnect); log("Wait after connect");
}); return waitingPromise(settings.gracePeriodConnect);
});
}
return connectPromise; return connectPromise;
} else { } else {
return Promise.resolve(); return Promise.resolve();
@ -460,20 +456,20 @@ exports.enable = () => {
} else { } else {
log("Start bonding"); log("Start bonding");
return gatt.startBonding() return gatt.startBonding()
.then(() => log("Security status" + gatt.getSecurityStatus())); .then(() => log("Security status after bonding" + gatt.getSecurityStatus()));
} }
}); });
} }
promise = promise.then(()=>{ promise = promise.then(()=>{
if (!characteristics || characteristics.length === 0){ if (!characteristics || characteristics.length == 0){
characteristics = characteristicsFromCache(device); characteristics = characteristicsFromCache(device);
} }
}); });
promise = promise.then(()=>{ promise = promise.then(()=>{
var characteristicsPromise = Promise.resolve(); var characteristicsPromise = Promise.resolve();
if (characteristics.length === 0){ if (characteristics.length == 0){
characteristicsPromise = characteristicsPromise.then(()=>{ characteristicsPromise = characteristicsPromise.then(()=>{
log("Getting services"); log("Getting services");
return gatt.getPrimaryServices(); return gatt.getPrimaryServices();
@ -487,11 +483,13 @@ exports.enable = () => {
log("Supporting service", service.uuid); log("Supporting service", service.uuid);
result = attachServicePromise(result, service); result = attachServicePromise(result, service);
} }
log("Add " + settings.gracePeriodService + "ms grace period after services"); if (settings.gracePeriodService){
result = result.then(()=>{ log("Add " + settings.gracePeriodService + "ms grace period after services");
log("Wait after services"); result = result.then(()=>{
return waitingPromise(settings.gracePeriodService); log("Wait after services");
}); return waitingPromise(settings.gracePeriodService);
});
}
return result; return result;
}); });
} else { } else {
@ -598,9 +596,10 @@ exports.enable = () => {
Bangle.setBTHRMPower(0); Bangle.setBTHRMPower(0);
if (!isOn) stopFallback(); if (!isOn) stopFallback();
} }
return Bangle.isBTHRMOn() || Bangle.isHRMOn();
} }
if ((settings.enabled && !settings.replace) || !settings.enabled){ if ((settings.enabled && !settings.replace) || !settings.enabled){
Bangle.origSetHRMPower(isOn, app); return Bangle.origSetHRMPower(isOn, app);
} }
}; };
} }