From bed69130fdae0ad682f7f97496a362a902f30de1 Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Sun, 10 Aug 2025 00:18:25 -0500 Subject: [PATCH] Store name in GigabyteRGBFusion2BlackwellGPUController to avoid setting it in detector --- ...gabyteRGBFusion2BlackwellGPUController.cpp | 12 +- ...GigabyteRGBFusion2BlackwellGPUController.h | 7 +- ...RGBFusion2BlackwellGPUControllerDetect.cpp | 3 +- ...troller_GigabyteRGBFusion2BlackwellGPU.cpp | 280 ++++++++++-------- 4 files changed, 174 insertions(+), 128 deletions(-) diff --git a/Controllers/GigabyteRGBFusion2BlackwellGPUController/GigabyteRGBFusion2BlackwellGPUController.cpp b/Controllers/GigabyteRGBFusion2BlackwellGPUController/GigabyteRGBFusion2BlackwellGPUController.cpp index 16a8d081..303a5666 100644 --- a/Controllers/GigabyteRGBFusion2BlackwellGPUController/GigabyteRGBFusion2BlackwellGPUController.cpp +++ b/Controllers/GigabyteRGBFusion2BlackwellGPUController/GigabyteRGBFusion2BlackwellGPUController.cpp @@ -15,10 +15,11 @@ using namespace std::chrono_literals; -RGBFusion2BlackwellGPUController::RGBFusion2BlackwellGPUController(i2c_smbus_interface* bus, rgb_fusion_dev_id dev) +RGBFusion2BlackwellGPUController::RGBFusion2BlackwellGPUController(i2c_smbus_interface* bus, rgb_fusion_dev_id dev, std::string dev_name) { - this->bus = bus; - this->dev = dev; + this->bus = bus; + this->dev = dev; + this->name = dev_name; } RGBFusion2BlackwellGPUController::~RGBFusion2BlackwellGPUController() @@ -36,6 +37,11 @@ std::string RGBFusion2BlackwellGPUController::GetDeviceLocation() return("I2C: " + return_string); } +std::string RGBFusion2BlackwellGPUController::GetDeviceName() +{ + return(name); +} + void RGBFusion2BlackwellGPUController::SaveConfig() { uint8_t data_pkt[64] = { 0x13, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/Controllers/GigabyteRGBFusion2BlackwellGPUController/GigabyteRGBFusion2BlackwellGPUController.h b/Controllers/GigabyteRGBFusion2BlackwellGPUController/GigabyteRGBFusion2BlackwellGPUController.h index 2a4e6cc3..b32ca28b 100644 --- a/Controllers/GigabyteRGBFusion2BlackwellGPUController/GigabyteRGBFusion2BlackwellGPUController.h +++ b/Controllers/GigabyteRGBFusion2BlackwellGPUController/GigabyteRGBFusion2BlackwellGPUController.h @@ -69,18 +69,21 @@ enum class RGBFusion2BlackwellGPUController { public: - RGBFusion2BlackwellGPUController(i2c_smbus_interface* bus, rgb_fusion_dev_id dev); + RGBFusion2BlackwellGPUController(i2c_smbus_interface* bus, rgb_fusion_dev_id dev, std::string dev_name); ~RGBFusion2BlackwellGPUController(); RGBColor zone_color[RGB_FUSION_2_BLACKWELL_GPU_NUMBER_OF_ZONES]; std::string GetDeviceLocation(); + std::string GetDeviceName(); + void SaveConfig(); void SetZone(uint8_t zone, uint8_t mode, fusion2_config zone_config); void SetMode(uint8_t type, uint8_t zone, uint8_t mode, fusion2_config zone_config); + private: i2c_smbus_interface* bus; rgb_fusion_dev_id dev; - + std::string name; }; diff --git a/Controllers/GigabyteRGBFusion2BlackwellGPUController/GigabyteRGBFusion2BlackwellGPUControllerDetect.cpp b/Controllers/GigabyteRGBFusion2BlackwellGPUController/GigabyteRGBFusion2BlackwellGPUControllerDetect.cpp index dd9f2b1f..e6791a2a 100644 --- a/Controllers/GigabyteRGBFusion2BlackwellGPUController/GigabyteRGBFusion2BlackwellGPUControllerDetect.cpp +++ b/Controllers/GigabyteRGBFusion2BlackwellGPUController/GigabyteRGBFusion2BlackwellGPUControllerDetect.cpp @@ -83,9 +83,8 @@ void DetectGigabyteRGBFusion2BlackwellGPUControllers(i2c_smbus_interface* bus, u // Check for RGB Fusion2 controller if(TestForGigabyteRGBFusion2BlackwellGPUController(bus, i2c_addr)) { - RGBFusion2BlackwellGPUController* controller = new RGBFusion2BlackwellGPUController(bus, i2c_addr); + RGBFusion2BlackwellGPUController* controller = new RGBFusion2BlackwellGPUController(bus, i2c_addr, name); RGBController_RGBFusion2BlackwellGPU* rgb_controller = new RGBController_RGBFusion2BlackwellGPU(controller, led_zones); - rgb_controller->name = name; ResourceManager::get()->RegisterRGBController(rgb_controller); } diff --git a/Controllers/GigabyteRGBFusion2BlackwellGPUController/RGBController_GigabyteRGBFusion2BlackwellGPU.cpp b/Controllers/GigabyteRGBFusion2BlackwellGPUController/RGBController_GigabyteRGBFusion2BlackwellGPU.cpp index 78460f05..3b30d2d3 100644 --- a/Controllers/GigabyteRGBFusion2BlackwellGPUController/RGBController_GigabyteRGBFusion2BlackwellGPU.cpp +++ b/Controllers/GigabyteRGBFusion2BlackwellGPUController/RGBController_GigabyteRGBFusion2BlackwellGPU.cpp @@ -24,75 +24,73 @@ RGBController_RGBFusion2BlackwellGPU::RGBController_RGBFusion2BlackwellGPU(RGBFusion2BlackwellGPUController* controller_ptr, uint8_t led_layout) { - controller = controller_ptr; + controller = controller_ptr; + gpu_layout = led_layout; - gpu_layout = led_layout; - - name = "Gigabyte GPU"; - vendor = "Gigabyte"; - description = "Gigabyte RGB Fusion 2 Blackwell GPU"; - location = controller->GetDeviceLocation(); - - type = DEVICE_TYPE_GPU; + name = controller->GetDeviceName(); + vendor = "Gigabyte"; + description = "Gigabyte RGB Fusion 2 Blackwell GPU Device"; + location = controller->GetDeviceLocation(); + type = DEVICE_TYPE_GPU; mode Static; - Static.name = "Static"; - Static.value = RGB_FUSION2_BLACKWELL_GPU_MODE_STATIC; - Static.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; - Static.color_mode = MODE_COLORS_PER_LED; - Static.brightness_min = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MIN; - Static.brightness_max = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; - Static.brightness = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; + Static.name = "Static"; + Static.value = RGB_FUSION2_BLACKWELL_GPU_MODE_STATIC; + Static.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; + Static.color_mode = MODE_COLORS_PER_LED; + Static.brightness_min = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MIN; + Static.brightness_max = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; + Static.brightness = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; modes.push_back(Static); // Some GPU models (Gaming) dont maintain the colors but it has faster updates, useful for Effects (and the reason it has to be named Direct) mode Direct; - Direct.name = "Direct"; - Direct.value = RGB_FUSION2_BLACKWELL_GPU_MODE_DIRECT; - Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; - Direct.color_mode = MODE_COLORS_PER_LED; - Direct.brightness_min = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MIN; - Direct.brightness_max = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; - Direct.brightness = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; + Direct.name = "Direct"; + Direct.value = RGB_FUSION2_BLACKWELL_GPU_MODE_DIRECT; + Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; + Direct.color_mode = MODE_COLORS_PER_LED; + Direct.brightness_min = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MIN; + Direct.brightness_max = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; + Direct.brightness = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; modes.push_back(Direct); mode Breathing; - Breathing.name = "Pulse"; - Breathing.value = RGB_FUSION2_BLACKWELL_GPU_MODE_BREATHING; - Breathing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; - Breathing.speed_min = RGB_FUSION2_BLACKWELL_GPU_SPEED_SLOWEST; - Breathing.speed_max = RGB_FUSION2_BLACKWELL_GPU_SPEED_FASTEST; - Breathing.speed = RGB_FUSION2_BLACKWELL_GPU_SPEED_NORMAL; - Breathing.color_mode = MODE_COLORS_PER_LED; - Breathing.brightness_min = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MIN; - Breathing.brightness_max = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; - Breathing.brightness = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; + Breathing.name = "Pulse"; + Breathing.value = RGB_FUSION2_BLACKWELL_GPU_MODE_BREATHING; + Breathing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; + Breathing.speed_min = RGB_FUSION2_BLACKWELL_GPU_SPEED_SLOWEST; + Breathing.speed_max = RGB_FUSION2_BLACKWELL_GPU_SPEED_FASTEST; + Breathing.speed = RGB_FUSION2_BLACKWELL_GPU_SPEED_NORMAL; + Breathing.color_mode = MODE_COLORS_PER_LED; + Breathing.brightness_min = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MIN; + Breathing.brightness_max = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; + Breathing.brightness = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; modes.push_back(Breathing); mode Flashing; - Flashing.name = "Flash"; - Flashing.value = RGB_FUSION2_BLACKWELL_GPU_MODE_FLASHING; - Flashing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; - Flashing.speed_min = RGB_FUSION2_BLACKWELL_GPU_SPEED_SLOWEST; - Flashing.speed_max = RGB_FUSION2_BLACKWELL_GPU_SPEED_FASTEST; - Flashing.speed = RGB_FUSION2_BLACKWELL_GPU_SPEED_NORMAL; - Flashing.color_mode = MODE_COLORS_PER_LED; - Flashing.brightness_min = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MIN; - Flashing.brightness_max = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; - Flashing.brightness = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; + Flashing.name = "Flash"; + Flashing.value = RGB_FUSION2_BLACKWELL_GPU_MODE_FLASHING; + Flashing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; + Flashing.speed_min = RGB_FUSION2_BLACKWELL_GPU_SPEED_SLOWEST; + Flashing.speed_max = RGB_FUSION2_BLACKWELL_GPU_SPEED_FASTEST; + Flashing.speed = RGB_FUSION2_BLACKWELL_GPU_SPEED_NORMAL; + Flashing.color_mode = MODE_COLORS_PER_LED; + Flashing.brightness_min = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MIN; + Flashing.brightness_max = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; + Flashing.brightness = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; modes.push_back(Flashing); mode DualFlashing; - DualFlashing.name = "Double Flash"; - DualFlashing.value = RGB_FUSION2_BLACKWELL_GPU_MODE_DUAL_FLASHING; - DualFlashing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; - DualFlashing.speed_min = RGB_FUSION2_BLACKWELL_GPU_SPEED_SLOWEST; - DualFlashing.speed_max = RGB_FUSION2_BLACKWELL_GPU_SPEED_FASTEST; - DualFlashing.speed = RGB_FUSION2_BLACKWELL_GPU_SPEED_NORMAL; - DualFlashing.color_mode = MODE_COLORS_PER_LED; - DualFlashing.brightness_min = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MIN; - DualFlashing.brightness_max = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; - DualFlashing.brightness = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; + DualFlashing.name = "Double Flash"; + DualFlashing.value = RGB_FUSION2_BLACKWELL_GPU_MODE_DUAL_FLASHING; + DualFlashing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; + DualFlashing.speed_min = RGB_FUSION2_BLACKWELL_GPU_SPEED_SLOWEST; + DualFlashing.speed_max = RGB_FUSION2_BLACKWELL_GPU_SPEED_FASTEST; + DualFlashing.speed = RGB_FUSION2_BLACKWELL_GPU_SPEED_NORMAL; + DualFlashing.color_mode = MODE_COLORS_PER_LED; + DualFlashing.brightness_min = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MIN; + DualFlashing.brightness_max = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; + DualFlashing.brightness = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; modes.push_back(DualFlashing); mode SpectrumCycle; @@ -111,63 +109,63 @@ RGBController_RGBFusion2BlackwellGPU::RGBController_RGBFusion2BlackwellGPU(RGBFu if(led_layout == RGB_FUSION2_BLACKWELL_GPU_GAMING_LAYOUT || led_layout == RGB_FUSION2_BLACKWELL_GPU_WATERFORCE_LAYOUT) { mode Wave; - Wave.name = "Wave"; - Wave.value = RGB_FUSION2_BLACKWELL_GPU_MODE_WAVE; - Wave.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; - Wave.speed_min = RGB_FUSION2_BLACKWELL_GPU_SPEED_SLOWEST; - Wave.speed_max = RGB_FUSION2_BLACKWELL_GPU_SPEED_FASTEST; - Wave.speed = RGB_FUSION2_BLACKWELL_GPU_SPEED_NORMAL; - Wave.color_mode = MODE_COLORS_NONE; - Wave.brightness_min = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MIN; - Wave.brightness_max = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; - Wave.brightness = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; + Wave.name = "Wave"; + Wave.value = RGB_FUSION2_BLACKWELL_GPU_MODE_WAVE; + Wave.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; + Wave.speed_min = RGB_FUSION2_BLACKWELL_GPU_SPEED_SLOWEST; + Wave.speed_max = RGB_FUSION2_BLACKWELL_GPU_SPEED_FASTEST; + Wave.speed = RGB_FUSION2_BLACKWELL_GPU_SPEED_NORMAL; + Wave.color_mode = MODE_COLORS_NONE; + Wave.brightness_min = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MIN; + Wave.brightness_max = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; + Wave.brightness = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; modes.push_back(Wave); mode Gradient; - Gradient.name = "Gradient"; - Gradient.value = RGB_FUSION2_BLACKWELL_GPU_MODE_GRADIENT; - Gradient.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; - Gradient.speed_min = RGB_FUSION2_BLACKWELL_GPU_SPEED_SLOWEST; - Gradient.speed_max = RGB_FUSION2_BLACKWELL_GPU_SPEED_FASTEST; - Gradient.speed = RGB_FUSION2_BLACKWELL_GPU_SPEED_NORMAL; - Gradient.color_mode = MODE_COLORS_PER_LED; - Gradient.brightness_min = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MIN; - Gradient.brightness_max = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; - Gradient.brightness = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; + Gradient.name = "Gradient"; + Gradient.value = RGB_FUSION2_BLACKWELL_GPU_MODE_GRADIENT; + Gradient.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; + Gradient.speed_min = RGB_FUSION2_BLACKWELL_GPU_SPEED_SLOWEST; + Gradient.speed_max = RGB_FUSION2_BLACKWELL_GPU_SPEED_FASTEST; + Gradient.speed = RGB_FUSION2_BLACKWELL_GPU_SPEED_NORMAL; + Gradient.color_mode = MODE_COLORS_PER_LED; + Gradient.brightness_min = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MIN; + Gradient.brightness_max = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; + Gradient.brightness = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; modes.push_back(Gradient); mode ColorShift; - ColorShift.name = "Color Shift"; - ColorShift.value = RGB_FUSION2_BLACKWELL_GPU_MODE_COLOR_SHIFT; - ColorShift.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; - ColorShift.speed_min = RGB_FUSION2_BLACKWELL_GPU_SPEED_SLOWEST; - ColorShift.speed_max = RGB_FUSION2_BLACKWELL_GPU_SPEED_FASTEST; - ColorShift.speed = RGB_FUSION2_BLACKWELL_GPU_SPEED_NORMAL; - ColorShift.color_mode = MODE_COLORS_MODE_SPECIFIC; - ColorShift.colors_min = 1; - ColorShift.colors_max = 8; + ColorShift.name = "Color Shift"; + ColorShift.value = RGB_FUSION2_BLACKWELL_GPU_MODE_COLOR_SHIFT; + ColorShift.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; + ColorShift.speed_min = RGB_FUSION2_BLACKWELL_GPU_SPEED_SLOWEST; + ColorShift.speed_max = RGB_FUSION2_BLACKWELL_GPU_SPEED_FASTEST; + ColorShift.speed = RGB_FUSION2_BLACKWELL_GPU_SPEED_NORMAL; + ColorShift.color_mode = MODE_COLORS_MODE_SPECIFIC; + ColorShift.colors_min = 1; + ColorShift.colors_max = 8; ColorShift.colors.resize(8); - ColorShift.brightness_min = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MIN; - ColorShift.brightness_max = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; - ColorShift.brightness = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; + ColorShift.brightness_min = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MIN; + ColorShift.brightness_max = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; + ColorShift.brightness = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; modes.push_back(ColorShift); /* Disabled Dazzle as it seems to only execute once, would need to loop it maybe? * Not for Waterforce mode Dazzle; - Dazzle.name = "Dazzle"; - Dazzle.value = RGB_FUSION2_BLACKWELL_GPU_MODE_DAZZLE; - Dazzle.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; - Dazzle.speed_min = RGB_FUSION2_BLACKWELL_GPU_SPEED_SLOWEST; - Dazzle.speed_max = RGB_FUSION2_BLACKWELL_GPU_SPEED_FASTEST; - Dazzle.speed = RGB_FUSION2_BLACKWELL_GPU_SPEED_NORMAL; - Dazzle.color_mode = MODE_COLORS_MODE_SPECIFIC; - Dazzle.colors_min = 1; - Dazzle.colors_max = 8; + Dazzle.name = "Dazzle"; + Dazzle.value = RGB_FUSION2_BLACKWELL_GPU_MODE_DAZZLE; + Dazzle.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; + Dazzle.speed_min = RGB_FUSION2_BLACKWELL_GPU_SPEED_SLOWEST; + Dazzle.speed_max = RGB_FUSION2_BLACKWELL_GPU_SPEED_FASTEST; + Dazzle.speed = RGB_FUSION2_BLACKWELL_GPU_SPEED_NORMAL; + Dazzle.color_mode = MODE_COLORS_MODE_SPECIFIC; + Dazzle.colors_min = 1; + Dazzle.colors_max = 8; Dazzle.colors.resize(8); - Dazzle.brightness_min = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MIN; - Dazzle.brightness_max = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; - Dazzle.brightness = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; + Dazzle.brightness_min = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MIN; + Dazzle.brightness_max = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; + Dazzle.brightness = RGB_FUSION2_BLACKWELL_GPU_BRIGHTNESS_MAX; modes.push_back(Dazzle);*/ } @@ -185,20 +183,20 @@ void RGBController_RGBFusion2BlackwellGPU::SetupZones() | This device only allows setting the entire zone for all | | LED's in the zone and does not allow per LED control. | \*---------------------------------------------------------*/ - if(gpu_layout == RGB_FUSION2_BLACKWELL_GPU_SINGLE_ZONE) { zone new_zone; led new_led; - new_zone.name = "Side"; - new_zone.type = ZONE_TYPE_SINGLE; - new_zone.leds_min = 1; - new_zone.leds_max = 1; + new_zone.name = "Side"; + new_zone.type = ZONE_TYPE_SINGLE; + new_zone.leds_min = 1; + new_zone.leds_max = 1; new_zone.leds_count = 1; new_zone.matrix_map = NULL; - new_led.name = new_zone.name; + new_led.name = new_zone.name; + /*---------------------------------------------------------*\ | Push the zone and LED on to device vectors | \*---------------------------------------------------------*/ @@ -214,18 +212,31 @@ void RGBController_RGBFusion2BlackwellGPU::SetupZones() switch(zone_idx) { - case 0: new_zone.name = "Right fan"; break; - case 1: new_zone.name = "Left fan"; break; - case 2: new_zone.name = "Center fan"; break; - case 3: new_zone.name = "Side"; break; + case 0: + new_zone.name = "Right fan"; + break; + + case 1: + new_zone.name = "Left fan"; + break; + + case 2: + new_zone.name = "Center fan"; + break; + + case 3: + new_zone.name = "Side"; + break; } - new_zone.type = ZONE_TYPE_SINGLE; - new_zone.leds_min = 1; - new_zone.leds_max = 1; + + new_zone.type = ZONE_TYPE_SINGLE; + new_zone.leds_min = 1; + new_zone.leds_max = 1; new_zone.leds_count = 1; new_zone.matrix_map = NULL; - new_led.name = new_zone.name; + new_led.name = new_zone.name; + /*---------------------------------------------------------*\ | Push the zone and LED on to device vectors | \*---------------------------------------------------------*/ @@ -242,16 +253,23 @@ void RGBController_RGBFusion2BlackwellGPU::SetupZones() switch(zone_idx) { - case 0: new_zone.name = "Waterblock"; break; - case 1: new_zone.name = "Backplate"; break; + case 0: + new_zone.name = "Waterblock"; + break; + + case 1: + new_zone.name = "Backplate"; + break; } - new_zone.type = ZONE_TYPE_SINGLE; - new_zone.leds_min = 1; - new_zone.leds_max = 1; + + new_zone.type = ZONE_TYPE_SINGLE; + new_zone.leds_min = 1; + new_zone.leds_max = 1; new_zone.leds_count = 1; new_zone.matrix_map = NULL; - new_led.name = new_zone.name; + new_led.name = new_zone.name; + /*---------------------------------------------------------*\ | Push the zone and LED on to device vectors | \*---------------------------------------------------------*/ @@ -278,27 +296,47 @@ void RGBController_RGBFusion2BlackwellGPU::DeviceUpdateLEDs() zone_config.speed = modes[active_mode].speed; zone_config.direction = modes[active_mode].direction; zone_config.numberOfColors = 0; + if(modes[active_mode].color_mode == MODE_COLORS_MODE_SPECIFIC) + { zone_config.numberOfColors = (uint8_t)modes[active_mode].colors.size(); + } uint8_t gpu_zones; switch(gpu_layout) // replicating GCC that sends more packets even when there is less zones { - case RGB_FUSION2_BLACKWELL_GPU_SINGLE_ZONE: gpu_zones = 1; break; - case RGB_FUSION2_BLACKWELL_GPU_GAMING_LAYOUT: gpu_zones = 6; break; - case RGB_FUSION2_BLACKWELL_GPU_WATERFORCE_LAYOUT: gpu_zones = 3; break; - default: LOG_TRACE("[%s] Invalid GPU layout (%d) when updating LEDs.", name.c_str(), gpu_layout); return; // should not happen + case RGB_FUSION2_BLACKWELL_GPU_SINGLE_ZONE: + gpu_zones = 1; + break; + + case RGB_FUSION2_BLACKWELL_GPU_GAMING_LAYOUT: + gpu_zones = 6; + break; + + case RGB_FUSION2_BLACKWELL_GPU_WATERFORCE_LAYOUT: + gpu_zones = 3; + break; + + default: + LOG_TRACE("[%s] Invalid GPU layout (%d) when updating LEDs.", name.c_str(), gpu_layout); + return; // should not happen } for(uint8_t zone_idx = 0; zone_idx < gpu_zones; zone_idx++) { if(zone_idx >= zones.size()) + { zone_config.colors[zone_idx] = colors.back(); + } else + { zone_config.colors[zone_idx] = colors[zone_idx]; + } for(uint8_t i = 0; i < zone_config.numberOfColors; i++) // specific for MODE_COLORS_MODE_SPECIFIC + { zone_config.colors[i] = modes[active_mode].colors[i]; + } controller->SetZone(zone_idx, modes[active_mode].value, zone_config); }