Add Razer Charging Pad Chroma support, direct mode only for now

This commit is contained in:
Adam Honse 2021-01-29 22:10:16 -06:00
parent 271e98c733
commit fdf8d0a093
4 changed files with 64 additions and 1 deletions

View file

@ -62,6 +62,14 @@ RazerController::RazerController(hid_device* dev_handle, const char* path, unsig
dev_transaction_id = 0x1F;
break;
case RAZER_CHARGING_PAD_CHROMA_PID:
{
razer_report report = razer_create_device_mode_report(0x03, 0x00);
razer_usb_send(&report);
dev_transaction_id = 0x1F;
}
break;
case RAZER_GOLIATHUS_CHROMA_PID:
case RAZER_GOLIATHUS_CHROMA_EXTENDED_PID:
default:
@ -372,6 +380,16 @@ razer_report RazerController::razer_create_custom_frame_standard_matrix_report(u
return report;
}
razer_report RazerController::razer_create_device_mode_report(unsigned char mode, unsigned char param)
{
razer_report report = razer_create_report(0x00, 0x04, 0x02);
report.arguments[0] = mode;
report.arguments[1] = param;
return report;
}
razer_report RazerController::razer_create_mode_custom_extended_matrix_report()
{
struct razer_report report = razer_create_report(0x0F, 0x02, 0x0C);
@ -647,6 +665,10 @@ void RazerController::razer_set_custom_frame(unsigned char row_index, unsigned c
report = razer_create_custom_frame_extended_matrix_report(row_index, start_col, stop_col, rgb_data);
break;
case RAZER_CHARGING_PAD_CHROMA_PID:
report = razer_create_custom_frame_extended_matrix_report(row_index, start_col, stop_col, rgb_data);
break;
/*-------------------------------------------------*\
| These devices use a linear report |
\*-------------------------------------------------*/
@ -793,6 +815,7 @@ void RazerController::razer_set_mode_custom()
case RAZER_KRAKEN_KITTY_EDITION_PID:
case RAZER_MOUSE_BUNGEE_V3_CHROMA_PID:
case RAZER_BASE_STATION_V2_CHROMA_PID:
case RAZER_CHARGING_PAD_CHROMA_PID:
report = razer_create_mode_custom_extended_matrix_report();
break;

View file

@ -176,6 +176,7 @@ private:
razer_report razer_create_custom_frame_linear_report(unsigned char start_col, unsigned char stop_col, unsigned char* rgb_data);
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_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);

View file

@ -121,6 +121,7 @@ REGISTER_HID_DETECTOR_PU("Razer Naga Epic Chroma", Dete
\*-----------------------------------------------------------------------------------------------------*/
REGISTER_HID_DETECTOR_PU("Razer Base Station Chroma", DetectRazerControllers, RAZER_VID, RAZER_CHROMA_BASE_PID, 1, 2);
REGISTER_HID_DETECTOR_PU("Razer Base Station V2 Chroma", DetectRazerControllers, RAZER_VID, RAZER_BASE_STATION_V2_CHROMA_PID, 1, 2);
REGISTER_HID_DETECTOR( "Razer Charging Pad Chroma", DetectRazerControllers, RAZER_VID, RAZER_CHARGING_PAD_CHROMA_PID);
REGISTER_HID_DETECTOR_PU("Razer Chroma HDK", DetectRazerControllers, RAZER_VID, RAZER_CHROMA_HDK_PID, 1, 2);
REGISTER_HID_DETECTOR_PU("Razer Chroma Mug Holder", DetectRazerControllers, RAZER_VID, RAZER_CHROMA_MUG_PID, 1, 2);
REGISTER_HID_DETECTOR_PU("Razer Core", DetectRazerControllers, RAZER_VID, RAZER_CORE_PID, 1, 2);

View file

@ -148,6 +148,7 @@
#define RAZER_CHROMA_HDK_PID 0x0F09
#define RAZER_MOUSE_BUNGEE_V3_CHROMA_PID 0x0F1D
#define RAZER_BASE_STATION_V2_CHROMA_PID 0x0F20
#define RAZER_CHARGING_PAD_CHROMA_PID 0x0F26
typedef struct
{
@ -4790,6 +4791,42 @@ static const razer_device nommo_chroma_device =
0
};
/*-------------------------------------------------------------*\
| Razer Charging Pad Chroma |
| |
| Zone "LED Strip" |
| Linear |
| 10 LEDs |
| |
\*-------------------------------------------------------------*/
static const razer_zone charging_pad_chroma_zone =
{
"LED Strip",
ZONE_TYPE_LINEAR,
1,
10
};
static const razer_device charging_pad_chroma_device =
{
"Razer Charging Pad Chroma",
RAZER_CHARGING_PAD_CHROMA_PID,
DEVICE_TYPE_UNKNOWN,
true,
1,
10,
{
&charging_pad_chroma_zone,
NULL,
NULL,
NULL,
NULL,
NULL
},
NULL,
0
};
/*-------------------------------------------------------------------------*\
| DEVICE MASTER LIST |
\*-------------------------------------------------------------------------*/
@ -4900,5 +4937,6 @@ static const razer_device* device_list[] =
&chromahdk_device,
&base_station_device,
&nommo_pro_device,
&nommo_chroma_device
&nommo_chroma_device,
&charging_pad_chroma_device,
};