logo

qmk_firmware

custom branch of QMK firmware git clone https://anongit.hacktivis.me/git/qmk_firmware.git
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:

Mdocs/drivers/battery.md22++++++++++++++++++++++
Mdrivers/battery/battery.c10++++++++++
Mdrivers/battery/battery.h12++++++++++++
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); + /** \} */