From c1d3e91c322fcb53ce3255691c5e5f1adda1ba37 Mon Sep 17 00:00:00 2001 From: Cyril Bosselut Date: Sun, 28 Jan 2024 02:52:13 +0000 Subject: [PATCH] Fix Tricolor mode --- .../GigabyteRGBFusion2GPUController.cpp | 6 +++--- .../GigabyteRGBFusion2GPUControllerDetect.cpp | 2 +- .../RGBController_GigabyteRGBFusion2GPU.cpp | 10 ++++++++-- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Controllers/GigabyteRGBFusion2GPUController/GigabyteRGBFusion2GPUController.cpp b/Controllers/GigabyteRGBFusion2GPUController/GigabyteRGBFusion2GPUController.cpp index cb0e66b5..92cf488a 100644 --- a/Controllers/GigabyteRGBFusion2GPUController/GigabyteRGBFusion2GPUController.cpp +++ b/Controllers/GigabyteRGBFusion2GPUController/GigabyteRGBFusion2GPUController.cpp @@ -75,7 +75,7 @@ void RGBFusion2GPUController::SetZone(uint8_t zone, uint8_t mode, fusion2_config { uint8_t zone_pkt[8] = { RGB_FUSION2_GPU_REG_MODE, mode, zone_config.speed, zone_config.brightness, mystery_flag, (uint8_t)(zone + 1), 0x00, 0x00 }; bus->i2c_write_block(dev, sizeof(zone_pkt), zone_pkt); - } + } break; case RGB_FUSION2_GPU_MODE_GRADIENT: @@ -103,7 +103,7 @@ void RGBFusion2GPUController::SetZone(uint8_t zone, uint8_t mode, fusion2_config } break; - case RGB_FUSION2_GPU_MODE_COLOR_SHIFT: + case RGB_FUSION2_GPU_MODE_COLOR_SHIFT: { mystery_flag = zone_config.numberOfColors; uint8_t zone_pkt[8] = { RGB_FUSION2_GPU_REG_MODE, mode, zone_config.speed, zone_config.brightness, mystery_flag, (uint8_t)(zone + 1), 0x00, 0x00 }; @@ -138,7 +138,7 @@ void RGBFusion2GPUController::SetZone(uint8_t zone, uint8_t mode, fusion2_config bus->i2c_write_block(dev, sizeof(zone_pktD), zone_pktD); } break; - + default: { LOG_TRACE("[%s] Mode %02d not found", "fusion2 gpu", mode); diff --git a/Controllers/GigabyteRGBFusion2GPUController/GigabyteRGBFusion2GPUControllerDetect.cpp b/Controllers/GigabyteRGBFusion2GPUController/GigabyteRGBFusion2GPUControllerDetect.cpp index 39485dc3..70870b6b 100644 --- a/Controllers/GigabyteRGBFusion2GPUController/GigabyteRGBFusion2GPUControllerDetect.cpp +++ b/Controllers/GigabyteRGBFusion2GPUController/GigabyteRGBFusion2GPUControllerDetect.cpp @@ -46,7 +46,7 @@ bool TestForGigabyteRGBFusion2GPUController(i2c_smbus_interface* bus, unsigned c //GeForce RTX 4080 Gigabyte AORUS MASTER 16G 0xAB 0x10 0x52 0x07 //Note that GeForce RTX 3080 Ti AORUS XTREME WATERFORCE 12G LHS exposes three i2c buses but only one returns a 0xAB //response and controls the RGB lighting. The other buses return 0x00 0x00 0x00 0x00. - //Note that GeForce RTX 4080 Gigabyte AORUS MASTER 16G exposes two i2c bus with writable address 0x71 but on respond + //Note that GeForce RTX 4080 Gigabyte AORUS MASTER 16G exposes two i2c bus with writable address 0x71 but one respond //0x00 0x00 0x00 0x00 so it should be the one controlling the LCD screen. So we skip this bus //All seen responses start with 0xAB, so we check for this. diff --git a/Controllers/GigabyteRGBFusion2GPUController/RGBController_GigabyteRGBFusion2GPU.cpp b/Controllers/GigabyteRGBFusion2GPUController/RGBController_GigabyteRGBFusion2GPU.cpp index 959be4cc..6638bd95 100644 --- a/Controllers/GigabyteRGBFusion2GPUController/RGBController_GigabyteRGBFusion2GPU.cpp +++ b/Controllers/GigabyteRGBFusion2GPUController/RGBController_GigabyteRGBFusion2GPU.cpp @@ -9,6 +9,7 @@ \*-----------------------------------------*/ #include "RGBController_GigabyteRGBFusion2GPU.h" +#include "LogManager.h" /**------------------------------------------------------------------*\ @name Gigabyte Fusion 2 GPU @@ -144,6 +145,8 @@ RGBController_RGBFusion2GPU::RGBController_RGBFusion2GPU(RGBFusion2GPUController Tricolor.speed_max = RGB_FUSION2_GPU_SPEED_FASTEST; Tricolor.speed = RGB_FUSION2_GPU_SPEED_NORMAL; Tricolor.color_mode = MODE_COLORS_MODE_SPECIFIC; + Tricolor.colors_min = 1; + Tricolor.colors_max = 3; Tricolor.colors.resize(3); Tricolor.brightness_min = RGB_FUSION2_GPU_BRIGHTNESS_MIN; Tricolor.brightness_max = RGB_FUSION2_GPU_BRIGHTNESS_MAX; @@ -220,18 +223,21 @@ void RGBController_RGBFusion2GPU::DeviceUpdateLEDs() } } -void RGBController_RGBFusion2GPU::UpdateZoneLEDs(int /*zone*/) +void RGBController_RGBFusion2GPU::UpdateZoneLEDs(int zone) { + LOG_TRACE("[%s] Update zone #%d", name.c_str(), zone); DeviceUpdateLEDs(); } -void RGBController_RGBFusion2GPU::UpdateSingleLED(int /*led*/) +void RGBController_RGBFusion2GPU::UpdateSingleLED(int led) { + LOG_TRACE("[%s] Update single led : %d", name.c_str(), led); DeviceUpdateLEDs(); } void RGBController_RGBFusion2GPU::DeviceUpdateMode() { + LOG_TRACE("[%s] Switching to mode %s @ brightness %d and speed %d", name.c_str(), modes[active_mode].name, modes[active_mode].brightness, modes[active_mode].speed); DeviceUpdateLEDs(); }