Store name in ZalmanZSyncController to avoid setting it in detector
This commit is contained in:
parent
84c24e70c0
commit
4e96056ac4
4 changed files with 116 additions and 109 deletions
|
|
@ -24,156 +24,156 @@
|
||||||
|
|
||||||
RGBController_ZalmanZSync::RGBController_ZalmanZSync(ZalmanZSyncController* controller_ptr)
|
RGBController_ZalmanZSync::RGBController_ZalmanZSync(ZalmanZSyncController* controller_ptr)
|
||||||
{
|
{
|
||||||
controller = controller_ptr;
|
controller = controller_ptr;
|
||||||
|
|
||||||
name = "Zalman Z Sync Device";
|
name = controller->GetNameString();
|
||||||
vendor = "Zalman";
|
vendor = "Zalman";
|
||||||
description = "Zalman Z Sync Device";
|
description = "Zalman Z Sync Device";
|
||||||
type = DEVICE_TYPE_LEDSTRIP;
|
type = DEVICE_TYPE_LEDSTRIP;
|
||||||
version = controller->GetFirmwareString();
|
version = controller->GetFirmwareString();
|
||||||
location = controller->GetLocationString();
|
location = controller->GetLocationString();
|
||||||
serial = controller->GetSerialString();
|
serial = controller->GetSerialString();
|
||||||
|
|
||||||
mode Direct;
|
mode Direct;
|
||||||
Direct.name = "Direct";
|
Direct.name = "Direct";
|
||||||
Direct.value = 0xFFFF;
|
Direct.value = 0xFFFF;
|
||||||
Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR;
|
Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR;
|
||||||
Direct.color_mode = MODE_COLORS_PER_LED;
|
Direct.color_mode = MODE_COLORS_PER_LED;
|
||||||
modes.push_back(Direct);
|
modes.push_back(Direct);
|
||||||
|
|
||||||
mode RainbowWave;
|
mode RainbowWave;
|
||||||
RainbowWave.name = "Rainbow Wave";
|
RainbowWave.name = "Rainbow Wave";
|
||||||
RainbowWave.value = ZALMAN_Z_SYNC_MODE_RAINBOW_WAVE;
|
RainbowWave.value = ZALMAN_Z_SYNC_MODE_RAINBOW_WAVE;
|
||||||
RainbowWave.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR;
|
RainbowWave.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR;
|
||||||
RainbowWave.speed_min = ZALMAN_Z_SYNC_SPEED_SLOW;
|
RainbowWave.speed_min = ZALMAN_Z_SYNC_SPEED_SLOW;
|
||||||
RainbowWave.speed_max = ZALMAN_Z_SYNC_SPEED_FAST;
|
RainbowWave.speed_max = ZALMAN_Z_SYNC_SPEED_FAST;
|
||||||
RainbowWave.speed = ZALMAN_Z_SYNC_SPEED_MEDIUM;
|
RainbowWave.speed = ZALMAN_Z_SYNC_SPEED_MEDIUM;
|
||||||
RainbowWave.direction = MODE_DIRECTION_RIGHT;
|
RainbowWave.direction = MODE_DIRECTION_RIGHT;
|
||||||
RainbowWave.color_mode = MODE_COLORS_NONE;
|
RainbowWave.color_mode = MODE_COLORS_NONE;
|
||||||
modes.push_back(RainbowWave);
|
modes.push_back(RainbowWave);
|
||||||
|
|
||||||
mode ColorShift;
|
mode ColorShift;
|
||||||
ColorShift.name = "Color Shift";
|
ColorShift.name = "Color Shift";
|
||||||
ColorShift.value = ZALMAN_Z_SYNC_MODE_COLOR_SHIFT;
|
ColorShift.value = ZALMAN_Z_SYNC_MODE_COLOR_SHIFT;
|
||||||
ColorShift.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR;
|
ColorShift.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR;
|
||||||
ColorShift.colors_min = 2;
|
ColorShift.colors_min = 2;
|
||||||
ColorShift.colors_max = 2;
|
ColorShift.colors_max = 2;
|
||||||
ColorShift.speed_min = ZALMAN_Z_SYNC_SPEED_SLOW;
|
ColorShift.speed_min = ZALMAN_Z_SYNC_SPEED_SLOW;
|
||||||
ColorShift.speed_max = ZALMAN_Z_SYNC_SPEED_FAST;
|
ColorShift.speed_max = ZALMAN_Z_SYNC_SPEED_FAST;
|
||||||
ColorShift.speed = ZALMAN_Z_SYNC_SPEED_MEDIUM;
|
ColorShift.speed = ZALMAN_Z_SYNC_SPEED_MEDIUM;
|
||||||
ColorShift.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
ColorShift.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
||||||
ColorShift.colors.resize(2);
|
ColorShift.colors.resize(2);
|
||||||
modes.push_back(ColorShift);
|
modes.push_back(ColorShift);
|
||||||
|
|
||||||
mode ColorPulse;
|
mode ColorPulse;
|
||||||
ColorPulse.name = "Color Pulse";
|
ColorPulse.name = "Color Pulse";
|
||||||
ColorPulse.value = ZALMAN_Z_SYNC_MODE_COLOR_PULSE;
|
ColorPulse.value = ZALMAN_Z_SYNC_MODE_COLOR_PULSE;
|
||||||
ColorPulse.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR;
|
ColorPulse.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR;
|
||||||
ColorPulse.colors_min = 2;
|
ColorPulse.colors_min = 2;
|
||||||
ColorPulse.colors_max = 2;
|
ColorPulse.colors_max = 2;
|
||||||
ColorPulse.speed_min = ZALMAN_Z_SYNC_SPEED_SLOW;
|
ColorPulse.speed_min = ZALMAN_Z_SYNC_SPEED_SLOW;
|
||||||
ColorPulse.speed_max = ZALMAN_Z_SYNC_SPEED_FAST;
|
ColorPulse.speed_max = ZALMAN_Z_SYNC_SPEED_FAST;
|
||||||
ColorPulse.speed = ZALMAN_Z_SYNC_SPEED_MEDIUM;
|
ColorPulse.speed = ZALMAN_Z_SYNC_SPEED_MEDIUM;
|
||||||
ColorPulse.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
ColorPulse.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
||||||
ColorPulse.colors.resize(2);
|
ColorPulse.colors.resize(2);
|
||||||
modes.push_back(ColorPulse);
|
modes.push_back(ColorPulse);
|
||||||
|
|
||||||
mode ColorWave;
|
mode ColorWave;
|
||||||
ColorWave.name = "Color Wave";
|
ColorWave.name = "Color Wave";
|
||||||
ColorWave.value = ZALMAN_Z_SYNC_MODE_COLOR_WAVE;
|
ColorWave.value = ZALMAN_Z_SYNC_MODE_COLOR_WAVE;
|
||||||
ColorWave.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR;
|
ColorWave.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR;
|
||||||
ColorWave.colors_min = 2;
|
ColorWave.colors_min = 2;
|
||||||
ColorWave.colors_max = 2;
|
ColorWave.colors_max = 2;
|
||||||
ColorWave.speed_min = ZALMAN_Z_SYNC_SPEED_SLOW;
|
ColorWave.speed_min = ZALMAN_Z_SYNC_SPEED_SLOW;
|
||||||
ColorWave.speed_max = ZALMAN_Z_SYNC_SPEED_FAST;
|
ColorWave.speed_max = ZALMAN_Z_SYNC_SPEED_FAST;
|
||||||
ColorWave.speed = ZALMAN_Z_SYNC_SPEED_MEDIUM;
|
ColorWave.speed = ZALMAN_Z_SYNC_SPEED_MEDIUM;
|
||||||
ColorWave.direction = MODE_DIRECTION_RIGHT;
|
ColorWave.direction = MODE_DIRECTION_RIGHT;
|
||||||
ColorWave.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
ColorWave.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
||||||
ColorWave.colors.resize(2);
|
ColorWave.colors.resize(2);
|
||||||
modes.push_back(ColorWave);
|
modes.push_back(ColorWave);
|
||||||
|
|
||||||
mode Static;
|
mode Static;
|
||||||
Static.name = "Static";
|
Static.name = "Static";
|
||||||
Static.value = ZALMAN_Z_SYNC_MODE_STATIC;
|
Static.value = ZALMAN_Z_SYNC_MODE_STATIC;
|
||||||
Static.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR;
|
Static.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR;
|
||||||
Static.colors_min = 1;
|
Static.colors_min = 1;
|
||||||
Static.colors_max = 1;
|
Static.colors_max = 1;
|
||||||
Static.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
Static.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
||||||
Static.colors.resize(1);
|
Static.colors.resize(1);
|
||||||
modes.push_back(Static);
|
modes.push_back(Static);
|
||||||
|
|
||||||
mode Temperature;
|
mode Temperature;
|
||||||
Temperature.name = "Temperature";
|
Temperature.name = "Temperature";
|
||||||
Temperature.value = ZALMAN_Z_SYNC_MODE_TEMPERATURE;
|
Temperature.value = ZALMAN_Z_SYNC_MODE_TEMPERATURE;
|
||||||
Temperature.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR;
|
Temperature.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR;
|
||||||
Temperature.colors_min = 3;
|
Temperature.colors_min = 3;
|
||||||
Temperature.colors_max = 3;
|
Temperature.colors_max = 3;
|
||||||
Temperature.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
Temperature.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
||||||
Temperature.colors.resize(3);
|
Temperature.colors.resize(3);
|
||||||
modes.push_back(Temperature);
|
modes.push_back(Temperature);
|
||||||
|
|
||||||
mode Visor;
|
mode Visor;
|
||||||
Visor.name = "Visor";
|
Visor.name = "Visor";
|
||||||
Visor.value = ZALMAN_Z_SYNC_MODE_VISOR;
|
Visor.value = ZALMAN_Z_SYNC_MODE_VISOR;
|
||||||
Visor.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR;
|
Visor.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR;
|
||||||
Visor.colors_min = 2;
|
Visor.colors_min = 2;
|
||||||
Visor.colors_max = 2;
|
Visor.colors_max = 2;
|
||||||
Visor.speed_min = ZALMAN_Z_SYNC_SPEED_SLOW;
|
Visor.speed_min = ZALMAN_Z_SYNC_SPEED_SLOW;
|
||||||
Visor.speed_max = ZALMAN_Z_SYNC_SPEED_FAST;
|
Visor.speed_max = ZALMAN_Z_SYNC_SPEED_FAST;
|
||||||
Visor.speed = ZALMAN_Z_SYNC_SPEED_MEDIUM;
|
Visor.speed = ZALMAN_Z_SYNC_SPEED_MEDIUM;
|
||||||
Visor.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
Visor.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
||||||
Visor.colors.resize(2);
|
Visor.colors.resize(2);
|
||||||
modes.push_back(Visor);
|
modes.push_back(Visor);
|
||||||
|
|
||||||
mode Marquee;
|
mode Marquee;
|
||||||
Marquee.name = "Marquee";
|
Marquee.name = "Marquee";
|
||||||
Marquee.value = ZALMAN_Z_SYNC_MODE_MARQUEE;
|
Marquee.value = ZALMAN_Z_SYNC_MODE_MARQUEE;
|
||||||
Marquee.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR;
|
Marquee.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR;
|
||||||
Marquee.colors_min = 1;
|
Marquee.colors_min = 1;
|
||||||
Marquee.colors_max = 1;
|
Marquee.colors_max = 1;
|
||||||
Marquee.speed_min = ZALMAN_Z_SYNC_SPEED_SLOW;
|
Marquee.speed_min = ZALMAN_Z_SYNC_SPEED_SLOW;
|
||||||
Marquee.speed_max = ZALMAN_Z_SYNC_SPEED_FAST;
|
Marquee.speed_max = ZALMAN_Z_SYNC_SPEED_FAST;
|
||||||
Marquee.speed = ZALMAN_Z_SYNC_SPEED_MEDIUM;
|
Marquee.speed = ZALMAN_Z_SYNC_SPEED_MEDIUM;
|
||||||
Marquee.direction = MODE_DIRECTION_RIGHT;
|
Marquee.direction = MODE_DIRECTION_RIGHT;
|
||||||
Marquee.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
Marquee.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
||||||
Marquee.colors.resize(1);
|
Marquee.colors.resize(1);
|
||||||
modes.push_back(Marquee);
|
modes.push_back(Marquee);
|
||||||
|
|
||||||
mode Blink;
|
mode Blink;
|
||||||
Blink.name = "Blink";
|
Blink.name = "Blink";
|
||||||
Blink.value = ZALMAN_Z_SYNC_MODE_BLINK;
|
Blink.value = ZALMAN_Z_SYNC_MODE_BLINK;
|
||||||
Blink.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR;
|
Blink.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR;
|
||||||
Blink.colors_min = 2;
|
Blink.colors_min = 2;
|
||||||
Blink.colors_max = 2;
|
Blink.colors_max = 2;
|
||||||
Blink.speed_min = ZALMAN_Z_SYNC_SPEED_SLOW;
|
Blink.speed_min = ZALMAN_Z_SYNC_SPEED_SLOW;
|
||||||
Blink.speed_max = ZALMAN_Z_SYNC_SPEED_FAST;
|
Blink.speed_max = ZALMAN_Z_SYNC_SPEED_FAST;
|
||||||
Blink.speed = ZALMAN_Z_SYNC_SPEED_MEDIUM;
|
Blink.speed = ZALMAN_Z_SYNC_SPEED_MEDIUM;
|
||||||
Blink.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
Blink.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
||||||
Blink.colors.resize(2);
|
Blink.colors.resize(2);
|
||||||
modes.push_back(Blink);
|
modes.push_back(Blink);
|
||||||
|
|
||||||
mode Sequential;
|
mode Sequential;
|
||||||
Sequential.name = "Sequential";
|
Sequential.name = "Sequential";
|
||||||
Sequential.value = ZALMAN_Z_SYNC_MODE_SEQUENTIAL;
|
Sequential.value = ZALMAN_Z_SYNC_MODE_SEQUENTIAL;
|
||||||
Sequential.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR;
|
Sequential.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR;
|
||||||
Sequential.colors_min = 1;
|
Sequential.colors_min = 1;
|
||||||
Sequential.colors_max = 1;
|
Sequential.colors_max = 1;
|
||||||
Sequential.speed_min = ZALMAN_Z_SYNC_SPEED_SLOW;
|
Sequential.speed_min = ZALMAN_Z_SYNC_SPEED_SLOW;
|
||||||
Sequential.speed_max = ZALMAN_Z_SYNC_SPEED_FAST;
|
Sequential.speed_max = ZALMAN_Z_SYNC_SPEED_FAST;
|
||||||
Sequential.speed = ZALMAN_Z_SYNC_SPEED_MEDIUM;
|
Sequential.speed = ZALMAN_Z_SYNC_SPEED_MEDIUM;
|
||||||
Sequential.direction = MODE_DIRECTION_RIGHT;
|
Sequential.direction = MODE_DIRECTION_RIGHT;
|
||||||
Sequential.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
Sequential.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
||||||
Sequential.colors.resize(1);
|
Sequential.colors.resize(1);
|
||||||
modes.push_back(Sequential);
|
modes.push_back(Sequential);
|
||||||
|
|
||||||
mode Rainbow;
|
mode Rainbow;
|
||||||
Rainbow.name = "Rainbow";
|
Rainbow.name = "Rainbow";
|
||||||
Rainbow.value = ZALMAN_Z_SYNC_MODE_RAINBOW;
|
Rainbow.value = ZALMAN_Z_SYNC_MODE_RAINBOW;
|
||||||
Rainbow.flags = MODE_FLAG_HAS_SPEED;
|
Rainbow.flags = MODE_FLAG_HAS_SPEED;
|
||||||
Rainbow.speed_min = ZALMAN_Z_SYNC_SPEED_SLOW;
|
Rainbow.speed_min = ZALMAN_Z_SYNC_SPEED_SLOW;
|
||||||
Rainbow.speed_max = ZALMAN_Z_SYNC_SPEED_FAST;
|
Rainbow.speed_max = ZALMAN_Z_SYNC_SPEED_FAST;
|
||||||
Rainbow.speed = ZALMAN_Z_SYNC_SPEED_MEDIUM;
|
Rainbow.speed = ZALMAN_Z_SYNC_SPEED_MEDIUM;
|
||||||
Rainbow.color_mode = MODE_COLORS_NONE;
|
Rainbow.color_mode = MODE_COLORS_NONE;
|
||||||
modes.push_back(Rainbow);
|
modes.push_back(Rainbow);
|
||||||
|
|
||||||
SetupZones();
|
SetupZones();
|
||||||
|
|
|
||||||
|
|
@ -22,10 +22,11 @@
|
||||||
|
|
||||||
using namespace std::chrono_literals;
|
using namespace std::chrono_literals;
|
||||||
|
|
||||||
ZalmanZSyncController::ZalmanZSyncController(hid_device* dev_handle, const char* path)
|
ZalmanZSyncController::ZalmanZSyncController(hid_device* dev_handle, const char* path, std::string dev_name)
|
||||||
{
|
{
|
||||||
dev = dev_handle;
|
dev = dev_handle;
|
||||||
location = path;
|
location = path;
|
||||||
|
name = dev_name;
|
||||||
|
|
||||||
SendFirmwareRequest();
|
SendFirmwareRequest();
|
||||||
|
|
||||||
|
|
@ -70,6 +71,11 @@ std::string ZalmanZSyncController::GetLocationString()
|
||||||
return("HID: " + location);
|
return("HID: " + location);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string ZalmanZSyncController::GetNameString()
|
||||||
|
{
|
||||||
|
return(name);
|
||||||
|
}
|
||||||
|
|
||||||
std::string ZalmanZSyncController::GetSerialString()
|
std::string ZalmanZSyncController::GetSerialString()
|
||||||
{
|
{
|
||||||
wchar_t serial_string[128];
|
wchar_t serial_string[128];
|
||||||
|
|
|
||||||
|
|
@ -94,11 +94,12 @@ enum
|
||||||
class ZalmanZSyncController
|
class ZalmanZSyncController
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ZalmanZSyncController(hid_device* dev_handle, const char* path);
|
ZalmanZSyncController(hid_device* dev_handle, const char* path, std::string dev_name);
|
||||||
~ZalmanZSyncController();
|
~ZalmanZSyncController();
|
||||||
|
|
||||||
std::string GetFirmwareString();
|
std::string GetFirmwareString();
|
||||||
std::string GetLocationString();
|
std::string GetLocationString();
|
||||||
|
std::string GetNameString();
|
||||||
std::string GetSerialString();
|
std::string GetSerialString();
|
||||||
|
|
||||||
unsigned int GetStripsOnChannel(unsigned int channel);
|
unsigned int GetStripsOnChannel(unsigned int channel);
|
||||||
|
|
@ -128,6 +129,7 @@ private:
|
||||||
hid_device* dev;
|
hid_device* dev;
|
||||||
std::string firmware_version;
|
std::string firmware_version;
|
||||||
std::string location;
|
std::string location;
|
||||||
|
std::string name;
|
||||||
std::thread* keepalive_thread;
|
std::thread* keepalive_thread;
|
||||||
std::atomic<bool> keepalive_thread_run;
|
std::atomic<bool> keepalive_thread_run;
|
||||||
std::chrono::time_point<std::chrono::steady_clock> last_commit_time;
|
std::chrono::time_point<std::chrono::steady_clock> last_commit_time;
|
||||||
|
|
|
||||||
|
|
@ -31,9 +31,8 @@ void DetectZalmanZSyncControllers(hid_device_info* info, const std::string& name
|
||||||
|
|
||||||
if(dev)
|
if(dev)
|
||||||
{
|
{
|
||||||
ZalmanZSyncController* controller = new ZalmanZSyncController(dev, info->path);
|
ZalmanZSyncController* controller = new ZalmanZSyncController(dev, info->path, name);
|
||||||
RGBController_ZalmanZSync* rgb_controller = new RGBController_ZalmanZSync(controller);
|
RGBController_ZalmanZSync* rgb_controller = new RGBController_ZalmanZSync(controller);
|
||||||
rgb_controller->name = name;
|
|
||||||
|
|
||||||
ResourceManager::get()->RegisterRGBController(rgb_controller);
|
ResourceManager::get()->RegisterRGBController(rgb_controller);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue