From 3a2bfe470ff5df02962888b9647764703e636add Mon Sep 17 00:00:00 2001 From: Philippe G Date: Sun, 4 Apr 2021 16:06:31 -0700 Subject: [PATCH] show absolute battery level --- components/services/battery.c | 5 +++-- components/services/monitor.h | 2 +- components/squeezelite/embedded.c | 4 ++-- components/squeezelite/embedded.h | 2 +- plugin/SqueezeESP32/install.xml | 2 +- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/components/services/battery.c b/components/services/battery.c index e1882b72..30e69b82 100644 --- a/components/services/battery.c +++ b/components/services/battery.c @@ -51,8 +51,9 @@ float battery_value_svc(void) { * */ uint8_t battery_level_svc(void) { - // TODO: this is totally incorrect - return battery.avg ? (battery.avg - (3.0 * battery.cells)) / ((4.2 - 3.0) * battery.cells) * 100 : 0; + // TODO: this is vastly incorrect + int level = battery.avg ? (battery.avg - (3.0 * battery.cells)) / ((4.2 - 3.0) * battery.cells) * 100 : 0; + return level < 100 ? level : 100; } /**************************************************************************************** diff --git a/components/services/monitor.h b/components/services/monitor.h index 8e255e87..3f441ff9 100644 --- a/components/services/monitor.h +++ b/components/services/monitor.h @@ -21,7 +21,7 @@ extern void (*spkfault_handler_svc)(bool inserted); extern bool spkfault_svc(void); extern float battery_value_svc(void); -extern uint8_t battery_level_svc(void); +extern uint16_t battery_level_svc(void); extern monitor_gpio_t * get_spkfault_gpio(); extern monitor_gpio_t * get_jack_insertion_gpio(); diff --git a/components/squeezelite/embedded.c b/components/squeezelite/embedded.c index dfa43771..fb0b3d5d 100644 --- a/components/squeezelite/embedded.c +++ b/components/squeezelite/embedded.c @@ -67,8 +67,8 @@ u16_t get_plugged(void) { return jack_inserted_svc() ? PLUG_HEADPHONE : 0; } -u8_t get_battery(void) { - return (battery_level_svc() * 16) / 100; +u16_t get_battery(void) { + return (u16_t) (battery_value_svc() * 128) & 0x0fff; } void set_name(char *name) { diff --git a/components/squeezelite/embedded.h b/components/squeezelite/embedded.h index 29a7563a..984cb6bc 100644 --- a/components/squeezelite/embedded.h +++ b/components/squeezelite/embedded.h @@ -77,7 +77,7 @@ extern mutex_type slimp_mutex; #define PLUG_HEADPHONE 0x04 u16_t get_RSSI(void); // must provide or define as 0xffff u16_t get_plugged(void); // must provide or define as 0x0 -u8_t get_battery(void); // must provide 0..15 or define as 0x0 +u16_t get_battery(void); // must provide 12 bits data or define as 0x0 (exact meaning is device-dependant) // set name void set_name(char *name); // can be defined as an empty macro diff --git a/plugin/SqueezeESP32/install.xml b/plugin/SqueezeESP32/install.xml index 200de627..44753dce 100644 --- a/plugin/SqueezeESP32/install.xml +++ b/plugin/SqueezeESP32/install.xml @@ -10,6 +10,6 @@ PLUGIN_SQUEEZEESP32 PLUGIN_SQUEEZEESP32_DESC Plugins::SqueezeESP32::Plugin - 0.211 + 0.310 Philippe