From 1bd9215a72c883e5e66f1d2a3580b00a28bf240e Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Thu, 14 Aug 2025 20:11:54 -0500 Subject: [PATCH] Store name in SRGBmodsControllers to avoid setting it in detectors --- .../SRGBmodsControllerDetect.cpp | 6 ++--- .../RGBController_SRGBmodsLEDControllerV1.cpp | 2 +- .../SRGBmodsLEDControllerV1.cpp | 8 ++++++- .../SRGBmodsLEDControllerV1.h | 4 +++- .../RGBController_SRGBmodsPico.cpp | 22 +++++++++---------- .../SRGBmodsPicoController.cpp | 8 ++++++- .../SRGBmodsPicoController.h | 4 +++- 7 files changed, 34 insertions(+), 20 deletions(-) diff --git a/Controllers/SRGBmodsController/SRGBmodsControllerDetect.cpp b/Controllers/SRGBmodsController/SRGBmodsControllerDetect.cpp index d1ef0874..d4310e03 100644 --- a/Controllers/SRGBmodsController/SRGBmodsControllerDetect.cpp +++ b/Controllers/SRGBmodsController/SRGBmodsControllerDetect.cpp @@ -46,17 +46,15 @@ void DetectSRGBmodsControllers(hid_device_info* info, const std::string& name) \*-------------------------------------------------------------------------*/ if(product_str == L"SRGBmods Pico LED Controller" || product_str == L"Pico LED Controller") { - SRGBmodsPicoController* controller = new SRGBmodsPicoController(dev, info->path); + SRGBmodsPicoController* controller = new SRGBmodsPicoController(dev, info->path, name); RGBController_SRGBmodsPico* rgb_controller = new RGBController_SRGBmodsPico(controller); - rgb_controller->name = name; ResourceManager::get()->RegisterRGBController(rgb_controller); } else if(product_str == L"LED Controller v1") { - SRGBmodsLEDControllerV1* controller = new SRGBmodsLEDControllerV1(dev, info->path); + SRGBmodsLEDControllerV1* controller = new SRGBmodsLEDControllerV1(dev, info->path, name); RGBController_SRGBmodsLEDControllerV1* rgb_controller = new RGBController_SRGBmodsLEDControllerV1(controller); - rgb_controller->name = name; ResourceManager::get()->RegisterRGBController(rgb_controller); } diff --git a/Controllers/SRGBmodsController/SRGBmodsLEDControllerV1/RGBController_SRGBmodsLEDControllerV1.cpp b/Controllers/SRGBmodsController/SRGBmodsLEDControllerV1/RGBController_SRGBmodsLEDControllerV1.cpp index 72cdfa74..cf637406 100644 --- a/Controllers/SRGBmodsController/SRGBmodsLEDControllerV1/RGBController_SRGBmodsLEDControllerV1.cpp +++ b/Controllers/SRGBmodsController/SRGBmodsLEDControllerV1/RGBController_SRGBmodsLEDControllerV1.cpp @@ -26,7 +26,7 @@ RGBController_SRGBmodsLEDControllerV1::RGBController_SRGBmodsLEDControllerV1(SRG { controller = controller_ptr; - name = "SRGBmods Device"; + name = controller->GetNameString(); vendor = "SRGBmods.net"; description = "SRGBmods LED Controller V1 Device"; type = DEVICE_TYPE_LEDSTRIP; diff --git a/Controllers/SRGBmodsController/SRGBmodsLEDControllerV1/SRGBmodsLEDControllerV1.cpp b/Controllers/SRGBmodsController/SRGBmodsLEDControllerV1/SRGBmodsLEDControllerV1.cpp index 1d4c7b6b..1da4c684 100644 --- a/Controllers/SRGBmodsController/SRGBmodsLEDControllerV1/SRGBmodsLEDControllerV1.cpp +++ b/Controllers/SRGBmodsController/SRGBmodsLEDControllerV1/SRGBmodsLEDControllerV1.cpp @@ -15,10 +15,11 @@ using namespace std::chrono_literals; -SRGBmodsLEDControllerV1::SRGBmodsLEDControllerV1(hid_device* dev_handle, const char* path) +SRGBmodsLEDControllerV1::SRGBmodsLEDControllerV1(hid_device* dev_handle, const char* path, std::string dev_name) { dev = dev_handle; location = path; + name = dev_name; } SRGBmodsLEDControllerV1::~SRGBmodsLEDControllerV1() @@ -31,6 +32,11 @@ std::string SRGBmodsLEDControllerV1::GetLocationString() return("HID: " + location); } +std::string SRGBmodsLEDControllerV1::GetNameString() +{ + return(name); +} + std::string SRGBmodsLEDControllerV1::GetSerialString() { wchar_t serial_string[128]; diff --git a/Controllers/SRGBmodsController/SRGBmodsLEDControllerV1/SRGBmodsLEDControllerV1.h b/Controllers/SRGBmodsController/SRGBmodsLEDControllerV1/SRGBmodsLEDControllerV1.h index 145a5892..64e3c887 100644 --- a/Controllers/SRGBmodsController/SRGBmodsLEDControllerV1/SRGBmodsLEDControllerV1.h +++ b/Controllers/SRGBmodsController/SRGBmodsLEDControllerV1/SRGBmodsLEDControllerV1.h @@ -28,10 +28,11 @@ enum class SRGBmodsLEDControllerV1 { public: - SRGBmodsLEDControllerV1(hid_device* dev_handle, const char* path); + SRGBmodsLEDControllerV1(hid_device* dev_handle, const char* path, std::string dev_name); ~SRGBmodsLEDControllerV1(); std::string GetLocationString(); + std::string GetNameString(); std::string GetSerialString(); void SetChannelLEDs(unsigned char channel, RGBColor * colors, unsigned int num_colors); @@ -41,6 +42,7 @@ public: private: hid_device* dev; std::string location; + std::string name; void SendPacket ( diff --git a/Controllers/SRGBmodsController/SRGBmodsPicoController/RGBController_SRGBmodsPico.cpp b/Controllers/SRGBmodsController/SRGBmodsPicoController/RGBController_SRGBmodsPico.cpp index 48c39157..62f02931 100644 --- a/Controllers/SRGBmodsController/SRGBmodsPicoController/RGBController_SRGBmodsPico.cpp +++ b/Controllers/SRGBmodsController/SRGBmodsPicoController/RGBController_SRGBmodsPico.cpp @@ -25,20 +25,20 @@ RGBController_SRGBmodsPico::RGBController_SRGBmodsPico(SRGBmodsPicoController* controller_ptr) { - controller = controller_ptr; + controller = controller_ptr; - name = "SRGBmods Device"; - vendor = "SRGBmods.net"; - description = "SRGBmods Pico LED Controller Device"; - type = DEVICE_TYPE_LEDSTRIP; - location = controller->GetLocationString(); - serial = controller->GetSerialString(); + name = controller->GetNameString(); + vendor = "SRGBmods.net"; + description = "SRGBmods Pico LED Controller Device"; + type = DEVICE_TYPE_LEDSTRIP; + location = controller->GetLocationString(); + serial = controller->GetSerialString(); mode Direct; - Direct.name = "Direct"; - Direct.value = 0xFFFF; - Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR; - Direct.color_mode = MODE_COLORS_PER_LED; + Direct.name = "Direct"; + Direct.value = 0xFFFF; + Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR; + Direct.color_mode = MODE_COLORS_PER_LED; modes.push_back(Direct); SetupZones(); diff --git a/Controllers/SRGBmodsController/SRGBmodsPicoController/SRGBmodsPicoController.cpp b/Controllers/SRGBmodsController/SRGBmodsPicoController/SRGBmodsPicoController.cpp index 6b2a5aa8..c6a4c147 100644 --- a/Controllers/SRGBmodsController/SRGBmodsPicoController/SRGBmodsPicoController.cpp +++ b/Controllers/SRGBmodsController/SRGBmodsPicoController/SRGBmodsPicoController.cpp @@ -15,10 +15,11 @@ using namespace std::chrono_literals; -SRGBmodsPicoController::SRGBmodsPicoController(hid_device* dev_handle, const char* path) +SRGBmodsPicoController::SRGBmodsPicoController(hid_device* dev_handle, const char* path, std::string dev_name) { dev = dev_handle; location = path; + name = dev_name; /*-----------------------------------------------------*\ | The SRGBmods Pico controller requires a packet within | @@ -56,6 +57,11 @@ std::string SRGBmodsPicoController::GetLocationString() return("HID: " + location); } +std::string SRGBmodsPicoController::GetNameString() +{ + return(name); +} + std::string SRGBmodsPicoController::GetSerialString() { wchar_t serial_string[128]; diff --git a/Controllers/SRGBmodsController/SRGBmodsPicoController/SRGBmodsPicoController.h b/Controllers/SRGBmodsController/SRGBmodsPicoController/SRGBmodsPicoController.h index 74aeac1f..bd418abb 100644 --- a/Controllers/SRGBmodsController/SRGBmodsPicoController/SRGBmodsPicoController.h +++ b/Controllers/SRGBmodsController/SRGBmodsPicoController/SRGBmodsPicoController.h @@ -19,10 +19,11 @@ class SRGBmodsPicoController { public: - SRGBmodsPicoController(hid_device* dev_handle, const char* path); + SRGBmodsPicoController(hid_device* dev_handle, const char* path, std::string dev_name); ~SRGBmodsPicoController(); std::string GetLocationString(); + std::string GetNameString(); std::string GetSerialString(); void SetChannelLEDs(unsigned char channel, RGBColor * colors, unsigned int num_colors); @@ -31,6 +32,7 @@ public: private: hid_device* dev; std::string location; + std::string name; std::thread* keepalive_thread; std::atomic keepalive_thread_run; std::chrono::time_point last_commit_time;