Add random breathing mode to RazerController

This commit is contained in:
Adam Honse
2021-03-29 22:38:36 -05:00
parent a94b43ee3d
commit 9cab2437d2
3 changed files with 123 additions and 11 deletions

View File

@@ -37,16 +37,15 @@ RGBController_Razer::RGBController_Razer(RazerController* controller_ptr)
Static.colors.resize(1);
modes.push_back(Static);
// Breathing disabled, not yet implemented
//mode Breathing;
//Breathing.name = "Breathing";
//Breathing.value = RAZER_MODE_BREATHING;
//Breathing.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR;
//Breathing.color_mode = MODE_COLORS_MODE_SPECIFIC;
//Breathing.colors_min = 1;
//Breathing.colors_max = 2;
//Breathing.colors.resize(1);
//modes.push_back(Breathing);
mode Breathing;
Breathing.name = "Breathing";
Breathing.value = RAZER_MODE_BREATHING;
Breathing.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR;
Breathing.color_mode = MODE_COLORS_MODE_SPECIFIC;
Breathing.colors_min = 1;
Breathing.colors_max = 2;
Breathing.colors.resize(1);
modes.push_back(Breathing);
mode SpectrumCycle;
SpectrumCycle.name = "Spectrum Cycle";
@@ -213,6 +212,10 @@ void RGBController_Razer::DeviceUpdateMode()
break;
case RAZER_MODE_BREATHING:
if(modes[active_mode].color_mode == MODE_COLORS_RANDOM)
{
controller->SetModeBreathingRandom();
}
break;
case RAZER_MODE_SPECTRUM_CYCLE:

View File

