Archived
1
0

Fixing descriptor bugs

- Missing device qualifier descriptor
- Missing USB Debug descriptor (used by lsusb)
This commit is contained in:
Jacob Alexander 2014-09-28 16:42:43 -07:00
parent 5557c4189b
commit 9a85f92a43
2 changed files with 15 additions and 3 deletions

View File

@ -865,7 +865,7 @@ ISR( USB_COM_vect )
USBKeys_Idle_Config = (wValue >> 8); USBKeys_Idle_Config = (wValue >> 8);
USBKeys_Idle_Count = 0; USBKeys_Idle_Count = 0;
usb_send_in(); usb_send_in();
print("HID IDLE"); //print("HID IDLE");
return; return;
} }
if ( bRequest == HID_SET_PROTOCOL ) if ( bRequest == HID_SET_PROTOCOL )
@ -873,7 +873,7 @@ ISR( USB_COM_vect )
usb_wait_in_ready(); usb_wait_in_ready();
USBKeys_Protocol = wValue; // 0 - Boot Mode, 1 - NKRO Mode USBKeys_Protocol = wValue; // 0 - Boot Mode, 1 - NKRO Mode
usb_send_in(); usb_send_in();
print("HID SET"); //print("HID SET");
return; return;
} }
} }

View File

@ -273,6 +273,16 @@ static const uint8_t PROGMEM device_descriptor[] = {
1 // bNumConfigurations 1 // bNumConfigurations
}; };
// Specify only a single USB speed
static const uint8_t PROGMEM device_qualifier_descriptor[] = {
0
};
// Disable USB debug descriptor
static const uint8_t PROGMEM usb_debug_descriptor[] = {
0
};
// Keyboard Protocol 1, HID 1.11 spec, Appendix B, page 59-60 // Keyboard Protocol 1, HID 1.11 spec, Appendix B, page 59-60
static const uint8_t PROGMEM keyboard_hid_report_desc[] = { static const uint8_t PROGMEM keyboard_hid_report_desc[] = {
// Keyboard Collection // Keyboard Collection
@ -500,7 +510,7 @@ static const uint8_t PROGMEM config1_descriptor[CONFIG1_DESC_SIZE] = {
9, // bLength 9, // bLength
0x21, // bDescriptorType 0x21, // bDescriptorType
0x11, 0x01, // bcdHID 0x11, 0x01, // bcdHID
33, // bCountryCode - Setting to 0/Undefined 0, // bCountryCode - Setting to 0/Undefined
1, // bNumDescriptors 1, // bNumDescriptors
0x22, // bDescriptorType 0x22, // bDescriptorType
// wDescriptorLength // wDescriptorLength
@ -638,6 +648,8 @@ static const struct descriptor_list_struct {
} PROGMEM descriptor_list[] = { } PROGMEM descriptor_list[] = {
{0x0100, 0x0000, device_descriptor, sizeof(device_descriptor)}, {0x0100, 0x0000, device_descriptor, sizeof(device_descriptor)},
{0x0200, 0x0000, config1_descriptor, sizeof(config1_descriptor)}, {0x0200, 0x0000, config1_descriptor, sizeof(config1_descriptor)},
{0x0600, 0x0000, device_qualifier_descriptor, sizeof(device_qualifier_descriptor)},
{0x0A00, 0x0000, usb_debug_descriptor, sizeof(usb_debug_descriptor)},
{0x2200, KEYBOARD_INTERFACE, keyboard_hid_report_desc, sizeof(keyboard_hid_report_desc)}, {0x2200, KEYBOARD_INTERFACE, keyboard_hid_report_desc, sizeof(keyboard_hid_report_desc)},
{0x2100, KEYBOARD_INTERFACE, config1_descriptor + KEYBOARD_HID_DESC_OFFSET, 9}, {0x2100, KEYBOARD_INTERFACE, config1_descriptor + KEYBOARD_HID_DESC_OFFSET, 9},
{0x2200, KEYBOARD_NKRO_INTERFACE, keyboard_nkro_hid_report_desc, sizeof(keyboard_nkro_hid_report_desc)}, {0x2200, KEYBOARD_NKRO_INTERFACE, keyboard_nkro_hid_report_desc, sizeof(keyboard_nkro_hid_report_desc)},