diff options
-rw-r--r-- | docs/drivers/battery.md | 22 | ||||
-rw-r--r-- | drivers/battery/battery.c | 10 | ||||
-rw-r--r-- | drivers/battery/battery.h | 12 |
3 files changed, 44 insertions, 0 deletions
diff --git a/docs/drivers/battery.md b/docs/drivers/battery.md index b1f75c1156..0bc8e5aec9 100644 --- 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 index 65497399e8..faf3c5a214 100644 --- 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 index 831b1f07e5..0985723eaa 100644 --- 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); + /** \} */ |