Update RGB Fusion GPU controller to new RGBController API

This commit is contained in:
Adam Honse
2020-03-06 16:54:53 -06:00
parent 5f21674b8f
commit 283cb5a8ac
4 changed files with 65 additions and 49 deletions

View File

@@ -322,7 +322,7 @@ void DetectRGBControllers(void)
//DetectHyperXControllers(busses, rgb_controllers);
//DetectPatriotViperControllers(busses, rgb_controllers);
//DetectPolychromeControllers(busses, rgb_controllers);
//DetectRGBFusionGPUControllers(busses, rgb_controllers);
DetectRGBFusionGPUControllers(busses, rgb_controllers);
//DetectRGBFusionControllers(busses, rgb_controllers);
//DetectMSIRGBControllers(rgb_controllers);

View File

@@ -49,7 +49,7 @@ INCLUDEPATH += \
# Controllers/PoseidonZRGBController/ \
# Controllers/RGBFusionController/ \
# Controllers/RGBFusion2Controller/ \
# Controllers/RGBFusionGPUController/ \
Controllers/RGBFusionGPUController/ \
Controllers/ThermaltakeRiingController/ \
RGBController/ \
qt/
@@ -115,8 +115,8 @@ SOURCES += \
# Controllers/RGBFusionController/RGBFusionControllerDetect.cpp \
# Controllers/RGBFusion2Controller/RGBFusion2Controller.cpp \
# Controllers/RGBFusion2Controller/RGBFusion2ControllerDetect.cpp \
# Controllers/RGBFusionGPUController/RGBFusionGPUController.cpp \
# Controllers/RGBFusionGPUController/RGBFusionGPUControllerDetect.cpp \
Controllers/RGBFusionGPUController/RGBFusionGPUController.cpp \
Controllers/RGBFusionGPUController/RGBFusionGPUControllerDetect.cpp \
Controllers/ThermaltakeRiingController/ThermaltakeRiingController.cpp \
Controllers/ThermaltakeRiingController/ThermaltakeRiingControllerDetect.cpp \
RGBController/RGBController.cpp \
@@ -143,7 +143,7 @@ SOURCES += \
# RGBController/RGBController_PoseidonZRGB.cpp \
# RGBController/RGBController_RGBFusion.cpp \
# RGBController/RGBController_RGBFusion2.cpp \
# RGBController/RGBController_RGBFusionGPU.cpp \
RGBController/RGBController_RGBFusionGPU.cpp \
RGBController/RGBController_ThermaltakeRiing.cpp \
HEADERS += \

View File

@@ -9,27 +9,6 @@
#include "RGBController_RGBFusionGPU.h"
void RGBController_RGBFusionGPU::UpdateLEDs()
{
RGBColor color = colors[0];
unsigned char red = RGBGetRValue(color);
unsigned char grn = RGBGetGValue(color);
unsigned char blu = RGBGetBValue(color);
rgb_fusion->SetColor(red, grn, blu);
}
void RGBController_RGBFusionGPU::UpdateZoneLEDs(int zone)
{
UpdateLEDs();
}
void RGBController_RGBFusionGPU::UpdateSingleLED(int led)
{
UpdateLEDs();
}
RGBController_RGBFusionGPU::RGBController_RGBFusionGPU(RGBFusionGPUController* rgb_fusion_ptr)
{
rgb_fusion = rgb_fusion_ptr;
@@ -87,33 +66,65 @@ RGBController_RGBFusionGPU::RGBController_RGBFusionGPU(RGBFusionGPUController* r
SpectrumCycle.color_mode = MODE_COLORS_NONE;
modes.push_back(SpectrumCycle);
colors.resize(1);
zone* new_zone = new zone();
led* new_led = new led();
std::vector<int>* zone_row = new std::vector<int>();
// Set zone name to channel name
new_zone->name = "GPU Zone";
new_led->name = "GPU LED";
zone_row->push_back(0);
// Aura devices can be either single or linear, never matrix
// That means only one row is needed
new_zone->map.push_back(*zone_row);
// Push new LED to LEDs vector
leds.push_back(*new_led);
// Push new zone to zones vector
zones.push_back(*new_zone);
SetupZones();
// Initialize active mode
active_mode = 0;
}
void RGBController_RGBFusionGPU::SetupZones()
{
/*---------------------------------------------------------*\
| This device only has one LED, so create a single zone and |
| LED for it |
\*---------------------------------------------------------*/
zone* new_zone = new zone();
led* new_led = new led();
new_zone->name = "GPU Zone";
new_zone->type = ZONE_TYPE_SINGLE;
new_zone->leds_min = 1;
new_zone->leds_max = 1;
new_zone->leds_count = 1;
new_led->name = "GPU LED";
/*---------------------------------------------------------*\
| Push the zone and LED on to device vectors |
\*---------------------------------------------------------*/
leds.push_back(*new_led);
zones.push_back(*new_zone);
SetupColors();
}
void RGBController_RGBFusionGPU::ResizeZone(int /*zone*/, int /*new_size*/)
{
/*---------------------------------------------------------*\
| This device does not support resizing zones |
\*---------------------------------------------------------*/
}
void RGBController_RGBFusionGPU::UpdateLEDs()
{
RGBColor color = colors[0];
unsigned char red = RGBGetRValue(color);
unsigned char grn = RGBGetGValue(color);
unsigned char blu = RGBGetBValue(color);
rgb_fusion->SetColor(red, grn, blu);
}
void RGBController_RGBFusionGPU::UpdateZoneLEDs(int /*zone*/)
{
UpdateLEDs();
}
void RGBController_RGBFusionGPU::UpdateSingleLED(int /*led*/)
{
UpdateLEDs();
}
void RGBController_RGBFusionGPU::SetCustomMode()
{
active_mode = 0;
@@ -121,5 +132,5 @@ void RGBController_RGBFusionGPU::SetCustomMode()
void RGBController_RGBFusionGPU::UpdateMode()
{
rgb_fusion->SetMode(modes[active_mode].value, modes[active_mode].speed);
rgb_fusion->SetMode((unsigned char)modes[(unsigned int)active_mode].value, (unsigned char)modes[(unsigned int)active_mode].speed);
}

View File

@@ -16,6 +16,11 @@ class RGBController_RGBFusionGPU : public RGBController
{
public:
RGBController_RGBFusionGPU(RGBFusionGPUController* rgb_fusion_ptr);
void SetupZones();
void ResizeZone(int zone, int new_size);
void UpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);