diff --git a/hw/battery/include/battery/battery.h b/hw/battery/include/battery/battery.h index 0b1093a503..50500a37a5 100644 --- a/hw/battery/include/battery/battery.h +++ b/hw/battery/include/battery/battery.h @@ -221,6 +221,18 @@ char *battery_prop_get_name(const struct battery_property *prop, char *buf, */ int battery_set_poll_rate_ms(struct os_dev *battery, uint32_t poll_rate); +/** + * Set the battery poll rate with a starting delay + * + * @param The battery + * @param The poll rate in milliseconds + * @param Start delay before beginning to poll in milliseconds + * + * @return 0 on success, non-zero error code on failure. + */ +int battery_set_poll_rate_ms_delay(struct os_dev *battery, uint32_t poll_rate, + uint32_t start_delay); + // ================================================================= // ========================== BATTERY MANAGER ====================== // ================================================================= diff --git a/hw/battery/src/battery.c b/hw/battery/src/battery.c index e3f2ac306b..2b13266e08 100644 --- a/hw/battery/src/battery.c +++ b/hw/battery/src/battery.c @@ -484,6 +484,13 @@ battery_mgr_poll_battery(struct battery *battery) int battery_set_poll_rate_ms(struct os_dev *battery, uint32_t poll_rate) +{ + return battery_set_poll_rate_ms_delay(battery, poll_rate, 0); +} + +int +battery_set_poll_rate_ms_delay(struct os_dev *battery, uint32_t poll_rate, + uint32_t start_delay) { struct battery *bat = (struct battery *)battery; @@ -499,7 +506,7 @@ battery_set_poll_rate_ms(struct os_dev *battery, uint32_t poll_rate) bat->b_poll_rate = poll_rate; bat->b_next_run = os_time_get(); - os_callout_reset(&battery_manager.bm_poll_callout, 0); + os_callout_reset(&battery_manager.bm_poll_callout, start_delay); return 0; }