From 3b36e66bcfe046ad5fff836c217bce7697a441ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20B=C3=BCsgen?= Date: Fri, 17 May 2024 23:08:12 +0200 Subject: [PATCH] feature: refactor sleepasandroid and try to provide start/stop functions --- apps/sleepasandroid/boot.js | 42 +++++++++++++++++-------------- apps/sleepasandroid/config.js | 34 +++++++++++++++++++++++++ apps/sleepasandroid/metadata.json | 3 ++- 3 files changed, 59 insertions(+), 20 deletions(-) create mode 100644 apps/sleepasandroid/config.js diff --git a/apps/sleepasandroid/boot.js b/apps/sleepasandroid/boot.js index 9c8631c66..c7b48e0a0 100644 --- a/apps/sleepasandroid/boot.js +++ b/apps/sleepasandroid/boot.js @@ -1,27 +1,31 @@ (() => { - function gbSend(message) { - Bluetooth.println(""); - Bluetooth.println(JSON.stringify(message)); - } + eval(require("Storage").read("sleepasandroid.conf.js")); + var interval = null; - var accel_data = []; + function gbSend(message) { + // Helper function to send data to gadgetbridge + Bluetooth.println(""); + Bluetooth.println(JSON.stringify(message)); + } - function updateAccel(accel) { - accel_data.push(accel); - } + var config = new SleepAsAndroidConfig(); - function update_sleep_accel() { - copy = accel_data.map((x) => x); - mean_x = E.sum(copy.map((x) => x.x)) / copy.length; - mean_y = E.sum(copy.map((x) => x.y)) / copy.length; - mean_z = E.sum(copy.map((x) => x.z)) / copy.length; - update_data = { t: "sleep_as_android", "accel": { "x": mean_x, "y": mean_y, "z": mean_z } }; - gbSend(update_data); - accel_data = []; - } + function update_sleep_as_android() { + // send data to gadgetbridge + accel = Bangle.getAccel(); + health = Bangle.getHealthStatus(); - Bangle.on("accel", updateAccel); + update_data = {t: "sleep_as_android", "accel": {"x": accel.x, "y": accel.y, "z": accel.z}, "bpm": health.bpm}; + gbSend(update_data); + accel_data = []; + if (!config.getEnabled()) { + clearInterval(interval); + } + } + + if (config.getEnabled()) { + interval = setInterval(update_sleep_as_android, 1000); + } - setInterval(update_sleep_accel, 10000); })(); \ No newline at end of file diff --git a/apps/sleepasandroid/config.js b/apps/sleepasandroid/config.js new file mode 100644 index 000000000..356b90176 --- /dev/null +++ b/apps/sleepasandroid/config.js @@ -0,0 +1,34 @@ +class SleepAsAndroidConfig { + //Simple class to store whether sleep as android is running + constructor() { + this.filename = "sleepasandroid.json"; + } + + getEnabled() { + //returns whether sleeptracking is enabled + var content = require("Storage").readJSON(this.filename); + if (content === undefined) { + this.setEnabled(false); + return this.getEnabled(); + } + return content.enabled; + } + + setEnabled(enabled) { + // set sleeptracking state + require("Storage").writeJSON(this.filename, {"enabled": enabled}); + } +} + +function startTracking() { + var config = new SleepAsAndroidConfig(); + config.setEnabled(true); +} + +function stopTracking() { + var config = new SleepAsAndroidConfig(); + config.setEnabled(false); +} + +// (() => {eval(require("Storage").read("sleepasandroid.conf.js"));stopTracking();})(); +// (() => {eval(require("Storage").read("sleepasandroid.conf.js"));startTracking();})(); \ No newline at end of file diff --git a/apps/sleepasandroid/metadata.json b/apps/sleepasandroid/metadata.json index 7949d3576..5eeeef642 100644 --- a/apps/sleepasandroid/metadata.json +++ b/apps/sleepasandroid/metadata.json @@ -10,6 +10,7 @@ "supports": ["BANGLEJS","BANGLEJS2"], "readme": "README.md", "storage": [ - {"name":"sleepasandroid.boot.js","url":"boot.js"} + {"name":"sleepasandroid.boot.js","url":"boot.js"}, + {"name":"sleepasandroid.conf.js","url":"config.js"} ] }