| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #include "include.h"
- #include "usb_desc.h"
- #if USB_VENDOR_EN
- AT(.rodata.usb.desc)
- const uint8_t desc_itf_vendor[] = {
- //Interface Descriptor:
- 9, /* Num bytes of this descriptor */
- INTERFACE_DESCRIPTOR, /* Interface descriptor type */
- USB_VENDOR_ITF_INDEX, /* Interface Number*/
- 0, /* Alternate interface number */
- 2, /* Num endpoints of this interface */
- 0x03, /* Interface Sub Class: Human Interface Device */
- 0, /* Interface Sub Class: */
- 0, /* Class specific protocol: */
- 0, /* Index of Interface string descriptor */
- //HID Descriptor:
- 9, /* Num bytes of this descriptor */
- HID_DESCRIPTOR, /* HID Type */
- 0x11, 0x01, /* HID Class Specification compliance */
- 0x00, /* Country Code: none */
- 0x01, /* Number of descriptors to follow */
- HID_REPORT_DESCRIPTOR, /* Report descriptor type */
- BYTE0(VENDOR_REPORT_DESC_SIZE), /* Len of Report descriptor ,sizeof(desc_vendor_report) */
- BYTE1(VENDOR_REPORT_DESC_SIZE),
- //Endpoint Descriptor: (OUT)
- 0x07, /* Num bytes of this descriptor */
- ENDPOINT_DESCRIPTOR, /* Endpoint descriptor type */
- USB_VENDOR_EP_OUT_INDEX, /* Endpoint address: */
- EP_TYPE_INTR, /* Endpoint type: */
- BYTE0(VENDOR_EP_OUT_MAX_SIZE), /* Maximum packet size */
- BYTE1(VENDOR_EP_OUT_MAX_SIZE),
- 0x01, /* Poll */
- //Endpoint Descriptor: (IN)
- 0x07, /* Num bytes of this descriptor */
- ENDPOINT_DESCRIPTOR, /* Endpoint descriptor type */
- USB_VENDOR_EP_IN_INDEX | 0x80, /* Endpoint address: */
- EP_TYPE_INTR, /* Endpoint type: */
- BYTE0(VENDOR_EP_IN_MAX_SIZE), /* Maximum packet size */
- BYTE1(VENDOR_EP_IN_MAX_SIZE),
- 0x01, /* Poll */
- };
- //HID report
- AT(.rodata.usb.desc)
- const u8 desc_vendor_report[] = {
- 0x06, 0xAB, 0xFF, /* Usage Page (Vendor Defined) */
- 0x09, 0x00, /* Usage (Undefined) */
- 0xA1, 0x01, /* Collection */
- 0x85, USB_VENDOR_REPORT_ID_APP, /* Report ID (...) */
- 0x15, 0x00, /* Logical Minimum (0) */
- 0x25, 0xFF, /* Logical Maximum (255) */
- 0x19, 0x00, /* Usage Minimum (0) */
- 0x29, 0xFF, /* Usage Maximum (255) */
- 0x95, (VENDOR_EP_IN_MAX_SIZE-1), /* Report Count (64) */
- 0x75, 0x08, /* Report Size (8) */
- 0x81, 0x02, /* Input (Data, Variable, Absolute) */
- 0x19, 0x00, /* Usage Minimum (0) */
- 0x29, 0xFF, /* Usage Maximum (255) */
- 0x95, (VENDOR_EP_OUT_MAX_SIZE-1), /* Report Count (64) */
- 0x75, 0x08, /* Report Size (8) */
- 0x91, 0x02, /* Output (Data, Variable, Absolute) */
- 0xC0, /* End Collection */
- };
- /* Return the desc to the lib by rewriting this func */
- uint8_t *usb_vendor_itf_desc_get(uint8_t *length)
- {
- if (VENDOR_REPORT_DESC_SIZE != sizeof(desc_vendor_report)){
- printf("--->desc_hid_report_size_err: %d,%d\n", VENDOR_REPORT_DESC_SIZE, sizeof(desc_vendor_report));
- while(1);
- }
- *length = sizeof(desc_itf_vendor);
- return (u8 *)desc_itf_vendor;
- }
- uint8_t *usb_vendor_report_desc_get(uint8_t *length)
- {
- *length = sizeof(desc_vendor_report);
- return (u8 *)desc_vendor_report;
- }
- AT(.com_text.usb.vendor.desc)
- uint32_t usb_vendor_fmt_size_get(uint8_t report_id)
- {
- if (report_id == USB_VENDOR_REPORT_ID_APP) {
- return 64;
- }
- return 0;
- }
- #endif
|