Add ASUS ROG PG32UQ Monitor Support

This commit is contained in:
Toby Kao 2022-05-21 00:52:41 +00:00 committed by Adam Honse
parent 89cc3f4961
commit bcc89af4e9
4 changed files with 44 additions and 6 deletions

View file

@ -12,10 +12,11 @@
#include <cstring>
#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);

View file

@ -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;

View file

@ -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 |

View file

@ -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]);