mirror of
https://github.com/CalcProgrammer1/OpenRGB.git
synced 2026-03-20 15:01:08 -04:00
77 lines
2.0 KiB
C++
77 lines
2.0 KiB
C++
/*---------------------------------------------------------*\
|
|
| Processing Code for Corsair Hydro Series |
|
|
| |
|
|
| Adam Honse (calcprogrammer1@gmail.com), 8/17/2020 |
|
|
\*---------------------------------------------------------*/
|
|
|
|
#include "CorsairHydroController.h"
|
|
|
|
CorsairHydroController::CorsairHydroController(libusb_device_handle* dev_handle)
|
|
{
|
|
dev = dev_handle;
|
|
|
|
SendInit();
|
|
|
|
SendFirmwareRequest();
|
|
}
|
|
|
|
std::string CorsairHydroController::GetFirmwareString()
|
|
{
|
|
return(firmware_version);
|
|
}
|
|
|
|
void CorsairHydroController::SendFirmwareRequest()
|
|
{
|
|
unsigned char usb_buf[8];
|
|
int actual;
|
|
|
|
usb_buf[0] = 0xAA;
|
|
|
|
libusb_bulk_transfer(dev, 0x01, usb_buf, 1, &actual, 1000);
|
|
libusb_bulk_transfer(dev, 0x81, usb_buf, 7, &actual, 1000);
|
|
|
|
firmware_version = std::to_string(usb_buf[3]) + "." + std::to_string(usb_buf[4]) + "." + std::to_string(usb_buf[5]) + "." + std::to_string(usb_buf[6]);
|
|
}
|
|
|
|
void CorsairHydroController::SetFixed
|
|
(
|
|
unsigned char red,
|
|
unsigned char green,
|
|
unsigned char blue
|
|
)
|
|
{
|
|
unsigned char usb_buf[8];
|
|
int actual;
|
|
|
|
usb_buf[0] = 0x56;
|
|
usb_buf[1] = 0x02;
|
|
usb_buf[2] = red;
|
|
usb_buf[3] = green;
|
|
usb_buf[4] = blue;
|
|
usb_buf[5] = red;
|
|
usb_buf[6] = green;
|
|
usb_buf[7] = blue;
|
|
|
|
libusb_bulk_transfer(dev, 0x01, usb_buf, 8, &actual, 1000);
|
|
libusb_bulk_transfer(dev, 0x81, usb_buf, 3, &actual, 1000);
|
|
|
|
SendApply();
|
|
}
|
|
|
|
void CorsairHydroController::SendApply()
|
|
{
|
|
unsigned char usb_buf[3];
|
|
int actual;
|
|
|
|
usb_buf[0] = 0x55;
|
|
usb_buf[1] = 0x01;
|
|
|
|
libusb_bulk_transfer(dev, 0x01, usb_buf, 2, &actual, 1000);
|
|
libusb_bulk_transfer(dev, 0x81, usb_buf, 3, &actual, 1000);
|
|
}
|
|
|
|
void CorsairHydroController::SendInit()
|
|
{
|
|
libusb_control_transfer( dev, 0x40, 0x00, 0xffff, 0x0000, NULL, 0, 0 );
|
|
libusb_control_transfer( dev, 0x40, 0x02, 0x0002, 0x0000, NULL, 0, 0 );
|
|
} |