BangleApps/apps/bthrm/bthrm.js

105 lines
2.3 KiB
JavaScript
Raw Normal View History

var intervalInt;
var intervalBt;
2022-01-06 16:41:26 +00:00
var BODY_LOCS = {
0: 'Other',
1: 'Chest',
2: 'Wrist',
3: 'Finger',
4: 'Hand',
5: 'Ear Lobe',
6: 'Foot',
}
function clear(y){
g.reset();
g.clearRect(0,y,g.getWidth(),y+75);
}
2022-01-06 16:41:26 +00:00
function draw(y, type, event) {
clear(y);
2022-01-06 16:41:26 +00:00
var px = g.getWidth()/2;
var str = event.bpm + "";
2022-01-06 16:41:26 +00:00
g.reset();
g.setFontAlign(0,0);
g.setFontVector(40).drawString(str,px,y+20);
str = "Event: " + type;
2022-04-06 01:58:47 +00:00
if (type === "HRM") {
str += " Confidence: " + event.confidence;
g.setFontVector(12).drawString(str,px,y+40);
str = " Source: " + (event.src ? event.src : "internal");
g.setFontVector(12).drawString(str,px,y+50);
}
2022-04-06 01:58:47 +00:00
if (type === "BTHRM"){
if (event.battery) str += " Bat: " + (event.battery ? event.battery : "");
g.setFontVector(12).drawString(str,px,y+40);
str= "";
if (event.location) str += "Loc: " + BODY_LOCS[event.location];
if (event.rr && event.rr.length > 0) str += " RR: " + event.rr.join(",");
g.setFontVector(12).drawString(str,px,y+50);
str= "";
if (event.contact) str += " Contact: " + event.contact;
if (event.energy) str += " kJoule: " + event.energy.toFixed(0);
g.setFontVector(12).drawString(str,px,y+60);
}
2022-01-06 16:41:26 +00:00
}
var firstEventBt = true;
var firstEventInt = true;
2022-01-06 16:41:26 +00:00
function onBtHrm(e) {
if (firstEventBt){
clear(24);
firstEventBt = false;
}
draw(100, "BTHRM", e);
2022-04-06 01:58:47 +00:00
if (e.bpm === 0){
Bangle.buzz(100,0.2);
}
if (intervalBt){
clearInterval(intervalBt);
}
intervalBt = setInterval(()=>{
clear(100);
}, 2000);
2022-01-06 16:41:26 +00:00
}
function onHrm(e) {
if (firstEventInt){
clear(24);
firstEventInt = false;
}
draw(24, "HRM", e);
if (intervalInt){
clearInterval(intervalInt);
}
intervalInt = setInterval(()=>{
clear(24);
}, 2000);
2022-01-06 16:41:26 +00:00
}
var settings = require('Storage').readJSON("bthrm.json", true) || {};
2022-01-06 16:41:26 +00:00
Bangle.on('BTHRM', onBtHrm);
Bangle.on('HRM', onHrm);
Bangle.setHRMPower(1,'bthrm');
if (!(settings.startWithHrm)){
Bangle.setBTHRMPower(1,'bthrm');
}
2022-01-06 16:41:26 +00:00
g.clear();
Bangle.loadWidgets();
Bangle.drawWidgets();
if (Bangle.setBTHRMPower){
g.reset().setFont("6x8",2).setFontAlign(0,0);
g.drawString("Please wait...",g.getWidth()/2,g.getHeight()/2 - 24);
} else {
g.reset().setFont("6x8",2).setFontAlign(0,0);
g.drawString("BTHRM disabled",g.getWidth()/2,g.getHeight()/2 + 32);
2022-01-06 16:41:26 +00:00
}
E.on('kill', ()=>Bangle.setBTHRMPower(0,'bthrm'));