Store name in SinowealthControllers to avoid setting it in detectors

This commit is contained in:
Adam Honse 2025-08-16 01:08:09 -05:00
parent f1a050a503
commit c2e0bd496f
23 changed files with 538 additions and 490 deletions

View file

@ -11,11 +11,12 @@
#include "GenesisXenon200Controller.h"
GenesisXenon200Controller::GenesisXenon200Controller(hid_device* dev_handle, hid_device* cmd_dev_handle, const char* path)
GenesisXenon200Controller::GenesisXenon200Controller(hid_device* dev_handle, hid_device* cmd_dev_handle, const char* path, std::string dev_name)
{
dev = dev_handle;
cmd_dev = cmd_dev_handle;
location = path;
dev = dev_handle;
cmd_dev = cmd_dev_handle;
location = path;
name = dev_name;
}
GenesisXenon200Controller::~GenesisXenon200Controller()
@ -28,6 +29,11 @@ std::string GenesisXenon200Controller::GetLocationString()
return("HID: " + location);
}
std::string GenesisXenon200Controller::GetNameString()
{
return(name);
}
void GenesisXenon200Controller::SaveMode(unsigned char mode, unsigned char value, RGBColor color)
{
unsigned char usb_buf[154];

View file

@ -17,13 +17,17 @@
class GenesisXenon200Controller
{
public:
GenesisXenon200Controller(hid_device* dev_handle, hid_device* cmd_dev_handle, const char* path);
GenesisXenon200Controller(hid_device* dev_handle, hid_device* cmd_dev_handle, const char* path, std::string dev_name);
~GenesisXenon200Controller();
void SaveMode(unsigned char mode, unsigned char value, RGBColor color);
std::string GetLocationString();
std::string GetNameString();
void SaveMode(unsigned char mode, unsigned char value, RGBColor color);
private:
hid_device* dev;
hid_device* cmd_dev;
std::string location;
std::string name;
};

View file

@ -23,55 +23,55 @@
RGBController_GenesisXenon200::RGBController_GenesisXenon200(GenesisXenon200Controller* controller_ptr)
{
controller = controller_ptr;
controller = controller_ptr;
name = "Genesis Xenon 200";
vendor = "Genesis";
description = "Genesis Xenon 200 Mouse";
type = DEVICE_TYPE_MOUSE;
location = controller->GetLocationString();
name = controller->GetNameString();
vendor = "Genesis";
description = "Genesis Xenon 200 Mouse Device";
type = DEVICE_TYPE_MOUSE;
location = controller->GetLocationString();
mode Static;
Static.name = "Static";
Static.value = GENESIS_XENON_200_MODE_STATIC;
Static.flags = MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
Static.color_mode = MODE_COLORS_MODE_SPECIFIC;
Static.brightness = 1;
Static.brightness_min = 0;
Static.brightness_max = 2;
Static.colors_min = 1;
Static.colors_max = 1;
Static.name = "Static";
Static.value = GENESIS_XENON_200_MODE_STATIC;
Static.flags = MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
Static.color_mode = MODE_COLORS_MODE_SPECIFIC;
Static.brightness = 1;
Static.brightness_min = 0;
Static.brightness_max = 2;
Static.colors_min = 1;
Static.colors_max = 1;
Static.colors.resize(1);
modes.push_back(Static);
mode Breathing;
Breathing.name = "Breathing";
Breathing.value = GENESIS_XENON_200_MODE_BREATHING;
Breathing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
Breathing.color_mode = MODE_COLORS_MODE_SPECIFIC;
Breathing.speed = 1;
Breathing.speed_min = 0;
Breathing.speed_max = 2;
Breathing.colors_min = 1;
Breathing.colors_max = 1;
Breathing.name = "Breathing";
Breathing.value = GENESIS_XENON_200_MODE_BREATHING;
Breathing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
Breathing.color_mode = MODE_COLORS_MODE_SPECIFIC;
Breathing.speed = 1;
Breathing.speed_min = 0;
Breathing.speed_max = 2;
Breathing.colors_min = 1;
Breathing.colors_max = 1;
Breathing.colors.resize(1);
modes.push_back(Breathing);
mode SpectrumCycle;
SpectrumCycle.name = "Spectrum Cycle";
SpectrumCycle.value = GENESIS_XENON_200_MODE_SPECTRUM_CYCLE;
SpectrumCycle.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
SpectrumCycle.color_mode = MODE_COLORS_NONE;
SpectrumCycle.speed = 1;
SpectrumCycle.speed_min = 0;
SpectrumCycle.speed_max = 2;
SpectrumCycle.name = "Spectrum Cycle";
SpectrumCycle.value = GENESIS_XENON_200_MODE_SPECTRUM_CYCLE;
SpectrumCycle.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
SpectrumCycle.color_mode = MODE_COLORS_NONE;
SpectrumCycle.speed = 1;
SpectrumCycle.speed_min = 0;
SpectrumCycle.speed_max = 2;
modes.push_back(SpectrumCycle);
mode Off;
Off.name = "Off";
Off.value = GENESIS_XENON_200_MODE_OFF;
Off.flags = MODE_FLAG_AUTOMATIC_SAVE;
Off.color_mode = MODE_COLORS_NONE;
Off.name = "Off";
Off.value = GENESIS_XENON_200_MODE_OFF;
Off.flags = MODE_FLAG_AUTOMATIC_SAVE;
Off.color_mode = MODE_COLORS_NONE;
modes.push_back(Off);
SetupColors();

View file

@ -35,14 +35,14 @@ static const char *led_names[] =
RGBController_Sinowealth1007::RGBController_Sinowealth1007(SinowealthController1007* controller_ptr)
{
controller = controller_ptr;
controller = controller_ptr;
name = "ZET Fury Pro Mouse Device";
vendor = "ZET";
type = DEVICE_TYPE_MOUSE;
description = "ZET Fury Pro Mouse Device";
location = controller->GetLocation();
serial = controller->GetSerialString();
name = controller->GetName();
vendor = "ZET";
type = DEVICE_TYPE_MOUSE;
description = "ZET Fury Pro Mouse Device";
location = controller->GetLocation();
serial = controller->GetSerialString();
mode Custom;
Custom.name = "Custom";

View file

@ -14,16 +14,16 @@
#include "SinowealthController1007.h"
#include "StringUtils.h"
SinowealthController1007::SinowealthController1007(hid_device* dev, char *_path)
SinowealthController1007::SinowealthController1007(hid_device* dev, char *_path, std::string dev_name)
{
this->dev = dev;
this->led_count = 7;
this->dev = dev;
this->location = _path;
this->name = dev_name;
this->led_count = 7;
this->current_mode = ZET_FURY_PRO_MODE_CUSTOM + ZET_FURY_PRO_SPEED_DEF;
this->current_direction = ZET_FURY_PRO_DIR_RIGHT;
this->location = _path;
memset(device_colors, 0x00, sizeof(device_colors));
}
@ -37,6 +37,11 @@ std::string SinowealthController1007::GetLocation()
return("HID: " + location);
}
std::string SinowealthController1007::GetName()
{
return(name);
}
unsigned int SinowealthController1007::GetLEDCount()
{
return(led_count);

View file

@ -57,11 +57,12 @@ enum
class SinowealthController1007
{
public:
SinowealthController1007(hid_device* dev, char *_path);
SinowealthController1007(hid_device* dev, char *_path, std::string dev_name);
~SinowealthController1007();
unsigned int GetLEDCount();
std::string GetLocation();
std::string GetName();
std::string GetSerialString();
void SetLEDColors(const std::vector<RGBColor>& colors);
@ -69,14 +70,15 @@ public:
int GetProfile();
void SendPacket();
private:
hid_device* dev;
hid_device* dev;
unsigned int led_count;
unsigned int led_count;
unsigned char current_mode;
unsigned char current_direction;
unsigned char device_configuration[ZET_FURY_PRO_STATE_BUFFER_LENGTH];
unsigned char device_colors[ZET_FURY_PRO_COLOR_BUFFER_LENGTH];
unsigned char current_mode;
unsigned char current_direction;
unsigned char device_configuration[ZET_FURY_PRO_STATE_BUFFER_LENGTH];
unsigned char device_colors[ZET_FURY_PRO_COLOR_BUFFER_LENGTH];
std::string location;
std::string location;
std::string name;
};

View file

@ -24,113 +24,113 @@
RGBController_Sinowealth::RGBController_Sinowealth(SinowealthController* controller_ptr)
{
controller = controller_ptr;
controller = controller_ptr;
name = "Sinowealth Device";
type = DEVICE_TYPE_MOUSE;
description = "Sinowealth Device";
location = controller->GetLocation();
serial = controller->GetSerialString();
version = controller->GetFirmwareVersion();
name = controller->GetName();
type = DEVICE_TYPE_MOUSE;
description = "Sinowealth Device";
location = controller->GetLocation();
serial = controller->GetSerialString();
version = controller->GetFirmwareVersion();
mode Static;
Static.name = "Static";
Static.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
Static.color_mode = MODE_COLORS_PER_LED;
Static.value = GLORIOUS_MODE_STATIC;
Static.name = "Static";
Static.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
Static.color_mode = MODE_COLORS_PER_LED;
Static.value = GLORIOUS_MODE_STATIC;
modes.push_back(Static);
mode Off;
Off.name = "Off";
Off.flags = MODE_FLAG_AUTOMATIC_SAVE;
Off.color_mode = MODE_COLORS_NONE;
Off.value = GLORIOUS_MODE_OFF;
Off.name = "Off";
Off.flags = MODE_FLAG_AUTOMATIC_SAVE;
Off.color_mode = MODE_COLORS_NONE;
Off.value = GLORIOUS_MODE_OFF;
modes.push_back(Off);
mode Rainbow;
Rainbow.name = "Glorious Mode";
Rainbow.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_UD | MODE_FLAG_AUTOMATIC_SAVE;
Rainbow.speed_min = GLORIOUS_SPEED_SLOW;
Rainbow.speed = GLORIOUS_SPEED_NORMAL;
Rainbow.speed_max = GLORIOUS_SPEED_FAST;
Rainbow.direction = MODE_DIRECTION_UP;
Rainbow.color_mode = MODE_COLORS_NONE;
Rainbow.value = GLORIOUS_MODE_RAINBOW;
Rainbow.name = "Glorious Mode";
Rainbow.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_UD | MODE_FLAG_AUTOMATIC_SAVE;
Rainbow.speed_min = GLORIOUS_SPEED_SLOW;
Rainbow.speed = GLORIOUS_SPEED_NORMAL;
Rainbow.speed_max = GLORIOUS_SPEED_FAST;
Rainbow.direction = MODE_DIRECTION_UP;
Rainbow.color_mode = MODE_COLORS_NONE;
Rainbow.value = GLORIOUS_MODE_RAINBOW;
modes.push_back(Rainbow);
mode SpectrumBreathing;
SpectrumBreathing.name = "Seemless Breathing";
SpectrumBreathing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
SpectrumBreathing.speed_min = GLORIOUS_SPEED_SLOW;
SpectrumBreathing.speed = GLORIOUS_SPEED_NORMAL;
SpectrumBreathing.speed_max = GLORIOUS_SPEED_FAST;
SpectrumBreathing.colors_min = 7;
SpectrumBreathing.colors_max = 7;
SpectrumBreathing.color_mode = MODE_COLORS_MODE_SPECIFIC;
SpectrumBreathing.value = GLORIOUS_MODE_SPECTRUM_BREATING;
SpectrumBreathing.name = "Seemless Breathing";
SpectrumBreathing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
SpectrumBreathing.speed_min = GLORIOUS_SPEED_SLOW;
SpectrumBreathing.speed = GLORIOUS_SPEED_NORMAL;
SpectrumBreathing.speed_max = GLORIOUS_SPEED_FAST;
SpectrumBreathing.colors_min = 7;
SpectrumBreathing.colors_max = 7;
SpectrumBreathing.color_mode = MODE_COLORS_MODE_SPECIFIC;
SpectrumBreathing.value = GLORIOUS_MODE_SPECTRUM_BREATING;
SpectrumBreathing.colors.resize(7);
modes.push_back(SpectrumBreathing);
mode Chase;
Chase.name = "Tail";
Chase.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
Chase.speed_min = GLORIOUS_SPEED_SLOW;
Chase.speed = GLORIOUS_SPEED_NORMAL;
Chase.speed_max = GLORIOUS_SPEED_FAST;
Chase.color_mode = MODE_COLORS_NONE;
Chase.value = GLORIOUS_MODE_TAIL;
Chase.name = "Tail";
Chase.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
Chase.speed_min = GLORIOUS_SPEED_SLOW;
Chase.speed = GLORIOUS_SPEED_NORMAL;
Chase.speed_max = GLORIOUS_SPEED_FAST;
Chase.color_mode = MODE_COLORS_NONE;
Chase.value = GLORIOUS_MODE_TAIL;
modes.push_back(Chase);
mode SpectrumCycle;
SpectrumCycle.name = "Spectrum Cycle";
SpectrumCycle.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
SpectrumCycle.speed_min = GLORIOUS_SPEED_SLOW;
SpectrumCycle.speed = GLORIOUS_SPEED_NORMAL;
SpectrumCycle.speed_max = GLORIOUS_SPEED_FAST;
SpectrumCycle.color_mode = MODE_COLORS_NONE;
SpectrumCycle.value = GLORIOUS_MODE_SPECTRUM_CYCLE;
SpectrumCycle.name = "Spectrum Cycle";
SpectrumCycle.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
SpectrumCycle.speed_min = GLORIOUS_SPEED_SLOW;
SpectrumCycle.speed = GLORIOUS_SPEED_NORMAL;
SpectrumCycle.speed_max = GLORIOUS_SPEED_FAST;
SpectrumCycle.color_mode = MODE_COLORS_NONE;
SpectrumCycle.value = GLORIOUS_MODE_SPECTRUM_CYCLE;
modes.push_back(SpectrumCycle);
mode Flashing;
Flashing.name = "Rave";
Flashing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
Flashing.speed_min = GLORIOUS_SPEED_SLOW;
Flashing.speed = GLORIOUS_SPEED_NORMAL;
Flashing.speed_max = GLORIOUS_SPEED_FAST;
Flashing.colors_min = 2;
Flashing.colors_max = 2;
Flashing.color_mode = MODE_COLORS_MODE_SPECIFIC;
Flashing.value = GLORIOUS_MODE_RAVE;
Flashing.name = "Rave";
Flashing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
Flashing.speed_min = GLORIOUS_SPEED_SLOW;
Flashing.speed = GLORIOUS_SPEED_NORMAL;
Flashing.speed_max = GLORIOUS_SPEED_FAST;
Flashing.colors_min = 2;
Flashing.colors_max = 2;
Flashing.color_mode = MODE_COLORS_MODE_SPECIFIC;
Flashing.value = GLORIOUS_MODE_RAVE;
Flashing.colors.resize(2);
modes.push_back(Flashing);
mode Epilepsy;
Epilepsy.name = "Epilepsy";
Epilepsy.flags = MODE_FLAG_AUTOMATIC_SAVE;
Epilepsy.color_mode = MODE_COLORS_NONE;
Epilepsy.value = GLORIOUS_MODE_EPILEPSY;
Epilepsy.name = "Epilepsy";
Epilepsy.flags = MODE_FLAG_AUTOMATIC_SAVE;
Epilepsy.color_mode = MODE_COLORS_NONE;
Epilepsy.value = GLORIOUS_MODE_EPILEPSY;
modes.push_back(Epilepsy);
mode RainbowSlow;
RainbowSlow.name = "Wave";
RainbowSlow.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
RainbowSlow.speed_min = GLORIOUS_SPEED_SLOW;
RainbowSlow.speed = GLORIOUS_SPEED_NORMAL;
RainbowSlow.speed_max = GLORIOUS_SPEED_FAST;
RainbowSlow.color_mode = MODE_COLORS_NONE;
RainbowSlow.value = GLORIOUS_MODE_WAVE;
RainbowSlow.name = "Wave";
RainbowSlow.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
RainbowSlow.speed_min = GLORIOUS_SPEED_SLOW;
RainbowSlow.speed = GLORIOUS_SPEED_NORMAL;
RainbowSlow.speed_max = GLORIOUS_SPEED_FAST;
RainbowSlow.color_mode = MODE_COLORS_NONE;
RainbowSlow.value = GLORIOUS_MODE_WAVE;
modes.push_back(RainbowSlow);
mode Breathing;
Breathing.name = "Breathing";
Breathing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
Breathing.speed_min = GLORIOUS_MODE_BREATING_SLOW;
Breathing.speed = GLORIOUS_MODE_BREATING_NORMAL;
Breathing.speed_max = GLORIOUS_MODE_BREATING_FAST;
Breathing.colors_min = 1;
Breathing.colors_max = 1;
Breathing.color_mode = MODE_COLORS_MODE_SPECIFIC;
Breathing.value = GLORIOUS_MODE_BREATHING;
Breathing.name = "Breathing";
Breathing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
Breathing.speed_min = GLORIOUS_MODE_BREATING_SLOW;
Breathing.speed = GLORIOUS_MODE_BREATING_NORMAL;
Breathing.speed_max = GLORIOUS_MODE_BREATING_FAST;
Breathing.colors_min = 1;
Breathing.colors_max = 1;
Breathing.color_mode = MODE_COLORS_MODE_SPECIFIC;
Breathing.value = GLORIOUS_MODE_BREATHING;
Breathing.colors.resize(1);
modes.push_back(Breathing);

View file

@ -29,7 +29,6 @@ public:
void DeviceUpdateMode();
private:
SinowealthController* controller;
};

View file

@ -14,22 +14,24 @@
#include "SinowealthController.h"
#include "StringUtils.h"
SinowealthController::SinowealthController(hid_device* dev_data_handle, hid_device* dev_cmd_handle, char *_path)
SinowealthController::SinowealthController(hid_device* dev_data_handle, hid_device* dev_cmd_handle, char *_path, std::string dev_name)
{
dev_data = dev_data_handle;
dev_cmd = dev_cmd_handle;
location = _path;
dev_data = dev_data_handle;
dev_cmd = dev_cmd_handle;
location = _path;
name = dev_name;
led_count = 1;
led_count = 1;
current_mode = GLORIOUS_MODE_STATIC;
current_speed = GLORIOUS_SPEED_NORMAL;
current_direction = GLORIOUS_DIRECTION_UP;
current_mode = GLORIOUS_MODE_STATIC;
current_speed = GLORIOUS_SPEED_NORMAL;
current_direction = GLORIOUS_DIRECTION_UP;
}
SinowealthController::~SinowealthController()
{
hid_close(dev_data);
/*---------------------------------------------------------------------*\
| If the dev_cmd handle was passed in as the same device as dev_data |
| then attempting to close it a second time will segfault |
@ -45,6 +47,11 @@ std::string SinowealthController::GetLocation()
return("HID: " + location);
}
std::string SinowealthController::GetName()
{
return(name);
}
unsigned int SinowealthController::GetLEDCount()
{
return(led_count);

View file

@ -57,11 +57,12 @@ enum
class SinowealthController
{
public:
SinowealthController(hid_device* dev_data_handle, hid_device* dev_cmd_handle, char *_path); //RGB, Command, path
SinowealthController(hid_device* dev_data_handle, hid_device* dev_cmd_handle, char *_path, std::string dev_name); //RGB, Command, path
~SinowealthController();
unsigned int GetLEDCount();
std::string GetLocation();
std::string GetName();
std::string GetSerialString();
std::string GetFirmwareVersion();
@ -69,15 +70,13 @@ public:
void SetMode(unsigned char mode, unsigned char speed, unsigned char direction, RGBColor* color_buf);
int GetProfile();
private:
hid_device* dev_cmd;
hid_device* dev_data;
unsigned int led_count;
unsigned char current_mode;
unsigned char current_speed;
unsigned char current_direction;
unsigned char device_configuration[SINOWEALTH_CONFIG_REPORT_SIZE];
std::string location;
hid_device* dev_cmd;
hid_device* dev_data;
unsigned int led_count;
unsigned char current_mode;
unsigned char current_speed;
unsigned char current_direction;
unsigned char device_configuration[SINOWEALTH_CONFIG_REPORT_SIZE];
std::string location;
std::string name;
};

View file

@ -240,7 +240,7 @@ static void DetectGenesisXenon200(hid_device_info* info, const std::string name)
hid_device* dev = reports.at(0).device;
hid_device* cmd_dev = reports.at(1).device;
GenesisXenon200Controller* controller = new GenesisXenon200Controller(dev, cmd_dev, info->path);
GenesisXenon200Controller* controller = new GenesisXenon200Controller(dev, cmd_dev, info->path, name);
RGBController* rgb_controller = new RGBController_GenesisXenon200(controller);
ResourceManager::get()->RegisterRGBController(rgb_controller);
@ -259,11 +259,11 @@ static void DetectZetFuryPro(hid_device_info* info, const std::string& name)
#else
hid_device* dev = hid_open_path(info->path);
#endif
if(dev)
{
SinowealthController1007* controller = new SinowealthController1007(dev, info->path);
RGBController *rgb_controller = new RGBController_Sinowealth1007(controller);
rgb_controller->name = name;
SinowealthController1007* controller = new SinowealthController1007(dev, info->path, name);
RGBController_Sinowealth1007* rgb_controller = new RGBController_Sinowealth1007(controller);
ResourceManager::get()->RegisterRGBController(rgb_controller);
}
@ -279,18 +279,18 @@ static void DetectSinowealthMouse(hid_device_info* info, const std::string& name
{
return;
}
hid_device *dev = reports.at(0).device;
hid_device *dev_cmd = reports.at(0).cmd_device;
hid_device *dev = reports.at(0).device;
hid_device *dev_cmd = reports.at(0).cmd_device;
#else
hid_device* dev = hid_open_path(info->path);
hid_device* dev = hid_open_path(info->path);
hid_device* dev_cmd = dev;
#endif
if(dev && dev_cmd)
{
SinowealthController* controller = new SinowealthController(dev, dev_cmd, info->path);
RGBController* rgb_controller = new RGBController_Sinowealth(controller);
rgb_controller->name = name;
SinowealthController* controller = new SinowealthController(dev, dev_cmd, info->path, name);
RGBController_Sinowealth* rgb_controller = new RGBController_Sinowealth(controller);
ResourceManager::get()->RegisterRGBController(rgb_controller);
}
@ -300,11 +300,11 @@ static void DetectGMOW_Cable(hid_device_info* info, const std::string& name)
{
LOG_DEBUG("[%s] Detected connection via USB cable", name.c_str());
hid_device *dev = hid_open_path(info->path);
if(dev)
{
SinowealthGMOWController* controller = new SinowealthGMOWController(dev, info->path, GMOW_CABLE_CONNECTED);
RGBController* rgb_controller = new RGBController_GMOW(controller);
rgb_controller->name = name;
SinowealthGMOWController* controller = new SinowealthGMOWController(dev, info->path, GMOW_CABLE_CONNECTED, name);
RGBController_GMOW* rgb_controller = new RGBController_GMOW(controller);
ResourceManager::get()->RegisterRGBController(rgb_controller);
}
@ -334,11 +334,11 @@ static void DetectGMOW_Dongle(hid_device_info* info, const std::string& name)
hid_free_enumeration(start);
hid_device *dev = hid_open_path(info->path);
if(dev)
{
SinowealthGMOWController* controller = new SinowealthGMOWController(dev, info->path, GMOW_DONGLE_CONNECTED);
RGBController *rgb_controller = new RGBController_GMOW(controller);
rgb_controller->name = name;
SinowealthGMOWController* controller = new SinowealthGMOWController(dev, info->path, GMOW_DONGLE_CONNECTED, name);
RGBController_GMOW* rgb_controller = new RGBController_GMOW(controller);
ResourceManager::get()->RegisterRGBController(rgb_controller);
}
@ -361,9 +361,8 @@ static void DetectGMOW_Dongle(hid_device_info* info, const std::string& name)
// #endif
// if(dev && dev_cmd)
// {
// SinowealthKeyboard16Controller* controller = new SinowealthKeyboard16Controller(dev_cmd, dev, info->path, name);
// RGBController *rgb_controller = new RGBController_SinowealthKeyboard16(controller);
// rgb_controller->name = name;
// SinowealthKeyboard16Controller* controller = new SinowealthKeyboard16Controller(dev_cmd, dev, info->path, name);
// RGBController_SinowealthKeyboard16* rgb_controller = new RGBController_SinowealthKeyboard16(controller);
//
// ResourceManager::get()->RegisterRGBController(rgb_controller);
// }
@ -378,24 +377,25 @@ static void DetectGMOW_Dongle(hid_device_info* info, const std::string& name)
// {
// return;
// }
// hid_device *dev = reports.at(0).device;
// hid_device *dev_cmd = reports.at(0).cmd_device;
//
// hid_device *dev = reports.at(0).device;
// hid_device *dev_cmd = reports.at(0).cmd_device;
//
// if(dev && dev_cmd)
// {
// SinowealthKeyboardController* controller = new SinowealthKeyboardController(dev_cmd, dev, info->path);
// RGBController* rgb_controller = new RGBController_SinowealthKeyboard(controller);
// rgb_controller->name = name;
// SinowealthKeyboardController* controller = new SinowealthKeyboardController(dev_cmd, dev, info->path, name);
// RGBController_SinowealthKeyboard* rgb_controller = new RGBController_SinowealthKeyboard(controller);
//
// ResourceManager::get()->RegisterRGBController(rgb_controller);
// }
// #else
// // It is unknown why this code used the MOUSE controller here; could it be the reason why it was disabled?
// hid_device* dev = hid_open_path(info->path);
//
// if(dev)
// {
// SinowealthController* controller = new SinowealthController(dev, dev, info->path);
// RGBController* rgb_controller = new RGBController_Sinowealth(controller);
// rgb_controller->name = name;
// SinowealthController* controller = new SinowealthController(dev, dev, info->path, name);
// RGBController_Sinowealth* rgb_controller = new RGBController_Sinowealth(controller);
//
// ResourceManager::get()->RegisterRGBController(rgb_controller);
// }
@ -406,11 +406,11 @@ static void DetectSinowealthGenesisKeyboard(hid_device_info* info, const std::st
{
unsigned int pid = info->product_id;
hid_device* dev = hid_open_path(info->path);
if(dev)
{
SinowealthKeyboard90Controller* controller = new SinowealthKeyboard90Controller(dev, info->path, pid);
SinowealthKeyboard90Controller* controller = new SinowealthKeyboard90Controller(dev, info->path, pid, name);
RGBController_SinowealthKeyboard90* rgb_controller = new RGBController_SinowealthKeyboard90(controller);
rgb_controller->name = name;
ResourceManager::get()->RegisterRGBController(rgb_controller);
}

View file

@ -23,134 +23,134 @@
RGBController_GMOW::RGBController_GMOW(SinowealthGMOWController* controller_ptr)
{
controller = controller_ptr;
controller = controller_ptr;
name = "Sinowealth Device";
type = DEVICE_TYPE_MOUSE;
description = "Sinowealth Device";
location = controller->GetLocation();
serial = controller->GetSerialString();
version = controller->GetFirmwareVersion();
name = controller->GetName();
type = DEVICE_TYPE_MOUSE;
description = "Sinowealth Device";
location = controller->GetLocation();
serial = controller->GetSerialString();
version = controller->GetFirmwareVersion();
mode Off;
Off.name = "Off";
Off.flags = MODE_FLAG_AUTOMATIC_SAVE;
Off.color_mode = MODE_COLORS_NONE;
Off.value = GMOW_MODE_OFF;
Off.name = "Off";
Off.flags = MODE_FLAG_AUTOMATIC_SAVE;
Off.color_mode = MODE_COLORS_NONE;
Off.value = GMOW_MODE_OFF;
modes.push_back(Off);
mode RainbowWave;
RainbowWave.name = "Rainbow Wave";
RainbowWave.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
RainbowWave.speed_min = GMOW_SPEED1_MIN;
RainbowWave.speed = GMOW_SPEED1_MID;
RainbowWave.speed_max = GMOW_SPEED1_MAX;
RainbowWave.direction = MODE_DIRECTION_UP;
RainbowWave.color_mode = MODE_COLORS_NONE;
RainbowWave.brightness_min = GMOW_BRIGHTNESS_MIN;
RainbowWave.brightness = GMOW_BRIGHTNESS_MID;
RainbowWave.brightness_max = GMOW_BRIGHTNESS_MAX;
RainbowWave.value = GMOW_MODE_RAINBOW_WAVE;
RainbowWave.name = "Rainbow Wave";
RainbowWave.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
RainbowWave.speed_min = GMOW_SPEED1_MIN;
RainbowWave.speed = GMOW_SPEED1_MID;
RainbowWave.speed_max = GMOW_SPEED1_MAX;
RainbowWave.direction = MODE_DIRECTION_UP;
RainbowWave.color_mode = MODE_COLORS_NONE;
RainbowWave.brightness_min = GMOW_BRIGHTNESS_MIN;
RainbowWave.brightness = GMOW_BRIGHTNESS_MID;
RainbowWave.brightness_max = GMOW_BRIGHTNESS_MAX;
RainbowWave.value = GMOW_MODE_RAINBOW_WAVE;
modes.push_back(RainbowWave);
mode SpectrumCycle;
SpectrumCycle.name = "Spectrum Cycle";
SpectrumCycle.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
SpectrumCycle.speed_min = GMOW_SPEED1_MIN;
SpectrumCycle.speed = GMOW_SPEED1_MID;
SpectrumCycle.speed_max = GMOW_SPEED1_MAX;
SpectrumCycle.color_mode = MODE_COLORS_NONE;
SpectrumCycle.brightness_min = GMOW_BRIGHTNESS_MIN;
SpectrumCycle.brightness = GMOW_BRIGHTNESS_MID;
SpectrumCycle.brightness_max = GMOW_BRIGHTNESS_MAX;
SpectrumCycle.value = GMOW_MODE_SPECTRUM_CYCLE;
SpectrumCycle.name = "Spectrum Cycle";
SpectrumCycle.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
SpectrumCycle.speed_min = GMOW_SPEED1_MIN;
SpectrumCycle.speed = GMOW_SPEED1_MID;
SpectrumCycle.speed_max = GMOW_SPEED1_MAX;
SpectrumCycle.color_mode = MODE_COLORS_NONE;
SpectrumCycle.brightness_min = GMOW_BRIGHTNESS_MIN;
SpectrumCycle.brightness = GMOW_BRIGHTNESS_MID;
SpectrumCycle.brightness_max = GMOW_BRIGHTNESS_MAX;
SpectrumCycle.value = GMOW_MODE_SPECTRUM_CYCLE;
modes.push_back(SpectrumCycle);
mode CustomBreathing;
CustomBreathing.name = "Custom Breathing";
CustomBreathing.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
CustomBreathing.speed_min = GMOW_SPEED1_MIN;
CustomBreathing.speed = GMOW_SPEED1_MID;
CustomBreathing.speed_max = GMOW_SPEED1_MAX;
CustomBreathing.color_mode = MODE_COLORS_MODE_SPECIFIC;
CustomBreathing.colors_min = 2;
CustomBreathing.colors_max = 7;
CustomBreathing.brightness_min = GMOW_BRIGHTNESS_MIN;
CustomBreathing.brightness = GMOW_BRIGHTNESS_MID;
CustomBreathing.brightness_max = GMOW_BRIGHTNESS_MAX;
CustomBreathing.value = GMOW_MODE_CUSTOM_BREATHING;
CustomBreathing.name = "Custom Breathing";
CustomBreathing.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
CustomBreathing.speed_min = GMOW_SPEED1_MIN;
CustomBreathing.speed = GMOW_SPEED1_MID;
CustomBreathing.speed_max = GMOW_SPEED1_MAX;
CustomBreathing.color_mode = MODE_COLORS_MODE_SPECIFIC;
CustomBreathing.colors_min = 2;
CustomBreathing.colors_max = 7;
CustomBreathing.brightness_min = GMOW_BRIGHTNESS_MIN;
CustomBreathing.brightness = GMOW_BRIGHTNESS_MID;
CustomBreathing.brightness_max = GMOW_BRIGHTNESS_MAX;
CustomBreathing.value = GMOW_MODE_CUSTOM_BREATHING;
CustomBreathing.colors.resize(7);
modes.push_back(CustomBreathing);
mode Static;
Static.name = "Static";
Static.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
Static.color_mode = MODE_COLORS_MODE_SPECIFIC;
Static.colors_min = 1;
Static.colors_max = 1;
Static.brightness_min = GMOW_BRIGHTNESS_MIN;
Static.brightness = GMOW_BRIGHTNESS_MID;
Static.brightness_max = GMOW_BRIGHTNESS_MAX;
Static.value = GMOW_MODE_STATIC;
Static.name = "Static";
Static.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
Static.color_mode = MODE_COLORS_MODE_SPECIFIC;
Static.colors_min = 1;
Static.colors_max = 1;
Static.brightness_min = GMOW_BRIGHTNESS_MIN;
Static.brightness = GMOW_BRIGHTNESS_MID;
Static.brightness_max = GMOW_BRIGHTNESS_MAX;
Static.value = GMOW_MODE_STATIC;
Static.colors.resize(1);
modes.push_back(Static);
mode Breathing;
Breathing.name = "Breathing";
Breathing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
Breathing.speed_min = GMOW_SPEED1_MIN;
Breathing.speed = GMOW_SPEED1_MID;
Breathing.speed_max = GMOW_SPEED1_MAX;
Breathing.color_mode = MODE_COLORS_MODE_SPECIFIC;
Breathing.colors_min = 1;
Breathing.colors_max = 1;
Breathing.brightness_min = GMOW_BRIGHTNESS_MIN;
Breathing.brightness = GMOW_BRIGHTNESS_MID;
Breathing.brightness_max = GMOW_BRIGHTNESS_MAX;
Breathing.value = GMOW_MODE_BREATHING;
Breathing.name = "Breathing";
Breathing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
Breathing.speed_min = GMOW_SPEED1_MIN;
Breathing.speed = GMOW_SPEED1_MID;
Breathing.speed_max = GMOW_SPEED1_MAX;
Breathing.color_mode = MODE_COLORS_MODE_SPECIFIC;
Breathing.colors_min = 1;
Breathing.colors_max = 1;
Breathing.brightness_min = GMOW_BRIGHTNESS_MIN;
Breathing.brightness = GMOW_BRIGHTNESS_MID;
Breathing.brightness_max = GMOW_BRIGHTNESS_MAX;
Breathing.value = GMOW_MODE_BREATHING;
Breathing.colors.resize(1);
modes.push_back(Breathing);
mode Tail;
Tail.name = "Tail";
Tail.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
Tail.speed_min = GMOW_SPEED1_MIN;
Tail.speed = GMOW_SPEED1_MID;
Tail.speed_max = GMOW_SPEED1_MAX;
Tail.color_mode = MODE_COLORS_NONE;
Tail.brightness_min = GMOW_BRIGHTNESS_MIN;
Tail.brightness = GMOW_BRIGHTNESS_MID;
Tail.brightness_max = GMOW_BRIGHTNESS_MAX;
Tail.value = GMOW_MODE_TAIL;
Tail.name = "Tail";
Tail.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
Tail.speed_min = GMOW_SPEED1_MIN;
Tail.speed = GMOW_SPEED1_MID;
Tail.speed_max = GMOW_SPEED1_MAX;
Tail.color_mode = MODE_COLORS_NONE;
Tail.brightness_min = GMOW_BRIGHTNESS_MIN;
Tail.brightness = GMOW_BRIGHTNESS_MID;
Tail.brightness_max = GMOW_BRIGHTNESS_MAX;
Tail.value = GMOW_MODE_TAIL;
modes.push_back(Tail);
mode Rave;
Rave.name = "Rave";
Rave.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
Rave.speed_min = GMOW_SPEED2_MIN;
Rave.speed = GMOW_SPEED2_MID;
Rave.speed_max = GMOW_SPEED2_MAX;
Rave.color_mode = MODE_COLORS_MODE_SPECIFIC;
Rave.colors_min = 1;
Rave.colors_max = 2;
Rave.brightness_min = GMOW_BRIGHTNESS_MIN;
Rave.brightness = GMOW_BRIGHTNESS_MID;
Rave.brightness_max = GMOW_BRIGHTNESS_MAX;
Rave.value = GMOW_MODE_RAVE;
Rave.name = "Rave";
Rave.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
Rave.speed_min = GMOW_SPEED2_MIN;
Rave.speed = GMOW_SPEED2_MID;
Rave.speed_max = GMOW_SPEED2_MAX;
Rave.color_mode = MODE_COLORS_MODE_SPECIFIC;
Rave.colors_min = 1;
Rave.colors_max = 2;
Rave.brightness_min = GMOW_BRIGHTNESS_MIN;
Rave.brightness = GMOW_BRIGHTNESS_MID;
Rave.brightness_max = GMOW_BRIGHTNESS_MAX;
Rave.value = GMOW_MODE_RAVE;
Rave.colors.resize(2);
modes.push_back(Rave);
mode Wave;
Wave.name = "Wave";
Wave.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
Wave.speed_min = GMOW_SPEED2_MIN;
Wave.speed = GMOW_SPEED2_MID;
Wave.speed_max = GMOW_SPEED2_MAX;
Wave.color_mode = MODE_COLORS_NONE;
Wave.brightness_min = GMOW_BRIGHTNESS_MIN;
Wave.brightness = GMOW_BRIGHTNESS_MID;
Wave.brightness_max = GMOW_BRIGHTNESS_MAX;
Wave.value = GMOW_MODE_WAVE;
Wave.name = "Wave";
Wave.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
Wave.speed_min = GMOW_SPEED2_MIN;
Wave.speed = GMOW_SPEED2_MID;
Wave.speed_max = GMOW_SPEED2_MAX;
Wave.color_mode = MODE_COLORS_NONE;
Wave.brightness_min = GMOW_BRIGHTNESS_MIN;
Wave.brightness = GMOW_BRIGHTNESS_MID;
Wave.brightness_max = GMOW_BRIGHTNESS_MAX;
Wave.value = GMOW_MODE_WAVE;
modes.push_back(Wave);
SetupZones();

View file

@ -15,10 +15,12 @@
#include "SinowealthGMOWController.h"
#include "StringUtils.h"
SinowealthGMOWController::SinowealthGMOWController(hid_device* dev_handle, char *_path, int _type)
SinowealthGMOWController::SinowealthGMOWController(hid_device* dev_handle, char *_path, int _type, std::string dev_name)
{
dev = dev_handle;
location = _path;
dev = dev_handle;
location = _path;
name = dev_name;
type = _type;
memset(mode_packet,0x00, GMOW_PACKET_SIZE);
mode_packet[0x03] = 0x02;
@ -35,8 +37,6 @@ SinowealthGMOWController::SinowealthGMOWController(hid_device* dev_handle, char
memcpy(less_packet, wired_packet, GMOW_PACKET_SIZE);
less_packet[0x07] = 0x00;
type = _type;
}
SinowealthGMOWController::~SinowealthGMOWController()
@ -49,6 +49,11 @@ std::string SinowealthGMOWController::GetLocation()
return("HID: " + location);
}
std::string SinowealthGMOWController::GetName()
{
return(name);
}
std::string SinowealthGMOWController::GetSerialString()
{
wchar_t serial_string[128];

View file

@ -59,10 +59,11 @@ enum
class SinowealthGMOWController
{
public:
SinowealthGMOWController(hid_device* dev_handle, char *_path, int type);
SinowealthGMOWController(hid_device* dev_handle, char *_path, int type, std::string dev_name);
~SinowealthGMOWController();
std::string GetLocation();
std::string GetName();
std::string GetSerialString();
void SetMode(unsigned char mode,
@ -81,5 +82,6 @@ private:
unsigned char less_packet[GMOW_PACKET_SIZE];
std::string location;
std::string name;
int type;
};

View file

@ -182,13 +182,13 @@ static const char *led_names_tkl[] =
RGBController_SinowealthKeyboard16::RGBController_SinowealthKeyboard16(SinowealthKeyboard16Controller* controller_ptr)
{
controller = controller_ptr;
controller = controller_ptr;
name = "Sinowealth Keyboard";
type = DEVICE_TYPE_KEYBOARD;
description = "Generic Sinowealth Keyboard";
location = controller->GetLocation();
serial = controller->GetSerialString();
name = controller->GetName();
type = DEVICE_TYPE_KEYBOARD;
description = "Sinowealth Keyboard Device";
location = controller->GetLocation();
serial = controller->GetSerialString();
std::vector<ModeCfg> modes_cfg = controller->GetDeviceModes();
std::vector<ModeColorCfg> color_presets = controller->GetDeviceColors();

View file

@ -56,6 +56,11 @@ std::string SinowealthKeyboard16Controller::GetLocation()
return("HID: " + location);
}
std::string SinowealthKeyboard16Controller::GetName()
{
return(name);
}
unsigned char SinowealthKeyboard16Controller::GetCurrentMode()
{
return current_mode;

View file

@ -109,6 +109,7 @@ public:
unsigned int GetLEDCount();
std::string GetLocation();
std::string GetName();
std::string GetSerialString();
unsigned char GetCurrentMode();
std::vector<ModeCfg> GetDeviceModes();

View file

@ -28,7 +28,7 @@ RGBController_SinowealthKeyboard90::RGBController_SinowealthKeyboard90(Sinowealt
{
controller = controller_ptr;
name = "Genesis Thor 300";
name = controller->GetNameString();
vendor = "Sinowealth";
type = DEVICE_TYPE_KEYBOARD;
description = "Generic Sinowealth Keyboard";

View file

@ -15,10 +15,11 @@
using namespace thor300;
SinowealthKeyboard90Controller::SinowealthKeyboard90Controller(hid_device* dev_handle, const char* path, const unsigned short pid)
SinowealthKeyboard90Controller::SinowealthKeyboard90Controller(hid_device* dev_handle, const char* path, const unsigned short pid, std::string dev_name)
{
dev = dev_handle;
location = path;
name = dev_name;
usb_pid = pid;
}
@ -32,6 +33,11 @@ std::string SinowealthKeyboard90Controller::GetDeviceLocation()
return("HID: " + location);
}
std::string SinowealthKeyboard90Controller::GetNameString()
{
return(name);
}
std::string SinowealthKeyboard90Controller::GetSerialString()
{
wchar_t serial_string[128];

View file

@ -201,11 +201,13 @@ namespace thor300
class SinowealthKeyboard90Controller
{
public:
SinowealthKeyboard90Controller(hid_device* dev_handle, const char* path, const unsigned short pid);
SinowealthKeyboard90Controller(hid_device* dev_handle, const char* path, const unsigned short pid, std::string dev_name);
~SinowealthKeyboard90Controller();
std::string GetDeviceLocation();
std::string GetNameString();
std::string GetSerialString();
unsigned short GetUSBPID();
void SendMode

View file

@ -131,273 +131,273 @@ static const char *led_names_tkl[] =
RGBController_SinowealthKeyboard::RGBController_SinowealthKeyboard(SinowealthKeyboardController* controller_ptr)
{
controller = controller_ptr;
controller = controller_ptr;
name = "Sinowealth Keyboard";
type = DEVICE_TYPE_KEYBOARD;
description = "Sinowealth Keyboard";
location = controller->GetLocation();
serial = controller->GetSerialString();
name = controller->GetName();
type = DEVICE_TYPE_KEYBOARD;
description = "Sinowealth Keyboard Device";
location = controller->GetLocation();
serial = controller->GetSerialString();
mode Static;
Static.name = "Static";
Static.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR;
Static.color_mode = MODE_COLORS_MODE_SPECIFIC;
Static.value = MODE_STATIC;
Static.colors_min = 1;
Static.colors_max = 1;
Static.name = "Static";
Static.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR;
Static.color_mode = MODE_COLORS_MODE_SPECIFIC;
Static.value = MODE_STATIC;
Static.colors_min = 1;
Static.colors_max = 1;
Static.colors.resize(1);
modes.push_back(Static);
mode Custom;
Custom.name = "Custom";
Custom.flags = MODE_FLAG_HAS_PER_LED_COLOR;
Custom.color_mode = MODE_COLORS_PER_LED;
Custom.value = MODE_PER_KEY;
Custom.name = "Custom";
Custom.flags = MODE_FLAG_HAS_PER_LED_COLOR;
Custom.color_mode = MODE_COLORS_PER_LED;
Custom.value = MODE_PER_KEY;
modes.push_back(Custom);
mode Off;
Off.name = "Off";
Off.flags = 0;
Off.color_mode = MODE_COLORS_NONE;
Off.value = MODE_OFF;
Off.name = "Off";
Off.flags = 0;
Off.color_mode = MODE_COLORS_NONE;
Off.value = MODE_OFF;
modes.push_back(Off);
mode Respire;
Respire.name = "Respire";
Respire.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
Respire.speed_min = SPEED_SLOW;
Respire.speed = SPEED_NORMAL;
Respire.speed_max = SPEED_FASTEST;
Respire.color_mode = MODE_COLORS_RANDOM;
Respire.value = MODE_RESPIRE;
Respire.colors_min = 1;
Respire.colors_max = 1;
Respire.name = "Respire";
Respire.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
Respire.speed_min = SPEED_SLOW;
Respire.speed = SPEED_NORMAL;
Respire.speed_max = SPEED_FASTEST;
Respire.color_mode = MODE_COLORS_RANDOM;
Respire.value = MODE_RESPIRE;
Respire.colors_min = 1;
Respire.colors_max = 1;
Respire.colors.resize(1);
modes.push_back(Respire);
mode Rainbow;
Rainbow.name = "Rainbow";
Rainbow.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS;
Rainbow.speed_min = SPEED_SLOW;
Rainbow.speed = SPEED_NORMAL;
Rainbow.speed_max = SPEED_FASTEST;
Rainbow.color_mode = MODE_COLORS_NONE;
Rainbow.value = MODE_RAINBOW;
Rainbow.name = "Rainbow";
Rainbow.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS;
Rainbow.speed_min = SPEED_SLOW;
Rainbow.speed = SPEED_NORMAL;
Rainbow.speed_max = SPEED_FASTEST;
Rainbow.color_mode = MODE_COLORS_NONE;
Rainbow.value = MODE_RAINBOW;
modes.push_back(Rainbow);
mode FlashAway;
FlashAway.name = "Flash Away";
FlashAway.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
FlashAway.speed_min = SPEED_SLOW;
FlashAway.speed = SPEED_NORMAL;
FlashAway.speed_max = SPEED_FASTEST;
FlashAway.color_mode = MODE_COLORS_RANDOM;
FlashAway.value = MODE_FLASH_AWAY;
FlashAway.colors_min = 1;
FlashAway.colors_max = 1;
FlashAway.name = "Flash Away";
FlashAway.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
FlashAway.speed_min = SPEED_SLOW;
FlashAway.speed = SPEED_NORMAL;
FlashAway.speed_max = SPEED_FASTEST;
FlashAway.color_mode = MODE_COLORS_RANDOM;
FlashAway.value = MODE_FLASH_AWAY;
FlashAway.colors_min = 1;
FlashAway.colors_max = 1;
FlashAway.colors.resize(1);
modes.push_back(FlashAway);
mode Raindrops;
Raindrops.name = "Raindrops";
Raindrops.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
Raindrops.speed_min = SPEED_SLOW;
Raindrops.speed = SPEED_NORMAL;
Raindrops.speed_max = SPEED_FASTEST;
Raindrops.color_mode = MODE_COLORS_RANDOM;
Raindrops.value = MODE_RAINDROPS;
Raindrops.colors_min = 1;
Raindrops.colors_max = 1;
Raindrops.name = "Raindrops";
Raindrops.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
Raindrops.speed_min = SPEED_SLOW;
Raindrops.speed = SPEED_NORMAL;
Raindrops.speed_max = SPEED_FASTEST;
Raindrops.color_mode = MODE_COLORS_RANDOM;
Raindrops.value = MODE_RAINDROPS;
Raindrops.colors_min = 1;
Raindrops.colors_max = 1;
Raindrops.colors.resize(1);
modes.push_back(Raindrops);
mode RainbowWheel;
RainbowWheel.name = "Rainbow Wheel";
RainbowWheel.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
RainbowWheel.speed_min = SPEED_SLOW;
RainbowWheel.speed = SPEED_NORMAL;
RainbowWheel.speed_max = SPEED_FASTEST;
RainbowWheel.color_mode = MODE_COLORS_RANDOM;
RainbowWheel.value = MODE_RAINBOW_WHEEL;
RainbowWheel.colors_min = 1;
RainbowWheel.colors_max = 1;
RainbowWheel.name = "Rainbow Wheel";
RainbowWheel.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
RainbowWheel.speed_min = SPEED_SLOW;
RainbowWheel.speed = SPEED_NORMAL;
RainbowWheel.speed_max = SPEED_FASTEST;
RainbowWheel.color_mode = MODE_COLORS_RANDOM;
RainbowWheel.value = MODE_RAINBOW_WHEEL;
RainbowWheel.colors_min = 1;
RainbowWheel.colors_max = 1;
RainbowWheel.colors.resize(1);
modes.push_back(RainbowWheel);
mode RipplesShining;
RipplesShining.name = "Ripples Shining";
RipplesShining.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
RipplesShining.speed_min = SPEED_SLOW;
RipplesShining.speed = SPEED_NORMAL;
RipplesShining.speed_max = SPEED_FASTEST;
RipplesShining.color_mode = MODE_COLORS_RANDOM;
RipplesShining.value = MODE_RIPPLES_SHINING;
RipplesShining.colors_min = 1;
RipplesShining.colors_max = 1;
RipplesShining.name = "Ripples Shining";
RipplesShining.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
RipplesShining.speed_min = SPEED_SLOW;
RipplesShining.speed = SPEED_NORMAL;
RipplesShining.speed_max = SPEED_FASTEST;
RipplesShining.color_mode = MODE_COLORS_RANDOM;
RipplesShining.value = MODE_RIPPLES_SHINING;
RipplesShining.colors_min = 1;
RipplesShining.colors_max = 1;
RipplesShining.colors.resize(1);
modes.push_back(RipplesShining);
mode StarsTwinkle;
StarsTwinkle.name = "Stars Twinkle";
StarsTwinkle.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
StarsTwinkle.speed_min = SPEED_SLOW;
StarsTwinkle.speed = SPEED_NORMAL;
StarsTwinkle.speed_max = SPEED_FASTEST;
StarsTwinkle.color_mode = MODE_COLORS_RANDOM;
StarsTwinkle.value = MODE_STARS_TWINKLE;
StarsTwinkle.colors_min = 1;
StarsTwinkle.colors_max = 1;
StarsTwinkle.name = "Stars Twinkle";
StarsTwinkle.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
StarsTwinkle.speed_min = SPEED_SLOW;
StarsTwinkle.speed = SPEED_NORMAL;
StarsTwinkle.speed_max = SPEED_FASTEST;
StarsTwinkle.color_mode = MODE_COLORS_RANDOM;
StarsTwinkle.value = MODE_STARS_TWINKLE;
StarsTwinkle.colors_min = 1;
StarsTwinkle.colors_max = 1;
StarsTwinkle.colors.resize(1);
modes.push_back(StarsTwinkle);
mode ShadowDisappear;
ShadowDisappear.name = "Shadow Disappear";
ShadowDisappear.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
ShadowDisappear.speed_min = SPEED_SLOW;
ShadowDisappear.speed = SPEED_NORMAL;
ShadowDisappear.speed_max = SPEED_FASTEST;
ShadowDisappear.color_mode = MODE_COLORS_RANDOM;
ShadowDisappear.value = MODE_SHADOW_DISAPPEAR;
ShadowDisappear.colors_min = 1;
ShadowDisappear.colors_max = 1;
ShadowDisappear.name = "Shadow Disappear";
ShadowDisappear.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
ShadowDisappear.speed_min = SPEED_SLOW;
ShadowDisappear.speed = SPEED_NORMAL;
ShadowDisappear.speed_max = SPEED_FASTEST;
ShadowDisappear.color_mode = MODE_COLORS_RANDOM;
ShadowDisappear.value = MODE_SHADOW_DISAPPEAR;
ShadowDisappear.colors_min = 1;
ShadowDisappear.colors_max = 1;
ShadowDisappear.colors.resize(1);
modes.push_back(ShadowDisappear);
mode RetroSnake;
RetroSnake.name = "Retro Snake";
RetroSnake.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
RetroSnake.speed_min = SPEED_SLOW;
RetroSnake.speed = SPEED_NORMAL;
RetroSnake.speed_max = SPEED_FASTEST;
RetroSnake.color_mode = MODE_COLORS_RANDOM;
RetroSnake.value = MODE_RETRO_SNAKE;
RetroSnake.colors_min = 1;
RetroSnake.colors_max = 1;
RetroSnake.name = "Retro Snake";
RetroSnake.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
RetroSnake.speed_min = SPEED_SLOW;
RetroSnake.speed = SPEED_NORMAL;
RetroSnake.speed_max = SPEED_FASTEST;
RetroSnake.color_mode = MODE_COLORS_RANDOM;
RetroSnake.value = MODE_RETRO_SNAKE;
RetroSnake.colors_min = 1;
RetroSnake.colors_max = 1;
RetroSnake.colors.resize(1);
modes.push_back(RetroSnake);
mode NeonStream;
NeonStream.name = "Neon Stream";
NeonStream.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
NeonStream.speed_min = SPEED_SLOW;
NeonStream.speed = SPEED_NORMAL;
NeonStream.speed_max = SPEED_FASTEST;
NeonStream.color_mode = MODE_COLORS_RANDOM;
NeonStream.value = MODE_NEON_STREAM;
NeonStream.colors_min = 1;
NeonStream.colors_max = 1;
NeonStream.name = "Neon Stream";
NeonStream.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
NeonStream.speed_min = SPEED_SLOW;
NeonStream.speed = SPEED_NORMAL;
NeonStream.speed_max = SPEED_FASTEST;
NeonStream.color_mode = MODE_COLORS_RANDOM;
NeonStream.value = MODE_NEON_STREAM;
NeonStream.colors_min = 1;
NeonStream.colors_max = 1;
NeonStream.colors.resize(1);
modes.push_back(NeonStream);
mode Reaction;
Reaction.name = "Reaction";
Reaction.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
Reaction.speed_min = SPEED_SLOW;
Reaction.speed = SPEED_NORMAL;
Reaction.speed_max = SPEED_FASTEST;
Reaction.color_mode = MODE_COLORS_RANDOM;
Reaction.value = MODE_REACTION;
Reaction.colors_min = 1;
Reaction.colors_max = 1;
Reaction.name = "Reaction";
Reaction.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
Reaction.speed_min = SPEED_SLOW;
Reaction.speed = SPEED_NORMAL;
Reaction.speed_max = SPEED_FASTEST;
Reaction.color_mode = MODE_COLORS_RANDOM;
Reaction.value = MODE_REACTION;
Reaction.colors_min = 1;
Reaction.colors_max = 1;
Reaction.colors.resize(1);
modes.push_back(Reaction);
mode SineWave;
SineWave.name = "Sine Wave";
SineWave.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
SineWave.speed_min = SPEED_SLOW;
SineWave.speed = SPEED_NORMAL;
SineWave.speed_max = SPEED_FASTEST;
SineWave.color_mode = MODE_COLORS_RANDOM;
SineWave.value = MODE_SINE_WAVE;
SineWave.colors_min = 1;
SineWave.colors_max = 1;
SineWave.name = "Sine Wave";
SineWave.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
SineWave.speed_min = SPEED_SLOW;
SineWave.speed = SPEED_NORMAL;
SineWave.speed_max = SPEED_FASTEST;
SineWave.color_mode = MODE_COLORS_RANDOM;
SineWave.value = MODE_SINE_WAVE;
SineWave.colors_min = 1;
SineWave.colors_max = 1;
SineWave.colors.resize(1);
modes.push_back(SineWave);
mode RetinueScanning;
RetinueScanning.name = "Retinue Scanning";
RetinueScanning.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
RetinueScanning.speed_min = SPEED_SLOW;
RetinueScanning.speed = SPEED_NORMAL;
RetinueScanning.speed_max = SPEED_FASTEST;
RetinueScanning.color_mode = MODE_COLORS_RANDOM;
RetinueScanning.value = MODE_RETINUE_SCANNING;
RetinueScanning.colors_min = 1;
RetinueScanning.colors_max = 1;
RetinueScanning.name = "Retinue Scanning";
RetinueScanning.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
RetinueScanning.speed_min = SPEED_SLOW;
RetinueScanning.speed = SPEED_NORMAL;
RetinueScanning.speed_max = SPEED_FASTEST;
RetinueScanning.color_mode = MODE_COLORS_RANDOM;
RetinueScanning.value = MODE_RETINUE_SCANNING;
RetinueScanning.colors_min = 1;
RetinueScanning.colors_max = 1;
RetinueScanning.colors.resize(1);
modes.push_back(RetinueScanning);
mode RotatingWindmill;
RotatingWindmill.name = "Rotating Windmill";
RotatingWindmill.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
RotatingWindmill.speed_min = SPEED_SLOW;
RotatingWindmill.speed = SPEED_NORMAL;
RotatingWindmill.speed_max = SPEED_FASTEST;
RotatingWindmill.color_mode = MODE_COLORS_RANDOM;
RotatingWindmill.value = MODE_ROTATING_WINDMILL;
RotatingWindmill.colors_min = 1;
RotatingWindmill.colors_max = 1;
RotatingWindmill.name = "Rotating Windmill";
RotatingWindmill.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
RotatingWindmill.speed_min = SPEED_SLOW;
RotatingWindmill.speed = SPEED_NORMAL;
RotatingWindmill.speed_max = SPEED_FASTEST;
RotatingWindmill.color_mode = MODE_COLORS_RANDOM;
RotatingWindmill.value = MODE_ROTATING_WINDMILL;
RotatingWindmill.colors_min = 1;
RotatingWindmill.colors_max = 1;
RotatingWindmill.colors.resize(1);
modes.push_back(RotatingWindmill);
mode ColorfulWaterfall;
ColorfulWaterfall.name = "Colorful Waterfall";
ColorfulWaterfall.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS;
ColorfulWaterfall.speed_min = SPEED_SLOW;
ColorfulWaterfall.speed = SPEED_NORMAL;
ColorfulWaterfall.speed_max = SPEED_FASTEST;
ColorfulWaterfall.color_mode = MODE_COLORS_NONE;
ColorfulWaterfall.value = MODE_COLORFUL_WATERFALL;
ColorfulWaterfall.name = "Colorful Waterfall";
ColorfulWaterfall.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS;
ColorfulWaterfall.speed_min = SPEED_SLOW;
ColorfulWaterfall.speed = SPEED_NORMAL;
ColorfulWaterfall.speed_max = SPEED_FASTEST;
ColorfulWaterfall.color_mode = MODE_COLORS_NONE;
ColorfulWaterfall.value = MODE_COLORFUL_WATERFALL;
modes.push_back(ColorfulWaterfall);
mode Blossoming;
Blossoming.name = "Blossoming";
Blossoming.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS;
Blossoming.speed_min = SPEED_SLOW;
Blossoming.speed = SPEED_NORMAL;
Blossoming.speed_max = SPEED_FASTEST;
Blossoming.color_mode = MODE_COLORS_NONE;
Blossoming.value = MODE_BLOSSOMING;
Blossoming.name = "Blossoming";
Blossoming.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS;
Blossoming.speed_min = SPEED_SLOW;
Blossoming.speed = SPEED_NORMAL;
Blossoming.speed_max = SPEED_FASTEST;
Blossoming.color_mode = MODE_COLORS_NONE;
Blossoming.value = MODE_BLOSSOMING;
modes.push_back(Blossoming);
mode RotatingStorm;
RotatingStorm.name = "Rotating Storm";
RotatingStorm.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
RotatingStorm.speed_min = SPEED_SLOW;
RotatingStorm.speed = SPEED_NORMAL;
RotatingStorm.speed_max = SPEED_FASTEST;
RotatingStorm.color_mode = MODE_COLORS_RANDOM;
RotatingStorm.value = MODE_ROTATING_STORM;
RotatingStorm.colors_min = 1;
RotatingStorm.colors_max = 1;
RotatingStorm.name = "Rotating Storm";
RotatingStorm.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
RotatingStorm.speed_min = SPEED_SLOW;
RotatingStorm.speed = SPEED_NORMAL;
RotatingStorm.speed_max = SPEED_FASTEST;
RotatingStorm.color_mode = MODE_COLORS_RANDOM;
RotatingStorm.value = MODE_ROTATING_STORM;
RotatingStorm.colors_min = 1;
RotatingStorm.colors_max = 1;
RotatingStorm.colors.resize(1);
modes.push_back(RotatingStorm);
mode Collision;
Collision.name = "Collision";
Collision.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
Collision.speed_min = SPEED_SLOW;
Collision.speed = SPEED_NORMAL;
Collision.speed_max = SPEED_FASTEST;
Collision.color_mode = MODE_COLORS_RANDOM;
Collision.value = MODE_COLLISION;
Collision.colors_min = 1;
Collision.colors_max = 1;
Collision.name = "Collision";
Collision.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
Collision.speed_min = SPEED_SLOW;
Collision.speed = SPEED_NORMAL;
Collision.speed_max = SPEED_FASTEST;
Collision.color_mode = MODE_COLORS_RANDOM;
Collision.value = MODE_COLLISION;
Collision.colors_min = 1;
Collision.colors_max = 1;
Collision.colors.resize(1);
modes.push_back(Collision);
mode Perfect;
Perfect.name = "Perfect";
Perfect.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
Perfect.speed_min = SPEED_SLOW;
Perfect.speed = SPEED_NORMAL;
Perfect.speed_max = SPEED_FASTEST;
Perfect.color_mode = MODE_COLORS_RANDOM;
Perfect.value = MODE_PERFECT;
Perfect.colors_min = 1;
Perfect.colors_max = 1;
Perfect.name = "Perfect";
Perfect.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
Perfect.speed_min = SPEED_SLOW;
Perfect.speed = SPEED_NORMAL;
Perfect.speed_max = SPEED_FASTEST;
Perfect.color_mode = MODE_COLORS_RANDOM;
Perfect.value = MODE_PERFECT;
Perfect.colors_min = 1;
Perfect.colors_max = 1;
Perfect.colors.resize(1);
modes.push_back(Perfect);

View file

@ -71,10 +71,11 @@ static unsigned int keys_tkl_keys_indices_static_command[] = { 0x0022, 0x0024,
0x01E0, 0x01E2, 0x01E4, 0x01E6, 0x01E7, 0x01E8, 0x01E9, 0x01EA};
SinowealthKeyboardController::SinowealthKeyboardController(hid_device* dev_cmd_handle, hid_device* dev_data_handle, char* path)
SinowealthKeyboardController::SinowealthKeyboardController(hid_device* dev_cmd_handle, hid_device* dev_data_handle, char* path, std::string dev_name)
{
dev_cmd = dev_cmd_handle;
dev_data = dev_data_handle;
dev_cmd = dev_cmd_handle;
dev_data = dev_data_handle;
name = dev_name;
led_count = sizeof(tkl_keys_per_key_index) / sizeof(*tkl_keys_per_key_index);
@ -95,6 +96,11 @@ std::string SinowealthKeyboardController::GetLocation()
return("HID: " + location);
}
std::string SinowealthKeyboardController::GetName()
{
return(name);
}
unsigned char SinowealthKeyboardController::GetCurrentMode()
{
return current_mode;

View file

@ -61,11 +61,12 @@ enum
class SinowealthKeyboardController
{
public:
SinowealthKeyboardController(hid_device* dev_cmd_handle, hid_device* dev_data_handle, char *_path); //RGB, Command, path
SinowealthKeyboardController(hid_device* dev_cmd_handle, hid_device* dev_data_handle, char *_path, std::string dev_name); //RGB, Command, path
~SinowealthKeyboardController();
unsigned int GetLEDCount();
std::string GetLocation();
std::string GetName();
std::string GetSerialString();
unsigned char GetCurrentMode();
@ -79,11 +80,9 @@ private:
hid_device* dev_cmd;
hid_device* dev_data;
device_type type;
unsigned int led_count;
unsigned char current_mode;
unsigned char current_speed;
std::string location;
std::string name;
};