USB Component  Version 6.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-2014 ARM Germany GmbH. All rights reserved.
4  *------------------------------------------------------------------------------
5  * Name: rl_usb.h
6  * Purpose: USB User API
7  * Rev.: V6.00
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 
47 
49 } usbStatus;
50 
51 
52 // ==== USB Device Functions ====
53 
57 extern usbStatus USBD_Initialize (int8_t device);
58 
62 extern usbStatus USBD_Uninitialize (int8_t device);
63 
67 extern usbStatus USBD_Connect (int8_t device);
68 
72 extern usbStatus USBD_Disconnect (int8_t device);
73 
78 extern bool USBD_Configured (int8_t device);
79 
80 
81 // ==== USB Device Custom Class Functions ====
82 
83 #ifdef __DOXYGEN__
84 
85 // following functions are available for each instance of a Custom class.
86 // generic prefix USBD_CustomClassn is USBD_CustomClassn for Custom class instance 0.
87 
91 
95 
99 
105 void USBD_CustomClassn_EventEndpointStart (uint8_t ep_addr);
106 
112 void USBD_CustomClassn_EventEndpointStop (uint8_t ep_addr);
113 
122 usbdRequestStatus USBD_CustomClassn_Endpoint0_SetupPacketReceived (const USB_SETUP_PACKET *setup_packet, uint8_t **buf, int32_t *len);
123 
127 void USBD_CustomClassn_Endpoint0_SetupPacketProcessed (const USB_SETUP_PACKET *setup_packet);
128 
136 usbdRequestStatus USBD_CustomClassn_Endpoint0_OutDataReceived (int32_t len);
137 
145 usbdRequestStatus USBD_CustomClassn_Endpoint0_InDataSent (int32_t len);
146 
151 void USBD_CustomClassn_Endpoint1_Event (uint32_t event);
152 void USBD_CustomClassn_Endpoint2_Event (uint32_t event);
153 void USBD_CustomClassn_Endpoint3_Event (uint32_t event);
154 void USBD_CustomClassn_Endpoint4_Event (uint32_t event);
155 void USBD_CustomClassn_Endpoint5_Event (uint32_t event);
156 void USBD_CustomClassn_Endpoint6_Event (uint32_t event);
157 void USBD_CustomClassn_Endpoint7_Event (uint32_t event);
158 void USBD_CustomClassn_Endpoint8_Event (uint32_t event);
159 void USBD_CustomClassn_Endpoint9_Event (uint32_t event);
160 void USBD_CustomClassn_Endpoint10_Event (uint32_t event);
161 void USBD_CustomClassn_Endpoint11_Event (uint32_t event);
162 void USBD_CustomClassn_Endpoint12_Event (uint32_t event);
163 void USBD_CustomClassn_Endpoint13_Event (uint32_t event);
164 void USBD_CustomClassn_Endpoint14_Event (uint32_t event);
165 void USBD_CustomClassn_Endpoint15_Event (uint32_t event);
166 
167 #endif // __DOXYGEN
168 
177 extern usbStatus USBD_EndpointRead (int8_t device, uint8_t ep_addr, uint8_t *buf, uint32_t len);
178 
185 extern uint32_t USBD_EndpointReadGetResult (int8_t device, const uint8_t ep_addr);
186 
195 extern usbStatus USBD_EndpointWrite (int8_t device, uint8_t ep_addr, const uint8_t *buf, uint32_t len);
196 
203 extern uint32_t USBD_EndpointWriteGetResult (int8_t device, const uint8_t ep_addr);
204 
212 extern usbStatus USBD_EndpointStall (int8_t device, uint8_t ep_addr, bool stall);
213 
220 extern usbStatus USBD_EndpointAbort (int8_t device, uint8_t ep_addr);
221 
222 
223 // ==== USB Device Audio Device Functions ====
224 
225 #ifdef __DOXYGEN__
226 
227 // following functions are available for each instance of a ADC class.
228 // generic prefix USBD_ADCn is USBD_ADC0 for ADC class instance 0.
229 
232 void USBD_ADCn_Initialize (void);
233 
236 void USBD_ADCn_Uninitialize (void);
237 
238 #endif // __DOXYGEN
239 
247 extern int32_t USBD_ADC_ReadSample (int8_t instance, void *buf, int32_t num);
248 
256 extern int32_t USBD_ADC_WriteSample (int8_t instance, const uint8_t *buf, int32_t num);
257 
258 
259 // ==== USB Device Communication Device (Abstract Control Model) Functions ====
260 
261 #ifdef __DOXYGEN__
262 
263 // following functions are available for each instance of a CDC class.
264 // generic prefix USBD_CDCn is USBD_CDC0 for CDC class instance 0.
265 
268 void USBD_CDCn_ACM_Initialize (void);
269 
272 void USBD_CDCn_ACM_Uninitialize (void);
273 
276 void USBD_CDCn_ACM_Reset (void);
277 
282 bool USBD_CDCn_ACM_SetLineCoding (CDC_LINE_CODING *line_coding);
283 
288 bool USBD_CDCn_ACM_GetLineCoding (CDC_LINE_CODING *line_coding);
289 
296 bool USBD_CDCn_ACM_SetControlLineState (uint16_t state);
297 
298 #endif // __DOXYGEN
299 
305 extern int USBD_CDC_ACM_GetChar (int8_t instance);
306 
313 extern int USBD_CDC_ACM_PutChar (int8_t instance, int ch);
314 
322 extern int32_t USBD_CDC_ACM_ReadData (int8_t instance, uint8_t *buf, int32_t len);
323 
331 extern int32_t USBD_CDC_ACM_WriteData (int8_t instance, const uint8_t *buf, int32_t len);
332 
337 extern int32_t USBD_CDC_ACM_DataAvailable (int8_t instance);
338 
350 extern usbStatus USBD_CDC_ACM_Notify (int8_t instance, uint16_t state);
351 
357 extern void USBD_CDC_ACM_DataReceived (int8_t instance, int32_t len);
358 
363 extern void USBD_CDC_ACM_DataSent (int8_t instance);
364 
365 
366 // ==== USB Device Human Interface Device Functions ====
367 
368 #ifdef __DOXYGEN__
369 
370 // following functions are available for each instance of a HID class.
371 // generic prefix USBD_HIDn is USBD_HID0 for HID class instance 0.
372 
375 void USBD_HIDn_Initialize (void);
376 
379 void USBD_HIDn_Uninitialize (void);
380 
394 int32_t USBD_HIDn_GetReport (uint8_t rtype, uint8_t req, uint8_t rid, uint8_t *buf);
395 
408 bool USBD_HIDn_SetReport (uint8_t rtype, uint8_t req, uint8_t rid, const uint8_t *buf, int32_t len);
409 
410 #endif // __DOXYGEN
411 
418 extern usbStatus USBD_HID_GetReportTrigger (int8_t instance, uint8_t rid, const uint8_t *buf, int32_t len);
419 
420 
421 #ifdef __DOXYGEN__
422 
423 // ==== USB Device Mass Storage Device Functions ====
424 
425 // following functions are available for each instance of a MSC class.
426 // generic prefix USBD_MSCn is USBD_MSC0 for MSC class instance 0.
427 
430 void USBD_MSCn_Initialize (void);
431 
434 void USBD_MSCn_Uninitialize (void);
435 
442 bool USBD_MSCn_Read (uint32_t lba, uint16_t cnt, uint8_t *buf);
443 
450 bool USBD_MSCn_Write (uint32_t lba, uint16_t cnt, const uint8_t *buf);
451 
452 #endif // __DOXYGEN
453 
454 
455 // ==== USB Host Functions ====
456 
460 extern usbStatus USBH_Initialize (uint8_t ctrl);
461 
465 extern usbStatus USBH_Uninitialize (uint8_t ctrl);
466 
470 extern usbStatus USBH_GetDeviceStatus (int8_t device);
471 
472 
473 // ==== USB Host Mass Storage Functions ====
474 
478 extern usbStatus USBH_MSC_GetDeviceStatus (int8_t instance);
479 
486 extern usbStatus USBH_MSC_Read (int8_t instance, uint32_t lba, uint16_t cnt, uint8_t *buf);
487 
494 extern usbStatus USBH_MSC_Write (int8_t instance, uint32_t lba, uint16_t cnt, const uint8_t *buf);
495 
501 extern usbStatus USBH_MSC_ReadCapacity (int8_t instance, uint32_t *block_count, uint32_t *block_size);
502 
503 
504 // ==== USB Host Human Interface Device Functions ====
505 
509 extern usbStatus USBH_HID_GetDeviceStatus (int8_t instance);
510 
518 extern int32_t USBH_HID_Read (int8_t instance, uint8_t *buf, int32_t len);
519 
527 extern int32_t USBH_HID_Write (int8_t instance, const uint8_t *buf, int32_t len);
528 
534 extern int USBH_HID_GetKeyboardKey (int8_t instance);
535 
537 typedef struct _usbHID_MouseState {
538  uint8_t button;
539  int16_t x;
540  int16_t y;
542 
547 extern usbStatus USBH_HID_GetMouseState (int8_t instance, usbHID_MouseState *state);
548 
549 #ifdef __cplusplus
550 }
551 #endif
552 
553 #endif