diff --git a/Controllers/ThermaltakeRiingController/ThermaltakeRiingController/RGBController_ThermaltakeRiing.cpp b/Controllers/ThermaltakeRiingController/ThermaltakeRiingController/RGBController_ThermaltakeRiing.cpp index e1477204..17b57ecf 100644 --- a/Controllers/ThermaltakeRiingController/ThermaltakeRiingController/RGBController_ThermaltakeRiing.cpp +++ b/Controllers/ThermaltakeRiingController/ThermaltakeRiingController/RGBController_ThermaltakeRiing.cpp @@ -32,6 +32,7 @@ RGBController_ThermaltakeRiing::RGBController_ThermaltakeRiing(ThermaltakeRiingC description = "Thermaltake Riing Device"; location = controller->GetDeviceLocation(); serial = controller->GetSerialString(); + version = controller->GetFirmwareVersion(); mode Direct; Direct.name = "Direct"; diff --git a/Controllers/ThermaltakeRiingController/ThermaltakeRiingController/ThermaltakeRiingController.cpp b/Controllers/ThermaltakeRiingController/ThermaltakeRiingController/ThermaltakeRiingController.cpp index c81d57be..c0e7efd9 100644 --- a/Controllers/ThermaltakeRiingController/ThermaltakeRiingController/ThermaltakeRiingController.cpp +++ b/Controllers/ThermaltakeRiingController/ThermaltakeRiingController/ThermaltakeRiingController.cpp @@ -46,6 +46,32 @@ std::string ThermaltakeRiingController::GetSerialString() return(return_string); } +std::string ThermaltakeRiingController::GetFirmwareVersion() +{ + unsigned char usb_buf[64]; + + /*-----------------------------------------------------*\ + | Zero out buffer | + \*-----------------------------------------------------*/ + memset(usb_buf, 0x00, sizeof(usb_buf)); + + /*-----------------------------------------------------*\ + | Set up Get Firmware Version packet | + \*-----------------------------------------------------*/ + usb_buf[0x00] = 0x33; + usb_buf[0x01] = 0x50; + + /*-----------------------------------------------------*\ + | Send packet | + \*-----------------------------------------------------*/ + hid_write(dev, usb_buf, 64); + hid_read(dev, usb_buf, 64); + + std::string ret_str = std::to_string(usb_buf[2]) + "." + std::to_string(usb_buf[3]) + "." + std::to_string(usb_buf[4]); + + return(ret_str); +} + void ThermaltakeRiingController::SetChannelLEDs(unsigned char channel, RGBColor * colors, unsigned int num_colors) { unsigned char* color_data = new unsigned char[3 * num_colors]; diff --git a/Controllers/ThermaltakeRiingController/ThermaltakeRiingController/ThermaltakeRiingController.h b/Controllers/ThermaltakeRiingController/ThermaltakeRiingController/ThermaltakeRiingController.h index fa8d0f72..023f33b2 100644 --- a/Controllers/ThermaltakeRiingController/ThermaltakeRiingController/ThermaltakeRiingController.h +++ b/Controllers/ThermaltakeRiingController/ThermaltakeRiingController/ThermaltakeRiingController.h @@ -54,6 +54,7 @@ public: std::string GetDeviceLocation(); std::string GetSerialString(); + std::string GetFirmwareVersion(); void SetChannelLEDs(unsigned char channel, RGBColor * colors, unsigned int num_colors); void SetMode(unsigned char mode, unsigned char speed);