Send resize command to Razer ARGB controller when resizing zones

This commit is contained in:
Adam Honse
2021-04-12 00:17:33 -05:00
parent 516aefeaa6
commit 503cb7c7fe
3 changed files with 55 additions and 0 deletions

View File

@@ -192,6 +192,13 @@ void RGBController_RazerAddressable::ResizeZone(int zone, int new_size)
{
zones[zone].leds_count = new_size;
controller->SetAddressableZoneSizes(zones[0].leds_count,
zones[1].leds_count,
zones[2].leds_count,
zones[3].leds_count,
zones[4].leds_count,
zones[5].leds_count);
SetupZones();
}
}

View File

@@ -276,6 +276,13 @@ std::string RazerController::GetSerialString()
return(razer_get_serial());
}
void RazerController::SetAddressableZoneSizes(unsigned char zone_1_size, unsigned char zone_2_size, unsigned char zone_3_size, unsigned char zone_4_size, unsigned char zone_5_size, unsigned char zone_6_size)
{
razer_report report = razer_create_addressable_size_report(zone_1_size, zone_2_size, zone_3_size, zone_4_size, zone_5_size, zone_6_size);
razer_usb_send(&report);
}
void RazerController::SetLEDs(RGBColor* colors)
{
/*---------------------------------------------------------*\
@@ -447,6 +454,44 @@ razer_report RazerController::razer_create_response()
| Command report creation functions |
\*---------------------------------------------------------------------------------*/
razer_report RazerController::razer_create_addressable_size_report
(
unsigned char zone_1_size,
unsigned char zone_2_size,
unsigned char zone_3_size,
unsigned char zone_4_size,
unsigned char zone_5_size,
unsigned char zone_6_size
)
{
razer_report report = razer_create_report(0x0F, 0x08, 0x0D);
report.arguments[0] = 0x06;
report.arguments[1] = (zone_1_size == 0) ? 0x01 : 0x19;
report.arguments[2] = zone_1_size;
report.arguments[3] = (zone_2_size == 0) ? 0x02 : 0x19;
report.arguments[4] = zone_2_size;
report.arguments[5] = (zone_3_size == 0) ? 0x03 : 0x19;
report.arguments[6] = zone_3_size;
report.arguments[7] = (zone_4_size == 0) ? 0x04 : 0x19;
report.arguments[8] = zone_4_size;
report.arguments[9] = (zone_5_size == 0) ? 0x05 : 0x19;
report.arguments[10] = zone_5_size;
report.arguments[11] = (zone_6_size == 0) ? 0x06 : 0x19;
report.arguments[12] = zone_6_size;
return report;
}
razer_report RazerController::razer_create_addressable_startup_detect_report(bool enable)
{
razer_report report = razer_create_report(0x00, 0x44, 0x01);
report.arguments[0] = enable;
return report;
}
razer_report RazerController::razer_create_brightness_extended_matrix_report(unsigned char variable_storage, unsigned char led_id, unsigned char brightness)
{
razer_report report = razer_create_report(0x0F, 0x04, 0x03);

View File

@@ -170,6 +170,7 @@ public:
std::string GetSerialString();
void SetLEDs(RGBColor* colors);
void SetAddressableZoneSizes(unsigned char zone_1_size, unsigned char zone_2_size, unsigned char zone_3_size, unsigned char zone_4_size, unsigned char zone_5_size, unsigned char zone_6_size);
void SetModeBreathingRandom();
void SetModeBreathingOneColor(unsigned char red, unsigned char grn, unsigned char blu);
@@ -221,6 +222,8 @@ private:
razer_report razer_create_report(unsigned char command_class, unsigned char command_id, unsigned char data_size);
razer_report razer_create_response();
razer_report razer_create_addressable_size_report(unsigned char zone_1_size, unsigned char zone_2_size, unsigned char zone_3_size, unsigned char zone_4_size, unsigned char zone_5_size, unsigned char zone_6_size);
razer_report razer_create_addressable_startup_detect_report(bool enable);
razer_report razer_create_brightness_extended_matrix_report(unsigned char variable_storage, unsigned char led_id, unsigned char brightness);
razer_report razer_create_brightness_standard_report(unsigned char variable_storage, unsigned char led_id, unsigned char brightness);
razer_argb_report razer_create_custom_frame_argb_report(unsigned char row_index, unsigned char stop_col, unsigned char* rgb_data);