Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static const U8 abReportDesc[] = {
- 0x05, 0x01, // USAGE_PAGE (Generic Desktop)
- 0x09, 0x06, // USAGE (Keyboard)
- 0xa1, 0x01, // COLLECTION (Application)
- 0x05, 0x07, // USAGE_PAGE (Keyboard)
- 0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl)
- 0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI)
- 0x15, 0x00, // LOGICAL_MINIMUM (0)
- 0x25, 0x01, // LOGICAL_MAXIMUM (1)
- 0x75, 0x01, // REPORT_SIZE (1)
- 0x95, 0x08, // REPORT_COUNT (8)
- 0x81, 0x02, // INPUT (Data,Var,Abs)
- 0x95, 0x01, // REPORT_COUNT (1)
- 0x75, 0x08, // REPORT_SIZE (8)
- 0x81, 0x01, // INPUT (Cnst,Var,Abs)
- 0x95, 0x03, // REPORT_COUNT (5)
- 0x75, 0x01, // REPORT_SIZE (1)
- 0x05, 0x08, // USAGE_PAGE (LEDs)
- 0x19, 0x01, // USAGE_MINIMUM (Num Lock)
- 0x29, 0x03, // USAGE_MAXIMUM (Kana) Scroll Lock
- 0x91, 0x02, // OUTPUT (Data,Var,Abs)
- 0x95, 0x05, // REPORT_COUNT (1)
- 0x75, 0x01, // REPORT_SIZE (3)
- 0x91, 0x01, // OUTPUT (Cnst,Var,Abs)
- 0x95, 0x06, // REPORT_COUNT (6)
- 0x75, 0x08, // REPORT_SIZE (8)
- 0x15, 0x00, // LOGICAL_MINIMUM (0)
- 0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (101)
- 0x05, 0x07, // USAGE_PAGE (Keyboard)
- 0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated))
- 0x29, 0x91, // USAGE_MAXIMUM (Keyboard Application)
- 0x81, 0x00, // INPUT (Data,Ary,Abs)
- 0xc0 // END_COLLECTION
- };
- static const U8 abDescriptors [] =
- {
- //
- // Device descriptor
- //
- 0x12,
- DESC_DEVICE,
- LE_WORD(0x0200), // bcdUSB
- 0x00, // bDeviceClass
- 0x00, // bDeviceSubClass
- 0x00, // bDeviceProtocol
- MAX_PACKET_SIZE0, // bMaxPacketSize
- LE_WORD(0xFFFF), // idVendor
- LE_WORD(0x0003), // idProduct
- LE_WORD(0x0100), // bcdDevice
- 0x01, // iManufacturer
- 0x02, // iProduct
- 0x03, // iSerialNumber
- 0x01, // bNumConfigurations
- //
- // Configuration descriptor (Len=9)
- //
- 0x09, // bLength
- DESC_CONFIGURATION, // bDescriptorType
- LE_WORD(32+9+9+9+7), // wTotalLength
- 0x02, // bNumInterfaces*
- 0x01, // bConfigurationValue
- 0x00, // iConfiguration
- 0xC0, // bmAttributes
- 0x32, // bMaxPower
- // --
- // Interface 0, Alternate Setting 0, MSC Class (Len=9)
- //
- 0x09,
- DESC_INTERFACE,
- 0x00, // bInterfaceNumber
- 0x00, // bAlternateSetting
- 0x02, // bNumEndPoints
- 0x08, // bInterfaceClass = mass storage
- 0x06, // bInterfaceSubClass = transparent SCSI
- 0x50, // bInterfaceProtocol = BOT
- 0x00, // iInterface
- //
- // EP (Len=7)
- //
- 0x07,
- DESC_ENDPOINT,
- MSC_BULK_IN_EP, // bEndpointAddress
- 0x02, // bmAttributes = bulk
- LE_WORD(MAX_PACKET_SIZE), // wMaxPacketSize
- 0x00, // bInterval
- //
- // EP (Len=7)
- //
- 0x07,
- DESC_ENDPOINT,
- MSC_BULK_OUT_EP, // bEndpointAddress
- 0x02, // bmAttributes = bulk
- LE_WORD(MAX_PACKET_SIZE), // wMaxPacketSize
- 0x00, // bInterval
- // --
- // Interface 1, Alternate Setting 0, HID Class (Len=9)
- //
- 0x09,
- DESC_INTERFACE,
- 0x01, // bInterfaceNumber*
- 0x00, // bAlternateSetting
- 0x01, // bNumEndPoints
- 0x03, // bInterfaceClass = HID
- 0x00, // bInterfaceSubClass
- 0x01, // bInterfaceProtocol (keyboard)
- 0x00, // iInterface
- //
- // HID descriptor (Len=9)
- //
- 0x09,
- DESC_HID_HID, // bDescriptorType = HID
- LE_WORD(0x0110), // bcdHID
- 0x00, // bCountryCode
- 0x01, // bNumDescriptors
- DESC_HID_REPORT, // bDescriptorType
- LE_WORD(sizeof(abReportDesc)), // wDescriptorLength
- // EP descriptor (Len=7)
- 0x07,
- DESC_ENDPOINT,
- INTR_IN_EP, // bEndpointAddress
- 0x03, // bmAttributes = INT
- LE_WORD(8), // wMaxPacketSize [LE_WORD(MAX_PACKET_SIZE)]
- 0x20, // bInterval
- //
- // String descriptors
- //
- 0x04,
- DESC_STRING,
- LE_WORD(0x0409),
- 8+2,
- DESC_STRING,
- 'A', 0, 'c', 0, 'm', 0, 'e', 0,
- 18+2,
- DESC_STRING,
- 'T', 0, 'e', 0, 's', 0, 't', 0, 'b', 0, 'o', 0, 'a', 0, 'r', 0, 'd', 0,
- 14+2,
- DESC_STRING,
- 'A', 0, 'D', 0, 'R', 0, '2', 0, '0', 0, '1', 0, '2', 0,
- // terminating zero
- 0
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement