From 2818a63e2c6d3116001eca6e0ddf852825dfdd55 Mon Sep 17 00:00:00 2001 From: Smooklu <37220586+Smooklu@users.noreply.github.com> Date: Thu, 25 Nov 2021 12:48:36 -0600 Subject: [PATCH 01/19] Create README.md --- apps/fd6fdetect/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/fd6fdetect/README.md diff --git a/apps/fd6fdetect/README.md b/apps/fd6fdetect/README.md new file mode 100644 index 000000000..77b0ca1dd --- /dev/null +++ b/apps/fd6fdetect/README.md @@ -0,0 +1 @@ +![fd6fdetectlogo](https://user-images.githubusercontent.com/37220586/143489902-14f1b54b-b311-4ec9-bcf1-60107b24ce84.png) From 9f002934015e4bacc43a652703418d9c8ad7c29e Mon Sep 17 00:00:00 2001 From: Smooklu <37220586+Smooklu@users.noreply.github.com> Date: Thu, 25 Nov 2021 12:50:35 -0600 Subject: [PATCH 02/19] Update README.md --- apps/fd6fdetect/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/fd6fdetect/README.md b/apps/fd6fdetect/README.md index 77b0ca1dd..42172c9d5 100644 --- a/apps/fd6fdetect/README.md +++ b/apps/fd6fdetect/README.md @@ -1 +1,2 @@ ![fd6fdetectlogo](https://user-images.githubusercontent.com/37220586/143489902-14f1b54b-b311-4ec9-bcf1-60107b24ce84.png) +An app dedicated to letting you know how many Exposure Notification beacons are near you. From f5940b5bdbc0fc3118544821b6508f78f10a59f1 Mon Sep 17 00:00:00 2001 From: Smooklu <37220586+Smooklu@users.noreply.github.com> Date: Thu, 25 Nov 2021 12:52:27 -0600 Subject: [PATCH 03/19] Update README.md --- apps/fd6fdetect/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/fd6fdetect/README.md b/apps/fd6fdetect/README.md index 42172c9d5..ebb40989b 100644 --- a/apps/fd6fdetect/README.md +++ b/apps/fd6fdetect/README.md @@ -1,2 +1,2 @@ -![fd6fdetectlogo](https://user-images.githubusercontent.com/37220586/143489902-14f1b54b-b311-4ec9-bcf1-60107b24ce84.png) +# ![fd6fdetectlogo](https://user-images.githubusercontent.com/37220586/143489902-14f1b54b-b311-4ec9-bcf1-60107b24ce84.png) An app dedicated to letting you know how many Exposure Notification beacons are near you. From 6482297881ddfeef3202ae235e1e4a38f1826f9b Mon Sep 17 00:00:00 2001 From: Smooklu <37220586+Smooklu@users.noreply.github.com> Date: Thu, 25 Nov 2021 12:53:16 -0600 Subject: [PATCH 04/19] Update ChangeLog --- apps/fd6fdetect/ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/fd6fdetect/ChangeLog b/apps/fd6fdetect/ChangeLog index 3c82c3ca7..b85df5ace 100644 --- a/apps/fd6fdetect/ChangeLog +++ b/apps/fd6fdetect/ChangeLog @@ -1 +1,2 @@ 0.1: Added source code +0.2: Added a README file From 85b7115c731479ede76db6c659a071f9390dd352 Mon Sep 17 00:00:00 2001 From: Smooklu <37220586+Smooklu@users.noreply.github.com> Date: Thu, 25 Nov 2021 12:54:33 -0600 Subject: [PATCH 05/19] Update README.md --- apps/fd6fdetect/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/fd6fdetect/README.md b/apps/fd6fdetect/README.md index ebb40989b..4d3bfb2bf 100644 --- a/apps/fd6fdetect/README.md +++ b/apps/fd6fdetect/README.md @@ -1,2 +1,2 @@ -# ![fd6fdetectlogo](https://user-images.githubusercontent.com/37220586/143489902-14f1b54b-b311-4ec9-bcf1-60107b24ce84.png) +# ![fd6fdetectlogo](https://user-images.githubusercontent.com/37220586/143490430-980b1cf3-1de7-4ad3-9ff9-e3d31a67e215.png) An app dedicated to letting you know how many Exposure Notification beacons are near you. From 6508ed8b3fc99d0a39fb460a47f7d989c6f3eb7b Mon Sep 17 00:00:00 2001 From: Smooklu <37220586+Smooklu@users.noreply.github.com> Date: Thu, 25 Nov 2021 12:57:25 -0600 Subject: [PATCH 06/19] Update apps.json --- apps.json | 1 + 1 file changed, 1 insertion(+) diff --git a/apps.json b/apps.json index 25093a5a3..ec24146b5 100644 --- a/apps.json +++ b/apps.json @@ -3988,6 +3988,7 @@ "description": "Allows you to see 0xFD6F beacons near you.", "icon": "app.png", "tags": "tool", + "readme": "README.md", "supports": ["BANGLEJS"], "storage": [ {"name":"fd6fdetect.app.js","url":"app.js"}, From 4fb4d12ba48dee2869338cf1d4e4675e18a0d86a Mon Sep 17 00:00:00 2001 From: Smooklu <37220586+Smooklu@users.noreply.github.com> Date: Thu, 25 Nov 2021 13:00:28 -0600 Subject: [PATCH 07/19] Update README.md --- apps/fd6fdetect/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/fd6fdetect/README.md b/apps/fd6fdetect/README.md index 4d3bfb2bf..7e926aac7 100644 --- a/apps/fd6fdetect/README.md +++ b/apps/fd6fdetect/README.md @@ -1,2 +1,2 @@ -# ![fd6fdetectlogo](https://user-images.githubusercontent.com/37220586/143490430-980b1cf3-1de7-4ad3-9ff9-e3d31a67e215.png) +![fd6fdetectlogo](https://user-images.githubusercontent.com/37220586/143490833-a88e4666-dcca-4613-bcee-bb2a33af67c0.png) An app dedicated to letting you know how many Exposure Notification beacons are near you. From a1a56601c0579d4a9e9756eb83bfcd8a802a9510 Mon Sep 17 00:00:00 2001 From: Smooklu <37220586+Smooklu@users.noreply.github.com> Date: Thu, 25 Nov 2021 13:00:38 -0600 Subject: [PATCH 08/19] Update README.md --- apps/fd6fdetect/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/fd6fdetect/README.md b/apps/fd6fdetect/README.md index 7e926aac7..7f7168dfb 100644 --- a/apps/fd6fdetect/README.md +++ b/apps/fd6fdetect/README.md @@ -1,2 +1,3 @@ -![fd6fdetectlogo](https://user-images.githubusercontent.com/37220586/143490833-a88e4666-dcca-4613-bcee-bb2a33af67c0.png) +#![fd6fdetectlogo](https://user-images.githubusercontent.com/37220586/143490833-a88e4666-dcca-4613-bcee-bb2a33af67c0.png) + An app dedicated to letting you know how many Exposure Notification beacons are near you. From f9286cbee97efeb9c63f2672b520e8976e59e45a Mon Sep 17 00:00:00 2001 From: Smooklu <37220586+Smooklu@users.noreply.github.com> Date: Thu, 25 Nov 2021 13:00:48 -0600 Subject: [PATCH 09/19] Update README.md --- apps/fd6fdetect/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/fd6fdetect/README.md b/apps/fd6fdetect/README.md index 7f7168dfb..d134bc1ba 100644 --- a/apps/fd6fdetect/README.md +++ b/apps/fd6fdetect/README.md @@ -1,3 +1,3 @@ -#![fd6fdetectlogo](https://user-images.githubusercontent.com/37220586/143490833-a88e4666-dcca-4613-bcee-bb2a33af67c0.png) +# ![fd6fdetectlogo](https://user-images.githubusercontent.com/37220586/143490833-a88e4666-dcca-4613-bcee-bb2a33af67c0.png) An app dedicated to letting you know how many Exposure Notification beacons are near you. From bc27677f5ef33bf85d67df951edae6dce437248e Mon Sep 17 00:00:00 2001 From: Smooklu <37220586+Smooklu@users.noreply.github.com> Date: Thu, 25 Nov 2021 13:02:43 -0600 Subject: [PATCH 10/19] Update apps.json --- apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps.json b/apps.json index ec24146b5..9fc551243 100644 --- a/apps.json +++ b/apps.json @@ -3984,7 +3984,7 @@ "id": "fd6fdetect", "name": "fd6fdetect", "shortName": "fd6fdetect", - "version": "0.1", + "version": "0.2", "description": "Allows you to see 0xFD6F beacons near you.", "icon": "app.png", "tags": "tool", From 08fd95ab9a3cb50f26605cebb4ae7411c1823c48 Mon Sep 17 00:00:00 2001 From: Smooklu <37220586+Smooklu@users.noreply.github.com> Date: Thu, 25 Nov 2021 13:04:09 -0600 Subject: [PATCH 11/19] Update README.md --- apps/fd6fdetect/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/fd6fdetect/README.md b/apps/fd6fdetect/README.md index d134bc1ba..1a7cce8bd 100644 --- a/apps/fd6fdetect/README.md +++ b/apps/fd6fdetect/README.md @@ -1,3 +1,3 @@ -# ![fd6fdetectlogo](https://user-images.githubusercontent.com/37220586/143490833-a88e4666-dcca-4613-bcee-bb2a33af67c0.png) +# FD6FDetect An app dedicated to letting you know how many Exposure Notification beacons are near you. From 43b447f81c3f40b1c042a9551ec71a1f29aa4d91 Mon Sep 17 00:00:00 2001 From: Smooklu <37220586+Smooklu@users.noreply.github.com> Date: Thu, 25 Nov 2021 13:17:35 -0600 Subject: [PATCH 12/19] Update apps.json --- apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps.json b/apps.json index f43205d54..46e03bea0 100644 --- a/apps.json +++ b/apps.json @@ -4417,7 +4417,7 @@ "interface": "interface.html", "supports": ["BANGLEJS", "BANGLEJS2"], "readme": "README.md", - "allow_emulator": true, + "allow_emulator": false, "storage": [ {"name":"authentiwatch.app.js","url":"app.js"}, {"name":"authentiwatch.img","url":"app-icon.js","evaluate":true} From fa4fd118e28787458623159617600b4d42432e98 Mon Sep 17 00:00:00 2001 From: Smooklu <37220586+Smooklu@users.noreply.github.com> Date: Thu, 25 Nov 2021 13:20:52 -0600 Subject: [PATCH 13/19] Update apps.json --- apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps.json b/apps.json index 46e03bea0..f43205d54 100644 --- a/apps.json +++ b/apps.json @@ -4417,7 +4417,7 @@ "interface": "interface.html", "supports": ["BANGLEJS", "BANGLEJS2"], "readme": "README.md", - "allow_emulator": false, + "allow_emulator": true, "storage": [ {"name":"authentiwatch.app.js","url":"app.js"}, {"name":"authentiwatch.img","url":"app-icon.js","evaluate":true} From a4299586e8055425f1ea638090ac267081845a76 Mon Sep 17 00:00:00 2001 From: Gordon Williams Date: Fri, 26 Nov 2021 10:04:02 +0000 Subject: [PATCH 14/19] cscsensor 0.06: Now read wheel rev as well as cadence sensor Improve connection code --- apps.json | 2 +- apps/cscsensor/ChangeLog | 2 + apps/cscsensor/README.md | 8 +- apps/cscsensor/cscsensor.app.js | 148 ++++++++++++++++---------------- 4 files changed, 86 insertions(+), 74 deletions(-) diff --git a/apps.json b/apps.json index f04808164..3b6490b46 100644 --- a/apps.json +++ b/apps.json @@ -2948,7 +2948,7 @@ "id": "cscsensor", "name": "Cycling speed sensor", "shortName": "CSCSensor", - "version": "0.05", + "version": "0.06", "description": "Read BLE enabled cycling speed and cadence sensor and display readings on watch", "icon": "icons8-cycling-48.png", "tags": "outdoors,exercise,ble,bluetooth", diff --git a/apps/cscsensor/ChangeLog b/apps/cscsensor/ChangeLog index 9af9f9926..8f23fa9f3 100644 --- a/apps/cscsensor/ChangeLog +++ b/apps/cscsensor/ChangeLog @@ -3,3 +3,5 @@ 0.03: Save total distance traveled 0.04: Add sensor battery level indicator 0.05: Add cadence sensor support +0.06: Now read wheel rev as well as cadence sensor + Improve connection code diff --git a/apps/cscsensor/README.md b/apps/cscsensor/README.md index e19ebe60e..9740fd9cf 100644 --- a/apps/cscsensor/README.md +++ b/apps/cscsensor/README.md @@ -9,10 +9,16 @@ Currently the app displays the following data: - maximum speed - trip distance traveled - total distance traveled -- an icon with the battery status of the remote sensor +- an icon with the battery status of the remote sensor Button 1 resets all measurements except total distance traveled. The latter gets preserved by being written to storage every 0.1 miles and upon exiting the app. If the watch app has not received an update from the sensor for at least 10 seconds, pushing button 3 will attempt to reconnect to the sensor. Button 2 switches between the display for cycling speed and cadence. Values displayed are imperial or metric (depending on locale), cadence is in RPM, the wheel circumference can be adjusted in the global settings app. + +# TODO + +* Use Layout Library to provide proper Bangle.js 2 support +* Turn CSC sensor support into a library +* Support for `Recorder` app, to allow CSC readings to be logged alongside GPS diff --git a/apps/cscsensor/cscsensor.app.js b/apps/cscsensor/cscsensor.app.js index 3d4120269..e2af0db16 100644 --- a/apps/cscsensor/cscsensor.app.js +++ b/apps/cscsensor/cscsensor.app.js @@ -5,6 +5,8 @@ var characteristic; const SETTINGS_FILE = 'cscsensor.json'; const storage = require('Storage'); +const W = g.getWidth(); +const H = g.getHeight(); class CSCSensor { constructor() { @@ -75,7 +77,7 @@ class CSCSensor { var dist = this.distFactor*(this.lastRevs-this.lastRevsStart)*this.wheelCirc/63360.0; var ddist = Math.round(100*dist)/100; var tdist = Math.round(this.distFactor*this.totaldist*10)/10; - var dspeed = Math.round(10*this.distFactor*this.speed)/10; + var dspeed = Math.round(10*this.distFactor*this.speed)/10; var dmins = Math.floor(this.movingTime/60).toString(); if (dmins.length<2) dmins = "0"+dmins; var dsecs = (Math.floor(this.movingTime) % 60).toString(); @@ -152,7 +154,7 @@ class CSCSensor { var qChanged = false; if (event.target.uuid == "0x2a5b") { if (event.target.value.getUint8(0, true) & 0x2) { - // crank revolution + // crank revolution - if enabled const crankRevs = event.target.value.getUint16(1, true); const crankTime = event.target.value.getUint16(3, true); if (crankTime > this.lastCrankTime) { @@ -161,44 +163,43 @@ class CSCSensor { } this.lastCrankRevs = crankRevs; this.lastCrankTime = crankTime; - } else { - // wheel revolution - var wheelRevs = event.target.value.getUint32(1, true); - var dRevs = (this.lastRevs>0 ? wheelRevs-this.lastRevs : 0); - if (dRevs>0) { - qChanged = true; - this.totaldist += dRevs*this.wheelCirc/63360.0; - if ((this.totaldist-this.settings.totaldist)>0.1) { - this.settings.totaldist = this.totaldist; - storage.writeJSON(SETTINGS_FILE, this.settings); - } - } - this.lastRevs = wheelRevs; - if (this.lastRevsStart<0) this.lastRevsStart = wheelRevs; - var wheelTime = event.target.value.getUint16(5, true); - var dT = (wheelTime-this.lastTime)/1024; - var dBT = (Date.now()-this.lastBangleTime)/1000; - this.lastBangleTime = Date.now(); - if (dT<0) dT+=64; - if (Math.abs(dT-dBT)>3) dT = dBT; - this.lastTime = wheelTime; - this.speed = this.lastSpeed; - if (dRevs>0 && dT>0) { - this.speed = (dRevs*this.wheelCirc/63360.0)*3600/dT; - this.speedFailed = 0; - this.movingTime += dT; - } - else { - this.speedFailed++; - qChanged = false; - if (this.speedFailed>3) { - this.speed = 0; - qChanged = (this.lastSpeed>0); - } - } - this.lastSpeed = this.speed; - if (this.speed>this.maxSpeed && (this.movingTime>3 || this.speed<20) && this.speed<50) this.maxSpeed = this.speed; } + // wheel revolution + var wheelRevs = event.target.value.getUint32(1, true); + var dRevs = (this.lastRevs>0 ? wheelRevs-this.lastRevs : 0); + if (dRevs>0) { + qChanged = true; + this.totaldist += dRevs*this.wheelCirc/63360.0; + if ((this.totaldist-this.settings.totaldist)>0.1) { + this.settings.totaldist = this.totaldist; + storage.writeJSON(SETTINGS_FILE, this.settings); + } + } + this.lastRevs = wheelRevs; + if (this.lastRevsStart<0) this.lastRevsStart = wheelRevs; + var wheelTime = event.target.value.getUint16(5, true); + var dT = (wheelTime-this.lastTime)/1024; + var dBT = (Date.now()-this.lastBangleTime)/1000; + this.lastBangleTime = Date.now(); + if (dT<0) dT+=64; + if (Math.abs(dT-dBT)>3) dT = dBT; + this.lastTime = wheelTime; + this.speed = this.lastSpeed; + if (dRevs>0 && dT>0) { + this.speed = (dRevs*this.wheelCirc/63360.0)*3600/dT; + this.speedFailed = 0; + this.movingTime += dT; + } + else { + this.speedFailed++; + qChanged = false; + if (this.speedFailed>3) { + this.speed = 0; + qChanged = (this.lastSpeed>0); + } + } + this.lastSpeed = this.speed; + if (this.speed>this.maxSpeed && (this.movingTime>3 || this.speed<20) && this.speed<50) this.maxSpeed = this.speed; } if (qChanged && this.qUpdateScreen) this.updateScreen(); } @@ -215,44 +216,47 @@ function getSensorBatteryLevel(gatt) { }); } -function parseDevice(d) { - device = d; - g.clearRect(0, 60, 239, 239).setFontAlign(0, 0, 0).setColor(0, 1, 0).drawString("Found device", 120, 120).flip(); - device.gatt.connect().then(function(ga) { - gatt = ga; - g.clearRect(0, 60, 239, 239).setFontAlign(0, 0, 0).setColor(0, 1, 0).drawString("Connected", 120, 120).flip(); - return gatt.getPrimaryService("1816"); -}).then(function(s) { - service = s; - return service.getCharacteristic("2a5b"); -}).then(function(c) { - characteristic = c; - characteristic.on('characteristicvaluechanged', (event)=>mySensor.updateSensor(event)); - return characteristic.startNotifications(); -}).then(function() { - console.log("Done!"); - g.clearRect(0, 60, 239, 239).setColor(1, 1, 1).flip(); - getSensorBatteryLevel(gatt); - mySensor.updateScreen(); -}).catch(function(e) { - g.clearRect(0, 60, 239, 239).setColor(1, 0, 0).setFontAlign(0, 0, 0).drawString("ERROR"+e, 120, 120).flip(); - console.log(e); -})} - function connection_setup() { - NRF.setScan(); mySensor.screenInit = true; - NRF.setScan(parseDevice, { filters: [{services:["1816"]}], timeout: 2000}); - g.clearRect(0, 48, 239, 239).setFontVector(18).setFontAlign(0, 0, 0).setColor(0, 1, 0); - g.drawString("Scanning for CSC sensor...", 120, 120); + E.showMessage("Scanning for CSC sensor..."); + NRF.requestDevice({ filters: [{services:["1816"]}]}).then(function(d) { + device = d; + E.showMessage("Found device"); + return device.gatt.connect(); + }).then(function(ga) { + gatt = ga; + E.showMessage("Connected"); + return gatt.getPrimaryService("1816"); + }).then(function(s) { + service = s; + return service.getCharacteristic("2a5b"); + }).then(function(c) { + characteristic = c; + characteristic.on('characteristicvaluechanged', (event)=>mySensor.updateSensor(event)); + return characteristic.startNotifications(); + }).then(function() { + console.log("Done!"); + g.reset().clearRect(Bangle.appRect).flip(); + getSensorBatteryLevel(gatt); + mySensor.updateScreen(); + }).catch(function(e) { + E.showMessage(e.toString(), "ERROR"); + console.log(e); + }); } connection_setup(); -setWatch(function() { mySensor.reset(); g.clearRect(0, 48, 239, 239); mySensor.updateScreen(); }, BTN1, {repeat:true, debounce:20}); -E.on('kill',()=>{ if (gatt!=undefined) gatt.disconnect(); mySensor.settings.totaldist = mySensor.totaldist; storage.writeJSON(SETTINGS_FILE, mySensor.settings); }); -setWatch(function() { if (Date.now()-mySensor.lastBangleTime>10000) connection_setup(); }, BTN3, {repeat:true, debounce:20}); -setWatch(function() { mySensor.toggleDisplayCadence(); g.clearRect(0, 48, 239, 239); mySensor.updateScreen(); }, BTN2, {repeat:true, debounce:20}); -NRF.on('disconnect', connection_setup); +E.on('kill',()=>{ + if (gatt!=undefined) gatt.disconnect(); + mySensor.settings.totaldist = mySensor.totaldist; + storage.writeJSON(SETTINGS_FILE, mySensor.settings); +}); +NRF.on('disconnect', connection_setup); // restart if disconnected +Bangle.setUI("updown", d=>{ + if (d<0) { mySensor.reset(); g.clearRect(0, 48, W, H); mySensor.updateScreen(); } + if (d==0) { if (Date.now()-mySensor.lastBangleTime>10000) connection_setup(); } + if (d>0) { mySensor.toggleDisplayCadence(); g.clearRect(0, 48, W, H); mySensor.updateScreen(); } +}); Bangle.loadWidgets(); Bangle.drawWidgets(); From a89dd4d544b306acb94edeb63de6a90e1e946565 Mon Sep 17 00:00:00 2001 From: johan-m-o <85756863+johan-m-o@users.noreply.github.com> Date: Fri, 26 Nov 2021 11:23:43 +0100 Subject: [PATCH 15/19] Update ChangeLog --- apps/slevel/ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/slevel/ChangeLog b/apps/slevel/ChangeLog index 5560f00bc..3a6431e50 100644 --- a/apps/slevel/ChangeLog +++ b/apps/slevel/ChangeLog @@ -1 +1,2 @@ 0.01: New App! +0.02: Updated to work with both Bangle.js 1 and 2. From fe5ca8bc76b9c1a1d28159af6dba92af14fd4e57 Mon Sep 17 00:00:00 2001 From: johan-m-o <85756863+johan-m-o@users.noreply.github.com> Date: Fri, 26 Nov 2021 11:33:49 +0100 Subject: [PATCH 16/19] Update spiritlevel.js --- apps/slevel/spiritlevel.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/apps/slevel/spiritlevel.js b/apps/slevel/spiritlevel.js index 492fc60e1..9db54b825 100644 --- a/apps/slevel/spiritlevel.js +++ b/apps/slevel/spiritlevel.js @@ -1,5 +1,7 @@ g.clear(); var old = {x:0,y:0}; +var W = g.getWidth(); +var H = g.getHeight(); Bangle.on('accel',function(v) { var max = Math.max(Math.abs(v.x),Math.abs(v.y),Math.abs(v.z)); if (Math.abs(v.y)==max) { @@ -14,17 +16,17 @@ Bangle.on('accel',function(v) { g.setColor(1,1,1); g.setFont("6x8",2); g.setFontAlign(0,-1); - g.clearRect(60,0,180,16); - g.drawString(ang.toFixed(1),120,0); + g.clearRect(W*(1/4),0,W*(3/4),H*(1/16)); + g.drawString(ang.toFixed(1),W/2,0); var n = { - x:E.clip(120+v.x*256,4,236), - y:E.clip(120+v.y*256,4,236)}; + x:E.clip(W/2+v.x*256,4,W-4), + y:E.clip(H/2+v.y*256,4,H-4)}; g.clearRect(old.x-3,old.y-3,old.x+6,old.y+6); g.setColor(1,1,1); g.fillRect(n.x-3,n.y-3,n.x+6,n.y+6); g.setColor(1,0,0); - g.drawCircle(120,120,20); - g.drawCircle(120,120,60); - g.drawCircle(120,120,100); + g.drawCircle(W/2,H/2,W*(1/12)); + g.drawCircle(W/2,H/2,W*(1/4)); + g.drawCircle(W/2,H/2,W*(5/12)); old = n; }); From 6f300299b55f60098d262c02e0c7ed1a5576fc38 Mon Sep 17 00:00:00 2001 From: johan-m-o <85756863+johan-m-o@users.noreply.github.com> Date: Fri, 26 Nov 2021 11:34:52 +0100 Subject: [PATCH 17/19] Update apps.json --- apps.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps.json b/apps.json index 3b6490b46..8814b49d2 100644 --- a/apps.json +++ b/apps.json @@ -734,11 +734,11 @@ { "id": "slevel", "name": "Spirit Level", - "version": "0.01", + "version": "0.02", "description": "Show the current angle of the watch, so you can use it to make sure something is absolutely flat", "icon": "spiritlevel.png", "tags": "tool", - "supports": ["BANGLEJS"], + "supports": ["BANGLEJS","BANGLEJS2"], "storage": [ {"name":"slevel.app.js","url":"spiritlevel.js"}, {"name":"slevel.img","url":"spiritlevel-icon.js","evaluate":true} From b6e5175675890222b1f23318a2b466dcf6302238 Mon Sep 17 00:00:00 2001 From: johan-m-o <85756863+johan-m-o@users.noreply.github.com> Date: Fri, 26 Nov 2021 11:44:21 +0100 Subject: [PATCH 18/19] Update spiritlevel.js --- apps/slevel/spiritlevel.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/slevel/spiritlevel.js b/apps/slevel/spiritlevel.js index 9db54b825..030eeae97 100644 --- a/apps/slevel/spiritlevel.js +++ b/apps/slevel/spiritlevel.js @@ -2,6 +2,10 @@ g.clear(); var old = {x:0,y:0}; var W = g.getWidth(); var H = g.getHeight(); +var fontS = 1; +if (process.env.HWVERSION==1) { + fontS = 2; +} Bangle.on('accel',function(v) { var max = Math.max(Math.abs(v.x),Math.abs(v.y),Math.abs(v.z)); if (Math.abs(v.y)==max) { @@ -14,7 +18,7 @@ Bangle.on('accel',function(v) { var ang = Math.atan2(d,Math.abs(v.z))*180/Math.PI; g.setColor(1,1,1); - g.setFont("6x8",2); + g.setFont("6x8",fontS); g.setFontAlign(0,-1); g.clearRect(W*(1/4),0,W*(3/4),H*(1/16)); g.drawString(ang.toFixed(1),W/2,0); From 045251f55f9a71f755ffdcdb120e032dc437096a Mon Sep 17 00:00:00 2001 From: johan-m-o <85756863+johan-m-o@users.noreply.github.com> Date: Fri, 26 Nov 2021 11:50:19 +0100 Subject: [PATCH 19/19] Update spiritlevel.js --- apps/slevel/spiritlevel.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/apps/slevel/spiritlevel.js b/apps/slevel/spiritlevel.js index 030eeae97..9db54b825 100644 --- a/apps/slevel/spiritlevel.js +++ b/apps/slevel/spiritlevel.js @@ -2,10 +2,6 @@ g.clear(); var old = {x:0,y:0}; var W = g.getWidth(); var H = g.getHeight(); -var fontS = 1; -if (process.env.HWVERSION==1) { - fontS = 2; -} Bangle.on('accel',function(v) { var max = Math.max(Math.abs(v.x),Math.abs(v.y),Math.abs(v.z)); if (Math.abs(v.y)==max) { @@ -18,7 +14,7 @@ Bangle.on('accel',function(v) { var ang = Math.atan2(d,Math.abs(v.z))*180/Math.PI; g.setColor(1,1,1); - g.setFont("6x8",fontS); + g.setFont("6x8",2); g.setFontAlign(0,-1); g.clearRect(W*(1/4),0,W*(3/4),H*(1/16)); g.drawString(ang.toFixed(1),W/2,0);