GD32F10x USB-Device: E:/USB Libraries/GD32_USB_Device_Driver/inc/usb_core.h Source File

GD32F103 Firmware

usb_core.h
Go to the documentation of this file.
1 
11 /* Define to prevent recursive inclusion -------------------------------------*/
12 #ifndef __GD32F10X_USB_CORE_H
13 #define __GD32F10X_USB_CORE_H
14 
15 /* Includes ------------------------------------------------------------------*/
16 #include "usb_buf.h"
17 #include "usbd_def.h"
18 
38 #define IER_MASK (CTLR_STIE | CTLR_PMOUIE | CTLR_WKUPIE | CTLR_SPSIE | CTLR_ERRIE | \
39  CTLR_SOFIE | CTLR_ESOFIE | CTLR_RSTIE)
40 
44 #define USB_EPTYPE_CONTROL 0
45 #define USB_EPTYPE_ISOC 1
46 #define USB_EPTYPE_BULK 2
47 #define USB_EPTYPE_INT 3
48 
52 #define USB_SNG_BUFTYPE 0
53 #define USB_DBL_BUFTYPE 1
54 
58 #define USB_CTRL_IDLE 0
59 #define USB_CTRL_SETUP 1
60 #define USB_CTRL_DATA_IN 2
61 #define USB_CTRL_DATA_OUT 3
62 #define USB_CTRL_STATUS_IN 4
63 #define USB_CTRL_STATUS_OUT 5
64 
68 #define USB_EP0_MAX_SIZE 64
69 
73 #define USB_STATUS_UNCONNECTED 0
74 #define USB_STATUS_DEFAULT 1
75 #define USB_STATUS_ADDRESSED 2
76 #define USB_STATUS_CONFIGURED 3
77 #define USB_STATUS_SUSPENDED 4
78 #define USB_STATUS_CONNECTED 5
79 
91 typedef enum
92 {
93  USB_OK = 0,
94  USB_FAIL,
95 }
97 
101 typedef struct USB_ep
102 {
103  /* Basic parameters */
104  uint8_t is_stall;
105  uint8_t is_dblbuf;
106  uint16_t bufaddress;
107  uint16_t buf0addr;
108  uint16_t buf1addr;
109  uint32_t maxpacket;
110  /* Transaction level parameters */
111  uint8_t *xfer_buf;
112  uint32_t xfer_len;
113  uint32_t xfer_count;
114 }
115 USB_EP;
116 
120 typedef struct usb_device_req
121 {
122  uint8_t bmRequestType;
123  uint8_t bRequest;
124  uint16_t wValue;
125  uint16_t wIndex;
126  uint16_t wLength;
127 }
129 
133 typedef struct _Device_Desc_cb
134 {
135  uint8_t *(*GetDeviceDescriptor) (uint8_t USBSpeed, uint16_t *len);
136  uint8_t *(*GetLangIDStrDescriptor) (uint8_t USBSpeed, uint16_t *len);
137  uint8_t *(*GetManufacturerStrDescriptor) (uint8_t USBSpeed, uint16_t *len);
138  uint8_t *(*GetProductStrDescriptor) (uint8_t USBSpeed, uint16_t *len);
139  uint8_t *(*GetSerialStrDescriptor) (uint8_t USBSpeed, uint16_t *len);
140  uint8_t *(*GetConfigurationStrDescriptor) (uint8_t USBSpeed, uint16_t *len);
141  uint8_t *(*GetInterfaceStrDescriptor) (uint8_t USBSpeed, uint16_t *len);
142 }
144 
148 typedef struct _Device_Class_cb
149 {
150  uint8_t (*Init) (void *pudev, uint8_t ConfigIndex);
151  uint8_t (*DeInit) (void *pudev, uint8_t ConfigIndex);
152  /* Control endpoints handle */
153  uint8_t (*GetClassDescriptor) (void *pudev, USB_DEVICE_REQ *req);
154  uint8_t (*ClassReqHandle) (void *pudev, USB_DEVICE_REQ *req);
155  uint8_t (*GetInterface) (void *pudev, USB_DEVICE_REQ *req);
156  uint8_t (*SetInterface) (void *pudev, USB_DEVICE_REQ *req);
157  uint8_t (*EP0_TxSent) (void *pudev);
158  uint8_t (*EP0_RxReady) (void *pudev);
159  /* Class specific endpoints handle */
160  uint8_t (*DataIn) (void *pudev, uint8_t EpID);
161  uint8_t (*DataOut) (void *pudev, uint8_t EpID);
162  uint8_t (*SOF) (void *pudev);
163  uint8_t *(*GetConfigDescriptor)(uint8_t USBSpeed, uint16_t *len);
164 #ifdef USB_SUPPORT_USER_STRING_DESC
165  uint8_t *(*GetUsrStrDescriptor)(uint8_t USBSpeed, uint8_t index, uint16_t *len);
166 #endif
167  uint8_t (*ClearFeature) (void *pudev, USB_DEVICE_REQ *req);
168 }
170 
174 typedef struct _USBD_USER_cb
175 {
176  void (*DeviceInit) (void);
177  void (*DeviceReset) (uint8_t USBSpeed);
178  void (*DeviceConfigured) (void);
179  void (*DeviceSuspended) (void);
180  void (*DeviceResumed) (void);
181 }
183 
187 typedef struct _UCD
188 {
189  /* Basic parameters */
190  uint8_t speed;
191  uint8_t device_cur_config;
192  uint8_t device_cur_state;
193  uint8_t device_cur_status;
194  uint8_t device_old_status;
195  uint8_t DevRemoteWakeup;
196  uint8_t setup_packet[8];
197  /* Device endpoints */
198  USB_EP in_ep[EP_COUNT];
199  USB_EP out_ep[EP_COUNT];
200  /* Device handle callback class */
201  USBD_Class_cb_TypeDef *class_cb;
202  USBD_User_cb_TypeDef *user_cb;
203  USBD_Desc_cb_TypeDef *desc_cb;
204 }
205 UCD_DEV, *UCD_PDEV;
206 
207 typedef struct USB_Device_handle
208 {
209  UCD_DEV dev;
210 }
212 
220 void DR_Init (void);
221 void DR_StopDevice (void);
222 
223 void USB_EP_SetAddress (USB_CORE_HANDLE *pudev, uint8_t Addr);
224 void USB_EP_BufConfig (USB_CORE_HANDLE *pudev, uint8_t EpAddr, uint8_t EpKind, uint32_t BufAddr);
225 void USB_EP_Init (USB_CORE_HANDLE *pudev, uint8_t EpAddr, uint8_t EpType, uint16_t EpMps);
226 void USB_EP_DeInit (USB_CORE_HANDLE *pudev, uint8_t EpAddr);
227 void USB_EP_Tx (USB_CORE_HANDLE *pudev, uint8_t EpAddr, uint8_t *pbuf, uint16_t BufLen);
228 void USB_EP_Rx (USB_CORE_HANDLE *pudev, uint8_t EpAddr, uint8_t *pbuf, uint16_t BufLen);
229 void USB_EP_Stall (USB_CORE_HANDLE *pudev, uint8_t EpID);
230 void USB_EP_ClrStall (USB_CORE_HANDLE *pudev, uint8_t EpID);
231 
232 uint8_t USB_EP_GetStatus (USB_CORE_HANDLE *pudev, uint8_t EpID);
233 
234 uint8_t USB_CtlTx (USB_CORE_HANDLE *pudev, uint8_t *pbuf, uint16_t Len);
235 uint8_t USB_CtlContinueTx (USB_CORE_HANDLE *pudev, uint8_t *pbuf, uint16_t Len);
236 uint8_t USB_CtlRx (USB_CORE_HANDLE *pudev, uint8_t *pbuf, uint16_t Len);
237 uint8_t USB_CtlContinueRx (USB_CORE_HANDLE *pudev, uint8_t *pbuf, uint16_t Len);
238 uint8_t USB_CtlTransmitStatus (USB_CORE_HANDLE *pudev);
239 uint8_t USB_CtlReceiveStatus (USB_CORE_HANDLE *pudev);
240 
241 uint16_t USB_GetRxCount (USB_CORE_HANDLE *pudev, uint8_t EpID);
242 
247 #endif /* __GD32F10X_USB_CORE_H */
248 
261 /************************ (C) COPYRIGHT 2014 GIGADEVICE *****END OF FILE****/
USB device class callback type define.
Definition: usb_core.h:148
void DR_StopDevice(void)
Device register configure when stop device.
Definition: usb_core.c:71
void USB_EP_Tx(USB_CORE_HANDLE *pudev, uint8_t EpAddr, uint8_t *pbuf, uint16_t BufLen)
Endpoint prepare to transmit data.
Definition: usb_core.c:346
uint8_t USB_CtlReceiveStatus(USB_CORE_HANDLE *pudev)
Receive status stage on the control pipe.
Definition: usb_core.c:584
struct usb_device_req USB_DEVICE_REQ
USB standard device request struct.
struct _UCD UCD_DEV
USB core driver type define.
void USB_EP_SetAddress(USB_CORE_HANDLE *pudev, uint8_t Addr)
Set USB device and endpoints address.
Definition: usb_core.c:465
USB_Status
USB operation status.
Definition: usb_core.h:91
USB endpoint struct.
Definition: usb_core.h:101
USB device descriptor callback type define.
Definition: usb_core.h:133
void USB_EP_DeInit(USB_CORE_HANDLE *pudev, uint8_t EpAddr)
Configure the endpoint when it is disabled.
Definition: usb_core.c:251
uint16_t USB_GetRxCount(USB_CORE_HANDLE *pudev, uint8_t EpID)
Get the received data length.
Definition: usb_core.c:601
void USB_EP_Init(USB_CORE_HANDLE *pudev, uint8_t EpAddr, uint8_t EpType, uint16_t EpMps)
Endpoint initialization.
Definition: usb_core.c:152
void USB_EP_ClrStall(USB_CORE_HANDLE *pudev, uint8_t EpID)
Clear endpoint stalled status.
Definition: usb_core.c:437
uint8_t USB_CtlTransmitStatus(USB_CORE_HANDLE *pudev)
Transmit status stage on the control pipe.
Definition: usb_core.c:570
struct USB_ep USB_EP
USB endpoint struct.
USB core driver type define.
Definition: usb_core.h:187
uint8_t USB_CtlRx(USB_CORE_HANDLE *pudev, uint8_t *pbuf, uint16_t Len)
Receive data on the control pipe.
Definition: usb_core.c:538
uint8_t USB_CtlTx(USB_CORE_HANDLE *pudev, uint8_t *pbuf, uint16_t Len)
Transmit data on the control pipe.
Definition: usb_core.c:504
void USB_EP_Stall(USB_CORE_HANDLE *pudev, uint8_t EpID)
Set an endpoint to STALL status.
Definition: usb_core.c:405
struct _USBD_USER_cb USBD_User_cb_TypeDef
USB user callback type define.
USB buffer interface functions prototypes.
struct _Device_Class_cb USBD_Class_cb_TypeDef
USB device class callback type define.
uint8_t USB_CtlContinueTx(USB_CORE_HANDLE *pudev, uint8_t *pbuf, uint16_t Len)
Continue transmitting data on the control pipe.
Definition: usb_core.c:522
struct _Device_Desc_cb USBD_Desc_cb_TypeDef
USB device descriptor callback type define.
void DR_Init(void)
Device register initialization.
Definition: usb_core.c:44
uint8_t USB_EP_GetStatus(USB_CORE_HANDLE *pudev, uint8_t EpID)
Get the endpoint status.
Definition: usb_core.c:485
USB user callback type define.
Definition: usb_core.h:174
void USB_EP_BufConfig(USB_CORE_HANDLE *pudev, uint8_t EpAddr, uint8_t EpKind, uint32_t BufAddr)
Configure buffer for endpoint.
Definition: usb_core.c:98
uint8_t USB_CtlContinueRx(USB_CORE_HANDLE *pudev, uint8_t *pbuf, uint16_t Len)
Continue receive data on the contrl pipe.
Definition: usb_core.c:556
USB standard device request struct.
Definition: usb_core.h:120
General defines for the usb device library.
void USB_EP_Rx(USB_CORE_HANDLE *pudev, uint8_t EpAddr, uint8_t *pbuf, uint16_t BufLen)
Endpoint prepare to receive data.
Definition: usb_core.c:309
Generated on Fri Feb 6 2015 14:56:35 for GD32F10x USB-Device by   doxygen 1.8.8