USB Component  Version 6.6
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-2015 ARM Germany GmbH. All rights reserved.
4  *------------------------------------------------------------------------------
5  * Name: rl_usb.h
6  * Purpose: USB User API
7  * Rev.: V6.6.1
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 "cmsis_os.h"
21 #include "usb_def.h"
22 #include "usb_cdc.h"
23 #include "usb_hid.h"
24 #include "usb_msc.h"
25 
26 
28 
30 typedef enum {
31  usbOK = 0,
32 
35 
36  usbThreadError = 0x10,
39 
52 
55 
57 } usbStatus;
58 
60 #ifdef __BIG_ENDIAN
61  #define U32_LE(v) (uint32_t)(__rev(v))
62  #define U16_LE(v) (uint16_t)(__rev(v) >> 16)
63  #define U32_BE(v) (uint32_t)(v)
64  #define U16_BE(v) (uint16_t)(v)
65 #else
66  #define U32_BE(v) (uint32_t)(__rev(v))
67  #define U16_BE(v) (uint16_t)(__rev(v) >> 16)
68  #define U32_LE(v) (uint32_t)(v)
69  #define U16_LE(v) (uint16_t)(v)
70 #endif
71 
72 // ==== USB Device Constants and Defines ====
73 
75 typedef enum {
81 
83 #define USBD_MSC_MEDIA_READY (1U)
84 #define USBD_MSC_MEDIA_PROTECTED (1U<<1)
85 
86 
87 typedef enum {
92 
93 /* USB Host Constants and Defines */
94 
95 /* USB Host Pipe settings structure */
97 typedef struct {
98  uint32_t hw_handle;
99  uint8_t dev_addr;
100  uint8_t dev_speed;
101  uint8_t hub_addr;
102  uint8_t hub_port;
103  uint8_t bEndpointAddress;
104  uint8_t bmAttributes;
105  uint16_t wMaxPacketSize;
106  uint8_t bInterval;
107  uint32_t transferred;
108  uint8_t active;
109 } USBH_PIPE;
111 
112 /* USB Host Device Instance (DEV) structure */
114 typedef struct {
115  uint8_t ctrl;
116  uint8_t dev_addr;
117  uint8_t dev_speed;
118  uint8_t hub_addr;
119  uint8_t hub_port;
120  struct {
121  uint8_t configured : 1;
122  uint8_t initialized : 1;
123  } state;
124  uint8_t max_packet_size;
125  uint8_t vid;
126  uint8_t pid;
127 
128  uint8_t class_custom;
129  uint8_t class_instance;
130  uint8_t class_driver;
131  uint8_t dev_desc_len;
132  uint8_t cfg_desc_len;
133  osThreadId recovery_thread_id;
134 } USBH_DEV;
136 
137 
138 /* USB Host externally defined variables */
139 
140 /* USB Host number of Custom Class (CLS) instances as defined in USBH_Config_Class.h file */
142 extern const uint8_t usbh_cls_num;
144 
145 
146 // ==== USB Device Functions ====
147 
148 
152 extern usbStatus USBD_Initialize (uint8_t device);
153 
157 extern usbStatus USBD_Uninitialize (uint8_t device);
158 
162 extern usbStatus USBD_Connect (uint8_t device);
163 
167 extern usbStatus USBD_Disconnect (uint8_t device);
168 
173 extern bool USBD_Configured (uint8_t device);
174 
175 #ifdef __DOXYGEN__
176 
177 // following functions are available for each instance of a Device.
178 // generic prefix USBD_Devicen is USBD_Device0 for Device instance 0.
179 
182 void USBD_Devicen_Initialize (void);
183 
186 void USBD_Devicen_Uninitialize (void);
187 
190 void USBD_Devicen_EventReset (void);
191 
200 usbdRequestStatus USBD_Devicen_Endpoint0_SetupPacketReceived (const USB_SETUP_PACKET *setup_packet, uint8_t **buf, int32_t *len);
201 
206 
214 usbdRequestStatus USBD_Devicen_Endpoint0_OutDataReceived (uint32_t len);
215 
223 usbdRequestStatus USBD_Devicen_Endpoint0_InDataSent (uint32_t len);
224 
225 #endif // __DOXYGEN
226 
227 // ==== USB Device Audio Device Functions ====
228 
229 #ifdef __DOXYGEN__
230 
231 // following functions are available for each instance of a ADC class.
232 // generic prefix USBD_ADCn is USBD_ADC0 for ADC class instance 0.
233 
236 void USBD_ADCn_Initialize (void);
237 
240 void USBD_ADCn_Uninitialize (void);
241 
245 void USBD_ADCn_SpeakerStatusEvent (bool active);
246 
254 void USBD_ADCn_SpeakerMuteEvent (uint8_t ch, bool cur);
255 
263 void USBD_ADCn_SpeakerVolumeEvent (uint8_t ch, uint16_t cur);
264 
268 void USBD_ADCn_MicrophoneStatusEvent (bool active);
269 
277 void USBD_ADCn_MicrophoneMuteEvent (uint8_t ch, bool cur);
278 
286 void USBD_ADCn_MicrophoneVolumeEvent (uint8_t ch, uint16_t cur);
287 
288 #endif // __DOXYGEN
289 
301 extern usbStatus USBD_ADC_SpeakerSetVolumeRange (uint8_t instance, uint8_t ch, uint16_t min, uint16_t max, uint16_t res, uint16_t cur);
302 
314 extern usbStatus USBD_ADC_MicrophoneSetVolumeRange (uint8_t instance, uint8_t ch, uint16_t min, uint16_t max, uint16_t res, uint16_t cur);
315 
319 extern uint32_t USBD_ADC_ReceivedSamplesAvailable (uint8_t instance);
320 
324 extern uint32_t USBD_ADC_WrittenSamplesPending (uint8_t instance);
325 
333 extern int32_t USBD_ADC_ReadSamples (uint8_t instance, void *buf, int32_t num);
334 
342 extern int32_t USBD_ADC_WriteSamples (uint8_t instance, const void *buf, int32_t num);
343 
344 
345 // ==== USB Device Communication Device (Abstract Control Model) Functions ====
346 
347 #ifdef __DOXYGEN__
348 
349 // following functions are available for each instance of a CDC class.
350 // generic prefix USBD_CDCn is USBD_CDC0 for CDC class instance 0.
351 
354 void USBD_CDCn_ACM_Initialize (void);
355 
358 void USBD_CDCn_ACM_Uninitialize (void);
359 
362 void USBD_CDCn_ACM_Reset (void);
363 
368 bool USBD_CDCn_ACM_SetLineCoding (CDC_LINE_CODING *line_coding);
369 
374 bool USBD_CDCn_ACM_GetLineCoding (CDC_LINE_CODING *line_coding);
375 
382 bool USBD_CDCn_ACM_SetControlLineState (uint16_t state);
383 
387 void USBD_CDCn_ACM_DataReceived (uint32_t len);
388 
391 void USBD_CDCn_ACM_DataSent (void);
392 
395 void USBD_CDCn_NCM_Initialize (void);
396 
399 void USBD_CDCn_NCM_Uninitialize (void);
400 
403 void USBD_CDCn_NCM_Reset (void);
404 
407 void USBD_CDCn_NCM_Start (void);
408 
411 void USBD_CDCn_NCM_Stop (void);
412 
418 bool USBD_CDCn_NCM_SetEthernetMulticastFilters (const uint8_t *addr_list, uint16_t num_of_filters);
419 
426 bool USBD_CDCn_NCM_SetEthernetPowerManagementPatternFilter (uint16_t filter_number, const uint8_t *pattern_filter, uint16_t pattern_filter_size);
427 
433 bool USBD_CDCn_NCM_GetEthernetPowerManagementPatternFilter (uint16_t filter_number, uint16_t *pattern_active);
434 
439 bool USBD_CDCn_NCM_SetEthernetPacketFilter (uint16_t packet_filter_bitmap);
440 
446 bool USBD_CDCn_NCM_GetEthernetStatistic (uint16_t feature_selector, uint32_t *data);
447 
452 bool USBD_CDCn_NCM_GetNtbParameters (CDC_NCM_NTB_PARAM *ntb_params);
453 
458 bool USBD_CDCn_NCM_GetNetAddress (uint8_t *net_addr);
459 
464 bool USBD_CDCn_NCM_SetNetAddress (const uint8_t *net_addr);
465 
470 bool USBD_CDCn_NCM_GetNtbFormat (uint16_t *ntb_format);
471 
478 bool USBD_CDCn_NCM_SetNtbFormat (uint16_t ntb_format);
479 
484 bool USBD_CDCn_NCM_GetNtbInputSize (uint32_t *ntb_input_size);
485 
490 bool USBD_CDCn_NCM_SetNtbInputSize (uint32_t ntb_input_size);
491 
496 bool USBD_CDCn_NCM_GetMaxDatagramSize (uint16_t *max_datagram_size);
497 
502 bool USBD_CDCn_NCM_SetMaxDatagramSize (uint16_t max_datagram_size);
503 
508 bool USBD_CDCn_NCM_GetCrcMode (uint16_t *crc_mode);
509 
516 bool USBD_CDCn_NCM_SetCrcMode (uint16_t crc_mode);
517 
520 void USBD_CDCn_NCM_NTB_IN_Sent (void);
521 
525 
526 #endif // __DOXYGEN
527 
533 extern int USBD_CDC_ACM_GetChar (uint8_t instance);
534 
541 extern int USBD_CDC_ACM_PutChar (uint8_t instance, int ch);
542 
550 extern int32_t USBD_CDC_ACM_ReadData (uint8_t instance, uint8_t *buf, int32_t len);
551 
559 extern int32_t USBD_CDC_ACM_WriteData (uint8_t instance, const uint8_t *buf, int32_t len);
560 
565 extern int32_t USBD_CDC_ACM_DataAvailable (uint8_t instance);
566 
578 extern usbStatus USBD_CDC_ACM_Notify (uint8_t instance, uint16_t state);
579 
584 extern int32_t USBD_CDC_NCM_NTB_IN_Initialize (uint8_t instance);
585 
586 
592 extern int32_t USBD_CDC_NCM_NTB_IN_CreateNDP (uint8_t instance, uint8_t num_datagrams);
593 
600 extern int32_t USBD_CDC_NCM_NTB_IN_WriteDatagram (uint8_t instance, const uint8_t *buf, uint32_t len);
601 
606 extern int32_t USBD_CDC_NCM_NTB_IN_Send (uint8_t instance);
607 
613 extern int32_t USBD_CDC_NCM_NTB_IN_IsSent (uint8_t instance);
614 
620 extern int32_t USBD_CDC_NCM_NTB_OUT_IsReceived (uint8_t instance);
621 
626 extern int32_t USBD_CDC_NCM_NTB_OUT_Release (uint8_t instance);
627 
632 extern int32_t USBD_CDC_NCM_NTB_OUT_ProcessNDP (uint8_t instance);
633 
637 extern uint32_t USBD_CDC_NCM_NTB_OUT_GetDatagramSize (uint8_t instance);
638 
645 extern int32_t USBD_CDC_NCM_NTB_OUT_ReadDatagram (uint8_t instance, uint8_t *buf, uint32_t max_len);
646 
653 extern int32_t USBD_CDC_NCM_NTB_IN_RawSend (uint8_t instance, const uint8_t *buf, uint32_t len);
654 
658 extern uint32_t USBD_CDC_NCM_NTB_OUT_RawGetSize (uint8_t instance);
659 
666 extern int32_t USBD_CDC_NCM_NTB_OUT_RawReceive (uint8_t instance, uint8_t *buf, uint32_t max_len);
667 
675 extern int32_t USBD_CDC_NCM_Notify_NetworkConnection (uint8_t instance, uint16_t status);
676 
683 extern int32_t USBD_CDC_NCM_Notify_ConnectionSpeedChange (uint8_t instance, uint32_t us_bitrate, uint32_t ds_bitrate);
684 
685 // ==== USB Device Human Interface Device Functions ====
686 
687 #ifdef __DOXYGEN__
688 
689 // following functions are available for each instance of a HID class.
690 // generic prefix USBD_HIDn is USBD_HID0 for HID class instance 0.
691 
694 void USBD_HIDn_Initialize (void);
695 
698 void USBD_HIDn_Uninitialize (void);
699 
713 int32_t USBD_HIDn_GetReport (uint8_t rtype, uint8_t req, uint8_t rid, uint8_t *buf);
714 
727 bool USBD_HIDn_SetReport (uint8_t rtype, uint8_t req, uint8_t rid, const uint8_t *buf, int32_t len);
728 
729 #endif // __DOXYGEN
730 
737 extern usbStatus USBD_HID_GetReportTrigger (uint8_t instance, uint8_t rid, const uint8_t *buf, int32_t len);
738 
739 
740 #ifdef __DOXYGEN__
741 
742 // ==== USB Device Mass Storage Device Functions ====
743 
744 // following functions are available for each instance of a MSC class.
745 // generic prefix USBD_MSCn is USBD_MSC0 for MSC class instance 0.
746 
749 void USBD_MSCn_Initialize (void);
750 
753 void USBD_MSCn_Uninitialize (void);
754 
760 bool USBD_MSCn_GetCacheInfo (uint32_t *buffer, uint32_t *size);
761 
767 bool USBD_MSCn_GetMediaCapacity (uint32_t *block_count, uint32_t *block_size);
768 
775 bool USBD_MSCn_Read (uint32_t lba, uint32_t cnt, uint8_t *buf);
776 
783 bool USBD_MSCn_Write (uint32_t lba, uint32_t cnt, const uint8_t *buf);
784 
793 uint32_t USBD_MSCn_CheckMedia (void);
794 
795 #endif // __DOXYGEN
796 
797 
798 // ==== USB Device Custom Class Functions ====
799 
800 #ifdef __DOXYGEN__
801 
802 // following functions are available for each instance of a Custom class.
803 // generic prefix USBD_CustomClassn is USBD_CustomClass0 for Custom class instance 0.
804 
807 void USBD_CustomClassn_Initialize (void);
808 
812 
815 void USBD_CustomClassn_EventReset (void);
816 
822 void USBD_CustomClassn_EventEndpointStart (uint8_t ep_addr);
823 
829 void USBD_CustomClassn_EventEndpointStop (uint8_t ep_addr);
830 
839 usbdRequestStatus USBD_CustomClassn_Endpoint0_SetupPacketReceived (const USB_SETUP_PACKET *setup_packet, uint8_t **buf, uint32_t *len);
840 
845 
853 usbdRequestStatus USBD_CustomClassn_Endpoint0_OutDataReceived (uint32_t len);
854 
862 usbdRequestStatus USBD_CustomClassn_Endpoint0_InDataSent (uint32_t len);
863 
868 void USBD_CustomClassn_Endpoint1_Event (uint32_t event);
869 void USBD_CustomClassn_Endpoint2_Event (uint32_t event);
870 void USBD_CustomClassn_Endpoint3_Event (uint32_t event);
871 void USBD_CustomClassn_Endpoint4_Event (uint32_t event);
872 void USBD_CustomClassn_Endpoint5_Event (uint32_t event);
873 void USBD_CustomClassn_Endpoint6_Event (uint32_t event);
874 void USBD_CustomClassn_Endpoint7_Event (uint32_t event);
875 void USBD_CustomClassn_Endpoint8_Event (uint32_t event);
876 void USBD_CustomClassn_Endpoint9_Event (uint32_t event);
877 void USBD_CustomClassn_Endpoint10_Event (uint32_t event);
878 void USBD_CustomClassn_Endpoint11_Event (uint32_t event);
879 void USBD_CustomClassn_Endpoint12_Event (uint32_t event);
880 void USBD_CustomClassn_Endpoint13_Event (uint32_t event);
881 void USBD_CustomClassn_Endpoint14_Event (uint32_t event);
882 void USBD_CustomClassn_Endpoint15_Event (uint32_t event);
883 
884 #endif // __DOXYGEN
885 
894 extern usbStatus USBD_EndpointRead (uint8_t device, uint8_t ep_addr, uint8_t *buf, uint32_t len);
895 
902 extern uint32_t USBD_EndpointReadGetResult (uint8_t device, uint8_t ep_addr);
903 
912 extern usbStatus USBD_EndpointWrite (uint8_t device, uint8_t ep_addr, const uint8_t *buf, uint32_t len);
913 
920 extern uint32_t USBD_EndpointWriteGetResult (uint8_t device, uint8_t ep_addr);
921 
929 extern usbStatus USBD_EndpointStall (uint8_t device, uint8_t ep_addr, bool stall);
930 
937 extern usbStatus USBD_EndpointAbort (uint8_t device, uint8_t ep_addr);
938 
939 
940 // ==== USB Host Functions ====
941 
945 extern usbStatus USBH_Initialize (uint8_t ctrl);
946 
950 extern usbStatus USBH_Uninitialize (uint8_t ctrl);
951 
955 extern usbStatus USBH_GetDeviceStatus (uint8_t device);
956 
957 
958 // ==== USB Host Mass Storage Functions ====
959 
963 extern usbStatus USBH_MSC_GetDeviceStatus (uint8_t instance);
964 
971 extern usbStatus USBH_MSC_Read (uint8_t instance, uint32_t lba, uint32_t cnt, uint8_t *buf);
972 
979 extern usbStatus USBH_MSC_Write (uint8_t instance, uint32_t lba, uint32_t cnt, const uint8_t *buf);
980 
986 extern usbStatus USBH_MSC_ReadCapacity (uint8_t instance, uint32_t *block_count, uint32_t *block_size);
987 
988 
989 // ==== USB Host Human Interface Device Functions ====
990 
994 extern usbStatus USBH_HID_GetDeviceStatus (uint8_t instance);
995 
1003 extern int32_t USBH_HID_Read (uint8_t instance, uint8_t *buf, int32_t len);
1004 
1012 extern int32_t USBH_HID_Write (uint8_t instance, const uint8_t *buf, int32_t len);
1013 
1019 extern int USBH_HID_GetKeyboardKey (uint8_t instance);
1020 
1022 typedef struct _usbHID_MouseState {
1023  uint8_t button;
1024  int16_t x;
1025  int16_t y;
1027 
1032 extern usbStatus USBH_HID_GetMouseState (uint8_t instance, usbHID_MouseState *state);
1033 
1038 extern void USBH_HID_ParseReportDescriptor (uint8_t instance, uint8_t *ptr_hid_report_desc);
1039 
1044 extern void USBH_HID_DataReceived (uint8_t instance, uint32_t len);
1045 
1046 
1047 // ==== USB Host Communication Device Class (Abstract Control Model) Functions ====
1048 
1052 extern usbStatus USBH_CDC_ACM_GetDeviceStatus (uint8_t instance);
1053 
1059 extern usbStatus USBH_CDC_ACM_Send (uint8_t instance, const uint8_t *data, uint32_t num);
1060 
1064 extern uint32_t USBH_CDC_ACM_GetTxCount (uint8_t instance);
1065 
1071 extern usbStatus USBH_CDC_ACM_Receive (uint8_t instance, uint8_t *data, uint32_t num);
1072 
1076 extern uint32_t USBH_CDC_ACM_GetRxCount (uint8_t instance);
1077 
1082 extern usbStatus USBH_CDC_ACM_SetLineCoding (uint8_t instance, CDC_LINE_CODING *line_coding);
1083 
1088 extern usbStatus USBH_CDC_ACM_GetLineCoding (uint8_t instance, CDC_LINE_CODING *line_coding);
1089 
1096 extern usbStatus USBH_CDC_ACM_SetControlLineState (uint8_t instance, uint16_t state);
1097 
1110 extern void USBH_CDC_ACM_Notify (uint8_t instance, uint16_t status);
1111 
1118 extern usbStatus USBH_CDC_ACM_SendBreak (uint8_t instance, uint16_t duration);
1119 
1120 
1121 // ==== USB Host Custom Class Functions ====
1122 
1126 extern usbStatus USBH_CustomClass_GetDeviceStatus (uint8_t instance);
1127 
1135 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);
1136 
1141 extern usbStatus USBH_CustomClass_Unconfigure (uint8_t instance);
1142 
1147 extern usbStatus USBH_CustomClass_Initialize (uint8_t instance);
1148 
1153 extern usbStatus USBH_CustomClass_Uninitialize (uint8_t instance);
1154 
1170 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);
1171 
1181 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);
1182 
1187 extern usbStatus USBH_PipeDelete (uint8_t ctrl, USBH_PIPE *ptr_pipe);
1188 
1193 extern usbStatus USBH_PipeReset (uint8_t ctrl, USBH_PIPE *ptr_pipe);
1194 
1201 extern usbStatus USBH_PipeReceive (uint8_t ctrl, USBH_PIPE *ptr_pipe, uint8_t *buf, uint32_t len);
1202 
1207 extern uint32_t USBH_PipeReceiveGetResult (uint8_t ctrl, const USBH_PIPE *ptr_pipe);
1208 
1215 extern usbStatus USBH_PipeSend (uint8_t ctrl, USBH_PIPE *ptr_pipe, const uint8_t *buf, uint32_t len);
1216 
1221 extern uint32_t USBH_PipeSendGetResult (uint8_t ctrl, const USBH_PIPE *ptr_pipe);
1222 
1227 extern usbStatus USBH_PipeAbort (uint8_t ctrl, const USBH_PIPE *ptr_pipe);
1228 
1234 extern usbStatus USBH_DefaultPipeReceive (uint8_t ctrl, uint8_t *buf, uint32_t len);
1235 
1239 extern uint32_t USBH_DefaultPipeReceiveGetResult (uint8_t ctrl);
1240 
1245 extern usbStatus USBH_DefaultPipeSendSetup (uint8_t ctrl, const USB_SETUP_PACKET *setup_packet);
1246 
1252 extern usbStatus USBH_DefaultPipeSend (uint8_t ctrl, const uint8_t *buf, uint32_t len);
1253 
1257 extern uint32_t USBH_DefaultPipeSendGetResult (uint8_t ctrl);
1258 
1262 extern usbStatus USBH_DefaultPipeAbort (uint8_t ctrl);
1263 
1270 extern usbStatus USBH_ControlTransfer (uint8_t ctrl, const USB_SETUP_PACKET *setup_packet, uint8_t *data, uint32_t len);
1271 
1278 extern usbStatus USBH_DeviceRequest_GetStatus (uint8_t ctrl, uint8_t recipient, uint8_t index, uint8_t *ptr_stat_dat);
1279 
1286 extern usbStatus USBH_DeviceRequest_ClearFeature (uint8_t ctrl, uint8_t recipient, uint8_t index, uint8_t feature_selector);
1287 
1294 extern usbStatus USBH_DeviceRequest_SetFeature (uint8_t ctrl, uint8_t recipient, uint8_t index, uint8_t feature_selector);
1295 
1300 extern usbStatus USBH_DeviceRequest_SetAddress (uint8_t ctrl, uint8_t device_address);
1301 
1311 extern usbStatus USBH_DeviceRequest_GetDescriptor (uint8_t ctrl, uint8_t recipient, uint8_t descriptor_type, uint8_t descriptor_index, uint8_t language_id, uint8_t *descriptor_data, uint16_t descriptor_length);
1312 
1322 extern usbStatus USBH_DeviceRequest_SetDescriptor (uint8_t ctrl, uint8_t recipient, uint8_t descriptor_type, uint8_t descriptor_index, uint8_t language_id, uint8_t *descriptor_data, uint16_t descriptor_length);
1323 
1328 extern usbStatus USBH_DeviceRequest_GetConfiguration (uint8_t ctrl, uint8_t *ptr_configuration);
1329 
1334 extern usbStatus USBH_DeviceRequest_SetConfiguration (uint8_t ctrl, uint8_t configuration);
1335 
1341 extern usbStatus USBH_DeviceRequest_GetInterface (uint8_t ctrl, uint8_t index, uint8_t *ptr_alternate);
1342 
1348 extern usbStatus USBH_DeviceRequest_SetInterface (uint8_t ctrl, uint8_t index, uint8_t alternate);
1349 
1355 extern usbStatus USBH_DeviceRequest_SynchFrame (uint8_t ctrl, uint8_t index, uint8_t *ptr_frame_number);
1356 
1357 #ifdef __cplusplus
1358 }
1359 #endif
1360 
1361 #endif