SHOW:
|
|
- or go back to the newest paste.
| 1 | static const U8 abReportDesc[] = {
| |
| 2 | 0x05, 0x01, // USAGE_PAGE (Generic Desktop) | |
| 3 | 0x09, 0x06, // USAGE (Keyboard) | |
| 4 | 0xa1, 0x01, // COLLECTION (Application) | |
| 5 | ||
| 6 | 0x05, 0x07, // USAGE_PAGE (Keyboard) | |
| 7 | 0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl) | |
| 8 | 0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI) | |
| 9 | 0x15, 0x00, // LOGICAL_MINIMUM (0) | |
| 10 | 0x25, 0x01, // LOGICAL_MAXIMUM (1) | |
| 11 | 0x75, 0x01, // REPORT_SIZE (1) | |
| 12 | 0x95, 0x08, // REPORT_COUNT (8) | |
| 13 | 0x81, 0x02, // INPUT (Data,Var,Abs) | |
| 14 | 0x95, 0x01, // REPORT_COUNT (1) | |
| 15 | 0x75, 0x08, // REPORT_SIZE (8) | |
| 16 | 0x81, 0x01, // INPUT (Cnst,Var,Abs) | |
| 17 | ||
| 18 | 0x95, 0x03, // REPORT_COUNT (5) | |
| 19 | 0x75, 0x01, // REPORT_SIZE (1) | |
| 20 | 0x05, 0x08, // USAGE_PAGE (LEDs) | |
| 21 | 0x19, 0x01, // USAGE_MINIMUM (Num Lock) | |
| 22 | 0x29, 0x03, // USAGE_MAXIMUM (Kana) Scroll Lock | |
| 23 | 0x91, 0x02, // OUTPUT (Data,Var,Abs) | |
| 24 | 0x95, 0x05, // REPORT_COUNT (1) | |
| 25 | 0x75, 0x01, // REPORT_SIZE (3) | |
| 26 | 0x91, 0x01, // OUTPUT (Cnst,Var,Abs) | |
| 27 | ||
| 28 | 0x95, 0x06, // REPORT_COUNT (6) | |
| 29 | 0x75, 0x08, // REPORT_SIZE (8) | |
| 30 | 0x15, 0x00, // LOGICAL_MINIMUM (0) | |
| 31 | - | 0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (101) |
| 31 | + | 0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (101) |
| 32 | 0x05, 0x07, // USAGE_PAGE (Keyboard) | |
| 33 | 0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated)) | |
| 34 | 0x29, 0x91, // USAGE_MAXIMUM (Keyboard Application) | |
| 35 | 0x81, 0x00, // INPUT (Data,Ary,Abs) | |
| 36 | 0xc0 // END_COLLECTION | |
| 37 | }; | |
| 38 | ||
| 39 | static const U8 abDescriptors [] = | |
| 40 | {
| |
| 41 | // | |
| 42 | // Device descriptor | |
| 43 | // | |
| 44 | 0x12, | |
| 45 | DESC_DEVICE, | |
| 46 | LE_WORD(0x0200), // bcdUSB | |
| 47 | - | 0x00, // bDeviceClass |
| 47 | + | 0x00, // bDeviceClass |
| 48 | - | 0x00, // bDeviceSubClass |
| 48 | + | 0x00, // bDeviceSubClass |
| 49 | - | 0x00, // bDeviceProtocol |
| 49 | + | 0x00, // bDeviceProtocol |
| 50 | MAX_PACKET_SIZE0, // bMaxPacketSize | |
| 51 | LE_WORD(0xFFFF), // idVendor | |
| 52 | LE_WORD(0x0003), // idProduct | |
| 53 | LE_WORD(0x0100), // bcdDevice | |
| 54 | - | 0x01, // iManufacturer |
| 54 | + | 0x01, // iManufacturer |
| 55 | - | 0x02, // iProduct |
| 55 | + | 0x02, // iProduct |
| 56 | - | 0x03, // iSerialNumber |
| 56 | + | 0x03, // iSerialNumber |
| 57 | - | 0x01, // bNumConfigurations |
| 57 | + | 0x01, // bNumConfigurations |
| 58 | ||
| 59 | // | |
| 60 | // Configuration descriptor (Len=9) | |
| 61 | // | |
| 62 | - | 0x09, // bLength |
| 62 | + | 0x09, // bLength |
| 63 | DESC_CONFIGURATION, // bDescriptorType | |
| 64 | - | LE_WORD(32+9+9+9+7), // wTotalLength |
| 64 | + | LE_WORD(32+9+9+9+7), // wTotalLength |
| 65 | - | 0x02, // bNumInterfaces* |
| 65 | + | 0x02, // bNumInterfaces* |
| 66 | - | 0x01, // bConfigurationValue |
| 66 | + | 0x01, // bConfigurationValue |
| 67 | - | 0x00, // iConfiguration |
| 67 | + | 0x00, // iConfiguration |
| 68 | - | 0xC0, // bmAttributes |
| 68 | + | 0xC0, // bmAttributes |
| 69 | - | 0x32, // bMaxPower |
| 69 | + | 0x32, // bMaxPower |
| 70 | ||
| 71 | // -- | |
| 72 | // Interface 0, Alternate Setting 0, MSC Class (Len=9) | |
| 73 | // | |
| 74 | 0x09, | |
| 75 | DESC_INTERFACE, | |
| 76 | - | 0x00, // bInterfaceNumber |
| 76 | + | 0x00, // bInterfaceNumber |
| 77 | - | 0x00, // bAlternateSetting |
| 77 | + | 0x00, // bAlternateSetting |
| 78 | - | 0x02, // bNumEndPoints |
| 78 | + | 0x02, // bNumEndPoints |
| 79 | - | 0x08, // bInterfaceClass = mass storage |
| 79 | + | 0x08, // bInterfaceClass = mass storage |
| 80 | - | 0x06, // bInterfaceSubClass = transparent SCSI |
| 80 | + | 0x06, // bInterfaceSubClass = transparent SCSI |
| 81 | - | 0x50, // bInterfaceProtocol = BOT |
| 81 | + | 0x50, // bInterfaceProtocol = BOT |
| 82 | - | 0x00, // iInterface |
| 82 | + | 0x00, // iInterface |
| 83 | ||
| 84 | // | |
| 85 | // EP (Len=7) | |
| 86 | // | |
| 87 | 0x07, | |
| 88 | DESC_ENDPOINT, | |
| 89 | - | MSC_BULK_IN_EP, // bEndpointAddress |
| 89 | + | MSC_BULK_IN_EP, // bEndpointAddress |
| 90 | - | 0x02, // bmAttributes = bulk |
| 90 | + | 0x02, // bmAttributes = bulk |
| 91 | LE_WORD(MAX_PACKET_SIZE), // wMaxPacketSize | |
| 92 | - | 0x00, // bInterval |
| 92 | + | 0x00, // bInterval |
| 93 | ||
| 94 | // | |
| 95 | // EP (Len=7) | |
| 96 | // | |
| 97 | 0x07, | |
| 98 | DESC_ENDPOINT, | |
| 99 | - | MSC_BULK_OUT_EP, // bEndpointAddress |
| 99 | + | MSC_BULK_OUT_EP, // bEndpointAddress |
| 100 | - | 0x02, // bmAttributes = bulk |
| 100 | + | 0x02, // bmAttributes = bulk |
| 101 | LE_WORD(MAX_PACKET_SIZE), // wMaxPacketSize | |
| 102 | - | 0x00, // bInterval |
| 102 | + | 0x00, // bInterval |
| 103 | ||
| 104 | // -- | |
| 105 | // Interface 1, Alternate Setting 0, HID Class (Len=9) | |
| 106 | // | |
| 107 | 0x09, | |
| 108 | DESC_INTERFACE, | |
| 109 | - | 0x01, // bInterfaceNumber* |
| 109 | + | 0x01, // bInterfaceNumber* |
| 110 | - | 0x00, // bAlternateSetting |
| 110 | + | 0x00, // bAlternateSetting |
| 111 | - | 0x01, // bNumEndPoints |
| 111 | + | 0x01, // bNumEndPoints |
| 112 | - | 0x03, // bInterfaceClass = HID |
| 112 | + | 0x03, // bInterfaceClass = HID |
| 113 | - | 0x00, // bInterfaceSubClass |
| 113 | + | 0x00, // bInterfaceSubClass |
| 114 | - | 0x01, // bInterfaceProtocol (keyboard) |
| 114 | + | 0x01, // bInterfaceProtocol (keyboard) |
| 115 | - | 0x00, // iInterface |
| 115 | + | 0x00, // iInterface |
| 116 | ||
| 117 | // | |
| 118 | // HID descriptor (Len=9) | |
| 119 | // | |
| 120 | 0x09, | |
| 121 | - | DESC_HID_HID, // bDescriptorType = HID |
| 121 | + | DESC_HID_HID, // bDescriptorType = HID |
| 122 | - | LE_WORD(0x0110), // bcdHID |
| 122 | + | LE_WORD(0x0110), // bcdHID |
| 123 | - | 0x00, // bCountryCode |
| 123 | + | 0x00, // bCountryCode |
| 124 | - | 0x01, // bNumDescriptors |
| 124 | + | 0x01, // bNumDescriptors |
| 125 | - | DESC_HID_REPORT, // bDescriptorType |
| 125 | + | DESC_HID_REPORT, // bDescriptorType |
| 126 | - | LE_WORD(sizeof(abReportDesc)), // wDescriptorLength |
| 126 | + | LE_WORD(sizeof(abReportDesc)), // wDescriptorLength |
| 127 | ||
| 128 | // EP descriptor (Len=7) | |
| 129 | 0x07, | |
| 130 | DESC_ENDPOINT, | |
| 131 | - | INTR_IN_EP, // bEndpointAddress |
| 131 | + | INTR_IN_EP, // bEndpointAddress |
| 132 | - | 0x03, // bmAttributes = INT |
| 132 | + | 0x03, // bmAttributes = INT |
| 133 | - | LE_WORD(8), // wMaxPacketSize [LE_WORD(MAX_PACKET_SIZE)] |
| 133 | + | LE_WORD(8), // wMaxPacketSize [LE_WORD(MAX_PACKET_SIZE)] |
| 134 | - | 0x20, // bInterval |
| 134 | + | 0x20, // bInterval |
| 135 | ||
| 136 | // | |
| 137 | // String descriptors | |
| 138 | // | |
| 139 | 0x04, | |
| 140 | DESC_STRING, | |
| 141 | LE_WORD(0x0409), | |
| 142 | ||
| 143 | - | 16+2, |
| 143 | + | 8+2, |
| 144 | DESC_STRING, | |
| 145 | - | 'M', 0, 'o', 0, 'b', 0, 'i', 0, 'l', 0, 'i', 0, 't', 0, 'y', 0, |
| 145 | + | 'A', 0, 'c', 0, 'm', 0, 'e', 0, |
| 146 | ||
| 147 | 18+2, | |
| 148 | DESC_STRING, | |
| 149 | - | 'T', 0, 'e', 0, 'l', 0, 'e', 0, 'b', 0, 'o', 0, 'a', 0, 'r', 0, 'd', 0, |
| 149 | + | 'T', 0, 'e', 0, 's', 0, 't', 0, 'b', 0, 'o', 0, 'a', 0, 'r', 0, 'd', 0, |
| 150 | ||
| 151 | 14+2, | |
| 152 | DESC_STRING, | |
| 153 | 'A', 0, 'D', 0, 'R', 0, '2', 0, '0', 0, '1', 0, '2', 0, | |
| 154 | ||
| 155 | // terminating zero | |
| 156 | 0 | |
| 157 | }; |