From 8f248a49da5e26e9c413a387a19f33df1596d99b Mon Sep 17 00:00:00 2001 From: Dmitry422 Date: Sun, 8 Feb 2026 10:16:15 +0700 Subject: [PATCH] Backlight settings bug --- applications/services/notification/notification.h | 1 + .../services/notification/notification_app.c | 13 +++++++++++++ .../services/notification/notification_messages.c | 12 ++++++++++++ .../services/notification/notification_messages.h | 3 ++- .../notification_settings_app.c | 7 +++---- targets/f7/api_symbols.csv | 3 ++- 6 files changed, 33 insertions(+), 6 deletions(-) diff --git a/applications/services/notification/notification.h b/applications/services/notification/notification.h index 0e1c07e5d..54e1eb895 100644 --- a/applications/services/notification/notification.h +++ b/applications/services/notification/notification.h @@ -65,6 +65,7 @@ typedef enum { NotificationMessageTypeDelay, NotificationMessageTypeLedDisplayBacklight, + NotificationMessageTypeLedDisplayBacklightForceOn, NotificationMessageTypeLedDisplayBacklightEnforceOn, NotificationMessageTypeLedDisplayBacklightEnforceAuto, diff --git a/applications/services/notification/notification_app.c b/applications/services/notification/notification_app.c index 97a7401a8..b4b0effa3 100644 --- a/applications/services/notification/notification_app.c +++ b/applications/services/notification/notification_app.c @@ -498,6 +498,19 @@ static void notification_process_notification_message( } } break; + case NotificationMessageTypeLedDisplayBacklightForceOn: + // Force Backlight ON even if its ON now + lcd_backlight_is_on = false; + notification_apply_notification_led_layer( + &app->display, + notification_message->data.led.value * display_brightness_setting * + app->current_night_shift * 1.0f); + reset_mask |= reset_display_mask; + lcd_backlight_is_on = true; + + //start rgb_mod_rainbow_timer when display backlight is ON and all corresponding settings is ON too + rainbow_timer_starter(app); + break; case NotificationMessageTypeLedDisplayBacklightEnforceOn: if(!app->display_led_lock) { app->display_led_lock = true; diff --git a/applications/services/notification/notification_messages.c b/applications/services/notification/notification_messages.c index 3dc154654..e3f4fbc2c 100644 --- a/applications/services/notification/notification_messages.c +++ b/applications/services/notification/notification_messages.c @@ -17,6 +17,12 @@ const NotificationMessage message_display_backlight_off = { .data.led.value = 0x00, }; +/** Display: backlight wakeup even if its ON now */ +const NotificationMessage message_display_backlight_force_on = { + .type = NotificationMessageTypeLedDisplayBacklightForceOn, + .data.led.value = 0xFF, +}; + /** Display: backlight always on */ const NotificationMessage message_display_backlight_enforce_on = { .type = NotificationMessageTypeLedDisplayBacklightEnforceOn, @@ -259,6 +265,12 @@ const NotificationSequence sequence_display_backlight_off = { NULL, }; +/** Display: backlight wakeup even if its ON now */ +const NotificationSequence sequence_display_backlight_force_on = { + &message_display_backlight_force_on, + NULL, +}; + /** Display: backlight always on lock */ const NotificationSequence sequence_display_backlight_enforce_on = { &message_display_backlight_enforce_on, diff --git a/applications/services/notification/notification_messages.h b/applications/services/notification/notification_messages.h index 3960d93b7..8af499841 100644 --- a/applications/services/notification/notification_messages.h +++ b/applications/services/notification/notification_messages.h @@ -87,7 +87,8 @@ extern const NotificationSequence sequence_display_backlight_on; extern const NotificationSequence sequence_display_backlight_off; /** Display: backlight force off after a delay of 1000ms */ extern const NotificationSequence sequence_display_backlight_off_delay_1000; - +/** Display: backlight wakeup even if its ON now */ +extern const NotificationSequence sequence_display_backlight_force_on; /** Display: backlight always on lock */ extern const NotificationSequence sequence_display_backlight_enforce_on; /** Display: backlight always on unlock */ diff --git a/applications/settings/notification_settings/notification_settings_app.c b/applications/settings/notification_settings/notification_settings_app.c index 533db3cd0..4d95a8ac6 100644 --- a/applications/settings/notification_settings/notification_settings_app.c +++ b/applications/settings/notification_settings/notification_settings_app.c @@ -295,7 +295,7 @@ static void backlight_changed(VariableItem* item) { variable_item_set_current_value_text(item, backlight_text[index]); app->notification->settings.display_brightness = backlight_value[index]; - notification_message(app->notification, &sequence_display_backlight_on); + notification_message(app->notification, &sequence_display_backlight_force_on); } static void screen_changed(VariableItem* item) { @@ -557,11 +557,10 @@ static void night_shift_changed(VariableItem* item) { variable_item_set_current_value_text(item, night_shift_text[index]); app->notification->settings.night_shift = night_shift_value[index]; - app->notification->current_night_shift = night_shift_value[index]; - app->notification->current_night_shift = night_shift_value[index]; // force demo night_shift brightness to rgb backlight and stock backlight - notification_message(app->notification, &sequence_display_backlight_on); + // app->notification->current_night_shift = night_shift_value[index]; + // notification_message(app->notification, &sequence_display_backlight_force_on); for(int i = 4; i < 6; i++) { VariableItem* t_item = variable_item_list_get(app->variable_item_list, i); diff --git a/targets/f7/api_symbols.csv b/targets/f7/api_symbols.csv index 831932efe..e3159a17e 100755 --- a/targets/f7/api_symbols.csv +++ b/targets/f7/api_symbols.csv @@ -1,5 +1,5 @@ entry,status,name,type,params -Version,+,87.5,, +Version,+,87.6,, Header,+,applications/drivers/subghz/cc1101_ext/cc1101_ext_interconnect.h,, Header,+,applications/services/applications.h,, Header,+,applications/services/bt/bt_service/bt.h,, @@ -5383,6 +5383,7 @@ Variable,+,sequence_charged,const NotificationSequence, Variable,+,sequence_charging,const NotificationSequence, Variable,+,sequence_display_backlight_enforce_auto,const NotificationSequence, Variable,+,sequence_display_backlight_enforce_on,const NotificationSequence, +Variable,+,sequence_display_backlight_force_on,const NotificationSequence, Variable,+,sequence_display_backlight_off,const NotificationSequence, Variable,+,sequence_display_backlight_off_delay_1000,const NotificationSequence, Variable,+,sequence_display_backlight_on,const NotificationSequence,