From 9c643f6b5dd584d84e0f75843eefb059e3d37407 Mon Sep 17 00:00:00 2001 From: Rob Pilling Date: Sat, 8 Apr 2023 08:25:27 +0100 Subject: [PATCH] drained: configure battery% and check interval --- apps/drained/README.md | 1 + apps/drained/boot.ts | 7 +++++-- apps/drained/metadata.json | 3 ++- apps/drained/settings.ts | 37 +++++++++++++++++++++++++++++++++++++ 4 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 apps/drained/settings.ts diff --git a/apps/drained/README.md b/apps/drained/README.md index 92924393a..da3f16ef8 100644 --- a/apps/drained/README.md +++ b/apps/drained/README.md @@ -7,6 +7,7 @@ With this app installed, your Bangle will automatically switch into low power mo ## Time - [x] Show simple date/time - [ ] Disable alarms - with a setting? +- [ ] Smarter/backoff interval for checking battery percentage ## No backlight (#2502) - [x] LCD brightness diff --git a/apps/drained/boot.ts b/apps/drained/boot.ts index 6ee7c8e92..ceba64bad 100644 --- a/apps/drained/boot.ts +++ b/apps/drained/boot.ts @@ -1,8 +1,11 @@ +const { battery = 5, interval = 10 } = require("Storage") + .readJSON(`${app}.setting.json`, true) || {}; + let drainedInterval: number | undefined = setInterval(() => { if(Bangle.isCharging()) return; - if(E.getBattery() > 5) + if(E.getBattery() > battery) return; load("drained.app.js"); -}, 5 * 60 * 1000); +}, interval * 60 * 1000); diff --git a/apps/drained/metadata.json b/apps/drained/metadata.json index 2af347f79..b665311a4 100644 --- a/apps/drained/metadata.json +++ b/apps/drained/metadata.json @@ -11,6 +11,7 @@ "allow_emulator": true, "storage": [ {"name":"drained.boot.js","url":"boot.js"}, - {"name":"drained.app.js","url":"app.js"} + {"name":"drained.app.js","url":"app.js"}, + {"name":"drained.settings.js","url":"settings.js"} ] } diff --git a/apps/drained/settings.ts b/apps/drained/settings.ts new file mode 100644 index 000000000..f511a16c6 --- /dev/null +++ b/apps/drained/settings.ts @@ -0,0 +1,37 @@ +((back: () => void) => { + const SETTINGS_FILE = "drained.setting.json"; + + const storage = require("Storage") + const settings = storage.readJSON(SETTINGS_FILE, true) || {}; + settings.battery ??= 5; + settings.interval ??= 10; + + const save = () => { + storage.writeJSON(SETTINGS_FILE, settings) + }; + + E.showMenu({ + "": { "title": "Drained" }, + "< Back": back, + "Trigger when battery reaches": { + value: settings.battery, + min: 0, + max: 95, + step: 5, + onchange: (v: number) => { + settings.battery = v; + save(); + }, + }, + "Check every N minutes": { + value: settings.interval, + min: 1, + max: 60 * 2, + step: 5, + onchange: (v: number) => { + settings.interval = v; + save(); + }, + }, + }); +})