1
0
Fork 0

Merge pull request #2282 from myxor/widhrm_v0.06

WidHRM 0.06: Allow configuration of minimum confidence for HRM values
master
Gordon Williams 2022-11-16 10:52:38 +00:00 committed by GitHub
commit 145e3ff815
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 56 additions and 4 deletions

View File

@ -3,3 +3,4 @@
0.03: Ensure redrawing works with variable size widget system 0.03: Ensure redrawing works with variable size widget system
0.04: tag HRM power requests to allow this ot work alongside other widgets/apps (fix #799) 0.04: tag HRM power requests to allow this ot work alongside other widgets/apps (fix #799)
0.05: Use new 'lock' event, not LCD (so it works on Bangle.js 2) 0.05: Use new 'lock' event, not LCD (so it works on Bangle.js 2)
0.06: Allow configuration of minimum confidence for HRM values

View File

@ -1,13 +1,15 @@
{ {
"id": "widhrm", "id": "widhrm",
"name": "Simple Heart Rate widget", "name": "Simple Heart Rate widget",
"version": "0.05", "version": "0.06",
"description": "When the screen is on, the widget turns on the heart rate monitor and displays the current heart rate (or last known in grey). For this to work well you'll need at least a 15 second LCD Timeout.", "description": "When the screen is on, the widget turns on the heart rate monitor and displays the current heart rate (or last known in grey). For this to work well you'll need at least a 15 second LCD Timeout.",
"icon": "widget.png", "icon": "widget.png",
"type": "widget", "type": "widget",
"tags": "health,widget", "tags": "health,widget",
"supports": ["BANGLEJS","BANGLEJS2"], "supports": ["BANGLEJS","BANGLEJS2"],
"storage": [ "storage": [
{"name":"widhrm.wid.js","url":"widget.js"} {"name":"widhrm.wid.js","url":"widget.js"},
] {"name":"widhrm.settings.js","url":"settings.js"}
],
"data": [{"name":"widhrm.json"}]
} }

36
apps/widhrm/settings.js Normal file
View File

@ -0,0 +1,36 @@
/**
* @param {function} back Use back() to return to settings menu
*/
(function(back) {
const SETTINGS_FILE = "widhrm.json";
const storage = require("Storage");
let s = {
confidence: 0
};
const saved = storage.readJSON(SETTINGS_FILE, 1) || {};
for(const key in saved) {
s[key] = saved[key];
}
function save(key, value) {
s[key] = value;
storage.write(SETTINGS_FILE, s);
}
const menu = {
"": {"title": "Simple Heart Rate widget"},
"< Back": back,
/*LANG*/'min. confidence': {
value: s.confidence,
min: 0,
max : 100,
step: 5,
format: x => {
return x + "%";
},
onchange: x => save('confidence', x),
},
};
E.showMenu(menu);
});

View File

@ -1,5 +1,18 @@
(() => { (() => {
if (!Bangle.isLocked) return; // old firmware if (!Bangle.isLocked) return; // old firmware
const SETTINGS_FILE = 'widhrm.json';
let settings;
function loadSettings() {
settings = require('Storage').readJSON(SETTINGS_FILE, 1) || {};
const DEFAULTS = {
'confidence': 0
};
Object.keys(DEFAULTS).forEach(k=>{
if (settings[k]===undefined) settings[k]=DEFAULTS[k];
});
}
var currentBPM; var currentBPM;
var lastBPM; var lastBPM;
var isHRMOn = false; var isHRMOn = false;
@ -39,7 +52,7 @@
bpm = lastBPM; bpm = lastBPM;
isCurrent = false; isCurrent = false;
} }
if (bpm===undefined) if (bpm===undefined || (settings && bpm<settings["confidence"]))
bpm = "--"; bpm = "--";
g.setColor(isCurrent ? g.theme.fg : "#808080"); g.setColor(isCurrent ? g.theme.fg : "#808080");
g.drawString(bpm, this.x+width/2, this.y+19); g.drawString(bpm, this.x+width/2, this.y+19);