From ca73941e5dacd06c44cada3294bb71f7d847889d Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Mon, 11 Aug 2025 18:07:13 -0500 Subject: [PATCH] Store name in IonicoController to avoid setting it in detector --- .../IonicoController/IonicoController.cpp | 8 +- .../IonicoController/IonicoController.h | 5 +- .../IonicoControllerDetect.cpp | 3 +- .../IonicoController/RGBController_Ionico.cpp | 81 ++++++++++--------- 4 files changed, 52 insertions(+), 45 deletions(-) diff --git a/Controllers/IonicoController/IonicoController.cpp b/Controllers/IonicoController/IonicoController.cpp index 96259187..005d7c5f 100644 --- a/Controllers/IonicoController/IonicoController.cpp +++ b/Controllers/IonicoController/IonicoController.cpp @@ -12,11 +12,12 @@ #include #include "IonicoController.h" -IonicoController::IonicoController(hid_device* dev_handle, const hid_device_info& info, const unsigned short pid) +IonicoController::IonicoController(hid_device* dev_handle, const hid_device_info& info, const unsigned short pid, std::string dev_name) { dev = dev_handle; location = info.path; usb_pid = pid; + name = dev_name; } IonicoController::~IonicoController() @@ -29,6 +30,11 @@ std::string IonicoController::GetDeviceLocation() return("HID: " + location); } +std::string IonicoController::GetDeviceName() +{ + return(name); +} + uint16_t IonicoController::GetUSBPID() { return(usb_pid); diff --git a/Controllers/IonicoController/IonicoController.h b/Controllers/IonicoController/IonicoController.h index c638a292..c87a84c4 100644 --- a/Controllers/IonicoController/IonicoController.h +++ b/Controllers/IonicoController/IonicoController.h @@ -41,10 +41,11 @@ enum class IonicoController { public: - IonicoController(hid_device* dev_handle, const hid_device_info& info, const unsigned short pid); + IonicoController(hid_device* dev_handle, const hid_device_info& info, const unsigned short pid, std::string dev_name); ~IonicoController(); std::string GetDeviceLocation(); + std::string GetDeviceName(); void SetMode(uint8_t mode_value, uint8_t brightness, uint8_t speed); void SetColors(int device, std::vector array_colors, bool is_mode); @@ -55,7 +56,7 @@ class IonicoController private: hid_device* dev; std::string location; + std::string name; std::string serial_number; - std::string version; uint16_t usb_pid; }; diff --git a/Controllers/IonicoController/IonicoControllerDetect.cpp b/Controllers/IonicoController/IonicoControllerDetect.cpp index d13e2ebf..ce8a18b8 100644 --- a/Controllers/IonicoController/IonicoControllerDetect.cpp +++ b/Controllers/IonicoController/IonicoControllerDetect.cpp @@ -34,9 +34,8 @@ void DetectIonicoControllers(hid_device_info* info, const std::string& name) if(dev) { - IonicoController* controller = new IonicoController(dev, *info, info->product_id); + IonicoController* controller = new IonicoController(dev, *info, info->product_id, name); RGBController_Ionico* rgb_controller = new RGBController_Ionico(controller); - rgb_controller->name = name; if(info->product_id == IONICO_KB_PID) { diff --git a/Controllers/IonicoController/RGBController_Ionico.cpp b/Controllers/IonicoController/RGBController_Ionico.cpp index 5fd3c776..abb38a25 100644 --- a/Controllers/IonicoController/RGBController_Ionico.cpp +++ b/Controllers/IonicoController/RGBController_Ionico.cpp @@ -26,7 +26,8 @@ RGBController_Ionico::RGBController_Ionico(IonicoController* controller_ptr) { controller = controller_ptr; - name = "Ionico"; + + name = controller->GetDeviceName(); vendor = "Pcspecialist"; description = name; location = controller->GetDeviceLocation(); @@ -43,21 +44,21 @@ RGBController_Ionico::RGBController_Ionico(IonicoController* controller_ptr) modes.push_back(Direct); mode Breathing; - Breathing.name = "Breathing"; - Breathing.value = IONICO_MODE_BREATHING; - Breathing.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_MANUAL_SAVE; - Breathing.color_mode = MODE_COLORS_MODE_SPECIFIC; - Breathing.speed_min = IONICO_DIRECT_SPEED_MIN; - Breathing.speed_max = IONICO_DIRECT_SPEED_MAX; - Breathing.speed = IONICO_DIRECT_SPEED_DEFAULT; - Breathing.brightness_min = IONICO_DIRECT_BRIGHTNESS_MIN; - Breathing.brightness_max = IONICO_DIRECT_BRIGHTNESS_MAX; - Breathing.brightness = IONICO_DIRECT_BRIGHTNESS_MAX; + Breathing.name = "Breathing"; + Breathing.value = IONICO_MODE_BREATHING; + Breathing.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_MANUAL_SAVE; + Breathing.color_mode = MODE_COLORS_MODE_SPECIFIC; + Breathing.speed_min = IONICO_DIRECT_SPEED_MIN; + Breathing.speed_max = IONICO_DIRECT_SPEED_MAX; + Breathing.speed = IONICO_DIRECT_SPEED_DEFAULT; + Breathing.brightness_min = IONICO_DIRECT_BRIGHTNESS_MIN; + Breathing.brightness_max = IONICO_DIRECT_BRIGHTNESS_MAX; + Breathing.brightness = IONICO_DIRECT_BRIGHTNESS_MAX; Breathing.colors.resize(7); modes.push_back(Breathing); mode Wave; - Wave.name = "Wave"; + Wave.name = "Wave"; if(controller->GetUSBPID() == IONICO_KB_PID) { Wave.value = IONICO_MODE_WAVE; @@ -66,30 +67,30 @@ RGBController_Ionico::RGBController_Ionico(IonicoController* controller_ptr) { Wave.value = IONICO_FB_MODE_WAVE; } - Wave.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_MANUAL_SAVE; - Wave.color_mode = MODE_COLORS_MODE_SPECIFIC; - Wave.speed_min = IONICO_DIRECT_SPEED_MIN; - Wave.speed_max = IONICO_DIRECT_SPEED_MAX; - Wave.speed = IONICO_DIRECT_SPEED_DEFAULT; - Wave.brightness_min = IONICO_DIRECT_BRIGHTNESS_MIN; - Wave.brightness_max = IONICO_DIRECT_BRIGHTNESS_MAX; - Wave.brightness = IONICO_DIRECT_BRIGHTNESS_MAX; + Wave.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_MANUAL_SAVE; + Wave.color_mode = MODE_COLORS_MODE_SPECIFIC; + Wave.speed_min = IONICO_DIRECT_SPEED_MIN; + Wave.speed_max = IONICO_DIRECT_SPEED_MAX; + Wave.speed = IONICO_DIRECT_SPEED_DEFAULT; + Wave.brightness_min = IONICO_DIRECT_BRIGHTNESS_MIN; + Wave.brightness_max = IONICO_DIRECT_BRIGHTNESS_MAX; + Wave.brightness = IONICO_DIRECT_BRIGHTNESS_MAX; Wave.colors.resize(7); modes.push_back(Wave); if(controller->GetUSBPID() == IONICO_KB_PID) { mode Flash; - Flash.name = "Flashing"; - Flash.value = IONICO_MODE_FLASH; - Flash.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_MANUAL_SAVE; - Flash.color_mode = MODE_COLORS_MODE_SPECIFIC; - Flash.speed_min = IONICO_DIRECT_SPEED_MIN; - Flash.speed_max = IONICO_DIRECT_SPEED_MAX; - Flash.speed = IONICO_DIRECT_SPEED_DEFAULT; - Flash.brightness_min = IONICO_DIRECT_BRIGHTNESS_MIN; - Flash.brightness_max = IONICO_DIRECT_BRIGHTNESS_MAX; - Flash.brightness = IONICO_DIRECT_BRIGHTNESS_MAX; + Flash.name = "Flashing"; + Flash.value = IONICO_MODE_FLASH; + Flash.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_MANUAL_SAVE; + Flash.color_mode = MODE_COLORS_MODE_SPECIFIC; + Flash.speed_min = IONICO_DIRECT_SPEED_MIN; + Flash.speed_max = IONICO_DIRECT_SPEED_MAX; + Flash.speed = IONICO_DIRECT_SPEED_DEFAULT; + Flash.brightness_min = IONICO_DIRECT_BRIGHTNESS_MIN; + Flash.brightness_max = IONICO_DIRECT_BRIGHTNESS_MAX; + Flash.brightness = IONICO_DIRECT_BRIGHTNESS_MAX; Flash.colors.resize(7); modes.push_back(Flash); } @@ -97,16 +98,16 @@ RGBController_Ionico::RGBController_Ionico(IonicoController* controller_ptr) if(controller->GetUSBPID() == IONICO_FB_PID) { mode Raindrops; - Raindrops.name = "Raindrops"; - Raindrops.value = IONICO_MODE_RAIN; - Raindrops.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_MANUAL_SAVE; - Raindrops.color_mode = MODE_COLORS_MODE_SPECIFIC; - Raindrops.speed_min = IONICO_DIRECT_SPEED_MIN; - Raindrops.speed_max = IONICO_DIRECT_SPEED_MAX; - Raindrops.speed = IONICO_DIRECT_SPEED_DEFAULT; - Raindrops.brightness_min = IONICO_DIRECT_BRIGHTNESS_MIN; - Raindrops.brightness_max = IONICO_DIRECT_BRIGHTNESS_MAX; - Raindrops.brightness = IONICO_DIRECT_BRIGHTNESS_MAX; + Raindrops.name = "Raindrops"; + Raindrops.value = IONICO_MODE_RAIN; + Raindrops.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_MANUAL_SAVE; + Raindrops.color_mode = MODE_COLORS_MODE_SPECIFIC; + Raindrops.speed_min = IONICO_DIRECT_SPEED_MIN; + Raindrops.speed_max = IONICO_DIRECT_SPEED_MAX; + Raindrops.speed = IONICO_DIRECT_SPEED_DEFAULT; + Raindrops.brightness_min = IONICO_DIRECT_BRIGHTNESS_MIN; + Raindrops.brightness_max = IONICO_DIRECT_BRIGHTNESS_MAX; + Raindrops.brightness = IONICO_DIRECT_BRIGHTNESS_MAX; Raindrops.colors.resize(7); modes.push_back(Raindrops); }