From 6bd548d4094ea425d94c9199a018865e6989935a Mon Sep 17 00:00:00 2001 From: Gordon Williams Date: Thu, 18 Nov 2021 10:27:26 +0000 Subject: [PATCH] setting 0.32: Fix 'beep' menu on Bangle.js 2 --- apps.json | 4 ++-- apps/setting/ChangeLog | 1 + apps/setting/settings.js | 51 +++++++++++++++++++++++++++------------- 3 files changed, 38 insertions(+), 18 deletions(-) diff --git a/apps.json b/apps.json index c5890cbd4..238c928be 100644 --- a/apps.json +++ b/apps.json @@ -115,7 +115,7 @@ { "id": "setting", "name": "Settings", - "version": "0.31", + "version": "0.32", "description": "A menu for setting up Bangle.js", "icon": "settings.png", "tags": "tool,system", @@ -4224,7 +4224,7 @@ "description": "Emojis & Espruino: broadcast Unicode emojis via Bluetooth Low Energy.", "icon": "emojuino.png", "tags": "emoji", - "supports" : [ "BANGLEJS2" ], + "supports" : [ "BANGLEJS2" ], "readme": "README.md", "storage": [ { "name": "emojuino.app.js", "url": "emojuino.js" }, diff --git a/apps/setting/ChangeLog b/apps/setting/ChangeLog index 0890cf510..63f77edcf 100644 --- a/apps/setting/ChangeLog +++ b/apps/setting/ChangeLog @@ -34,3 +34,4 @@ 0.29: Add Customize to Theme menu 0.30: Move '< Back' to the top of menus 0.31: Remove Bangle 1 settings when running on Bangle 2 +0.32: Fix 'beep' menu on Bangle.js 2 diff --git a/apps/setting/settings.js b/apps/setting/settings.js index 0decb5313..395fdef00 100644 --- a/apps/setting/settings.js +++ b/apps/setting/settings.js @@ -72,8 +72,37 @@ if (!('qmOptions' in settings)) settings.qmOptions = {}; // easier if this alway const boolFormat = v => v ? "On" : "Off"; function showMainMenu() { - var beepV = BANGLEJS2 ? [false,true] : [false, true, "vib"]; - var beepN = BANGLEJS2 ? ["Off","On"] : ["Off", "Piezo", "Vibrate"]; + var beepMenuItem; + if (BANGLEJS2) { // Bangle.js 2 is simply on/off + beepMenuItem = { + value: settings.beep, + format: boolFormat, + onchange: v => { + settings.beep = v; + updateSettings(); + if (settings.beep) { + analogWrite(VIBRATE,0.1,{freq:2000}); + setTimeout(()=>VIBRATE.reset(),200); + } // beep with vibration moter + } + } + } else { // Bangle.js 1 has different options + var beepV = [false, true, "vib"]; + var beepN = ["Off", "Piezo", "Vibrate"]; + beepMenuItem = { + value: Math.max(0 | beepV.indexOf(settings.beep),0), + min: 0, max: beepV.length-1, + format: v => beepN[v], + onchange: v => { + settings.beep = beepV[v]; + if (v==1) { analogWrite(D18,0.5,{freq:2000});setTimeout(()=>D18.reset(),200); } // piezo on Bangle.js 1 + else if (v==2) { analogWrite(VIBRATE,0.1,{freq:2000});setTimeout(()=>VIBRATE.reset(),200); } // vibrate + updateSettings(); + } + }; + } + + const mainmenu = { '': { 'title': 'Settings' }, '< Back': ()=>load(), @@ -88,22 +117,12 @@ function showMainMenu() { updateSettings(); } }, - 'Beep': { - value: 0 | beepV.indexOf(settings.beep), - min: 0, max: 2, - format: v => beepN[v], - onchange: v => { - settings.beep = beepV[v]; - if (v==1) { analogWrite(D18,0.5,{freq:2000});setTimeout(()=>D18.reset(),200); } // piezo - else if (v==2) { analogWrite(D13,0.1,{freq:2000});setTimeout(()=>D13.reset(),200); } // vibrate - updateSettings(); - } - }, + 'Beep': beepMenuItem, 'Vibration': { value: settings.vibrate, format: boolFormat, - onchange: () => { - settings.vibrate = !settings.vibrate; + onchange: v => { + settings.vibrate = v; updateSettings(); if (settings.vibrate) { VIBRATE.write(1); @@ -146,7 +165,7 @@ function showBLEMenu() { } }, 'HID': { - value: 0 | hidV.indexOf(settings.HID), + value: Math.max(0,0 | hidV.indexOf(settings.HID)), min: 0, max: 3, format: v => hidN[v], onchange: v => {