From b114677e5e0c4e7fd9155d0d3680f13759386158 Mon Sep 17 00:00:00 2001 From: kyleplo <31634240+kyleplo@users.noreply.github.com> Date: Sat, 24 Sep 2022 17:08:57 -0400 Subject: [PATCH 1/2] Add Power Save --- apps/powersave/README.md | 27 +++++++++++++++++++++++++++ apps/powersave/boot.js | 15 +++++++++++++++ apps/powersave/metadata.json | 15 +++++++++++++++ apps/powersave/screen.js | 7 +++++++ 4 files changed, 64 insertions(+) create mode 100644 apps/powersave/README.md create mode 100644 apps/powersave/boot.js create mode 100644 apps/powersave/metadata.json create mode 100644 apps/powersave/screen.js diff --git a/apps/powersave/README.md b/apps/powersave/README.md new file mode 100644 index 000000000..5be5e32b5 --- /dev/null +++ b/apps/powersave/README.md @@ -0,0 +1,27 @@ +# Power Saver + +Save your watch's battery power by halting foreground app execution while the screen is off. + +## Features +- Stops foreground app processes +- Background processes still run +- Clears screen +- Decreases accelerometer polls +- Foreground app is returned to when screen is turned back on (app state is not preserved) + +## Controls +- Automatically activates when screen times out, timing can be adjusted using normal timeout settings +- Deactivates when screen is turned back on + +## Warnings +- Due to an Espruino bug, this does not take affect immediately when installed. Switch apps for these features to take affect. +- This is not compatible with apps that need to run in the foreground even while the screen is off, such as most stopwatch apps and some health trackers. +- If you check your watch super often (like multiple times per minute), this may end of costing you more power than it saves since the app you are using will have to restart everytime you check it. + +## Requests + +[Contact information is on my website](https://kyleplo.com/#contact) + +## Creator + +[kyleplo](https://kyleplo.com) \ No newline at end of file diff --git a/apps/powersave/boot.js b/apps/powersave/boot.js new file mode 100644 index 000000000..d170e9d59 --- /dev/null +++ b/apps/powersave/boot.js @@ -0,0 +1,15 @@ +var Storage = Storage || require("Storage"); +Bangle.on("lock", locked => { + if(locked){ + g.clear().reset(); + Bangle.setLCDBrightness(0); + Bangle.setPollInterval(1000); + load("powersave.screen.js"); + }else{ + load(Storage.read("resumeaftersleep") || JSON.parse(Storage.read("setting.json")).clock); + } +}); +E.on("init", () => { + if(__FILE__ && __FILE__ !== "powersave.screen.js") + Storage.write("resumeaftersleep", __FILE__); +}); \ No newline at end of file diff --git a/apps/powersave/metadata.json b/apps/powersave/metadata.json new file mode 100644 index 000000000..50603b2c2 --- /dev/null +++ b/apps/powersave/metadata.json @@ -0,0 +1,15 @@ +{ + "id": "powersave", + "name": "Power Save", + "version": "0.01", + "description": "Halts foreground app execution while screen is off while still allowing background processes.", + "readme": "README.md", + "icon": "powersave.png", + "type": "bootloader", + "tags": "tool", + "supports": ["BANGLEJS2"], + "storage": [ + {"name":"powersave.boot.js","url":"boot.js"}, + {"name":"powersave.screen.js","url":"boot.js"} + ] +} \ No newline at end of file diff --git a/apps/powersave/screen.js b/apps/powersave/screen.js new file mode 100644 index 000000000..f987f0bbb --- /dev/null +++ b/apps/powersave/screen.js @@ -0,0 +1,7 @@ +var Storage = Storage || require("Storage"); +g.clear(); +Bangle.setLCDBrightness(0); +Bangle.setPollInterval(1000); +if(!Bangle.isLocked()){ + load(Storage.read("resumeaftersleep") || JSON.parse(Storage.read("setting.json")).clock); +} \ No newline at end of file From a65e1d7bcc9b40c6b37d635e97d5d29244df3d01 Mon Sep 17 00:00:00 2001 From: kyleplo <31634240+kyleplo@users.noreply.github.com> Date: Sat, 24 Sep 2022 17:14:00 -0400 Subject: [PATCH 2/2] Whoops - Add icon --- apps/powersave/powersave.png | Bin 0 -> 1429 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/powersave/powersave.png diff --git a/apps/powersave/powersave.png b/apps/powersave/powersave.png new file mode 100644 index 0000000000000000000000000000000000000000..fa0399b7304b895a18550bc00f5e8ff47ebe2051 GIT binary patch literal 1429 zcmV;G1#0?S(!3U%9 z3K302Vzl95ySrsOGu;*yN_S=oEuj}{E$wXS&P-`JerMY*)Bl`l_srC!CjOIuww*oS zcYbGP&YbVe*3|s3aVaLdLNV-jQ!VUr{BF*x!E_!_4X0Bz-8b>OIjxo!HeWHEodnNR z-Ra49vrDnfoR!vAx>hrsrZPOY>AZq%=BzYhBu4OE6?nt3vnSY9*ltcr)9rNxT=c+` z?QgMNSXsGMi&)FD`FMO*q_o*<33zxayu%s|=N@buB$iKJSgc=hiYh{zq4`vb{ z6f=qMtxTesJV0hvI<^$!BCD}bT1~L05uQ(8#@Kn-9#zaHekf*=C(D2{_|$>ql^7pM zYQesNVEcUV61NYX>CX@}z%Ir{5?`PQ^oSpP+%zY)VvI<11@0HX`aGCUbYg5Isk-|m zLVKNSb8f;IkyvWY#RNEnz&@vwhcGs@6y1Fsfx$x3oQwfi|687+;MDGzZ`##dLBrpX7X=VEd}|9b*>| zSho)}z>491jyXhPxmA}?-Sg65Hu)*RHj!;S^L(AaIB88(nm*7V)77fS96=(;4utl) zKec=b#z;%i?Hvd?gL^SYkgRlkCqjEYa4;6b7-`YMr3oOXb*_ai!aO1k)Fsy zT8A-Gnz;XM1f0p5>2APWBGElQ&&tI65xg>hbmB3Lky74tZbZ0hO!d-Nm@7zBsC|Lp z6{iy~V0$UaPT+HP|K?W@^NBfMa_f<&PE1n}Iuv8|LQ-mW27)mC)pKFldnF&lqc0MC5@+e&F- z)9wSS)>N7P!Qa$jUKD@hK(J>g!OL$Xvhj^WsTH?jTPZ1KX$eAw@OzkdQUtq;Jc?(Y zs?P_pZDu-Rg7YD{!j*uC7!&i@p~QQlmK%rw#`YAgcA>_m&6H+wdg+e^}L> zU+D8iwbi*986t~zT+1l=351B^e4&@NkSke_veoyUI{xz&-M;oW<+;e$CbD9BAvPIh=rMz_zy)oxWoiP!%8jRbZ0lPdc0 zuL>VITsQf5uV&c06~o@b%NgwJUl$(?U!>@gzsg@X5>STRP9F3CpXJ90Ql-!R