diff --git a/Controllers/DRGBController/DRGBController.cpp b/Controllers/DRGBController/DRGBController.cpp index 537bacd2..4af6cb6e 100644 --- a/Controllers/DRGBController/DRGBController.cpp +++ b/Controllers/DRGBController/DRGBController.cpp @@ -15,10 +15,11 @@ using namespace std::chrono_literals; -DRGBController::DRGBController(hid_device* dev_handle, const char* path, unsigned short pid) +DRGBController::DRGBController(hid_device* dev_handle, const char* path, unsigned short pid, std::string dev_name) { dev = dev_handle; location = path; + name = dev_name; device_pid = pid; /*-----------------------------------------------------*\ @@ -61,6 +62,11 @@ std::string DRGBController::GetLocationString() return("HID: " + location); } +std::string DRGBController::GetNameString() +{ + return(name); +} + std::string DRGBController::GetSerialString() { wchar_t serial_string[128]; diff --git a/Controllers/DRGBController/DRGBController.h b/Controllers/DRGBController/DRGBController.h index 26e116b7..dc2aebea 100644 --- a/Controllers/DRGBController/DRGBController.h +++ b/Controllers/DRGBController/DRGBController.h @@ -24,11 +24,13 @@ class DRGBController { public: - DRGBController(hid_device* dev_handle, const char* path, unsigned short pid); + DRGBController(hid_device* dev_handle, const char* path, unsigned short pid, std::string dev_name); ~DRGBController(); + void KeepaliveThread(); std::string GetFirmwareString(); std::string GetLocationString(); + std::string GetNameString(); std::string GetSerialString(); unsigned short GetDevicePID(); void SetChannelLEDs(unsigned char channel, RGBColor * colors, unsigned int num_colors); @@ -37,6 +39,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; diff --git a/Controllers/DRGBController/DRGBControllerDetect.cpp b/Controllers/DRGBController/DRGBControllerDetect.cpp index fd586738..b3887e93 100644 --- a/Controllers/DRGBController/DRGBControllerDetect.cpp +++ b/Controllers/DRGBController/DRGBControllerDetect.cpp @@ -17,45 +17,47 @@ void DetectDRGBControllers(hid_device_info* info, const std::string& name) { hid_device* dev = hid_open_path(info->path); + if(dev) { wchar_t product[128]; hid_get_product_string(dev, product, 128); std::wstring product_str(product); - DRGBController* controller = new DRGBController(dev, info->path,info->product_id); + + DRGBController* controller = new DRGBController(dev, info->path, info->product_id, name); RGBController_DRGB* rgb_controller = new RGBController_DRGB(controller); - rgb_controller->name = name; + ResourceManager::get()->RegisterRGBController(rgb_controller); } } -REGISTER_HID_DETECTOR("DRGB LED V4", DetectDRGBControllers, DRGBV4_VID, DRGB_LED_V4_PID); -REGISTER_HID_DETECTOR("DRGB ULTRA V4F", DetectDRGBControllers, DRGBV4_VID, DRGB_ULTRA_V4F_PID); -REGISTER_HID_DETECTOR("DRGB CORE V4F", DetectDRGBControllers, DRGBV4_VID, DRGB_CORE_V4F_PID); -REGISTER_HID_DETECTOR("DRGB SIG V4F", DetectDRGBControllers, DRGBV4_VID, DRGB_SIG_V4F_PID); -REGISTER_HID_DETECTOR("Airgoo AG-DRGB04", DetectDRGBControllers, DRGBV4_VID, DRGB_AG_04_V4F_PID); -REGISTER_HID_DETECTOR("Airgoo AG-DRGB16", DetectDRGBControllers, DRGBV4_VID, DRGB_AG_16_V4F_PID); +REGISTER_HID_DETECTOR("DRGB LED V4", DetectDRGBControllers, DRGBV4_VID, DRGB_LED_V4_PID); +REGISTER_HID_DETECTOR("DRGB ULTRA V4F", DetectDRGBControllers, DRGBV4_VID, DRGB_ULTRA_V4F_PID); +REGISTER_HID_DETECTOR("DRGB CORE V4F", DetectDRGBControllers, DRGBV4_VID, DRGB_CORE_V4F_PID); +REGISTER_HID_DETECTOR("DRGB SIG V4F", DetectDRGBControllers, DRGBV4_VID, DRGB_SIG_V4F_PID); +REGISTER_HID_DETECTOR("Airgoo AG-DRGB04", DetectDRGBControllers, DRGBV4_VID, DRGB_AG_04_V4F_PID); +REGISTER_HID_DETECTOR("Airgoo AG-DRGB16", DetectDRGBControllers, DRGBV4_VID, DRGB_AG_16_V4F_PID); -REGISTER_HID_DETECTOR("DRGB LED V5", DetectDRGBControllers, DRGBV4_VID, DRGB_LED_V5_PID); -REGISTER_HID_DETECTOR("DRGB ULTRA V5", DetectDRGBControllers, DRGBV4_VID, DRGB_ULTRA_V5_PID); -REGISTER_HID_DETECTOR("DRGB ULTRA V5F", DetectDRGBControllers, DRGBV4_VID, DRGB_ULTRA_V5F_PID); -REGISTER_HID_DETECTOR("DRGB CORE V5", DetectDRGBControllers, DRGBV4_VID, DRGB_CORE_V5_PID); -REGISTER_HID_DETECTOR("DRGB CORE V5F", DetectDRGBControllers, DRGBV4_VID, DRGB_CORE_V5F_PID); -REGISTER_HID_DETECTOR("DRGB SIG V5F", DetectDRGBControllers, DRGBV4_VID, DRGB_SIG_V5F_PID); +REGISTER_HID_DETECTOR("DRGB LED V5", DetectDRGBControllers, DRGBV4_VID, DRGB_LED_V5_PID); +REGISTER_HID_DETECTOR("DRGB ULTRA V5", DetectDRGBControllers, DRGBV4_VID, DRGB_ULTRA_V5_PID); +REGISTER_HID_DETECTOR("DRGB ULTRA V5F", DetectDRGBControllers, DRGBV4_VID, DRGB_ULTRA_V5F_PID); +REGISTER_HID_DETECTOR("DRGB CORE V5", DetectDRGBControllers, DRGBV4_VID, DRGB_CORE_V5_PID); +REGISTER_HID_DETECTOR("DRGB CORE V5F", DetectDRGBControllers, DRGBV4_VID, DRGB_CORE_V5F_PID); +REGISTER_HID_DETECTOR("DRGB SIG V5F", DetectDRGBControllers, DRGBV4_VID, DRGB_SIG_V5F_PID); -REGISTER_HID_DETECTOR("DRGB LED", DetectDRGBControllers, DRGBV3_VID, DRGB_LED_V3_PID); -REGISTER_HID_DETECTOR("DRGB Ultra V3", DetectDRGBControllers, DRGBV3_VID, DRGB_Ultra_V3_PID); -REGISTER_HID_DETECTOR("DRGB CORE V3", DetectDRGBControllers, DRGBV3_VID, DRGB_CORE_V3_PID); -REGISTER_HID_DETECTOR("DRGB ELITE", DetectDRGBControllers, DRGBV3_VID, DRGB_ELITE_PID); -REGISTER_HID_DETECTOR("NEEDMAX 10 ELITE", DetectDRGBControllers, DRGBV3_VID, DM_10_PID); -REGISTER_HID_DETECTOR("JPU ELITE", DetectDRGBControllers, DRGBV3_VID, JPU_12_PID); +REGISTER_HID_DETECTOR("DRGB LED", DetectDRGBControllers, DRGBV3_VID, DRGB_LED_V3_PID); +REGISTER_HID_DETECTOR("DRGB Ultra V3", DetectDRGBControllers, DRGBV3_VID, DRGB_Ultra_V3_PID); +REGISTER_HID_DETECTOR("DRGB CORE V3", DetectDRGBControllers, DRGBV3_VID, DRGB_CORE_V3_PID); +REGISTER_HID_DETECTOR("DRGB ELITE", DetectDRGBControllers, DRGBV3_VID, DRGB_ELITE_PID); +REGISTER_HID_DETECTOR("NEEDMAX 10 ELITE", DetectDRGBControllers, DRGBV3_VID, DM_10_PID); +REGISTER_HID_DETECTOR("JPU ELITE", DetectDRGBControllers, DRGBV3_VID, JPU_12_PID); -REGISTER_HID_DETECTOR("DRGB LED Controller", DetectDRGBControllers, DRGBV2_VID, DRGB_LED_PID); -REGISTER_HID_DETECTOR("DRGB ULTRA", DetectDRGBControllers, DRGBV2_VID, DRGB_ULTRA_PID); -REGISTER_HID_DETECTOR("DRGB SIG AB", DetectDRGBControllers, DRGBV2_VID, DRGB_SIG_AB_PID); -REGISTER_HID_DETECTOR("DRGB SIG CD", DetectDRGBControllers, DRGBV2_VID, DRGB_SIG_CD_PID); -REGISTER_HID_DETECTOR("DRGB Strimer Controller", DetectDRGBControllers, DRGBV2_VID, DRGB_Strimer_PID); +REGISTER_HID_DETECTOR("DRGB LED Controller", DetectDRGBControllers, DRGBV2_VID, DRGB_LED_PID); +REGISTER_HID_DETECTOR("DRGB ULTRA", DetectDRGBControllers, DRGBV2_VID, DRGB_ULTRA_PID); +REGISTER_HID_DETECTOR("DRGB SIG AB", DetectDRGBControllers, DRGBV2_VID, DRGB_SIG_AB_PID); +REGISTER_HID_DETECTOR("DRGB SIG CD", DetectDRGBControllers, DRGBV2_VID, DRGB_SIG_CD_PID); +REGISTER_HID_DETECTOR("DRGB Strimer Controller", DetectDRGBControllers, DRGBV2_VID, DRGB_Strimer_PID); -REGISTER_HID_DETECTOR("YICO 8 ELITE", DetectDRGBControllers, YICO_VID, YICO_8_PID); -REGISTER_HID_DETECTOR("YICO 08 ELITE", DetectDRGBControllers, YICO_VID, YICO_08_PID); -REGISTER_HID_DETECTOR("YICO 08 ELITE", DetectDRGBControllers, YICO_VID, YICO_08_1_PID); +REGISTER_HID_DETECTOR("YICO 8 ELITE", DetectDRGBControllers, YICO_VID, YICO_8_PID); +REGISTER_HID_DETECTOR("YICO 08 ELITE", DetectDRGBControllers, YICO_VID, YICO_08_PID); +REGISTER_HID_DETECTOR("YICO 08 ELITE", DetectDRGBControllers, YICO_VID, YICO_08_1_PID); diff --git a/Controllers/DRGBController/RGBController_DRGB.cpp b/Controllers/DRGBController/RGBController_DRGB.cpp index 3fd04fe3..fbf66984 100644 --- a/Controllers/DRGBController/RGBController_DRGB.cpp +++ b/Controllers/DRGBController/RGBController_DRGB.cpp @@ -28,7 +28,7 @@ RGBController_DRGB::RGBController_DRGB(DRGBController* controller_ptr) { controller = controller_ptr; - name = "DRGB Controller"; + name = controller->GetNameString(); vendor = "DRGB"; description = "DRGB Controller Device"; type = DEVICE_TYPE_LEDSTRIP; @@ -129,7 +129,7 @@ void RGBController_DRGB::SetupZones() NUM_Channel_led = 256; Version = 4; break; - + case DRGB_LED_V3_PID: NUM_CHANNELS = 8; NUM_Channel_led = 256;