diff --git a/OpenAuraSDK/AuraController.cpp b/OpenAuraSDK/AuraController.cpp index 15523e31..36540c6e 100644 --- a/OpenAuraSDK/AuraController.cpp +++ b/OpenAuraSDK/AuraController.cpp @@ -9,6 +9,95 @@ #include "AuraController.h" +AuraController::AuraController(i2c_smbus_interface* bus, aura_dev_id dev) +{ + this->bus = bus; + this->dev = dev; + + AuraUpdateDeviceName(); + + led_count = 5; //temporary, some controllers have more channels +} + +AuraController::~AuraController() +{ + +} + +char * AuraController::GetDeviceName() +{ + return(device_name); +} + +unsigned int AuraController::GetLEDCount() +{ + return(led_count); +} + +void AuraController::SetAllColorsDirect(unsigned char red, unsigned char green, unsigned char blue) +{ + unsigned char* colors = new unsigned char[led_count * 3]; + + for (int i = 0; i < (led_count * 3); i += 3) + { + colors[i + 0] = red; + colors[i + 1] = blue; + colors[i + 2] = green; + } + + AuraRegisterWriteBlock(AURA_REG_COLORS_DIRECT, colors, led_count * 3); + + delete colors; +} + +void AuraController::SetAllColorsEffect(unsigned char red, unsigned char green, unsigned char blue) +{ + unsigned char* colors = new unsigned char[led_count * 3]; + + for (int i = 0; i < (led_count * 3); i += 3) + { + colors[i + 0] = red; + colors[i + 1] = blue; + colors[i + 2] = green; + } + + AuraRegisterWriteBlock(AURA_REG_COLORS_EFFECT, colors, led_count * 3); + + AuraRegisterWrite(AURA_REG_APPLY, AURA_APPLY_VAL); + + delete colors; +} + +void AuraController::SetLEDColorDirect(unsigned int led, unsigned char red, unsigned char green, unsigned char blue) +{ + unsigned char colors[3] = { red, blue, green }; + + AuraRegisterWriteBlock(AURA_REG_COLORS_DIRECT + ( 3 * led ), colors, 3); +} + +void AuraController::SetLEDColorEffect(unsigned int led, unsigned char red, unsigned char green, unsigned char blue) +{ + unsigned char colors[3] = { red, blue, green }; + + AuraRegisterWriteBlock(AURA_REG_COLORS_EFFECT + (3 * led), colors, 3); + + AuraRegisterWrite(AURA_REG_APPLY, AURA_APPLY_VAL); +} + +void AuraController::SetMode(unsigned char mode) +{ + AuraRegisterWrite(AURA_REG_MODE, mode); + AuraRegisterWrite(AURA_REG_APPLY, AURA_APPLY_VAL); +} + +void AuraController::AuraUpdateDeviceName() +{ + for (int i = 0; i < 16; i++) + { + device_name[i] = AuraRegisterRead(AURA_REG_DEVICE_NAME + i); + } +} + unsigned char AuraController::AuraRegisterRead(aura_register reg) { //Write Aura register @@ -31,10 +120,10 @@ void AuraController::AuraRegisterWrite(aura_register reg, unsigned char val) void AuraController::AuraRegisterWriteBlock(aura_register reg, unsigned char * data, unsigned char sz) { - //Write Aura register (0x8000 for colors) + //Write Aura register bus->i2c_smbus_write_word_data(dev, 0x00, ((reg << 8) & 0xFF00) | ((reg >> 8) & 0x00FF)); //Write Aura block data bus->i2c_smbus_write_block_data(dev, 0x03, sz, data); -} +} \ No newline at end of file diff --git a/OpenAuraSDK/AuraController.h b/OpenAuraSDK/AuraController.h index 1866c766..0f66e78f 100644 --- a/OpenAuraSDK/AuraController.h +++ b/OpenAuraSDK/AuraController.h @@ -18,6 +18,7 @@ typedef unsigned short aura_register; enum { + AURA_REG_DEVICE_NAME = 0x1000, /* Device String 16 bytes */ AURA_REG_COLORS_DIRECT = 0x8000, /* Colors for Direct Mode 15 bytes */ AURA_REG_COLORS_EFFECT = 0x8010, /* Colors for Internal Effects 15 bytes */ AURA_REG_DIRECT = 0x8020, /* "Direct Access" Selection Register */ @@ -29,17 +30,17 @@ enum enum { - AURA_MODE_OFF = 0, /* OFF mode */ - AURA_MODE_STATIC = 1, /* Static color mode */ - AURA_MODE_BREATHING = 2, /* Breathing effect mode */ - AURA_MODE_FLASHING = 3, /* Flashing effect mode */ - AURA_MODE_SPECTRUM_CYCLE = 4, /* Spectrum Cycle mode */ - AURA_MODE_RAINBOW = 5, /* Rainbow effect mode */ - AURA_MODE_SPECTRUM_CYCLE_BREATHING = 6, /* Rainbow Breathing effect mode */ - AURA_MODE_CHASE_FADE = 7, /* Chase with Fade effect mode */ - AURA_MODE_SPECTRUM_CYCLE_CHASE_FADE = 8, /* Chase with Fade, Rainbow effect mode */ - AURA_MODE_CHASE = 9, /* Chase effect mode */ - AURA_MODE_SPECTRUM_CYCLE_CHASE = 10, /* Chase with Rainbow effect mode */ + AURA_MODE_OFF = 0, /* OFF mode */ + AURA_MODE_STATIC = 1, /* Static color mode */ + AURA_MODE_BREATHING = 2, /* Breathing effect mode */ + AURA_MODE_FLASHING = 3, /* Flashing effect mode */ + AURA_MODE_SPECTRUM_CYCLE = 4, /* Spectrum Cycle mode */ + AURA_MODE_RAINBOW = 5, /* Rainbow effect mode */ + AURA_MODE_SPECTRUM_CYCLE_BREATHING = 6, /* Rainbow Breathing effect mode */ + AURA_MODE_CHASE_FADE = 7, /* Chase with Fade effect mode */ + AURA_MODE_SPECTRUM_CYCLE_CHASE_FADE = 8, /* Chase with Fade, Rainbow effect mode */ + AURA_MODE_CHASE = 9, /* Chase effect mode */ + AURA_MODE_SPECTRUM_CYCLE_CHASE = 10, /* Chase with Rainbow effect mode */ AURA_MODE_SPECTRUM_CYCLE_WAVE = 11, /* Wave effect mode */ AURA_MODE_CHASE_RAINBOW_PULSE = 12, /* Chase with Rainbow Pulse effect mode*/ AURA_MODE_RANDOM_FLICKER = 13, /* Random flicker effect mode */ @@ -48,13 +49,28 @@ enum class AuraController { public: + AuraController(i2c_smbus_interface* bus, aura_dev_id dev); + ~AuraController(); + + char* GetDeviceName(); + unsigned int GetLEDCount(); + void SetAllColorsDirect(unsigned char red, unsigned char green, unsigned char blue); + void SetAllColorsEffect(unsigned char red, unsigned char green, unsigned char blue); + void SetLEDColorDirect(unsigned int led, unsigned char red, unsigned char green, unsigned char blue); + void SetLEDColorEffect(unsigned int led, unsigned char red, unsigned char green, unsigned char blue); + void SetMode(unsigned char mode); + + 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); - i2c_smbus_interface * bus; - aura_dev_id dev; private: + char device_name[16]; + unsigned int led_count; + i2c_smbus_interface * bus; + aura_dev_id dev; }; \ No newline at end of file diff --git a/OpenAuraSDK/I2CDetectDialog.cpp b/OpenAuraSDK/I2CDetectDialog.cpp index e8e46567..135660a3 100644 --- a/OpenAuraSDK/I2CDetectDialog.cpp +++ b/OpenAuraSDK/I2CDetectDialog.cpp @@ -29,9 +29,10 @@ BOOL I2CDetectDialog::OnInitDialog() for (int i = 0; i < busses.size(); i++) { i2c_bus_box->AddString(busses[i]->device_name); - i2c_bus_box->SetCurSel(0); } + i2c_bus_box->SetCurSel(0); + CFont* myFont = new CFont(); myFont->CreateFontA(16, 0, 0, 0, FW_DONTCARE, false, false, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FIXED_PITCH | FF_MODERN, _T("Consolas")); diff --git a/OpenAuraSDK/OpenAuraSDK.cpp b/OpenAuraSDK/OpenAuraSDK.cpp index c09a8f92..9c4f54c8 100644 --- a/OpenAuraSDK/OpenAuraSDK.cpp +++ b/OpenAuraSDK/OpenAuraSDK.cpp @@ -34,31 +34,6 @@ std::vector controllers; std::vector busses; - -/******************************************************************************************\ -* * -* CreateAuraDevice * -* * -* Enumerates an ASUS Aura compatibler I2C device with the given address on the given * -* bus * -* * -* bus - pointer to i2c_smbus_interface where Aura device is connected * -* dev - I2C address of Aura device * -* * -\******************************************************************************************/ - -AuraController * CreateAuraDevice(i2c_smbus_interface * bus, aura_dev_id dev) -{ - AuraController * aura; - - aura = new AuraController(); - aura->bus = bus; - aura->dev = dev; - - return(aura); - -} /* CreateAuraDevice() */ - #ifdef WIN32 /******************************************************************************************\ * * @@ -236,6 +211,8 @@ void DetectI2CBusses() void DetectAuraControllers() { + AuraController* new_controller; + for (unsigned int bus = 0; bus < busses.size(); bus++) { // Remap Aura-enabled RAM modules on 0x77 @@ -248,12 +225,10 @@ void DetectAuraControllers() break; } - AuraController * temp_controller = CreateAuraDevice(busses[bus], 0x77); + AuraController temp_controller(busses[bus], 0x77); - temp_controller->AuraRegisterWrite(AURA_REG_SLOT_INDEX, slot); - temp_controller->AuraRegisterWrite(AURA_REG_I2C_ADDRESS, 0xE0 + (slot << 1)); - - delete temp_controller; + temp_controller.AuraRegisterWrite(AURA_REG_SLOT_INDEX, slot); + temp_controller.AuraRegisterWrite(AURA_REG_I2C_ADDRESS, 0xE0 + (slot << 1)); } // Add Aura-enabled controllers at their remapped addresses @@ -263,7 +238,7 @@ void DetectAuraControllers() if (res >= 0) { - AuraController * new_controller = CreateAuraDevice(busses[bus], 0x70 + slot); + new_controller = new AuraController(busses[bus], 0x70 + slot); controllers.push_back(new_controller); } } @@ -273,7 +248,7 @@ void DetectAuraControllers() if (res >= 0) { - AuraController * new_controller = CreateAuraDevice(busses[bus], 0x4E); + new_controller = new AuraController(busses[bus], 0x4E); controllers.push_back(new_controller); } } diff --git a/OpenAuraSDK/OpenAuraSDKDialog.cpp b/OpenAuraSDK/OpenAuraSDKDialog.cpp index d0fda97a..4679ba99 100644 --- a/OpenAuraSDK/OpenAuraSDKDialog.cpp +++ b/OpenAuraSDK/OpenAuraSDKDialog.cpp @@ -31,10 +31,25 @@ BEGIN_MESSAGE_MAP(OpenAuraSDKDialog, CDialogEx) ON_BN_CLICKED(IDC_RADIO_OPENAURASDK_EFFECT_SPECTRUM_CYCLE, &OpenAuraSDKDialog::OnBnClickedRadioOpenaurasdkEffectSpectrumCycle) ON_BN_CLICKED(IDC_RADIO_OPENAURASDK_EFFECT_RAINBOW, &OpenAuraSDKDialog::OnBnClickedRadioOpenaurasdkEffectRainbow) ON_BN_CLICKED(IDC_RADIO_OPENAURASDK_BREATHING_SPECTRUM, &OpenAuraSDKDialog::OnBnClickedRadioOpenaurasdkBreathingSpectrum) + ON_BN_CLICKED(IDC_RADIO_OPENAURASDK_EFFECT_CHASE_FADE, &OpenAuraSDKDialog::OnBnClickedRadioOpenaurasdkEffectChaseFade) + 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) END_MESSAGE_MAP() BOOL OpenAuraSDKDialog::OnInitDialog() { + CComboBox* aura_device_box = (CComboBox*)GetDlgItem(IDC_COMBO_OPENAURASDK_DEVICE); + + aura_device_box->AddString("All Devices"); + + for (int i = 0; i < controllers.size(); i++) + { + aura_device_box->AddString(controllers[i]->GetDeviceName()); + } + + aura_device_box->SetCurSel(0); + CFont* myFont = new CFont(); myFont->CreateFontA(16, 0, 0, 0, FW_DONTCARE, false, false, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FIXED_PITCH | FF_MODERN, _T("Consolas")); @@ -51,89 +66,359 @@ void OpenAuraSDKDialog::OnBnClickedButtonOpenaurasdkI2cdetect() void OpenAuraSDKDialog::OnBnClickedRadioOpenaurasdkDirectMode() { - for (int i = 0; i < controllers.size(); i++) + unsigned int aura_device = ((CComboBox*)GetDlgItem(IDC_COMBO_OPENAURASDK_DEVICE))->GetCurSel(); + if ( aura_device == 0) { - controllers[i]->AuraRegisterWrite(AURA_REG_DIRECT, 1); - controllers[i]->AuraRegisterWrite(AURA_REG_APPLY, AURA_APPLY_VAL); + for (int i = 0; i < controllers.size(); i++) + { + controllers[i]->AuraRegisterWrite(AURA_REG_DIRECT, 1); + controllers[i]->AuraRegisterWrite(AURA_REG_APPLY, AURA_APPLY_VAL); + } + } + else + { + controllers[ aura_device - 1 ]->AuraRegisterWrite(AURA_REG_DIRECT, 1); + controllers[ aura_device - 1 ]->AuraRegisterWrite(AURA_REG_APPLY, AURA_APPLY_VAL); } } void OpenAuraSDKDialog::OnBnClickedRadioOpenaurasdkEffectMode() { - for (int i = 0; i < controllers.size(); i++) + unsigned int aura_device = ((CComboBox*)GetDlgItem(IDC_COMBO_OPENAURASDK_DEVICE))->GetCurSel(); + if (aura_device == 0) { - controllers[i]->AuraRegisterWrite(AURA_REG_DIRECT, 0); - controllers[i]->AuraRegisterWrite(AURA_REG_APPLY, AURA_APPLY_VAL); + for (int i = 0; i < controllers.size(); i++) + { + controllers[i]->AuraRegisterWrite(AURA_REG_DIRECT, 0); + controllers[i]->AuraRegisterWrite(AURA_REG_APPLY, AURA_APPLY_VAL); + } + } + else + { + controllers[aura_device - 1]->AuraRegisterWrite(AURA_REG_DIRECT, 0); + controllers[aura_device - 1]->AuraRegisterWrite(AURA_REG_APPLY, AURA_APPLY_VAL); + } +} + + +void OpenAuraSDKDialog::setMode(unsigned char mode_val) +{ + unsigned int aura_device = ((CComboBox*)GetDlgItem(IDC_COMBO_OPENAURASDK_DEVICE))->GetCurSel(); + if (aura_device == 0) + { + for (int i = 0; i < controllers.size(); i++) + { + controllers[i]->SetMode(mode_val); + } + } + else + { + controllers[aura_device - 1]->SetMode(mode_val); } } void OpenAuraSDKDialog::OnBnClickedRadioOpenaurasdkEffectOff() { - for (int i = 0; i < controllers.size(); i++) - { - controllers[i]->AuraRegisterWrite(AURA_REG_MODE, AURA_MODE_OFF); - controllers[i]->AuraRegisterWrite(AURA_REG_APPLY, AURA_APPLY_VAL); - } + setMode(AURA_MODE_OFF); } void OpenAuraSDKDialog::OnBnClickedRadioOpenaurasdkEffectStatic() { - for (int i = 0; i < controllers.size(); i++) - { - controllers[i]->AuraRegisterWrite(AURA_REG_MODE, AURA_MODE_STATIC); - controllers[i]->AuraRegisterWrite(AURA_REG_APPLY, AURA_APPLY_VAL); - } + setMode(AURA_MODE_STATIC); } void OpenAuraSDKDialog::OnBnClickedRadioOpenaurasdkEffectBreathing() { - for (int i = 0; i < controllers.size(); i++) - { - controllers[i]->AuraRegisterWrite(AURA_REG_MODE, AURA_MODE_BREATHING); - controllers[i]->AuraRegisterWrite(AURA_REG_APPLY, AURA_APPLY_VAL); - } + setMode(AURA_MODE_BREATHING); } void OpenAuraSDKDialog::OnBnClickedRadioOpenaurasdkEffectFlashing() { - for (int i = 0; i < controllers.size(); i++) - { - controllers[i]->AuraRegisterWrite(AURA_REG_MODE, AURA_MODE_FLASHING); - controllers[i]->AuraRegisterWrite(AURA_REG_APPLY, AURA_APPLY_VAL); - } + setMode(AURA_MODE_FLASHING); } void OpenAuraSDKDialog::OnBnClickedRadioOpenaurasdkEffectSpectrumCycle() { - for (int i = 0; i < controllers.size(); i++) - { - controllers[i]->AuraRegisterWrite(AURA_REG_MODE, AURA_MODE_SPECTRUM_CYCLE); - controllers[i]->AuraRegisterWrite(AURA_REG_APPLY, AURA_APPLY_VAL); - } + setMode(AURA_MODE_SPECTRUM_CYCLE); } void OpenAuraSDKDialog::OnBnClickedRadioOpenaurasdkEffectRainbow() { - for (int i = 0; i < controllers.size(); i++) - { - controllers[i]->AuraRegisterWrite(AURA_REG_MODE, AURA_MODE_RAINBOW); - controllers[i]->AuraRegisterWrite(AURA_REG_APPLY, AURA_APPLY_VAL); - } + setMode(AURA_MODE_RAINBOW); } void OpenAuraSDKDialog::OnBnClickedRadioOpenaurasdkBreathingSpectrum() { - for (int i = 0; i < controllers.size(); i++) - { - controllers[i]->AuraRegisterWrite(AURA_REG_MODE, AURA_MODE_SPECTRUM_CYCLE_BREATHING); - controllers[i]->AuraRegisterWrite(AURA_REG_APPLY, AURA_APPLY_VAL); - } + setMode(AURA_MODE_SPECTRUM_CYCLE_BREATHING); } + + +void OpenAuraSDKDialog::OnBnClickedRadioOpenaurasdkEffectChaseFade() +{ + setMode(AURA_MODE_CHASE_FADE); +} + + +void OpenAuraSDKDialog::OnBnClickedButtonOpenaurasdkSetColors() +{ + unsigned int aura_device = ((CComboBox*)GetDlgItem(IDC_COMBO_OPENAURASDK_DEVICE))->GetCurSel(); + + if (aura_device == 0) + { + unsigned char direct = ((CButton*)GetDlgItem(IDC_RADIO_OPENAURASDK_DIRECT_MODE))->GetCheck(); + + if (direct == 0) + { + for (int i = 0; i < controllers.size(); i++) + { + controllers[i]->SetLEDColorEffect( 0, + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_R), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_G), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_B) ); + controllers[i]->SetLEDColorEffect( 1, + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_1_R), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_1_G), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_1_B) ); + controllers[i]->SetLEDColorEffect( 2, + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_2_R), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_2_G), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_2_B) ); + controllers[i]->SetLEDColorEffect( 3, + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_3_R), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_3_G), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_3_B) ); + controllers[i]->SetLEDColorEffect( 4, + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_4_R), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_4_G), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_4_B) ); + } + } + else + { + for (int i = 0; i < controllers.size(); i++) + { + controllers[i]->SetLEDColorDirect( 0, + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_R), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_G), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_B) ); + controllers[i]->SetLEDColorDirect( 1, + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_1_R), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_1_G), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_1_B) ); + controllers[i]->SetLEDColorDirect( 2, + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_2_R), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_2_G), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_2_B) ); + controllers[i]->SetLEDColorDirect( 3, + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_3_R), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_3_G), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_3_B) ); + controllers[i]->SetLEDColorDirect( 4, + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_4_R), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_4_G), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_4_B) ); + } + } + } + else + { + unsigned char direct = controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_DIRECT); + + if (direct == 0) + { + controllers[aura_device - 1]->SetLEDColorEffect( 0, + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_R), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_G), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_B) ); + controllers[aura_device - 1]->SetLEDColorEffect( 1, + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_1_R), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_1_G), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_1_B) ); + controllers[aura_device - 1]->SetLEDColorEffect( 2, + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_2_R), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_2_G), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_2_B) ); + controllers[aura_device - 1]->SetLEDColorEffect( 3, + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_3_R), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_3_G), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_3_B) ); + controllers[aura_device - 1]->SetLEDColorEffect( 4, + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_4_R), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_4_G), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_4_B) ); + } + else + { + controllers[aura_device - 1]->SetLEDColorDirect( 0, + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_R), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_G), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_B) ); + controllers[aura_device - 1]->SetLEDColorDirect( 1, + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_1_R), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_1_G), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_1_B) ); + controllers[aura_device - 1]->SetLEDColorDirect( 2, + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_2_R), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_2_G), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_2_B) ); + controllers[aura_device - 1]->SetLEDColorDirect( 3, + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_3_R), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_3_G), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_3_B) ); + controllers[aura_device - 1]->SetLEDColorDirect( 4, + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_4_R), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_4_G), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_4_B) ); + } + } + +} + + +void OpenAuraSDKDialog::OnBnClickedButtonOpenaurasdkSetColorsAll() +{ + unsigned int aura_device = ((CComboBox*)GetDlgItem(IDC_COMBO_OPENAURASDK_DEVICE))->GetCurSel(); + + if (aura_device == 0) + { + unsigned char direct = ((CButton*)GetDlgItem(IDC_RADIO_OPENAURASDK_DIRECT_MODE))->GetCheck(); + + if (direct == 0) + { + for (int i = 0; i < controllers.size(); i++) + { + controllers[i]->SetAllColorsEffect(GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_R), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_G), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_B)); + } + } + else + { + for (int i = 0; i < controllers.size(); i++) + { + controllers[i]->SetAllColorsDirect(GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_R), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_G), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_B)); + } + } + } + else + { + unsigned char direct = controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_DIRECT); + + if (direct == 0) + { + controllers[aura_device - 1]->SetAllColorsEffect(GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_R), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_G), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_B)); + } + else + { + controllers[aura_device - 1]->SetAllColorsDirect(GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_R), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_G), + GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_B)); + } + } + +} + + +void OpenAuraSDKDialog::OnCbnCloseupComboOpenaurasdkDevice() +{ + unsigned int aura_device = ((CComboBox*)GetDlgItem(IDC_COMBO_OPENAURASDK_DEVICE))->GetCurSel(); + if (aura_device == 0) + { + /*((CButton*)GetDlgItem(IDC_RADIO_OPENAURASDK_DIRECT_MODE))->SetCheck(false); + ((CButton*)GetDlgItem(IDC_RADIO_OPENAURASDK_EFFECT_MODE))->SetCheck(false); + + ((CButton*)GetDlgItem(IDC_RADIO_OPENAURASDK_EFFECT_OFF))->SetCheck(false); + ((CButton*)GetDlgItem(IDC_RADIO_OPENAURASDK_EFFECT_STATIC))->SetCheck(false); + ((CButton*)GetDlgItem(IDC_RADIO_OPENAURASDK_EFFECT_BREATHING))->SetCheck(false); + ((CButton*)GetDlgItem(IDC_RADIO_OPENAURASDK_EFFECT_FLASHING))->SetCheck(false); + ((CButton*)GetDlgItem(IDC_RADIO_OPENAURASDK_EFFECT_SPECTRUM_CYCLE))->SetCheck(false); + ((CButton*)GetDlgItem(IDC_RADIO_OPENAURASDK_EFFECT_RAINBOW))->SetCheck(false); + ((CButton*)GetDlgItem(IDC_RADIO_OPENAURASDK_BREATHING_SPECTRUM))->SetCheck(false); + ((CButton*)GetDlgItem(IDC_RADIO_OPENAURASDK_EFFECT_CHASE_FADE))->SetCheck(false); + + SetDlgItemText(IDC_EDIT_OPENAURASDK_LED_0_R, ""); + SetDlgItemText(IDC_EDIT_OPENAURASDK_LED_0_G, ""); + SetDlgItemText(IDC_EDIT_OPENAURASDK_LED_0_B, ""); + SetDlgItemText(IDC_EDIT_OPENAURASDK_LED_1_R, ""); + SetDlgItemText(IDC_EDIT_OPENAURASDK_LED_1_G, ""); + SetDlgItemText(IDC_EDIT_OPENAURASDK_LED_1_B, ""); + SetDlgItemText(IDC_EDIT_OPENAURASDK_LED_2_R, ""); + SetDlgItemText(IDC_EDIT_OPENAURASDK_LED_2_G, ""); + SetDlgItemText(IDC_EDIT_OPENAURASDK_LED_2_B, ""); + SetDlgItemText(IDC_EDIT_OPENAURASDK_LED_3_R, ""); + SetDlgItemText(IDC_EDIT_OPENAURASDK_LED_3_G, ""); + SetDlgItemText(IDC_EDIT_OPENAURASDK_LED_3_B, ""); + SetDlgItemText(IDC_EDIT_OPENAURASDK_LED_4_R, ""); + SetDlgItemText(IDC_EDIT_OPENAURASDK_LED_4_G, ""); + SetDlgItemText(IDC_EDIT_OPENAURASDK_LED_4_B, "");*/ + + } + else + { + unsigned char direct = controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_DIRECT); + + ((CButton*)GetDlgItem(IDC_RADIO_OPENAURASDK_DIRECT_MODE))->SetCheck(direct != 0); + ((CButton*)GetDlgItem(IDC_RADIO_OPENAURASDK_EFFECT_MODE))->SetCheck(direct == 0); + + unsigned char mode = controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_MODE); + + ((CButton*)GetDlgItem(IDC_RADIO_OPENAURASDK_EFFECT_OFF))->SetCheck(mode == AURA_MODE_OFF); + ((CButton*)GetDlgItem(IDC_RADIO_OPENAURASDK_EFFECT_STATIC))->SetCheck(mode == AURA_MODE_STATIC); + ((CButton*)GetDlgItem(IDC_RADIO_OPENAURASDK_EFFECT_BREATHING))->SetCheck(mode == AURA_MODE_BREATHING); + ((CButton*)GetDlgItem(IDC_RADIO_OPENAURASDK_EFFECT_FLASHING))->SetCheck(mode == AURA_MODE_FLASHING); + ((CButton*)GetDlgItem(IDC_RADIO_OPENAURASDK_EFFECT_SPECTRUM_CYCLE))->SetCheck(mode == AURA_MODE_SPECTRUM_CYCLE); + ((CButton*)GetDlgItem(IDC_RADIO_OPENAURASDK_EFFECT_RAINBOW))->SetCheck(mode == AURA_MODE_RAINBOW); + ((CButton*)GetDlgItem(IDC_RADIO_OPENAURASDK_BREATHING_SPECTRUM))->SetCheck(mode == AURA_MODE_SPECTRUM_CYCLE_BREATHING); + ((CButton*)GetDlgItem(IDC_RADIO_OPENAURASDK_EFFECT_CHASE_FADE))->SetCheck(mode == AURA_MODE_CHASE_FADE); + + if (direct == 0) + { + SetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_R, controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_COLORS_EFFECT + 0)); + SetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_G, controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_COLORS_EFFECT + 2)); + SetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_B, controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_COLORS_EFFECT + 1)); + SetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_1_R, controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_COLORS_EFFECT + 3)); + SetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_1_G, controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_COLORS_EFFECT + 5)); + SetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_1_B, controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_COLORS_EFFECT + 4)); + SetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_2_R, controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_COLORS_EFFECT + 6)); + SetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_2_G, controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_COLORS_EFFECT + 8)); + SetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_2_B, controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_COLORS_EFFECT + 7)); + SetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_3_R, controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_COLORS_EFFECT + 9)); + SetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_3_G, controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_COLORS_EFFECT + 11)); + SetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_3_B, controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_COLORS_EFFECT + 10)); + SetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_4_R, controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_COLORS_EFFECT + 12)); + SetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_4_G, controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_COLORS_EFFECT + 14)); + SetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_4_B, controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_COLORS_EFFECT + 13)); + } + else + { + SetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_R, controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_COLORS_DIRECT + 0)); + SetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_G, controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_COLORS_DIRECT + 2)); + SetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_B, controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_COLORS_DIRECT + 1)); + SetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_1_R, controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_COLORS_DIRECT + 3)); + SetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_1_G, controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_COLORS_DIRECT + 5)); + SetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_1_B, controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_COLORS_DIRECT + 4)); + SetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_2_R, controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_COLORS_DIRECT + 6)); + SetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_2_G, controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_COLORS_DIRECT + 8)); + SetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_2_B, controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_COLORS_DIRECT + 7)); + SetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_3_R, controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_COLORS_DIRECT + 9)); + SetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_3_G, controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_COLORS_DIRECT + 11)); + SetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_3_B, controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_COLORS_DIRECT + 10)); + SetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_4_R, controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_COLORS_DIRECT + 12)); + SetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_4_G, controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_COLORS_DIRECT + 14)); + SetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_4_B, controllers[aura_device - 1]->AuraRegisterRead(AURA_REG_COLORS_DIRECT + 13)); + } + } + +} \ No newline at end of file diff --git a/OpenAuraSDK/OpenAuraSDKDialog.h b/OpenAuraSDK/OpenAuraSDKDialog.h index db5ef7dc..d3460580 100644 --- a/OpenAuraSDK/OpenAuraSDKDialog.h +++ b/OpenAuraSDK/OpenAuraSDKDialog.h @@ -17,14 +17,15 @@ public: virtual BOOL OnInitDialog(); private: + void setMode(unsigned char mode_val); protected: std::vector& busses; std::vector& controllers; virtual void DoDataExchange(CDataExchange* pDX); DECLARE_MESSAGE_MAP() -public: +public: afx_msg void OnBnClickedButtonOpenaurasdkI2cdetect(); afx_msg void OnBnClickedRadioOpenaurasdkDirectMode(); afx_msg void OnBnClickedRadioOpenaurasdkEffectMode(); @@ -35,6 +36,10 @@ public: afx_msg void OnBnClickedRadioOpenaurasdkEffectSpectrumCycle(); afx_msg void OnBnClickedRadioOpenaurasdkEffectRainbow(); afx_msg void OnBnClickedRadioOpenaurasdkBreathingSpectrum(); + afx_msg void OnBnClickedRadioOpenaurasdkEffectChaseFade(); + afx_msg void OnBnClickedButtonOpenaurasdkSetColors(); + afx_msg void OnCbnCloseupComboOpenaurasdkDevice(); + afx_msg void OnBnClickedButtonOpenaurasdkSetColorsAll(); }; #endif diff --git a/OpenAuraSDK/Resource.rc b/OpenAuraSDK/Resource.rc index 8c719b18..af4ebd08 100644 Binary files a/OpenAuraSDK/Resource.rc and b/OpenAuraSDK/Resource.rc differ diff --git a/OpenAuraSDK/resource.h b/OpenAuraSDK/resource.h index b772a090..0d0fecc9 100644 --- a/OpenAuraSDK/resource.h +++ b/OpenAuraSDK/resource.h @@ -16,8 +16,27 @@ #define IDC_RADIO_OPENAURASDK_EFFECT_FLASHING 1011 #define IDC_RADIO_OPENAURASDK_EFFECT_SPECTRUM_CYCLE 1012 #define IDC_RADIO_OPENAURASDK_EFFECT_RAINBOW 1013 -#define IDC_RADIO9 1014 #define IDC_RADIO_OPENAURASDK_BREATHING_SPECTRUM 1014 +#define IDC_RADIO_OPENAURASDK_EFFECT_CHASE_FADE 1015 +#define IDC_EDIT_OPENAURASDK_LED_0_R 1016 +#define IDC_EDIT_OPENAURASDK_LED_0_G 1017 +#define IDC_EDIT_OPENAURASDK_LED_0_B 1018 +#define IDC_BUTTON_OPENAURASDK_SET_COLORS_ALL 1019 +#define IDC_COMBO_OPENAURASDK_DEVICE 1020 +#define IDC_EDIT_OPENAURASDK_LED_1_R 1021 +#define IDC_EDIT_OPENAURASDK_LED_1_G 1022 +#define IDC_EDIT_OPENAURASDK_LED_1_B 1023 +#define IDC_EDIT_OPENAURASDK_LED_2_R 1024 +#define IDC_EDIT_OPENAURASDK_LED_2_G 1025 +#define IDC_EDIT_OPENAURASDK_LED_2_B 1026 +#define IDC_EDIT_OPENAURASDK_LED_3_R 1027 +#define IDC_EDIT_OPENAURASDK_LED_3_G 1028 +#define IDC_EDIT_OPENAURASDK_LED_3_B 1029 +#define IDC_EDIT_OPENAURASDK_LED_4_R 1030 +#define IDC_EDIT_OPENAURASDK_LED_4_G 1031 +#define IDC_EDIT_OPENAURASDK_LED_4_B 1032 +#define IDC_BUTTON_OPENAURASDK_SET_COLORS2 1034 +#define IDC_BUTTON_OPENAURASDK_SET_COLORS 1034 // Next default values for new objects // @@ -25,7 +44,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 105 #define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1015 +#define _APS_NEXT_CONTROL_VALUE 1021 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif