From ed5a1850c52ed0a72fc9702a86d35142636ce351 Mon Sep 17 00:00:00 2001 From: eleanor <44651387+elykittytee@users.noreply.github.com> Date: Wed, 7 Sep 2022 13:24:21 -0500 Subject: [PATCH 01/13] Made suggested changes - used `date_utils` - replaced "second interval" with `queueDraw()` --- apps/distortclk/app.js | 88 +++++++++--------------------------------- 1 file changed, 18 insertions(+), 70 deletions(-) diff --git a/apps/distortclk/app.js b/apps/distortclk/app.js index ff44063d4..a4d7b8da5 100644 --- a/apps/distortclk/app.js +++ b/apps/distortclk/app.js @@ -8,76 +8,27 @@ const offset = 25; const width = g.getWidth(); const height = g.getHeight(); -const locale = require("locale"); - +var queueDraw; var fgTime = 0xf800; var bgTime = 0x3333ff; var dayDate = 0x000; -function time() { //numbers +function time() { require("Font4x5").add(Graphics); - - const d = new Date(); - const h = d.getHours(), - m = d.getMinutes(); - - const day = Date.now(); - const mo = d.getMonth()+1; - - var middle= ":"; - - const date = january(d.getMonth())+" "+d.getDate(); - const time = h + " " + ("0" + m).substr(-2); - - // time - //g.setColor(0, 0, 0); + + var d = new Date(); + var day = d.getDate(); + var time = require("locale").time(d,1); + var date = require("locale").date(d); + var mo = require("date_utils").month(d.getMonth()+1,0); + g.setFontAlign(0,0); g.setFontSixCaps(2).setColor(fgTime).drawString(time, width/2, height/2+10); g.setFont("4x5",2); g.setFontAlign(0,0); - g.setColor(dayDate).drawString(date,width-50, height-16); -} - -function january(month){ //switch case for month names - switch (month){ - case 0: - middle="January"; - return middle; - case 1: - middle="February"; - return middle; - case 2: - middle="March"; - return middle; - case 3: - middle="April"; - return middle; - case 4: - middle="May"; - return middle; - case 5: - middle="June"; - return middle; - case 6: - middle="July"; - return middle; - case 7: - middle="August"; - return middle; - case 8: - middle="September"; - return middle; - case 9: - middle="October"; - return middle; - case 10: - middle="November"; - return middle; - case 11: - middle="December"; - return middle; - } + g.setColor(dayDate).drawString(mo,width-55, height-16); + g.drawString(day,width-10, height-16); } function draw() { @@ -86,7 +37,6 @@ function draw() { } //program start - g.clear(); // Clear the screen once, at startup if (g.theme.dark==true){ @@ -97,16 +47,14 @@ else { } draw(); // draw immediately at first -var secondInterval = setInterval(draw, 1000); // Stop updates when LCD is off, restart when on -Bangle.on('lcdPower',on=>{ - if (secondInterval) clearInterval(secondInterval); - secondInterval = undefined; - if (on) { - secondInterval = setInterval(draw, 1000); - draw(); // draw immediately - } -}); +function queueDraw() { + if (drawTimeout) clearTimeout(drawTimeout); + drawTimeout = setTimeout(function() { + drawTimeout = undefined; + draw(); + }, 60000 - (Date.now() % 60000)); +} // Show launcher when middle button pressed Bangle.setUI("clock"); From 9cc04dcbe8b3753eaab945edc3355ce94b1e1ccc Mon Sep 17 00:00:00 2001 From: eleanor <44651387+elykittytee@users.noreply.github.com> Date: Wed, 7 Sep 2022 13:56:35 -0500 Subject: [PATCH 02/13] called queuedraw --- apps/distortclk/app.js | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/apps/distortclk/app.js b/apps/distortclk/app.js index a4d7b8da5..a9fdd1ef2 100644 --- a/apps/distortclk/app.js +++ b/apps/distortclk/app.js @@ -8,14 +8,21 @@ const offset = 25; const width = g.getWidth(); const height = g.getHeight(); -var queueDraw; +var drawTimeout; var fgTime = 0xf800; var bgTime = 0x3333ff; var dayDate = 0x000; +function queueDraw() { + if (drawTimeout) clearTimeout(drawTimeout); + drawTimeout = setTimeout(function() { + drawTimeout = undefined; + draw(); + }, 60000 - (Date.now() % 60000)); +} + function time() { require("Font4x5").add(Graphics); - var d = new Date(); var day = d.getDate(); var time = require("locale").time(d,1); @@ -34,6 +41,7 @@ function time() { function draw() { g.setColor(bgTime).fillRect(0,40,width,height-offset); time(); + queueDraw(); } //program start @@ -48,13 +56,7 @@ else { draw(); // draw immediately at first -function queueDraw() { - if (drawTimeout) clearTimeout(drawTimeout); - drawTimeout = setTimeout(function() { - drawTimeout = undefined; - draw(); - }, 60000 - (Date.now() % 60000)); -} + // Show launcher when middle button pressed Bangle.setUI("clock"); From 0f6272aa70c8182973ffc0baaabb627edb19e673 Mon Sep 17 00:00:00 2001 From: eleanor <44651387+elykittytee@users.noreply.github.com> Date: Wed, 7 Sep 2022 14:17:23 -0500 Subject: [PATCH 03/13] Update app.js --- apps/pokeclk/app.js | 63 ++++++++++++++++++--------------------------- 1 file changed, 25 insertions(+), 38 deletions(-) diff --git a/apps/pokeclk/app.js b/apps/pokeclk/app.js index 17a487bc0..bbaa51108 100644 --- a/apps/pokeclk/app.js +++ b/apps/pokeclk/app.js @@ -5,7 +5,7 @@ const width = g.getWidth(); const height = g.getHeight(); const font = "Vector:12"; -const locale = require("locale"); +var drawTimeout; var img = { width : 176, height : 149, bpp : 4, @@ -20,34 +20,12 @@ var night= { buffer : (atob("ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERABEREREREREAEREREREREREREREREREREREREREREREREREREREREREREREQABERERERHwABEREREREREREREREREREREREREREREREREREREREREREREREQ/xERERER/wERERERERERERERERERERERERERERERERERERERERERERERERH//xERERH//xERERERERERERERERERERERERERERERERERERERERERERERERH//xEREf/xERERERERERERERERERERERERERERERERERERERERERERERERERH///////ERERERERERERERERERERERERERERERERERERERERERERERERERER////////8RERERERERERERERERERERERERERERERERERERERERERERERERH/////////ERERERERERERERERERERERERERERERERERERERERERERERERER////D///DxERERERERERERERERERERERERERERERERERERERERERERERERH////w///w8RERERERERERERERERERERERERERERERERERERERER//ERERER//AA///w/w8REREREREREREREREREREREREREREREREREREREREf////EREf/wAP/wAA8PERERERERERERERERERERERERERERERERERERERERH////xERH/8AD/////DxERERERERERERERERERERERERERERERERERERERER////8REf//////////ERERERERERERERERERERERERERERERERERERERERERERH/8R/////////xERERERERERERERERERERERERERERERERERERERER////////Ef////////////////////////////////////////////////////////////////////////////////////////////////////////////8RERERH////////////xERERERERERERERERERERERERERERERERERERERERERERERH///////////EREREREREREREREREREREREREREREREREREREREREf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w==")) }; -var time= "10:20"; - -function time() { //numbers - // work out how to display the current time - const d = new Date(); - const h = d.getHours(), - m = d.getMinutes(); - const time = h + ":" + ("0" + m).substr(-2); - const day = Date.now(); - const mo = d.getMonth()+1; - const damo = d.getDate(); - - var dayMonth = mo+"-"+damo; - - // time - require("Font4x5").add(Graphics); - isDark(); - g.setFontAlign(0,0); - //g.setFont("6x8:4x5"); - g.setFont("4x5",7); - g.drawString(time, width/2, height/2); - // date - require("Font4x5").add(Graphics); - g.setFontAlign(1,1); - //g.setFont("4x6",2); - g.setFont("4x5",3); - g.drawString(dayMonth, width/2+60, height/2+40); - +function queueDraw() { + if (drawTimeout) clearTimeout(drawTimeout); + drawTimeout = setTimeout(function() { + drawTimeout = undefined; + draw(); + }, 60000 - (Date.now() % 60000)); } function isDark(){ @@ -59,6 +37,22 @@ function isDark(){ } } +function time() { + var d = new Date(); + var day = d.getDate(); + var time = require("locale").time(d,1); + var date = require("locale").date(d); + var mo = require("date_utils").month(d.getMonth()+1,0); + + require("Font4x5").add(Graphics); // time + isDark(); + g.setFontAlign(0,0); + g.setFont("4x5",7.5).drawString(time, width/2, height/2); + + g.setFontAlign(1,1); + g.setFont("4x5",2).drawString(mo+" "+day, width-15, height-35); +} + function draw() { //poketch background if (g.theme.dark==true){ g.drawImage(night, 0, 25, {scale:2}); //poketch is life @@ -67,20 +61,13 @@ function draw() { //poketch background g.drawImage(img, 0, 25); //poketch is life } time(); + queueDraw(); } //program start g.clear(); draw(); -var secondInterval = setInterval(draw, 1000); // Stop updates when LCD is off, restart when on -Bangle.on('lcdPower',on=>{ - if (secondInterval) clearInterval(secondInterval); - secondInterval = undefined; - if (on) { - secondInterval = setInterval(draw, 1000); - draw(); // draw immediately - } -}); + // Show launcher when middle button pressed Bangle.setUI("clock"); // Load widgets From 6547e2dcc68049eeda09a80df7af5199f58235e8 Mon Sep 17 00:00:00 2001 From: eleanor <44651387+elykittytee@users.noreply.github.com> Date: Wed, 7 Sep 2022 14:32:15 -0500 Subject: [PATCH 04/13] updated month abbreviation --- apps/pokeclk/app.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/pokeclk/app.js b/apps/pokeclk/app.js index bbaa51108..7e495f7d2 100644 --- a/apps/pokeclk/app.js +++ b/apps/pokeclk/app.js @@ -42,7 +42,7 @@ function time() { var day = d.getDate(); var time = require("locale").time(d,1); var date = require("locale").date(d); - var mo = require("date_utils").month(d.getMonth()+1,0); + var mo = require("date_utils").month(d.getMonth()+1,1); require("Font4x5").add(Graphics); // time isDark(); @@ -50,7 +50,7 @@ function time() { g.setFont("4x5",7.5).drawString(time, width/2, height/2); g.setFontAlign(1,1); - g.setFont("4x5",2).drawString(mo+" "+day, width-15, height-35); + g.setFont("4x5",3).drawString(mo+" "+day, width-15, height-35); } function draw() { //poketch background From 0a7f3abb0848c44fb9b504be7945f7f6d9182ea0 Mon Sep 17 00:00:00 2001 From: Richard de Boer Date: Fri, 9 Sep 2022 15:01:46 +0200 Subject: [PATCH 05/13] apploader.js: don't hide errors while loading 'noble' Loading the module can also fail when e.g. compiled against a different Node.js version, don't hide those errors. --- bin/apploader.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/bin/apploader.js b/bin/apploader.js index 16fc0c32e..bb9cfb142 100755 --- a/bin/apploader.js +++ b/bin/apploader.js @@ -16,12 +16,15 @@ var SETTINGS = { }; var APPSDIR = __dirname+"/../apps/"; var noble; -try { - noble = require('@abandonware/noble'); -} catch (e) {} -if (!noble) try { - noble = require('noble'); -} catch (e) { } +["@abandonware/noble", "noble"].forEach(module => { + if (!noble) try { + noble = require(module); + } catch(e) { + if (e.code !== 'MODULE_NOT_FOUND') { + throw e; + } + } +}); if (!noble) { console.log("You need to:") console.log(" npm install @abandonware/noble") From e072fe23a1fad496742ae7573e880382fd1435e8 Mon Sep 17 00:00:00 2001 From: Richard de Boer Date: Fri, 9 Sep 2022 15:10:06 +0200 Subject: [PATCH 06/13] apploader.js: add -b1 param to upload to Bangle.js 1 --- bin/apploader.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/bin/apploader.js b/bin/apploader.js index bb9cfb142..26c4c1f09 100755 --- a/bin/apploader.js +++ b/bin/apploader.js @@ -63,6 +63,10 @@ dirs.forEach(dir => { var args = process.argv; +var bangleParam = args.findIndex(arg => /-b\d/.test(arg)); +if (bangleParam!==-1) { + deviceId = "BANGLEJS"+args.splice(bangleParam, 1)[0][2]; +} if (args.length==3 && args[2]=="list") cmdListApps(); else if (args.length==3 && args[2]=="devices") cmdListDevices(); else if (args.length==4 && args[2]=="install") cmdInstallApp(args[3]); @@ -77,11 +81,10 @@ apploader.js list - list available apps apploader.js devices - list available device addresses -apploader.js install appname [de:vi:ce:ad:dr:es] +apploader.js install [-b1] appname [de:vi:ce:ad:dr:es] -NOTE: Currently this App Loader expects the device it uploads to -(deviceId) to be BANGLEJS2, so it won't work for Bangle.js 1 without -modification. +NOTE: By default this App Loader expects the device it uploads to +(deviceId) to be BANGLEJS2, pass '-b1' for it to work with Bangle.js 1 `); process.exit(0); } From 404625f44bd86060cf79915e6110b8110e0908d2 Mon Sep 17 00:00:00 2001 From: eleanor <44651387+elykittytee@users.noreply.github.com> Date: Fri, 9 Sep 2022 08:18:08 -0500 Subject: [PATCH 07/13] Update ChangeLog --- apps/pokeclk/ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/pokeclk/ChangeLog b/apps/pokeclk/ChangeLog index 8e506ce50..5838e596d 100644 --- a/apps/pokeclk/ChangeLog +++ b/apps/pokeclk/ChangeLog @@ -1,2 +1,3 @@ 0.01: New face :) 0.02: Color image compressed +0.03: Improved clock From 7421238f412fcb17416d06a2ae409ec78d94f2b7 Mon Sep 17 00:00:00 2001 From: eleanor <44651387+elykittytee@users.noreply.github.com> Date: Fri, 9 Sep 2022 08:18:26 -0500 Subject: [PATCH 08/13] Update metadata.json --- apps/pokeclk/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/pokeclk/metadata.json b/apps/pokeclk/metadata.json index 433077efe..c022868ec 100644 --- a/apps/pokeclk/metadata.json +++ b/apps/pokeclk/metadata.json @@ -2,7 +2,7 @@ "id": "pokeclk", "name": "Poketch Clock", "shortName":"Poketch Clock", - "version": "0.02", + "version": "0.03", "description": "A clock based on the Poketch electronic device found in Sinnoh", "icon": "app.png", "type": "clock", From 8e70ac9f8325bee41a2a99c3053cf2851d1ef3df Mon Sep 17 00:00:00 2001 From: eleanor <44651387+elykittytee@users.noreply.github.com> Date: Fri, 9 Sep 2022 08:18:42 -0500 Subject: [PATCH 09/13] Update ChangeLog --- apps/distortclk/ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/distortclk/ChangeLog b/apps/distortclk/ChangeLog index 9bec1d7a4..4c7291526 100644 --- a/apps/distortclk/ChangeLog +++ b/apps/distortclk/ChangeLog @@ -1 +1,2 @@ 0.01: New face! +0.02: Improved clock From eae3ce56d386b89c7f8682d3ba740e26a2343d60 Mon Sep 17 00:00:00 2001 From: eleanor <44651387+elykittytee@users.noreply.github.com> Date: Fri, 9 Sep 2022 08:18:55 -0500 Subject: [PATCH 10/13] Update metadata.json --- apps/distortclk/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/distortclk/metadata.json b/apps/distortclk/metadata.json index 0ede203b5..125dac590 100644 --- a/apps/distortclk/metadata.json +++ b/apps/distortclk/metadata.json @@ -2,7 +2,7 @@ "id": "distortclk", "name": "Distort Clock", "shortName":"Distort Clock", - "version": "0.01", + "version": "0.02", "description": "A clockface", "icon": "app.png", "type": "clock", From dc8319d97aa1eb918d21e3fc8cfb90a1872d607f Mon Sep 17 00:00:00 2001 From: Spence Churchill Date: Fri, 9 Sep 2022 10:38:37 -0700 Subject: [PATCH 11/13] use 10-minute acceleration and charging removes temperature due to weather situations --- modules/wear_detect.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/modules/wear_detect.js b/modules/wear_detect.js index 62b1ae362..61321ac59 100644 --- a/modules/wear_detect.js +++ b/modules/wear_detect.js @@ -11,9 +11,7 @@ exports.isWorn = function() { return new Promise(resolve => { if (Bangle.isCharging()) return resolve(false); - if (E.getTemperature() > 24.625) - return resolve(true); - if (Bangle.getAccel().mag > 1.045) + if (Bangle.getHealthStatus().movement > 146) return resolve(true); return resolve(false); }); From 4a2d8212c1abb97e185925cee9cbb20a24fa31e2 Mon Sep 17 00:00:00 2001 From: Spence Churchill Date: Fri, 9 Sep 2022 17:54:08 -0700 Subject: [PATCH 12/13] optimize for precision over accuracy correctly classifying when the watch is on is more important than classifying classifying when the watch is off --- modules/wear_detect.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/wear_detect.js b/modules/wear_detect.js index 61321ac59..9581657cf 100644 --- a/modules/wear_detect.js +++ b/modules/wear_detect.js @@ -11,7 +11,7 @@ exports.isWorn = function() { return new Promise(resolve => { if (Bangle.isCharging()) return resolve(false); - if (Bangle.getHealthStatus().movement > 146) + if (Bangle.getHealthStatus().movement > 124) return resolve(true); return resolve(false); }); From 88533f84bc381caf63cfe08def2adee36cfba9be Mon Sep 17 00:00:00 2001 From: Gordon Williams Date: Fri, 16 Sep 2022 09:08:48 +0100 Subject: [PATCH 13/13] 0.03: Remove global declaration of BANGLEJS2 var (fix #2123) --- apps/widram/ChangeLog | 1 + apps/widram/metadata.json | 2 +- apps/widram/widget.js | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/widram/ChangeLog b/apps/widram/ChangeLog index e7b406081..7b00c8a48 100644 --- a/apps/widram/ChangeLog +++ b/apps/widram/ChangeLog @@ -1,2 +1,3 @@ 0.01: New Widget! 0.02: Now also visible on Bangle.js 2 +0.03: Remove global declaration of BANGLEJS2 var (fix #2123) diff --git a/apps/widram/metadata.json b/apps/widram/metadata.json index 19ae6d311..ebf23742b 100644 --- a/apps/widram/metadata.json +++ b/apps/widram/metadata.json @@ -2,7 +2,7 @@ "id": "widram", "name": "RAM Widget", "shortName": "RAM Widget", - "version": "0.02", + "version": "0.03", "description": "Display your Bangle's RAM usage percentage in a widget", "icon": "widget.png", "type": "widget", diff --git a/apps/widram/widget.js b/apps/widram/widget.js index 210c85357..07b7c0a5f 100644 --- a/apps/widram/widget.js +++ b/apps/widram/widget.js @@ -1,6 +1,6 @@ (() => { function draw() { - BANGLEJS2 = process.env.HWVERSION==2; + const BANGLEJS2 = process.env.HWVERSION==2; g.reset(); var m = process.memory(); var percent = Math.round(m.usage*100/m.total);