diff --git a/apps/sportmode/app.png b/apps/sportmode/app.png new file mode 100644 index 000000000..bebdbc0ed Binary files /dev/null and b/apps/sportmode/app.png differ diff --git a/apps/sportmode/boot.js b/apps/sportmode/boot.js new file mode 100644 index 000000000..051a14415 --- /dev/null +++ b/apps/sportmode/boot.js @@ -0,0 +1,7 @@ +{ + const settings = Object.assign({ + mode: -1, + }, require('Storage').readJSON("sportmode.json", true) || {}); + + Bangle.setOptions({hrmSportMode: settings.mode}); +} diff --git a/apps/sportmode/metadata.json b/apps/sportmode/metadata.json new file mode 100644 index 000000000..65e7efee7 --- /dev/null +++ b/apps/sportmode/metadata.json @@ -0,0 +1,16 @@ +{ + "id": "sportmode", + "name": "HRM Sport mode", + "shortName":"Sport mode", + "icon": "app.png", + "version":"0.01", + "description": "Allows to set the sport mode of the Heart rate monitor in app settings.", + "type": "bootloader", + "tags": "health", + "supports": ["BANGLEJS2"], + "storage": [ + {"name":"sportmode.boot.js","url":"boot.js"}, + {"name":"sportmode.settings.js","url":"settings.js"} + ], + "data": [{"name":"sportmode.json"}] +} diff --git a/apps/sportmode/settings.js b/apps/sportmode/settings.js new file mode 100644 index 000000000..dd5251770 --- /dev/null +++ b/apps/sportmode/settings.js @@ -0,0 +1,58 @@ +(function(back) { + const FILE = "sportmode.json"; + const settings = Object.assign({ + mode: -1, + }, require('Storage').readJSON(FILE, true) || {}); + + function writeSettings() { + require('Storage').writeJSON(FILE, settings); + } + + // see Espruino/libs/misc/vc31_binary/algo.h + const SPORT_MODES = [ + /*LANG*/"Normal", + /*LANG*/"Running", + /*LANG*/"Ride bike", + /*LANG*/"Jump rope", + /*LANG*/"Swimming", + /*LANG*/"Badminton", + /*LANG*/"Table tennis", + /*LANG*/"Tennis", + /*LANG*/"Climbing", + /*LANG*/"Walking", + /*LANG*/"Basketball", + /*LANG*/"Football", + /*LANG*/"Baseball", + /*LANG*/"Volleyball", + /*LANG*/"Cricket", + /*LANG*/"Rugby", + /*LANG*/"Hockey", + /*LANG*/"Dance", + /*LANG*/"Spinning", + /*LANG*/"Yoga", + /*LANG*/"Sit up", + /*LANG*/"Treadmill", + /*LANG*/"Gymnastics", + /*LANG*/"Boating", + /*LANG*/"Jumping jack", + /*LANG*/"Free training", + ]; + + E.showMenu({ + "" : { "title" : /*LANG*/"HRM sport mode", remove: () => { + // nothing to do + } + }, + "< Back" : () => back(), + /*LANG*/'Sport mode': { + value: settings.mode, + min: -1, max: SPORT_MODES.length-1, + format: v => v === -1 ? /*LANG*/"Auto" : SPORT_MODES[v], + onchange: v => { + settings.mode = v; + writeSettings(); + Bangle.setOptions({hrmSportMode: settings.mode}); + } + }, + }); +})