diff --git a/OpenRGB.cpp b/OpenRGB.cpp index d53f2915a..4148268b1 100644 --- a/OpenRGB.cpp +++ b/OpenRGB.cpp @@ -317,7 +317,7 @@ void DetectRGBControllers(void) DetectAuraControllers(busses, rgb_controllers); DetectAuraGPUControllers(busses, rgb_controllers); DetectCorsairControllers(busses, rgb_controllers); - //DetectCorsairProControllers(busses, rgb_controllers); + DetectCorsairProControllers(busses, rgb_controllers); //DetectCrucialControllers(busses, rgb_controllers); DetectHyperXControllers(busses, rgb_controllers); //DetectPatriotViperControllers(busses, rgb_controllers); diff --git a/OpenRGB.pro b/OpenRGB.pro index 6f4fdaa42..986ae6c00 100644 --- a/OpenRGB.pro +++ b/OpenRGB.pro @@ -35,7 +35,7 @@ INCLUDEPATH += \ Controllers/CorsairController/ \ # Controllers/CorsairKeyboardController/ \ Controllers/CorsairLightingNodeController/ \ -# Controllers/CorsairProController/ \ + Controllers/CorsairProController/ \ # Controllers/CrucialController/ \ Controllers/Hue2Controller/ \ Controllers/HuePlusController/ \ @@ -87,8 +87,8 @@ SOURCES += \ # Controllers/CorsairKeyboardController/CorsairKeyboardControllerDetect.cpp \ Controllers/CorsairLightingNodeController/CorsairLightingNodeController.cpp \ Controllers/CorsairLightingNodeController/CorsairLightingNodeControllerDetect.cpp \ -# Controllers/CorsairProController/CorsairProController.cpp \ -# Controllers/CorsairProController/CorsairProControllerDetect.cpp \ + Controllers/CorsairProController/CorsairProController.cpp \ + Controllers/CorsairProController/CorsairProControllerDetect.cpp \ # Controllers/CrucialController/CrucialController.cpp \ # Controllers/CrucialController/CrucialControllerDetect.cpp \ Controllers/Hue2Controller/Hue2Controller.cpp \ @@ -127,7 +127,7 @@ SOURCES += \ RGBController/RGBController_Corsair.cpp \ # RGBController/RGBController_CorsairKeyboard.cpp \ RGBController/RGBController_CorsairLightingNode.cpp \ -# RGBController/RGBController_CorsairPro.cpp \ + RGBController/RGBController_CorsairPro.cpp \ # RGBController/RGBController_Crucial.cpp \ RGBController/RGBController_Dummy.cpp \ RGBController/RGBController_Hue2.cpp \ diff --git a/RGBController/RGBController_CorsairPro.cpp b/RGBController/RGBController_CorsairPro.cpp index c47be6f89..22a4661ac 100644 --- a/RGBController/RGBController_CorsairPro.cpp +++ b/RGBController/RGBController_CorsairPro.cpp @@ -9,36 +9,6 @@ #include "RGBController_CorsairPro.h" -void RGBController_CorsairPro::UpdateLEDs() -{ - for (std::size_t led = 0; led < colors.size(); led++) - { - RGBColor color = colors[led]; - unsigned char red = RGBGetRValue(color); - unsigned char grn = RGBGetGValue(color); - unsigned char blu = RGBGetBValue(color); - corsair->SetLEDColor(led, red, grn, blu); - } - - corsair->ApplyColors(); -} - -void RGBController_CorsairPro::UpdateZoneLEDs(int zone) -{ - UpdateLEDs(); -} - -void RGBController_CorsairPro::UpdateSingleLED(int led) -{ - RGBColor color = colors[led]; - unsigned char red = RGBGetRValue(color); - unsigned char grn = RGBGetGValue(color); - unsigned char blu = RGBGetBValue(color); - - corsair->SetLEDColor(led, red, grn, blu); - corsair->ApplyColors(); -} - RGBController_CorsairPro::RGBController_CorsairPro(CorsairProController* corsair_ptr) { corsair = corsair_ptr; @@ -97,8 +67,8 @@ RGBController_CorsairPro::RGBController_CorsairPro(CorsairProController* corsair ColorWave.direction = MODE_DIRECTION_DOWN; ColorWave.color_mode = MODE_COLORS_MODE_SPECIFIC; ColorWave.colors.resize(2); - modes.push_back(ColorWave); - + modes.push_back(ColorWave); + mode Visor; Visor.name = "Visor"; Visor.value = CORSAIR_PRO_MODE_VISOR; @@ -139,7 +109,7 @@ RGBController_CorsairPro::RGBController_CorsairPro(CorsairProController* corsair Marquee.color_mode = MODE_COLORS_MODE_SPECIFIC; Marquee.colors.resize(1); modes.push_back(Marquee); - + mode Rainbow; Rainbow.name = "Rainbow"; Rainbow.value = CORSAIR_PRO_MODE_RAINBOW; @@ -149,7 +119,7 @@ RGBController_CorsairPro::RGBController_CorsairPro(CorsairProController* corsair Rainbow.speed = CORSAIR_PRO_SPEED_SLOW; Rainbow.color_mode = MODE_COLORS_NONE; modes.push_back(Rainbow); - + mode Sequential; Sequential.name = "Sequential"; Sequential.value = CORSAIR_PRO_MODE_SEQUENTIAL; @@ -174,34 +144,73 @@ RGBController_CorsairPro::RGBController_CorsairPro(CorsairProController* corsair Static.color_mode = MODE_COLORS_PER_LED; modes.push_back(Static); + SetupZones(); + active_mode = 9; +} - colors.resize(corsair->GetLEDCount()); +void RGBController_CorsairPro::SetupZones() +{ + /*---------------------------------------------------------*\ + | Set up zone | + \*---------------------------------------------------------*/ + zone new_zone; + new_zone.name = "Corsair Pro Zone"; + new_zone.type = ZONE_TYPE_LINEAR; + new_zone.leds_min = corsair->GetLEDCount(); + new_zone.leds_max = corsair->GetLEDCount(); + new_zone.leds_count = corsair->GetLEDCount(); + zones.push_back(new_zone); - for (unsigned int i = 0; i < corsair->GetLEDCount(); i++) + /*---------------------------------------------------------*\ + | Set up LEDs | + \*---------------------------------------------------------*/ + for(std::size_t led_idx = 0; led_idx < zones[0].leds_count; led_idx++) { led* new_led = new led(); - - new_led->name = "Corsair Pro LED"; - + new_led->name = "Corsair Pro LED "; + new_led->name.append(std::to_string(led_idx)); leds.push_back(*new_led); } - zone new_zone; + SetupColors(); +} - new_zone.name = "Corsair Pro Zone"; - new_zone.type = ZONE_TYPE_LINEAR; +void RGBController_CorsairPro::ResizeZone(int /*zone*/, int /*new_size*/) +{ + /*---------------------------------------------------------*\ + | This device does not support resizing zones | + \*---------------------------------------------------------*/ +} - std::vector zone_row; - - for (unsigned int i = 0; i < corsair->GetLEDCount(); i++) +void RGBController_CorsairPro::UpdateLEDs() +{ + for (std::size_t led = 0; led < colors.size(); led++) { - zone_row.push_back(i); + RGBColor color = colors[led]; + unsigned char red = RGBGetRValue(color); + unsigned char grn = RGBGetGValue(color); + unsigned char blu = RGBGetBValue(color); + corsair->SetLEDColor(led, red, grn, blu); } - new_zone.map.push_back(zone_row); + corsair->ApplyColors(); +} - zones.push_back(new_zone); +void RGBController_CorsairPro::UpdateZoneLEDs(int zone) +{ + UpdateLEDs(); +} + +void RGBController_CorsairPro::UpdateSingleLED(int led) +{ + RGBColor color = colors[led]; + unsigned char red = RGBGetRValue(color); + unsigned char grn = RGBGetGValue(color); + unsigned char blu = RGBGetBValue(color); + + corsair->SetLEDColor(led, red, grn, blu); + corsair->ApplyColors(); } void RGBController_CorsairPro::SetCustomMode() diff --git a/RGBController/RGBController_CorsairPro.h b/RGBController/RGBController_CorsairPro.h index ec3a275c7..36192a10b 100644 --- a/RGBController/RGBController_CorsairPro.h +++ b/RGBController/RGBController_CorsairPro.h @@ -16,6 +16,11 @@ class RGBController_CorsairPro : public RGBController { public: RGBController_CorsairPro(CorsairProController* corsair_ptr); + + void SetupZones(); + + void ResizeZone(int zone, int new_size); + void UpdateLEDs(); void UpdateZoneLEDs(int zone); void UpdateSingleLED(int led);