diff --git a/apps/widhrm/ChangeLog b/apps/widhrm/ChangeLog index 93e2eaf66..1b5d6da57 100644 --- a/apps/widhrm/ChangeLog +++ b/apps/widhrm/ChangeLog @@ -3,3 +3,4 @@ 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.05: Use new 'lock' event, not LCD (so it works on Bangle.js 2) +0.06: Allow configuration of minimum confidence for HRM values diff --git a/apps/widhrm/metadata.json b/apps/widhrm/metadata.json index e566142d2..51a7f3392 100644 --- a/apps/widhrm/metadata.json +++ b/apps/widhrm/metadata.json @@ -1,13 +1,15 @@ { "id": "widhrm", "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.", "icon": "widget.png", "type": "widget", "tags": "health,widget", "supports": ["BANGLEJS","BANGLEJS2"], "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"}] } diff --git a/apps/widhrm/settings.js b/apps/widhrm/settings.js new file mode 100644 index 000000000..0b8c989ac --- /dev/null +++ b/apps/widhrm/settings.js @@ -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); +}); diff --git a/apps/widhrm/widget.js b/apps/widhrm/widget.js index 7ffe1aa6d..497d9e6ef 100644 --- a/apps/widhrm/widget.js +++ b/apps/widhrm/widget.js @@ -1,5 +1,18 @@ (() => { 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 lastBPM; var isHRMOn = false; @@ -39,7 +52,8 @@ bpm = lastBPM; isCurrent = false; } - if (bpm===undefined) + console.log(bpm, settings); + if (bpm===undefined || (settings && bpm