Write settings to persistent storage

master
jeffyactive 2022-01-25 10:22:24 -05:00
parent bf5e16b2b4
commit 80a66f6414
1 changed files with 22 additions and 10 deletions

View File

@ -50,8 +50,7 @@ let barMenu = {
"State": { "State": {
value: settings.isBarEnabled, value: settings.isBarEnabled,
format: v => v ? "On" : "Off", format: v => v ? "On" : "Off",
onchange: v => { settings.isBarEnabled = v; onchange: v => { updateSetting('isBarEnabled', v); }
Bangle.setBarometerPower(v, APP_ID); }
}, },
"Altitude": { value: null }, "Altitude": { value: null },
"Press": { value: null }, "Press": { value: null },
@ -63,7 +62,7 @@ let gpsMenu = {
"State": { "State": {
value: settings.isGpsEnabled, value: settings.isGpsEnabled,
format: v => v ? "On" : "Off", format: v => v ? "On" : "Off",
onchange: v => { settings.isGpsEnabled = v; Bangle.setGPSPower(v, APP_ID); } onchange: v => { updateSetting('isGpsEnabled', v); }
}, },
"Lat": { value: null }, "Lat": { value: null },
"Lon": { value: null }, "Lon": { value: null },
@ -77,7 +76,7 @@ let hrmMenu = {
"State": { "State": {
value: settings.isHrmEnabled, value: settings.isHrmEnabled,
format: v => v ? "On" : "Off", format: v => v ? "On" : "Off",
onchange: v => { settings.isHrmEnabled = v; Bangle.setHRMPower(v, APP_ID); } onchange: v => { updateSetting('isHrmEnabled', v); }
}, },
"BPM": { value: null }, "BPM": { value: null },
"Confidence": { value: null }, "Confidence": { value: null },
@ -88,8 +87,7 @@ let magMenu = {
"State": { "State": {
value: settings.isMagEnabled, value: settings.isMagEnabled,
format: v => v ? "On" : "Off", format: v => v ? "On" : "Off",
onchange: v => { settings.isMagEnabled = v; onchange: v => { updateSetting('isMagEnabled', v); }
Bangle.setCompassPower(v, APP_ID); }
}, },
"x": { value: null }, "x": { value: null },
"y": { value: null }, "y": { value: null },
@ -189,6 +187,23 @@ function toByteArray(value, numberOfBytes, isSigned) {
} }
// Enable the sensors as per the current settings
function enableSensors() {
Bangle.setBarometerPower(settings.isBarEnabled, APP_ID);
Bangle.setGPSPower(settings.isGpsEnabled, APP_ID);
Bangle.setHRMPower(settings.isHrmEnabled, APP_ID);
Bangle.setCompassPower(settings.isMagEnabled, APP_ID);
}
// Update the given setting and write to persistent storage
function updateSetting(name, value) {
settings[name] = value;
require('Storage').writeJSON(SETTINGS_FILENAME, settings);
enableSensors();
}
// Update acceleration // Update acceleration
Bangle.on('accel', function(newAcc) { Bangle.on('accel', function(newAcc) {
acc = newAcc; acc = newAcc;
@ -259,9 +274,6 @@ Bangle.on('mag', function(newMag) {
// On start: enable sensors and display main menu // On start: enable sensors and display main menu
g.clear(); g.clear();
Bangle.setBarometerPower(settings.isBarEnabled, APP_ID); enableSensors();
Bangle.setGPSPower(settings.isGpsEnabled, APP_ID);
Bangle.setHRMPower(settings.isHrmEnabled, APP_ID);
Bangle.setCompassPower(settings.isMagEnabled, APP_ID);
E.showMenu(mainMenu); E.showMenu(mainMenu);
setInterval(transmitUpdatedSensorData, 1000); setInterval(transmitUpdatedSensorData, 1000);