From fe8ed09e77926ee989d6d9c21d0650163968bafe Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Mon, 5 Oct 2020 00:11:03 -0500 Subject: [PATCH] Use HID path for Location on Poseidon Z RGB controller --- .../PoseidonZRGBController/PoseidonZRGBController.cpp | 10 ++++++++-- .../PoseidonZRGBController/PoseidonZRGBController.h | 5 ++++- .../PoseidonZRGBControllerDetect.cpp | 2 +- .../RGBController_PoseidonZRGB.cpp | 1 + 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/Controllers/PoseidonZRGBController/PoseidonZRGBController.cpp b/Controllers/PoseidonZRGBController/PoseidonZRGBController.cpp index 32724af7b..4d48e8f63 100644 --- a/Controllers/PoseidonZRGBController/PoseidonZRGBController.cpp +++ b/Controllers/PoseidonZRGBController/PoseidonZRGBController.cpp @@ -22,9 +22,10 @@ static unsigned int keys[] = {0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x 0x5D, 0x5E, 0x5F, 0x60, 0x61, 0x62, 0x63, 0x64, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6C, 0x6D, 0x6F, 0x70, 0x72, 0x73, 0x75, 0x76, 0x77, 0x78, 0x7C, 0x80, 0x81 }; -PoseidonZRGBController::PoseidonZRGBController(hid_device* dev_handle) +PoseidonZRGBController::PoseidonZRGBController(hid_device* dev_handle, const char* path) { - dev = dev_handle; + dev = dev_handle; + location = path; } PoseidonZRGBController::~PoseidonZRGBController() @@ -32,6 +33,11 @@ PoseidonZRGBController::~PoseidonZRGBController() } +std::string PoseidonZRGBController::GetDeviceLocation() +{ + return(location); +} + void PoseidonZRGBController::SetMode(unsigned char mode, unsigned char direction, unsigned char speed) { active_mode = mode; diff --git a/Controllers/PoseidonZRGBController/PoseidonZRGBController.h b/Controllers/PoseidonZRGBController/PoseidonZRGBController.h index 83830fbcf..9fae5ec17 100644 --- a/Controllers/PoseidonZRGBController/PoseidonZRGBController.h +++ b/Controllers/PoseidonZRGBController/PoseidonZRGBController.h @@ -74,9 +74,11 @@ enum class PoseidonZRGBController { public: - PoseidonZRGBController(hid_device* dev_handle); + PoseidonZRGBController(hid_device* dev_handle, const char* path); ~PoseidonZRGBController(); + std::string GetDeviceLocation(); + void SetMode(unsigned char mode, unsigned char direction, unsigned char speed); void SetLEDsDirect(std::vector colors); void SetLEDs(std::vector colors); @@ -86,6 +88,7 @@ private: unsigned char active_mode; unsigned char active_direction; unsigned char active_speed; + std::string location; void SendControl ( diff --git a/Controllers/PoseidonZRGBController/PoseidonZRGBControllerDetect.cpp b/Controllers/PoseidonZRGBController/PoseidonZRGBControllerDetect.cpp index f70b267b9..78f2422ad 100644 --- a/Controllers/PoseidonZRGBController/PoseidonZRGBControllerDetect.cpp +++ b/Controllers/PoseidonZRGBController/PoseidonZRGBControllerDetect.cpp @@ -41,7 +41,7 @@ void DetectPoseidonZRGBControllers(std::vector& rgb_controllers) dev = hid_open_path(info->path); if( dev ) { - PoseidonZRGBController* controller = new PoseidonZRGBController(dev); + PoseidonZRGBController* controller = new PoseidonZRGBController(dev, info->path); RGBController_PoseidonZRGB* rgb_controller = new RGBController_PoseidonZRGB(controller); diff --git a/Controllers/PoseidonZRGBController/RGBController_PoseidonZRGB.cpp b/Controllers/PoseidonZRGBController/RGBController_PoseidonZRGB.cpp index 6e8e2cac2..e8fca04bc 100644 --- a/Controllers/PoseidonZRGBController/RGBController_PoseidonZRGB.cpp +++ b/Controllers/PoseidonZRGBController/RGBController_PoseidonZRGB.cpp @@ -150,6 +150,7 @@ RGBController_PoseidonZRGB::RGBController_PoseidonZRGB(PoseidonZRGBController* p name = "Thermaltake Poseidon Z RGB"; type = DEVICE_TYPE_KEYBOARD; description = "Thermaltake Poseidon Z RGB Device"; + location = poseidon->GetDeviceLocation(); mode Direct; Direct.name = "Direct";