USB Component  Version 5.0
MDK-Professional Middleware for USB Device and Host
 All Data Structures Functions Variables Enumerations Enumerator Groups Pages
rl_usb.h
1 /*------------------------------------------------------------------------------
2  * MDK Middleware - Component ::USB
3  * Copyright (c) 2004-2013 ARM Germany GmbH. All rights reserved.
4  *------------------------------------------------------------------------------
5  * Name: rl_usb.h
6  * Purpose: USB User API
7  * Rev.: V5.04
8  *----------------------------------------------------------------------------*/
9 
10 #ifndef __RL_USB_H__
11 #define __RL_USB_H__
12 
13 
14 #ifdef __cplusplus
15 extern "C" {
16 #endif
17 
18 #include <stdint.h>
19 #include <stdbool.h>
20 
21 
22 // ==== USB Constants and Defines ====
23 
25 typedef enum {
26  usbOK = 0,
27 
30 
31  usbThreadError = 0x10,
34 
46 
48 } usbStatus;
49 
50 
51 // ==== USB Device Functions ====
52 
56 extern usbStatus USBD_Initialize (int8_t device);
57 
61 extern usbStatus USBD_Uninitialize (int8_t device);
62 
66 extern usbStatus USBD_Connect (int8_t device);
67 
71 extern usbStatus USBD_Disconnect (int8_t device);
72 
77 extern bool USBD_Configured (int8_t device);
78 
79 
80 #ifdef __DOXYGEN__
81 
82 // ==== USB Device Audio Device Functions ====
83 
84 // following functions are available for each instance of a ADC class.
85 // generic prefix USBD_ADCn is USBD_ADC0 for ADC class instance 0.
86 
89 void USBD_ADCn_Initialize (void);
90 
93 void USBD_ADCn_Uninitialize (void);
94 
95 #endif // __DOXYGEN
96 
104 extern int32_t USBD_ADC_ReadSample (int8_t instance, void *buf, int32_t num);
105 
113 extern int32_t USBD_ADC_WriteSample (int8_t instance, const uint8_t *buf, int32_t num);
114 
115 
116 // ==== USB Device Communication Device (Abstract Control Model) Functions ====
117 
118 #ifdef __DOXYGEN__
119 
120 // following functions are available for each instance of a CDC class.
121 // generic prefix USBD_CDCn is USBD_CDC0 for CDC class instance 0.
122 
125 void USBD_CDCn_ACM_Initialize (void);
126 
129 void USBD_CDCn_ACM_Uninitialize (void);
130 
133 void USBD_CDCn_ACM_Reset (void);
134 
139 bool USBD_CDCn_ACM_SetLineCoding (CDC_LINE_CODING *line_coding);
140 
145 bool USBD_CDCn_ACM_GetLineCoding (CDC_LINE_CODING *line_coding);
146 
153 bool USBD_CDCn_ACM_SetControlLineState (uint16_t state);
154 
155 #endif // __DOXYGEN
156 
162 extern int USBD_CDC_ACM_GetChar (int8_t instance);
163 
170 extern int USBD_CDC_ACM_PutChar (int8_t instance, int ch);
171 
179 extern int32_t USBD_CDC_ACM_ReadData (int8_t instance, uint8_t *buf, int32_t len);
180 
188 extern int32_t USBD_CDC_ACM_WriteData (int8_t instance, const uint8_t *buf, int32_t len);
189 
194 extern int32_t USBD_CDC_ACM_DataAvailable (int8_t instance);
195 
207 extern usbStatus USBD_CDC_ACM_Notify (int8_t instance, uint16_t state);
208 
214 extern void USBD_CDC_ACM_DataReceived (int8_t instance, int32_t len);
215 
216 
217 // ==== USB Device Human Interface Device Functions ====
218 
219 #ifdef __DOXYGEN__
220 
221 // following functions are available for each instance of a HID class.
222 // generic prefix USBD_HIDn is USBD_HID0 for HID class instance 0.
223 
226 void USBD_HIDn_Initialize (void);
227 
230 void USBD_HIDn_Uninitialize (void);
231 
245 int32_t USBD_HIDn_GetReport (uint8_t rtype, uint8_t req, uint8_t rid, uint8_t *buf);
246 
259 bool USBD_HIDn_SetReport (uint8_t rtype, uint8_t req, uint8_t rid, const uint8_t *buf, int32_t len);
260 
261 #endif // __DOXYGEN
262 
269 extern usbStatus USBD_HID_GetReportTrigger (int8_t instance, uint8_t rid, const uint8_t *buf, int32_t len);
270 
271 
272 #ifdef __DOXYGEN__
273 
274 // ==== USB Device Mass Storage Device Functions ====
275 
276 // following functions are available for each instance of a MSC class.
277 // generic prefix USBD_MSCn is USBD_MSC0 for MSC class instance 0.
278 
281 void USBD_MSCn_Initialize (void);
282 
285 void USBD_MSCn_Uninitialize (void);
286 
293 bool USBD_MSCn_Read (uint32_t lba, uint16_t cnt, uint8_t *buf);
294 
301 bool USBD_MSCn_Write (uint32_t lba, uint16_t cnt, const uint8_t *buf);
302 
303 #endif // __DOXYGEN
304 
305 
306 // ==== USB Host Functions ====
307 
311 extern usbStatus USBH_Initialize (uint8_t ctrl);
312 
316 extern usbStatus USBH_Uninitialize (uint8_t ctrl);
317 
321 extern usbStatus USBH_GetDeviceStatus (int8_t device);
322 
323 
324 // ==== USB Host Mass Storage Functions ====
325 
329 extern usbStatus USBH_MSC_GetDeviceStatus (int8_t instance);
330 
337 extern usbStatus USBH_MSC_Read (int8_t instance, uint32_t lba, uint16_t cnt, uint8_t *buf);
338 
345 extern usbStatus USBH_MSC_Write (int8_t instance, uint32_t lba, uint16_t cnt, const uint8_t *buf);
346 
352 extern usbStatus USBH_MSC_ReadCapacity (int8_t instance, uint32_t *block_count, uint32_t *block_size);
353 
354 
355 // ==== USB Host Human Interface Device Functions ====
356 
360 extern usbStatus USBH_HID_GetDeviceStatus (int8_t instance);
361 
369 extern int32_t USBH_HID_Read (int8_t instance, uint8_t *buf, int32_t len);
370 
378 extern int32_t USBH_HID_Write (int8_t instance, const uint8_t *buf, int32_t len);
379 
385 extern int USBH_HID_GetKeyboardKey (int8_t instance);
386 
388 typedef struct _usbHID_MouseState {
389  uint8_t button;
390  int16_t x;
391  int16_t y;
393 
398 extern usbStatus USBH_HID_GetMouseState (int8_t instance, usbHID_MouseState *state);
399 
400 
401 #ifdef __cplusplus
402 }
403 #endif
404 
405 #endif