#include "switch2_descriptors.h" // Captured Pro Controller 2 descriptors: // https://github.com/ndeadly/switch2_controller_research/blob/d1c5a7f7ba298f83017fae84952a4e6d2ef8fc92/descriptors.md const uint8_t switch2_device_descriptor[] = { 0x12, 0x01, 0x00, 0x02, 0xEF, 0x02, 0x01, 0x40, 0x7E, 0x05, 0x69, 0x20, 0x00, 0x02, 0x01, 0x02, 0x03, 0x01, }; const size_t switch2_device_descriptor_length = sizeof(switch2_device_descriptor); // The capture has five interfaces and a 268-byte configuration. This explicit // experimental subset keeps captured HID/vendor interfaces 0-1 only, changes // wTotalLength to 80 and bNumInterfaces to 2, and zeros uncaptured string // indices iConfiguration and iInterface. Audio interfaces 2-4 are omitted. const uint8_t switch2_configuration_descriptor[] = { 0x09, 0x02, 0x50, 0x00, 0x02, 0x01, 0x00, 0xC0, 0xFA, 0x08, 0x0B, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x09, 0x04, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x00, 0x09, 0x21, 0x11, 0x01, 0x00, 0x01, 0x22, 0x61, 0x00, 0x07, 0x05, 0x81, 0x03, 0x40, 0x00, 0x04, 0x07, 0x05, 0x01, 0x03, 0x40, 0x00, 0x04, 0x08, 0x0B, 0x01, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x09, 0x04, 0x01, 0x00, 0x02, 0xFF, 0x00, 0x00, 0x00, 0x07, 0x05, 0x02, 0x02, 0x40, 0x00, 0x00, 0x07, 0x05, 0x82, 0x02, 0x40, 0x00, 0x00, }; const size_t switch2_configuration_descriptor_length = sizeof(switch2_configuration_descriptor); const uint8_t switch2_hid_report_descriptor[] = { 0x05, 0x01, 0x09, 0x05, 0xA1, 0x01, 0x85, 0x05, 0x05, 0xFF, 0x09, 0x01, 0x15, 0x00, 0x26, 0xFF, 0x00, 0x95, 0x3F, 0x75, 0x08, 0x81, 0x02, 0x85, 0x09, 0x09, 0x01, 0x95, 0x02, 0x81, 0x02, 0x05, 0x09, 0x19, 0x01, 0x29, 0x15, 0x25, 0x01, 0x95, 0x15, 0x75, 0x01, 0x81, 0x02, 0x95, 0x01, 0x75, 0x03, 0x81, 0x03, 0x05, 0x01, 0x09, 0x01, 0xA1, 0x00, 0x09, 0x30, 0x09, 0x31, 0x09, 0x33, 0x09, 0x35, 0x26, 0xFF, 0x0F, 0x95, 0x04, 0x75, 0x0C, 0x81, 0x02, 0xC0, 0x05, 0xFF, 0x09, 0x02, 0x26, 0xFF, 0x00, 0x95, 0x34, 0x75, 0x08, 0x81, 0x02, 0x85, 0x02, 0x09, 0x01, 0x95, 0x3F, 0x91, 0x02, 0xC0, }; const size_t switch2_hid_report_descriptor_length = sizeof(switch2_hid_report_descriptor); const uint8_t switch2_string_language[] = {0x09, 0x04}; const size_t switch2_string_language_length = sizeof(switch2_string_language); const uint8_t switch2_string_manufacturer[] = "Nintendo"; const size_t switch2_string_manufacturer_length = sizeof(switch2_string_manufacturer) - 1; const uint8_t switch2_string_product[] = "Switch 2 Pro Controller"; const size_t switch2_string_product_length = sizeof(switch2_string_product) - 1; const uint8_t switch2_string_serial[] = "00"; const size_t switch2_string_serial_length = sizeof(switch2_string_serial) - 1; static_assert(sizeof(switch2_device_descriptor) == 18); static_assert(sizeof(switch2_configuration_descriptor) == 80); static_assert(sizeof(switch2_hid_report_descriptor) == 97);