From 1618de46b9e6aaee7d99f2f0d73af302f681291d Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Sat, 3 Oct 2020 17:12:27 -0500 Subject: [PATCH] Use HID path for Location on Corsair Peripheral controller --- .../CorsairPeripheralController.cpp | 10 ++++++++-- .../CorsairPeripheralController.h | 4 +++- .../CorsairPeripheralControllerDetect.cpp | 2 +- .../RGBController_CorsairPeripheral.cpp | 1 + 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Controllers/CorsairPeripheralController/CorsairPeripheralController.cpp b/Controllers/CorsairPeripheralController/CorsairPeripheralController.cpp index ce3ccc7bf..96ae91af4 100644 --- a/Controllers/CorsairPeripheralController/CorsairPeripheralController.cpp +++ b/Controllers/CorsairPeripheralController/CorsairPeripheralController.cpp @@ -48,9 +48,10 @@ static unsigned int keys_k95[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 static unsigned int st100[] = { 0x00, 0x01, 0x02, 0x03, 0x05, 0x06, 0x07, 0x08, 0x04 }; -CorsairPeripheralController::CorsairPeripheralController(hid_device* dev_handle) +CorsairPeripheralController::CorsairPeripheralController(hid_device* dev_handle, const char* path) { - dev = dev_handle; + dev = dev_handle; + location = path; ReadFirmwareInfo(); @@ -67,6 +68,11 @@ device_type CorsairPeripheralController::GetDeviceType() return type; } +std::string CorsairPeripheralController::GetDeviceLocation() +{ + return(location); +} + int CorsairPeripheralController::GetPhysicalLayout() { return physical_layout; diff --git a/Controllers/CorsairPeripheralController/CorsairPeripheralController.h b/Controllers/CorsairPeripheralController/CorsairPeripheralController.h index 8bc9c5510..33e860105 100644 --- a/Controllers/CorsairPeripheralController/CorsairPeripheralController.h +++ b/Controllers/CorsairPeripheralController/CorsairPeripheralController.h @@ -66,12 +66,13 @@ enum class CorsairPeripheralController { public: - CorsairPeripheralController(hid_device* dev_handle); + CorsairPeripheralController(hid_device* dev_handle, const char* path); ~CorsairPeripheralController(); int GetLogicalLayout(); int GetPhysicalLayout(); device_type GetDeviceType(); + std::string GetDeviceLocation(); std::string GetFirmwareString(); void SetLEDs(std::vector colors); @@ -84,6 +85,7 @@ private: hid_device* dev; std::string firmware_version; + std::string location; device_type type; int physical_layout; //ANSI, ISO, etc. int logical_layout; //Normal, K95 or K95 Platinum diff --git a/Controllers/CorsairPeripheralController/CorsairPeripheralControllerDetect.cpp b/Controllers/CorsairPeripheralController/CorsairPeripheralControllerDetect.cpp index f6e1c9fe9..4d0a94ee6 100644 --- a/Controllers/CorsairPeripheralController/CorsairPeripheralControllerDetect.cpp +++ b/Controllers/CorsairPeripheralController/CorsairPeripheralControllerDetect.cpp @@ -147,7 +147,7 @@ void DetectCorsairPeripheralControllers(std::vector& rgb_control if( dev ) { - CorsairPeripheralController* controller = new CorsairPeripheralController(dev); + CorsairPeripheralController* controller = new CorsairPeripheralController(dev, info->path); if(controller->GetDeviceType() != DEVICE_TYPE_UNKNOWN) { diff --git a/Controllers/CorsairPeripheralController/RGBController_CorsairPeripheral.cpp b/Controllers/CorsairPeripheralController/RGBController_CorsairPeripheral.cpp index 4baea2092..9007e2939 100644 --- a/Controllers/CorsairPeripheralController/RGBController_CorsairPeripheral.cpp +++ b/Controllers/CorsairPeripheralController/RGBController_CorsairPeripheral.cpp @@ -559,6 +559,7 @@ RGBController_CorsairPeripheral::RGBController_CorsairPeripheral(CorsairPeripher description = "Corsair RGB Peripheral Device"; type = corsair->GetDeviceType(); version = corsair->GetFirmwareString(); + location = corsair->GetDeviceLocation(); physical_layout = corsair->GetPhysicalLayout(); logical_layout = corsair->GetLogicalLayout();