@@ -206,6 +206,11 @@ void RazerController::SetLEDs(RGBColor* colors)
delete[] output_array;
}
void RazerController::SetModeBreathingRandom()
{
razer_set_mode_breathing_random();
}
void RazerController::SetModeOff()
{
razer_set_mode_none();
@@ -432,6 +437,27 @@ razer_report RazerController::razer_create_device_mode_report(unsigned char mode
return report;
}
razer_report RazerController::razer_create_mode_breathing_random_extended_matrix_report(unsigned char variable_storage, unsigned char led_id)
{
razer_report report = razer_create_report(0x0F, 0x02, 0x06);
report.arguments[0] = variable_storage;
report.arguments[1] = led_id;
report.arguments[2] = 0x02;
return report;
}
razer_report RazerController::razer_create_mode_breathing_random_standard_matrix_report(unsigned char variable_storage, unsigned char led_id)
{
razer_report report = razer_create_report(0x03, 0x0A, 0x08);
report.arguments[0] = 0x03;
report.arguments[1] = 0x03;
return report;
}
razer_report RazerController::razer_create_mode_custom_extended_matrix_report()
{
struct razer_report report = razer_create_report(0x0F, 0x02, 0x0C);
@@ -850,6 +876,82 @@ void RazerController::razer_set_device_mode(unsigned char device_mode)
razer_usb_send(&report);
}
void RazerController::razer_set_mode_breathing_random()
{
razer_report report;
switch(dev_pid)
{
/*-----------------------------------------------------*\
| These devices use an extended matrix report |
\*-----------------------------------------------------*/
/*-----------------*\
| Keyboards |
\*-----------------*/
case RAZER_BLACKWIDOW_2019_PID:
case RAZER_BLACKWIDOW_ELITE_PID:
case RAZER_BLACKWIDOW_ESSENTIAL_PID:
case RAZER_CYNOSA_CHROMA_PID:
//case RAZER_CYNOSA_CHROMA_PRO_PID:
case RAZER_CYNOSA_LITE_PID:
case RAZER_CYNOSA_V2_PID:
case RAZER_HUNTSMAN_PID:
case RAZER_HUNTSMAN_ELITE_PID:
//case RAZER_HUNTSMAN_MINI_PID:
case RAZER_HUNTSMAN_TE_PID:
case RAZER_ORNATA_CHROMA_PID:
case RAZER_ORNATA_CHROMA_V2_PID:
case RAZER_TARTARUS_V2_PID:
/*-----------------*\
| Mice |
\*-----------------*/
case RAZER_NAGA_CHROMA_PID:
case RAZER_NAGA_HEX_V2_PID:
/*-----------------*\
| Accessories |
\*-----------------*/
case RAZER_BASE_STATION_V2_CHROMA_PID:
case RAZER_CHARGING_PAD_CHROMA_PID:
case RAZER_CHROMA_BASE_PID:
case RAZER_CHROMA_HDK_PID:
case RAZER_FIREFLY_HYPERFLUX_PID:
case RAZER_FIREFLY_V2_PID:
case RAZER_GOLIATHUS_CHROMA_PID:
case RAZER_GOLIATHUS_CHROMA_EXTENDED_PID:
case RAZER_KRAKEN_KITTY_EDITION_PID:
case RAZER_MOUSE_BUNGEE_V3_CHROMA_PID:
//case RAZER_MOUSE_DOCK_PID:
case RAZER_NOMMO_CHROMA_PID:
case RAZER_NOMMO_PRO_PID:
report = razer_create_mode_breathing_random_extended_matrix_report(RAZER_STORAGE_NO_SAVE, dev_led_id);
break;
/*-----------------------------------------------------*\
| These devices use a standard matrix report |
\*-----------------------------------------------------*/
/*-----------------*\
| Keyboards |
\*-----------------*/
default:
case RAZER_BLACKWIDOW_CHROMA_PID:
case RAZER_BLACKWIDOW_CHROMA_TE_PID:
case RAZER_BLACKWIDOW_CHROMA_V2_PID:
/*-----------------*\
| Accessories |
\*-----------------*/
case RAZER_CHROMA_MUG_PID:
case RAZER_CORE_PID:
case RAZER_FIREFLY_PID:
report = razer_create_mode_breathing_random_standard_matrix_report(RAZER_STORAGE_NO_SAVE, dev_led_id);
break;
}
razer_usb_send(&report);
}
void RazerController::razer_set_mode_custom()
{
razer_report report;

View File

@@ -159,6 +159,9 @@ public:
void SetLEDs(RGBColor* colors);
void SetModeBreathingRandom();
void SetModeBreathingOneColor(unsigned char red, unsigned char grn, unsigned char blu);
void SetModeBreathingTwoColors(unsigned char r1, unsigned char g1, unsigned char b1, unsigned char r2, unsigned char g2, unsigned char b2);
void SetModeOff();
void SetModeSpectrumCycle();
void SetModeStatic(unsigned char red, unsigned char grn, unsigned char blu);
@@ -208,6 +211,8 @@ private:
razer_report razer_create_custom_frame_extended_matrix_report(unsigned char row_index, unsigned char start_col, unsigned char stop_col, unsigned char* rgb_data);
razer_report razer_create_custom_frame_standard_matrix_report(unsigned char row_index, unsigned char start_col, unsigned char stop_col, unsigned char* rgb_data);
razer_report razer_create_device_mode_report(unsigned char mode, unsigned char param);
razer_report razer_create_mode_breathing_random_extended_matrix_report(unsigned char variable_storage, unsigned char led_id);
razer_report razer_create_mode_breathing_random_standard_matrix_report(unsigned char variable_storage, unsigned char led_id);
razer_report razer_create_mode_custom_extended_matrix_report();
razer_report razer_create_mode_custom_standard_matrix_report(unsigned char variable_storage);
razer_report razer_create_mode_none_extended_matrix_report(unsigned char variable_storage, unsigned char led_id);
@@ -229,7 +234,9 @@ private:
void razer_set_device_mode(unsigned char device_mode);
void razer_set_mode_breathing();
void razer_set_mode_breathing_random();
void razer_set_mode_breathing_one_color(unsigned char red, unsigned char grn, unsigned char blu);
void razer_set_mode_breathing_two_colors(unsigned char r1, unsigned char g1, unsigned char b1, unsigned char r2, unsigned char g2, unsigned char b2);
void razer_set_mode_custom();
void razer_set_mode_none();
void razer_set_mode_spectrum_cycle();