diff --git a/apps/bthrm/boot.js b/apps/bthrm/boot.js index bfd7e1d31..aa97d83b7 100644 --- a/apps/bthrm/boot.js +++ b/apps/bthrm/boot.js @@ -227,15 +227,15 @@ } if (settings.replace){ - var origIsHRMOn = Bangle.isHRMOn; + Bangle.origIsHRMOn = Bangle.isHRMOn; Bangle.isHRMOn = function() { if (settings.enabled && !settings.replace){ - return origIsHRMOn(); + return Bangle.origIsHRMOn(); } else if (settings.enabled && settings.replace){ return Bangle.isBTHRMOn(); } - return origIsHRMOn() || Bangle.isBTHRMOn(); + return Bangle.origIsHRMOn() || Bangle.isBTHRMOn(); }; } @@ -563,7 +563,7 @@ } - var origSetHRMPower = Bangle.setHRMPower; + Bangle.origSetHRMPower = Bangle.setHRMPower; if (settings.startWithHrm){ @@ -573,7 +573,7 @@ Bangle.setBTHRMPower(isOn, app); } if ((settings.enabled && !settings.replace) || !settings.enabled){ - origSetHRMPower(isOn, app); + Bangle.origSetHRMPower(isOn, app); } }; } @@ -583,7 +583,7 @@ var stopFallback = function(){ if (fallbackActive){ - origSetHRMPower(0, "bthrm_fallback"); + Bangle.origSetHRMPower(0, "bthrm_fallback"); fallbackActive = false; log("Fallback to HRM disabled"); } @@ -592,7 +592,7 @@ var startFallback = function(){ if (!fallbackActive && settings.allowFallback) { fallbackActive = true; - origSetHRMPower(1, "bthrm_fallback"); + Bangle.origSetHRMPower(1, "bthrm_fallback"); log("Fallback to HRM enabled"); } }; @@ -616,7 +616,7 @@ for (var i = 0; i < Bangle._PWR.HRM.length; i++){ var app = Bangle._PWR.HRM[i]; log("Moving app " + app); - origSetHRMPower(0, app); + Bangle.origSetHRMPower(0, app); Bangle.setBTHRMPower(1, app); if (Bangle._PWR.HRM===undefined) break; } diff --git a/apps/bthrm/recorder.js b/apps/bthrm/recorder.js index 21345a907..ed36b5aef 100644 --- a/apps/bthrm/recorder.js +++ b/apps/bthrm/recorder.js @@ -32,8 +32,45 @@ Bangle.removeListener('BTHRM', onHRM); if (Bangle.setBTRHMPower) Bangle.setBTHRMPower(0,"recorder"); }, - draw : (x,y) => g.setColor((bpm != "")?"#00f":"#88f").drawImage(atob("DAwBAAAAMMeef+f+f+P8H4DwBgAA"),x,y) + draw : (x,y) => g.setColor((Bangle.isBTHRMActive && Bangle.isBTHRMActive())?"#00f":"#88f").drawImage(atob("DAwBAAAAMMeef+f+f+P8H4DwBgAA"),x,y) }; - } + }; + recorders.hrmint = function() { + var active = false; + var bpmTimeout; + var bpm = "", bpmConfidence = "", src=""; + function onHRM(h) { + bpmConfidence = h.confidence; + bpm = h.bpm; + srv = h.src; + if (h.bpm > 0){ + active = true; + print("active" + h.bpm); + if (bpmTimeout) clearTimeout(bpmTimeout); + bpmTimeout = setTimeout(()=>{ + print("inactive"); + active = false; + },3000); + } + } + return { + name : "HR int", + fields : ["Heartrate", "Confidence"], + getValues : () => { + var r = [bpm,bpmConfidence,src]; + bpm = ""; bpmConfidence = ""; src=""; + return r; + }, + start : () => { + Bangle.origOn('HRM', onHRM); + if (Bangle.origSetHRMPower) Bangle.origSetHRMPower(1,"recorder"); + }, + stop : () => { + Bangle.removeListener('HRM', onHRM); + if (Bangle.origSetHRMPower) Bangle.origSetHRMPower(0,"recorder"); + }, + draw : (x,y) => g.setColor(( Bangle.origIsHRMOn && Bangle.origIsHRMOn() && active)?"#0f0":"#8f8").drawImage(atob("DAwBAAAAMMeef+f+f+P8H4DwBgAA"),x,y) + }; + }; })