diff --git a/Controllers/GigabyteRGBFusionGPUController/GigabyteRGBFusionGPUController.cpp b/Controllers/GigabyteRGBFusionGPUController/GigabyteRGBFusionGPUController.cpp index a1c5b012d..ab329d2be 100644 --- a/Controllers/GigabyteRGBFusionGPUController/GigabyteRGBFusionGPUController.cpp +++ b/Controllers/GigabyteRGBFusionGPUController/GigabyteRGBFusionGPUController.cpp @@ -47,12 +47,12 @@ void RGBFusionGPUController::SetColor(unsigned char red, unsigned char green, un } } -void RGBFusionGPUController::SetMode(unsigned char mode, unsigned char speed) +void RGBFusionGPUController::SetMode(unsigned char mode, unsigned char speed, unsigned char brightness) { bus->i2c_smbus_write_byte(dev, RGB_FUSION_GPU_REG_MODE); bus->i2c_smbus_write_byte(dev, mode); bus->i2c_smbus_write_byte(dev, speed); - bus->i2c_smbus_write_byte(dev, 0x63); + bus->i2c_smbus_write_byte(dev, brightness); // Pad commands with 4 zero-bytes for NVIDIA_RTX3060_DEV if (dev == 0x62) diff --git a/Controllers/GigabyteRGBFusionGPUController/GigabyteRGBFusionGPUController.h b/Controllers/GigabyteRGBFusionGPUController/GigabyteRGBFusionGPUController.h index a3c09e3ee..ba73e2d64 100644 --- a/Controllers/GigabyteRGBFusionGPUController/GigabyteRGBFusionGPUController.h +++ b/Controllers/GigabyteRGBFusionGPUController/GigabyteRGBFusionGPUController.h @@ -36,6 +36,12 @@ enum RGB_FUSION_GPU_SPEED_FASTEST = 0x09 }; +enum +{ + RGB_FUSION_GPU_BRIGHTNESS_MIN = 0x00, + RGB_FUSION_GPU_BRIGHTNESS_MAX = 0x63 +}; + class RGBFusionGPUController { public: @@ -45,7 +51,7 @@ public: std::string GetDeviceLocation(); void SetColor(unsigned char red, unsigned char green, unsigned char blue); - void SetMode(unsigned char mode, unsigned char speed); + void SetMode(unsigned char mode, unsigned char speed, unsigned char brightness); private: i2c_smbus_interface* bus; diff --git a/Controllers/GigabyteRGBFusionGPUController/RGBController_GigabyteRGBFusionGPU.cpp b/Controllers/GigabyteRGBFusionGPUController/RGBController_GigabyteRGBFusionGPU.cpp index 182a92f04..9638553fd 100644 --- a/Controllers/GigabyteRGBFusionGPUController/RGBController_GigabyteRGBFusionGPU.cpp +++ b/Controllers/GigabyteRGBFusionGPUController/RGBController_GigabyteRGBFusionGPU.cpp @@ -21,50 +21,65 @@ RGBController_RGBFusionGPU::RGBController_RGBFusionGPU(RGBFusionGPUController* r type = DEVICE_TYPE_GPU; mode Direct; - Direct.name = "Direct"; - Direct.value = RGB_FUSION_GPU_MODE_STATIC; - Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR; - Direct.color_mode = MODE_COLORS_PER_LED; + Direct.name = "Direct"; + Direct.value = RGB_FUSION_GPU_MODE_STATIC; + Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS; + Direct.color_mode = MODE_COLORS_PER_LED; + Direct.brightness_min = RGB_FUSION_GPU_BRIGHTNESS_MIN; + Direct.brightness_max = RGB_FUSION_GPU_BRIGHTNESS_MAX; + Direct.brightness = RGB_FUSION_GPU_BRIGHTNESS_MAX; modes.push_back(Direct); mode Breathing; - Breathing.name = "Breathing"; - Breathing.value = RGB_FUSION_GPU_MODE_BREATHING; - Breathing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR; - Breathing.speed_min = RGB_FUSION_GPU_SPEED_SLOWEST; - Breathing.speed_max = RGB_FUSION_GPU_SPEED_FASTEST; - Breathing.speed = RGB_FUSION_GPU_SPEED_NORMAL; - Breathing.color_mode = MODE_COLORS_PER_LED; + Breathing.name = "Breathing"; + Breathing.value = RGB_FUSION_GPU_MODE_BREATHING; + Breathing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS; + Breathing.speed_min = RGB_FUSION_GPU_SPEED_SLOWEST; + Breathing.speed_max = RGB_FUSION_GPU_SPEED_FASTEST; + Breathing.speed = RGB_FUSION_GPU_SPEED_NORMAL; + Breathing.color_mode = MODE_COLORS_PER_LED; + Breathing.brightness_min = RGB_FUSION_GPU_BRIGHTNESS_MIN; + Breathing.brightness_max = RGB_FUSION_GPU_BRIGHTNESS_MAX; + Breathing.brightness = RGB_FUSION_GPU_BRIGHTNESS_MAX; modes.push_back(Breathing); mode Flashing; - Flashing.name = "Flashing"; - Flashing.value = RGB_FUSION_GPU_MODE_FLASHING; - Flashing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR; - Flashing.speed_min = RGB_FUSION_GPU_SPEED_SLOWEST; - Flashing.speed_max = RGB_FUSION_GPU_SPEED_FASTEST; - Flashing.speed = RGB_FUSION_GPU_SPEED_NORMAL; - Flashing.color_mode = MODE_COLORS_PER_LED; + Flashing.name = "Flashing"; + Flashing.value = RGB_FUSION_GPU_MODE_FLASHING; + Flashing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS; + Flashing.speed_min = RGB_FUSION_GPU_SPEED_SLOWEST; + Flashing.speed_max = RGB_FUSION_GPU_SPEED_FASTEST; + Flashing.speed = RGB_FUSION_GPU_SPEED_NORMAL; + Flashing.color_mode = MODE_COLORS_PER_LED; + Flashing.brightness_min = RGB_FUSION_GPU_BRIGHTNESS_MIN; + Flashing.brightness_max = RGB_FUSION_GPU_BRIGHTNESS_MAX; + Flashing.brightness = RGB_FUSION_GPU_BRIGHTNESS_MAX; modes.push_back(Flashing); mode DualFlashing; - DualFlashing.name = "Dual Flashing"; - DualFlashing.value = RGB_FUSION_GPU_MODE_DUAL_FLASHING; - DualFlashing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR; - DualFlashing.speed_min = RGB_FUSION_GPU_SPEED_SLOWEST; - DualFlashing.speed_max = RGB_FUSION_GPU_SPEED_FASTEST; - DualFlashing.speed = RGB_FUSION_GPU_SPEED_NORMAL; - DualFlashing.color_mode = MODE_COLORS_PER_LED; + DualFlashing.name = "Dual Flashing"; + DualFlashing.value = RGB_FUSION_GPU_MODE_DUAL_FLASHING; + DualFlashing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS; + DualFlashing.speed_min = RGB_FUSION_GPU_SPEED_SLOWEST; + DualFlashing.speed_max = RGB_FUSION_GPU_SPEED_FASTEST; + DualFlashing.speed = RGB_FUSION_GPU_SPEED_NORMAL; + DualFlashing.color_mode = MODE_COLORS_PER_LED; + DualFlashing.brightness_min = RGB_FUSION_GPU_BRIGHTNESS_MIN; + DualFlashing.brightness_max = RGB_FUSION_GPU_BRIGHTNESS_MAX; + DualFlashing.brightness = RGB_FUSION_GPU_BRIGHTNESS_MAX; modes.push_back(DualFlashing); mode SpectrumCycle; - SpectrumCycle.name = "Spectrum Cycle"; - SpectrumCycle.value = RGB_FUSION_GPU_MODE_SPECTRUM_CYCLE; - SpectrumCycle.flags = MODE_FLAG_HAS_SPEED; - SpectrumCycle.speed_min = RGB_FUSION_GPU_SPEED_SLOWEST; - SpectrumCycle.speed_max = RGB_FUSION_GPU_SPEED_FASTEST; - SpectrumCycle.speed = RGB_FUSION_GPU_SPEED_NORMAL; - SpectrumCycle.color_mode = MODE_COLORS_NONE; + SpectrumCycle.name = "Spectrum Cycle"; + SpectrumCycle.value = RGB_FUSION_GPU_MODE_SPECTRUM_CYCLE; + SpectrumCycle.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS; + SpectrumCycle.speed_min = RGB_FUSION_GPU_SPEED_SLOWEST; + SpectrumCycle.speed_max = RGB_FUSION_GPU_SPEED_FASTEST; + SpectrumCycle.speed = RGB_FUSION_GPU_SPEED_NORMAL; + SpectrumCycle.color_mode = MODE_COLORS_NONE; + SpectrumCycle.brightness_min = RGB_FUSION_GPU_BRIGHTNESS_MIN; + SpectrumCycle.brightness_max = RGB_FUSION_GPU_BRIGHTNESS_MAX; + SpectrumCycle.brightness = RGB_FUSION_GPU_BRIGHTNESS_MAX; modes.push_back(SpectrumCycle); SetupZones(); @@ -139,5 +154,5 @@ void RGBController_RGBFusionGPU::SetCustomMode() void RGBController_RGBFusionGPU::DeviceUpdateMode() { - rgb_fusion->SetMode((unsigned char)modes[(unsigned int)active_mode].value, (unsigned char)modes[(unsigned int)active_mode].speed); + rgb_fusion->SetMode((unsigned char)modes[(unsigned int)active_mode].value, (unsigned char)modes[(unsigned int)active_mode].speed, (unsigned char)modes[(unsigned int)active_mode].brightness); }