SapphireGPUController: reimplement configuration readback
Commit amended for code style by Adam Honse <calcprogrammer1@gmail.com>
This commit is contained in:
parent
bae1e08732
commit
267dfff247
9 changed files with 239 additions and 52 deletions
|
|
@ -36,8 +36,7 @@ RGBController_SapphireNitroGlowV1::RGBController_SapphireNitroGlowV1(SapphireNit
|
|||
|
||||
SetupZones();
|
||||
|
||||
// Initialize active mode
|
||||
active_mode = 0;
|
||||
ReadConfiguration();
|
||||
}
|
||||
|
||||
RGBController_SapphireNitroGlowV1::~RGBController_SapphireNitroGlowV1()
|
||||
|
|
@ -72,6 +71,43 @@ void RGBController_SapphireNitroGlowV1::SetupZones()
|
|||
SetupColors();
|
||||
}
|
||||
|
||||
void RGBController_SapphireNitroGlowV1::ReadConfiguration()
|
||||
{
|
||||
colors[0] = ToRGBColor(
|
||||
sapphire->GetRed(),
|
||||
sapphire->GetGreen(),
|
||||
sapphire->GetBlue()
|
||||
);
|
||||
|
||||
switch(sapphire->GetMode())
|
||||
{
|
||||
case SAPPHIRE_NITRO_GLOW_V1_MODE_CUSTOM:
|
||||
active_mode = 0;
|
||||
break;
|
||||
|
||||
case SAPPHIRE_NITRO_GLOW_V1_MODE_RAINBOW:
|
||||
active_mode = 1;
|
||||
break;
|
||||
|
||||
case SAPPHIRE_NITRO_GLOW_V1_MODE_BOARD_TEMPERATURE:
|
||||
active_mode = 2;
|
||||
break;
|
||||
|
||||
case SAPPHIRE_NITRO_GLOW_V1_MODE_FAN_SPEED:
|
||||
active_mode = 3;
|
||||
break;
|
||||
|
||||
case SAPPHIRE_NITRO_GLOW_V1_MODE_OFF:
|
||||
active_mode = 0;
|
||||
colors[0] = ToRGBColor(0, 0, 0);
|
||||
break;
|
||||
|
||||
default:
|
||||
active_mode = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void RGBController_SapphireNitroGlowV1::ResizeZone(int /*zone*/, int /*new_size*/)
|
||||
{
|
||||
/*---------------------------------------------------------*\
|
||||
|
|
@ -106,5 +142,5 @@ void RGBController_SapphireNitroGlowV1::SetCustomMode()
|
|||
|
||||
void RGBController_SapphireNitroGlowV1::DeviceUpdateMode()
|
||||
{
|
||||
sapphire->SetMode((unsigned char)modes[(unsigned int)active_mode].value, (unsigned char)modes[(unsigned int)active_mode].speed);
|
||||
sapphire->SetMode((unsigned char)modes[(unsigned int)active_mode].value);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,4 +31,6 @@ public:
|
|||
|
||||
private:
|
||||
SapphireNitroGlowV1Controller* sapphire;
|
||||
|
||||
void ReadConfiguration();
|
||||
};
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ RGBController_SapphireNitroGlowV3::RGBController_SapphireNitroGlowV3(SapphireNit
|
|||
|
||||
SetupZones();
|
||||
|
||||
active_mode = 0;
|
||||
ReadConfiguration();
|
||||
}
|
||||
|
||||
RGBController_SapphireNitroGlowV3::~RGBController_SapphireNitroGlowV3()
|
||||
|
|
@ -107,6 +107,58 @@ void RGBController_SapphireNitroGlowV3::SetupZones()
|
|||
SetupColors();
|
||||
}
|
||||
|
||||
void RGBController_SapphireNitroGlowV3::ReadConfiguration()
|
||||
{
|
||||
modes[1].speed = sapphire->GetRainbowAnimationSpeed();
|
||||
modes[2].speed = sapphire->GetRunwayAnimationSpeed();
|
||||
modes[3].speed = sapphire->GetColorCycleAnimationSpeed();
|
||||
modes[4].speed = sapphire->GetSerialAnimationSpeed();
|
||||
|
||||
colors[0] = ToRGBColor(
|
||||
sapphire->GetRed(),
|
||||
sapphire->GetBlue(),
|
||||
sapphire->GetGreen()
|
||||
);
|
||||
|
||||
if(sapphire->GetExternalControl())
|
||||
{
|
||||
active_mode = 5;
|
||||
return;
|
||||
}
|
||||
|
||||
switch(sapphire->GetMode())
|
||||
{
|
||||
case SAPPHIRE_NITRO_GLOW_V3_MODE_CUSTOM:
|
||||
active_mode = 0;
|
||||
break;
|
||||
|
||||
case SAPPHIRE_NITRO_GLOW_V3_MODE_RAINBOW:
|
||||
active_mode = 1;
|
||||
break;
|
||||
|
||||
case SAPPHIRE_NITRO_GLOW_V3_MODE_RUNWAY:
|
||||
active_mode = 2;
|
||||
break;
|
||||
|
||||
case SAPPHIRE_NITRO_GLOW_V3_MODE_COLOR_CYCLE:
|
||||
active_mode = 3;
|
||||
break;
|
||||
|
||||
case SAPPHIRE_NITRO_GLOW_V3_MODE_SERIAL:
|
||||
active_mode = 4;
|
||||
break;
|
||||
|
||||
case SAPPHIRE_NITRO_GLOW_V3_MODE_OFF:
|
||||
active_mode = 0;
|
||||
colors[0] = ToRGBColor(0, 0, 0);
|
||||
break;
|
||||
|
||||
default:
|
||||
active_mode = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void RGBController_SapphireNitroGlowV3::ResizeZone(int /*zone*/, int /*new_size*/)
|
||||
{
|
||||
/*---------------------------------------------------------*\
|
||||
|
|
@ -141,5 +193,41 @@ void RGBController_SapphireNitroGlowV3::SetCustomMode()
|
|||
|
||||
void RGBController_SapphireNitroGlowV3::DeviceUpdateMode()
|
||||
{
|
||||
sapphire->SetMode((unsigned char)modes[(unsigned int)active_mode].value, (unsigned char)modes[(unsigned int)active_mode].speed);
|
||||
auto mode = modes[active_mode];
|
||||
|
||||
switch(mode.value)
|
||||
{
|
||||
case SAPPHIRE_NITRO_GLOW_V3_MODE_CUSTOM:
|
||||
sapphire->SetExternalControl(false);
|
||||
sapphire->SetMode(mode.value);
|
||||
break;
|
||||
|
||||
case SAPPHIRE_NITRO_GLOW_V3_MODE_RAINBOW:
|
||||
sapphire->SetExternalControl(false);
|
||||
sapphire->SetRainbowAnimationSpeed(mode.speed);
|
||||
sapphire->SetMode(mode.value);
|
||||
break;
|
||||
|
||||
case SAPPHIRE_NITRO_GLOW_V3_MODE_RUNWAY:
|
||||
sapphire->SetExternalControl(false);
|
||||
sapphire->SetRunwayAnimationSpeed(mode.speed);
|
||||
sapphire->SetMode(mode.value);
|
||||
break;
|
||||
|
||||
case SAPPHIRE_NITRO_GLOW_V3_MODE_COLOR_CYCLE:
|
||||
sapphire->SetExternalControl(false);
|
||||
sapphire->SetColorCycleAnimationSpeed(mode.speed);
|
||||
sapphire->SetMode(mode.value);
|
||||
break;
|
||||
|
||||
case SAPPHIRE_NITRO_GLOW_V3_MODE_SERIAL:
|
||||
sapphire->SetExternalControl(false);
|
||||
sapphire->SetSerialAnimationSpeed(mode.speed);
|
||||
sapphire->SetMode(mode.value);
|
||||
break;
|
||||
|
||||
case SAPPHIRE_NITRO_GLOW_V3_MODE_EXTERNAL_CONTROL:
|
||||
sapphire->SetExternalControl(true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,4 +31,6 @@ public:
|
|||
|
||||
private:
|
||||
SapphireNitroGlowV3Controller* sapphire;
|
||||
|
||||
void ReadConfiguration();
|
||||
};
|
||||
|
|
|
|||
|
|
@ -100,8 +100,6 @@ void DetectSapphireGPUControllers(std::vector<i2c_smbus_interface *> &busses, st
|
|||
busses[bus]->pci_subsystem_vendor == device_list[dev_idx].pci_subsystem_vendor &&
|
||||
busses[bus]->pci_subsystem_device == device_list[dev_idx].pci_subsystem_device)
|
||||
{
|
||||
RGBController *controller;
|
||||
|
||||
switch(device_list[dev_idx].version)
|
||||
{
|
||||
case SAPPHIRE_NITRO_GLOW_V1:
|
||||
|
|
|
|||
|
|
@ -52,7 +52,12 @@ void SapphireNitroGlowV1Controller::SetColor(unsigned char red, unsigned char gr
|
|||
bus->i2c_smbus_write_byte_data(dev, SAPPHIRE_NITRO_GLOW_V1_REG_BLUE, blue);
|
||||
}
|
||||
|
||||
void SapphireNitroGlowV1Controller::SetMode(unsigned char mode, unsigned char /*speed*/)
|
||||
unsigned char SapphireNitroGlowV1Controller::GetMode()
|
||||
{
|
||||
return(bus->i2c_smbus_read_byte_data(dev, SAPPHIRE_NITRO_GLOW_V1_REG_MODE));
|
||||
}
|
||||
|
||||
void SapphireNitroGlowV1Controller::SetMode(unsigned char mode)
|
||||
{
|
||||
bus->i2c_smbus_write_byte_data(dev, SAPPHIRE_NITRO_GLOW_V1_REG_MODE, mode);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,10 +46,12 @@ public:
|
|||
unsigned char GetBlue();
|
||||
|
||||
void SetColor(unsigned char red, unsigned char green, unsigned char blue);
|
||||
void SetMode(unsigned char mode, unsigned char speed);
|
||||
|
||||
unsigned char GetMode();
|
||||
void SetMode(unsigned char mode);
|
||||
|
||||
private:
|
||||
i2c_smbus_interface* bus;
|
||||
sapphire_dev_id dev;
|
||||
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -52,51 +52,82 @@ void SapphireNitroGlowV3Controller::SetColor(unsigned char red, unsigned char gr
|
|||
bus->i2c_smbus_write_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_BLUE, blue);
|
||||
}
|
||||
|
||||
void SapphireNitroGlowV3Controller::SetMode(unsigned char mode, unsigned char speed)
|
||||
unsigned char SapphireNitroGlowV3Controller::GetMode()
|
||||
{
|
||||
switch(mode)
|
||||
{
|
||||
case SAPPHIRE_NITRO_GLOW_V3_MODE_RAINBOW:
|
||||
bus->i2c_smbus_write_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_EXTERNAL_CONTROL, 0);
|
||||
bus->i2c_smbus_write_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_RAINBOW_ANIMATION_SPEED, speed);
|
||||
bus->i2c_smbus_write_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_MODE, mode);
|
||||
break;
|
||||
return(bus->i2c_smbus_read_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_MODE));
|
||||
}
|
||||
|
||||
case SAPPHIRE_NITRO_GLOW_V3_MODE_RUNWAY:
|
||||
bus->i2c_smbus_write_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_EXTERNAL_CONTROL, 0);
|
||||
bus->i2c_smbus_write_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_RUNWAY_ANIMATION_SPEED, speed);
|
||||
bus->i2c_smbus_write_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_RUNWAY_ANIMATION_REPEAT_COUNT, 5);
|
||||
bus->i2c_smbus_write_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_MODE, mode);
|
||||
break;
|
||||
void SapphireNitroGlowV3Controller::SetMode(unsigned char mode)
|
||||
{
|
||||
bus->i2c_smbus_write_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_MODE, mode);
|
||||
}
|
||||
|
||||
case SAPPHIRE_NITRO_GLOW_V3_MODE_COLOR_CYCLE:
|
||||
bus->i2c_smbus_write_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_EXTERNAL_CONTROL, 0);
|
||||
bus->i2c_smbus_write_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_COLOR_CYCLE_ANIMATION_SPEED, speed);
|
||||
bus->i2c_smbus_write_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_MODE, mode);
|
||||
break;
|
||||
bool SapphireNitroGlowV3Controller::GetExternalControl()
|
||||
{
|
||||
return((bool)bus->i2c_smbus_read_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_EXTERNAL_CONTROL));
|
||||
}
|
||||
|
||||
case SAPPHIRE_NITRO_GLOW_V3_MODE_SERIAL:
|
||||
bus->i2c_smbus_write_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_EXTERNAL_CONTROL, 0);
|
||||
bus->i2c_smbus_write_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_SERIAL_ANIMATION_SPEED, speed);
|
||||
bus->i2c_smbus_write_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_MODE, mode);
|
||||
break;
|
||||
void SapphireNitroGlowV3Controller::SetExternalControl(bool enabled)
|
||||
{
|
||||
bus->i2c_smbus_write_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_EXTERNAL_CONTROL, (unsigned char)enabled);
|
||||
}
|
||||
|
||||
case SAPPHIRE_NITRO_GLOW_V3_MODE_SAPPHIRE_BLUE:
|
||||
break;
|
||||
unsigned char SapphireNitroGlowV3Controller::GetBrightness()
|
||||
{
|
||||
return(bus->i2c_smbus_read_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_MODE));
|
||||
}
|
||||
|
||||
case SAPPHIRE_NITRO_GLOW_V3_MODE_AUDIO_VISUALIZATION:
|
||||
break;
|
||||
void SapphireNitroGlowV3Controller::SetBrightness(unsigned char brightness)
|
||||
{
|
||||
bus->i2c_smbus_write_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_BRIGHTNESS, brightness);
|
||||
}
|
||||
|
||||
case SAPPHIRE_NITRO_GLOW_V3_MODE_CUSTOM:
|
||||
bus->i2c_smbus_write_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_EXTERNAL_CONTROL, 0);
|
||||
bus->i2c_smbus_write_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_MODE, mode);
|
||||
break;
|
||||
unsigned char SapphireNitroGlowV3Controller::GetRainbowAnimationSpeed()
|
||||
{
|
||||
return(bus->i2c_smbus_read_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_RAINBOW_ANIMATION_SPEED));
|
||||
}
|
||||
|
||||
case SAPPHIRE_NITRO_GLOW_V3_MODE_OFF:
|
||||
break;
|
||||
void SapphireNitroGlowV3Controller::SetRainbowAnimationSpeed(unsigned char speed)
|
||||
{
|
||||
bus->i2c_smbus_write_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_RAINBOW_ANIMATION_SPEED, speed);
|
||||
}
|
||||
|
||||
case SAPPHIRE_NITRO_GLOW_V3_MODE_EXTERNAL_CONTROL:
|
||||
bus->i2c_smbus_write_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_EXTERNAL_CONTROL, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
unsigned char SapphireNitroGlowV3Controller::GetRunwayAnimationSpeed()
|
||||
{
|
||||
return(bus->i2c_smbus_read_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_RUNWAY_ANIMATION_SPEED));
|
||||
}
|
||||
|
||||
void SapphireNitroGlowV3Controller::SetRunwayAnimationSpeed(unsigned char speed)
|
||||
{
|
||||
bus->i2c_smbus_write_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_RUNWAY_ANIMATION_SPEED, speed);
|
||||
}
|
||||
|
||||
unsigned char SapphireNitroGlowV3Controller::GetRunwayAnimationRepeatCount()
|
||||
{
|
||||
return(bus->i2c_smbus_read_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_RUNWAY_ANIMATION_REPEAT_COUNT));
|
||||
}
|
||||
|
||||
void SapphireNitroGlowV3Controller::SetRunwayAnimationRepeatCount(unsigned char count)
|
||||
{
|
||||
bus->i2c_smbus_write_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_RUNWAY_ANIMATION_REPEAT_COUNT, count);
|
||||
}
|
||||
|
||||
unsigned char SapphireNitroGlowV3Controller::GetColorCycleAnimationSpeed()
|
||||
{
|
||||
return(bus->i2c_smbus_read_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_COLOR_CYCLE_ANIMATION_SPEED));
|
||||
}
|
||||
|
||||
void SapphireNitroGlowV3Controller::SetColorCycleAnimationSpeed(unsigned char speed)
|
||||
{
|
||||
bus->i2c_smbus_write_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_COLOR_CYCLE_ANIMATION_SPEED, speed);
|
||||
}
|
||||
|
||||
unsigned char SapphireNitroGlowV3Controller::GetSerialAnimationSpeed()
|
||||
{
|
||||
return(bus->i2c_smbus_read_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_SERIAL_ANIMATION_SPEED));
|
||||
}
|
||||
|
||||
void SapphireNitroGlowV3Controller::SetSerialAnimationSpeed(unsigned char speed)
|
||||
{
|
||||
bus->i2c_smbus_write_byte_data(dev, SAPPHIRE_NITRO_GLOW_V3_REG_SERIAL_ANIMATION_SPEED, speed);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,10 +56,33 @@ public:
|
|||
unsigned char GetBlue();
|
||||
|
||||
void SetColor(unsigned char red, unsigned char green, unsigned char blue);
|
||||
void SetMode(unsigned char mode, unsigned char speed);
|
||||
|
||||
unsigned char GetMode();
|
||||
void SetMode(unsigned char mode);
|
||||
|
||||
bool GetExternalControl();
|
||||
void SetExternalControl(bool enabled);
|
||||
|
||||
unsigned char GetBrightness();
|
||||
void SetBrightness(unsigned char brightness);
|
||||
|
||||
unsigned char GetRainbowAnimationSpeed();
|
||||
void SetRainbowAnimationSpeed(unsigned char speed);
|
||||
|
||||
unsigned char GetRunwayAnimationSpeed();
|
||||
void SetRunwayAnimationSpeed(unsigned char speed);
|
||||
|
||||
unsigned char GetRunwayAnimationRepeatCount();
|
||||
void SetRunwayAnimationRepeatCount(unsigned char count);
|
||||
|
||||
unsigned char GetColorCycleAnimationSpeed();
|
||||
void SetColorCycleAnimationSpeed(unsigned char speed);
|
||||
|
||||
unsigned char GetSerialAnimationSpeed();
|
||||
void SetSerialAnimationSpeed(unsigned char speed);
|
||||
|
||||
private:
|
||||
i2c_smbus_interface* bus;
|
||||
sapphire_dev_id dev;
|
||||
|
||||
};
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue