diff --git a/OpenAuraSDK/AuraController.h b/OpenAuraSDK/AuraController.h index 21b19fff..f97c0fe4 100644 --- a/OpenAuraSDK/AuraController.h +++ b/OpenAuraSDK/AuraController.h @@ -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]; diff --git a/OpenAuraSDK/CorsairController.cpp b/OpenAuraSDK/CorsairController.cpp index 667369d5..740a9e61 100644 --- a/OpenAuraSDK/CorsairController.cpp +++ b/OpenAuraSDK/CorsairController.cpp @@ -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); diff --git a/OpenAuraSDK/CorsairController.h b/OpenAuraSDK/CorsairController.h index ad405de7..35f7fc18 100644 --- a/OpenAuraSDK/CorsairController.h +++ b/OpenAuraSDK/CorsairController.h @@ -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]; diff --git a/OpenAuraSDK/OpenAuraSDKDialog.cpp b/OpenAuraSDK/OpenAuraSDKDialog.cpp index 89bc459f..98098a5d 100644 --- a/OpenAuraSDK/OpenAuraSDKDialog.cpp +++ b/OpenAuraSDK/OpenAuraSDKDialog.cpp @@ -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); +} diff --git a/OpenAuraSDK/OpenAuraSDKDialog.h b/OpenAuraSDK/OpenAuraSDKDialog.h index 7a343eed..d8c3901d 100644 --- a/OpenAuraSDK/OpenAuraSDKDialog.h +++ b/OpenAuraSDK/OpenAuraSDKDialog.h @@ -32,6 +32,7 @@ public: afx_msg void OnBnClickedButtonOpenaurasdkSetColorsAll(); afx_msg void OnBnClickedButtonOpenaurasdkDump(); afx_msg void OnCbnCloseupComboOpenaurasdkMode(); + afx_msg void OnBnClickedButtonOpenaurasdkSetZone(); }; #endif diff --git a/OpenAuraSDK/RGBController.h b/OpenAuraSDK/RGBController.h index 65922957..95c5c3f4 100644 --- a/OpenAuraSDK/RGBController.h +++ b/OpenAuraSDK/RGBController.h @@ -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; }; \ No newline at end of file diff --git a/OpenAuraSDK/RGBController_Aura.cpp b/OpenAuraSDK/RGBController_Aura.cpp index 03a498f4..70666cb9 100644 --- a/OpenAuraSDK/RGBController_Aura.cpp +++ b/OpenAuraSDK/RGBController_Aura.cpp @@ -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; diff --git a/OpenAuraSDK/RGBController_Aura.h b/OpenAuraSDK/RGBController_Aura.h index eed844ef..aa428e60 100644 --- a/OpenAuraSDK/RGBController_Aura.h +++ b/OpenAuraSDK/RGBController_Aura.h @@ -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; diff --git a/OpenAuraSDK/RGBController_Corsair.cpp b/OpenAuraSDK/RGBController_Corsair.cpp index 3a23afe3..8aefbaed 100644 --- a/OpenAuraSDK/RGBController_Corsair.cpp +++ b/OpenAuraSDK/RGBController_Corsair.cpp @@ -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) diff --git a/OpenAuraSDK/RGBController_Corsair.h b/OpenAuraSDK/RGBController_Corsair.h index 272bbd02..aebe03f1 100644 --- a/OpenAuraSDK/RGBController_Corsair.h +++ b/OpenAuraSDK/RGBController_Corsair.h @@ -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; diff --git a/OpenAuraSDK/Resource.rc b/OpenAuraSDK/Resource.rc index fb1a2b88..e3913908 100644 Binary files a/OpenAuraSDK/Resource.rc and b/OpenAuraSDK/Resource.rc differ diff --git a/OpenAuraSDK/resource.h b/OpenAuraSDK/resource.h index ad7d4118..67fd5715 100644 --- a/OpenAuraSDK/resource.h +++ b/OpenAuraSDK/resource.h @@ -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 //