diff --git a/apps/sensible/metadata.json b/apps/sensible/metadata.json index df0421441..5e90fbcaf 100644 --- a/apps/sensible/metadata.json +++ b/apps/sensible/metadata.json @@ -20,6 +20,7 @@ "readme": "README.md", "storage": [ { "name": "sensible.app.js", "url": "sensible.js" }, - { "name": "sensible.img", "url": "sensible-icon.js", "evaluate": true } + { "name": "sensible.img", "url": "sensible-icon.js", "evaluate": true }, + { "name": "sensible.json", "url": "settings.json", "noOverwrite": true } ] } diff --git a/apps/sensible/sensible.js b/apps/sensible/sensible.js index 73c348556..6f367be31 100644 --- a/apps/sensible/sensible.js +++ b/apps/sensible/sensible.js @@ -1,5 +1,5 @@ /** - * Copyright reelyActive 2021 + * Copyright reelyActive 2021-2022 * We believe in an open Internet of Things */ @@ -7,6 +7,7 @@ // Non-user-configurable constants const APP_ID = 'sensible'; const ESPRUINO_COMPANY_CODE = 0x0590; +const SETTINGS_FILENAME = 'sensible.json'; const APP_ADVERTISING_DATA = [ 0x12, 0xff, 0x90, 0x05, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x7d ]; @@ -19,16 +20,12 @@ let isBarMenu = false; let isGpsMenu = false; let isHrmMenu = false; let isMagMenu = false; -let isBarEnabled = true; -let isGpsEnabled = true; -let isHrmEnabled = true; -let isMagEnabled = true; let isNewAccData = false; let isNewBarData = false; let isNewGpsData = false; let isNewHrmData = false; let isNewMagData = false; - +let settings = require('Storage').readJSON(SETTINGS_FILENAME); // Menus @@ -51,9 +48,10 @@ let accMenu = { let barMenu = { "": { "title" : "- Barometer -" }, "State": { - value: isBarEnabled, + value: settings.isBarEnabled, format: v => v ? "On" : "Off", - onchange: v => { isBarEnabled = v; Bangle.setBarometerPower(v, APP_ID); } + onchange: v => { settings.isBarEnabled = v; + Bangle.setBarometerPower(v, APP_ID); } }, "Altitude": { value: null }, "Press": { value: null }, @@ -63,9 +61,9 @@ let barMenu = { let gpsMenu = { "": { "title" : "- GPS -" }, "State": { - value: isGpsEnabled, + value: settings.isGpsEnabled, format: v => v ? "On" : "Off", - onchange: v => { isGpsEnabled = v; Bangle.setGPSPower(v, APP_ID); } + onchange: v => { settings.isGpsEnabled = v; Bangle.setGPSPower(v, APP_ID); } }, "Lat": { value: null }, "Lon": { value: null }, @@ -77,9 +75,9 @@ let gpsMenu = { let hrmMenu = { "": { "title" : "- Heart Rate -" }, "State": { - value: isHrmEnabled, + value: settings.isHrmEnabled, format: v => v ? "On" : "Off", - onchange: v => { isHrmEnabled = v; Bangle.setHRMPower(v, APP_ID); } + onchange: v => { settings.isHrmEnabled = v; Bangle.setHRMPower(v, APP_ID); } }, "BPM": { value: null }, "Confidence": { value: null }, @@ -88,9 +86,10 @@ let hrmMenu = { let magMenu = { "": { "title" : "- Magnetometer -" }, "State": { - value: isMagEnabled, + value: settings.isMagEnabled, format: v => v ? "On" : "Off", - onchange: v => { isMagEnabled = v; Bangle.setCompassPower(v, APP_ID); } + onchange: v => { settings.isMagEnabled = v; + Bangle.setCompassPower(v, APP_ID); } }, "x": { value: null }, "y": { value: null }, @@ -260,9 +259,9 @@ Bangle.on('mag', function(newMag) { // On start: enable sensors and display main menu g.clear(); -Bangle.setBarometerPower(isBarEnabled, APP_ID); -Bangle.setGPSPower(isGpsEnabled, APP_ID); -Bangle.setHRMPower(isHrmEnabled, APP_ID); -Bangle.setCompassPower(isMagEnabled, APP_ID); +Bangle.setBarometerPower(settings.isBarEnabled, APP_ID); +Bangle.setGPSPower(settings.isGpsEnabled, APP_ID); +Bangle.setHRMPower(settings.isHrmEnabled, APP_ID); +Bangle.setCompassPower(settings.isMagEnabled, APP_ID); E.showMenu(mainMenu); setInterval(transmitUpdatedSensorData, 1000); \ No newline at end of file diff --git a/apps/sensible/settings.json b/apps/sensible/settings.json new file mode 100644 index 000000000..90340a201 --- /dev/null +++ b/apps/sensible/settings.json @@ -0,0 +1,6 @@ +{ + "isBarEnabled": false, + "isGpsEnabled": false, + "isHrmEnabled": false, + "isMagEnabled": false +} \ No newline at end of file