mirror of
https://github.com/CalcProgrammer1/OpenRGB.git
synced 2025-12-27 01:07:49 -05:00
475 lines
22 KiB
C++
475 lines
22 KiB
C++
/*-----------------------------------------*\
|
|
| RGBController_MSIGPUv2.cpp |
|
|
| |
|
|
| ITE9 RGB Interface for MSI GPU |
|
|
| Wojciech Lazarski 03/Jan/2023 |
|
|
| |
|
|
\*-----------------------------------------*/
|
|
|
|
#include "RGBController_MSIGPUv2.h"
|
|
#include <array>
|
|
|
|
static const unsigned char speed_values[3] = { 0x04, 0x02, 0x01 };
|
|
|
|
/**------------------------------------------------------------------*\
|
|
@name MSI GPU v2
|
|
@category GPU
|
|
@type I2C
|
|
@save :white_check_mark:
|
|
@direct :white_check_mark:
|
|
@effects :white_check_mark:
|
|
@detectors DetectMSIGPUv2Controllers
|
|
@comment
|
|
\*-------------------------------------------------------------------*/
|
|
|
|
RGBController_MSIGPUv2::RGBController_MSIGPUv2(MSIGPUv2Controller * msi_gpu_ptr)
|
|
{
|
|
msi_gpu = msi_gpu_ptr;
|
|
|
|
name = "MSI GPU Device";
|
|
vendor = "MSI";
|
|
type = DEVICE_TYPE_GPU;
|
|
description = name;
|
|
location = msi_gpu->GetDeviceLocation();
|
|
|
|
mode Off;
|
|
|
|
Off.name = "Off";
|
|
Off.value = MSI_GPU_V2_MODE_OFF;
|
|
Off.flags = MODE_FLAG_MANUAL_SAVE;
|
|
Off.color_mode = MODE_COLORS_NONE;
|
|
modes.push_back(Off);
|
|
|
|
mode Direct;
|
|
Direct.name = "Direct";
|
|
Direct.value = MSI_GPU_V2_MODE_STATIC;
|
|
Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE;
|
|
Direct.brightness_min = MSI_GPU_V2_BRIGHTNESS_MIN;
|
|
Direct.brightness = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
Direct.brightness_max = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
Direct.color_mode = MODE_COLORS_PER_LED;
|
|
modes.push_back(Direct);
|
|
|
|
mode Rainbow;
|
|
Rainbow.name = "Rainbow Wave";
|
|
Rainbow.value = MSI_GPU_V2_MODE_RAINBOW;
|
|
Rainbow.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_MANUAL_SAVE;
|
|
Rainbow.speed_min = MSI_GPU_V2_SPEED_MIN;
|
|
Rainbow.speed = MSI_GPU_V2_SPEED_MID;
|
|
Rainbow.speed_max = MSI_GPU_V2_SPEED_MAX;
|
|
Rainbow.brightness_min = MSI_GPU_V2_BRIGHTNESS_MIN;
|
|
Rainbow.brightness = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
Rainbow.brightness_max = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
Rainbow.color_mode = MODE_COLORS_RANDOM;
|
|
modes.push_back(Rainbow);
|
|
|
|
mode Magic;
|
|
Magic.name = "Magic";
|
|
Magic.value = MSI_GPU_V2_MODE_MAGIC;
|
|
Magic.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_MANUAL_SAVE;
|
|
Magic.speed_min = MSI_GPU_V2_SPEED_MIN;
|
|
Magic.speed = MSI_GPU_V2_SPEED_MID;
|
|
Magic.speed_max = MSI_GPU_V2_SPEED_MAX;
|
|
Magic.brightness_min = MSI_GPU_V2_BRIGHTNESS_MIN;
|
|
Magic.brightness = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
Magic.brightness_max = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
Magic.color_mode = MODE_COLORS_RANDOM;
|
|
modes.push_back(Magic);
|
|
|
|
mode ColorCycle;
|
|
ColorCycle.name = "Color Cycle";
|
|
ColorCycle.value = MSI_GPU_V2_MODE_MAGIC;
|
|
ColorCycle.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_MANUAL_SAVE;
|
|
ColorCycle.speed_min = MSI_GPU_V2_SPEED_MIN;
|
|
ColorCycle.speed = MSI_GPU_V2_SPEED_MID;
|
|
ColorCycle.speed_max = MSI_GPU_V2_SPEED_MAX;
|
|
ColorCycle.brightness_min = MSI_GPU_V2_BRIGHTNESS_MIN;
|
|
ColorCycle.brightness = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
ColorCycle.brightness_max = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
ColorCycle.colors_min = 1;
|
|
ColorCycle.colors_max = 3;
|
|
ColorCycle.colors.resize(3);
|
|
ColorCycle.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
|
modes.push_back(ColorCycle);
|
|
|
|
|
|
mode Patrolling;
|
|
Patrolling.name = "Patrolling";
|
|
Patrolling.value = MSI_GPU_V2_MODE_PATROLLING;
|
|
Patrolling.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE;
|
|
Patrolling.speed_min = MSI_GPU_V2_SPEED_MIN;
|
|
Patrolling.speed = MSI_GPU_V2_SPEED_MID;
|
|
Patrolling.speed_max = MSI_GPU_V2_SPEED_MAX;
|
|
Patrolling.brightness_min = MSI_GPU_V2_BRIGHTNESS_MIN;
|
|
Patrolling.brightness = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
Patrolling.brightness_max = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
Patrolling.color_mode = MODE_COLORS_PER_LED;
|
|
modes.push_back(Patrolling);
|
|
|
|
mode Streaming;
|
|
Streaming.name = "Streaming";
|
|
Streaming.value = MSI_GPU_V2_MODE_STREAMING;
|
|
Streaming.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_MANUAL_SAVE;
|
|
Streaming.speed_min = MSI_GPU_V2_SPEED_MIN;
|
|
Streaming.speed = MSI_GPU_V2_SPEED_MID;
|
|
Streaming.speed_max = MSI_GPU_V2_SPEED_MAX;
|
|
Streaming.brightness_min = MSI_GPU_V2_BRIGHTNESS_MIN;
|
|
Streaming.brightness = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
Streaming.brightness_max = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
Streaming.color_mode = MODE_COLORS_RANDOM;
|
|
modes.push_back(Streaming);
|
|
|
|
mode Lightning;
|
|
Lightning.name = "Lightning";
|
|
Lightning.value = MSI_GPU_V2_MODE_LIGHTNING;
|
|
Lightning.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_MANUAL_SAVE;
|
|
Lightning.speed_min = MSI_GPU_V2_SPEED_MIN;
|
|
Lightning.speed = MSI_GPU_V2_SPEED_MID;
|
|
Lightning.speed_max = MSI_GPU_V2_SPEED_MAX;
|
|
Lightning.brightness_min = MSI_GPU_V2_BRIGHTNESS_MIN;
|
|
Lightning.brightness = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
Lightning.brightness_max = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
Lightning.color_mode = MODE_COLORS_RANDOM;
|
|
modes.push_back(Lightning);
|
|
|
|
mode Wave;
|
|
Wave.name = "Wave";
|
|
Wave.value = MSI_GPU_V2_MODE_RAINBOW; //Rainbow has two modes now
|
|
Wave.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_MANUAL_SAVE;
|
|
Wave.speed_min = MSI_GPU_V2_SPEED_MIN;
|
|
Wave.speed = MSI_GPU_V2_SPEED_MID;
|
|
Wave.speed_max = MSI_GPU_V2_SPEED_MAX;
|
|
Wave.brightness_min = MSI_GPU_V2_BRIGHTNESS_MIN;
|
|
Wave.brightness = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
Wave.brightness_max = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
Wave.colors_min = 1;
|
|
Wave.colors_max = 3;
|
|
Wave.colors.resize(3);
|
|
Wave.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
|
modes.push_back(Wave);
|
|
|
|
mode Meteor;
|
|
Meteor.name = "Meteor";
|
|
Meteor.value = MSI_GPU_V2_MODE_METEOR;
|
|
Meteor.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE;
|
|
Meteor.speed_min = MSI_GPU_V2_SPEED_MIN;
|
|
Meteor.speed = MSI_GPU_V2_SPEED_MID;
|
|
Meteor.speed_max = MSI_GPU_V2_SPEED_MAX;
|
|
Meteor.brightness_min = MSI_GPU_V2_BRIGHTNESS_MIN;
|
|
Meteor.brightness = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
Meteor.brightness_max = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
Meteor.color_mode = MODE_COLORS_PER_LED;
|
|
modes.push_back(Meteor);
|
|
|
|
mode Stack;
|
|
Stack.name = "Stack";
|
|
Stack.value = MSI_GPU_V2_MODE_STACK;
|
|
Stack.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE;
|
|
Stack.speed_min = MSI_GPU_V2_SPEED_MIN;
|
|
Stack.speed = MSI_GPU_V2_SPEED_MID;
|
|
Stack.speed_max = MSI_GPU_V2_SPEED_MAX;
|
|
Stack.brightness_min = MSI_GPU_V2_BRIGHTNESS_MIN;
|
|
Stack.brightness = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
Stack.brightness_max = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
Stack.color_mode = MODE_COLORS_PER_LED;
|
|
modes.push_back(Stack);
|
|
|
|
mode Rhythm;
|
|
Rhythm.name = "Rhythm";
|
|
Rhythm.value = MSI_GPU_V2_MODE_RHYTHM;
|
|
Rhythm.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE;
|
|
Rhythm.speed_min = MSI_GPU_V2_SPEED_MIN;
|
|
Rhythm.speed = MSI_GPU_V2_SPEED_MID;
|
|
Rhythm.speed_max = MSI_GPU_V2_SPEED_MAX;
|
|
Rhythm.brightness_min = MSI_GPU_V2_BRIGHTNESS_MIN;
|
|
Rhythm.brightness = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
Rhythm.brightness_max = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
Rhythm.color_mode = MODE_COLORS_PER_LED;
|
|
modes.push_back(Rhythm);
|
|
|
|
mode Flowing;
|
|
Flowing.name = "Flowing";
|
|
Flowing.value = MSI_GPU_V2_MODE_FLOWING;
|
|
Flowing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE;
|
|
Flowing.speed_min = MSI_GPU_V2_SPEED_MIN;
|
|
Flowing.speed = MSI_GPU_V2_SPEED_MID;
|
|
Flowing.speed_max = MSI_GPU_V2_SPEED_MAX;
|
|
Flowing.brightness_min = MSI_GPU_V2_BRIGHTNESS_MIN;
|
|
Flowing.brightness = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
Flowing.brightness_max = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
Flowing.color_mode = MODE_COLORS_PER_LED;
|
|
modes.push_back(Flowing);
|
|
|
|
mode Whirling;
|
|
Whirling.name = "Whirling";
|
|
Whirling.value = MSI_GPU_V2_MODE_WHIRLING;
|
|
Whirling.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE;
|
|
Whirling.speed_min = MSI_GPU_V2_SPEED_MIN;
|
|
Whirling.speed = MSI_GPU_V2_SPEED_MID;
|
|
Whirling.speed_max = MSI_GPU_V2_SPEED_MAX;
|
|
Whirling.brightness_min = MSI_GPU_V2_BRIGHTNESS_MIN;
|
|
Whirling.brightness = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
Whirling.brightness_max = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
Whirling.color_mode = MODE_COLORS_PER_LED;
|
|
modes.push_back(Whirling);
|
|
|
|
mode Fadein;
|
|
Fadein.name = "Fade In";
|
|
Fadein.value = MSI_GPU_V2_MODE_FADEIN;
|
|
Fadein.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_MANUAL_SAVE;
|
|
Fadein.speed_min = MSI_GPU_V2_SPEED_MIN;
|
|
Fadein.speed = MSI_GPU_V2_SPEED_MID;
|
|
Fadein.speed_max = MSI_GPU_V2_SPEED_MAX;
|
|
Fadein.brightness_min = MSI_GPU_V2_BRIGHTNESS_MIN;
|
|
Fadein.brightness = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
Fadein.brightness_max = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
Fadein.colors_min = 1;
|
|
Fadein.colors_max = 2;
|
|
Fadein.colors.resize(2);
|
|
Fadein.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
|
modes.push_back(Fadein);
|
|
|
|
mode Breathing;
|
|
Breathing.name = "Breathing";
|
|
Breathing.value = MSI_GPU_V2_MODE_BREATHING;
|
|
Breathing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_MANUAL_SAVE;
|
|
Breathing.speed_min = MSI_GPU_V2_SPEED_MIN;
|
|
Breathing.speed = MSI_GPU_V2_SPEED_MID;
|
|
Breathing.speed_max = MSI_GPU_V2_SPEED_MAX;
|
|
Breathing.brightness_min = MSI_GPU_V2_BRIGHTNESS_MIN;
|
|
Breathing.brightness = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
Breathing.brightness_max = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
Breathing.colors_min = 1;
|
|
Breathing.colors_max = 2;
|
|
Breathing.colors.resize(2);
|
|
Breathing.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
|
modes.push_back(Breathing);
|
|
|
|
mode flashing;
|
|
flashing.name = "Flashing";
|
|
flashing.value = MSI_GPU_V2_MODE_FLASHING;
|
|
flashing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE;
|
|
flashing.speed_min = MSI_GPU_V2_SPEED_MIN;
|
|
flashing.speed = MSI_GPU_V2_SPEED_MID;
|
|
flashing.speed_max = MSI_GPU_V2_SPEED_MAX;
|
|
flashing.brightness_min = MSI_GPU_V2_BRIGHTNESS_MIN;
|
|
flashing.brightness = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
flashing.brightness_max = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
flashing.color_mode = MODE_COLORS_PER_LED;
|
|
modes.push_back(flashing);
|
|
|
|
mode doubleflashing;
|
|
doubleflashing.name = "Double Flashing";
|
|
doubleflashing.value = MSI_GPU_V2_MODE_DOUBLEFLASHING;
|
|
doubleflashing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE;
|
|
doubleflashing.speed_min = MSI_GPU_V2_SPEED_MIN;
|
|
doubleflashing.speed = MSI_GPU_V2_SPEED_MID;
|
|
doubleflashing.speed_max = MSI_GPU_V2_SPEED_MAX;
|
|
doubleflashing.brightness_min = MSI_GPU_V2_BRIGHTNESS_MIN;
|
|
doubleflashing.brightness = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
doubleflashing.brightness_max = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
doubleflashing.color_mode = MODE_COLORS_PER_LED;
|
|
modes.push_back(doubleflashing);
|
|
|
|
SetupZones();
|
|
|
|
modes[active_mode].speed = MSI_GPU_V2_SPEED_MID;
|
|
modes[active_mode].brightness = MSI_GPU_V2_BRIGHTNESS_MAX;
|
|
}
|
|
|
|
RGBController_MSIGPUv2::~RGBController_MSIGPUv2()
|
|
{
|
|
delete msi_gpu;
|
|
}
|
|
|
|
void RGBController_MSIGPUv2::SetupZones()
|
|
{
|
|
/*---------------------------------------------------------*\
|
|
| Set up zone |
|
|
\*---------------------------------------------------------*/
|
|
zone msi_gpu_zone;
|
|
msi_gpu_zone.name = "GPU";
|
|
msi_gpu_zone.type = ZONE_TYPE_SINGLE;
|
|
msi_gpu_zone.leds_min = 1;
|
|
msi_gpu_zone.leds_max = 1;
|
|
msi_gpu_zone.leds_count = 1;
|
|
msi_gpu_zone.matrix_map = NULL;
|
|
zones.push_back(msi_gpu_zone);
|
|
|
|
/*---------------------------------------------------------*\
|
|
| Set up LED |
|
|
\*---------------------------------------------------------*/
|
|
led led1;
|
|
led1.name = "Color";
|
|
leds.push_back(led1);
|
|
|
|
SetupColors();
|
|
|
|
/*-------------------------------------------------------------*\
|
|
| Initialize colors |
|
|
| This controller doesn't support reading colors from device |
|
|
\*-------------------------------------------------------------*/
|
|
colors[0] = ToRGBColor(0xFF, 0, 0);
|
|
|
|
for(unsigned int mode_idx = 0; mode_idx < modes.size(); mode_idx++)
|
|
{
|
|
if(modes[mode_idx].color_mode == MODE_COLORS_MODE_SPECIFIC)
|
|
{
|
|
if(modes[mode_idx].colors.size()>2)
|
|
{
|
|
modes[mode_idx].colors[2] = ToRGBColor(0, 0, 0xFF);
|
|
}
|
|
if(modes[mode_idx].colors.size()>1)
|
|
{
|
|
modes[mode_idx].colors[1] = ToRGBColor(0, 0xFF, 0);
|
|
}
|
|
modes[mode_idx].colors[0] = ToRGBColor(0xFF, 0, 0);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void RGBController_MSIGPUv2::ResizeZone(int /*zone*/, int /*new_size*/)
|
|
{
|
|
/*---------------------------------------------------------*\
|
|
| This device does not support resizing zones |
|
|
\*---------------------------------------------------------*/
|
|
}
|
|
|
|
void RGBController_MSIGPUv2::DeviceUpdateAll(const mode& current_mode)
|
|
{
|
|
switch(current_mode.value)
|
|
{
|
|
case MSI_GPU_V2_MODE_RAINBOW:
|
|
if(current_mode.flags & MODE_FLAG_HAS_MODE_SPECIFIC_COLOR)
|
|
{
|
|
if(current_mode.direction == MODE_DIRECTION_LEFT)
|
|
{
|
|
msi_gpu->MSIGPURegisterWrite(MSI_GPU_V2_REG_CONTROL, MSI_GPU_V2_CONTROL_DIRECTION_LEFT | MSI_GPU_V2_CONTROL_NON_RGBMODE);
|
|
}
|
|
else
|
|
{
|
|
msi_gpu->MSIGPURegisterWrite(MSI_GPU_V2_REG_CONTROL, MSI_GPU_V2_CONTROL_DIRECTION_RIGHT | MSI_GPU_V2_CONTROL_NON_RGBMODE);
|
|
}
|
|
msi_gpu->MSIGPURegisterWrite(MSI_GPU_V2_REG_UNKNOWN, 0x00);
|
|
msi_gpu->MSIGPURegisterWrite(MSI_GPU_V2_REG_MODE, MSI_GPU_V2_MODE_IDLE);
|
|
|
|
msi_gpu->SetRGB1V2(RGBGetRValue(current_mode.colors[0]), RGBGetGValue(current_mode.colors[0]), RGBGetBValue(current_mode.colors[0]));
|
|
msi_gpu->SetRGB2V2(RGBGetRValue(current_mode.colors[1]), RGBGetGValue(current_mode.colors[1]), RGBGetBValue(current_mode.colors[1]));
|
|
msi_gpu->SetRGB3V2(RGBGetRValue(current_mode.colors[2]), RGBGetGValue(current_mode.colors[2]), RGBGetBValue(current_mode.colors[2]));
|
|
}
|
|
else
|
|
{
|
|
if(current_mode.direction == MODE_DIRECTION_LEFT)
|
|
{
|
|
msi_gpu->MSIGPURegisterWrite(MSI_GPU_V2_REG_CONTROL, MSI_GPU_V2_CONTROL_DIRECTION_LEFT);
|
|
}
|
|
else
|
|
{
|
|
msi_gpu->MSIGPURegisterWrite(MSI_GPU_V2_REG_CONTROL, MSI_GPU_V2_CONTROL_DIRECTION_RIGHT);
|
|
}
|
|
msi_gpu->MSIGPURegisterWrite(MSI_GPU_V2_REG_UNKNOWN, 0x00);
|
|
msi_gpu->MSIGPURegisterWrite(MSI_GPU_V2_REG_MODE, MSI_GPU_V2_MODE_IDLE);
|
|
}
|
|
break;
|
|
|
|
case MSI_GPU_V2_MODE_MAGIC:
|
|
if(current_mode.flags & MODE_FLAG_HAS_MODE_SPECIFIC_COLOR)
|
|
{
|
|
msi_gpu->MSIGPURegisterWrite(MSI_GPU_V2_REG_UNKNOWN, 0x00);
|
|
msi_gpu->MSIGPURegisterWrite(MSI_GPU_V2_REG_MODE, MSI_GPU_V2_MODE_IDLE);
|
|
msi_gpu->MSIGPURegisterWrite(MSI_GPU_V2_REG_CONTROL, MSI_GPU_V2_CONTROL_NON_RGBMODE);
|
|
|
|
msi_gpu->SetRGB1V2(RGBGetRValue(current_mode.colors[0]), RGBGetGValue(current_mode.colors[0]), RGBGetBValue(current_mode.colors[0]));
|
|
msi_gpu->SetRGB2V2(RGBGetRValue(current_mode.colors[1]), RGBGetGValue(current_mode.colors[1]), RGBGetBValue(current_mode.colors[1]));
|
|
msi_gpu->SetRGB3V2(RGBGetRValue(current_mode.colors[2]), RGBGetGValue(current_mode.colors[2]), RGBGetBValue(current_mode.colors[2]));
|
|
}
|
|
else
|
|
{
|
|
msi_gpu->MSIGPURegisterWrite(MSI_GPU_V2_REG_UNKNOWN, 0x00);
|
|
msi_gpu->MSIGPURegisterWrite(MSI_GPU_V2_REG_MODE, MSI_GPU_V2_MODE_IDLE);
|
|
|
|
msi_gpu->MSIGPURegisterWrite(MSI_GPU_V2_REG_CONTROL, MSI_GPU_V2_CONTROL_DIRECTION_RIGHT);
|
|
}
|
|
break;
|
|
|
|
|
|
case MSI_GPU_V2_MODE_BREATHING:
|
|
case MSI_GPU_V2_MODE_FADEIN:
|
|
msi_gpu->MSIGPURegisterWrite(MSI_GPU_V2_REG_UNKNOWN, 0x00);
|
|
msi_gpu->MSIGPURegisterWrite(MSI_GPU_V2_REG_MODE, MSI_GPU_V2_MODE_IDLE);
|
|
|
|
msi_gpu->SetRGB1V2(RGBGetRValue(current_mode.colors[0]), RGBGetGValue(current_mode.colors[0]), RGBGetBValue(current_mode.colors[0]));
|
|
msi_gpu->SetRGB2V2(RGBGetRValue(current_mode.colors[1]), RGBGetGValue(current_mode.colors[1]), RGBGetBValue(current_mode.colors[1]));
|
|
break;
|
|
|
|
case MSI_GPU_V2_MODE_FLOWING:
|
|
case MSI_GPU_V2_MODE_WHIRLING:
|
|
case MSI_GPU_V2_MODE_PATROLLING:
|
|
case MSI_GPU_V2_MODE_FLASHING:
|
|
case MSI_GPU_V2_MODE_DOUBLEFLASHING:
|
|
case MSI_GPU_V2_MODE_STATIC:
|
|
case MSI_GPU_V2_MODE_RHYTHM:
|
|
case MSI_GPU_V2_MODE_STACK:
|
|
case MSI_GPU_V2_MODE_METEOR:
|
|
msi_gpu->MSIGPURegisterWrite(MSI_GPU_V2_REG_UNKNOWN, 0x00);
|
|
msi_gpu->MSIGPURegisterWrite(MSI_GPU_V2_REG_MODE, MSI_GPU_V2_MODE_IDLE);
|
|
msi_gpu->SetRGB1(RGBGetRValue(colors[0]), RGBGetGValue(colors[0]), RGBGetBValue(colors[0]));
|
|
break;
|
|
|
|
case MSI_GPU_V2_MODE_STREAMING:
|
|
case MSI_GPU_V2_MODE_LIGHTNING:
|
|
case MSI_GPU_V2_MODE_OFF:
|
|
msi_gpu->MSIGPURegisterWrite(MSI_GPU_V2_REG_UNKNOWN, 0x00);
|
|
msi_gpu->MSIGPURegisterWrite(MSI_GPU_V2_REG_MODE, MSI_GPU_V2_MODE_IDLE);
|
|
break;
|
|
|
|
default:
|
|
msi_gpu->MSIGPURegisterWrite(MSI_GPU_V2_REG_UNKNOWN, 0x00);
|
|
msi_gpu->MSIGPURegisterWrite(MSI_GPU_V2_REG_MODE, MSI_GPU_V2_MODE_IDLE);
|
|
msi_gpu->SetMode(MSI_GPU_V2_MODE_OFF);
|
|
}
|
|
|
|
|
|
if(current_mode.flags & MODE_FLAG_HAS_BRIGHTNESS)
|
|
{
|
|
msi_gpu->MSIGPURegisterWrite(MSI_GPU_V2_REG_BRIGHTNESS, MSI_GPU_V2_BRIGHTNESS_MULTI * modes[active_mode].brightness);
|
|
if(modes[active_mode].flags & MODE_FLAG_HAS_SPEED)
|
|
{
|
|
msi_gpu->MSIGPURegisterWrite(MSI_GPU_V2_REG_SPEED, speed_values[current_mode.speed]);
|
|
}
|
|
|
|
}
|
|
|
|
msi_gpu->SetMode(current_mode.value);
|
|
}
|
|
|
|
|
|
void RGBController_MSIGPUv2::DeviceUpdateLEDs()
|
|
{
|
|
DeviceUpdateAll(modes[active_mode]);
|
|
}
|
|
|
|
void RGBController_MSIGPUv2::UpdateZoneLEDs(int /*zone*/)
|
|
{
|
|
DeviceUpdateAll(modes[active_mode]);
|
|
}
|
|
|
|
|
|
void RGBController_MSIGPUv2::UpdateSingleLED(int /*led*/)
|
|
{
|
|
/*---------------------------------------------------------*\
|
|
| This device does not support updating single LEDs |
|
|
\*---------------------------------------------------------*/
|
|
}
|
|
|
|
void RGBController_MSIGPUv2::DeviceUpdateMode()
|
|
{
|
|
DeviceUpdateAll(modes[active_mode]);
|
|
}
|
|
|
|
void RGBController_MSIGPUv2::DeviceSaveMode()
|
|
{
|
|
msi_gpu->Save();
|
|
}
|