From 9d71928ba1bc67794a9111e62479b7d1fe0ee96f Mon Sep 17 00:00:00 2001 From: Martin Boonk Date: Sun, 6 Nov 2022 15:18:05 +0100 Subject: [PATCH] bthrm - Prevent mixing of internal and external HRM events --- apps/bthrm/lib.js | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/apps/bthrm/lib.js b/apps/bthrm/lib.js index 9e2f0fe63..d9acce90c 100644 --- a/apps/bthrm/lib.js +++ b/apps/bthrm/lib.js @@ -154,8 +154,8 @@ exports.enable = () => { src: "bthrm" }; - log("Emitting HRM", repEvent); - Bangle.emit("HRM_int", repEvent); + log("Emitting aggregated HRM", repEvent); + Bangle.emit("HRM_R", repEvent); } var newEvent = { @@ -538,35 +538,33 @@ exports.enable = () => { }; if (settings.replace){ + // register a listener for original HRM events and emit as HRM_int Bangle.on("HRM", (e) => { e.modified = true; Bangle.emit("HRM_int", e); + if (fallbackActive){ + // if fallback to internal HRM is active, emit as HRM_R to which everyone listens + Bangle.emit("HRM_R", e); + } }); - Bangle.origOn = Bangle.on; - Bangle.on = function(name, callback) { - if (name == "HRM") { - Bangle.origOn("HRM_int", callback); - } else { - Bangle.origOn(name, callback); - } - }; - - Bangle.origRemoveListener = Bangle.removeListener; - Bangle.removeListener = function(name, callback) { - if (name == "HRM") { - Bangle.origRemoveListener("HRM_int", callback); - } else { - Bangle.origRemoveListener(name, callback); - } - }; + // force all apps wanting to listen to HRM to actually get events for HRM_R + Bangle.on = ( o => (name, cb) => { + o = o.bind(Bangle); + if (name == "HRM") o("HRM_R", cb); + else o(name, cb); + })(Bangle.on); + Bangle.removeListener = ( o => (name, cb) => { + o = o.bind(Bangle); + if (name == "HRM") o("HRM_R", cb); + else o(name, cb); + })(Bangle.removeListener); } Bangle.origSetHRMPower = Bangle.setHRMPower; if (settings.startWithHrm){ - Bangle.setHRMPower = function(isOn, app) { log("setHRMPower for " + app + ": " + (isOn?"on":"off")); if (settings.enabled){