From a7cab5f47aa626e55644492dedf71508a34d27ac Mon Sep 17 00:00:00 2001 From: HaxSam Date: Fri, 23 Feb 2024 00:20:15 +0100 Subject: [PATCH 1/2] update rgb on solid only when brightness change --- lib/drivers/rgb_backlight.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/drivers/rgb_backlight.c b/lib/drivers/rgb_backlight.c index 7fcb3a4728..097fa30de3 100644 --- a/lib/drivers/rgb_backlight.c +++ b/lib/drivers/rgb_backlight.c @@ -228,6 +228,9 @@ void rgb_backlight_reconfigure(bool enabled) { rgb_state.rainbow_hsv.s = rgb_settings.rainbow_saturation; rgb_backlight_update(rgb_state.last_brightness, false); + if(rgb_state.enabled && rgb_settings.rainbow_mode == RGBBacklightRainbowModeOff) + SK6805_update(); + furi_check(furi_mutex_release(rgb_state.mutex) == FuriStatusOk); } @@ -286,8 +289,10 @@ void rgb_backlight_update(uint8_t brightness, bool tick) { return; } + bool brightness_changed = brightness != rgb_state.last_brightness; rgb_state.last_brightness = brightness; - SK6805_update(); + if(rgb_settings.rainbow_mode != RGBBacklightRainbowModeOff || brightness_changed) + SK6805_update(); furi_check(furi_mutex_release(rgb_state.mutex) == FuriStatusOk); } From 97c531f3fb6e74cb97752a76800a9fea33ee883a Mon Sep 17 00:00:00 2001 From: HaxSam Date: Sat, 24 Feb 2024 00:59:18 +0100 Subject: [PATCH 2/2] changed furi_kernel_lock() to FURI_CRITICAL_ENTER() in SK6805 --- lib/drivers/SK6805.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/drivers/SK6805.c b/lib/drivers/SK6805.c index 0133a39eb4..63178cfd20 100644 --- a/lib/drivers/SK6805.c +++ b/lib/drivers/SK6805.c @@ -60,7 +60,7 @@ void SK6805_set_led_color(uint8_t led_index, uint8_t r, uint8_t g, uint8_t b) { void SK6805_update() { FURI_LOG_T(TAG, "update"); SK6805_init(); - furi_kernel_lock(); + FURI_CRITICAL_ENTER(); uint32_t end; // Sequential sending LEDs for(uint8_t lednumber = 0; lednumber < SK6805_LED_COUNT; lednumber++) { @@ -100,5 +100,5 @@ void SK6805_update() { } } } - furi_kernel_unlock(); + FURI_CRITICAL_EXIT(); }