From 719d7b880140760fac7ef4b4a6d87cf54f47c324 Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Thu, 14 Aug 2025 10:19:11 -0500 Subject: [PATCH] Store name in MSIRGBController to avoid setting it in detector --- .../MSIRGBController/MSIRGBController.cpp | 15 ++++++++++++++- .../MSIRGBController/MSIRGBController.h | 5 +++-- .../MSIRGBControllerDetect.cpp | 3 +-- .../MSIRGBController/RGBController_MSIRGB.cpp | 19 ++++++++++--------- 4 files changed, 28 insertions(+), 14 deletions(-) diff --git a/Controllers/MSIRGBController/MSIRGBController.cpp b/Controllers/MSIRGBController/MSIRGBController.cpp index 020f78c3..bc1d60d0 100644 --- a/Controllers/MSIRGBController/MSIRGBController.cpp +++ b/Controllers/MSIRGBController/MSIRGBController.cpp @@ -15,9 +15,10 @@ #include "dmiinfo.h" #include "super_io.h" -MSIRGBController::MSIRGBController(int sioaddr, bool invert) +MSIRGBController::MSIRGBController(int sioaddr, bool invert, std::string dev_name) { msi_sioaddr = sioaddr; + name = dev_name; /*-----------------------------------------------------*\ | This setup step isn't well documented | @@ -74,6 +75,18 @@ MSIRGBController::~MSIRGBController() } +std::string MSIRGBController::GetDeviceLocation() +{ + char hex[12]; + snprintf(hex, sizeof(hex), "0x%X", msi_sioaddr); + return("SIO: " + std::string(hex)); +} + +std::string MSIRGBController::GetDeviceName() +{ + return(name); +} + void MSIRGBController::SetColor(unsigned char red, unsigned char green, unsigned char blue) { /*-----------------------------------------------------*\ diff --git a/Controllers/MSIRGBController/MSIRGBController.h b/Controllers/MSIRGBController/MSIRGBController.h index 8656c301..86eb04d5 100644 --- a/Controllers/MSIRGBController/MSIRGBController.h +++ b/Controllers/MSIRGBController/MSIRGBController.h @@ -42,7 +42,7 @@ enum class MSIRGBController { public: - MSIRGBController(int sioaddr, bool invert); + MSIRGBController(int sioaddr, bool invert, std::string dev_name); ~MSIRGBController(); std::string GetDeviceName(); @@ -53,5 +53,6 @@ public: void SetColor(unsigned char red, unsigned char green, unsigned char blue); private: - int msi_sioaddr; + int msi_sioaddr; + std::string name; }; diff --git a/Controllers/MSIRGBController/MSIRGBControllerDetect.cpp b/Controllers/MSIRGBController/MSIRGBControllerDetect.cpp index b77b77ec..befa5717 100644 --- a/Controllers/MSIRGBController/MSIRGBControllerDetect.cpp +++ b/Controllers/MSIRGBController/MSIRGBControllerDetect.cpp @@ -114,9 +114,8 @@ void DetectMSIRGBControllers() { if (board_dmi.find(std::string(compatible_devices[i].name)) != std::string::npos) { - MSIRGBController* controller = new MSIRGBController(sioaddr, compatible_devices[i].invert); + MSIRGBController* controller = new MSIRGBController(sioaddr, compatible_devices[i].invert, "MSI " + board_dmi); RGBController_MSIRGB* rgb_controller = new RGBController_MSIRGB(controller); - rgb_controller->name = "MSI " + board_dmi; ResourceManager::get()->RegisterRGBController(rgb_controller); break; diff --git a/Controllers/MSIRGBController/RGBController_MSIRGB.cpp b/Controllers/MSIRGBController/RGBController_MSIRGB.cpp index 5925e18c..549787a1 100644 --- a/Controllers/MSIRGBController/RGBController_MSIRGB.cpp +++ b/Controllers/MSIRGBController/RGBController_MSIRGB.cpp @@ -24,18 +24,19 @@ RGBController_MSIRGB::RGBController_MSIRGB(MSIRGBController* controller_ptr) { - controller = controller_ptr; + controller = controller_ptr; - name = "MSI Motherboard"; - vendor = "MSI"; - type = DEVICE_TYPE_MOTHERBOARD; - description = "MSI-RGB Device"; + name = controller->GetDeviceName(); + vendor = "MSI"; + type = DEVICE_TYPE_MOTHERBOARD; + description = "MSI-RGB Device"; + location = controller->GetDeviceLocation(); mode Direct; - Direct.name = "Direct"; - Direct.value = 0; - Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR; - Direct.color_mode = MODE_COLORS_PER_LED; + Direct.name = "Direct"; + Direct.value = 0; + Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR; + Direct.color_mode = MODE_COLORS_PER_LED; modes.push_back(Direct); SetupZones();