Store name in ZalmanZSyncController to avoid setting it in detector

This commit is contained in:
Adam Honse 2025-08-14 23:01:51 -05:00
parent 84c24e70c0
commit 4e96056ac4
4 changed files with 116 additions and 109 deletions

View file

@ -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();

View file

@ -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];

View file

@ -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;

View file

@ -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);
} }