bthrm - Allow recording unmodified internal HR

master
Martin Boonk 2022-07-02 10:53:01 +02:00
parent a142bfa5f2
commit fd0e13226b
2 changed files with 47 additions and 10 deletions

View File

@ -227,15 +227,15 @@
} }
if (settings.replace){ if (settings.replace){
var origIsHRMOn = Bangle.isHRMOn; Bangle.origIsHRMOn = Bangle.isHRMOn;
Bangle.isHRMOn = function() { Bangle.isHRMOn = function() {
if (settings.enabled && !settings.replace){ if (settings.enabled && !settings.replace){
return origIsHRMOn(); return Bangle.origIsHRMOn();
} else if (settings.enabled && settings.replace){ } else if (settings.enabled && settings.replace){
return Bangle.isBTHRMOn(); 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){ if (settings.startWithHrm){
@ -573,7 +573,7 @@
Bangle.setBTHRMPower(isOn, app); Bangle.setBTHRMPower(isOn, app);
} }
if ((settings.enabled && !settings.replace) || !settings.enabled){ if ((settings.enabled && !settings.replace) || !settings.enabled){
origSetHRMPower(isOn, app); Bangle.origSetHRMPower(isOn, app);
} }
}; };
} }
@ -583,7 +583,7 @@
var stopFallback = function(){ var stopFallback = function(){
if (fallbackActive){ if (fallbackActive){
origSetHRMPower(0, "bthrm_fallback"); Bangle.origSetHRMPower(0, "bthrm_fallback");
fallbackActive = false; fallbackActive = false;
log("Fallback to HRM disabled"); log("Fallback to HRM disabled");
} }
@ -592,7 +592,7 @@
var startFallback = function(){ var startFallback = function(){
if (!fallbackActive && settings.allowFallback) { if (!fallbackActive && settings.allowFallback) {
fallbackActive = true; fallbackActive = true;
origSetHRMPower(1, "bthrm_fallback"); Bangle.origSetHRMPower(1, "bthrm_fallback");
log("Fallback to HRM enabled"); log("Fallback to HRM enabled");
} }
}; };
@ -616,7 +616,7 @@
for (var i = 0; i < Bangle._PWR.HRM.length; i++){ for (var i = 0; i < Bangle._PWR.HRM.length; i++){
var app = Bangle._PWR.HRM[i]; var app = Bangle._PWR.HRM[i];
log("Moving app " + app); log("Moving app " + app);
origSetHRMPower(0, app); Bangle.origSetHRMPower(0, app);
Bangle.setBTHRMPower(1, app); Bangle.setBTHRMPower(1, app);
if (Bangle._PWR.HRM===undefined) break; if (Bangle._PWR.HRM===undefined) break;
} }

View File

@ -32,8 +32,45 @@
Bangle.removeListener('BTHRM', onHRM); Bangle.removeListener('BTHRM', onHRM);
if (Bangle.setBTRHMPower) Bangle.setBTHRMPower(0,"recorder"); 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)
};
};
}) })