mirror of
https://github.com/CalcProgrammer1/OpenRGB.git
synced 2025-12-24 07:47:49 -05:00
453 lines
17 KiB
C++
453 lines
17 KiB
C++
/*---------------------------------------------------------*\
|
|
| RGBController_LightSalt.cpp |
|
|
| |
|
|
| RGBController for LightSalt Peripherals |
|
|
| |
|
|
| James Buren (braewoods) 23 Jul 2024 |
|
|
| |
|
|
| This file is part of the OpenRGB project |
|
|
| SPDX-License-Identifier: GPL-2.0-only |
|
|
\*---------------------------------------------------------*/
|
|
|
|
#include <cstring>
|
|
#include "RGBControllerKeyNames.h"
|
|
#include "RGBController_LightSalt.h"
|
|
|
|
static RGBColor DeflectColor(bool deflection, RGBColor color)
|
|
{
|
|
if(deflection)
|
|
{
|
|
int old_red = RGBGetRValue(color);
|
|
int old_grn = RGBGetGValue(color);
|
|
int old_blu = RGBGetBValue(color);
|
|
int new_red = old_red + ((255 - old_red) * 50 / 100);
|
|
int new_grn = old_grn + ((255 - old_grn) * 50 / 100);
|
|
int new_blu = old_blu + ((255 - old_blu) * 50 / 100);
|
|
return ToRGBColor(new_red, new_grn, new_blu);
|
|
}
|
|
else
|
|
{
|
|
return color;
|
|
}
|
|
}
|
|
|
|
RGBController_LightSalt::~RGBController_LightSalt()
|
|
{
|
|
/*---------------------------------------------------------*\
|
|
| Delete the matrix map |
|
|
\*---------------------------------------------------------*/
|
|
for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++)
|
|
{
|
|
if(zones[zone_index].matrix_map != nullptr)
|
|
{
|
|
delete zones[zone_index].matrix_map;
|
|
}
|
|
}
|
|
|
|
delete controller;
|
|
}
|
|
|
|
void RGBController_LightSalt::SetupData(LightSaltController* controller_ptr)
|
|
{
|
|
controller = controller_ptr;
|
|
name = "LightSalt " + table.device.name;
|
|
vendor = "LightSalt";
|
|
type = table.device.type;
|
|
description = "LightSalt " + table.device.name + " (" + controller->GetDeviceModel() + ")";
|
|
location = controller->GetDeviceLocation();
|
|
serial = controller->GetSerial();
|
|
version = controller->GetFirmwareVersion();
|
|
}
|
|
|
|
void RGBController_LightSalt::SetupModes()
|
|
{
|
|
{
|
|
mode mode;
|
|
mode.name = "Custom";
|
|
mode.value = LIGHTSALT_MODE_CUSTOM;
|
|
mode.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE;
|
|
mode.brightness_min = LIGHTSALT_BRIGHTNESS_MINIMUM;
|
|
mode.brightness_max = LIGHTSALT_BRIGHTNESS_MAXIMUM;
|
|
mode.brightness = LIGHTSALT_BRIGHTNESS_DEFAULT;
|
|
mode.color_mode = MODE_COLORS_PER_LED;
|
|
modes.push_back(mode);
|
|
}
|
|
|
|
{
|
|
mode mode;
|
|
mode.name = "Reactive Point";
|
|
mode.value = LIGHTSALT_MODE_POINT;
|
|
mode.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
|
|
mode.speed_min = LIGHTSALT_SPEED_MINIMUM;
|
|
mode.speed_max = LIGHTSALT_SPEED_MAXIMUM;
|
|
mode.speed = LIGHTSALT_SPEED_DEFAULT;
|
|
mode.brightness_min = LIGHTSALT_BRIGHTNESS_MINIMUM;
|
|
mode.brightness_max = LIGHTSALT_BRIGHTNESS_MAXIMUM;
|
|
mode.brightness = LIGHTSALT_BRIGHTNESS_DEFAULT;
|
|
mode.color_mode = MODE_COLORS_NONE;
|
|
modes.push_back(mode);
|
|
}
|
|
|
|
{
|
|
mode mode;
|
|
mode.name = "Reactive Area";
|
|
mode.value = LIGHTSALT_MODE_AREA;
|
|
mode.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
|
|
mode.speed_min = LIGHTSALT_SPEED_MINIMUM;
|
|
mode.speed_max = LIGHTSALT_SPEED_MAXIMUM;
|
|
mode.speed = LIGHTSALT_SPEED_DEFAULT;
|
|
mode.brightness_min = LIGHTSALT_BRIGHTNESS_MINIMUM;
|
|
mode.brightness_max = LIGHTSALT_BRIGHTNESS_MAXIMUM;
|
|
mode.brightness = LIGHTSALT_BRIGHTNESS_DEFAULT;
|
|
mode.color_mode = MODE_COLORS_NONE;
|
|
modes.push_back(mode);
|
|
}
|
|
|
|
{
|
|
mode mode;
|
|
mode.name = "Reactive Collapse";
|
|
mode.value = LIGHTSALT_MODE_COLLAPSE;
|
|
mode.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
|
|
mode.speed_min = LIGHTSALT_SPEED_MINIMUM;
|
|
mode.speed_max = LIGHTSALT_SPEED_MAXIMUM;
|
|
mode.speed = LIGHTSALT_SPEED_DEFAULT;
|
|
mode.brightness_min = LIGHTSALT_BRIGHTNESS_MINIMUM;
|
|
mode.brightness_max = LIGHTSALT_BRIGHTNESS_MAXIMUM;
|
|
mode.brightness = LIGHTSALT_BRIGHTNESS_DEFAULT;
|
|
mode.color_mode = MODE_COLORS_NONE;
|
|
modes.push_back(mode);
|
|
}
|
|
|
|
{
|
|
mode mode;
|
|
mode.name = "Reactive Expand";
|
|
mode.value = LIGHTSALT_MODE_EXPAND;
|
|
mode.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
|
|
mode.speed_min = LIGHTSALT_SPEED_MINIMUM;
|
|
mode.speed_max = LIGHTSALT_SPEED_MAXIMUM;
|
|
mode.speed = LIGHTSALT_SPEED_DEFAULT;
|
|
mode.brightness_min = LIGHTSALT_BRIGHTNESS_MINIMUM;
|
|
mode.brightness_max = LIGHTSALT_BRIGHTNESS_MAXIMUM;
|
|
mode.brightness = LIGHTSALT_BRIGHTNESS_DEFAULT;
|
|
mode.color_mode = MODE_COLORS_NONE;
|
|
modes.push_back(mode);
|
|
}
|
|
|
|
{
|
|
mode mode;
|
|
mode.name = "Reactive Explode";
|
|
mode.value = LIGHTSALT_MODE_EXPLODE;
|
|
mode.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
|
|
mode.speed_min = LIGHTSALT_SPEED_MINIMUM;
|
|
mode.speed_max = LIGHTSALT_SPEED_MAXIMUM;
|
|
mode.speed = LIGHTSALT_SPEED_DEFAULT;
|
|
mode.brightness_min = LIGHTSALT_BRIGHTNESS_MINIMUM;
|
|
mode.brightness_max = LIGHTSALT_BRIGHTNESS_MAXIMUM;
|
|
mode.brightness = LIGHTSALT_BRIGHTNESS_DEFAULT;
|
|
mode.color_mode = MODE_COLORS_NONE;
|
|
modes.push_back(mode);
|
|
}
|
|
|
|
{
|
|
mode mode;
|
|
mode.name = "Reactive Dart";
|
|
mode.value = LIGHTSALT_MODE_DART;
|
|
mode.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
|
|
mode.speed_min = LIGHTSALT_SPEED_MINIMUM;
|
|
mode.speed_max = LIGHTSALT_SPEED_MAXIMUM;
|
|
mode.speed = LIGHTSALT_SPEED_DEFAULT;
|
|
mode.brightness_min = LIGHTSALT_BRIGHTNESS_MINIMUM;
|
|
mode.brightness_max = LIGHTSALT_BRIGHTNESS_MAXIMUM;
|
|
mode.brightness = LIGHTSALT_BRIGHTNESS_DEFAULT;
|
|
mode.color_mode = MODE_COLORS_NONE;
|
|
modes.push_back(mode);
|
|
}
|
|
|
|
{
|
|
mode mode;
|
|
mode.name = "Reactive Flame";
|
|
mode.value = LIGHTSALT_MODE_FLAME;
|
|
mode.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
|
|
mode.speed_min = LIGHTSALT_SPEED_MINIMUM;
|
|
mode.speed_max = LIGHTSALT_SPEED_MAXIMUM;
|
|
mode.speed = LIGHTSALT_SPEED_DEFAULT;
|
|
mode.brightness_min = LIGHTSALT_BRIGHTNESS_MINIMUM;
|
|
mode.brightness_max = LIGHTSALT_BRIGHTNESS_MAXIMUM;
|
|
mode.brightness = LIGHTSALT_BRIGHTNESS_DEFAULT;
|
|
mode.color_mode = MODE_COLORS_NONE;
|
|
modes.push_back(mode);
|
|
}
|
|
|
|
{
|
|
mode mode;
|
|
mode.name = "Reactive Laser";
|
|
mode.value = LIGHTSALT_MODE_LASER;
|
|
mode.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
|
|
mode.speed_min = LIGHTSALT_SPEED_MINIMUM;
|
|
mode.speed_max = LIGHTSALT_SPEED_MAXIMUM;
|
|
mode.speed = LIGHTSALT_SPEED_DEFAULT;
|
|
mode.brightness_min = LIGHTSALT_BRIGHTNESS_MINIMUM;
|
|
mode.brightness_max = LIGHTSALT_BRIGHTNESS_MAXIMUM;
|
|
mode.brightness = LIGHTSALT_BRIGHTNESS_DEFAULT;
|
|
mode.color_mode = MODE_COLORS_NONE;
|
|
modes.push_back(mode);
|
|
}
|
|
|
|
{
|
|
mode mode;
|
|
mode.name = "Breathing";
|
|
mode.value = LIGHTSALT_MODE_BREATHING;
|
|
mode.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_HV | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
|
|
mode.speed_min = LIGHTSALT_SPEED_MINIMUM;
|
|
mode.speed_max = LIGHTSALT_SPEED_MAXIMUM;
|
|
mode.speed = LIGHTSALT_SPEED_DEFAULT;
|
|
mode.direction = MODE_DIRECTION_HORIZONTAL;
|
|
mode.brightness_min = LIGHTSALT_BRIGHTNESS_MINIMUM;
|
|
mode.brightness_max = LIGHTSALT_BRIGHTNESS_MAXIMUM;
|
|
mode.brightness = LIGHTSALT_BRIGHTNESS_DEFAULT;
|
|
mode.color_mode = MODE_COLORS_NONE;
|
|
modes.push_back(mode);
|
|
}
|
|
|
|
{
|
|
mode mode;
|
|
mode.name = "Tricolor Radar";
|
|
mode.value = LIGHTSALT_MODE_TRICOLOR_RADAR;
|
|
mode.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
|
|
mode.speed_min = LIGHTSALT_SPEED_MINIMUM;
|
|
mode.speed_max = LIGHTSALT_SPEED_MAXIMUM;
|
|
mode.speed = LIGHTSALT_SPEED_DEFAULT;
|
|
mode.direction = MODE_DIRECTION_LEFT;
|
|
mode.brightness_min = LIGHTSALT_BRIGHTNESS_MINIMUM;
|
|
mode.brightness_max = LIGHTSALT_BRIGHTNESS_MAXIMUM;
|
|
mode.brightness = LIGHTSALT_BRIGHTNESS_DEFAULT;
|
|
mode.color_mode = MODE_COLORS_NONE;
|
|
modes.push_back(mode);
|
|
}
|
|
|
|
{
|
|
mode mode;
|
|
mode.name = "Wheel 1";
|
|
mode.value = LIGHTSALT_MODE_WHEEL_1;
|
|
mode.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
|
|
mode.speed_min = LIGHTSALT_SPEED_MINIMUM;
|
|
mode.speed_max = LIGHTSALT_SPEED_MAXIMUM;
|
|
mode.speed = LIGHTSALT_SPEED_DEFAULT;
|
|
mode.direction = MODE_DIRECTION_LEFT;
|
|
mode.brightness_min = LIGHTSALT_BRIGHTNESS_MINIMUM;
|
|
mode.brightness_max = LIGHTSALT_BRIGHTNESS_MAXIMUM;
|
|
mode.brightness = LIGHTSALT_BRIGHTNESS_DEFAULT;
|
|
mode.color_mode = MODE_COLORS_NONE;
|
|
modes.push_back(mode);
|
|
}
|
|
|
|
{
|
|
mode mode;
|
|
mode.name = "Wheel 2";
|
|
mode.value = LIGHTSALT_MODE_WHEEL_2;
|
|
mode.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
|
|
mode.speed_min = LIGHTSALT_SPEED_MINIMUM;
|
|
mode.speed_max = LIGHTSALT_SPEED_MAXIMUM;
|
|
mode.speed = LIGHTSALT_SPEED_DEFAULT;
|
|
mode.direction = MODE_DIRECTION_LEFT;
|
|
mode.brightness_min = LIGHTSALT_BRIGHTNESS_MINIMUM;
|
|
mode.brightness_max = LIGHTSALT_BRIGHTNESS_MAXIMUM;
|
|
mode.brightness = LIGHTSALT_BRIGHTNESS_DEFAULT;
|
|
mode.color_mode = MODE_COLORS_NONE;
|
|
modes.push_back(mode);
|
|
}
|
|
|
|
{
|
|
mode mode;
|
|
mode.name = "Wave 1";
|
|
mode.value = LIGHTSALT_MODE_WAVE_1;
|
|
mode.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
|
|
mode.speed_min = LIGHTSALT_SPEED_MINIMUM;
|
|
mode.speed_max = LIGHTSALT_SPEED_MAXIMUM;
|
|
mode.speed = LIGHTSALT_SPEED_DEFAULT;
|
|
mode.direction = MODE_DIRECTION_LEFT;
|
|
mode.brightness_min = LIGHTSALT_BRIGHTNESS_MINIMUM;
|
|
mode.brightness_max = LIGHTSALT_BRIGHTNESS_MAXIMUM;
|
|
mode.brightness = LIGHTSALT_BRIGHTNESS_DEFAULT;
|
|
mode.color_mode = MODE_COLORS_NONE;
|
|
modes.push_back(mode);
|
|
}
|
|
|
|
{
|
|
mode mode;
|
|
mode.name = "Wave 2";
|
|
mode.value = LIGHTSALT_MODE_WAVE_2;
|
|
mode.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_UD | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
|
|
mode.speed_min = LIGHTSALT_SPEED_MINIMUM;
|
|
mode.speed_max = LIGHTSALT_SPEED_MAXIMUM;
|
|
mode.speed = LIGHTSALT_SPEED_DEFAULT;
|
|
mode.direction = MODE_DIRECTION_UP;
|
|
mode.brightness_min = LIGHTSALT_BRIGHTNESS_MINIMUM;
|
|
mode.brightness_max = LIGHTSALT_BRIGHTNESS_MAXIMUM;
|
|
mode.brightness = LIGHTSALT_BRIGHTNESS_DEFAULT;
|
|
mode.color_mode = MODE_COLORS_NONE;
|
|
modes.push_back(mode);
|
|
}
|
|
|
|
{
|
|
mode mode;
|
|
mode.name = "Wave 3";
|
|
mode.value = LIGHTSALT_MODE_WAVE_3;
|
|
mode.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_UD | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
|
|
mode.speed_min = LIGHTSALT_SPEED_MINIMUM;
|
|
mode.speed_max = LIGHTSALT_SPEED_MAXIMUM;
|
|
mode.speed = LIGHTSALT_SPEED_DEFAULT;
|
|
mode.direction = MODE_DIRECTION_UP;
|
|
mode.brightness_min = LIGHTSALT_BRIGHTNESS_MINIMUM;
|
|
mode.brightness_max = LIGHTSALT_BRIGHTNESS_MAXIMUM;
|
|
mode.brightness = LIGHTSALT_BRIGHTNESS_DEFAULT;
|
|
mode.color_mode = MODE_COLORS_NONE;
|
|
modes.push_back(mode);
|
|
}
|
|
|
|
{
|
|
mode mode;
|
|
mode.name = "Rainbow 1";
|
|
mode.value = LIGHTSALT_MODE_RAINBOW_1;
|
|
mode.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_HV | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
|
|
mode.speed_min = LIGHTSALT_SPEED_MINIMUM;
|
|
mode.speed_max = LIGHTSALT_SPEED_MAXIMUM;
|
|
mode.speed = LIGHTSALT_SPEED_DEFAULT;
|
|
mode.direction = MODE_DIRECTION_HORIZONTAL;
|
|
mode.brightness_min = LIGHTSALT_BRIGHTNESS_MINIMUM;
|
|
mode.brightness_max = LIGHTSALT_BRIGHTNESS_MAXIMUM;
|
|
mode.brightness = LIGHTSALT_BRIGHTNESS_DEFAULT;
|
|
mode.color_mode = MODE_COLORS_NONE;
|
|
modes.push_back(mode);
|
|
}
|
|
|
|
{
|
|
mode mode;
|
|
mode.name = "Rainbow 2";
|
|
mode.value = LIGHTSALT_MODE_RAINBOW_2;
|
|
mode.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
|
|
mode.speed_min = LIGHTSALT_SPEED_MINIMUM;
|
|
mode.speed_max = LIGHTSALT_SPEED_MAXIMUM;
|
|
mode.speed = LIGHTSALT_SPEED_DEFAULT;
|
|
mode.direction = MODE_DIRECTION_LEFT;
|
|
mode.brightness_min = LIGHTSALT_BRIGHTNESS_MINIMUM;
|
|
mode.brightness_max = LIGHTSALT_BRIGHTNESS_MAXIMUM;
|
|
mode.brightness = LIGHTSALT_BRIGHTNESS_DEFAULT;
|
|
mode.color_mode = MODE_COLORS_NONE;
|
|
modes.push_back(mode);
|
|
}
|
|
}
|
|
|
|
void RGBController_LightSalt::SetupZones()
|
|
{
|
|
{
|
|
zone zone;
|
|
zone.name = table.device.name;
|
|
zone.type = ZONE_TYPE_MATRIX;
|
|
zone.leds_min = table.led.count;
|
|
zone.leds_max = table.led.count;
|
|
zone.leds_count = table.led.count;
|
|
zone.matrix_map = new matrix_map_type;
|
|
zone.matrix_map->height = table.map.height;
|
|
zone.matrix_map->width = table.map.width;
|
|
zone.matrix_map->map = table.map.matrix;
|
|
zones.push_back(zone);
|
|
}
|
|
|
|
for(int led_idx = 0; led_idx < table.led.count; led_idx++)
|
|
{
|
|
led led;
|
|
led.name = table.led.names[led_idx];
|
|
leds.push_back(led);
|
|
}
|
|
|
|
{
|
|
zone zone;
|
|
zone.name = "Color Filter";
|
|
zone.type = ZONE_TYPE_SINGLE;
|
|
zone.leds_min = 1;
|
|
zone.leds_max = 1;
|
|
zone.leds_count = 1;
|
|
zone.matrix_map = NULL;
|
|
zones.push_back(zone);
|
|
}
|
|
|
|
{
|
|
led led;
|
|
led.name = "Color Filter";
|
|
leds.push_back(led);
|
|
}
|
|
|
|
SetupColors();
|
|
|
|
colors[colors.size() - 1] = ToRGBColor(0xFF, 0xFF, 0xFF);
|
|
}
|
|
|
|
void RGBController_LightSalt::ResizeZone(int /*zone*/, int /*new_size*/)
|
|
{
|
|
/*---------------------------------------------------------*\
|
|
| This device does not support resizing zones |
|
|
\*---------------------------------------------------------*/
|
|
}
|
|
|
|
void RGBController_LightSalt::DeviceUpdateColors(bool save)
|
|
{
|
|
int sets = table.led.sets;
|
|
int rows = table.led.rows;
|
|
int columns = table.led.columns;
|
|
|
|
RGBColor colors_data[LIGHTSALT_SETS_MAX][LIGHTSALT_ROWS_MAX][LIGHTSALT_COLUMNS_MAX];
|
|
memset(colors_data, 0x00, sizeof(colors_data));
|
|
|
|
for(int led_idx = 0; led_idx < table.led.count; led_idx++)
|
|
{
|
|
int index = table.led.indices[led_idx];
|
|
int deflection = table.led.deflections[led_idx];
|
|
int row = index / columns;
|
|
int column = index % columns;
|
|
RGBColor color = colors[led_idx];
|
|
|
|
for(int set_idx = 0; set_idx < sets; set_idx++)
|
|
{
|
|
colors_data[set_idx][row][column] = DeflectColor(deflection & (1 << set_idx), color);
|
|
}
|
|
}
|
|
|
|
controller->SetFilter(colors[colors.size() - 1]);
|
|
controller->SetColors((RGBColor*)colors_data, sets, rows, columns);
|
|
controller->ApplyColors(sets);
|
|
if(save)
|
|
{
|
|
controller->SaveColors(sets);
|
|
}
|
|
}
|
|
|
|
void RGBController_LightSalt::DeviceUpdateLEDs()
|
|
{
|
|
DeviceUpdateColors(false);
|
|
}
|
|
|
|
void RGBController_LightSalt::UpdateZoneLEDs(int /*zone*/)
|
|
{
|
|
DeviceUpdateLEDs();
|
|
}
|
|
|
|
void RGBController_LightSalt::UpdateSingleLED(int /*led*/)
|
|
{
|
|
DeviceUpdateLEDs();
|
|
}
|
|
|
|
void RGBController_LightSalt::DeviceUpdateMode()
|
|
{
|
|
const mode& mode = modes[active_mode];
|
|
|
|
controller->SetBrightness(mode.brightness);
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(25));
|
|
controller->SetMode(mode.value, mode.direction, mode.speed);
|
|
}
|
|
|
|
void RGBController_LightSalt::DeviceSaveMode()
|
|
{
|
|
DeviceUpdateColors(true);
|
|
}
|