From 757068819dacf417858558be4f607d6920e06d78 Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Tue, 2 May 2023 17:54:11 -0500 Subject: [PATCH] Initial support for NZXT RGB & Fan Controller PID 0x2011, F140 RGB fan --- .../NZXTHue2Controller/NZXTHue2Controller.cpp | 18 ++++++----- .../NZXTHue2Controller/NZXTHue2Controller.h | 8 +++-- .../NZXTHue2ControllerDetect.cpp | 31 ++++++++++++------- .../RGBController_NZXTHue2.cpp | 8 +++-- 4 files changed, 41 insertions(+), 24 deletions(-) diff --git a/Controllers/NZXTHue2Controller/NZXTHue2Controller.cpp b/Controllers/NZXTHue2Controller/NZXTHue2Controller.cpp index 3ec7c0f6c..f8d1e26c5 100644 --- a/Controllers/NZXTHue2Controller/NZXTHue2Controller.cpp +++ b/Controllers/NZXTHue2Controller/NZXTHue2Controller.cpp @@ -169,15 +169,19 @@ void NZXTHue2Controller::UpdateDeviceList() case 0x05: //Hue 2 strip (8 LEDs) num_leds_in_device = 8; break; - + case 0x06: //Hue 2 strip (6 LEDs) num_leds_in_device = 6; break; - + + case 0x08: //Hue 2 Cable Comb (14 LEDs) + num_leds_in_device = 14; + break; + case 0x09: //Hue 2 Underglow (300mm) (15 LEDs) num_leds_in_device = 15; break; - + case 0x0A: //Hue 2 Underglow (200mm) (10 LEDs) num_leds_in_device = 10; break; @@ -193,13 +197,13 @@ void NZXTHue2Controller::UpdateDeviceList() case 0x10: //Kraken X3 ring num_leds_in_device = 8; break; - + case 0x11: //Kraken X3 logo num_leds_in_device = 1; break; - - case 0x08: //Hue 2 Cable Comb (14 LEDs) - num_leds_in_device = 14; + + case 0x14: //F140 RGB fan (140mm) + num_leds_in_device = 18; break; default: diff --git a/Controllers/NZXTHue2Controller/NZXTHue2Controller.h b/Controllers/NZXTHue2Controller/NZXTHue2Controller.h index be093bc9c..324beb3be 100644 --- a/Controllers/NZXTHue2Controller/NZXTHue2Controller.h +++ b/Controllers/NZXTHue2Controller/NZXTHue2Controller.h @@ -18,7 +18,9 @@ enum HUE_2_CHANNEL_2 = 0x02, /* Channel 2 */ HUE_2_CHANNEL_3 = 0x03, /* Channel 3 */ HUE_2_CHANNEL_4 = 0x04, /* Channel 4 */ - HUE_2_NUM_CHANNELS = 0x04 /* Number of channels */ + HUE_2_CHANNEL_5 = 0x05, /* Channel 5 */ + HUE_2_CHANNEL_6 = 0x06, /* Channel 6 */ + HUE_2_NUM_CHANNELS = 0x06 /* Number of channels */ }; enum @@ -107,14 +109,14 @@ public: void UpdateDeviceList(); void UpdateStatus(); - + unsigned int channel_leds[HUE_2_NUM_CHANNELS]; unsigned int channel_dev_ids[HUE_2_NUM_CHANNELS][6]; unsigned int channel_dev_szs[HUE_2_NUM_CHANNELS][6]; private: hid_device* dev; - + std::vector fan_cmd; std::vector fan_rpm; diff --git a/Controllers/NZXTHue2Controller/NZXTHue2ControllerDetect.cpp b/Controllers/NZXTHue2Controller/NZXTHue2ControllerDetect.cpp index 5e6710a0e..455d727a3 100644 --- a/Controllers/NZXTHue2Controller/NZXTHue2ControllerDetect.cpp +++ b/Controllers/NZXTHue2Controller/NZXTHue2ControllerDetect.cpp @@ -14,6 +14,7 @@ #define NZXT_KRAKEN_X53_PID 0x2014 #define NZXT_RGB_FAN_CONTROLLER_PID 0x2009 #define NZXT_RGB_FAN_CONTROLLER2_PID 0x2010 +#define NZXT_RGB_FAN_CONTROLLER4_PID 0x2011 #define NZXT_RGB_FAN_CONTROLLER3_PID 0x200E #define NZXT_SMART_DEVICE_V2_1_PID 0x200D #define NZXT_SMART_DEVICE_V2_2_PID 0x200F @@ -62,15 +63,21 @@ void DetectNZXTFanController(hid_device_info* info, const std::string& name) spawn_hue(info, name, 2, 3); } -REGISTER_HID_DETECTOR("NZXT Hue 2", DetectNZXTHue2, NZXT_VID, NZXT_HUE_2_PID); -REGISTER_HID_DETECTOR("NZXT Hue 2 Ambient", DetectNZXTHue2Ambient, NZXT_VID, NZXT_HUE_2_AMBIENT_PID); -REGISTER_HID_DETECTOR("NZXT Hue 2 Motherboard", DetectNZXTHue2Motherboard, NZXT_VID, NZXT_MOTHERBOARD_DEVICE_PID); -REGISTER_HID_DETECTOR("NZXT Hue 2 Motherboard", DetectNZXTHue2Motherboard, NZXT_VID, NZXT_MOTHERBOARD_DEVICE_2_PID); -REGISTER_HID_DETECTOR("NZXT Smart Device V2", DetectNZXTSmartDeviceV2, NZXT_VID, NZXT_SMART_DEVICE_V2_PID); -REGISTER_HID_DETECTOR("NZXT Kraken X3", DetectNZXTKrakenX3, NZXT_VID, NZXT_KRAKEN_X3_PID); -REGISTER_HID_DETECTOR("NZXT Kraken X53", DetectNZXTKrakenX3, NZXT_VID, NZXT_KRAKEN_X53_PID); -REGISTER_HID_DETECTOR("NZXT RGB & Fan Controller", DetectNZXTFanController, NZXT_VID, NZXT_RGB_FAN_CONTROLLER_PID); -REGISTER_HID_DETECTOR("NZXT RGB & Fan Controller", DetectNZXTFanController, NZXT_VID, NZXT_RGB_FAN_CONTROLLER2_PID); -REGISTER_HID_DETECTOR("NZXT RGB & Fan Controller", DetectNZXTFanController, NZXT_VID, NZXT_RGB_FAN_CONTROLLER3_PID); -REGISTER_HID_DETECTOR("NZXT Smart Device V2", DetectNZXTSmartDeviceV2, NZXT_VID, NZXT_SMART_DEVICE_V2_1_PID); -REGISTER_HID_DETECTOR("NZXT Smart Device V2", DetectNZXTSmartDeviceV2, NZXT_VID, NZXT_SMART_DEVICE_V2_2_PID); +void DetectNZXTFanController6Channel(hid_device_info* info, const std::string& name) +{ + spawn_hue(info, name, 6, 3); +} + +REGISTER_HID_DETECTOR("NZXT Hue 2", DetectNZXTHue2, NZXT_VID, NZXT_HUE_2_PID); +REGISTER_HID_DETECTOR("NZXT Hue 2 Ambient", DetectNZXTHue2Ambient, NZXT_VID, NZXT_HUE_2_AMBIENT_PID); +REGISTER_HID_DETECTOR("NZXT Hue 2 Motherboard", DetectNZXTHue2Motherboard, NZXT_VID, NZXT_MOTHERBOARD_DEVICE_PID); +REGISTER_HID_DETECTOR("NZXT Hue 2 Motherboard", DetectNZXTHue2Motherboard, NZXT_VID, NZXT_MOTHERBOARD_DEVICE_2_PID); +REGISTER_HID_DETECTOR("NZXT Smart Device V2", DetectNZXTSmartDeviceV2, NZXT_VID, NZXT_SMART_DEVICE_V2_PID); +REGISTER_HID_DETECTOR("NZXT Kraken X3", DetectNZXTKrakenX3, NZXT_VID, NZXT_KRAKEN_X3_PID); +REGISTER_HID_DETECTOR("NZXT Kraken X53", DetectNZXTKrakenX3, NZXT_VID, NZXT_KRAKEN_X53_PID); +REGISTER_HID_DETECTOR("NZXT RGB & Fan Controller", DetectNZXTFanController, NZXT_VID, NZXT_RGB_FAN_CONTROLLER_PID); +REGISTER_HID_DETECTOR("NZXT RGB & Fan Controller", DetectNZXTFanController, NZXT_VID, NZXT_RGB_FAN_CONTROLLER2_PID); +REGISTER_HID_DETECTOR("NZXT RGB & Fan Controller", DetectNZXTFanController, NZXT_VID, NZXT_RGB_FAN_CONTROLLER3_PID); +REGISTER_HID_DETECTOR("NZXT RGB & Fan Controller", DetectNZXTFanController6Channel, NZXT_VID, NZXT_RGB_FAN_CONTROLLER4_PID); +REGISTER_HID_DETECTOR("NZXT Smart Device V2", DetectNZXTSmartDeviceV2, NZXT_VID, NZXT_SMART_DEVICE_V2_1_PID); +REGISTER_HID_DETECTOR("NZXT Smart Device V2", DetectNZXTSmartDeviceV2, NZXT_VID, NZXT_SMART_DEVICE_V2_2_PID); diff --git a/Controllers/NZXTHue2Controller/RGBController_NZXTHue2.cpp b/Controllers/NZXTHue2Controller/RGBController_NZXTHue2.cpp index ac07ab3f1..059e8fa63 100644 --- a/Controllers/NZXTHue2Controller/RGBController_NZXTHue2.cpp +++ b/Controllers/NZXTHue2Controller/RGBController_NZXTHue2.cpp @@ -277,6 +277,10 @@ void RGBController_NZXTHue2::SetupZones() device_name = "Hue 2 strip (6 LEDs)"; break; + case 0x08: //Hue 2 Cable Comb (14 LEDs) + device_name = "Hue 2 Cable Comb (14 LEDs)"; + break; + case 0x09: //Hue 2 Underglow (300mm) (15 LEDs) device_name = "Hue 2 Underglow (300mm) (15 LEDs)"; break; @@ -301,8 +305,8 @@ void RGBController_NZXTHue2::SetupZones() device_name = "Kraken X3 logo"; break; - case 0x08: //Hue 2 Cable Comb (14 LEDs) - device_name = "Hue 2 Cable Comb (14 LEDs)"; + case 0x14: //F140 RGB fan (140mm) + device_name = "F140 fan (140mm)"; break; default: