USB Component  Version 6.7
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.7.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 "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,
40 
53 
56 
58 } usbStatus;
59 
61 #ifdef __BIG_ENDIAN
62  #define U32_LE(v) (uint32_t)(__rev(v))
63  #define U16_LE(v) (uint16_t)(__rev(v) >> 16)
64  #define U32_BE(v) (uint32_t)(v)
65  #define U16_BE(v) (uint16_t)(v)
66 #else
67  #define U32_BE(v) (uint32_t)(__rev(v))
68  #define U16_BE(v) (uint16_t)(__rev(v) >> 16)
69  #define U32_LE(v) (uint32_t)(v)
70  #define U16_LE(v) (uint16_t)(v)
71 #endif
72 
73 // ==== USB Device Constants and Defines ====
74 
76 typedef enum {
82 
84 #define USBD_MSC_MEDIA_READY (1U)
85 #define USBD_MSC_MEDIA_PROTECTED (1U<<1)
86 
87 
88 typedef enum {
93 
94 /* USB Host Constants and Defines */
95 
96 /* USB Host Pipe settings structure */
98 typedef struct {
99  uint32_t hw_handle;
100  uint8_t dev_addr;
101  uint8_t dev_speed;
102  uint8_t hub_addr;
103  uint8_t hub_port;
104  uint8_t bEndpointAddress;
105  uint8_t bmAttributes;
106  uint16_t wMaxPacketSize;
107  uint8_t bInterval;
108  uint32_t transferred;
109  uint8_t active;
110 } USBH_PIPE;
112 
113 /* USB Host Device Instance (DEV) structure */
115 typedef struct {
116  uint8_t ctrl;
117  uint8_t dev_addr;
118  uint8_t dev_speed;
119  uint8_t hub_addr;
120  uint8_t hub_port;
121  struct {
122  uint8_t configured : 1;
123  uint8_t initialized : 1;
124  } state;
125  uint8_t max_packet_size;
126  uint16_t vid;
127  uint16_t pid;
128 
129  uint8_t class_custom;
130  uint8_t class_instance;
131  uint8_t class_driver;
132  uint8_t dev_desc_len;
133  uint8_t cfg_desc_len;
134  osThreadId recovery_thread_id;
135 } USBH_DEV;
137 
138 
139 /* USB Host externally defined variables */
140 
141 /* USB Host number of Custom Class (CLS) instances as defined in USBH_Config_Class.h file */
143 extern const uint8_t usbh_cls_num;
145 
146 
147 // ==== USB Device Functions ====
148 
149 
153 extern usbStatus USBD_Initialize (uint8_t device);
154 
158 extern usbStatus USBD_Uninitialize (uint8_t device);
159 
163 extern usbStatus USBD_Connect (uint8_t device);
164 
168 extern usbStatus USBD_Disconnect (uint8_t device);
169 
174 extern bool USBD_Configured (uint8_t device);
175 
176 #ifdef __DOXYGEN__
177 
178 // following functions are available for each instance of a Device.
179 // generic prefix USBD_Devicen is USBD_Device0 for Device instance 0.
180 
183 void USBD_Devicen_Initialize (void);
184 
187 void USBD_Devicen_Uninitialize (void);
188 
191 void USBD_Devicen_EventReset (void);
192 
201 usbdRequestStatus USBD_Devicen_Endpoint0_SetupPacketReceived (const USB_SETUP_PACKET *setup_packet, uint8_t **buf, int32_t *len);
202 
207 
215 usbdRequestStatus USBD_Devicen_Endpoint0_OutDataReceived (uint32_t len);
216 
224 usbdRequestStatus USBD_Devicen_Endpoint0_InDataSent (uint32_t len);
225 
226 #endif // __DOXYGEN
227 
228 // ==== USB Device Audio Device Functions ====
229 
230 #ifdef __DOXYGEN__
231 
232 // following functions are available for each instance of a ADC class.
233 // generic prefix USBD_ADCn is USBD_ADC0 for ADC class instance 0.
234 
237 void USBD_ADCn_Initialize (void);
238 
241 void USBD_ADCn_Uninitialize (void);
242 
246 void USBD_ADCn_SpeakerStatusEvent (bool active);
247 
255 void USBD_ADCn_SpeakerMuteEvent (uint8_t ch, bool cur);
256 
264 void USBD_ADCn_SpeakerVolumeEvent (uint8_t ch, uint16_t cur);
265 
269 void USBD_ADCn_MicrophoneStatusEvent (bool active);
270 
278 void USBD_ADCn_MicrophoneMuteEvent (uint8_t ch, bool cur);
279 
287 void USBD_ADCn_MicrophoneVolumeEvent (uint8_t ch, uint16_t cur);
288 
291 void USBD_ADCn_ReceivedSamples (void);
292 
293 #endif // __DOXYGEN
294 
306 extern usbStatus USBD_ADC_SpeakerSetVolumeRange (uint8_t instance, uint8_t ch, uint16_t min, uint16_t max, uint16_t res, uint16_t cur);
307 
319 extern usbStatus USBD_ADC_MicrophoneSetVolumeRange (uint8_t instance, uint8_t ch, uint16_t min, uint16_t max, uint16_t res, uint16_t cur);
320 
324 extern uint32_t USBD_ADC_ReceivedSamplesAvailable (uint8_t instance);
325 
329 extern uint32_t USBD_ADC_WrittenSamplesPending (uint8_t instance);
330 
338 extern int32_t USBD_ADC_ReadSamples (uint8_t instance, void *buf, int32_t num);
339 
347 extern int32_t USBD_ADC_WriteSamples (uint8_t instance, const void *buf, int32_t num);
348 
349 
350 // ==== USB Device Communication Device (Abstract Control Model) Functions ====
351 
352 #ifdef __DOXYGEN__
353 
354 // following functions are available for each instance of a CDC class.
355 // generic prefix USBD_CDCn is USBD_CDC0 for CDC class instance 0.
356 
359 void USBD_CDCn_ACM_Initialize (void);
360 
363 void USBD_CDCn_ACM_Uninitialize (void);
364 
367 void USBD_CDCn_ACM_Reset (void);
368 
373 bool USBD_CDCn_ACM_SetLineCoding (CDC_LINE_CODING *line_coding);
374 
379 bool USBD_CDCn_ACM_GetLineCoding (CDC_LINE_CODING *line_coding);
380 
387 bool USBD_CDCn_ACM_SetControlLineState (uint16_t state);
388 
392 void USBD_CDCn_ACM_DataReceived (uint32_t len);
393 
396 void USBD_CDCn_ACM_DataSent (void);
397 
400 void USBD_CDCn_NCM_Initialize (void);
401 
404 void USBD_CDCn_NCM_Uninitialize (void);
405 
408 void USBD_CDCn_NCM_Reset (void);
409 
412 void USBD_CDCn_NCM_Start (void);
413 
416 void USBD_CDCn_NCM_Stop (void);
417 
423 bool USBD_CDCn_NCM_SetEthernetMulticastFilters (const uint8_t *addr_list, uint16_t num_of_filters);
424 
431 bool USBD_CDCn_NCM_SetEthernetPowerManagementPatternFilter (uint16_t filter_number, const uint8_t *pattern_filter, uint16_t pattern_filter_size);
432 
438 bool USBD_CDCn_NCM_GetEthernetPowerManagementPatternFilter (uint16_t filter_number, uint16_t *pattern_active);
439 
444 bool USBD_CDCn_NCM_SetEthernetPacketFilter (uint16_t packet_filter_bitmap);
445 
451 bool USBD_CDCn_NCM_GetEthernetStatistic (uint16_t feature_selector, uint32_t *data);
452 
457 bool USBD_CDCn_NCM_GetNtbParameters (CDC_NCM_NTB_PARAM *ntb_params);
458 
463 bool USBD_CDCn_NCM_GetNetAddress (uint8_t *net_addr);
464 
469 bool USBD_CDCn_NCM_SetNetAddress (const uint8_t *net_addr);
470 
475 bool USBD_CDCn_NCM_GetNtbFormat (uint16_t *ntb_format);
476 
483 bool USBD_CDCn_NCM_SetNtbFormat (uint16_t ntb_format);
484 
489 bool USBD_CDCn_NCM_GetNtbInputSize (uint32_t *ntb_input_size);
490 
495 bool USBD_CDCn_NCM_SetNtbInputSize (uint32_t ntb_input_size);
496 
501 bool USBD_CDCn_NCM_GetMaxDatagramSize (uint16_t *max_datagram_size);
502 
507 bool USBD_CDCn_NCM_SetMaxDatagramSize (uint16_t max_datagram_size);
508 
513 bool USBD_CDCn_NCM_GetCrcMode (uint16_t *crc_mode);
514 
521 bool USBD_CDCn_NCM_SetCrcMode (uint16_t crc_mode);
522 
525 void USBD_CDCn_NCM_NTB_IN_Sent (void);
526 
530 
531 #endif // __DOXYGEN
532 
538 extern int USBD_CDC_ACM_GetChar (uint8_t instance);
539 
546 extern int USBD_CDC_ACM_PutChar (uint8_t instance, int ch);
547 
555 extern int32_t USBD_CDC_ACM_ReadData (uint8_t instance, uint8_t *buf, int32_t len);
556 
564 extern int32_t USBD_CDC_ACM_WriteData (uint8_t instance, const uint8_t *buf, int32_t len);
565 
570 extern int32_t USBD_CDC_ACM_DataAvailable (uint8_t instance);
571 
583 extern usbStatus USBD_CDC_ACM_Notify (uint8_t instance, uint16_t state);
584 
589 extern int32_t USBD_CDC_NCM_NTB_IN_Initialize (uint8_t instance);
590 
591 
597 extern int32_t USBD_CDC_NCM_NTB_IN_CreateNDP (uint8_t instance, uint8_t num_datagrams);
598 
605 extern int32_t USBD_CDC_NCM_NTB_IN_WriteDatagram (uint8_t instance, const uint8_t *buf, uint32_t len);
606 
611 extern int32_t USBD_CDC_NCM_NTB_IN_Send (uint8_t instance);
612 
618 extern int32_t USBD_CDC_NCM_NTB_IN_IsSent (uint8_t instance);
619 
625 extern int32_t USBD_CDC_NCM_NTB_OUT_IsReceived (uint8_t instance);
626 
631 extern int32_t USBD_CDC_NCM_NTB_OUT_Release (uint8_t instance);
632 
637 extern int32_t USBD_CDC_NCM_NTB_OUT_ProcessNDP (uint8_t instance);
638 
642 extern uint32_t USBD_CDC_NCM_NTB_OUT_GetDatagramSize (uint8_t instance);
643 
650 extern int32_t USBD_CDC_NCM_NTB_OUT_ReadDatagram (uint8_t instance, uint8_t *buf, uint32_t max_len);
651 
658 extern int32_t USBD_CDC_NCM_NTB_IN_RawSend (uint8_t instance, const uint8_t *buf, uint32_t len);
659 
663 extern uint32_t USBD_CDC_NCM_NTB_OUT_RawGetSize (uint8_t instance);
664 
671 extern int32_t USBD_CDC_NCM_NTB_OUT_RawReceive (uint8_t instance, uint8_t *buf, uint32_t max_len);
672 
680 extern int32_t USBD_CDC_NCM_Notify_NetworkConnection (uint8_t instance, uint16_t status);
681 
688 extern int32_t USBD_CDC_NCM_Notify_ConnectionSpeedChange (uint8_t instance, uint32_t us_bitrate, uint32_t ds_bitrate);
689 
690 // ==== USB Device Human Interface Device Functions ====
691 
692 #ifdef __DOXYGEN__
693 
694 // following functions are available for each instance of a HID class.
695 // generic prefix USBD_HIDn is USBD_HID0 for HID class instance 0.
696 
699 void USBD_HIDn_Initialize (void);
700 
703 void USBD_HIDn_Uninitialize (void);
704 
718 int32_t USBD_HIDn_GetReport (uint8_t rtype, uint8_t req, uint8_t rid, uint8_t *buf);
719 
732 bool USBD_HIDn_SetReport (uint8_t rtype, uint8_t req, uint8_t rid, const uint8_t *buf, int32_t len);
733 
734 #endif // __DOXYGEN
735 
742 extern usbStatus USBD_HID_GetReportTrigger (uint8_t instance, uint8_t rid, const uint8_t *buf, int32_t len);
743 
744 
745 #ifdef __DOXYGEN__
746 
747 // ==== USB Device Mass Storage Device Functions ====
748 
749 // following functions are available for each instance of a MSC class.
750 // generic prefix USBD_MSCn is USBD_MSC0 for MSC class instance 0.
751 
754 void USBD_MSCn_Initialize (void);
755 
758 void USBD_MSCn_Uninitialize (void);
759 
765 bool USBD_MSCn_GetCacheInfo (uint32_t *buffer, uint32_t *size);
766 
772 bool USBD_MSCn_GetMediaCapacity (uint32_t *block_count, uint32_t *block_size);
773 
780 bool USBD_MSCn_Read (uint32_t lba, uint32_t cnt, uint8_t *buf);
781 
788 bool USBD_MSCn_Write (uint32_t lba, uint32_t cnt, const uint8_t *buf);
789 
798 uint32_t USBD_MSCn_CheckMedia (void);
799 
800 #endif // __DOXYGEN
801 
802 
803 // ==== USB Device Custom Class Functions ====
804 
805 #ifdef __DOXYGEN__
806 
807 // following functions are available for each instance of a Custom class.
808 // generic prefix USBD_CustomClassn is USBD_CustomClass0 for Custom class instance 0.
809 
812 void USBD_CustomClassn_Initialize (void);
813 
817 
820 void USBD_CustomClassn_EventReset (void);
821 
827 void USBD_CustomClassn_EventEndpointStart (uint8_t ep_addr);
828 
834 void USBD_CustomClassn_EventEndpointStop (uint8_t ep_addr);
835 
844 usbdRequestStatus USBD_CustomClassn_Endpoint0_SetupPacketReceived (const USB_SETUP_PACKET *setup_packet, uint8_t **buf, uint32_t *len);
845 
850 
858 usbdRequestStatus USBD_CustomClassn_Endpoint0_OutDataReceived (uint32_t len);
859 
867 usbdRequestStatus USBD_CustomClassn_Endpoint0_InDataSent (uint32_t len);
868 
873 void USBD_CustomClassn_Endpoint1_Event (uint32_t event);
874 void USBD_CustomClassn_Endpoint2_Event (uint32_t event);
875 void USBD_CustomClassn_Endpoint3_Event (uint32_t event);
876 void USBD_CustomClassn_Endpoint4_Event (uint32_t event);
877 void USBD_CustomClassn_Endpoint5_Event (uint32_t event);
878 void USBD_CustomClassn_Endpoint6_Event (uint32_t event);
879 void USBD_CustomClassn_Endpoint7_Event (uint32_t event);
880 void USBD_CustomClassn_Endpoint8_Event (uint32_t event);
881 void USBD_CustomClassn_Endpoint9_Event (uint32_t event);
882 void USBD_CustomClassn_Endpoint10_Event (uint32_t event);
883 void USBD_CustomClassn_Endpoint11_Event (uint32_t event);
884 void USBD_CustomClassn_Endpoint12_Event (uint32_t event);
885 void USBD_CustomClassn_Endpoint13_Event (uint32_t event);
886 void USBD_CustomClassn_Endpoint14_Event (uint32_t event);
887 void USBD_CustomClassn_Endpoint15_Event (uint32_t event);
888 
889 #endif // __DOXYGEN
890 
899 extern usbStatus USBD_EndpointRead (uint8_t device, uint8_t ep_addr, uint8_t *buf, uint32_t len);
900 
907 extern uint32_t USBD_EndpointReadGetResult (uint8_t device, uint8_t ep_addr);
908 
917 extern usbStatus USBD_EndpointWrite (uint8_t device, uint8_t ep_addr, const uint8_t *buf, uint32_t len);
918 
925 extern uint32_t USBD_EndpointWriteGetResult (uint8_t device, uint8_t ep_addr);
926 
934 extern usbStatus USBD_EndpointStall (uint8_t device, uint8_t ep_addr, bool stall);
935 
942 extern usbStatus USBD_EndpointAbort (uint8_t device, uint8_t ep_addr);
943 
944 
945 // ==== USB Host Functions ====
946 
950 extern usbStatus USBH_Initialize (uint8_t ctrl);
951 
955 extern usbStatus USBH_Uninitialize (uint8_t ctrl);
956 
960 extern usbStatus USBH_GetDeviceStatus (uint8_t device);
961 
962 
963 // ==== USB Host Mass Storage Functions ====
964 
968 extern usbStatus USBH_MSC_GetDeviceStatus (uint8_t instance);
969 
976 extern usbStatus USBH_MSC_Read (uint8_t instance, uint32_t lba, uint32_t cnt, uint8_t *buf);
977 
984 extern usbStatus USBH_MSC_Write (uint8_t instance, uint32_t lba, uint32_t cnt, const uint8_t *buf);
985 
991 extern usbStatus USBH_MSC_ReadCapacity (uint8_t instance, uint32_t *block_count, uint32_t *block_size);
992 
993 
994 // ==== USB Host Human Interface Device Functions ====
995 
999 extern usbStatus USBH_HID_GetDeviceStatus (uint8_t instance);
1000 
1008 extern int32_t USBH_HID_Read (uint8_t instance, uint8_t *buf, int32_t len);
1009 
1017 extern int32_t USBH_HID_Write (uint8_t instance, const uint8_t *buf, int32_t len);
1018 
1024 extern int USBH_HID_GetKeyboardKey (uint8_t instance);
1025 
1027 typedef struct _usbHID_MouseState {
1028  uint8_t button;
1029  int16_t x;
1030  int16_t y;
1032 
1037 extern usbStatus USBH_HID_GetMouseState (uint8_t instance, usbHID_MouseState *state);
1038 
1043 extern void USBH_HID_ParseReportDescriptor (uint8_t instance, uint8_t *ptr_hid_report_desc);
1044 
1049 extern void USBH_HID_DataReceived (uint8_t instance, uint32_t len);
1050 
1051 
1052 // ==== USB Host Communication Device Class (Abstract Control Model) Functions ====
1053 
1057 extern usbStatus USBH_CDC_ACM_GetDeviceStatus (uint8_t instance);
1058 
1064 extern usbStatus USBH_CDC_ACM_Send (uint8_t instance, const uint8_t *data, uint32_t num);
1065 
1069 extern uint32_t USBH_CDC_ACM_GetTxCount (uint8_t instance);
1070 
1076 extern usbStatus USBH_CDC_ACM_Receive (uint8_t instance, uint8_t *data, uint32_t num);
1077 
1081 extern uint32_t USBH_CDC_ACM_GetRxCount (uint8_t instance);
1082 
1087 extern usbStatus USBH_CDC_ACM_SetLineCoding (uint8_t instance, CDC_LINE_CODING *line_coding);
1088 
1093 extern usbStatus USBH_CDC_ACM_GetLineCoding (uint8_t instance, CDC_LINE_CODING *line_coding);
1094 
1101 extern usbStatus USBH_CDC_ACM_SetControlLineState (uint8_t instance, uint16_t state);
1102 
1115 extern void USBH_CDC_ACM_Notify (uint8_t instance, uint16_t status);
1116 
1123 extern usbStatus USBH_CDC_ACM_SendBreak (uint8_t instance, uint16_t duration);
1124 
1125 
1126 // ==== USB Host Custom Class Functions ====
1127 
1131 extern usbStatus USBH_CustomClass_GetDeviceStatus (uint8_t instance);
1132 
1140 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);
1141 
1146 extern usbStatus USBH_CustomClass_Unconfigure (uint8_t instance);
1147 
1152 extern usbStatus USBH_CustomClass_Initialize (uint8_t instance);
1153 
1158 extern usbStatus USBH_CustomClass_Uninitialize (uint8_t instance);
1159 
1175 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);
1176 
1186 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);
1187 
1192 extern usbStatus USBH_PipeDelete (uint8_t ctrl, USBH_PIPE *ptr_pipe);
1193 
1198 extern usbStatus USBH_PipeReset (uint8_t ctrl, USBH_PIPE *ptr_pipe);
1199 
1206 extern usbStatus USBH_PipeReceive (uint8_t ctrl, USBH_PIPE *ptr_pipe, uint8_t *buf, uint32_t len);
1207 
1212 extern uint32_t USBH_PipeReceiveGetResult (uint8_t ctrl, const USBH_PIPE *ptr_pipe);
1213 
1220 extern usbStatus USBH_PipeSend (uint8_t ctrl, USBH_PIPE *ptr_pipe, const uint8_t *buf, uint32_t len);
1221 
1226 extern uint32_t USBH_PipeSendGetResult (uint8_t ctrl, const USBH_PIPE *ptr_pipe);
1227 
1232 extern usbStatus USBH_PipeAbort (uint8_t ctrl, const USBH_PIPE *ptr_pipe);
1233 
1239 extern usbStatus USBH_DefaultPipeReceive (uint8_t ctrl, uint8_t *buf, uint32_t len);
1240 
1244 extern uint32_t USBH_DefaultPipeReceiveGetResult (uint8_t ctrl);
1245 
1250 extern usbStatus USBH_DefaultPipeSendSetup (uint8_t ctrl, const USB_SETUP_PACKET *setup_packet);
1251 
1257 extern usbStatus USBH_DefaultPipeSend (uint8_t ctrl, const uint8_t *buf, uint32_t len);
1258 
1262 extern uint32_t USBH_DefaultPipeSendGetResult (uint8_t ctrl);
1263 
1267 extern usbStatus USBH_DefaultPipeAbort (uint8_t ctrl);
1268 
1275 extern usbStatus USBH_ControlTransfer (uint8_t ctrl, const USB_SETUP_PACKET *setup_packet, uint8_t *data, uint32_t len);
1276 
1283 extern usbStatus USBH_DeviceRequest_GetStatus (uint8_t ctrl, uint8_t recipient, uint8_t index, uint8_t *ptr_stat_dat);
1284 
1291 extern usbStatus USBH_DeviceRequest_ClearFeature (uint8_t ctrl, uint8_t recipient, uint8_t index, uint8_t feature_selector);
1292 
1299 extern usbStatus USBH_DeviceRequest_SetFeature (uint8_t ctrl, uint8_t recipient, uint8_t index, uint8_t feature_selector);
1300 
1305 extern usbStatus USBH_DeviceRequest_SetAddress (uint8_t ctrl, uint8_t device_address);
1306 
1316 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);
1317 
1327 extern usbStatus USBH_DeviceRequest_SetDescriptor (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);
1328 
1333 extern usbStatus USBH_DeviceRequest_GetConfiguration (uint8_t ctrl, uint8_t *ptr_configuration);
1334 
1339 extern usbStatus USBH_DeviceRequest_SetConfiguration (uint8_t ctrl, uint8_t configuration);
1340 
1346 extern usbStatus USBH_DeviceRequest_GetInterface (uint8_t ctrl, uint8_t index, uint8_t *ptr_alternate);
1347 
1353 extern usbStatus USBH_DeviceRequest_SetInterface (uint8_t ctrl, uint8_t index, uint8_t alternate);
1354 
1360 extern usbStatus USBH_DeviceRequest_SynchFrame (uint8_t ctrl, uint8_t index, uint8_t *ptr_frame_number);
1361 
1362 #ifdef __cplusplus
1363 }
1364 #endif
1365 
1366 #endif