HEBOCON machine
Dependencies: mbed Motorfader Servo WT2003M03
USBHost/USBHostTypes.h@1:312b63cf250e, 2019-07-29 (annotated)
- Committer:
- abanum
- Date:
- Mon Jul 29 05:51:31 2019 +0000
- Revision:
- 1:312b63cf250e
- Parent:
- 0:a30ec7d94c3a
first pubrish
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
abanum | 0:a30ec7d94c3a | 1 | /* mbed USBHost Library |
abanum | 0:a30ec7d94c3a | 2 | * Copyright (c) 2006-2013 ARM Limited |
abanum | 0:a30ec7d94c3a | 3 | * |
abanum | 0:a30ec7d94c3a | 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
abanum | 0:a30ec7d94c3a | 5 | * you may not use this file except in compliance with the License. |
abanum | 0:a30ec7d94c3a | 6 | * You may obtain a copy of the License at |
abanum | 0:a30ec7d94c3a | 7 | * |
abanum | 0:a30ec7d94c3a | 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
abanum | 0:a30ec7d94c3a | 9 | * |
abanum | 0:a30ec7d94c3a | 10 | * Unless required by applicable law or agreed to in writing, software |
abanum | 0:a30ec7d94c3a | 11 | * distributed under the License is distributed on an "AS IS" BASIS, |
abanum | 0:a30ec7d94c3a | 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
abanum | 0:a30ec7d94c3a | 13 | * See the License for the specific language governing permissions and |
abanum | 0:a30ec7d94c3a | 14 | * limitations under the License. |
abanum | 0:a30ec7d94c3a | 15 | */ |
abanum | 0:a30ec7d94c3a | 16 | |
abanum | 0:a30ec7d94c3a | 17 | #ifndef USB_INC_H |
abanum | 0:a30ec7d94c3a | 18 | #define USB_INC_H |
abanum | 0:a30ec7d94c3a | 19 | |
abanum | 0:a30ec7d94c3a | 20 | #include "mbed.h" |
abanum | 0:a30ec7d94c3a | 21 | #include "toolchain.h" |
abanum | 0:a30ec7d94c3a | 22 | |
abanum | 0:a30ec7d94c3a | 23 | enum USB_TYPE { |
abanum | 0:a30ec7d94c3a | 24 | USB_TYPE_OK = 0, |
abanum | 0:a30ec7d94c3a | 25 | |
abanum | 0:a30ec7d94c3a | 26 | // completion code |
abanum | 0:a30ec7d94c3a | 27 | USB_TYPE_CRC_ERROR = 1, |
abanum | 0:a30ec7d94c3a | 28 | USB_TYPE_BIT_STUFFING_ERROR = 2, |
abanum | 0:a30ec7d94c3a | 29 | USB_TYPE_DATA_TOGGLE_MISMATCH_ERROR = 3, |
abanum | 0:a30ec7d94c3a | 30 | USB_TYPE_STALL_ERROR = 4, |
abanum | 0:a30ec7d94c3a | 31 | USB_TYPE_DEVICE_NOT_RESPONDING_ERROR = 5, |
abanum | 0:a30ec7d94c3a | 32 | USB_TYPE_PID_CHECK_FAILURE_ERROR = 6, |
abanum | 0:a30ec7d94c3a | 33 | USB_TYPE_UNEXPECTED_PID_ERROR = 7, |
abanum | 0:a30ec7d94c3a | 34 | USB_TYPE_DATA_OVERRUN_ERROR = 8, |
abanum | 0:a30ec7d94c3a | 35 | USB_TYPE_DATA_UNDERRUN_ERROR = 9, |
abanum | 0:a30ec7d94c3a | 36 | USB_TYPE_RESERVED = 9, |
abanum | 0:a30ec7d94c3a | 37 | USB_TYPE_RESERVED_ = 10, |
abanum | 0:a30ec7d94c3a | 38 | USB_TYPE_BUFFER_OVERRUN_ERROR = 12, |
abanum | 0:a30ec7d94c3a | 39 | USB_TYPE_BUFFER_UNDERRUN_ERROR = 13, |
abanum | 0:a30ec7d94c3a | 40 | |
abanum | 0:a30ec7d94c3a | 41 | // general usb state |
abanum | 0:a30ec7d94c3a | 42 | USB_TYPE_DISCONNECTED = 14, |
abanum | 0:a30ec7d94c3a | 43 | USB_TYPE_FREE = 15, |
abanum | 0:a30ec7d94c3a | 44 | USB_TYPE_IDLE = 16, |
abanum | 0:a30ec7d94c3a | 45 | USB_TYPE_PROCESSING = 17, |
abanum | 0:a30ec7d94c3a | 46 | |
abanum | 0:a30ec7d94c3a | 47 | USB_TYPE_ERROR = 18, |
abanum | 0:a30ec7d94c3a | 48 | }; |
abanum | 0:a30ec7d94c3a | 49 | |
abanum | 0:a30ec7d94c3a | 50 | |
abanum | 0:a30ec7d94c3a | 51 | enum ENDPOINT_DIRECTION { |
abanum | 0:a30ec7d94c3a | 52 | OUT = 1, |
abanum | 0:a30ec7d94c3a | 53 | IN |
abanum | 0:a30ec7d94c3a | 54 | }; |
abanum | 0:a30ec7d94c3a | 55 | |
abanum | 0:a30ec7d94c3a | 56 | enum ENDPOINT_TYPE { |
abanum | 0:a30ec7d94c3a | 57 | CONTROL_ENDPOINT = 0, |
abanum | 0:a30ec7d94c3a | 58 | ISOCHRONOUS_ENDPOINT, |
abanum | 0:a30ec7d94c3a | 59 | BULK_ENDPOINT, |
abanum | 0:a30ec7d94c3a | 60 | INTERRUPT_ENDPOINT |
abanum | 0:a30ec7d94c3a | 61 | }; |
abanum | 0:a30ec7d94c3a | 62 | |
abanum | 0:a30ec7d94c3a | 63 | #define AUDIO_CLASS 0x01 |
abanum | 0:a30ec7d94c3a | 64 | #define CDC_CLASS 0x02 |
abanum | 0:a30ec7d94c3a | 65 | #define HID_CLASS 0x03 |
abanum | 0:a30ec7d94c3a | 66 | #define MSD_CLASS 0x08 |
abanum | 0:a30ec7d94c3a | 67 | #define HUB_CLASS 0x09 |
abanum | 0:a30ec7d94c3a | 68 | #define SERIAL_CLASS 0x0A |
abanum | 0:a30ec7d94c3a | 69 | |
abanum | 0:a30ec7d94c3a | 70 | #define DEVICE_DESCRIPTOR (1) |
abanum | 0:a30ec7d94c3a | 71 | #define CONFIGURATION_DESCRIPTOR (2) |
abanum | 0:a30ec7d94c3a | 72 | #define INTERFACE_DESCRIPTOR (4) |
abanum | 0:a30ec7d94c3a | 73 | #define ENDPOINT_DESCRIPTOR (5) |
abanum | 0:a30ec7d94c3a | 74 | #define HID_DESCRIPTOR (33) |
abanum | 0:a30ec7d94c3a | 75 | |
abanum | 0:a30ec7d94c3a | 76 | // ----------- Control RequestType Fields ----------- |
abanum | 0:a30ec7d94c3a | 77 | #define USB_DEVICE_TO_HOST 0x80 |
abanum | 0:a30ec7d94c3a | 78 | #define USB_HOST_TO_DEVICE 0x00 |
abanum | 0:a30ec7d94c3a | 79 | #define USB_REQUEST_TYPE_CLASS 0x20 |
abanum | 0:a30ec7d94c3a | 80 | #define USB_REQUEST_TYPE_STANDARD 0x00 |
abanum | 0:a30ec7d94c3a | 81 | #define USB_RECIPIENT_DEVICE 0x00 |
abanum | 0:a30ec7d94c3a | 82 | #define USB_RECIPIENT_INTERFACE 0x01 |
abanum | 0:a30ec7d94c3a | 83 | #define USB_RECIPIENT_ENDPOINT 0x02 |
abanum | 0:a30ec7d94c3a | 84 | |
abanum | 0:a30ec7d94c3a | 85 | // -------------- USB Standard Requests -------------- |
abanum | 0:a30ec7d94c3a | 86 | #define GET_STATUS 0x00 |
abanum | 0:a30ec7d94c3a | 87 | #define SET_FEATURE 0x03 |
abanum | 0:a30ec7d94c3a | 88 | #define SET_ADDRESS 0x05 |
abanum | 0:a30ec7d94c3a | 89 | #define GET_DESCRIPTOR 0x06 |
abanum | 0:a30ec7d94c3a | 90 | #define SET_CONFIGURATION 0x09 |
abanum | 0:a30ec7d94c3a | 91 | #define SET_INTERFACE 0x0b |
abanum | 0:a30ec7d94c3a | 92 | #define CLEAR_FEATURE 0x01 |
abanum | 0:a30ec7d94c3a | 93 | |
abanum | 0:a30ec7d94c3a | 94 | // -------------- USB Descriptor Length -------------- |
abanum | 0:a30ec7d94c3a | 95 | #define DEVICE_DESCRIPTOR_LENGTH 0x12 |
abanum | 0:a30ec7d94c3a | 96 | #define CONFIGURATION_DESCRIPTOR_LENGTH 0x09 |
abanum | 0:a30ec7d94c3a | 97 | |
abanum | 0:a30ec7d94c3a | 98 | // PID |
abanum | 0:a30ec7d94c3a | 99 | #define DATA0 0x03 |
abanum | 0:a30ec7d94c3a | 100 | #define DATA1 0x0b |
abanum | 0:a30ec7d94c3a | 101 | #define ACK 0x02 |
abanum | 0:a30ec7d94c3a | 102 | #define STALL 0x0e |
abanum | 0:a30ec7d94c3a | 103 | #define NAK 0x0a |
abanum | 0:a30ec7d94c3a | 104 | |
abanum | 0:a30ec7d94c3a | 105 | #pragma pack(push,1) |
abanum | 0:a30ec7d94c3a | 106 | typedef struct { |
abanum | 0:a30ec7d94c3a | 107 | uint8_t bLength; |
abanum | 0:a30ec7d94c3a | 108 | uint8_t bDescriptorType; |
abanum | 0:a30ec7d94c3a | 109 | uint16_t bcdUSB; |
abanum | 0:a30ec7d94c3a | 110 | uint8_t bDeviceClass; |
abanum | 0:a30ec7d94c3a | 111 | uint8_t bDeviceSubClass; |
abanum | 0:a30ec7d94c3a | 112 | uint8_t bDeviceProtocol; |
abanum | 0:a30ec7d94c3a | 113 | uint8_t bMaxPacketSize; |
abanum | 0:a30ec7d94c3a | 114 | uint16_t idVendor; |
abanum | 0:a30ec7d94c3a | 115 | uint16_t idProduct; |
abanum | 0:a30ec7d94c3a | 116 | uint16_t bcdDevice; |
abanum | 0:a30ec7d94c3a | 117 | uint8_t iManufacturer; |
abanum | 0:a30ec7d94c3a | 118 | uint8_t iProduct; |
abanum | 0:a30ec7d94c3a | 119 | uint8_t iSerialNumber; |
abanum | 0:a30ec7d94c3a | 120 | uint8_t bNumConfigurations; |
abanum | 0:a30ec7d94c3a | 121 | } PACKED DeviceDescriptor; |
abanum | 0:a30ec7d94c3a | 122 | |
abanum | 0:a30ec7d94c3a | 123 | typedef struct { |
abanum | 0:a30ec7d94c3a | 124 | uint8_t bLength; |
abanum | 0:a30ec7d94c3a | 125 | uint8_t bDescriptorType; |
abanum | 0:a30ec7d94c3a | 126 | uint16_t wTotalLength; |
abanum | 0:a30ec7d94c3a | 127 | uint8_t bNumInterfaces; |
abanum | 0:a30ec7d94c3a | 128 | uint8_t bConfigurationValue; |
abanum | 0:a30ec7d94c3a | 129 | uint8_t iConfiguration; |
abanum | 0:a30ec7d94c3a | 130 | uint8_t bmAttributes; |
abanum | 0:a30ec7d94c3a | 131 | uint8_t bMaxPower; |
abanum | 0:a30ec7d94c3a | 132 | } PACKED ConfigurationDescriptor; |
abanum | 0:a30ec7d94c3a | 133 | |
abanum | 0:a30ec7d94c3a | 134 | typedef struct { |
abanum | 0:a30ec7d94c3a | 135 | uint8_t bLength; |
abanum | 0:a30ec7d94c3a | 136 | uint8_t bDescriptorType; |
abanum | 0:a30ec7d94c3a | 137 | uint8_t bInterfaceNumber; |
abanum | 0:a30ec7d94c3a | 138 | uint8_t bAlternateSetting; |
abanum | 0:a30ec7d94c3a | 139 | uint8_t bNumEndpoints; |
abanum | 0:a30ec7d94c3a | 140 | uint8_t bInterfaceClass; |
abanum | 0:a30ec7d94c3a | 141 | uint8_t bInterfaceSubClass; |
abanum | 0:a30ec7d94c3a | 142 | uint8_t bInterfaceProtocol; |
abanum | 0:a30ec7d94c3a | 143 | uint8_t iInterface; |
abanum | 0:a30ec7d94c3a | 144 | } InterfaceDescriptor; |
abanum | 0:a30ec7d94c3a | 145 | |
abanum | 0:a30ec7d94c3a | 146 | typedef struct { |
abanum | 0:a30ec7d94c3a | 147 | uint8_t bLength; |
abanum | 0:a30ec7d94c3a | 148 | uint8_t bDescriptorType; |
abanum | 0:a30ec7d94c3a | 149 | uint8_t bEndpointAddress; |
abanum | 0:a30ec7d94c3a | 150 | uint8_t bmAttributes; |
abanum | 0:a30ec7d94c3a | 151 | uint16_t wMaxPacketSize; |
abanum | 0:a30ec7d94c3a | 152 | uint8_t bInterval; |
abanum | 0:a30ec7d94c3a | 153 | } EndpointDescriptor; |
abanum | 0:a30ec7d94c3a | 154 | |
abanum | 0:a30ec7d94c3a | 155 | typedef struct { |
abanum | 0:a30ec7d94c3a | 156 | uint8_t bDescLength; |
abanum | 0:a30ec7d94c3a | 157 | uint8_t bDescriptorType; |
abanum | 0:a30ec7d94c3a | 158 | uint8_t bNbrPorts; |
abanum | 0:a30ec7d94c3a | 159 | uint16_t wHubCharacteristics; |
abanum | 0:a30ec7d94c3a | 160 | uint8_t bPwrOn2PwrGood; |
abanum | 0:a30ec7d94c3a | 161 | uint8_t bHubContrCurrent; |
abanum | 0:a30ec7d94c3a | 162 | uint8_t DeviceRemovable; |
abanum | 0:a30ec7d94c3a | 163 | uint8_t PortPweCtrlMak; |
abanum | 0:a30ec7d94c3a | 164 | } HubDescriptor; |
abanum | 0:a30ec7d94c3a | 165 | #pragma pack(pop) |
abanum | 0:a30ec7d94c3a | 166 | |
abanum | 0:a30ec7d94c3a | 167 | #endif |
abanum | 0:a30ec7d94c3a | 168 |