1
mirror of https://github.com/DarkFlippers/unleashed-firmware.git synced 2025-12-12 20:49:49 +04:00

RGB Rainbow still in development.

This commit is contained in:
Dmitry422
2025-03-04 23:34:11 +07:00
parent 7ac1452618
commit 82fd6b2130
2 changed files with 64 additions and 35 deletions

View File

@@ -189,6 +189,61 @@ static void notification_display_timer(void* ctx) {
notification_message(app, &sequence_display_backlight_off); notification_message(app, &sequence_display_backlight_off);
} }
// RGB MOD RAINBOW SECTION
//start furi timer for rgb_mod_rainbow
static void rgb_mod_rainbow_timer_start(NotificationApp* app) {
furi_timer_start(
app->rgb_mod_rainbow_timer, furi_ms_to_ticks(app->settings.rgb_mod_rainbow_speed_ms));
}
//stop furi timer for rgb_mod_rainbow
static void rgb_mod_rainbow_timer_stop(NotificationApp* app) {
furi_timer_stop(app->rgb_mod_rainbow_timer);
}
// start/stop rgb_mod_rainbow_timer only if rgb_mod_installed
static void rgb_mod_rainbow_timer_control(NotificationApp* app) {
if(app->settings.rgb_mod_installed) {
if(app->settings.rgb_mod_rainbow) {
rgb_mod_rainbow_timer_start(app);
} else {
if(furi_timer_is_running(app->rgb_mod_rainbow_timer)) {
rgb_mod_rainbow_timer_stop(app);
}
}
}
}
// callback for rgb_mod_rainbow_timer (what we do when timer end)
static void rgb_mod_rainbow_timer_callback(void* context) {
furi_assert(context);
NotificationApp* app = context;
// УЧЕСТЬ СТЕП и его вероятность превысить 255
// При выключении радуги активировать настроенный в меню цвет
app->rgb_mod_rainbow_color3++;
if(app->rgb_mod_rainbow_color3 == 255) {
app->rgb_mod_rainbow_color2++;
app->rgb_mod_rainbow_color3 = 1;
}
if(app->rgb_mod_rainbow_color2 == 255) {
app->rgb_mod_rainbow_color1++;
app->rgb_mod_rainbow_color2 = 1;
}
if(app->rgb_mod_rainbow_color1 == 255) {
app->rgb_mod_rainbow_color1 = 1;
}
FURI_LOG_I("RAINBOW", "Color3 %u", app->rgb_mod_rainbow_color3);
FURI_LOG_I("RAINBOW", "Color2 %u", app->rgb_mod_rainbow_color2);
FURI_LOG_I("RAINBOW", "Color1 %u", app->rgb_mod_rainbow_color1);
}
// END OF RGB MOD RAINBOW SECTION
// message processing // message processing
static void notification_process_notification_message( static void notification_process_notification_message(
NotificationApp* app, NotificationApp* app,
@@ -219,12 +274,18 @@ static void notification_process_notification_message(
&app->display, &app->display,
notification_message->data.led.value * display_brightness_setting); notification_message->data.led.value * display_brightness_setting);
reset_mask |= reset_display_mask; reset_mask |= reset_display_mask;
//start rgb_mod_rainbow_timer when display backlight is ON
rgb_mod_rainbow_timer_control(app);
} else { } else {
reset_mask &= ~reset_display_mask; reset_mask &= ~reset_display_mask;
notification_reset_notification_led_layer(&app->display); notification_reset_notification_led_layer(&app->display);
if(furi_timer_is_running(app->display_timer)) { if(furi_timer_is_running(app->display_timer)) {
furi_timer_stop(app->display_timer); furi_timer_stop(app->display_timer);
} }
//stop rgb_mod_rainbow_timer when display backlight is OFF
if(furi_timer_is_running(app->rgb_mod_rainbow_timer)) {
rgb_mod_rainbow_timer_stop(app);
}
} }
break; break;
case NotificationMessageTypeLedDisplayBacklightEnforceOn: case NotificationMessageTypeLedDisplayBacklightEnforceOn:
@@ -512,38 +573,6 @@ static void input_event_callback(const void* value, void* context) {
notification_message(app, &sequence_display_backlight_on); notification_message(app, &sequence_display_backlight_on);
} }
// RGB MOD RAINBOW SECTION
//start furi timer for rgb_mod_rainbow
static void rgb_mod_rainbow_timer_start(NotificationApp* app) {
furi_timer_start(
app->rgb_mod_rainbow_timer, furi_ms_to_ticks(app->settings.rgb_mod_rainbow_speed_ms));
}
//stop furi timer for rgb_mod_rainbow
static void rgb_mod_rainbow_timer_stop(NotificationApp* app) {
furi_timer_stop(app->rgb_mod_rainbow_timer);
}
// start/stop rgb_mod_rainbow_timer only if rgb_mod_installed
static void rgb_mod_rainbow_timer_control(NotificationApp* app) {
if(app->settings.rgb_mod_installed) {
if(app->settings.rgb_mod_rainbow) {
rgb_mod_rainbow_timer_start(app);
} else {
rgb_mod_rainbow_timer_stop(app);
}
}
}
// callback for rgb_mod_rainbow_timer (what we do when timer end)
static void rgb_mod_rainbow_timer_callback(void* context) {
furi_assert(context);
FURI_LOG_I("RAINBOW", "Rainbow timer callback - change color");
}
// END OF RGB MOD RAINBOW SECTION
// App alloc // App alloc
static NotificationApp* notification_app_alloc(void) { static NotificationApp* notification_app_alloc(void) {
NotificationApp* app = malloc(sizeof(NotificationApp)); NotificationApp* app = malloc(sizeof(NotificationApp));

View File

@@ -63,9 +63,9 @@ struct NotificationApp {
// rainbow mode section // rainbow mode section
FuriTimer* rgb_mod_rainbow_timer; FuriTimer* rgb_mod_rainbow_timer;
int8_t rgb_mod_rainbow_color1; uint8_t rgb_mod_rainbow_color1;
int8_t rgb_mod_rainbow_color2; uint8_t rgb_mod_rainbow_color2;
int8_t rgb_mod_rainbow_color3; uint8_t rgb_mod_rainbow_color3;
NotificationSettings settings; NotificationSettings settings;