diff --git a/apps.json b/apps.json index 8915654fc..354180d09 100644 --- a/apps.json +++ b/apps.json @@ -319,6 +319,17 @@ {"name":"*hrm","url":"heartrate-icon.js","evaluate":true} ] }, + { "id": "whrm", + "name": "Simple Heart Rate widget", + "icon": "widget.png", + "version":"0.01", + "description": "When the screen is turned on, the widget turns on the heart rate monitor and displays the detected heart rate - can take 20s to get a reading.", + "tags": "health,widget", + "storage": [ + {"name":"+whrm","url":"widget.json"}, + {"name":"=whrm","url":"widget.js"} + ] + }, { "id": "stetho", "name": "Stethoscope", "icon": "stetho.png", diff --git a/apps/whrm/ChangeLog b/apps/whrm/ChangeLog new file mode 100644 index 000000000..4c21f3ace --- /dev/null +++ b/apps/whrm/ChangeLog @@ -0,0 +1 @@ +0.01: New Widget! diff --git a/apps/whrm/widget.js b/apps/whrm/widget.js new file mode 100644 index 000000000..3a1d5da09 --- /dev/null +++ b/apps/whrm/widget.js @@ -0,0 +1,53 @@ +(() => { + var xpos = WIDGETPOS.tl; + var width = 24; + WIDGETPOS.tl += width+2; + var currentBPM = undefined; + var lastBPM = undefined; + var firstBPM = true; // first reading since sensor turned on + + function draw() { + g.reset(); + g.setFont("6x8", 1); + g.setFontAlign(0, 0); + g.clearRect(xpos,15,xpos+width,24); // erase background + var bpm = currentBPM, isCurrent = true; + if (bpm===undefined) { + bpm = lastBPM; + isCurrent = false; + } + if (bpm===undefined) + bpm = "--"; + g.setColor(isCurrent ? "#ffffff" : "#808080"); + g.drawString(bpm, xpos+width/2, 19); + g.setColor(isCurrent ? "#ff0033" : "#808080"); + g.drawImage(atob("CgoCAAABpaQ//9v//r//5//9L//A/+AC+AAFAA=="),xpos+(width-10)/2,1); + g.setColor(-1); + } + + // redraw when the LCD turns on + Bangle.on('lcdPower', function(on) { + if (on) { + Bangle.setHRMPower(1); + firstBPM = true; + currentBPM = undefined; + draw(); + } else { + Bangle.setHRMPower(0); + } + }); + + Bangle.on('HRM',function(d) { + if (firstBPM) + firstBPM=false; // ignore the first one as it's usually rubbish + else { + currentBPM = d.bpm; + lastBPM = currentBPM; + } + draw(); + }); + Bangle.setHRMPower(Bangle.isLCDOn()); + + // add your widget + WIDGETS["hrm"]={draw:draw}; +})(); diff --git a/apps/whrm/widget.json b/apps/whrm/widget.json new file mode 100644 index 000000000..fbc51b789 --- /dev/null +++ b/apps/whrm/widget.json @@ -0,0 +1,4 @@ +{ + "name":"Heart Rate Widget", "type":"widget", + "src":"=whrm" +} diff --git a/apps/whrm/widget.png b/apps/whrm/widget.png new file mode 100644 index 000000000..5bc07d647 Binary files /dev/null and b/apps/whrm/widget.png differ