diff options
author | Nick <nick.win999@gmail.com> | 2020-11-02 15:47:22 -0600 |
---|---|---|
committer | Pete Johanson <peter@peterjohanson.com> | 2020-11-03 22:08:20 -0500 |
commit | 1af4221908b52f6fc46e30445af8c87056b5f60b (patch) | |
tree | 8fec97683a88dc375613c276eaceeffa8298abe5 /app | |
parent | c3e7742f9c990bcc55a7f7358a51530bf4897265 (diff) |
feat(underglow): Debounce state settings save
Diffstat (limited to 'app')
-rw-r--r-- | app/src/rgb_underglow.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/app/src/rgb_underglow.c b/app/src/rgb_underglow.c index b371c94..084482e 100644 --- a/app/src/rgb_underglow.c +++ b/app/src/rgb_underglow.c @@ -227,6 +227,14 @@ static void zmk_rgb_underglow_tick_handler(struct k_timer *timer) { K_TIMER_DEFINE(underglow_tick, zmk_rgb_underglow_tick_handler, NULL); +#if IS_ENABLED(CONFIG_SETTINGS) +static void zmk_rgb_underglow_save_state_work() { + settings_save_one("rgb/underglow/state", &state, sizeof(state)); +} + +static struct k_delayed_work underglow_save_work; +#endif + static int zmk_rgb_underglow_init(struct device *_arg) { led_strip = device_get_binding(STRIP_LABEL); if (led_strip) { @@ -248,6 +256,7 @@ static int zmk_rgb_underglow_init(struct device *_arg) { #if IS_ENABLED(CONFIG_SETTINGS) settings_register(&rgb_conf); + k_delayed_work_init(&underglow_save_work, zmk_rgb_underglow_save_state_work); #endif k_timer_start(&underglow_tick, K_NO_WAIT, K_MSEC(50)); @@ -257,7 +266,8 @@ static int zmk_rgb_underglow_init(struct device *_arg) { int zmk_rgb_underglow_save_state() { #if IS_ENABLED(CONFIG_SETTINGS) - return settings_save_one("rgb/underglow/state", &state, sizeof(state)); + k_delayed_work_cancel(&underglow_save_work); + return k_delayed_work_submit(&underglow_save_work, K_MINUTES(1)); #else return 0; #endif |