Add functions for setting single LED and all LEDs in a zone to a color, add zone dropdown to GUI

This commit is contained in:
Adam Honse 2019-06-14 23:28:23 -05:00
parent d60936b2e5
commit 7554e366f4
12 changed files with 121 additions and 12 deletions

View file

@ -67,9 +67,9 @@ public:
void AuraUpdateDeviceName();
unsigned char AuraRegisterRead(aura_register reg);
void AuraRegisterWrite(aura_register reg, unsigned char val);
void AuraRegisterWriteBlock(aura_register reg, unsigned char * data, unsigned char sz);
unsigned char AuraRegisterRead(aura_register reg);
void AuraRegisterWrite(aura_register reg, unsigned char val);
void AuraRegisterWriteBlock(aura_register reg, unsigned char * data, unsigned char sz);
private:
char device_name[16];

View file

@ -34,7 +34,16 @@ unsigned int CorsairController::GetLEDCount()
return(led_count);
}
void CorsairController::SetAllColorsDirect(unsigned char red, unsigned char green, unsigned char blue)
void CorsairController::SetAllColors(unsigned char red, unsigned char green, unsigned char blue)
{
bus->i2c_smbus_write_byte_data(dev, CORSAIR_VENGEANCE_RGB_CMD_FADE_TIME, 0x00);
bus->i2c_smbus_write_byte_data(dev, CORSAIR_VENGEANCE_RGB_CMD_RED_VAL, red);
bus->i2c_smbus_write_byte_data(dev, CORSAIR_VENGEANCE_RGB_CMD_GREEN_VAL, green);
bus->i2c_smbus_write_byte_data(dev, CORSAIR_VENGEANCE_RGB_CMD_BLUE_VAL, blue);
bus->i2c_smbus_write_byte_data(dev, CORSAIR_VENGEANCE_RGB_CMD_MODE, CORSAIR_VENGEANCE_RGB_MODE_SINGLE);
}
void CorsairController::SetLEDColor(unsigned int led, unsigned char red, unsigned char green, unsigned char blue)
{
bus->i2c_smbus_write_byte_data(dev, CORSAIR_VENGEANCE_RGB_CMD_FADE_TIME, 0x00);
bus->i2c_smbus_write_byte_data(dev, CORSAIR_VENGEANCE_RGB_CMD_RED_VAL, red);

View file

@ -43,7 +43,8 @@ public:
unsigned int GetLEDCount();
void SetMode(unsigned char mode);
void SetAllColorsDirect(unsigned char red, unsigned char green, unsigned char blue);
void SetAllColors(unsigned char red, unsigned char green, unsigned char blue);
void SetLEDColor(unsigned int led, unsigned char red, unsigned char green, unsigned char blue);
private:
char device_name[32];

View file

@ -22,17 +22,18 @@ void OpenAuraSDKDialog::DoDataExchange(CDataExchange* pDX)
BEGIN_MESSAGE_MAP(OpenAuraSDKDialog, CDialogEx)
ON_BN_CLICKED(IDC_BUTTON_OPENAURASDK_I2CDETECT, &OpenAuraSDKDialog::OnBnClickedButtonOpenaurasdkI2cdetect)
ON_BN_CLICKED(IDC_BUTTON_OPENAURASDK_SET_COLORS, &OpenAuraSDKDialog::OnBnClickedButtonOpenaurasdkSetColors)
ON_CBN_CLOSEUP(IDC_COMBO_OPENAURASDK_DEVICE, &OpenAuraSDKDialog::OnCbnCloseupComboOpenaurasdkDevice)
ON_BN_CLICKED(IDC_BUTTON_OPENAURASDK_SET_COLORS_ALL, &OpenAuraSDKDialog::OnBnClickedButtonOpenaurasdkSetColorsAll)
ON_BN_CLICKED(IDC_BUTTON_OPENAURASDK_DUMP, &OpenAuraSDKDialog::OnBnClickedButtonOpenaurasdkDump)
ON_CBN_CLOSEUP(IDC_COMBO_OPENAURASDK_MODE, &OpenAuraSDKDialog::OnCbnCloseupComboOpenaurasdkMode)
ON_BN_CLICKED(IDC_BUTTON_OPENAURASDK_SET_ZONE, &OpenAuraSDKDialog::OnBnClickedButtonOpenaurasdkSetZone)
END_MESSAGE_MAP()
BOOL OpenAuraSDKDialog::OnInitDialog()
{
CComboBox* controller_box = (CComboBox*)GetDlgItem(IDC_COMBO_OPENAURASDK_DEVICE);
CComboBox* mode_box = (CComboBox*)GetDlgItem(IDC_COMBO_OPENAURASDK_MODE);
CComboBox* zone_box = (CComboBox*)GetDlgItem(IDC_COMBO_OPENAURASDK_ZONE);
for (int i = 0; i < controllers.size(); i++)
{
@ -48,6 +49,13 @@ BOOL OpenAuraSDKDialog::OnInitDialog()
mode_box->SetCurSel(0);
for (int i = 0; i < controllers[0]->zones.size(); i++)
{
mode_box->AddString(controllers[0]->zones[i].name.c_str());
}
zone_box->SetCurSel(0);
return TRUE;
}
@ -58,11 +66,6 @@ void OpenAuraSDKDialog::OnBnClickedButtonOpenaurasdkI2cdetect()
dlg.DoModal();
}
void OpenAuraSDKDialog::OnBnClickedButtonOpenaurasdkSetColors()
{
}
void OpenAuraSDKDialog::OnBnClickedButtonOpenaurasdkSetColorsAll()
{
@ -82,6 +85,7 @@ void OpenAuraSDKDialog::OnCbnCloseupComboOpenaurasdkDevice()
{
CComboBox* controller_box = (CComboBox*)GetDlgItem(IDC_COMBO_OPENAURASDK_DEVICE);
CComboBox* mode_box = (CComboBox*)GetDlgItem(IDC_COMBO_OPENAURASDK_MODE);
CComboBox* zone_box = (CComboBox*)GetDlgItem(IDC_COMBO_OPENAURASDK_ZONE);
mode_box->ResetContent();
@ -91,6 +95,15 @@ void OpenAuraSDKDialog::OnCbnCloseupComboOpenaurasdkDevice()
}
mode_box->SetCurSel(controllers[controller_box->GetCurSel()]->GetMode());
zone_box->ResetContent();
for (int i = 0; i < controllers[0]->zones.size(); i++)
{
mode_box->AddString(controllers[0]->zones[i].name.c_str());
}
zone_box->SetCurSel(0);
}
void OpenAuraSDKDialog::OnBnClickedButtonOpenaurasdkDump()
@ -106,3 +119,18 @@ void OpenAuraSDKDialog::OnCbnCloseupComboOpenaurasdkMode()
controllers[controller_box->GetCurSel()]->SetMode(mode_box->GetCurSel());
}
void OpenAuraSDKDialog::OnBnClickedButtonOpenaurasdkSetZone()
{
CComboBox* controller_box = (CComboBox*)GetDlgItem(IDC_COMBO_OPENAURASDK_DEVICE);
CComboBox* zone_box = (CComboBox*)GetDlgItem(IDC_COMBO_OPENAURASDK_ZONE);
RGBColor color = ToRGBColor(
GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_R),
GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_G),
GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_B)
);
controllers[controller_box->GetCurSel()]->SetAllZoneLEDs(zone_box->GetCurSel(), color);
}

View file

@ -32,6 +32,7 @@ public:
afx_msg void OnBnClickedButtonOpenaurasdkSetColorsAll();
afx_msg void OnBnClickedButtonOpenaurasdkDump();
afx_msg void OnCbnCloseupComboOpenaurasdkMode();
afx_msg void OnBnClickedButtonOpenaurasdkSetZone();
};
#endif

View file

@ -58,4 +58,6 @@ public:
virtual int GetMode() = 0;
virtual void SetMode(int mode) = 0;
virtual void SetAllLEDs(RGBColor color) = 0;
virtual void SetAllZoneLEDs(int zone, RGBColor color) = 0;
virtual void SetLED(int led, RGBColor color) = 0;
};

View file

@ -50,6 +50,44 @@ void RGBController_Aura::SetAllLEDs(RGBColor color)
}
}
void RGBController_Aura::SetAllZoneLEDs(int zone, RGBColor color)
{
unsigned char red = RGBGetRValue(color);
unsigned char grn = RGBGetGValue(color);
unsigned char blu = RGBGetBValue(color);
for (int x = 0; x < zones[zone].map.size(); x++)
{
for (int y = 0; y < zones[zone].map[x].size(); y++)
{
if (GetMode() == 0)
{
aura->SetLEDColorDirect(zones[zone].map[x][y], red, grn, blu);
}
else
{
aura->SetLEDColorEffect(zones[zone].map[x][y], red, grn, blu);
}
}
}
}
void RGBController_Aura::SetLED(int led, RGBColor color)
{
unsigned char red = RGBGetRValue(color);
unsigned char grn = RGBGetGValue(color);
unsigned char blu = RGBGetBValue(color);
if (GetMode() == 0)
{
aura->SetLEDColorDirect(led, red, grn, blu);
}
else
{
aura->SetLEDColorEffect(led, red, grn, blu);
}
}
RGBController_Aura::RGBController_Aura(AuraController * aura_ptr)
{
aura = aura_ptr;

View file

@ -19,6 +19,8 @@ public:
int GetMode();
void SetMode(int mode);
void SetAllLEDs(RGBColor color);
void SetAllZoneLEDs(int zone, RGBColor color);
void SetLED(int led, RGBColor color);
private:
AuraController* aura;

View file

@ -25,7 +25,31 @@ void RGBController_Corsair::SetAllLEDs(RGBColor color)
unsigned char grn = RGBGetGValue(color);
unsigned char blu = RGBGetBValue(color);
corsair->SetAllColorsDirect(red, grn, blu);
corsair->SetAllColors(red, grn, blu);
}
void RGBController_Corsair::SetAllZoneLEDs(int zone, RGBColor color)
{
unsigned char red = RGBGetRValue(color);
unsigned char grn = RGBGetGValue(color);
unsigned char blu = RGBGetBValue(color);
for (int x = 0; x < zones[zone].map.size(); x++)
{
for (int y = 0; y < zones[zone].map[x].size(); y++)
{
corsair->SetLEDColor(zones[zone].map[x][y], red, grn, blu);
}
}
}
void RGBController_Corsair::SetLED(int led, RGBColor color)
{
unsigned char red = RGBGetRValue(color);
unsigned char grn = RGBGetGValue(color);
unsigned char blu = RGBGetBValue(color);
corsair->SetLEDColor(led, red, grn, blu);
}
RGBController_Corsair::RGBController_Corsair(CorsairController* corsair_ptr)

View file

@ -19,6 +19,8 @@ public:
int GetMode();
void SetMode(int mode);
void SetAllLEDs(RGBColor color);
void SetAllZoneLEDs(int zone, RGBColor color);
void SetLED(int led, RGBColor color);
private:
CorsairController* corsair;

Binary file not shown.

View file

@ -39,8 +39,10 @@
#define IDC_BUTTON_OPENAURASDK_DUMP 1033
#define IDC_BUTTON_OPENAURASDK_SET_COLORS2 1034
#define IDC_BUTTON_OPENAURASDK_SET_COLORS 1034
#define IDC_BUTTON_OPENAURASDK_SET_ZONE 1034
#define IDC_COMBO_OPENAURASDK_DEVICE2 1035
#define IDC_COMBO_OPENAURASDK_MODE 1035
#define IDC_COMBO_OPENAURASDK_ZONE 1036
// Next default values for new objects
//