diff --git a/OpenAuraSDK/I2CDetectDialog.cpp b/OpenAuraSDK/I2CDetectDialog.cpp new file mode 100644 index 00000000..e8e46567 --- /dev/null +++ b/OpenAuraSDK/I2CDetectDialog.cpp @@ -0,0 +1,49 @@ +#include "I2CDetectDialog.h" +#include "OpenAuraSDK.h" + +IMPLEMENT_DYNAMIC(I2CDetectDialog, CDialogEx) + +I2CDetectDialog::I2CDetectDialog(std::vector& bus, CWnd* pParent) + : CDialogEx(IDD_DIALOG_I2C_DETECT, pParent), busses(bus) +{ + +} + +I2CDetectDialog::~I2CDetectDialog() +{ + +} + +void I2CDetectDialog::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); +} + +BEGIN_MESSAGE_MAP(I2CDetectDialog, CDialogEx) + ON_BN_CLICKED(IDC_BUTTON_I2C_DETECT, &I2CDetectDialog::OnBnClickedButtonI2cDetect) +END_MESSAGE_MAP() + +BOOL I2CDetectDialog::OnInitDialog() +{ + CComboBox* i2c_bus_box = (CComboBox*)GetDlgItem(IDC_COMBO_I2C_BUS); + for (int i = 0; i < busses.size(); i++) + { + i2c_bus_box->AddString(busses[i]->device_name); + 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")); + + CEdit* edit = (CEdit*)GetDlgItem(IDC_EDIT_I2C_DETECT); + edit->SetFont(myFont); + + return TRUE; +} + +void I2CDetectDialog::OnBnClickedButtonI2cDetect() +{ + i2c_smbus_interface* bus = busses[((CComboBox*)GetDlgItem(IDC_COMBO_I2C_BUS))->GetCurSel()]; + + SetDlgItemText(IDC_EDIT_I2C_DETECT, DetectI2C(bus, MODE_QUICK).c_str()); +} \ No newline at end of file diff --git a/OpenAuraSDK/I2CDetectDialog.h b/OpenAuraSDK/I2CDetectDialog.h new file mode 100644 index 00000000..8cb11af4 --- /dev/null +++ b/OpenAuraSDK/I2CDetectDialog.h @@ -0,0 +1,28 @@ +#ifndef I2CDETECT_DIALOG_H +#define I2CDETECT_DIALOG_H + +#include +#include +#include "i2c_smbus.h" +#include "resource.h" + +class I2CDetectDialog : public CDialogEx +{ + DECLARE_DYNAMIC(I2CDetectDialog) + +public: + I2CDetectDialog(std::vector& bus, CWnd* pParent = NULL); + virtual ~I2CDetectDialog(); + virtual BOOL OnInitDialog(); + +private: + +protected: + std::vector& busses; + virtual void DoDataExchange(CDataExchange* pDX); + DECLARE_MESSAGE_MAP() +public: + afx_msg void OnBnClickedButtonI2cDetect(); +}; + +#endif diff --git a/OpenAuraSDK/OpenAuraSDK.cpp b/OpenAuraSDK/OpenAuraSDK.cpp index b84e0ee9..c09a8f92 100644 --- a/OpenAuraSDK/OpenAuraSDK.cpp +++ b/OpenAuraSDK/OpenAuraSDK.cpp @@ -11,6 +11,9 @@ #include #include #include +#include +#include "OpenAuraSDKDialog.h" +#include "I2CDetectDialog.h" #ifdef WIN32 @@ -92,11 +95,15 @@ void DetectI2CBusses() if (i["Manufacturer"].find("Advanced Micro Devices, Inc") != std::string::npos) { bus = new i2c_smbus_piix4(); + strcpy(bus->device_name, i["Description"].c_str()); + strcat(bus->device_name, " at 0x0B00"); ((i2c_smbus_piix4 *)bus)->piix4_smba = 0x0B00; busses.push_back(bus); bus = new i2c_smbus_piix4(); ((i2c_smbus_piix4 *)bus)->piix4_smba = 0x0B20; + strcpy(bus->device_name, i["Description"].c_str()); + strcat(bus->device_name, " at 0x0B20"); busses.push_back(bus); } @@ -124,6 +131,7 @@ void DetectI2CBusses() unsigned int IORangeStart = std::stoi(matches[1].str()); bus = new i2c_smbus_i801(); + strcpy(bus->device_name, i["Description"].c_str()); ((i2c_smbus_i801 *)bus)->i801_smba = IORangeStart; busses.push_back(bus); } @@ -291,19 +299,23 @@ void DetectAuraControllers() #define MODE_READ 2 #define MODE_FUNC 3 -void DetectI2C(i2c_smbus_interface * bus, int mode) +std::string DetectI2C(i2c_smbus_interface * bus, int mode) { int i, j; int res; int slave_addr; + char line[128]; + std::string text; freopen("i2cdetect.txt", "a", stdout); - printf(" 0 1 2 3 4 5 6 7 8 9 a b c d e f\r\n"); + sprintf(line, " 0 1 2 3 4 5 6 7 8 9 a b c d e f\r\n"); + text.append(line); for (i = 0; i < 128; i += 16) { - printf("%02x: ", i); + sprintf(line, "%02x: ", i); + text.append(line); for (j = 0; j < 16; j++) { @@ -330,16 +342,21 @@ void DetectI2C(i2c_smbus_interface * bus, int mode) if (res < 0) { - printf("-- "); + sprintf(line, "-- "); + text.append(line); } else { - printf("%02x ", i + j); + sprintf(line, "%02x ", i + j); + text.append(line); } } - printf("\r\n"); + sprintf(line, "\r\n"); + text.append(line); } + return text; + } /* DetectI2C() */ @@ -355,13 +372,13 @@ void DumpAuraRegisters(AuraController * controller) { int i, j; - int start = 0x8000; + int start = 0x0000; freopen("auradump.txt", "a", stdout); printf(" 0 1 2 3 4 5 6 7 8 9 a b c d e f\r\n"); - for (i = 0; i < 512; i += 16) + for (i = 0; i < 0xFFFF; i += 16) { printf("%04x: ", i + start); @@ -388,11 +405,7 @@ void DumpAuraRegisters(AuraController * controller) * * \******************************************************************************************/ -#ifdef WIN32 -INT WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, INT nCmdShow) -#else /* WIN32 */ int main() -#endif /* WIN32 */ { // Colors Array R B G unsigned char colors[15] = { 255, 0, 0, @@ -404,7 +417,10 @@ int main() DetectAuraControllers(); - for (unsigned int i = 0; i < controllers.size(); i++) + OpenAuraSDKDialog dlg(busses, controllers); + dlg.DoModal(); + + /*for (unsigned int i = 0; i < controllers.size(); i++) { controllers[i]->AuraRegisterWrite(AURA_REG_DIRECT, 1); controllers[i]->AuraRegisterWrite(AURA_REG_APPLY, AURA_APPLY_VAL); @@ -415,5 +431,6 @@ int main() controllers[i]->AuraRegisterWriteBlock(AURA_REG_COLORS_DIRECT, colors, 15); } + DumpAuraRegisters(controllers[4]);*/ return 1; } diff --git a/OpenAuraSDK/OpenAuraSDK.h b/OpenAuraSDK/OpenAuraSDK.h new file mode 100644 index 00000000..bb9f77a7 --- /dev/null +++ b/OpenAuraSDK/OpenAuraSDK.h @@ -0,0 +1,9 @@ +#include +#include "i2c_smbus.h" + +#define MODE_AUTO 0 +#define MODE_QUICK 1 +#define MODE_READ 2 +#define MODE_FUNC 3 + +std::string DetectI2C(i2c_smbus_interface * bus, int mode); \ No newline at end of file diff --git a/OpenAuraSDK/OpenAuraSDK.vcxproj b/OpenAuraSDK/OpenAuraSDK.vcxproj index 4b19a86c..f03cd865 100644 --- a/OpenAuraSDK/OpenAuraSDK.vcxproj +++ b/OpenAuraSDK/OpenAuraSDK.vcxproj @@ -31,6 +31,7 @@ true v141 Unicode + Dynamic Application @@ -38,12 +39,14 @@ v141 true Unicode + Dynamic Application true v141 Unicode + Dynamic Application @@ -51,6 +54,7 @@ v141 true Unicode + Dynamic @@ -92,15 +96,16 @@ Level3 Disabled true - WIN32;_CRT_SECURE_NO_WARNINGS + WIN32;_CRT_SECURE_NO_WARNINGS;_AFXDLL true ..\dependencies\inpout32_1501\Win32;%(AdditionalIncludeDirectories) true + MultiThreadedDLL - Windows + Console true ..\dependencies\inpout32_1501\Win32;%(AdditionalLibraryDirectories) @@ -111,14 +116,15 @@ Level3 Disabled true - WIN32;_CRT_SECURE_NO_WARNINGS + WIN32;_CRT_SECURE_NO_WARNINGS;_AFXDLL true ..\dependencies\inpout32_1501\Win32;%(AdditionalIncludeDirectories) + MultiThreadedDLL - Windows + Console true ..\dependencies\inpout32_1501\Win32;%(AdditionalLibraryDirectories) @@ -131,15 +137,16 @@ true true true - WIN32;_CRT_SECURE_NO_WARNINGS + WIN32;_CRT_SECURE_NO_WARNINGS;_AFXDLL true ..\dependencies\inpout32_1501\Win32;%(AdditionalIncludeDirectories) true + MultiThreadedDLL - Windows + Console true true true @@ -154,14 +161,15 @@ true true true - WIN32;_CRT_SECURE_NO_WARNINGS + WIN32;_CRT_SECURE_NO_WARNINGS;_AFXDLL true ..\dependencies\inpout32_1501\Win32;%(AdditionalIncludeDirectories) + MultiThreadedDLL - Windows + Console true true true @@ -170,21 +178,29 @@ + - + + + + + + + + diff --git a/OpenAuraSDK/OpenAuraSDK.vcxproj.filters b/OpenAuraSDK/OpenAuraSDK.vcxproj.filters index fe80664a..4026b777 100644 --- a/OpenAuraSDK/OpenAuraSDK.vcxproj.filters +++ b/OpenAuraSDK/OpenAuraSDK.vcxproj.filters @@ -24,15 +24,24 @@ Header Files - - Header Files - Header Files Header Files + + Header Files + + + Header Files + + + Header Files + + + Header Files + @@ -56,5 +65,16 @@ Source Files + + Source Files + + + Source Files + + + + + Resource Files + \ No newline at end of file diff --git a/OpenAuraSDK/OpenAuraSDKDialog.cpp b/OpenAuraSDK/OpenAuraSDKDialog.cpp new file mode 100644 index 00000000..d0fda97a --- /dev/null +++ b/OpenAuraSDK/OpenAuraSDKDialog.cpp @@ -0,0 +1,139 @@ +#include "OpenAuraSDKDialog.h" +#include "OpenAuraSDK.h" +#include "I2CDetectDialog.h" + +IMPLEMENT_DYNAMIC(OpenAuraSDKDialog, CDialogEx) + +OpenAuraSDKDialog::OpenAuraSDKDialog(std::vector& bus, std::vector& control, CWnd* pParent) + : CDialogEx(IDD_DIALOG_OPENAURASDK, pParent), busses(bus), controllers (control) +{ + +} + +OpenAuraSDKDialog::~OpenAuraSDKDialog() +{ + +} + +void OpenAuraSDKDialog::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); +} + +BEGIN_MESSAGE_MAP(OpenAuraSDKDialog, CDialogEx) + ON_BN_CLICKED(IDC_BUTTON_OPENAURASDK_I2CDETECT, &OpenAuraSDKDialog::OnBnClickedButtonOpenaurasdkI2cdetect) + ON_BN_CLICKED(IDC_RADIO_OPENAURASDK_DIRECT_MODE, &OpenAuraSDKDialog::OnBnClickedRadioOpenaurasdkDirectMode) + ON_BN_CLICKED(IDC_RADIO_OPENAURASDK_EFFECT_MODE, &OpenAuraSDKDialog::OnBnClickedRadioOpenaurasdkEffectMode) + ON_BN_CLICKED(IDC_RADIO_OPENAURASDK_EFFECT_OFF, &OpenAuraSDKDialog::OnBnClickedRadioOpenaurasdkEffectOff) + ON_BN_CLICKED(IDC_RADIO_OPENAURASDK_EFFECT_STATIC, &OpenAuraSDKDialog::OnBnClickedRadioOpenaurasdkEffectStatic) + ON_BN_CLICKED(IDC_RADIO_OPENAURASDK_EFFECT_BREATHING, &OpenAuraSDKDialog::OnBnClickedRadioOpenaurasdkEffectBreathing) + ON_BN_CLICKED(IDC_RADIO_OPENAURASDK_EFFECT_FLASHING, &OpenAuraSDKDialog::OnBnClickedRadioOpenaurasdkEffectFlashing) + 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) +END_MESSAGE_MAP() + +BOOL OpenAuraSDKDialog::OnInitDialog() +{ + 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")); + + return TRUE; +} + + +void OpenAuraSDKDialog::OnBnClickedButtonOpenaurasdkI2cdetect() +{ + I2CDetectDialog dlg(busses); + dlg.DoModal(); +} + + +void OpenAuraSDKDialog::OnBnClickedRadioOpenaurasdkDirectMode() +{ + for (int i = 0; i < controllers.size(); i++) + { + controllers[i]->AuraRegisterWrite(AURA_REG_DIRECT, 1); + controllers[i]->AuraRegisterWrite(AURA_REG_APPLY, AURA_APPLY_VAL); + } +} + + +void OpenAuraSDKDialog::OnBnClickedRadioOpenaurasdkEffectMode() +{ + for (int i = 0; i < controllers.size(); i++) + { + controllers[i]->AuraRegisterWrite(AURA_REG_DIRECT, 0); + controllers[i]->AuraRegisterWrite(AURA_REG_APPLY, AURA_APPLY_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); + } +} + + +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); + } +} + + +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); + } +} + + +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); + } +} + + +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); + } +} + + +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); + } +} + + +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); + } +} diff --git a/OpenAuraSDK/OpenAuraSDKDialog.h b/OpenAuraSDK/OpenAuraSDKDialog.h new file mode 100644 index 00000000..db5ef7dc --- /dev/null +++ b/OpenAuraSDK/OpenAuraSDKDialog.h @@ -0,0 +1,40 @@ +#ifndef OPENAURASDK_DIALOG_H +#define OPENAURASDK_DIALOG_H + +#include +#include +#include "i2c_smbus.h" +#include "AuraController.h" +#include "resource.h" + +class OpenAuraSDKDialog : public CDialogEx +{ + DECLARE_DYNAMIC(OpenAuraSDKDialog) + +public: + OpenAuraSDKDialog(std::vector& bus, std::vector& control, CWnd* pParent = NULL); + virtual ~OpenAuraSDKDialog(); + virtual BOOL OnInitDialog(); + +private: + +protected: + std::vector& busses; + std::vector& controllers; + virtual void DoDataExchange(CDataExchange* pDX); + DECLARE_MESSAGE_MAP() +public: + + afx_msg void OnBnClickedButtonOpenaurasdkI2cdetect(); + afx_msg void OnBnClickedRadioOpenaurasdkDirectMode(); + afx_msg void OnBnClickedRadioOpenaurasdkEffectMode(); + afx_msg void OnBnClickedRadioOpenaurasdkEffectOff(); + afx_msg void OnBnClickedRadioOpenaurasdkEffectStatic(); + afx_msg void OnBnClickedRadioOpenaurasdkEffectBreathing(); + afx_msg void OnBnClickedRadioOpenaurasdkEffectFlashing(); + afx_msg void OnBnClickedRadioOpenaurasdkEffectSpectrumCycle(); + afx_msg void OnBnClickedRadioOpenaurasdkEffectRainbow(); + afx_msg void OnBnClickedRadioOpenaurasdkBreathingSpectrum(); +}; + +#endif diff --git a/OpenAuraSDK/Resource.rc b/OpenAuraSDK/Resource.rc new file mode 100644 index 00000000..8c719b18 Binary files /dev/null and b/OpenAuraSDK/Resource.rc differ diff --git a/OpenAuraSDK/resource.h b/OpenAuraSDK/resource.h new file mode 100644 index 00000000..b772a090 --- /dev/null +++ b/OpenAuraSDK/resource.h @@ -0,0 +1,31 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by Resource.rc +// +#define IDD_DIALOG_I2C_DETECT 101 +#define IDD_DIALOG_OPENAURASDK 103 +#define IDC_COMBO_I2C_BUS 1001 +#define IDC_BUTTON_I2C_DETECT 1002 +#define IDC_EDIT_I2C_DETECT 1003 +#define IDC_BUTTON_OPENAURASDK_I2CDETECT 1004 +#define IDC_RADIO_OPENAURASDK_DIRECT_MODE 1006 +#define IDC_RADIO_OPENAURASDK_EFFECT_MODE 1007 +#define IDC_RADIO_OPENAURASDK_EFFECT_STATIC 1008 +#define IDC_RADIO_OPENAURASDK_EFFECT_OFF 1009 +#define IDC_RADIO_OPENAURASDK_EFFECT_BREATHING 1010 +#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 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#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_SYMED_VALUE 101 +#endif +#endif