Initial commit for the Logitech G633 to resolve #2911

* Adding the G633 PID to LogitechControllerDetect.cpp
* Registering the detector for the common controller
* Fixing the indexing swap issue for LogitechLightspeedController
* Removing the `bright_cycle_swap` hack and using the queried effects index to set the mode.value for each mode
This commit is contained in:
Chris
2022-12-06 10:38:39 +11:00
parent c2c9b3aa99
commit 612c809b75
6 changed files with 133 additions and 109 deletions

View File

@@ -178,6 +178,7 @@ void logitech_device::initialiseDevice()
{
feature_list.emplace(*page, feature_index);
RGB_feature_index = feature_index;
break;
}
}
@@ -346,7 +347,7 @@ uint8_t logitech_device::getFeatureIndex(uint16_t feature_page)
hid_read_timeout(dev_use2, response.buffer, response.size(), LOGITECH_PROTOCOL_TIMEOUT);
feature_index = response.data[0];
LOG_DEBUG("[%s] Feature Page %04X found @ index %02X - %02X %02X %02X %02X %02X %02X %02X %02X", device_name.c_str(), feature_page, feature_index,
response.data[0], response.data[1], response.data[2], response.data[3], response.data[4], response.data[5], response.data[6], response.data[7]);
}
@@ -707,7 +708,7 @@ uint8_t logitech_device::setDirectMode(bool direct)
return result;
}
uint8_t logitech_device::setMode(uint8_t mode, uint16_t speed, uint8_t zone, uint8_t red, uint8_t green, uint8_t blue, uint8_t brightness, bool bright_cycle_swap)
uint8_t logitech_device::setMode(uint8_t mode, uint16_t speed, uint8_t zone, uint8_t red, uint8_t green, uint8_t blue, uint8_t brightness)
{
/*-----------------------------------------------------------------*\
| Check the usage map for usage2 (0x11 Long FAP Message) then |
@@ -716,6 +717,7 @@ uint8_t logitech_device::setMode(uint8_t mode, uint16_t speed, uint8_t zone, uin
hid_device* dev_use2 = getDevice(2);
uint16_t feature_page = getFeaturePage(RGB_feature_index);
int result = 0;
LOGITECH_DEVICE_MODE fx = leds[zone].fx[mode].mode;
if(dev_use2)
{
@@ -738,31 +740,36 @@ uint8_t logitech_device::setMode(uint8_t mode, uint16_t speed, uint8_t zone, uin
set_mode.data[4] = blue;
speed *= 100;
if(mode == 1) //Static
switch(fx)
{
set_mode.data[5] = 0x02; //zone;
//set_mode.data[12] = 0x01; //Save to flash testing
}
else if(mode == 2) //Spectrum Cycle - LOGITECH_DEVICE_LED_SPECTRUM
{
if(bright_cycle_swap)
{
set_mode.data[1] = 3;
}
set_mode.data[7] = speed >> 8;
set_mode.data[8] = speed & 0xFF;
set_mode.data[9] = brightness;
}
else if(mode == 3) //Breathing - LOGITECH_DEVICE_LED_BREATHING
{
if(bright_cycle_swap)
{
set_mode.data[1] = 2;
}
set_mode.data[5] = speed >> 8;
set_mode.data[6] = speed & 0xFF;
//set_mode.data[7] = curve_type; //Value 0-6: Default, Sine, Square, Triangle, Sawtooth, Reverse_Sawtooth, Exponent
set_mode.data[8] = brightness;
case LOGITECH_DEVICE_LED_ON:
set_mode.data[5] = 0x02; //zone;
//set_mode.data[12] = 0x01; //Save to flash testing
break;
case LOGITECH_DEVICE_LED_SPECTRUM:
set_mode.data[7] = speed >> 8;
set_mode.data[8] = speed & 0xFF;
set_mode.data[9] = brightness;
break;
case LOGITECH_DEVICE_LED_BREATHING:
set_mode.data[5] = speed >> 8;
set_mode.data[6] = speed & 0xFF;
//set_mode.data[7] = curve_type; //Value 0-6: Default, Sine, Square, Triangle, Sawtooth, Reverse_Sawtooth, Exponent
set_mode.data[8] = brightness;
break;
/*-----------------------------------------------------*\
| Place holders for later implementation |
\*-----------------------------------------------------*/
case LOGITECH_DEVICE_LED_OFF:
case LOGITECH_DEVICE_LED_WAVE:
case LOGITECH_DEVICE_LED_STAR:
case LOGITECH_DEVICE_LED_RIPPLE:
case LOGITECH_DEVICE_LED_CUSTOM:
default:
break;
}
/*-----------------------------------------------------*\