From 925207e491da0ad87c38939c535398f2af99f583 Mon Sep 17 00:00:00 2001 From: Gordon Williams Date: Wed, 5 Feb 2020 10:27:24 +0000 Subject: [PATCH 1/3] Attempt at swapping scenes more cleanly --- apps/demoapp/app.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/apps/demoapp/app.js b/apps/demoapp/app.js index b84839b45..cb3136196 100644 --- a/apps/demoapp/app.js +++ b/apps/demoapp/app.js @@ -9,6 +9,7 @@ var scenes = [ y+=step; if (y>70) { clearInterval(i); + i = undefined; } g.clearRect(0,y-(step+1),240,y-1); @@ -159,10 +160,13 @@ var scenes = [ ]; var sceneNo = scenes.length-1; -var stop = scenes[sceneNo](); -setInterval(function() { +var stop; +function next() { sceneNo++; if (sceneNo>=scenes.length) sceneNo=0; - stop(); + if (stop) stop(); + clearInterval(); stop = scenes[sceneNo](); -}, 10000); + setTimeout(next, 10000); +} +next() From a180f98991c928f19dda7a732cedf00f3f905bec Mon Sep 17 00:00:00 2001 From: Gordon Williams Date: Wed, 5 Feb 2020 10:28:23 +0000 Subject: [PATCH 2/3] Simple example to control an Espruino device by setting a characteristic on it --- apps.json | 12 +++++++++ apps/flagrse/app-icon.js | 1 + apps/flagrse/app.js | 57 +++++++++++++++++++++++++++++++++++++++ apps/flagrse/app.json | 5 ++++ apps/flagrse/app.png | Bin 0 -> 326 bytes 5 files changed, 75 insertions(+) create mode 100644 apps/flagrse/app-icon.js create mode 100644 apps/flagrse/app.js create mode 100644 apps/flagrse/app.json create mode 100644 apps/flagrse/app.png diff --git a/apps.json b/apps.json index 76151a627..6c805e9e2 100644 --- a/apps.json +++ b/apps.json @@ -751,5 +751,17 @@ {"name":"*demoapp","url":"app-icon.js","evaluate":true} ], "sortorder" : -9 + }, + { "id": "flagrse", + "name": "Espruino Flag Raiser", + "icon": "app.png", + "description": "App to send a command to an Espruino-based bluetooth Flag", + "tags": "", + "storage": [ + {"name":"+flagrse","url":"app.json"}, + {"name":"-flagrse","url":"app.js"}, + {"name":"*flagrse","url":"app-icon.js","evaluate":true} + ] } + ] diff --git a/apps/flagrse/app-icon.js b/apps/flagrse/app-icon.js new file mode 100644 index 000000000..68d95b518 --- /dev/null +++ b/apps/flagrse/app-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwxH+AH4A/AH4AJmUyF/4Adstl1ovvAAIvvGNQvGGNAvIGMwvKGMgvMGMQvOGMAvQGLwvSGLgvUGLQvWGLAvYGKwv/R+zvtFrAvUFrQvSFrgvQFrwvOFsAvMFsQvKFsgvIFswvGFtAvEFtQABmUyF1gv/F/4v/F/4v/F/4v/F/4A/AH4A/AAwA=")) diff --git a/apps/flagrse/app.js b/apps/flagrse/app.js new file mode 100644 index 000000000..e7e8e2445 --- /dev/null +++ b/apps/flagrse/app.js @@ -0,0 +1,57 @@ + +function redraw() { + var img = require("heatshrink").decompress(atob("sFgxH+AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/ACcyAARD/L/5f/If5f/AHdlAAWtIn5ffAAJG/L75h/L8Jh/L8Jh/L8Jh/L8Jh/L8Jh/L8Jh/L8Jh/L8Jh/L8Jh/L8Jh/L8Jh/L8Jh/L8Jh+L8Rh8L8hh6L8xh4L9Bh2L9Rh0L9hhyL9xhwL+BhuL+RhsL+hhqL/5f/Lvpf0LtRfyLthfwLtxfuLuBfsLuRfqLuhfoLuxfmLvBfkLvRfiLvhfgLvxfeLn5fdLX5fdLH5fdK35fdKn5fdKX5fdKH5fdJ35fdJn5fdJX5fdJH5fdI35fdIn4AamQACIf5f/L/5D/L/5f/If5f/L/5D/L/5f/If5f/L/5D/L/5f/If5f/L/5D/L/5f/If5f/L/5D/L/5f/If5f/L/5D/L/4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4AnA")); + g.clear(); + g.drawImage(img, 120-96, 120-96, {scale:2}); +} + + // Code for button (Puck.js) + var busy = false; + +var lastTry = getTime(); + +function flag() { + E.showMessage("Working..."); + if (busy && lastTry+5 zv*bw_jT8?RvM*4YGhISS=_A+5E)ToKT1rx-4k0d^Cv@~o(sBktq$;q#;#*+T=q>y^MFyf0!swDk}u;#Pd{ge5|*hV0W;^SvV^qP z`7xf@*5u5vD=kydV59sh!5PI1PG^dze>0i%BQJzQ+~F}(MhrtQ_ku#k Date: Wed, 5 Feb 2020 10:52:51 +0000 Subject: [PATCH 3/3] Try to get time from GPS if we rebooted and powered on without any proper time - fix #91 --- apps/boot/boot0.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/apps/boot/boot0.js b/apps/boot/boot0.js index dbee62d9c..fb6fa128a 100644 --- a/apps/boot/boot0.js +++ b/apps/boot/boot0.js @@ -19,6 +19,22 @@ Bangle.setLCDTimeout(s.timeout); if (!s.timeout) Bangle.setLCDPower(1); E.setTimeZone(s.timezone); delete s; +// check to see if our clock is wrong - if it is use GPS time +if ((new Date()).getFullYear()==1970) { + console.log("Searching for GPS time"); + Bangle.on('GPS',function cb(g) { + Bangle.setGPSPower(0); + Bangle.removeListener("GPS",cb); + if (!g.time || (g.time.getFullYear()<2000) || + (g.time.getFullYear()==2250)) { + console.log("GPS receiver's time not set"); + return; + } + setTime(g.time.getTime()/1000); + console.log("GPS time",g.time.toString()); + }); + Bangle.setGPSPower(1); +} // All of this is just shim for older Bangles if (!Bangle.loadWidgets) { Bangle.loadWidgets = function(){