Add ViewSonic Elite Monitor (XG271QG)
This commit is contained in:
parent
e87d20b08d
commit
28c0bd8592
4 changed files with 67 additions and 51 deletions
|
|
@ -40,15 +40,15 @@ RGBController_XG270QG::RGBController_XG270QG(VS_XG270QG_Controller* controller_p
|
|||
Off.color_mode = MODE_COLORS_NONE;
|
||||
modes.push_back(Off);
|
||||
|
||||
mode StaticColor;
|
||||
StaticColor.name = "Static";
|
||||
StaticColor.value = VS_MODE_STATIC;
|
||||
StaticColor.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
|
||||
StaticColor.colors_min = 1;
|
||||
StaticColor.colors_max = 1;
|
||||
StaticColor.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
||||
StaticColor.colors.resize(1);
|
||||
modes.push_back(StaticColor);
|
||||
mode Custom;
|
||||
Custom.name = "Custom";
|
||||
Custom.value = VS_MODE_STATIC;
|
||||
Custom.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
|
||||
Custom.colors_min = 1;
|
||||
Custom.colors_max = 1;
|
||||
Custom.color_mode = MODE_COLORS_PER_LED;
|
||||
Custom.colors.resize(1);
|
||||
modes.push_back(Custom);
|
||||
|
||||
mode Rainbow;
|
||||
Rainbow.name = "Rainbow Wave";
|
||||
|
|
@ -60,10 +60,10 @@ RGBController_XG270QG::RGBController_XG270QG(VS_XG270QG_Controller* controller_p
|
|||
mode Breath;
|
||||
Breath.name = "Breathing";
|
||||
Breath.value = VS_MODE_BREATHING;
|
||||
Breath.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
|
||||
Breath.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
|
||||
Breath.colors_min = 1;
|
||||
Breath.colors_max = 1;
|
||||
Breath.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
||||
Breath.color_mode = MODE_COLORS_PER_LED;
|
||||
Breath.colors.resize(1);
|
||||
modes.push_back(Breath);
|
||||
|
||||
|
|
@ -77,10 +77,10 @@ RGBController_XG270QG::RGBController_XG270QG(VS_XG270QG_Controller* controller_p
|
|||
mode Elite;
|
||||
Elite.name = "Elite";
|
||||
Elite.value = VS_MODE_ELITE;
|
||||
Elite.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
|
||||
Elite.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
|
||||
Elite.colors_min = 1;
|
||||
Elite.colors_max = 1;
|
||||
Elite.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
||||
Elite.color_mode = MODE_COLORS_PER_LED;
|
||||
Elite.colors.resize(1);
|
||||
modes.push_back(Elite);
|
||||
|
||||
|
|
@ -107,34 +107,34 @@ RGBController_XG270QG::RGBController_XG270QG(VS_XG270QG_Controller* controller_p
|
|||
|
||||
void RGBController_XG270QG::SetupZones()
|
||||
{
|
||||
zone back_circle;
|
||||
back_circle.name = "Back Circle";
|
||||
back_circle.type = ZONE_TYPE_SINGLE;
|
||||
back_circle.leds_min = 1;
|
||||
back_circle.leds_max = 1;
|
||||
back_circle.leds_count = 1;
|
||||
back_circle.matrix_map = NULL;
|
||||
zones.push_back(back_circle);
|
||||
zone base;
|
||||
base.name = "Base";
|
||||
base.type = ZONE_TYPE_SINGLE;
|
||||
base.leds_min = 1;
|
||||
base.leds_max = 1;
|
||||
base.leds_count = 1;
|
||||
base.matrix_map = NULL;
|
||||
zones.push_back(base);
|
||||
|
||||
zone down;
|
||||
down.name = "Down Stuff";
|
||||
down.type = ZONE_TYPE_SINGLE;
|
||||
down.leds_min = 1;
|
||||
down.leds_max = 1;
|
||||
down.leds_count = 1;
|
||||
down.matrix_map = NULL;
|
||||
zones.push_back(down);
|
||||
|
||||
led back;
|
||||
back.name = "Back";
|
||||
back.value = 0x00;
|
||||
leds.push_back(back);
|
||||
zone rear;
|
||||
rear.name = "Rear";
|
||||
rear.type = ZONE_TYPE_SINGLE;
|
||||
rear.leds_min = 1;
|
||||
rear.leds_max = 1;
|
||||
rear.leds_count = 1;
|
||||
rear.matrix_map = NULL;
|
||||
zones.push_back(rear);
|
||||
|
||||
led d;
|
||||
d.name = "Down";
|
||||
d.value = 0x01;
|
||||
d.name = "Base";
|
||||
d.value = 0x00;
|
||||
leds.push_back(d);
|
||||
|
||||
led back;
|
||||
back.name = "Rear";
|
||||
back.value = 0x01;
|
||||
leds.push_back(back);
|
||||
|
||||
SetupColors();
|
||||
}
|
||||
|
||||
|
|
@ -147,9 +147,7 @@ void RGBController_XG270QG::ResizeZone(int /*zone*/, int /*new_size*/)
|
|||
|
||||
void RGBController_XG270QG::DeviceUpdateLEDs()
|
||||
{
|
||||
/*---------------------------------------------------------*\
|
||||
| This device does not include any per-LED modes |
|
||||
\*---------------------------------------------------------*/
|
||||
DeviceUpdateMode();
|
||||
}
|
||||
|
||||
void RGBController_XG270QG::UpdateZoneLEDs(int /*zone*/)
|
||||
|
|
@ -164,14 +162,28 @@ void RGBController_XG270QG::UpdateSingleLED(int /*led*/)
|
|||
|
||||
void RGBController_XG270QG::DeviceUpdateMode()
|
||||
{
|
||||
uint8_t r = 0;
|
||||
uint8_t g = 0;
|
||||
uint8_t b = 0;
|
||||
uint8_t r1 = 0;
|
||||
uint8_t g1 = 0;
|
||||
uint8_t b1 = 0;
|
||||
uint8_t r2 = 0;
|
||||
uint8_t g2 = 0;
|
||||
uint8_t b2 = 0;
|
||||
|
||||
if(modes[active_mode].flags & MODE_FLAG_HAS_MODE_SPECIFIC_COLOR)
|
||||
{
|
||||
r = RGBGetRValue(modes[active_mode].colors[0]);
|
||||
g = RGBGetGValue(modes[active_mode].colors[0]);
|
||||
b = RGBGetBValue(modes[active_mode].colors[0]);
|
||||
r1 = r2 = RGBGetRValue(modes[active_mode].colors[0]);
|
||||
g1 = g2 = RGBGetGValue(modes[active_mode].colors[0]);
|
||||
b1 = b2 = RGBGetBValue(modes[active_mode].colors[0]);
|
||||
}
|
||||
controller->SetMode(modes[active_mode].value, r, g, b);
|
||||
else if (modes[active_mode].flags & MODE_FLAG_HAS_PER_LED_COLOR)
|
||||
{
|
||||
r1 = RGBGetRValue(colors[0]);
|
||||
g1 = RGBGetGValue(colors[0]);
|
||||
b1 = RGBGetBValue(colors[0]);
|
||||
|
||||
r2 = RGBGetRValue(colors[1]);
|
||||
g2 = RGBGetGValue(colors[1]);
|
||||
b2 = RGBGetBValue(colors[1]);
|
||||
}
|
||||
controller->SetMode(modes[active_mode].value, r1, g1, b1, modes[active_mode].value, r2, g2, b2);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,9 +43,9 @@ std::string VS_XG270QG_Controller::GetSerial()
|
|||
return(StringUtils::wstring_to_string(serial_string));
|
||||
}
|
||||
|
||||
void VS_XG270QG_Controller::SetMode(uint8_t mode, uint8_t r, uint8_t g, uint8_t b)
|
||||
void VS_XG270QG_Controller::SetMode(uint8_t mode1, uint8_t r1, uint8_t g1, uint8_t b1, uint8_t mode2, uint8_t r2, uint8_t g2, uint8_t b2)
|
||||
{
|
||||
SendModeComplete(mode, r, g, b, mode, r, g, b);
|
||||
SendModeComplete(mode1, r1, g1, b1, mode2, r2, g2, b2);
|
||||
}
|
||||
|
||||
void VS_XG270QG_Controller::SendModeComplete
|
||||
|
|
|
|||
|
|
@ -38,7 +38,8 @@ public:
|
|||
std::string GetLocation();
|
||||
std::string GetSerial();
|
||||
|
||||
void SetMode(uint8_t mode, uint8_t r, uint8_t g, uint8_t b);
|
||||
void SetMode(uint8_t mode1, uint8_t r1, uint8_t g1, uint8_t b1,
|
||||
uint8_t mode2, uint8_t r2, uint8_t g2, uint8_t b2);
|
||||
|
||||
private:
|
||||
hid_device* dev;
|
||||
|
|
|
|||
|
|
@ -14,8 +14,10 @@
|
|||
#include "VS_XG270QG_Controller.h"
|
||||
#include "RGBController_XG270QG.h"
|
||||
|
||||
#define VIEWSONIC_VID 0x0416
|
||||
#define WINBOND_VID 0x0416
|
||||
#define VIEWSONIC_VID 0x0543
|
||||
#define VS_XG270QG_PID 0x5020
|
||||
#define VS_XG271QG_PID 0xA004
|
||||
|
||||
void DetectViewSonic(hid_device_info* info, const std::string& name)
|
||||
{
|
||||
|
|
@ -31,4 +33,5 @@ void DetectViewSonic(hid_device_info* info, const std::string& name)
|
|||
}
|
||||
}
|
||||
|
||||
REGISTER_HID_DETECTOR_IPU("ViewSonic Monitor XG270QG", DetectViewSonic, VIEWSONIC_VID, VS_XG270QG_PID, 0, 0xFF00, 1);
|
||||
REGISTER_HID_DETECTOR_IPU("ViewSonic Monitor XG270QG", DetectViewSonic, WINBOND_VID, VS_XG270QG_PID, 0, 0xFF00, 1);
|
||||
REGISTER_HID_DETECTOR_IP("ViewSonic Monitor XG271QG", DetectViewSonic, VIEWSONIC_VID, VS_XG271QG_PID, 0, 0x0001);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue