From a6cfcdeb1d0855de41a97de552e0f7ae522b6198 Mon Sep 17 00:00:00 2001 From: TheRogueZeta <6479694-TheRogueZeta@users.noreply.gitlab.com> Date: Sun, 16 May 2021 17:12:46 -0700 Subject: [PATCH] Retrieve motherboard name for ASUS boards via DMI Commits squashed and amended for code style by Adam Honse --- .../AsusAuraSMBusControllerDetect.cpp | 36 ++++++++++++------- .../AsusAuraUSBControllerDetect.cpp | 22 ++++++++++-- 2 files changed, 43 insertions(+), 15 deletions(-) diff --git a/Controllers/AsusAuraSMBusController/AsusAuraSMBusControllerDetect.cpp b/Controllers/AsusAuraSMBusController/AsusAuraSMBusControllerDetect.cpp index 4de7eb132..d155e31b0 100644 --- a/Controllers/AsusAuraSMBusController/AsusAuraSMBusControllerDetect.cpp +++ b/Controllers/AsusAuraSMBusController/AsusAuraSMBusControllerDetect.cpp @@ -7,6 +7,7 @@ #include #include #include +#include "dependencies/dmiinfo.h" using namespace std::chrono_literals; @@ -122,11 +123,8 @@ bool TestForAsusAuraSMBusController(i2c_smbus_interface* bus, unsigned char addr * * \******************************************************************************************/ -void DetectAsusAuraSMBusControllers(std::vector &busses) +void DetectAsusAuraSMBusDRAMControllers(std::vector &busses) { - AuraSMBusController* new_aura; - RGBController_AuraSMBus* new_controller; - for (unsigned int bus = 0; bus < busses.size(); bus++) { int address_list_idx = -1; @@ -169,14 +167,25 @@ void DetectAsusAuraSMBusControllers(std::vector &busses) { if (TestForAsusAuraSMBusController(busses[bus], aura_ram_addresses[address_list_idx])) { - new_aura = new AuraSMBusController(busses[bus], aura_ram_addresses[address_list_idx]); - new_controller = new RGBController_AuraSMBus(new_aura); - ResourceManager::get()->RegisterRGBController(new_controller); + AuraSMBusController* controller = new AuraSMBusController(busses[bus], aura_ram_addresses[address_list_idx]); + RGBController_AuraSMBus* rgb_controller = new RGBController_AuraSMBus(controller); + ResourceManager::get()->RegisterRGBController(rgb_controller); } std::this_thread::sleep_for(1ms); } } + } +} /* DetectAuraSMBusDRAMControllers() */ + +void DetectAsusAuraSMBusMotherboardControllers(std::vector &busses) +{ + AuraSMBusController* new_aura; + RGBController_AuraSMBus* new_controller; + + for (unsigned int bus = 0; bus < busses.size(); bus++) + { + int address_list_idx = -1; // Add Aura-enabled motherboard controllers IF_MOBO_SMBUS(busses[bus]->pci_vendor, busses[bus]->pci_device) @@ -185,9 +194,11 @@ void DetectAsusAuraSMBusControllers(std::vector &busses) { if (TestForAsusAuraSMBusController(busses[bus], aura_mobo_addresses[address_list_idx])) { - new_aura = new AuraSMBusController(busses[bus], aura_mobo_addresses[address_list_idx]); - new_controller = new RGBController_AuraSMBus(new_aura); - ResourceManager::get()->RegisterRGBController(new_controller); + DMIInfo dmi; + AuraSMBusController* controller = new AuraSMBusController(busses[bus], aura_mobo_addresses[address_list_idx]); + RGBController_AuraSMBus* rgb_controller = new RGBController_AuraSMBus(controller); + rgb_controller->name = "ASUS " + dmi.getMainboard(); + ResourceManager::get()->RegisterRGBController(rgb_controller); } std::this_thread::sleep_for(1ms); @@ -195,6 +206,7 @@ void DetectAsusAuraSMBusControllers(std::vector &busses) } } -} /* DetectAuraSMBusControllers() */ +} /* DetectAuraSMBusMotherboardControllers() */ -REGISTER_I2C_DETECTOR("ASUS Aura SMBus", DetectAsusAuraSMBusControllers); +REGISTER_I2C_DETECTOR("ASUS Aura SMBus DRAM", DetectAsusAuraSMBusDRAMControllers); +REGISTER_I2C_DETECTOR("ASUS Aura SMBus Motherboard", DetectAsusAuraSMBusMotherboardControllers); diff --git a/Controllers/AsusAuraUSBController/AsusAuraUSBControllerDetect.cpp b/Controllers/AsusAuraUSBController/AsusAuraUSBControllerDetect.cpp index 8629d055f..ffb3ccb78 100644 --- a/Controllers/AsusAuraUSBController/AsusAuraUSBControllerDetect.cpp +++ b/Controllers/AsusAuraUSBController/AsusAuraUSBControllerDetect.cpp @@ -9,6 +9,7 @@ #include "RGBController_AsusAuraMouse.h" #include #include +#include "dependencies/dmiinfo.h" #define AURA_USB_VID 0x0B05 #define AURA_TERMINAL_PID 0x1889 @@ -28,7 +29,7 @@ #define AURA_ROG_CHAKRAM_WIRED_1_PID 0x18E3 #define AURA_ROG_CHAKRAM_WIRED_2_PID 0x1958 -void DetectAsusAuraUSBAddressable(hid_device_info* info, const std::string& name) +void DetectAsusAuraUSBTerminal(hid_device_info* info, const std::string& name) { hid_device* dev = hid_open_path(info->path); @@ -41,6 +42,20 @@ void DetectAsusAuraUSBAddressable(hid_device_info* info, const std::string& name } } +void DetectAsusAuraUSBAddressable(hid_device_info* info, const std::string& name) +{ + hid_device* dev = hid_open_path(info->path); + + if(dev) + { + DMIInfo dmi; + AuraAddressableController* controller = new AuraAddressableController(dev, info->path); + RGBController_AuraUSB* rgb_controller = new RGBController_AuraUSB(controller); + rgb_controller->name = "ASUS " + dmi.getMainboard() + " Addressable"; + ResourceManager::get()->RegisterRGBController(rgb_controller); + } +} + void DetectAsusAuraUSBMotherboards(hid_device_info* info, const std::string& name) { hid_device* dev = hid_open_path(info->path); @@ -48,9 +63,10 @@ void DetectAsusAuraUSBMotherboards(hid_device_info* info, const std::string& nam { try { + DMIInfo dmi; AuraMainboardController* controller = new AuraMainboardController(dev, info->path); RGBController_AuraUSB* rgb_controller = new RGBController_AuraUSB(controller); - rgb_controller->name = name; + rgb_controller->name = "ASUS " + dmi.getMainboard(); ResourceManager::get()->RegisterRGBController(rgb_controller); } catch(std::runtime_error&) @@ -84,7 +100,7 @@ void DetectAsusAuraUSBMice(hid_device_info* info, const std::string& name) } } -REGISTER_HID_DETECTOR ("ASUS ROG AURA Terminal", DetectAsusAuraUSBAddressable, AURA_USB_VID, AURA_TERMINAL_PID); +REGISTER_HID_DETECTOR ("ASUS ROG AURA Terminal", DetectAsusAuraUSBTerminal, AURA_USB_VID, AURA_TERMINAL_PID); REGISTER_HID_DETECTOR ("ASUS Aura Addressable", DetectAsusAuraUSBAddressable, AURA_USB_VID, AURA_ADDRESSABLE_1_PID); REGISTER_HID_DETECTOR ("ASUS Aura Addressable", DetectAsusAuraUSBAddressable, AURA_USB_VID, AURA_ADDRESSABLE_2_PID); REGISTER_HID_DETECTOR ("ASUS Aura Addressable", DetectAsusAuraUSBAddressable, AURA_USB_VID, AURA_ADDRESSABLE_3_PID);