22 #ifndef COSA_USB_CORE_H 23 #define COSA_USB_CORE_H 29 #define CLEAR_FEATURE 1 32 #define GET_DESCRIPTOR 6 33 #define SET_DESCRIPTOR 7 34 #define GET_CONFIGURATION 8 35 #define SET_CONFIGURATION 9 36 #define GET_INTERFACE 10 37 #define SET_INTERFACE 11 40 #define REQUEST_HOSTTODEVICE 0x00 41 #define REQUEST_DEVICETOHOST 0x80 42 #define REQUEST_DIRECTION 0x80 44 #define REQUEST_STANDARD 0x00 45 #define REQUEST_CLASS 0x20 46 #define REQUEST_VENDOR 0x40 47 #define REQUEST_TYPE 0x60 49 #define REQUEST_DEVICE 0x00 50 #define REQUEST_INTERFACE 0x01 51 #define REQUEST_ENDPOINT 0x02 52 #define REQUEST_OTHER 0x03 53 #define REQUEST_RECIPIENT 0x03 55 #define REQUEST_DEVICETOHOST_CLASS_INTERFACE \ 56 (REQUEST_DEVICETOHOST + REQUEST_CLASS + REQUEST_INTERFACE) 58 #define REQUEST_HOSTTODEVICE_CLASS_INTERFACE \ 59 (REQUEST_HOSTTODEVICE + REQUEST_CLASS + REQUEST_INTERFACE) 62 #define CDC_SET_LINE_CODING 0x20 63 #define CDC_GET_LINE_CODING 0x21 64 #define CDC_SET_CONTROL_LINE_STATE 0x22 65 #define CDC_SEND_BREAK 0x23 67 #define MSC_RESET 0xFF 68 #define MSC_GET_MAX_LUN 0xFE 70 #define HID_GET_REPORT 0x01 71 #define HID_GET_IDLE 0x02 72 #define HID_GET_PROTOCOL 0x03 73 #define HID_SET_REPORT 0x09 74 #define HID_SET_IDLE 0x0A 75 #define HID_SET_PROTOCOL 0x0B 79 #define USB_DEVICE_DESC_SIZE 18 80 #define USB_CONFIGUARTION_DESC_SIZE 9 81 #define USB_INTERFACE_DESC_SIZE 9 82 #define USB_ENDPOINT_DESC_SIZE 7 84 #define USB_DEVICE_DESCRIPTOR_TYPE 1 85 #define USB_CONFIGURATION_DESCRIPTOR_TYPE 2 86 #define USB_STRING_DESCRIPTOR_TYPE 3 87 #define USB_INTERFACE_DESCRIPTOR_TYPE 4 88 #define USB_ENDPOINT_DESCRIPTOR_TYPE 5 90 #define USB_DEVICE_CLASS_COMMUNICATIONS 0x02 91 #define USB_DEVICE_CLASS_HUMAN_INTERFACE 0x03 92 #define USB_DEVICE_CLASS_STORAGE 0x08 93 #define USB_DEVICE_CLASS_VENDOR_SPECIFIC 0xFF 95 #define USB_CONFIG_POWERED_MASK 0x40 96 #define USB_CONFIG_BUS_POWERED 0x80 97 #define USB_CONFIG_SELF_POWERED 0xC0 98 #define USB_CONFIG_REMOTE_WAKEUP 0x20 101 #define USB_CONFIG_POWER_MA(mA) ((mA)/2) 104 #define USB_ENDPOINT_DIRECTION_MASK 0x80 105 #define USB_ENDPOINT_OUT(addr) ((addr) | 0x00) 106 #define USB_ENDPOINT_IN(addr) ((addr) | 0x80) 108 #define USB_ENDPOINT_TYPE_MASK 0x03 109 #define USB_ENDPOINT_TYPE_CONTROL 0x00 110 #define USB_ENDPOINT_TYPE_ISOCHRONOUS 0x01 111 #define USB_ENDPOINT_TYPE_BULK 0x02 112 #define USB_ENDPOINT_TYPE_INTERRUPT 0x03 114 #define TOBYTES(x) ((x) & 0xFF),(((x) >> 8) & 0xFF) 116 #define CDC_V1_10 0x0110 117 #define CDC_COMMUNICATION_INTERFACE_CLASS 0x02 119 #define CDC_CALL_MANAGEMENT 0x01 120 #define CDC_ABSTRACT_CONTROL_MODEL 0x02 121 #define CDC_HEADER 0x00 122 #define CDC_ABSTRACT_CONTROL_MANAGEMENT 0x02 123 #define CDC_UNION 0x06 124 #define CDC_CS_INTERFACE 0x24 125 #define CDC_CS_ENDPOINT 0x25 126 #define CDC_DATA_INTERFACE_CLASS 0x0A 128 #define MSC_SUBCLASS_SCSI 0x06 129 #define MSC_PROTOCOL_BULK_ONLY 0x50 131 #define HID_HID_DESCRIPTOR_TYPE 0x21 132 #define HID_REPORT_DESCRIPTOR_TYPE 0x22 133 #define HID_PHYSICAL_DESCRIPTOR_TYPE 0x23 274 #define D_DEVICE(_class,_subClass,_proto,_packetSize0,_vid,_pid,_version,_im,_ip,_is,_configs) \ 275 { 18, 1, 0x200, _class,_subClass,_proto,_packetSize0,_vid,_pid,_version,_im,_ip,_is,_configs } 277 #define D_CONFIG(_totalLength,_interfaces) \ 278 { 9, 2, _totalLength,_interfaces, 1, 0, USB_CONFIG_BUS_POWERED, USB_CONFIG_POWER_MA(500) } 280 #define D_INTERFACE(_n,_numEndpoints,_class,_subClass,_protocol) \ 281 { 9, 4, _n, 0, _numEndpoints, _class,_subClass, _protocol, 0 } 283 #define D_ENDPOINT(_addr,_attr,_packetSize, _interval) \ 284 { 7, 5, _addr,_attr,_packetSize, _interval } 286 #define D_IAD(_firstInterface, _count, _class, _subClass, _protocol) \ 287 { 8, 11, _firstInterface, _count, _class, _subClass, _protocol, 0 } 289 #define D_HIDREPORT(_descriptorLength) \ 290 { 9, 0x21, 0x1, 0x1, 0, 1, 0x22, _descriptorLength, 0 } 292 #define D_CDCCS(_subtype,_d0,_d1) { 5, 0x24, _subtype, _d0, _d1 } 293 #define D_CDCCS4(_subtype,_d0) { 4, 0x24, _subtype, _d0 }
CDCCSInterfaceDescriptor functionalDescriptor
CMFunctionalDescriptor callManagement
uint8_t bNumConfigurations
ACMFunctionalDescriptor controlManagement
CDCCSInterfaceDescriptor header
uint8_t interfaceSubClass