From abd34f1810e834dd12372f105d009053612e2d49 Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Thu, 31 Jul 2025 18:36:06 -0500 Subject: [PATCH] Rework RGBControllers and detectors that set string fields other than name outside of the RGBController --- .../ENESMBusController/RGBController_ENESMBus.cpp | 8 +++++++- .../XPGSpectrixS40GDetect_Linux.cpp | 4 ---- .../XPGSpectrixS40GDetect_Windows.cpp | 4 ---- .../LianLiController/LianLiControllerDetect.cpp | 4 ++-- .../LianLiGAIITrinityController.cpp | 10 ++++++++-- .../LianLiGAIITrinityController.h | 6 +++++- .../RGBController_LianLiGAIITrinity.cpp | 1 + Controllers/PNYGPUController/PNYGPUController.cpp | 12 +++++++++--- Controllers/PNYGPUController/PNYGPUController.h | 4 +++- .../PNYGPUController/PNYGPUControllerDetect.cpp | 4 +--- .../PNYGPUController/RGBController_PNYGPU.cpp | 4 ++-- .../PNYLovelaceGPUControllerDetect.cpp | 1 - .../PalitGPUController/PalitGPUControllerDetect.cpp | 1 - .../PhilipsHueControllerDetect.cpp | 2 +- .../RGBController_PhilipsHueEntertainment.cpp | 2 +- 15 files changed, 40 insertions(+), 27 deletions(-) diff --git a/Controllers/ENESMBusController/RGBController_ENESMBus.cpp b/Controllers/ENESMBusController/RGBController_ENESMBus.cpp index 7e5ac5f5..5640a18b 100644 --- a/Controllers/ENESMBusController/RGBController_ENESMBus.cpp +++ b/Controllers/ENESMBusController/RGBController_ENESMBus.cpp @@ -52,6 +52,7 @@ RGBController_ENESMBus::RGBController_ENESMBus(ENESMBusController * controller_p | the ENE controller's version string | \*---------------------------------------------------------*/ version = controller->GetDeviceName(); + location = controller->GetDeviceLocation(); if((version.find("DIMM_LED") != std::string::npos) || (version.find("AUDA") != std::string::npos) ) { @@ -65,6 +66,12 @@ RGBController_ENESMBus::RGBController_ENESMBus(ENESMBusController * controller_p name = "ASUS ROG Strix Arion"; vendor = "ASUS"; } + else if(location.find("NVMe:") != std::string::npos) + { + type = DEVICE_TYPE_STORAGE; + name = "XPG Spectrix S40G"; + vendor = "XPG"; + } else { type = DEVICE_TYPE_MOTHERBOARD; @@ -72,7 +79,6 @@ RGBController_ENESMBus::RGBController_ENESMBus(ENESMBusController * controller_p vendor = "ASUS"; } - location = controller->GetDeviceLocation(); description = "ENE SMBus Device"; mode Direct; diff --git a/Controllers/ENESMBusController/XPGSpectrixS40GDetect_Linux.cpp b/Controllers/ENESMBusController/XPGSpectrixS40GDetect_Linux.cpp index 8e2dbd18..f684db26 100644 --- a/Controllers/ENESMBusController/XPGSpectrixS40GDetect_Linux.cpp +++ b/Controllers/ENESMBusController/XPGSpectrixS40GDetect_Linux.cpp @@ -82,10 +82,6 @@ void DetectSpectrixS40GControllers() ENESMBusController* controller = new ENESMBusController(interface, 0x67); RGBController_ENESMBus* rgb_controller = new RGBController_ENESMBus(controller); - rgb_controller->name = "XPG Spectrix S40G"; - rgb_controller->type = DEVICE_TYPE_STORAGE; - rgb_controller->vendor = "XPG"; - ResourceManager::get()->RegisterRGBController(rgb_controller); } } diff --git a/Controllers/ENESMBusController/XPGSpectrixS40GDetect_Windows.cpp b/Controllers/ENESMBusController/XPGSpectrixS40GDetect_Windows.cpp index 0a91aa95..5b90e051 100644 --- a/Controllers/ENESMBusController/XPGSpectrixS40GDetect_Windows.cpp +++ b/Controllers/ENESMBusController/XPGSpectrixS40GDetect_Windows.cpp @@ -116,10 +116,6 @@ void DetectSpectrixS40GControllers() ENESMBusController* controller = new ENESMBusController(interface, 0x67); RGBController_ENESMBus* rgb_controller = new RGBController_ENESMBus(controller); - rgb_controller->name = "XPG Spectrix S40G"; - rgb_controller->type = DEVICE_TYPE_STORAGE; - rgb_controller->vendor = "XPG"; - ResourceManager::get()->RegisterRGBController(rgb_controller); } } diff --git a/Controllers/LianLiController/LianLiControllerDetect.cpp b/Controllers/LianLiController/LianLiControllerDetect.cpp index b70dfc6a..9273d231 100644 --- a/Controllers/LianLiController/LianLiControllerDetect.cpp +++ b/Controllers/LianLiController/LianLiControllerDetect.cpp @@ -227,9 +227,9 @@ void DetectLianLiGAIITrinity(hid_device_info* info, const std::string& /*name*/) if(dev) { - LianLiGAIITrinityController* controller = new LianLiGAIITrinityController(dev); + LianLiGAIITrinityController* controller = new LianLiGAIITrinityController(dev, info->path); RGBController_LianLiGAIITrinity* rgb_controller = new RGBController_LianLiGAIITrinity(controller); - rgb_controller->location = "HID: " + std::string(info->path); + ResourceManager::get()->RegisterRGBController(rgb_controller); } } diff --git a/Controllers/LianLiController/LianLiGAIITrinityController/LianLiGAIITrinityController.cpp b/Controllers/LianLiController/LianLiGAIITrinityController/LianLiGAIITrinityController.cpp index 9f02c7fd..6151bc8d 100644 --- a/Controllers/LianLiController/LianLiGAIITrinityController/LianLiGAIITrinityController.cpp +++ b/Controllers/LianLiController/LianLiGAIITrinityController/LianLiGAIITrinityController.cpp @@ -16,9 +16,10 @@ #include "LianLiGAIITrinityController.h" #include "StringUtils.h" -LianLiGAIITrinityController::LianLiGAIITrinityController(hid_device* dev_handle) +LianLiGAIITrinityController::LianLiGAIITrinityController(hid_device* dev_handle, char* path) { - dev = dev_handle; + dev = dev_handle; + location = path; } LianLiGAIITrinityController::~LianLiGAIITrinityController() @@ -29,6 +30,11 @@ LianLiGAIITrinityController::~LianLiGAIITrinityController() } } +std::string LianLiGAIITrinityController::GetLocation() +{ + return("HID: " + location); +} + LianLiGAIITrinityController::GAII_Info LianLiGAIITrinityController::GetControllerInfo() { GAII_Info controllerInfo; diff --git a/Controllers/LianLiController/LianLiGAIITrinityController/LianLiGAIITrinityController.h b/Controllers/LianLiController/LianLiGAIITrinityController/LianLiGAIITrinityController.h index 5859f8a5..3ab8db53 100644 --- a/Controllers/LianLiController/LianLiGAIITrinityController/LianLiGAIITrinityController.h +++ b/Controllers/LianLiController/LianLiGAIITrinityController/LianLiGAIITrinityController.h @@ -11,6 +11,7 @@ #pragma once +#include #include #include #include "RGBController.h" @@ -110,9 +111,11 @@ public: BA_DIRECTION = 0x16, }; - LianLiGAIITrinityController(hid_device* dev_handle); + LianLiGAIITrinityController(hid_device* dev_handle, char* path); ~LianLiGAIITrinityController(); + std::string GetLocation(); + GAII_Info GetControllerInfo(); void SetMode_Rainbow(GAII_Brightness brightness, GAII_Speed speed, GAII_Direction direction); @@ -132,6 +135,7 @@ public: void SetMode_ColorsMorph(GAII_Brightness brightness, GAII_Speed speed, GAII_Direction direction); private: + std::string location; unsigned char* GetRGBControlPacketTemplate(); void SetRGB(unsigned char* usb_buf, RGBColor rgb0) { SetRGB(usb_buf, &rgb0, nullptr, nullptr, nullptr); }; void SetRGB(unsigned char* usb_buf, RGBColor rgb0, RGBColor rgb1) { SetRGB(usb_buf, &rgb0, &rgb1, nullptr, nullptr); }; diff --git a/Controllers/LianLiController/LianLiGAIITrinityController/RGBController_LianLiGAIITrinity.cpp b/Controllers/LianLiController/LianLiGAIITrinityController/RGBController_LianLiGAIITrinity.cpp index ee523972..e2519a3d 100644 --- a/Controllers/LianLiController/LianLiGAIITrinityController/RGBController_LianLiGAIITrinity.cpp +++ b/Controllers/LianLiController/LianLiGAIITrinityController/RGBController_LianLiGAIITrinity.cpp @@ -30,6 +30,7 @@ RGBController_LianLiGAIITrinity::RGBController_LianLiGAIITrinity(LianLiGAIITrini vendor = "Lian Li"; type = DEVICE_TYPE_COOLER; description = "Lian Li Galahad II Trinity AIO"; + location = controller->GetLocation(); LianLiGAIITrinityController::GAII_Info controllerInfo = controller->GetControllerInfo(); version = controllerInfo.version; diff --git a/Controllers/PNYGPUController/PNYGPUController.cpp b/Controllers/PNYGPUController/PNYGPUController.cpp index 137e1ef2..cc2ab6d5 100644 --- a/Controllers/PNYGPUController/PNYGPUController.cpp +++ b/Controllers/PNYGPUController/PNYGPUController.cpp @@ -11,10 +11,11 @@ #include "PNYGPUController.h" -PNYGPUController::PNYGPUController(i2c_smbus_interface* bus, pny_dev_id dev) +PNYGPUController::PNYGPUController(i2c_smbus_interface* bus, pny_dev_id dev, std::string name) { - this->bus = bus; - this->dev = dev; + this->bus = bus; + this->dev = dev; + this->name = name; } PNYGPUController::~PNYGPUController() @@ -22,6 +23,11 @@ PNYGPUController::~PNYGPUController() } +std::string PNYGPUController::GetDeviceName() +{ + return(name); +} + std::string PNYGPUController::GetDeviceLocation() { std::string return_string(bus->device_name); diff --git a/Controllers/PNYGPUController/PNYGPUController.h b/Controllers/PNYGPUController/PNYGPUController.h index 530dff8a..d32f9693 100644 --- a/Controllers/PNYGPUController/PNYGPUController.h +++ b/Controllers/PNYGPUController/PNYGPUController.h @@ -37,9 +37,10 @@ enum class PNYGPUController { public: - PNYGPUController(i2c_smbus_interface* bus, pny_dev_id dev); + PNYGPUController(i2c_smbus_interface* bus, pny_dev_id dev, std::string name); ~PNYGPUController(); + std::string GetDeviceName(); std::string GetDeviceLocation(); void SetOff(); @@ -50,6 +51,7 @@ public: private: i2c_smbus_interface* bus; pny_dev_id dev; + std::string name; void WriteI2CData(u8 command, u8 length, u8* data); unsigned char GetMode(); diff --git a/Controllers/PNYGPUController/PNYGPUControllerDetect.cpp b/Controllers/PNYGPUController/PNYGPUControllerDetect.cpp index 78235085..f82d3cb2 100644 --- a/Controllers/PNYGPUController/PNYGPUControllerDetect.cpp +++ b/Controllers/PNYGPUController/PNYGPUControllerDetect.cpp @@ -33,10 +33,8 @@ void DetectPNYGPUControllers(i2c_smbus_interface* bus, uint8_t i2c_addr, const s return; } - PNYGPUController* controller = new PNYGPUController(bus, i2c_addr); + PNYGPUController* controller = new PNYGPUController(bus, i2c_addr, name); RGBController_PNYGPU* rgb_controller = new RGBController_PNYGPU(controller); - rgb_controller->name = name; - rgb_controller->vendor = name.substr(0, name.find(' ')); ResourceManager::get()->RegisterRGBController(rgb_controller); } /* DetectPNYGPUControllers() */ diff --git a/Controllers/PNYGPUController/RGBController_PNYGPU.cpp b/Controllers/PNYGPUController/RGBController_PNYGPU.cpp index b6f223aa..46013786 100644 --- a/Controllers/PNYGPUController/RGBController_PNYGPU.cpp +++ b/Controllers/PNYGPUController/RGBController_PNYGPU.cpp @@ -26,8 +26,8 @@ RGBController_PNYGPU::RGBController_PNYGPU(PNYGPUController* controller_ptr) { controller = controller_ptr; - name = "PNY/Palit GPU"; - vendor = "PNY/Palit"; + name = controller->GetDeviceName(); + vendor = name.substr(0, name.find(' ')); description = "PNY/Palit RGB GPU Device"; location = controller->GetDeviceLocation(); diff --git a/Controllers/PNYLovelaceGPUController/PNYLovelaceGPUControllerDetect.cpp b/Controllers/PNYLovelaceGPUController/PNYLovelaceGPUControllerDetect.cpp index 7658768b..c9de7fc2 100644 --- a/Controllers/PNYLovelaceGPUController/PNYLovelaceGPUControllerDetect.cpp +++ b/Controllers/PNYLovelaceGPUController/PNYLovelaceGPUControllerDetect.cpp @@ -34,7 +34,6 @@ void DetectPNYLovelaceGPUControllers(i2c_smbus_interface* bus, uint8_t i2c_addr, PNYLovelaceGPUController* controller = new PNYLovelaceGPUController(bus, i2c_addr); RGBController_PNYLovelaceGPU* rgb_controller = new RGBController_PNYLovelaceGPU(controller); rgb_controller->name = name; - rgb_controller->vendor = name.substr(0, name.find(' ')); ResourceManager::get()->RegisterRGBController(rgb_controller); } /* DetectPNYLovelaceGPUControllers() */ diff --git a/Controllers/PalitGPUController/PalitGPUControllerDetect.cpp b/Controllers/PalitGPUController/PalitGPUControllerDetect.cpp index e6a11f7e..2e8ddfc5 100644 --- a/Controllers/PalitGPUController/PalitGPUControllerDetect.cpp +++ b/Controllers/PalitGPUController/PalitGPUControllerDetect.cpp @@ -49,7 +49,6 @@ void DetectPalitGPUControllers(i2c_smbus_interface* bus, uint8_t i2c_addr, const PalitGPUController* controller = new PalitGPUController(bus, i2c_addr); RGBController_PalitGPU* rgb_controller = new RGBController_PalitGPU(controller); rgb_controller->name = name; - rgb_controller->vendor = name.substr(0, name.find(' ')); ResourceManager::get()->RegisterRGBController(rgb_controller); } /* DetectPalitGPUControllers() */ diff --git a/Controllers/PhilipsHueController/PhilipsHueControllerDetect.cpp b/Controllers/PhilipsHueController/PhilipsHueControllerDetect.cpp index 2c946239..e7218aee 100644 --- a/Controllers/PhilipsHueController/PhilipsHueControllerDetect.cpp +++ b/Controllers/PhilipsHueController/PhilipsHueControllerDetect.cpp @@ -198,7 +198,7 @@ void DetectPhilipsHueControllers() { for(unsigned int controller_idx = 0; controller_idx < ResourceManager::get()->GetRGBControllers().size(); controller_idx++) { - if(ResourceManager::get()->GetRGBControllers()[controller_idx]->description == "Philips Hue Entertainment Mode Device") + if(ResourceManager::get()->GetRGBControllers()[controller_idx]->GetDescription() == "Philips Hue Entertainment Mode Device") { ResourceManager::get()->GetRGBControllers()[controller_idx]->SetMode(0); break; diff --git a/Controllers/PhilipsHueController/RGBController_PhilipsHueEntertainment.cpp b/Controllers/PhilipsHueController/RGBController_PhilipsHueEntertainment.cpp index 27deb2cd..d74120d9 100644 --- a/Controllers/PhilipsHueController/RGBController_PhilipsHueEntertainment.cpp +++ b/Controllers/PhilipsHueController/RGBController_PhilipsHueEntertainment.cpp @@ -126,7 +126,7 @@ void RGBController_PhilipsHueEntertainment::DeviceUpdateMode() for(unsigned int controller_idx = 0; controller_idx < rgb_controllers.size(); controller_idx++) { - if(rgb_controllers[controller_idx] != this && rgb_controllers[controller_idx]->description == "Philips Hue Entertainment Mode Device" && rgb_controllers[controller_idx]->active_mode == 0) + if(rgb_controllers[controller_idx] != this && rgb_controllers[controller_idx]->GetDescription() == "Philips Hue Entertainment Mode Device" && rgb_controllers[controller_idx]->active_mode == 0) { rgb_controllers[controller_idx]->SetMode(1); }