diff --git a/Controllers/AsusAuraUSBController/AsusAuraMonitorController.cpp b/Controllers/AsusAuraUSBController/AsusAuraMonitorController.cpp index 24917330..3f6dc8b3 100644 --- a/Controllers/AsusAuraUSBController/AsusAuraMonitorController.cpp +++ b/Controllers/AsusAuraUSBController/AsusAuraMonitorController.cpp @@ -12,10 +12,11 @@ #include #include "LogManager.h" -AuraMonitorController::AuraMonitorController(hid_device* dev_handle, const char* path) +AuraMonitorController::AuraMonitorController(hid_device* dev_handle, const char* path, uint16_t pid) { dev = dev_handle; location = path; + device_pid = pid; } AuraMonitorController::~AuraMonitorController() @@ -44,6 +45,27 @@ std::string AuraMonitorController::GetSerialString() return(return_string); } +void AuraMonitorController::BeginUpdate() +{ + unsigned char usb_buf[8]; + + if (device_pid == AURA_ROG_PG32UQ_PID) + { + memset(usb_buf, 0x00, sizeof(usb_buf)); + + usb_buf[0x00] = 0x03; + usb_buf[0x01] = 0x02; + usb_buf[0x02] = 0xA1; + usb_buf[0x03] = 0x80; + + usb_buf[0x04] = 0x20; + hid_send_feature_report(dev, usb_buf, 8); + + usb_buf[0x04] = 0x30; + hid_send_feature_report(dev, usb_buf, 8); + } +} + void AuraMonitorController::UpdateLed ( int led, @@ -58,7 +80,7 @@ void AuraMonitorController::UpdateLed usb_buf[0x00] = 0x03; usb_buf[0x01] = 0x02; - usb_buf[0x02] = 0xa1; + usb_buf[0x02] = 0xA1; usb_buf[0x03] = 0x80; usb_buf[0x04] = 16 + led * 3; @@ -85,9 +107,9 @@ void AuraMonitorController::ApplyChanges() usb_buf[0x00] = 0x03; usb_buf[0x01] = 0x02; - usb_buf[0x02] = 0xa1; + usb_buf[0x02] = 0xA1; usb_buf[0x03] = 0x80; - usb_buf[0x04] = 0xa0; + usb_buf[0x04] = 0xA0; usb_buf[0x05] = 0x01; hid_send_feature_report(dev, usb_buf, 8); diff --git a/Controllers/AsusAuraUSBController/AsusAuraMonitorController.h b/Controllers/AsusAuraUSBController/AsusAuraMonitorController.h index 1b320006..a5fd698f 100644 --- a/Controllers/AsusAuraUSBController/AsusAuraMonitorController.h +++ b/Controllers/AsusAuraUSBController/AsusAuraMonitorController.h @@ -13,18 +13,28 @@ #pragma once +enum +{ + AURA_ROG_STRIX_XG27AQ_PID = 0x198C, + AURA_ROG_PG32UQ_PID = 0x19B9, +}; + + class AuraMonitorController { public: - AuraMonitorController(hid_device* dev_handle, const char* path); + AuraMonitorController(hid_device* dev_handle, const char* path, uint16_t pid); virtual ~AuraMonitorController(); std::string GetDeviceLocation(); std::string GetSerialString(); + void BeginUpdate(); void UpdateLed(int led, unsigned char red, unsigned char green, unsigned char blue); void ApplyChanges(); + uint16_t device_pid; + private: hid_device* dev; std::string location; diff --git a/Controllers/AsusAuraUSBController/AsusAuraUSBControllerDetect.cpp b/Controllers/AsusAuraUSBController/AsusAuraUSBControllerDetect.cpp index 74221068..de3d9754 100644 --- a/Controllers/AsusAuraUSBController/AsusAuraUSBControllerDetect.cpp +++ b/Controllers/AsusAuraUSBController/AsusAuraUSBControllerDetect.cpp @@ -65,6 +65,7 @@ \*-----------------------------------------------------------------*/ #define AURA_ROG_STRIX_XG27AQ_PID 0x198C +#define AURA_ROG_PG32UQ_PID 0x19B9 /*-----------------------------------------------------------------*\ | HEADSETSTANDS | @@ -253,7 +254,7 @@ void DetectAsusAuraUSBMonitor(hid_device_info* info, const std::string& name) if(dev) { - AuraMonitorController* controller = new AuraMonitorController(dev, info->path); + AuraMonitorController* controller = new AuraMonitorController(dev, info->path, info->product_id); RGBController_AuraMonitor* rgb_controller = new RGBController_AuraMonitor(controller); rgb_controller->name = name; ResourceManager::get()->RegisterRGBController(rgb_controller); @@ -326,6 +327,7 @@ REGISTER_HID_DETECTOR_PU("ASUS ROG Balteus Qi", DetectAs | MONITORS | \*-----------------------------------------------------------------*/ REGISTER_HID_DETECTOR_PU("ASUS ROG Strix XG27AQ", DetectAsusAuraUSBMonitor, AURA_USB_VID, AURA_ROG_STRIX_XG27AQ_PID, 0xFFA0, 1); +REGISTER_HID_DETECTOR_PU("ASUS ROG PG32UQ", DetectAsusAuraUSBMonitor, AURA_USB_VID, AURA_ROG_PG32UQ_PID, 0xFFA0, 1); /*-----------------------------------------------------------------*\ | OTHER | diff --git a/Controllers/AsusAuraUSBController/RGBController_AsusAuraMonitor.cpp b/Controllers/AsusAuraUSBController/RGBController_AsusAuraMonitor.cpp index b53a4560..07998712 100644 --- a/Controllers/AsusAuraUSBController/RGBController_AsusAuraMonitor.cpp +++ b/Controllers/AsusAuraUSBController/RGBController_AsusAuraMonitor.cpp @@ -79,6 +79,8 @@ void RGBController_AuraMonitor::ResizeZone(int /*zone*/, int /*new_size*/) void RGBController_AuraMonitor::DeviceUpdateLEDs() { + controller->BeginUpdate(); + for (int i = 0; i < 3; i++) { unsigned char red = RGBGetRValue(colors[i]); @@ -98,6 +100,8 @@ void RGBController_AuraMonitor::UpdateZoneLEDs(int /*zone*/) void RGBController_AuraMonitor::UpdateSingleLED(int led) { + controller->BeginUpdate(); + unsigned char red = RGBGetRValue(colors[led]); unsigned char green = RGBGetGValue(colors[led]); unsigned char blue = RGBGetBValue(colors[led]);