USB Component  Version 6.8
MDK Middleware for USB Device and Host Communication
 All Data Structures Functions Variables Enumerations Enumerator Groups Pages
rl_usb.h
1 /*------------------------------------------------------------------------------
2  * MDK Middleware - Component ::USB
3  * Copyright (c) 2004-2016 ARM Germany GmbH. All rights reserved.
4  *------------------------------------------------------------------------------
5  * Name: rl_usb.h
6  * Purpose: USB User API
7  * Rev.: V6.8.0
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 #include "usb_compiler.h"
21 #include "cmsis_os.h"
22 #include "usb_def.h"
23 #include "usb_cdc.h"
24 #include "usb_hid.h"
25 #include "usb_msc.h"
26 
27 
29 
31 typedef enum {
32  usbOK = 0,
33 
36 
37  usbThreadError = 0x10,
41 
54 
57 
59 } usbStatus;
60 
62 #ifdef __BIG_ENDIAN
63  #define U32_LE(v) (uint32_t)(__rev(v))
64  #define U16_LE(v) (uint16_t)(__rev(v) >> 16)
65  #define U32_BE(v) (uint32_t)(v)
66  #define U16_BE(v) (uint16_t)(v)
67 #else
68  #define U32_BE(v) (uint32_t)(__rev(v))
69  #define U16_BE(v) (uint16_t)(__rev(v) >> 16)
70  #define U32_LE(v) (uint32_t)(v)
71  #define U16_LE(v) (uint16_t)(v)
72 #endif
73 
74 // ==== USB Device Constants and Defines ====
75 
77 typedef enum {
83 
85 #define USBD_MSC_MEDIA_READY (1U)
86 #define USBD_MSC_MEDIA_PROTECTED (1U<<1)
87 
88 
89 typedef enum {
94 
95 /* USB Device State structure */
97 typedef struct {
98  uint32_t vbus : 1;
99  uint32_t speed : 2;
100  uint32_t active : 1;
101 } USBD_STATE;
103 
104 /* USB Host Constants and Defines */
105 
107 typedef enum {
108  USBH_NOTIFY_CONNECT = 0,
109  USBH_NOTIFY_DISCONNECT,
110  USBH_NOTIFY_READY,
111  USBH_NOTIFY_OVERCURRENT,
112  USBH_NOTIFY_REMOTE_WAKEUP,
113  USBH_NOTIFY_UNKNOWN_DEVICE,
114  USBH_NOTIFY_INSUFFICIENT_POWER,
115  USBH_NOTIFY_CONFIGURATION_FAILED,
116  USBH_NOTIFY_INITIALIZATION_FAILED
117 } USBH_NOTIFY;
118 
119 /* USB Host Pipe settings structure */
121 typedef struct {
122  uint32_t hw_handle;
123  uint8_t dev_addr;
124  uint8_t dev_speed;
125  uint8_t hub_addr;
126  uint8_t hub_port;
127  uint8_t bEndpointAddress;
128  uint8_t bmAttributes;
129  uint16_t wMaxPacketSize;
130  uint8_t bInterval;
131  uint8_t active;
132  uint16_t pad0;
133  uint32_t transferred;
134 } USBH_PIPE;
136 
137 /* USB Host Device Instance (DEV) structure */
139 typedef struct {
140  uint8_t ctrl;
141  uint8_t dev_addr;
142  uint8_t dev_speed;
143  uint8_t hub_addr;
144  uint8_t hub_port;
145  struct {
146  uint8_t configured : 1;
147  uint8_t initialized : 1;
148  uint8_t reserved : 6;
149  } state;
150  uint16_t max_packet_size;
151  uint16_t vid;
152  uint16_t pid;
153 
154  uint8_t class_custom;
155  uint8_t class_instance;
156  uint8_t class_driver;
157  uint8_t dev_desc_len;
158  uint16_t cfg_desc_len;
159  uint16_t pad0;
160  osThreadId recovery_thread_id;
161 } USBH_DEV;
163 
164 
165 /* USB Host externally defined variables */
166 
167 /* USB Host number of Custom Class (CLS) instances as defined in USBH_Config_Class.h file */
169 extern const uint8_t usbh_cls_num;
171 
172 
173 // ==== USB Device Functions ====
174 
175 
179 extern usbStatus USBD_Initialize (uint8_t device);
180 
184 extern usbStatus USBD_Uninitialize (uint8_t device);
185 
189 extern usbStatus USBD_Connect (uint8_t device);
190 
194 extern usbStatus USBD_Disconnect (uint8_t device);
195 
200 extern bool USBD_Configured (uint8_t device);
201 
205 extern USBD_STATE USBD_GetState (uint8_t device);
206 
207 #ifdef __DOXYGEN__
208 
209 // following functions are available for each instance of a Device.
210 // generic prefix USBD_Devicen is USBD_Device0 for Device instance 0.
211 
214 void USBD_Devicen_Initialize (void);
215 
218 void USBD_Devicen_Uninitialize (void);
219 
225 void USBD_Devicen_VbusChanged (bool level);
226 
229 void USBD_Devicen_Reset (void);
230 
234 
237 void USBD_Devicen_Suspended (void);
238 
241 void USBD_Devicen_Resumed (void);
242 
245 void USBD_Devicen_Enumerated (void);
246 
250 
254 
263 usbdRequestStatus USBD_Devicen_Endpoint0_SetupPacketReceived (const USB_SETUP_PACKET *setup_packet, uint8_t **buf, uint32_t *len);
264 
269 
277 usbdRequestStatus USBD_Devicen_Endpoint0_OutDataReceived (uint32_t len);
278 
286 usbdRequestStatus USBD_Devicen_Endpoint0_InDataSent (uint32_t len);
287 
288 #endif // __DOXYGEN
289 
290 // ==== USB Device Audio Device Functions ====
291 
292 #ifdef __DOXYGEN__
293 
294 // following functions are available for each instance of a ADC class.
295 // generic prefix USBD_ADCn is USBD_ADC0 for ADC class instance 0.
296 
299 void USBD_ADCn_Initialize (void);
300 
303 void USBD_ADCn_Uninitialize (void);
304 
307 void USBD_ADCn_PlayStart (void);
308 
311 void USBD_ADCn_PlayStop (void);
312 
322 void USBD_ADCn_SetSpeakerMute (uint8_t ch, bool on);
323 
331 void USBD_ADCn_SetSpeakerVolume (uint8_t ch, uint16_t vol);
332 
335 void USBD_ADCn_RecordStart (void);
336 
339 void USBD_ADCn_RecordStop (void);
340 
350 void USBD_ADCn_SetMicrophoneMute (uint8_t ch, bool on);
351 
359 void USBD_ADCn_SetMicrophoneVolume (uint8_t ch, uint16_t vol);
360 
363 void USBD_ADCn_ReceivedSamples (void);
364 
365 #endif // __DOXYGEN
366 
367 // Rename deprecated functions
368 #define USBD_ADC_SpeakerSetVolumeRange USBD_ADC_SetSpeakerVolumeRange
369 #define USBD_ADC_MicrophoneSetVolumeRange USBD_ADC_SetMicrophoneVolumeRange
370 
382 extern usbStatus USBD_ADC_SetSpeakerVolumeRange (uint8_t instance, uint8_t ch, uint16_t min, uint16_t max, uint16_t res, uint16_t cur);
383 
395 extern usbStatus USBD_ADC_SetMicrophoneVolumeRange (uint8_t instance, uint8_t ch, uint16_t min, uint16_t max, uint16_t res, uint16_t cur);
396 
400 extern uint32_t USBD_ADC_ReceivedSamplesAvailable (uint8_t instance);
401 
405 extern uint32_t USBD_ADC_WrittenSamplesPending (uint8_t instance);
406 
414 extern int32_t USBD_ADC_ReadSamples (uint8_t instance, void *buf, int32_t num);
415 
423 extern int32_t USBD_ADC_WriteSamples (uint8_t instance, const void *buf, int32_t num);
424 
425 
426 // ==== USB Device Communication Device (Abstract Control Model) Functions ====
427 
428 #ifdef __DOXYGEN__
429 
430 // following functions are available for each instance of a CDC class.
431 // generic prefix USBD_CDCn is USBD_CDC0 for CDC class instance 0.
432 
435 void USBD_CDCn_ACM_Initialize (void);
436 
439 void USBD_CDCn_ACM_Uninitialize (void);
440 
443 void USBD_CDCn_ACM_Reset (void);
444 
449 bool USBD_CDCn_ACM_SetLineCoding (const CDC_LINE_CODING *line_coding);
450 
455 bool USBD_CDCn_ACM_GetLineCoding (CDC_LINE_CODING *line_coding);
456 
463 bool USBD_CDCn_ACM_SetControlLineState (uint16_t state);
464 
468 void USBD_CDCn_ACM_DataReceived (uint32_t len);
469 
472 void USBD_CDCn_ACM_DataSent (void);
473 
476 void USBD_CDCn_NCM_Initialize (void);
477 
480 void USBD_CDCn_NCM_Uninitialize (void);
481 
484 void USBD_CDCn_NCM_Reset (void);
485 
488 void USBD_CDCn_NCM_Start (void);
489 
492 void USBD_CDCn_NCM_Stop (void);
493 
499 bool USBD_CDCn_NCM_SetEthernetMulticastFilters (const uint8_t *addr_list, uint16_t num_of_filters);
500 
507 bool USBD_CDCn_NCM_SetEthernetPowerManagementPatternFilter (uint16_t filter_number, const uint8_t *pattern_filter, uint16_t pattern_filter_size);
508 
514 bool USBD_CDCn_NCM_GetEthernetPowerManagementPatternFilter (uint16_t filter_number, uint16_t *pattern_active);
515 
520 bool USBD_CDCn_NCM_SetEthernetPacketFilter (uint16_t packet_filter_bitmap);
521 
527 bool USBD_CDCn_NCM_GetEthernetStatistic (uint16_t feature_selector, uint32_t *data);
528 
533 bool USBD_CDCn_NCM_GetNtbParameters (CDC_NCM_NTB_PARAM *ntb_params);
534 
539 bool USBD_CDCn_NCM_GetNetAddress (uint8_t *net_addr);
540 
545 bool USBD_CDCn_NCM_SetNetAddress (const uint8_t *net_addr);
546 
551 bool USBD_CDCn_NCM_GetNtbFormat (uint16_t *ntb_format);
552 
559 bool USBD_CDCn_NCM_SetNtbFormat (uint16_t ntb_format);
560 
565 bool USBD_CDCn_NCM_GetNtbInputSize (uint32_t *ntb_input_size);
566 
571 bool USBD_CDCn_NCM_SetNtbInputSize (uint32_t ntb_input_size);
572 
577 bool USBD_CDCn_NCM_GetMaxDatagramSize (uint16_t *max_datagram_size);
578 
583 bool USBD_CDCn_NCM_SetMaxDatagramSize (uint16_t max_datagram_size);
584 
589 bool USBD_CDCn_NCM_GetCrcMode (uint16_t *crc_mode);
590 
597 bool USBD_CDCn_NCM_SetCrcMode (uint16_t crc_mode);
598 
601 void USBD_CDCn_NCM_NTB_IN_Sent (void);
602 
606 
607 #endif // __DOXYGEN
608 
614 extern int USBD_CDC_ACM_GetChar (uint8_t instance);
615 
622 extern int USBD_CDC_ACM_PutChar (uint8_t instance, int ch);
623 
631 extern int32_t USBD_CDC_ACM_ReadData (uint8_t instance, uint8_t *buf, int32_t len);
632 
640 extern int32_t USBD_CDC_ACM_WriteData (uint8_t instance, const uint8_t *buf, int32_t len);
641 
646 extern int32_t USBD_CDC_ACM_DataAvailable (uint8_t instance);
647 
659 extern usbStatus USBD_CDC_ACM_Notify (uint8_t instance, uint16_t state);
660 
665 extern int32_t USBD_CDC_NCM_NTB_IN_Initialize (uint8_t instance);
666 
667 
673 extern int32_t USBD_CDC_NCM_NTB_IN_CreateNDP (uint8_t instance, uint8_t num_datagrams);
674 
681 extern int32_t USBD_CDC_NCM_NTB_IN_WriteDatagram (uint8_t instance, const uint8_t *buf, uint32_t len);
682 
687 extern int32_t USBD_CDC_NCM_NTB_IN_Send (uint8_t instance);
688 
694 extern int32_t USBD_CDC_NCM_NTB_IN_IsSent (uint8_t instance);
695 
701 extern int32_t USBD_CDC_NCM_NTB_OUT_IsReceived (uint8_t instance);
702 
707 extern int32_t USBD_CDC_NCM_NTB_OUT_Release (uint8_t instance);
708 
713 extern int32_t USBD_CDC_NCM_NTB_OUT_ProcessNDP (uint8_t instance);
714 
718 extern uint32_t USBD_CDC_NCM_NTB_OUT_GetDatagramSize (uint8_t instance);
719 
726 extern int32_t USBD_CDC_NCM_NTB_OUT_ReadDatagram (uint8_t instance, uint8_t *buf, uint32_t max_len);
727 
734 extern int32_t USBD_CDC_NCM_NTB_IN_RawSend (uint8_t instance, const uint8_t *buf, uint32_t len);
735 
739 extern uint32_t USBD_CDC_NCM_NTB_OUT_RawGetSize (uint8_t instance);
740 
747 extern int32_t USBD_CDC_NCM_NTB_OUT_RawReceive (uint8_t instance, uint8_t *buf, uint32_t max_len);
748 
756 extern int32_t USBD_CDC_NCM_Notify_NetworkConnection (uint8_t instance, uint16_t status);
757 
764 extern int32_t USBD_CDC_NCM_Notify_ConnectionSpeedChange (uint8_t instance, uint32_t us_bitrate, uint32_t ds_bitrate);
765 
766 // ==== USB Device Human Interface Device Functions ====
767 
768 #ifdef __DOXYGEN__
769 
770 // following functions are available for each instance of a HID class.
771 // generic prefix USBD_HIDn is USBD_HID0 for HID class instance 0.
772 
775 void USBD_HIDn_Initialize (void);
776 
779 void USBD_HIDn_Uninitialize (void);
780 
794 int32_t USBD_HIDn_GetReport (uint8_t rtype, uint8_t req, uint8_t rid, uint8_t *buf);
795 
808 bool USBD_HIDn_SetReport (uint8_t rtype, uint8_t req, uint8_t rid, const uint8_t *buf, int32_t len);
809 
810 #endif // __DOXYGEN
811 
818 extern usbStatus USBD_HID_GetReportTrigger (uint8_t instance, uint8_t rid, const uint8_t *buf, uint32_t len);
819 
820 
821 #ifdef __DOXYGEN__
822 
823 // ==== USB Device Mass Storage Device Functions ====
824 
825 // following functions are available for each instance of a MSC class.
826 // generic prefix USBD_MSCn is USBD_MSC0 for MSC class instance 0.
827 
830 void USBD_MSCn_Initialize (void);
831 
834 void USBD_MSCn_Uninitialize (void);
835 
841 bool USBD_MSCn_GetCacheInfo (uint32_t *buffer, uint32_t *size);
842 
848 bool USBD_MSCn_GetMediaCapacity (uint32_t *block_count, uint32_t *block_size);
849 
856 bool USBD_MSCn_Read (uint32_t lba, uint32_t cnt, uint8_t *buf);
857 
864 bool USBD_MSCn_Write (uint32_t lba, uint32_t cnt, const uint8_t *buf);
865 
874 uint32_t USBD_MSCn_CheckMedia (void);
875 
876 #endif // __DOXYGEN
877 
878 
879 // ==== USB Device Custom Class Functions ====
880 
881 #ifdef __DOXYGEN__
882 
883 // following functions are available for each instance of a Custom class.
884 // generic prefix USBD_CustomClassn is USBD_CustomClass0 for Custom class instance 0.
885 
888 void USBD_CustomClassn_Initialize (void);
889 
893 
896 void USBD_CustomClassn_Reset (void);
897 
903 void USBD_CustomClassn_EndpointStart (uint8_t ep_addr);
904 
910 void USBD_CustomClassn_EndpointStop (uint8_t ep_addr);
911 
920 usbdRequestStatus USBD_CustomClassn_Endpoint0_SetupPacketReceived (const USB_SETUP_PACKET *setup_packet, uint8_t **buf, uint32_t *len);
921 
926 
934 usbdRequestStatus USBD_CustomClassn_Endpoint0_OutDataReceived (uint32_t len);
935 
943 usbdRequestStatus USBD_CustomClassn_Endpoint0_InDataSent (uint32_t len);
944 
949 void USBD_CustomClassn_Endpoint1_Event (uint32_t event);
950 void USBD_CustomClassn_Endpoint2_Event (uint32_t event);
951 void USBD_CustomClassn_Endpoint3_Event (uint32_t event);
952 void USBD_CustomClassn_Endpoint4_Event (uint32_t event);
953 void USBD_CustomClassn_Endpoint5_Event (uint32_t event);
954 void USBD_CustomClassn_Endpoint6_Event (uint32_t event);
955 void USBD_CustomClassn_Endpoint7_Event (uint32_t event);
956 void USBD_CustomClassn_Endpoint8_Event (uint32_t event);
957 void USBD_CustomClassn_Endpoint9_Event (uint32_t event);
958 void USBD_CustomClassn_Endpoint10_Event (uint32_t event);
959 void USBD_CustomClassn_Endpoint11_Event (uint32_t event);
960 void USBD_CustomClassn_Endpoint12_Event (uint32_t event);
961 void USBD_CustomClassn_Endpoint13_Event (uint32_t event);
962 void USBD_CustomClassn_Endpoint14_Event (uint32_t event);
963 void USBD_CustomClassn_Endpoint15_Event (uint32_t event);
964 
965 #endif // __DOXYGEN
966 
975 extern usbStatus USBD_EndpointRead (uint8_t device, uint8_t ep_addr, uint8_t *buf, uint32_t len);
976 
983 extern uint32_t USBD_EndpointReadGetResult (uint8_t device, uint8_t ep_addr);
984 
993 extern usbStatus USBD_EndpointWrite (uint8_t device, uint8_t ep_addr, const uint8_t *buf, uint32_t len);
994 
1001 extern uint32_t USBD_EndpointWriteGetResult (uint8_t device, uint8_t ep_addr);
1002 
1010 extern usbStatus USBD_EndpointStall (uint8_t device, uint8_t ep_addr, bool stall);
1011 
1018 extern usbStatus USBD_EndpointAbort (uint8_t device, uint8_t ep_addr);
1019 
1020 
1021 // ==== USB Host Functions ====
1022 
1023 // Rename deprecated functions
1024 #define USBH_GetDeviceStatus USBH_Device_GetStatus
1025 
1029 extern usbStatus USBH_Initialize (uint8_t ctrl);
1030 
1034 extern usbStatus USBH_Uninitialize (uint8_t ctrl);
1035 
1040 extern usbStatus USBH_Port_Suspend (uint8_t ctrl, uint8_t port);
1041 
1046 extern usbStatus USBH_Port_Resume (uint8_t ctrl, uint8_t port);
1047 
1052 extern uint8_t USBH_Device_GetController (uint8_t device);
1053 
1058 extern uint8_t USBH_Device_GetPort (uint8_t device);
1059 
1063 extern usbStatus USBH_Device_GetStatus (uint8_t device);
1064 
1071 extern int32_t USBH_Device_GetSpeed (uint8_t device);
1072 
1077 extern uint8_t USBH_Device_GetAddress (uint8_t device);
1078 
1082 extern uint16_t USBH_Device_GetVID (uint8_t device);
1083 
1087 extern uint16_t USBH_Device_GetPID (uint8_t device);
1088 
1102 extern void USBH_Port_Notify (uint8_t ctrl, uint8_t port, USBH_NOTIFY notify);
1103 
1104 
1105 // ==== USB Host Mass Storage Functions ====
1106 
1107 // Rename deprecated functions
1108 #define USBH_MSC_GetDeviceStatus USBH_MSC_GetStatus
1109 
1113 extern void USBH_MSC_Initialize (uint8_t instance);
1114 
1118 extern void USBH_MSC_Uninitialize (uint8_t instance);
1119 
1124 extern uint8_t USBH_MSC_GetDevice (uint8_t instance);
1125 
1129 extern usbStatus USBH_MSC_GetStatus (uint8_t instance);
1130 
1137 extern usbStatus USBH_MSC_Read (uint8_t instance, uint32_t lba, uint32_t cnt, uint8_t *buf);
1138 
1145 extern usbStatus USBH_MSC_Write (uint8_t instance, uint32_t lba, uint32_t cnt, const uint8_t *buf);
1146 
1152 extern usbStatus USBH_MSC_ReadCapacity (uint8_t instance, uint32_t *block_count, uint32_t *block_size);
1153 
1154 
1155 // ==== USB Host Human Interface Device Functions ====
1156 
1157 // Rename deprecated functions
1158 #define USBH_HID_GetDeviceStatus USBH_HID_GetStatus
1159 
1163 extern void USBH_HID_Initialize (uint8_t instance);
1164 
1168 extern void USBH_HID_Uninitialize (uint8_t instance);
1169 
1174 extern uint8_t USBH_HID_GetDevice (uint8_t instance);
1175 
1179 extern usbStatus USBH_HID_GetStatus (uint8_t instance);
1180 
1188 extern int32_t USBH_HID_Read (uint8_t instance, uint8_t *buf, int32_t len);
1189 
1197 extern int32_t USBH_HID_Write (uint8_t instance, const uint8_t *buf, int32_t len);
1198 
1204 extern int USBH_HID_GetKeyboardKey (uint8_t instance);
1205 
1207 typedef struct _usbHID_MouseState {
1208  uint8_t reserved;
1209  uint8_t button;
1210  int16_t x;
1211  int16_t y;
1213 
1218 extern usbStatus USBH_HID_GetMouseState (uint8_t instance, usbHID_MouseState *state);
1219 
1225 extern void USBH_HID_ParseReportDescriptor (uint8_t instance, const uint8_t *ptr_hid_report_desc, uint32_t len);
1226 
1231 extern void USBH_HID_DataReceived (uint8_t instance, uint32_t len);
1232 
1233 
1234 // ==== USB Host Communication Device Class (Abstract Control Model) Functions ====
1235 
1236 // Rename deprecated functions
1237 #define USBH_CDC_ACM_GetDeviceStatus USBH_CDC_ACM_GetStatus
1238 
1242 extern void USBH_CDC_ACM_Initialize (uint8_t instance);
1243 
1247 extern void USBH_CDC_ACM_Uninitialize (uint8_t instance);
1248 
1253 extern uint8_t USBH_CDC_ACM_GetDevice (uint8_t instance);
1254 
1258 extern usbStatus USBH_CDC_ACM_GetStatus (uint8_t instance);
1259 
1265 extern usbStatus USBH_CDC_ACM_Send (uint8_t instance, const uint8_t *data, uint32_t num);
1266 
1270 extern uint32_t USBH_CDC_ACM_GetTxCount (uint8_t instance);
1271 
1277 extern usbStatus USBH_CDC_ACM_Receive (uint8_t instance, uint8_t *data, uint32_t num);
1278 
1282 extern uint32_t USBH_CDC_ACM_GetRxCount (uint8_t instance);
1283 
1288 extern usbStatus USBH_CDC_ACM_SetLineCoding (uint8_t instance, const CDC_LINE_CODING *line_coding);
1289 
1294 extern usbStatus USBH_CDC_ACM_GetLineCoding (uint8_t instance, CDC_LINE_CODING *line_coding);
1295 
1302 extern usbStatus USBH_CDC_ACM_SetControlLineState (uint8_t instance, uint16_t state);
1303 
1316 extern void USBH_CDC_ACM_Notify (uint8_t instance, uint16_t status);
1317 
1324 extern usbStatus USBH_CDC_ACM_SendBreak (uint8_t instance, uint16_t duration);
1325 
1326 
1327 // ==== USB Host Custom Class Functions ====
1328 
1329 // Rename deprecated functions
1330 #define USBH_CustomClass_GetDeviceStatus USBH_CustomClass_GetStatus
1331 
1336 extern uint8_t USBH_CustomClass_GetDevice (uint8_t instance);
1337 
1341 extern usbStatus USBH_CustomClass_GetStatus (uint8_t instance);
1342 
1350 extern uint8_t USBH_CustomClass_Configure (const USBH_DEV *ptr_dev, const USB_DEVICE_DESCRIPTOR *ptr_dev_desc, const USB_CONFIGURATION_DESCRIPTOR *ptr_cfg_desc);
1351 
1356 extern usbStatus USBH_CustomClass_Unconfigure (uint8_t instance);
1357 
1362 extern usbStatus USBH_CustomClass_Initialize (uint8_t instance);
1363 
1368 extern usbStatus USBH_CustomClass_Uninitialize (uint8_t instance);
1369 
1385 extern USBH_PIPE *USBH_PipeCreate (uint8_t ctrl, uint8_t dev_addr, uint8_t dev_speed, uint8_t hub_addr, uint8_t hub_port, uint8_t ep_addr, uint8_t ep_type, uint16_t ep_max_packet_size, uint8_t ep_interval);
1386 
1396 extern usbStatus USBH_PipeModify (uint8_t ctrl, USBH_PIPE *ptr_pipe, uint8_t dev_addr, uint8_t dev_speed, uint8_t hub_addr, uint8_t hub_port, uint16_t ep_max_packet_size);
1397 
1402 extern usbStatus USBH_PipeDelete (uint8_t ctrl, USBH_PIPE *ptr_pipe);
1403 
1408 extern usbStatus USBH_PipeReset (uint8_t ctrl, USBH_PIPE *ptr_pipe);
1409 
1416 extern usbStatus USBH_PipeReceive (uint8_t ctrl, USBH_PIPE *ptr_pipe, uint8_t *buf, uint32_t len);
1417 
1422 extern uint32_t USBH_PipeReceiveGetResult (uint8_t ctrl, const USBH_PIPE *ptr_pipe);
1423 
1430 extern usbStatus USBH_PipeSend (uint8_t ctrl, USBH_PIPE *ptr_pipe, const uint8_t *buf, uint32_t len);
1431 
1436 extern uint32_t USBH_PipeSendGetResult (uint8_t ctrl, const USBH_PIPE *ptr_pipe);
1437 
1442 extern usbStatus USBH_PipeAbort (uint8_t ctrl, const USBH_PIPE *ptr_pipe);
1443 
1449 extern usbStatus USBH_DefaultPipeReceive (uint8_t ctrl, uint8_t *buf, uint32_t len);
1450 
1454 extern uint32_t USBH_DefaultPipeReceiveGetResult (uint8_t ctrl);
1455 
1460 extern usbStatus USBH_DefaultPipeSendSetup (uint8_t ctrl, const USB_SETUP_PACKET *setup_packet);
1461 
1467 extern usbStatus USBH_DefaultPipeSend (uint8_t ctrl, const uint8_t *buf, uint32_t len);
1468 
1472 extern uint32_t USBH_DefaultPipeSendGetResult (uint8_t ctrl);
1473 
1477 extern usbStatus USBH_DefaultPipeAbort (uint8_t ctrl);
1478 
1485 extern usbStatus USBH_ControlTransfer (uint8_t ctrl, const USB_SETUP_PACKET *setup_packet, uint8_t *data, uint32_t len);
1486 
1493 extern usbStatus USBH_DeviceRequest_GetStatus (uint8_t ctrl, uint8_t recipient, uint8_t index, uint8_t *ptr_stat_dat);
1494 
1501 extern usbStatus USBH_DeviceRequest_ClearFeature (uint8_t ctrl, uint8_t recipient, uint8_t index, uint8_t feature_selector);
1502 
1509 extern usbStatus USBH_DeviceRequest_SetFeature (uint8_t ctrl, uint8_t recipient, uint8_t index, uint8_t feature_selector);
1510 
1515 extern usbStatus USBH_DeviceRequest_SetAddress (uint8_t ctrl, uint8_t device_address);
1516 
1526 extern usbStatus USBH_DeviceRequest_GetDescriptor (uint8_t ctrl, uint8_t recipient, uint8_t descriptor_type, uint8_t descriptor_index, uint16_t language_id, uint8_t *descriptor_data, uint16_t descriptor_length);
1527 
1537 extern usbStatus USBH_DeviceRequest_SetDescriptor (uint8_t ctrl, uint8_t recipient, uint8_t descriptor_type, uint8_t descriptor_index, uint16_t language_id, const uint8_t *descriptor_data, uint16_t descriptor_length);
1538 
1543 extern usbStatus USBH_DeviceRequest_GetConfiguration (uint8_t ctrl, uint8_t *ptr_configuration);
1544 
1549 extern usbStatus USBH_DeviceRequest_SetConfiguration (uint8_t ctrl, uint8_t configuration);
1550 
1556 extern usbStatus USBH_DeviceRequest_GetInterface (uint8_t ctrl, uint8_t index, uint8_t *ptr_alternate);
1557 
1563 extern usbStatus USBH_DeviceRequest_SetInterface (uint8_t ctrl, uint8_t index, uint8_t alternate);
1564 
1570 extern usbStatus USBH_DeviceRequest_SynchFrame (uint8_t ctrl, uint8_t index, uint8_t *ptr_frame_number);
1571 
1572 // USB Device callback function prototypes
1573 void USBD_Device0_Initialize (void);
1574 void USBD_Device0_Uninitialize (void);
1575 void USBD_Device0_VbusChanged (bool level);
1576 void USBD_Device0_Reset (void);
1577 void USBD_Device0_HighSpeedActivated (void);
1578 void USBD_Device0_Suspended (void);
1579 void USBD_Device0_Resumed (void);
1580 void USBD_Device0_Enumerated (void);
1581 void USBD_Device0_EnableRemoteWakeup (void);
1582 void USBD_Device0_DisableRemoteWakeup (void);
1583 usbdRequestStatus USBD_Device0_Endpoint0_SetupPacketReceived (const USB_SETUP_PACKET *setup_packet, uint8_t **buf, uint32_t *len);
1584 void USBD_Device0_Endpoint0_SetupPacketProcessed (const USB_SETUP_PACKET *setup_packet);
1585 usbdRequestStatus USBD_Device0_Endpoint0_OutDataReceived (uint32_t len);
1586 usbdRequestStatus USBD_Device0_Endpoint0_InDataSent (uint32_t len);
1587 
1588 void USBD_Device1_Initialize (void);
1589 void USBD_Device1_Uninitialize (void);
1590 void USBD_Device1_VbusChanged (bool level);
1591 void USBD_Device1_Reset (void);
1592 void USBD_Device1_HighSpeedActivated (void);
1593 void USBD_Device1_Suspended (void);
1594 void USBD_Device1_Resumed (void);
1595 void USBD_Device1_Enumerated (void);
1596 void USBD_Device1_EnableRemoteWakeup (void);
1597 void USBD_Device1_DisableRemoteWakeup (void);
1598 usbdRequestStatus USBD_Device1_Endpoint0_SetupPacketReceived (const USB_SETUP_PACKET *setup_packet, uint8_t **buf, uint32_t *len);
1599 void USBD_Device1_Endpoint0_SetupPacketProcessed (const USB_SETUP_PACKET *setup_packet);
1600 usbdRequestStatus USBD_Device1_Endpoint0_OutDataReceived (uint32_t len);
1601 usbdRequestStatus USBD_Device1_Endpoint0_InDataSent (uint32_t len);
1602 
1603 void USBD_Device2_Initialize (void);
1604 void USBD_Device2_Uninitialize (void);
1605 void USBD_Device2_VbusChanged (bool level);
1606 void USBD_Device2_Reset (void);
1607 void USBD_Device2_HighSpeedActivated (void);
1608 void USBD_Device2_Suspended (void);
1609 void USBD_Device2_Resumed (void);
1610 void USBD_Device2_Enumerated (void);
1611 void USBD_Device2_EnableRemoteWakeup (void);
1612 void USBD_Device2_DisableRemoteWakeup (void);
1613 usbdRequestStatus USBD_Device2_Endpoint0_SetupPacketReceived (const USB_SETUP_PACKET *setup_packet, uint8_t **buf, uint32_t *len);
1614 void USBD_Device2_Endpoint0_SetupPacketProcessed (const USB_SETUP_PACKET *setup_packet);
1615 usbdRequestStatus USBD_Device2_Endpoint0_OutDataReceived (uint32_t len);
1616 usbdRequestStatus USBD_Device2_Endpoint0_InDataSent (uint32_t len);
1617 
1618 void USBD_Device3_Initialize (void);
1619 void USBD_Device3_Uninitialize (void);
1620 void USBD_Device3_VbusChanged (bool level);
1621 void USBD_Device3_Reset (void);
1622 void USBD_Device3_HighSpeedActivated (void);
1623 void USBD_Device3_Suspended (void);
1624 void USBD_Device3_Resumed (void);
1625 void USBD_Device3_Enumerated (void);
1626 void USBD_Device3_EnableRemoteWakeup (void);
1627 void USBD_Device3_DisableRemoteWakeup (void);
1628 usbdRequestStatus USBD_Device3_Endpoint0_SetupPacketReceived (const USB_SETUP_PACKET *setup_packet, uint8_t **buf, uint32_t *len);
1629 void USBD_Device3_Endpoint0_SetupPacketProcessed (const USB_SETUP_PACKET *setup_packet);
1630 usbdRequestStatus USBD_Device3_Endpoint0_OutDataReceived (uint32_t len);
1631 usbdRequestStatus USBD_Device3_Endpoint0_InDataSent (uint32_t len);
1632 
1633 void USBD_ADC0_Initialize (void);
1634 void USBD_ADC0_Uninitialize (void);
1635 void USBD_ADC0_PlayStart (void);
1636 void USBD_ADC0_PlayStop (void);
1637 void USBD_ADC0_SetSpeakerMute (uint8_t ch, bool on);
1638 void USBD_ADC0_SetSpeakerVolume (uint8_t ch, uint16_t vol);
1639 void USBD_ADC0_RecordStart (void);
1640 void USBD_ADC0_RecordStop (void);
1641 void USBD_ADC0_SetMicrophoneMute (uint8_t ch, bool on);
1642 void USBD_ADC0_SetMicrophoneVolume (uint8_t ch, uint16_t vol);
1643 void USBD_ADC0_ReceivedSamples (void);
1644 
1645 void USBD_ADC1_Initialize (void);
1646 void USBD_ADC1_Uninitialize (void);
1647 void USBD_ADC1_PlayStart (void);
1648 void USBD_ADC1_PlayStop (void);
1649 void USBD_ADC1_SetSpeakerMute (uint8_t ch, bool on);
1650 void USBD_ADC1_SetSpeakerVolume (uint8_t ch, uint16_t vol);
1651 void USBD_ADC1_RecordStart (void);
1652 void USBD_ADC1_RecordStop (void);
1653 void USBD_ADC1_SetMicrophoneMute (uint8_t ch, bool on);
1654 void USBD_ADC1_SetMicrophoneVolume (uint8_t ch, uint16_t vol);
1655 void USBD_ADC1_ReceivedSamples (void);
1656 
1657 void USBD_ADC2_Initialize (void);
1658 void USBD_ADC2_Uninitialize (void);
1659 void USBD_ADC2_PlayStart (void);
1660 void USBD_ADC2_PlayStop (void);
1661 void USBD_ADC2_SetSpeakerMute (uint8_t ch, bool on);
1662 void USBD_ADC2_SetSpeakerVolume (uint8_t ch, uint16_t vol);
1663 void USBD_ADC2_RecordStart (void);
1664 void USBD_ADC2_RecordStop (void);
1665 void USBD_ADC2_SetMicrophoneMute (uint8_t ch, bool on);
1666 void USBD_ADC2_SetMicrophoneVolume (uint8_t ch, uint16_t vol);
1667 void USBD_ADC2_ReceivedSamples (void);
1668 
1669 void USBD_ADC3_Initialize (void);
1670 void USBD_ADC3_Uninitialize (void);
1671 void USBD_ADC3_PlayStart (void);
1672 void USBD_ADC3_PlayStop (void);
1673 void USBD_ADC3_SetSpeakerMute (uint8_t ch, bool on);
1674 void USBD_ADC3_SetSpeakerVolume (uint8_t ch, uint16_t vol);
1675 void USBD_ADC3_RecordStart (void);
1676 void USBD_ADC3_RecordStop (void);
1677 void USBD_ADC3_SetMicrophoneMute (uint8_t ch, bool on);
1678 void USBD_ADC3_SetMicrophoneVolume (uint8_t ch, uint16_t vol);
1679 void USBD_ADC3_ReceivedSamples (void);
1680 
1681 void USBD_CDC0_ACM_Initialize (void);
1682 void USBD_CDC0_ACM_Uninitialize (void);
1683 void USBD_CDC0_ACM_Reset (void);
1684 bool USBD_CDC0_ACM_GetLineCoding ( CDC_LINE_CODING *line_coding);
1685 bool USBD_CDC0_ACM_SetControlLineState (uint16_t state);
1686 void USBD_CDC0_ACM_DataReceived (uint32_t len);
1687 void USBD_CDC0_ACM_DataSent (void);
1688 void USBD_CDC0_NCM_Initialize (void);
1689 void USBD_CDC0_NCM_Uninitialize (void);
1690 void USBD_CDC0_NCM_Reset (void);
1691 void USBD_CDC0_NCM_Start (void);
1692 void USBD_CDC0_NCM_Stop (void);
1693 bool USBD_CDC0_NCM_SetEthernetMulticastFilters (const uint8_t *addr_list, uint16_t num_of_filters);
1694 bool USBD_CDC0_NCM_SetEthernetPowerManagementPatternFilter (uint16_t filter_number, const uint8_t *pattern_filter, uint16_t pattern_filter_size);
1695 bool USBD_CDC0_NCM_GetEthernetPowerManagementPatternFilter (uint16_t filter_number, uint16_t *pattern_active);
1696 bool USBD_CDC0_NCM_SetEthernetPacketFilter (uint16_t packet_filter_bitmap);
1697 bool USBD_CDC0_NCM_GetEthernetStatistic (uint16_t feature_selector, uint32_t *data);
1698 bool USBD_CDC0_NCM_GetNtbParameters (CDC_NCM_NTB_PARAM *ntb_params);
1699 bool USBD_CDC0_NCM_GetNetAddress (uint8_t *net_addr);
1700 bool USBD_CDC0_NCM_SetNetAddress (const uint8_t *net_addr);
1701 bool USBD_CDC0_NCM_GetNtbFormat (uint16_t *ntb_format);
1702 bool USBD_CDC0_NCM_SetNtbFormat (uint16_t ntb_format);
1703 bool USBD_CDC0_NCM_GetNtbInputSize (uint32_t *ntb_input_size);
1704 bool USBD_CDC0_NCM_SetNtbInputSize (uint32_t ntb_input_size);
1705 bool USBD_CDC0_NCM_GetMaxDatagramSize (uint16_t *max_datagram_size);
1706 bool USBD_CDC0_NCM_SetMaxDatagramSize (uint16_t max_datagram_size);
1707 bool USBD_CDC0_NCM_GetCrcMode (uint16_t *crc_mode);
1708 bool USBD_CDC0_NCM_SetCrcMode (uint16_t crc_mode);
1709 void USBD_CDC0_NCM_NTB_IN_Sent (void);
1710 void USBD_CDC0_NCM_NTB_OUT_Received (void);
1711 
1712 void USBD_CDC1_ACM_Initialize (void);
1713 void USBD_CDC1_ACM_Uninitialize (void);
1714 void USBD_CDC1_ACM_Reset (void);
1715 bool USBD_CDC1_ACM_GetLineCoding ( CDC_LINE_CODING *line_coding);
1716 bool USBD_CDC1_ACM_SetControlLineState (uint16_t state);
1717 void USBD_CDC1_ACM_DataReceived (uint32_t len);
1718 void USBD_CDC1_ACM_DataSent (void);
1719 void USBD_CDC1_NCM_Initialize (void);
1720 void USBD_CDC1_NCM_Uninitialize (void);
1721 void USBD_CDC1_NCM_Reset (void);
1722 void USBD_CDC1_NCM_Start (void);
1723 void USBD_CDC1_NCM_Stop (void);
1724 bool USBD_CDC1_NCM_SetEthernetMulticastFilters (const uint8_t *addr_list, uint16_t num_of_filters);
1725 bool USBD_CDC1_NCM_SetEthernetPowerManagementPatternFilter (uint16_t filter_number, const uint8_t *pattern_filter, uint16_t pattern_filter_size);
1726 bool USBD_CDC1_NCM_GetEthernetPowerManagementPatternFilter (uint16_t filter_number, uint16_t *pattern_active);
1727 bool USBD_CDC1_NCM_SetEthernetPacketFilter (uint16_t packet_filter_bitmap);
1728 bool USBD_CDC1_NCM_GetEthernetStatistic (uint16_t feature_selector, uint32_t *data);
1729 bool USBD_CDC1_NCM_GetNtbParameters (CDC_NCM_NTB_PARAM *ntb_params);
1730 bool USBD_CDC1_NCM_GetNetAddress (uint8_t *net_addr);
1731 bool USBD_CDC1_NCM_SetNetAddress (const uint8_t *net_addr);
1732 bool USBD_CDC1_NCM_GetNtbFormat (uint16_t *ntb_format);
1733 bool USBD_CDC1_NCM_SetNtbFormat (uint16_t ntb_format);
1734 bool USBD_CDC1_NCM_GetNtbInputSize (uint32_t *ntb_input_size);
1735 bool USBD_CDC1_NCM_SetNtbInputSize (uint32_t ntb_input_size);
1736 bool USBD_CDC1_NCM_GetMaxDatagramSize (uint16_t *max_datagram_size);
1737 bool USBD_CDC1_NCM_SetMaxDatagramSize (uint16_t max_datagram_size);
1738 bool USBD_CDC1_NCM_GetCrcMode (uint16_t *crc_mode);
1739 bool USBD_CDC1_NCM_SetCrcMode (uint16_t crc_mode);
1740 void USBD_CDC1_NCM_NTB_IN_Sent (void);
1741 void USBD_CDC1_NCM_NTB_OUT_Received (void);
1742 
1743 void USBD_CDC2_ACM_Initialize (void);
1744 void USBD_CDC2_ACM_Uninitialize (void);
1745 void USBD_CDC2_ACM_Reset (void);
1746 bool USBD_CDC2_ACM_GetLineCoding ( CDC_LINE_CODING *line_coding);
1747 bool USBD_CDC2_ACM_SetControlLineState (uint16_t state);
1748 void USBD_CDC2_ACM_DataReceived (uint32_t len);
1749 void USBD_CDC2_ACM_DataSent (void);
1750 void USBD_CDC2_NCM_Initialize (void);
1751 void USBD_CDC2_NCM_Uninitialize (void);
1752 void USBD_CDC2_NCM_Reset (void);
1753 void USBD_CDC2_NCM_Start (void);
1754 void USBD_CDC2_NCM_Stop (void);
1755 bool USBD_CDC2_NCM_SetEthernetMulticastFilters (const uint8_t *addr_list, uint16_t num_of_filters);
1756 bool USBD_CDC2_NCM_SetEthernetPowerManagementPatternFilter (uint16_t filter_number, const uint8_t *pattern_filter, uint16_t pattern_filter_size);
1757 bool USBD_CDC2_NCM_GetEthernetPowerManagementPatternFilter (uint16_t filter_number, uint16_t *pattern_active);
1758 bool USBD_CDC2_NCM_SetEthernetPacketFilter (uint16_t packet_filter_bitmap);
1759 bool USBD_CDC2_NCM_GetEthernetStatistic (uint16_t feature_selector, uint32_t *data);
1760 bool USBD_CDC2_NCM_GetNtbParameters (CDC_NCM_NTB_PARAM *ntb_params);
1761 bool USBD_CDC2_NCM_GetNetAddress (uint8_t *net_addr);
1762 bool USBD_CDC2_NCM_SetNetAddress (const uint8_t *net_addr);
1763 bool USBD_CDC2_NCM_GetNtbFormat (uint16_t *ntb_format);
1764 bool USBD_CDC2_NCM_SetNtbFormat (uint16_t ntb_format);
1765 bool USBD_CDC2_NCM_GetNtbInputSize (uint32_t *ntb_input_size);
1766 bool USBD_CDC2_NCM_SetNtbInputSize (uint32_t ntb_input_size);
1767 bool USBD_CDC2_NCM_GetMaxDatagramSize (uint16_t *max_datagram_size);
1768 bool USBD_CDC2_NCM_SetMaxDatagramSize (uint16_t max_datagram_size);
1769 bool USBD_CDC2_NCM_GetCrcMode (uint16_t *crc_mode);
1770 bool USBD_CDC2_NCM_SetCrcMode (uint16_t crc_mode);
1771 void USBD_CDC2_NCM_NTB_IN_Sent (void);
1772 void USBD_CDC2_NCM_NTB_OUT_Received (void);
1773 
1774 void USBD_CDC3_ACM_Initialize (void);
1775 void USBD_CDC3_ACM_Uninitialize (void);
1776 void USBD_CDC3_ACM_Reset (void);
1777 bool USBD_CDC3_ACM_GetLineCoding ( CDC_LINE_CODING *line_coding);
1778 bool USBD_CDC3_ACM_SetControlLineState (uint16_t state);
1779 void USBD_CDC3_ACM_DataReceived (uint32_t len);
1780 void USBD_CDC3_ACM_DataSent (void);
1781 void USBD_CDC3_NCM_Initialize (void);
1782 void USBD_CDC3_NCM_Uninitialize (void);
1783 void USBD_CDC3_NCM_Reset (void);
1784 void USBD_CDC3_NCM_Start (void);
1785 void USBD_CDC3_NCM_Stop (void);
1786 bool USBD_CDC3_NCM_SetEthernetMulticastFilters (const uint8_t *addr_list, uint16_t num_of_filters);
1787 bool USBD_CDC3_NCM_SetEthernetPowerManagementPatternFilter (uint16_t filter_number, const uint8_t *pattern_filter, uint16_t pattern_filter_size);
1788 bool USBD_CDC3_NCM_GetEthernetPowerManagementPatternFilter (uint16_t filter_number, uint16_t *pattern_active);
1789 bool USBD_CDC3_NCM_SetEthernetPacketFilter (uint16_t packet_filter_bitmap);
1790 bool USBD_CDC3_NCM_GetEthernetStatistic (uint16_t feature_selector, uint32_t *data);
1791 bool USBD_CDC3_NCM_GetNtbParameters (CDC_NCM_NTB_PARAM *ntb_params);
1792 bool USBD_CDC3_NCM_GetNetAddress (uint8_t *net_addr);
1793 bool USBD_CDC3_NCM_SetNetAddress (const uint8_t *net_addr);
1794 bool USBD_CDC3_NCM_GetNtbFormat (uint16_t *ntb_format);
1795 bool USBD_CDC3_NCM_SetNtbFormat (uint16_t ntb_format);
1796 bool USBD_CDC3_NCM_GetNtbInputSize (uint32_t *ntb_input_size);
1797 bool USBD_CDC3_NCM_SetNtbInputSize (uint32_t ntb_input_size);
1798 bool USBD_CDC3_NCM_GetMaxDatagramSize (uint16_t *max_datagram_size);
1799 bool USBD_CDC3_NCM_SetMaxDatagramSize (uint16_t max_datagram_size);
1800 bool USBD_CDC3_NCM_GetCrcMode (uint16_t *crc_mode);
1801 bool USBD_CDC3_NCM_SetCrcMode (uint16_t crc_mode);
1802 void USBD_CDC3_NCM_NTB_IN_Sent (void);
1803 void USBD_CDC3_NCM_NTB_OUT_Received (void);
1804 
1805 void USBD_HID0_Initialize (void);
1806 void USBD_HID0_Uninitialize (void);
1807 int32_t USBD_HID0_GetReport (uint8_t rtype, uint8_t req, uint8_t rid, uint8_t *buf);
1808 bool USBD_HID0_SetReport (uint8_t rtype, uint8_t req, uint8_t rid, const uint8_t *buf, int32_t len);
1809 
1810 void USBD_HID1_Initialize (void);
1811 void USBD_HID1_Uninitialize (void);
1812 int32_t USBD_HID1_GetReport (uint8_t rtype, uint8_t req, uint8_t rid, uint8_t *buf);
1813 bool USBD_HID1_SetReport (uint8_t rtype, uint8_t req, uint8_t rid, const uint8_t *buf, int32_t len);
1814 
1815 void USBD_HID2_Initialize (void);
1816 void USBD_HID2_Uninitialize (void);
1817 int32_t USBD_HID2_GetReport (uint8_t rtype, uint8_t req, uint8_t rid, uint8_t *buf);
1818 bool USBD_HID2_SetReport (uint8_t rtype, uint8_t req, uint8_t rid, const uint8_t *buf, int32_t len);
1819 
1820 void USBD_HID3_Initialize (void);
1821 void USBD_HID3_Uninitialize (void);
1822 int32_t USBD_HID3_GetReport (uint8_t rtype, uint8_t req, uint8_t rid, uint8_t *buf);
1823 bool USBD_HID3_SetReport (uint8_t rtype, uint8_t req, uint8_t rid, const uint8_t *buf, int32_t len);
1824 
1825 void USBD_MSC0_Initialize (void);
1826 void USBD_MSC0_Uninitialize (void);
1827 bool USBD_MSC0_GetCacheInfo (uint32_t *buffer, uint32_t *size);
1828 bool USBD_MSC0_GetMediaCapacity (uint32_t *block_count, uint32_t *block_size);
1829 bool USBD_MSC0_StartStop (bool start);
1830 uint32_t USBD_MSC0_CheckMedia (void);
1831 
1832 void USBD_MSC1_Initialize (void);
1833 void USBD_MSC1_Uninitialize (void);
1834 bool USBD_MSC1_GetCacheInfo (uint32_t *buffer, uint32_t *size);
1835 bool USBD_MSC1_GetMediaCapacity (uint32_t *block_count, uint32_t *block_size);
1836 bool USBD_MSC1_StartStop (bool start);
1837 uint32_t USBD_MSC1_CheckMedia (void);
1838 
1839 void USBD_MSC2_Initialize (void);
1840 void USBD_MSC2_Uninitialize (void);
1841 bool USBD_MSC2_GetCacheInfo (uint32_t *buffer, uint32_t *size);
1842 bool USBD_MSC2_GetMediaCapacity (uint32_t *block_count, uint32_t *block_size);
1843 bool USBD_MSC2_StartStop (bool start);
1844 uint32_t USBD_MSC2_CheckMedia (void);
1845 
1846 void USBD_MSC3_Initialize (void);
1847 void USBD_MSC3_Uninitialize (void);
1848 bool USBD_MSC3_GetCacheInfo (uint32_t *buffer, uint32_t *size);
1849 bool USBD_MSC3_GetMediaCapacity (uint32_t *block_count, uint32_t *block_size);
1850 bool USBD_MSC3_StartStop (bool start);
1851 uint32_t USBD_MSC3_CheckMedia (void);
1852 
1853 void USBD_CustomClass0_Initialize (void);
1854 void USBD_CustomClass0_Uninitialize (void);
1855 void USBD_CustomClass0_Reset (void);
1856 void USBD_CustomClass0_EndpointStart (uint8_t ep_addr);
1857 void USBD_CustomClass0_EndpointStop (uint8_t ep_addr);
1858 usbdRequestStatus USBD_CustomClass0_Endpoint0_SetupPacketReceived (const USB_SETUP_PACKET *setup_packet, uint8_t **buf, uint32_t *len);
1859 void USBD_CustomClass0_Endpoint0_SetupPacketProcessed (const USB_SETUP_PACKET *setup_packet);
1860 usbdRequestStatus USBD_CustomClass0_Endpoint0_OutDataReceived (uint32_t len);
1861 usbdRequestStatus USBD_CustomClass0_Endpoint0_InDataSent (uint32_t len);
1862 void USBD_CustomClass0_Endpoint1_Event (uint32_t event);
1863 void USBD_CustomClass0_Endpoint2_Event (uint32_t event);
1864 void USBD_CustomClass0_Endpoint3_Event (uint32_t event);
1865 void USBD_CustomClass0_Endpoint4_Event (uint32_t event);
1866 void USBD_CustomClass0_Endpoint5_Event (uint32_t event);
1867 void USBD_CustomClass0_Endpoint6_Event (uint32_t event);
1868 void USBD_CustomClass0_Endpoint7_Event (uint32_t event);
1869 void USBD_CustomClass0_Endpoint8_Event (uint32_t event);
1870 void USBD_CustomClass0_Endpoint9_Event (uint32_t event);
1871 void USBD_CustomClass0_Endpoint10_Event (uint32_t event);
1872 void USBD_CustomClass0_Endpoint11_Event (uint32_t event);
1873 void USBD_CustomClass0_Endpoint12_Event (uint32_t event);
1874 void USBD_CustomClass0_Endpoint13_Event (uint32_t event);
1875 void USBD_CustomClass0_Endpoint14_Event (uint32_t event);
1876 void USBD_CustomClass0_Endpoint15_Event (uint32_t event);
1877 
1878 void USBD_CustomClass1_Initialize (void);
1879 void USBD_CustomClass1_Uninitialize (void);
1880 void USBD_CustomClass1_Reset (void);
1881 void USBD_CustomClass1_EndpointStart (uint8_t ep_addr);
1882 void USBD_CustomClass1_EndpointStop (uint8_t ep_addr);
1883 usbdRequestStatus USBD_CustomClass1_Endpoint0_SetupPacketReceived (const USB_SETUP_PACKET *setup_packet, uint8_t **buf, uint32_t *len);
1884 void USBD_CustomClass1_Endpoint0_SetupPacketProcessed (const USB_SETUP_PACKET *setup_packet);
1885 usbdRequestStatus USBD_CustomClass1_Endpoint0_OutDataReceived (uint32_t len);
1886 usbdRequestStatus USBD_CustomClass1_Endpoint0_InDataSent (uint32_t len);
1887 void USBD_CustomClass1_Endpoint1_Event (uint32_t event);
1888 void USBD_CustomClass1_Endpoint2_Event (uint32_t event);
1889 void USBD_CustomClass1_Endpoint3_Event (uint32_t event);
1890 void USBD_CustomClass1_Endpoint4_Event (uint32_t event);
1891 void USBD_CustomClass1_Endpoint5_Event (uint32_t event);
1892 void USBD_CustomClass1_Endpoint6_Event (uint32_t event);
1893 void USBD_CustomClass1_Endpoint7_Event (uint32_t event);
1894 void USBD_CustomClass1_Endpoint8_Event (uint32_t event);
1895 void USBD_CustomClass1_Endpoint9_Event (uint32_t event);
1896 void USBD_CustomClass1_Endpoint10_Event (uint32_t event);
1897 void USBD_CustomClass1_Endpoint11_Event (uint32_t event);
1898 void USBD_CustomClass1_Endpoint12_Event (uint32_t event);
1899 void USBD_CustomClass1_Endpoint13_Event (uint32_t event);
1900 void USBD_CustomClass1_Endpoint14_Event (uint32_t event);
1901 void USBD_CustomClass1_Endpoint15_Event (uint32_t event);
1902 
1903 void USBD_CustomClass2_Initialize (void);
1904 void USBD_CustomClass2_Uninitialize (void);
1905 void USBD_CustomClass2_Reset (void);
1906 void USBD_CustomClass2_EndpointStart (uint8_t ep_addr);
1907 void USBD_CustomClass2_EndpointStop (uint8_t ep_addr);
1908 usbdRequestStatus USBD_CustomClass2_Endpoint0_SetupPacketReceived (const USB_SETUP_PACKET *setup_packet, uint8_t **buf, uint32_t *len);
1909 void USBD_CustomClass2_Endpoint0_SetupPacketProcessed (const USB_SETUP_PACKET *setup_packet);
1910 usbdRequestStatus USBD_CustomClass2_Endpoint0_OutDataReceived (uint32_t len);
1911 usbdRequestStatus USBD_CustomClass2_Endpoint0_InDataSent (uint32_t len);
1912 void USBD_CustomClass2_Endpoint1_Event (uint32_t event);
1913 void USBD_CustomClass2_Endpoint2_Event (uint32_t event);
1914 void USBD_CustomClass2_Endpoint3_Event (uint32_t event);
1915 void USBD_CustomClass2_Endpoint4_Event (uint32_t event);
1916 void USBD_CustomClass2_Endpoint5_Event (uint32_t event);
1917 void USBD_CustomClass2_Endpoint6_Event (uint32_t event);
1918 void USBD_CustomClass2_Endpoint7_Event (uint32_t event);
1919 void USBD_CustomClass2_Endpoint8_Event (uint32_t event);
1920 void USBD_CustomClass2_Endpoint9_Event (uint32_t event);
1921 void USBD_CustomClass2_Endpoint10_Event (uint32_t event);
1922 void USBD_CustomClass2_Endpoint11_Event (uint32_t event);
1923 void USBD_CustomClass2_Endpoint12_Event (uint32_t event);
1924 void USBD_CustomClass2_Endpoint13_Event (uint32_t event);
1925 void USBD_CustomClass2_Endpoint14_Event (uint32_t event);
1926 void USBD_CustomClass2_Endpoint15_Event (uint32_t event);
1927 
1928 void USBD_CustomClass3_Initialize (void);
1929 void USBD_CustomClass3_Uninitialize (void);
1930 void USBD_CustomClass3_Reset (void);
1931 void USBD_CustomClass3_EndpointStart (uint8_t ep_addr);
1932 void USBD_CustomClass3_EndpointStop (uint8_t ep_addr);
1933 usbdRequestStatus USBD_CustomClass3_Endpoint0_SetupPacketReceived (const USB_SETUP_PACKET *setup_packet, uint8_t **buf, uint32_t *len);
1934 void USBD_CustomClass3_Endpoint0_SetupPacketProcessed (const USB_SETUP_PACKET *setup_packet);
1935 usbdRequestStatus USBD_CustomClass3_Endpoint0_OutDataReceived (uint32_t len);
1936 usbdRequestStatus USBD_CustomClass3_Endpoint0_InDataSent (uint32_t len);
1937 void USBD_CustomClass3_Endpoint1_Event (uint32_t event);
1938 void USBD_CustomClass3_Endpoint2_Event (uint32_t event);
1939 void USBD_CustomClass3_Endpoint3_Event (uint32_t event);
1940 void USBD_CustomClass3_Endpoint4_Event (uint32_t event);
1941 void USBD_CustomClass3_Endpoint5_Event (uint32_t event);
1942 void USBD_CustomClass3_Endpoint6_Event (uint32_t event);
1943 void USBD_CustomClass3_Endpoint7_Event (uint32_t event);
1944 void USBD_CustomClass3_Endpoint8_Event (uint32_t event);
1945 void USBD_CustomClass3_Endpoint9_Event (uint32_t event);
1946 void USBD_CustomClass3_Endpoint10_Event (uint32_t event);
1947 void USBD_CustomClass3_Endpoint11_Event (uint32_t event);
1948 void USBD_CustomClass3_Endpoint12_Event (uint32_t event);
1949 void USBD_CustomClass3_Endpoint13_Event (uint32_t event);
1950 void USBD_CustomClass3_Endpoint14_Event (uint32_t event);
1951 void USBD_CustomClass3_Endpoint15_Event (uint32_t event);
1952 
1953 #ifdef __cplusplus
1954 }
1955 #endif
1956 
1957 #endif