Start work on configuration table parsing for Aura devices. Process all channels with same type into their own zones
This commit is contained in:
parent
7554e366f4
commit
4714aec6dd
7 changed files with 205 additions and 44 deletions
|
|
@ -17,49 +17,57 @@ AuraController::AuraController(i2c_smbus_interface* bus, aura_dev_id dev)
|
|||
|
||||
AuraUpdateDeviceName();
|
||||
|
||||
// Read the device configuration table
|
||||
for (int i = 0; i < 64; i++)
|
||||
{
|
||||
config_table[i] = AuraRegisterRead(AURA_REG_CONFIG_TABLE + i);
|
||||
}
|
||||
|
||||
// Read LED count from configuration table
|
||||
led_count = config_table[AURA_CONFIG_LED_COUNT];
|
||||
|
||||
// LED-0116 - First generation motherboard controller
|
||||
if (strcmp(device_name, "LED-0116") == 0)
|
||||
{
|
||||
direct_reg = AURA_REG_COLORS_DIRECT;
|
||||
effect_reg = AURA_REG_COLORS_EFFECT;
|
||||
led_count = 5;
|
||||
direct_reg = AURA_REG_COLORS_DIRECT;
|
||||
effect_reg = AURA_REG_COLORS_EFFECT;
|
||||
channel_cfg = AURA_CONFIG_CHANNEL_V1;
|
||||
}
|
||||
// DIMM_LED-0102 - First generation DRAM controller (Trident Z RGB)
|
||||
else if (strcmp(device_name, "DIMM_LED-0102") == 0)
|
||||
{
|
||||
direct_reg = AURA_REG_COLORS_DIRECT;
|
||||
effect_reg = AURA_REG_COLORS_EFFECT;
|
||||
led_count = 5;
|
||||
direct_reg = AURA_REG_COLORS_DIRECT;
|
||||
effect_reg = AURA_REG_COLORS_EFFECT;
|
||||
channel_cfg = AURA_CONFIG_CHANNEL_V1;
|
||||
}
|
||||
// AUDA0-E6K5-0101 - Second generation DRAM controller (Geil Super Luce)
|
||||
else if (strcmp(device_name, "AUDA0-E6K5-0101") == 0)
|
||||
{
|
||||
direct_reg = AURA_REG_COLORS_DIRECT_V2;
|
||||
effect_reg = AURA_REG_COLORS_EFFECT_V2;
|
||||
led_count = 5;
|
||||
direct_reg = AURA_REG_COLORS_DIRECT_V2;
|
||||
effect_reg = AURA_REG_COLORS_EFFECT_V2;
|
||||
channel_cfg = AURA_CONFIG_CHANNEL_V2;
|
||||
}
|
||||
// AUMA0-E6K5-0106 - Second generation motherboard controller
|
||||
else if (strcmp(device_name, "AUMA0-E6K5-0106") == 0)
|
||||
{
|
||||
direct_reg = AURA_REG_COLORS_DIRECT_V2;
|
||||
effect_reg = AURA_REG_COLORS_EFFECT_V2;
|
||||
led_count = 5;
|
||||
direct_reg = AURA_REG_COLORS_DIRECT_V2;
|
||||
effect_reg = AURA_REG_COLORS_EFFECT_V2;
|
||||
channel_cfg = AURA_CONFIG_CHANNEL_V2;
|
||||
}
|
||||
// AUMA0-E6K5-0105 - Second generation motherboard controller
|
||||
else if (strcmp(device_name, "AUMA0-E6K5-0105") == 0)
|
||||
{
|
||||
direct_reg = AURA_REG_COLORS_DIRECT_V2;
|
||||
effect_reg = AURA_REG_COLORS_EFFECT_V2;
|
||||
led_count = 5;
|
||||
direct_reg = AURA_REG_COLORS_DIRECT_V2;
|
||||
effect_reg = AURA_REG_COLORS_EFFECT_V2;
|
||||
channel_cfg = AURA_CONFIG_CHANNEL_V2;
|
||||
}
|
||||
// Assume first generation controller if string does not match
|
||||
else
|
||||
{
|
||||
direct_reg = AURA_REG_COLORS_DIRECT;
|
||||
effect_reg = AURA_REG_COLORS_EFFECT;
|
||||
led_count = 5;
|
||||
direct_reg = AURA_REG_COLORS_DIRECT;
|
||||
effect_reg = AURA_REG_COLORS_EFFECT;
|
||||
channel_cfg = AURA_CONFIG_CHANNEL_V1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
AuraController::~AuraController()
|
||||
|
|
@ -72,6 +80,57 @@ char * AuraController::GetDeviceName()
|
|||
return(device_name);
|
||||
}
|
||||
|
||||
unsigned char AuraController::GetChannel(unsigned int led)
|
||||
{
|
||||
return(config_table[channel_cfg + led]);
|
||||
}
|
||||
|
||||
const char * AuraController::GetChannelName(unsigned int led)
|
||||
{
|
||||
switch (config_table[channel_cfg + led])
|
||||
{
|
||||
case (unsigned char)AURA_LED_CHANNEL_AUDIO:
|
||||
return(aura_channels[0]);
|
||||
break;
|
||||
|
||||
case (unsigned char)AURA_LED_CHANNEL_BACKPLATE:
|
||||
return(aura_channels[1]);
|
||||
break;
|
||||
|
||||
case (unsigned char)AURA_LED_CHANNEL_BACK_IO:
|
||||
return(aura_channels[2]);
|
||||
break;
|
||||
|
||||
case (unsigned char)AURA_LED_CHANNEL_CENTER:
|
||||
return(aura_channels[3]);
|
||||
break;
|
||||
|
||||
case (unsigned char)AURA_LED_CHANNEL_CENTER_START:
|
||||
return(aura_channels[4]);
|
||||
break;
|
||||
|
||||
case (unsigned char)AURA_LED_CHANNEL_DRAM:
|
||||
return(aura_channels[5]);
|
||||
break;
|
||||
|
||||
case (unsigned char)AURA_LED_CHANNEL_PCIE:
|
||||
return(aura_channels[6]);
|
||||
break;
|
||||
|
||||
case (unsigned char)AURA_LED_CHANNEL_RGB_HEADER:
|
||||
return(aura_channels[7]);
|
||||
break;
|
||||
|
||||
case (unsigned char)AURA_LED_CHANNEL_RGB_HEADER_2:
|
||||
return(aura_channels[8]);
|
||||
break;
|
||||
|
||||
default:
|
||||
return(aura_channels[9]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
unsigned int AuraController::GetLEDCount()
|
||||
{
|
||||
return(led_count);
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ typedef unsigned short aura_register;
|
|||
enum
|
||||
{
|
||||
AURA_REG_DEVICE_NAME = 0x1000, /* Device String 16 bytes */
|
||||
AURA_REG_CONFIG_TABLE = 0x1C00, /* Start of LED configuration 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 */
|
||||
|
|
@ -50,6 +51,41 @@ enum
|
|||
AURA_NUMBER_MODES /* Number of Aura modes */
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
AURA_LED_CHANNEL_DRAM_2 = 0x05, /* DRAM LED channel */
|
||||
AURA_LED_CHANNEL_CENTER_START = 0x82, /* Center zone first LED channel */
|
||||
AURA_LED_CHANNEL_CENTER = 0x83, /* Center zone LED channel */
|
||||
AURA_LED_CHANNEL_AUDIO = 0x84, /* Audio zone LED channel */
|
||||
AURA_LED_CHANNEL_BACK_IO = 0x85, /* Back I/O zone LED channel */
|
||||
AURA_LED_CHANNEL_RGB_HEADER = 0x86, /* RGB Header LED channel */
|
||||
AURA_LED_CHANNEL_RGB_HEADER_2 = 0x87, /* RGB Header 2 LED channel */
|
||||
AURA_LED_CHANNEL_BACKPLATE = 0x88, /* Backplate zone LED channel */
|
||||
AURA_LED_CHANNEL_DRAM = 0x8A, /* DRAM LED channel */
|
||||
AURA_LED_CHANNEL_PCIE = 0x8B, /* PCIe zone LED channel */
|
||||
};
|
||||
|
||||
static const char* aura_channels[] = /* Aura channel strings */
|
||||
{
|
||||
"Audio",
|
||||
"Backplate",
|
||||
"Back I/O",
|
||||
"Center",
|
||||
"Center",
|
||||
"DRAM",
|
||||
"PCIe",
|
||||
"RGB Header",
|
||||
"RGB Header 2",
|
||||
"Unknown",
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
AURA_CONFIG_LED_COUNT = 0x02, /* LED Count configuration offset */
|
||||
AURA_CONFIG_CHANNEL_V1 = 0x13, /* LED Channel configuration offset */
|
||||
AURA_CONFIG_CHANNEL_V2 = 0x1B, /* LED Channel V2 configuration offset */
|
||||
};
|
||||
|
||||
class AuraController
|
||||
{
|
||||
public:
|
||||
|
|
@ -57,6 +93,8 @@ public:
|
|||
~AuraController();
|
||||
|
||||
char* GetDeviceName();
|
||||
unsigned char GetChannel(unsigned int led);
|
||||
const char* GetChannelName(unsigned int led);
|
||||
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);
|
||||
|
|
@ -73,9 +111,11 @@ public:
|
|||
|
||||
private:
|
||||
char device_name[16];
|
||||
unsigned char config_table[64];
|
||||
unsigned int led_count;
|
||||
aura_register direct_reg;
|
||||
aura_register effect_reg;
|
||||
unsigned char channel_cfg;
|
||||
i2c_smbus_interface * bus;
|
||||
aura_dev_id dev;
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@ BEGIN_MESSAGE_MAP(OpenAuraSDKDialog, CDialogEx)
|
|||
ON_BN_CLICKED(IDC_BUTTON_OPENAURASDK_I2CDETECT, &OpenAuraSDKDialog::OnBnClickedButtonOpenaurasdkI2cdetect)
|
||||
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()
|
||||
|
|
@ -34,6 +33,7 @@ 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);
|
||||
CComboBox* led_box = (CComboBox*)GetDlgItem(IDC_COMBO_OPENAURASDK_LED);
|
||||
|
||||
for (int i = 0; i < controllers.size(); i++)
|
||||
{
|
||||
|
|
@ -51,11 +51,18 @@ BOOL OpenAuraSDKDialog::OnInitDialog()
|
|||
|
||||
for (int i = 0; i < controllers[0]->zones.size(); i++)
|
||||
{
|
||||
mode_box->AddString(controllers[0]->zones[i].name.c_str());
|
||||
zone_box->AddString(controllers[0]->zones[i].name.c_str());
|
||||
}
|
||||
|
||||
zone_box->SetCurSel(0);
|
||||
|
||||
for (int i = 0; i < controllers[0]->leds.size(); i++)
|
||||
{
|
||||
led_box->AddString(controllers[0]->leds[i].name.c_str());
|
||||
}
|
||||
|
||||
led_box->SetCurSel(0);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -86,6 +93,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);
|
||||
CComboBox* led_box = (CComboBox*)GetDlgItem(IDC_COMBO_OPENAURASDK_LED);
|
||||
|
||||
mode_box->ResetContent();
|
||||
|
||||
|
|
@ -98,20 +106,23 @@ void OpenAuraSDKDialog::OnCbnCloseupComboOpenaurasdkDevice()
|
|||
|
||||
zone_box->ResetContent();
|
||||
|
||||
for (int i = 0; i < controllers[0]->zones.size(); i++)
|
||||
for (int i = 0; i < controllers[controller_box->GetCurSel()]->zones.size(); i++)
|
||||
{
|
||||
mode_box->AddString(controllers[0]->zones[i].name.c_str());
|
||||
zone_box->AddString(controllers[controller_box->GetCurSel()]->zones[i].name.c_str());
|
||||
}
|
||||
|
||||
zone_box->SetCurSel(0);
|
||||
|
||||
led_box->ResetContent();
|
||||
|
||||
for (int i = 0; i < controllers[controller_box->GetCurSel()]->leds.size(); i++)
|
||||
{
|
||||
led_box->AddString(controllers[controller_box->GetCurSel()]->leds[i].name.c_str());
|
||||
}
|
||||
|
||||
led_box->SetCurSel(0);
|
||||
}
|
||||
|
||||
void OpenAuraSDKDialog::OnBnClickedButtonOpenaurasdkDump()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
void OpenAuraSDKDialog::OnCbnCloseupComboOpenaurasdkMode()
|
||||
{
|
||||
CComboBox* controller_box = (CComboBox*)GetDlgItem(IDC_COMBO_OPENAURASDK_DEVICE);
|
||||
|
|
@ -134,3 +145,18 @@ void OpenAuraSDKDialog::OnBnClickedButtonOpenaurasdkSetZone()
|
|||
|
||||
controllers[controller_box->GetCurSel()]->SetAllZoneLEDs(zone_box->GetCurSel(), color);
|
||||
}
|
||||
|
||||
|
||||
void OpenAuraSDKDialog::OnBnClickedButtonOpenaurasdkSetColorsLed()
|
||||
{
|
||||
CComboBox* controller_box = (CComboBox*)GetDlgItem(IDC_COMBO_OPENAURASDK_DEVICE);
|
||||
CComboBox* led_box = (CComboBox*)GetDlgItem(IDC_COMBO_OPENAURASDK_LED);
|
||||
|
||||
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()]->SetLED(led_box->GetCurSel(), color);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,12 +27,11 @@ protected:
|
|||
|
||||
public:
|
||||
afx_msg void OnBnClickedButtonOpenaurasdkI2cdetect();
|
||||
afx_msg void OnBnClickedButtonOpenaurasdkSetColors();
|
||||
afx_msg void OnCbnCloseupComboOpenaurasdkDevice();
|
||||
afx_msg void OnBnClickedButtonOpenaurasdkSetColorsAll();
|
||||
afx_msg void OnBnClickedButtonOpenaurasdkDump();
|
||||
afx_msg void OnCbnCloseupComboOpenaurasdkMode();
|
||||
afx_msg void OnBnClickedButtonOpenaurasdkSetZone();
|
||||
afx_msg void OnBnClickedButtonOpenaurasdkSetColorsLed();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -90,6 +90,8 @@ void RGBController_Aura::SetLED(int led, RGBColor color)
|
|||
|
||||
RGBController_Aura::RGBController_Aura(AuraController * aura_ptr)
|
||||
{
|
||||
std::vector<unsigned char> aura_channels;
|
||||
|
||||
aura = aura_ptr;
|
||||
|
||||
name = aura->GetDeviceName();
|
||||
|
|
@ -119,26 +121,58 @@ RGBController_Aura::RGBController_Aura(AuraController * aura_ptr)
|
|||
|
||||
for (int i = 0; i < aura->GetLEDCount(); i++)
|
||||
{
|
||||
aura_channels.push_back(aura->GetChannel(i));
|
||||
|
||||
led* new_led = new led();
|
||||
|
||||
new_led->name = "Aura LED";
|
||||
new_led->name = aura->GetChannelName(i);
|
||||
|
||||
leds.push_back(*new_led);
|
||||
}
|
||||
|
||||
zone new_zone;
|
||||
std::vector<unsigned char> aura_zones;
|
||||
|
||||
new_zone.name = "Aura Zone";
|
||||
new_zone.type = ZONE_TYPE_LINEAR;
|
||||
|
||||
std::vector<int> zone_row;
|
||||
|
||||
for (int i = 0; i < aura->GetLEDCount(); i++)
|
||||
// Search through all LEDs and create zones for each channel type
|
||||
for (int i = 0; i < aura_channels.size(); i++)
|
||||
{
|
||||
zone_row.push_back(i);
|
||||
bool matched = false;
|
||||
|
||||
// Search through existing zones to make sure we don't create a duplicate zone
|
||||
for (int j = 0; j < aura_zones.size(); j++)
|
||||
{
|
||||
if (aura_channels[i] == aura_zones[j])
|
||||
{
|
||||
matched = true;
|
||||
}
|
||||
}
|
||||
|
||||
// If zone does not already exist, create it
|
||||
if (matched == false)
|
||||
{
|
||||
zone* new_zone = new zone();
|
||||
std::vector<int>* zone_row = new std::vector<int>();
|
||||
|
||||
// Set zone name to channel name
|
||||
new_zone->name = aura->GetChannelName(i);
|
||||
|
||||
// Find all LEDs with this channel type and add them to zone
|
||||
for (int j = 0; j < aura->GetLEDCount(); j++)
|
||||
{
|
||||
if (aura->GetChannel(j) == aura_channels[i])
|
||||
{
|
||||
zone_row->push_back(j);
|
||||
}
|
||||
}
|
||||
|
||||
// Aura devices can be either single or linear, never matrix
|
||||
// That means only one row is needed
|
||||
new_zone->map.push_back(*zone_row);
|
||||
|
||||
// Save channel to aura_zones so we know not to create another zone with this channel
|
||||
aura_zones.push_back(aura_channels[i]);
|
||||
|
||||
// Push new zone to zones vector
|
||||
zones.push_back(*new_zone);
|
||||
}
|
||||
}
|
||||
|
||||
new_zone.map.push_back(zone_row);
|
||||
|
||||
zones.push_back(new_zone);
|
||||
}
|
||||
Binary file not shown.
|
|
@ -24,6 +24,8 @@
|
|||
#define IDC_BUTTON_OPENAURASDK_SET_COLORS_ALL 1019
|
||||
#define IDC_COMBO_OPENAURASDK_DEVICE 1020
|
||||
#define IDC_EDIT_OPENAURASDK_LED_1_R 1021
|
||||
#define IDC_BUTTON_OPENAURASDK_SET_COLORS_ALL2 1021
|
||||
#define IDC_BUTTON_OPENAURASDK_SET_COLORS_LED 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
|
||||
|
|
@ -43,6 +45,7 @@
|
|||
#define IDC_COMBO_OPENAURASDK_DEVICE2 1035
|
||||
#define IDC_COMBO_OPENAURASDK_MODE 1035
|
||||
#define IDC_COMBO_OPENAURASDK_ZONE 1036
|
||||
#define IDC_COMBO_OPENAURASDK_LED 1037
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue