From 5644f44f3f94e5530a5d5c6a8ef809dcdab33772 Mon Sep 17 00:00:00 2001 From: Martin Boonk Date: Sun, 13 Nov 2022 00:19:11 +0100 Subject: [PATCH] bthrm - Disable fallback correctly --- apps/bthrm/ChangeLog | 1 + apps/bthrm/lib.js | 19 ++++++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/apps/bthrm/ChangeLog b/apps/bthrm/ChangeLog index 5bf8d5074..e5b41482f 100644 --- a/apps/bthrm/ChangeLog +++ b/apps/bthrm/ChangeLog @@ -36,3 +36,4 @@ Device not found errors now utilize increasing timeouts 0.15: Fix recording internal sensor Handle fallback to internal sensor consistently if BT bpm is 0 + Power internal sensor down if not needed for fallback diff --git a/apps/bthrm/lib.js b/apps/bthrm/lib.js index 19206de60..32a0f5a40 100644 --- a/apps/bthrm/lib.js +++ b/apps/bthrm/lib.js @@ -255,7 +255,7 @@ exports.enable = () => { var retry = function() { log("Retry"); - if (!currentRetryTimeout){ + if (!currentRetryTimeout && !powerdownRequested){ var clampedTime = retryTime < 100 ? 100 : retryTime; @@ -281,13 +281,13 @@ exports.enable = () => { log("Disconnect: " + reason); log("GATT", gatt); log("Characteristics", characteristics); - + var retryTimeResetNeeded = true; retryTimeResetNeeded &= reason != "Connection Timeout"; retryTimeResetNeeded &= reason != "No device found matching filters"; clearRetryTimeout(retryTimeResetNeeded); supportedCharacteristics["0x2a37"].active = false; - startFallback(); + if (!powerdownRequested) startFallback(); blockInit = false; if (settings.warnDisconnect && !buzzing){ buzzing = true; @@ -369,7 +369,7 @@ exports.enable = () => { var initBt = function () { log("initBt with blockInit: " + blockInit); - if (blockInit){ + if (blockInit && !powerdownRequested){ retry(); return; } @@ -508,6 +508,8 @@ exports.enable = () => { }); }; + var powerdownRequested = false; + Bangle.setBTHRMPower = function(isOn, app) { // Do app power handling if (!app) app="?"; @@ -522,7 +524,9 @@ exports.enable = () => { if (!Bangle.isBTHRMConnected()) initBt(); } else { // not on log("Power off for " + app); + powerdownRequested = true; clearRetryTimeout(true); + stopFallback(); if (gatt) { if (gatt.connected){ log("Disconnect with gatt", gatt); @@ -543,7 +547,7 @@ exports.enable = () => { if (settings.replace){ // register a listener for original HRM events and emit as HRM_int Bangle.on("HRM", (e) => { - e.src = "int"; + e.modified = true; log("Emitting HRM_int", e); Bangle.emit("HRM_int", e); if (fallbackActive){ @@ -574,6 +578,11 @@ exports.enable = () => { log("setHRMPower for " + app + ": " + (isOn?"on":"off")); if (settings.enabled){ Bangle.setBTHRMPower(isOn, app); + if (Bangle._PWR && Bangle._PWR.HRM && Object.keys(Bangle._PWR.HRM).length == 0) { + Bangle._PWR.BTHRM = []; + Bangle.setBTHRMPower(0); + if (!isOn) stopFallback(); + } } if ((settings.enabled && !settings.replace) || !settings.enabled){ Bangle.origSetHRMPower(isOn, app);