mirror of
https://github.com/DarkFlippers/unleashed-firmware.git
synced 2025-12-12 12:42:30 +04:00
RGB mod rainbow effect done.
This commit is contained in:
@@ -189,7 +189,7 @@ static void notification_display_timer(void* ctx) {
|
||||
notification_message(app, &sequence_display_backlight_off);
|
||||
}
|
||||
|
||||
// RGB MOD RAINBOW SECTION
|
||||
// --- RGB MOD RAINBOW SECTION ---
|
||||
|
||||
//start furi timer for rgb_mod_rainbow
|
||||
static void rgb_mod_rainbow_timer_start(NotificationApp* app) {
|
||||
@@ -202,10 +202,15 @@ 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) {
|
||||
// start/restart/stop rgb_mod_rainbow_timer only if rgb_mod_installed and apply rainbow colors to backlight
|
||||
static void rgb_mod_rainbow_timer_starter(NotificationApp* app) {
|
||||
if(app->settings.rgb_mod_installed) {
|
||||
if(app->settings.rgb_mod_rainbow) {
|
||||
if(app->settings.rgb_mod_rainbow_mode > 0) {
|
||||
rgb_mod_rainbow_update(
|
||||
app->rgb_mod_rainbow_red,
|
||||
app->rgb_mod_rainbow_green,
|
||||
app->rgb_mod_rainbow_blue,
|
||||
app->settings.display_brightness);
|
||||
rgb_mod_rainbow_timer_start(app);
|
||||
} else {
|
||||
if(furi_timer_is_running(app->rgb_mod_rainbow_timer)) {
|
||||
@@ -220,34 +225,74 @@ static void rgb_mod_rainbow_timer_callback(void* context) {
|
||||
furi_assert(context);
|
||||
NotificationApp* app = context;
|
||||
|
||||
// При выключении радуги активировать настроенный в меню цвет
|
||||
// if rgb_mode_rainbow_mode is rainbow do rainbow effect
|
||||
if(app->settings.rgb_mod_rainbow_mode == 1) {
|
||||
switch(app->rgb_mod_rainbow_stage) {
|
||||
// from red to yellow
|
||||
case 1:
|
||||
app->rgb_mod_rainbow_green += app->settings.rgb_mod_rainbow_step;
|
||||
if(app->rgb_mod_rainbow_green >= 255) {
|
||||
app->rgb_mod_rainbow_green = 255;
|
||||
app->rgb_mod_rainbow_stage++;
|
||||
}
|
||||
break;
|
||||
// yellow red to green
|
||||
case 2:
|
||||
app->rgb_mod_rainbow_red -= app->settings.rgb_mod_rainbow_step;
|
||||
if(app->rgb_mod_rainbow_red <= 0) {
|
||||
app->rgb_mod_rainbow_red = 0;
|
||||
app->rgb_mod_rainbow_stage++;
|
||||
}
|
||||
break;
|
||||
// from green to light blue
|
||||
case 3:
|
||||
app->rgb_mod_rainbow_blue += app->settings.rgb_mod_rainbow_step;
|
||||
if(app->rgb_mod_rainbow_blue >= 255) {
|
||||
app->rgb_mod_rainbow_blue = 255;
|
||||
app->rgb_mod_rainbow_stage++;
|
||||
}
|
||||
break;
|
||||
//from light blue to blue
|
||||
case 4:
|
||||
app->rgb_mod_rainbow_green -= app->settings.rgb_mod_rainbow_step;
|
||||
if(app->rgb_mod_rainbow_green <= 0) {
|
||||
app->rgb_mod_rainbow_green = 0;
|
||||
app->rgb_mod_rainbow_stage++;
|
||||
}
|
||||
break;
|
||||
//from blue to violet
|
||||
case 5:
|
||||
app->rgb_mod_rainbow_red += app->settings.rgb_mod_rainbow_step;
|
||||
if(app->rgb_mod_rainbow_red >= 255) {
|
||||
app->rgb_mod_rainbow_red = 255;
|
||||
app->rgb_mod_rainbow_stage++;
|
||||
}
|
||||
break;
|
||||
//from violet to red
|
||||
case 6:
|
||||
app->rgb_mod_rainbow_blue -= app->settings.rgb_mod_rainbow_step;
|
||||
if(app->rgb_mod_rainbow_blue <= 0) {
|
||||
app->rgb_mod_rainbow_blue = 0;
|
||||
app->rgb_mod_rainbow_stage = 1;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if(app->rgb_mod_rainbow_red >= 255) {
|
||||
app->rgb_mod_rainbow_red = 1;
|
||||
app->rgb_mod_rainbow_green += app->settings.rgb_mod_rainbow_step;
|
||||
rgb_mod_rainbow_update(
|
||||
app->rgb_mod_rainbow_red,
|
||||
app->rgb_mod_rainbow_green,
|
||||
app->rgb_mod_rainbow_blue,
|
||||
app->settings.display_brightness);
|
||||
}
|
||||
|
||||
if(app->rgb_mod_rainbow_green >= 255) {
|
||||
app->rgb_mod_rainbow_green = 1;
|
||||
app->rgb_mod_rainbow_blue += app->settings.rgb_mod_rainbow_step;
|
||||
}
|
||||
|
||||
if(app->rgb_mod_rainbow_blue >= 255) {
|
||||
app->rgb_mod_rainbow_blue = 1;
|
||||
}
|
||||
|
||||
rgb_backlight_set_custom_color(app->rgb_mod_rainbow_red, 0);
|
||||
rgb_backlight_set_custom_color(app->rgb_mod_rainbow_green, 1);
|
||||
rgb_backlight_set_custom_color(app->rgb_mod_rainbow_blue, 2);
|
||||
|
||||
FURI_LOG_I("RAINBOW", "RED %u", app->rgb_mod_rainbow_red);
|
||||
FURI_LOG_I("RAINBOW", "GREEN %u", app->rgb_mod_rainbow_green);
|
||||
FURI_LOG_I("RAINBOW", "BLUE %u", app->rgb_mod_rainbow_blue);
|
||||
|
||||
app->rgb_mod_rainbow_red += app->settings.rgb_mod_rainbow_step;
|
||||
// if rgb_mode_rainbow_mode is ..... do another effect
|
||||
// if(app->settings.rgb_mod_rainbow_mode == 2) {
|
||||
// }
|
||||
}
|
||||
|
||||
// END OF RGB MOD RAINBOW SECTION
|
||||
// --- END OF RGB MOD RAINBOW SECTION ---
|
||||
|
||||
// message processing
|
||||
static void notification_process_notification_message(
|
||||
@@ -279,8 +324,10 @@ static void notification_process_notification_message(
|
||||
&app->display,
|
||||
notification_message->data.led.value * display_brightness_setting);
|
||||
reset_mask |= reset_display_mask;
|
||||
|
||||
//start rgb_mod_rainbow_timer when display backlight is ON and all corresponding settings is ON too
|
||||
rgb_mod_rainbow_timer_control(app);
|
||||
rgb_mod_rainbow_timer_starter(app);
|
||||
|
||||
} else {
|
||||
reset_mask &= ~reset_display_mask;
|
||||
notification_reset_notification_led_layer(&app->display);
|
||||
@@ -617,25 +664,23 @@ static NotificationApp* notification_app_alloc(void) {
|
||||
furi_pubsub_subscribe(app->event_record, input_event_callback, app);
|
||||
notification_message(app, &sequence_display_backlight_on);
|
||||
|
||||
//RGB MOD SECTION
|
||||
// --- RGB MOD INIT SETTINGS SECTION ---
|
||||
|
||||
//rgb mod
|
||||
app->settings.rgb_mod_installed = false;
|
||||
|
||||
//rgb mod rainbow init settings
|
||||
app->settings.rgb_mod_rainbow = false;
|
||||
app->settings.rgb_mod_rainbow_speed_ms = 1000;
|
||||
app->settings.rgb_mod_rainbow_step = 1;
|
||||
app->rgb_mod_rainbow_red = 1;
|
||||
app->rgb_mod_rainbow_green = 1;
|
||||
app->rgb_mod_rainbow_blue = 1;
|
||||
app->settings.rgb_mod_rainbow_mode = 0;
|
||||
app->settings.rgb_mod_rainbow_speed_ms = 100;
|
||||
app->settings.rgb_mod_rainbow_step = 5;
|
||||
app->rgb_mod_rainbow_red = 255;
|
||||
app->rgb_mod_rainbow_green = 0;
|
||||
app->rgb_mod_rainbow_blue = 0;
|
||||
app->rgb_mod_rainbow_stage = 1;
|
||||
|
||||
//define rgb_mod_rainbow_timer and they callback
|
||||
app->rgb_mod_rainbow_timer =
|
||||
furi_timer_alloc(rgb_mod_rainbow_timer_callback, FuriTimerTypePeriodic, app);
|
||||
return app;
|
||||
|
||||
// END OF RGB SECTION
|
||||
// --- END OF RGB MOD INIT SETTINGS SECTION ---
|
||||
}
|
||||
|
||||
static void notification_storage_callback(const void* message, void* context) {
|
||||
@@ -658,8 +703,8 @@ static void notification_apply_settings(NotificationApp* app) {
|
||||
}
|
||||
|
||||
notification_apply_lcd_contrast(app);
|
||||
// on system init start rgb_mod_rainbow_timer if they ON in config
|
||||
rgb_mod_rainbow_timer_control(app);
|
||||
//start rgb_mod_rainbow_timer on system init if they ON in config
|
||||
rgb_mod_rainbow_timer_starter(app);
|
||||
}
|
||||
|
||||
static void notification_init_settings(NotificationApp* app) {
|
||||
@@ -702,10 +747,10 @@ int32_t notification_srv(void* p) {
|
||||
notification_process_internal_message(app, &message);
|
||||
break;
|
||||
case SaveSettingsMessage:
|
||||
notification_save_settings(app);
|
||||
rgb_backlight_save_settings();
|
||||
//call rgb_mod_timer_control (start or stop) when we save settings
|
||||
rgb_mod_rainbow_timer_control(app);
|
||||
rgb_mod_rainbow_timer_starter(app);
|
||||
rgb_backlight_save_settings();
|
||||
notification_save_settings(app);
|
||||
break;
|
||||
case LoadSettingsMessage:
|
||||
notification_load_settings(app);
|
||||
|
||||
@@ -44,11 +44,12 @@ typedef struct {
|
||||
uint32_t display_off_delay_ms;
|
||||
int8_t contrast;
|
||||
bool vibro_on;
|
||||
|
||||
/// --- RGB MOD SETTINGS SECTION ---
|
||||
bool rgb_mod_installed;
|
||||
bool rgb_mod_rainbow;
|
||||
uint32_t rgb_mod_rainbow_mode;
|
||||
uint32_t rgb_mod_rainbow_speed_ms;
|
||||
uint16_t rgb_mod_rainbow_step;
|
||||
/// --- END OF RGB MOD SETTINGS SECTION ---
|
||||
|
||||
} NotificationSettings;
|
||||
|
||||
@@ -61,13 +62,15 @@ struct NotificationApp {
|
||||
NotificationLedLayer led[NOTIFICATION_LED_COUNT];
|
||||
uint8_t display_led_lock;
|
||||
|
||||
// rainbow mode section
|
||||
// --- RGB RAINBOW MODE VARIABLES SECTION ---
|
||||
FuriTimer* rgb_mod_rainbow_timer;
|
||||
uint16_t rgb_mod_rainbow_red;
|
||||
uint16_t rgb_mod_rainbow_green;
|
||||
uint16_t rgb_mod_rainbow_blue;
|
||||
|
||||
int16_t rgb_mod_rainbow_red;
|
||||
int16_t rgb_mod_rainbow_green;
|
||||
int16_t rgb_mod_rainbow_blue;
|
||||
uint8_t rgb_mod_rainbow_stage;
|
||||
// --- ENd OF RGB RAINBOW MODE VARIABLES SECTION ---
|
||||
|
||||
NotificationSettings settings;
|
||||
};
|
||||
|
||||
void notification_message_save_settings(NotificationApp* app);
|
||||
void notification_message_save_settings(NotificationApp* app);
|
||||
@@ -116,44 +116,36 @@ const char* const rgb_mod_text[RGB_MOD_COUNT] = {
|
||||
};
|
||||
const bool rgb_mod_value[RGB_MOD_COUNT] = {false, true};
|
||||
|
||||
#define RGB_MOD_RAINBOW_COUNT 2
|
||||
const char* const rgb_mod_rainbow_text[RGB_MOD_RAINBOW_COUNT] = {
|
||||
#define RGB_MOD_RAINBOW_MODE_COUNT 2
|
||||
const char* const rgb_mod_rainbow_mode_text[RGB_MOD_RAINBOW_MODE_COUNT] = {
|
||||
"OFF",
|
||||
"ON",
|
||||
"Rainbow",
|
||||
};
|
||||
const bool rgb_mod_rainbow_value[RGB_MOD_RAINBOW_COUNT] = {false, true};
|
||||
const uint32_t rgb_mod_rainbow_mode_value[RGB_MOD_RAINBOW_MODE_COUNT] = {0, 1};
|
||||
|
||||
#define RGB_MOD_RAINBOW_SPEED_COUNT 14
|
||||
#define RGB_MOD_RAINBOW_SPEED_COUNT 20
|
||||
const char* const rgb_mod_rainbow_speed_text[RGB_MOD_RAINBOW_SPEED_COUNT] = {
|
||||
"0.1s",
|
||||
"0.2s",
|
||||
"0.3s",
|
||||
"0.4s",
|
||||
"0.6s",
|
||||
"0.8s",
|
||||
"1s",
|
||||
"1.2s",
|
||||
"1.4s",
|
||||
"1.6s",
|
||||
"1.8s",
|
||||
"2s",
|
||||
"2.5s",
|
||||
"3s"};
|
||||
const uint32_t rgb_mod_rainbow_speed_value[RGB_MOD_RAINBOW_SPEED_COUNT] =
|
||||
{100, 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000, 2500, 3000};
|
||||
"0.1s", "0.2s", "0.3s", "0.4s", "0.5s", "0.6s", "0.7", "0.8", "0.9", "1s",
|
||||
"1.1s", "1.2s", "1.3s", "1.4s", "1.5s", "1.6s", "1.7s", "1.8s", "1.9s", "2s"};
|
||||
const uint32_t rgb_mod_rainbow_speed_value[RGB_MOD_RAINBOW_SPEED_COUNT] = {
|
||||
100, 200, 300, 400, 500, 600, 700, 800, 900, 1000,
|
||||
1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000};
|
||||
|
||||
#define RGB_MOD_RAINBOW_STEP_COUNT 7
|
||||
#define RGB_MOD_RAINBOW_STEP_COUNT 10
|
||||
const char* const rgb_mod_rainbow_step_text[RGB_MOD_RAINBOW_SPEED_COUNT] = {
|
||||
"1",
|
||||
"2",
|
||||
"3",
|
||||
"4",
|
||||
"5",
|
||||
"6",
|
||||
"7",
|
||||
"8",
|
||||
"9",
|
||||
"10",
|
||||
"15",
|
||||
"20",
|
||||
};
|
||||
};
|
||||
const uint32_t rgb_mod_rainbow_step_value[RGB_MOD_RAINBOW_STEP_COUNT] =
|
||||
{1, 2, 5, 7, 10, 15, 20};
|
||||
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
|
||||
|
||||
typedef enum {
|
||||
MainViewId,
|
||||
@@ -234,8 +226,25 @@ static void rgb_mod_installed_changed(VariableItem* item) {
|
||||
static void rgb_mod_rainbow_changed(VariableItem* item) {
|
||||
NotificationAppSettings* app = variable_item_get_context(item);
|
||||
uint8_t index = variable_item_get_current_value_index(item);
|
||||
variable_item_set_current_value_text(item, rgb_mod_rainbow_text[index]);
|
||||
app->notification->settings.rgb_mod_rainbow = rgb_mod_rainbow_value[index];
|
||||
variable_item_set_current_value_text(item, rgb_mod_rainbow_mode_text[index]);
|
||||
app->notification->settings.rgb_mod_rainbow_mode = rgb_mod_rainbow_mode_value[index];
|
||||
|
||||
// Lock/Unlock color settings if rainbow mode Enabled/Disabled
|
||||
for(int i = 0; i < 4; i++) {
|
||||
VariableItem* t_item = variable_item_list_get(app->variable_item_list_rgb, i);
|
||||
if(app->notification->settings.rgb_mod_rainbow_mode > 0) {
|
||||
variable_item_set_locked(t_item, true, "Rainbow mode\nenabled!");
|
||||
} else {
|
||||
variable_item_set_locked(t_item, false, "Rainbow mode\nenabled!");
|
||||
}
|
||||
}
|
||||
//save settings and start/stop rgb_mod_rainbow_timer
|
||||
notification_message_save_settings(app->notification);
|
||||
|
||||
// restore saved rgb backlight settings if we switch_off rainbow mode
|
||||
if(app->notification->settings.rgb_mod_rainbow_mode == 0) {
|
||||
rgb_backlight_update(app->notification->settings.display_brightness * 255, true);
|
||||
}
|
||||
}
|
||||
|
||||
static void rgb_mod_rainbow_speed_changed(VariableItem* item) {
|
||||
@@ -243,6 +252,8 @@ static void rgb_mod_rainbow_speed_changed(VariableItem* item) {
|
||||
uint8_t index = variable_item_get_current_value_index(item);
|
||||
variable_item_set_current_value_text(item, rgb_mod_rainbow_speed_text[index]);
|
||||
app->notification->settings.rgb_mod_rainbow_speed_ms = rgb_mod_rainbow_speed_value[index];
|
||||
//use message for restart rgb_mod_rainbow_timer with new delay
|
||||
notification_message_save_settings(app->notification);
|
||||
}
|
||||
|
||||
static void rgb_mod_rainbow_step_changed(VariableItem* item) {
|
||||
@@ -316,7 +327,8 @@ void variable_item_list_enter_callback(void* context, uint32_t index) {
|
||||
NotificationAppSettings* app = context;
|
||||
|
||||
if(((app->notification->settings.rgb_mod_installed) ||
|
||||
(furi_hal_rtc_is_flag_set(FuriHalRtcFlagDebug))) && (index == 0)) {
|
||||
(furi_hal_rtc_is_flag_set(FuriHalRtcFlagDebug))) &&
|
||||
(index == 0)) {
|
||||
view_dispatcher_switch_to_view(app->view_dispatcher, RGBViewId);
|
||||
}
|
||||
}
|
||||
@@ -405,7 +417,7 @@ static NotificationAppSettings* alloc_settings(void) {
|
||||
variable_item_set_current_value_text(item, vibro_text[value_index]);
|
||||
}
|
||||
|
||||
// RGB settings view
|
||||
// --- RGB SETTINGS VIEW ---
|
||||
app->variable_item_list_rgb = variable_item_list_alloc();
|
||||
View* view_rgb = variable_item_list_get_view(app->variable_item_list_rgb);
|
||||
// set callback for OK pressed in rgb_settings_menu
|
||||
@@ -436,7 +448,7 @@ static NotificationAppSettings* alloc_settings(void) {
|
||||
variable_item_set_current_value_index(item, value_index);
|
||||
variable_item_set_current_value_text(item, rgb_backlight_get_color_text(value_index));
|
||||
variable_item_set_locked(
|
||||
item, app->notification->settings.rgb_mod_rainbow, "Rainbow mode\nenabled!");
|
||||
item, (app->notification->settings.rgb_mod_rainbow_mode > 0), "Rainbow mode\nenabled!");
|
||||
temp_item = item;
|
||||
|
||||
// Custom Color - REFACTOR THIS
|
||||
@@ -448,7 +460,7 @@ static NotificationAppSettings* alloc_settings(void) {
|
||||
snprintf(valtext, sizeof(valtext), "%d", value_index);
|
||||
variable_item_set_current_value_text(item, valtext);
|
||||
variable_item_set_locked(
|
||||
item, app->notification->settings.rgb_mod_rainbow, "Rainbow mode\nenabled!");
|
||||
item, (app->notification->settings.rgb_mod_rainbow_mode > 0), "Rainbow mode\nenabled!");
|
||||
|
||||
item = variable_item_list_add(
|
||||
app->variable_item_list_rgb, "Custom Green", 255, color_set_custom_green, app);
|
||||
@@ -457,7 +469,7 @@ static NotificationAppSettings* alloc_settings(void) {
|
||||
snprintf(valtext, sizeof(valtext), "%d", value_index);
|
||||
variable_item_set_current_value_text(item, valtext);
|
||||
variable_item_set_locked(
|
||||
item, app->notification->settings.rgb_mod_rainbow, "Rainbow mode\nenabled!");
|
||||
item, (app->notification->settings.rgb_mod_rainbow_mode > 0), "Rainbow mode\nenabled!");
|
||||
|
||||
item = variable_item_list_add(
|
||||
app->variable_item_list_rgb, "Custom Blue", 255, color_set_custom_blue, app);
|
||||
@@ -466,20 +478,21 @@ static NotificationAppSettings* alloc_settings(void) {
|
||||
snprintf(valtext, sizeof(valtext), "%d", value_index);
|
||||
variable_item_set_current_value_text(item, valtext);
|
||||
variable_item_set_locked(
|
||||
item, app->notification->settings.rgb_mod_rainbow, "Rainbow mode\nenabled!");
|
||||
// End of RGB
|
||||
item, (app->notification->settings.rgb_mod_rainbow_mode > 0), "Rainbow mode\nenabled!");
|
||||
|
||||
// Rainbow (based on Willy-JL idea) settings
|
||||
item = variable_item_list_add(
|
||||
app->variable_item_list_rgb,
|
||||
"Rainbow mode",
|
||||
RGB_MOD_RAINBOW_COUNT,
|
||||
RGB_MOD_RAINBOW_MODE_COUNT,
|
||||
rgb_mod_rainbow_changed,
|
||||
app);
|
||||
value_index = value_index_bool(
|
||||
app->notification->settings.rgb_mod_rainbow, rgb_mod_rainbow_value, RGB_MOD_RAINBOW_COUNT);
|
||||
value_index = value_index_uint32(
|
||||
app->notification->settings.rgb_mod_rainbow_mode,
|
||||
rgb_mod_rainbow_mode_value,
|
||||
RGB_MOD_RAINBOW_MODE_COUNT);
|
||||
variable_item_set_current_value_index(item, value_index);
|
||||
variable_item_set_current_value_text(item, rgb_mod_rainbow_text[value_index]);
|
||||
variable_item_set_current_value_text(item, rgb_mod_rainbow_mode_text[value_index]);
|
||||
|
||||
item = variable_item_list_add(
|
||||
app->variable_item_list_rgb,
|
||||
@@ -507,7 +520,7 @@ static NotificationAppSettings* alloc_settings(void) {
|
||||
variable_item_set_current_value_index(item, value_index);
|
||||
variable_item_set_current_value_text(item, rgb_mod_rainbow_step_text[value_index]);
|
||||
|
||||
// End of Rainbow settings
|
||||
// --- End of RGB SETTING VIEW ---
|
||||
|
||||
app->view_dispatcher = view_dispatcher_alloc();
|
||||
view_dispatcher_attach_to_gui(app->view_dispatcher, app->gui, ViewDispatcherTypeFullscreen);
|
||||
@@ -542,4 +555,4 @@ int32_t notification_settings_app(void* p) {
|
||||
|
||||
free_settings(app);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -215,3 +215,15 @@ void rgb_backlight_update(uint8_t brightness, bool bypass) {
|
||||
|
||||
SK6805_update();
|
||||
}
|
||||
|
||||
// --- RGB MOD RAINBOW ---
|
||||
void rgb_mod_rainbow_update(uint8_t red, uint8_t green, uint8_t blue, float brightness) {
|
||||
for(uint8_t i = 0; i < SK6805_get_led_count(); i++) {
|
||||
uint8_t r = red * (brightness);
|
||||
uint8_t g = green * (brightness);
|
||||
uint8_t b = blue * (brightness);
|
||||
SK6805_set_led_color(i, r, g, b);
|
||||
}
|
||||
SK6805_update();
|
||||
}
|
||||
// --- END OF RGB MOD RAINBOW ---
|
||||
|
||||
@@ -89,3 +89,6 @@ uint8_t rgb_backlight_get_color_count(void);
|
||||
* @return Указатель на строку с названием цвета
|
||||
*/
|
||||
const char* rgb_backlight_get_color_text(uint8_t index);
|
||||
|
||||
// set custom color to display;
|
||||
void rgb_mod_rainbow_update(uint8_t red, uint8_t green, uint8_t blue, float brightness);
|
||||
|
||||
Reference in New Issue
Block a user