commit: 5611a4006493eb0ec7cf815d4a7a24a671a16df6
parent 11c8b2841e74c06b2bfe85a1684a61caf3bd948a
Author: Joel Challis <git@zvecr.com>
Date: Mon, 5 May 2025 03:28:33 +0100
Add battery changed callbacks (#25207)
Diffstat:
3 files changed, 44 insertions(+), 0 deletions(-)
diff --git a/docs/drivers/battery.md b/docs/drivers/battery.md
@@ -49,3 +49,25 @@ Sample battery level.
#### Return Value {#api-battery-get-percent-return}
The battery percentage, in the range 0-100.
+
+## Callbacks
+
+### `void battery_percent_changed_user(uint8_t level)` {#api-battery-percent-changed-user}
+
+User hook called when battery level changed.
+
+### Arguments {#api-battery-percent-changed-user-arguments}
+
+ - `uint8_t level`
+ The battery percentage, in the range 0-100.
+
+---
+
+### `void battery_percent_changed_kb(uint8_t level)` {#api-battery-percent-changed-kb}
+
+Keyboard hook called when battery level changed.
+
+### Arguments {#api-battery-percent-changed-kb-arguments}
+
+ - `uint8_t level`
+ The battery percentage, in the range 0-100.
diff --git a/drivers/battery/battery.c b/drivers/battery/battery.c
@@ -17,11 +17,21 @@ void battery_init(void) {
last_bat_level = battery_driver_sample_percent();
}
+__attribute__((weak)) void battery_percent_changed_user(uint8_t level) {}
+__attribute__((weak)) void battery_percent_changed_kb(uint8_t level) {}
+
+static void handle_percent_changed(void) {
+ battery_percent_changed_user(last_bat_level);
+ battery_percent_changed_kb(last_bat_level);
+}
+
void battery_task(void) {
static uint32_t bat_timer = 0;
if (timer_elapsed32(bat_timer) > BATTERY_SAMPLE_INTERVAL) {
last_bat_level = battery_driver_sample_percent();
+ handle_percent_changed();
+
bat_timer = timer_read32();
}
}
diff --git a/drivers/battery/battery.h b/drivers/battery/battery.h
@@ -31,4 +31,16 @@ void battery_task(void);
*/
uint8_t battery_get_percent(void);
+/**
+ * \brief user hook called when battery level changed.
+ *
+ */
+void battery_percent_changed_user(uint8_t level);
+
+/**
+ * \brief keyboard hook called when battery level changed.
+ *
+ */
+void battery_percent_changed_kb(uint8_t level);
+
/** \} */