From f8f4dceb4a0f1ba3adab7198388caad795fbc975 Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Wed, 2 Dec 2020 20:00:01 -0600 Subject: [PATCH] Add USB: location prefix and USB device ID location string to Corsair Hydro Series controller --- .../CorsairHydroController.cpp | 21 +++++++++++++++++-- .../CorsairHydroController.h | 3 +++ .../RGBController_CorsairHydro.cpp | 1 + 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/Controllers/CorsairHydroController/CorsairHydroController.cpp b/Controllers/CorsairHydroController/CorsairHydroController.cpp index ee446e0d..2fbd89dd 100644 --- a/Controllers/CorsairHydroController/CorsairHydroController.cpp +++ b/Controllers/CorsairHydroController/CorsairHydroController.cpp @@ -7,10 +7,22 @@ #include "CorsairHydroController.h" #include +#include +#include CorsairHydroController::CorsairHydroController(libusb_device_handle* dev_handle) { - dev = dev_handle; + dev = dev_handle; + + /*-----------------------------------------------------*\ + | Fill in location string with USB ID | + \*-----------------------------------------------------*/ + libusb_device_descriptor descriptor; + libusb_get_device_descriptor(libusb_get_device(dev_handle), &descriptor); + + std::stringstream location_stream; + location_stream << std::hex << std::setfill('0') << std::setw(4) << descriptor.idVendor << ":" << std::hex << std::setfill('0') << std::setw(4) << descriptor.idProduct; + location = location_stream.str(); SendInit(); @@ -22,6 +34,11 @@ std::string CorsairHydroController::GetFirmwareString() return(firmware_version); } +std::string CorsairHydroController::GetLocation() +{ + return("USB: " + location); +} + void CorsairHydroController::SetBlink ( std::vector & colors, @@ -248,4 +265,4 @@ void CorsairHydroController::SendSpeed \*-----------------------------------------------------*/ libusb_bulk_transfer(dev, 0x01, usb_buf, 2, &actual, 1000); libusb_bulk_transfer(dev, 0x81, usb_buf, 3, &actual, 1000); -} \ No newline at end of file +} diff --git a/Controllers/CorsairHydroController/CorsairHydroController.h b/Controllers/CorsairHydroController/CorsairHydroController.h index 5750644e..f72f7e40 100644 --- a/Controllers/CorsairHydroController/CorsairHydroController.h +++ b/Controllers/CorsairHydroController/CorsairHydroController.h @@ -39,6 +39,8 @@ public: std::string GetFirmwareString(); + std::string GetLocation(); + void SetBlink ( std::vector & colors, @@ -65,6 +67,7 @@ public: private: libusb_device_handle* dev; std::string firmware_version; + std::string location; void SendApplyBlink(); void SendApplyPulse(); diff --git a/Controllers/CorsairHydroController/RGBController_CorsairHydro.cpp b/Controllers/CorsairHydroController/RGBController_CorsairHydro.cpp index 6f8b198c..d56bf223 100644 --- a/Controllers/CorsairHydroController/RGBController_CorsairHydro.cpp +++ b/Controllers/CorsairHydroController/RGBController_CorsairHydro.cpp @@ -17,6 +17,7 @@ RGBController_CorsairHydro::RGBController_CorsairHydro(CorsairHydroController* c description = "Corsair Hydro Series Device"; version = corsair->GetFirmwareString(); type = DEVICE_TYPE_COOLER; + location = corsair->GetLocation(); mode Direct; Direct.name = "Direct";