diff --git a/apps/boot/boot0.js b/apps/boot/boot0.js index 9f34f1b15..dbee62d9c 100644 --- a/apps/boot/boot0.js +++ b/apps/boot/boot0.js @@ -1,5 +1,24 @@ // This ALWAYS runs at boot E.setFlags({pretokenise:1}); +// Load settings... +var s = require('Storage').readJSON('@setting')||{}; +if (s.ble!==false) { + if (s.HID) { // Humen interface device + Bangle.HID = E.toUint8Array(atob("BQEJBqEBhQIFBxngKecVACUBdQGVCIEClQF1CIEBlQV1AQUIGQEpBZEClQF1A5EBlQZ1CBUAJXMFBxkAKXOBAAkFFQAm/wB1CJUCsQLABQwJAaEBhQEVACUBdQGVAQm1gQIJtoECCbeBAgm4gQIJzYECCeKBAgnpgQIJ6oECwA==")); + NRF.setServices({}, {uart:true, hid:Bangle.HID}); + } +} +// If not programmable, force terminal onto screen +if (s.dev===false) Terminal.setConsole(true); +// we just reset, so BLE should be on +if (s.ble===false) NRF.sleep(); +// Set time, vibrate, beep, etc +if (!s.vibrate) Bangle.buzz=Promise.resolve; +if (!s.beep) Bangle.beep=Promise.resolve; +Bangle.setLCDTimeout(s.timeout); +if (!s.timeout) Bangle.setLCDPower(1); +E.setTimeZone(s.timezone); +delete s; // All of this is just shim for older Bangles if (!Bangle.loadWidgets) { Bangle.loadWidgets = function(){ diff --git a/apps/hidkbd/hid-keyboard.js b/apps/hidkbd/hid-keyboard.js index 1e734edc5..01f5090f0 100644 --- a/apps/hidkbd/hid-keyboard.js +++ b/apps/hidkbd/hid-keyboard.js @@ -49,23 +49,20 @@ function drawApp() { } if (next) { - - if (settings.HIDGestures) { - Bangle.on('aiGesture', (v) => { - switch (v) { - case 'swipeleft': - E.showMessage('next'); - setTimeout(drawApp, 1000); - next(() => {}); - break; - case 'swiperight': - E.showMessage('prev'); - setTimeout(drawApp, 1000); - prev(() => {}); - break; - } - }); - } + Bangle.on('aiGesture', (v) => { + switch (v) { + case 'swipeleft': + E.showMessage('next'); + setTimeout(drawApp, 1000); + next(() => {}); + break; + case 'swiperight': + E.showMessage('prev'); + setTimeout(drawApp, 1000); + prev(() => {}); + break; + } + }); setWatch(function(e) { var len = e.time - e.lastTime; diff --git a/apps/setting/settings-default.json b/apps/setting/settings-default.json index 860fe200b..50d223a69 100644 --- a/apps/setting/settings-default.json +++ b/apps/setting/settings-default.json @@ -1,11 +1,12 @@ { - ble: true, // Bluetooth enabled by default - dev: true, // Espruino IDE enabled by default - timeout: 10, // Default LCD timeout in seconds - vibrate: true, // Vibration enabled by default. App must support - beep: true, // Beep enabled by default. App must support - timezone: 0, // Set the timezone for the device - HID : false, // BLE HID mode, off by default - HIDGestures: false, - debug: false, // Debug mode disabled by default. App must support + ble: true, // Bluetooth enabled by default + dev: true, // Is REPL on Bluetooth - can Espruino IDE be used? + timeout: 10, // Default LCD timeout in seconds + vibrate: true, // Vibration enabled by default. App must support + beep: true, // Beep enabled by default. App must support + timezone: 0, // Set the timezone for the device + HID : false, // BLE HID mode, off by default + clock: null, // a string for the default clock's name + "12hour" : false, // 12 or 24 hour clock? + distance : "kilometer" // or "mile" } diff --git a/apps/setting/settings-init.js b/apps/setting/settings-init.js deleted file mode 100644 index 69854ad74..000000000 --- a/apps/setting/settings-init.js +++ /dev/null @@ -1,27 +0,0 @@ -Bangle.HID = E.toUint8Array(atob("BQEJBqEBhQIFBxngKecVACUBdQGVCIEClQF1CIEBlQV1AQUIGQEpBZEClQF1A5EBlQZ1CBUAJXMFBxkAKXOBAAkFFQAm/wB1CJUCsQLABQwJAaEBhQEVACUBdQGVAQm1gQIJtoECCbeBAgm4gQIJzYECCeKBAgnpgQIJ6oECwA==")); - -(function() { - var s = require('Storage').readJSON('@setting'); - var adv = { uart: true }; - if (s.ble) { - if (s.dev) - Bluetooth.setConsole(true); - else - Terminal.setConsole(true); - if (s.HID) { - adv.hid = Bangle.HID; - } else - delete Bangle.HID; - } - NRF.setServices({}, adv); - // we just reset, so BLE should be on - try { // disable advertising if BLE should be off - if (!s.ble) NRF.sleep(); - else NRF.wake(); - } catch(e) {} - if (!s.vibrate) Bangle.buzz=Promise.resolve; - if (!s.beep) Bangle.beep=Promise.resolve; - Bangle.setLCDTimeout(s.timeout); - if (!s.timeout) Bangle.setLCDPower(1); - E.setTimeZone(s.timezone); -})() diff --git a/apps/setting/settings.js b/apps/setting/settings.js index 4b71b1c3d..a6a009806 100644 --- a/apps/setting/settings.js +++ b/apps/setting/settings.js @@ -5,13 +5,7 @@ g.clear(); const storage = require('Storage'); let settings; -function debug(msg, arg) { - if (settings.debug) - console.log(msg, arg); -} - function updateSettings() { - debug('updating settings', settings); //storage.erase('@setting'); // - not needed, just causes extra writes if settings were the same storage.write('@setting', settings); } @@ -25,9 +19,9 @@ function resetSettings() { beep: true, timezone: 0, HID : false, - HIDGestures: false, - debug: false, - clock: null + clock: null, + "12hour" : false, + distance : "kilometer" // or "mile" }; setLCDTimeout(settings.timeout); updateSettings(); @@ -43,6 +37,7 @@ const boolFormat = (v) => v ? "On" : "Off"; function showMainMenu() { const mainmenu = { '': { 'title': 'Settings' }, + 'Make Connectable': makeConnectable, 'BLE': { value: settings.ble, format: boolFormat, @@ -93,7 +88,28 @@ function showMainMenu() { } } }, + 'Locale': showLocaleMenu, 'Select Clock': showClockMenu, + 'HID': { + value: settings.HID, + format: boolFormat, + onchange: () => { + settings.HID = !settings.HID; + updateSettings(); + } + }, + 'Set Time': showSetTimeMenu, + 'Reset Settings': showResetMenu, + 'Turn Off': Bangle.off, + '< Back': ()=> {load();} + }; + return E.showMenu(mainmenu); +} + +function showLocaleMenu() { + const localemenu = { + '': { 'title': 'Locale' }, + '< Back': showMainMenu, 'Time Zone': { value: settings.timezone, min: -11, @@ -104,37 +120,24 @@ function showMainMenu() { updateSettings(); } }, - 'HID': { - value: settings.HID, - format: boolFormat, - onchange: () => { - settings.HID = !settings.HID; + 'Clock Style': { + value: !!settings["12hour"], + format : v => v?"12hr":"24hr", + onchange: v => { + settings["12hour"] = v; updateSettings(); } }, - 'HID Gestures': { - value: settings.HIDGestures, - format: boolFormat, - onchange: () => { - settings.HIDGestures = !settings.HIDGestures; + 'Distance/Speed': { + value: settings.distanceunit=="mile", + format: v => v?"mile":"kilometer", + onchange: v => { + settings.distanceunit = v?"mile":"kilometer"; updateSettings(); } }, - 'Debug': { - value: settings.debug, - format: boolFormat, - onchange: () => { - settings.debug = !settings.debug; - updateSettings(); - } - }, - 'Set Time': showSetTimeMenu, - 'Make Connectable': makeConnectable, - 'Reset Settings': showResetMenu, - 'Turn Off': Bangle.off, - '< Back': ()=> {load();} }; - return E.showMenu(mainmenu); + return E.showMenu(localemenu); } function showResetMenu() { @@ -149,16 +152,7 @@ function showResetMenu() { } setTimeout(showMainMenu, 50); }); - }, - // this is include for debugging. remove for production - /*'Erase': () => { - storage.erase('=setting'); - storage.erase('-setting'); - storage.erase('@setting'); - storage.erase('*setting'); - storage.erase('+setting'); - E.reboot(); - }*/ + } }; return E.showMenu(resetmenu); }