VSF Documented
vsf_template_usb.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2022 by VSF Team *
3 * *
4 * Licensed under the Apache License, Version 2.0 (the "License"); *
5 * you may not use this file except in compliance with the License. *
6 * You may obtain a copy of the License at *
7 * *
8 * http://www.apache.org/licenses/LICENSE-2.0 *
9 * *
10 * Unless required by applicable law or agreed to in writing, software *
11 * distributed under the License is distributed on an "AS IS" BASIS, *
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13 * See the License for the specific language governing permissions and *
14 * limitations under the License. *
15 * *
16 ****************************************************************************/
17
18#ifndef __VSF_TEMPLATE_USB_H__
19#define __VSF_TEMPLATE_USB_H__
20
21/*============================ INCLUDES ======================================*/
22
23#include "hal/arch/vsf_arch.h"
24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
29/*============================ MACROS ========================================*/
30/*============================ MACROFIED FUNCTIONS ===========================*/
31
32// USB_DC_SPEED_XXXX is compatible with USB_SPEED_XXXX
33#define USB_DC_SPEED_UNKNOWN 0
34#define USB_DC_SPEED_LOW 1
35#define USB_DC_SPEED_FULL 2
36#define USB_DC_SPEED_HIGH 3
37#define USB_DC_SPEED_SUPER 4
38
39#define __USB_HC_IP_FUNC_DEF(__N, __VALUE) \
40static vsf_err_t usb_hc##__N##_init(usb_hc_ip_cfg_t *cfg); \
41static void usb_hc##__N##_get_info(usb_hc_ip_info_t *info); \
42static void usb_hc##__N##_irq_enable(void); \
43static void usb_hc##__N##_irq_disable(void); \
44static void usb_hc##__N##_irq(void);
45
46#define __USB_HC_IP_INTERFACE_FUNC_DEF(__N, __VALUE) \
47 { \
48 .Init = &usb_hc##__N##_init, \
49 .GetInfo = &usb_hc##__N##_get_info, \
50 .IrqEnable = &usb_hc##__N##_irq_enable, \
51 .IrqDisable = &usb_hc##__N##_irq_disable, \
52 .Irq = &usb_hc##__N##_irq, \
53 }
54
55#define __USB_HC_IP_BODY_EX(__N, __OBJ, __HEADER) \
56static vsf_err_t usb_hc##__N##_init(usb_hc_ip_cfg_t *cfg) \
57{ return __HEADER##_init(&(__OBJ), cfg); } \
58static void usb_hc##__N##_get_info(usb_hc_ip_info_t *info) \
59{ __HEADER##_get_info(&(__OBJ), info); } \
60static void usb_hc##__N##_irq_enable(void) \
61{ __HEADER##_irq_enable(&(__OBJ)); } \
62static void usb_hc##__N##_irq_disable(void) \
63{ __HEADER##_irq_disable(&(__OBJ)); } \
64static void usb_hc##__N##_irq(void) \
65{ __HEADER##_irq(&(__OBJ)); }
66
67#define __USB_HC_IP_BODY(__N, __HEADER) \
68 __USB_HC_IP_BODY_EX(__N, USB_HC##__N##_IP, __HEADER)
69#define __USB_OTG_HC_IP_BODY(__N, __HEADER) \
70 __USB_HC_IP_BODY_EX(__N, USB_OTG##__N##_IP, __HEADER)
71
72
73
74#define __USB_DC_IP_FUNC_DEF(__N, __VALUE) \
75static vsf_err_t usb_dc##__N##_init(usb_dc_ip_cfg_t *cfg); \
76static void usb_dc##__N##_fini(void); \
77static void usb_dc##__N##_get_info(usb_dc_ip_info_t *info); \
78static void usb_dc##__N##_connect(void); \
79static void usb_dc##__N##_disconnect(void); \
80static void usb_dc##__N##_irq_enable(void); \
81static void usb_dc##__N##_irq_disable(void); \
82static void usb_dc##__N##_irq(void);
83
84#define __USB_DC_IP_INTERFACE_FUNC_DEF(__N, __VALUE) \
85 { \
86 .Init = &usb_dc##__N##_init, \
87 .Fini = &usb_dc##__N##_fini, \
88 .GetInfo = &usb_dc##__N##_get_info, \
89 .Connect = &usb_dc##__N##_connect, \
90 .Disconnect = &usb_dc##__N##_disconnect, \
91 .IrqEnable = &usb_dc##__N##_irq_enable, \
92 .IrqDisable = &usb_dc##__N##_irq_disable, \
93 .Irq = &usb_dc##__N##_irq, \
94 }
95
96#define __USB_DC_IP_BODY_EX(__N, __OBJ, __HEADER) \
97static vsf_err_t usb_dc##__N##_init(usb_dc_ip_cfg_t *cfg) \
98{ return __HEADER##_init(&(__OBJ), cfg); } \
99static void usb_dc##__N##_fini(void) \
100{ __HEADER##_fini(&(__OBJ)); } \
101static void usb_dc##__N##_get_info(usb_dc_ip_info_t *info) \
102{ __HEADER##_get_info(&(__OBJ), info); } \
103static void usb_dc##__N##_connect(void) \
104{ __HEADER##_connect(&(__OBJ)); } \
105static void usb_dc##__N##_disconnect(void) \
106{ __HEADER##_disconnect(&(__OBJ)); } \
107static void usb_dc##__N##_irq_enable(void) \
108{ __HEADER##_irq_enable(&(__OBJ)); } \
109static void usb_dc##__N##_irq_disable(void) \
110{ __HEADER##_irq_disable(&(__OBJ)); } \
111static void usb_dc##__N##_irq(void) \
112{ __HEADER##_irq(&(__OBJ)); }
113
114#define __USB_DC_IP_BODY(__N, __HEADER) \
115 __USB_DC_IP_BODY_EX(__N, USB_DC##__N##_IP, __HEADER)
116#define __USB_OTG_DC_IP_BODY(__N, __HEADER) \
117 __USB_DC_IP_BODY_EX(__N, USB_OTG##__N##_IP, __HEADER)
118
119#define __USB_DC_FROM_IP(__N, __OBJ, __DRV_NAME, __HEADER) \
120__USB_DC_FUNC_DEF(__N, NULL) \
121const i_usb_dc_t __DRV_NAME = __USB_DC_INTERFACE_FUNC_DEF(__N, NULL); \
122__USB_DC_BODY_EX(__N, __HEADER, __OBJ)
123
124
125#define __USB_DC_FUNC_DEF(__N, __VALUE) \
126static vsf_err_t usb_dc##__N##_init(usb_dc_cfg_t *cfg); \
127static void usb_dc##__N##_fini(void); \
128static void usb_dc##__N##_reset(usb_dc_cfg_t *cfg); \
129 \
130static void usb_dc##__N##_connect(void); \
131static void usb_dc##__N##_disconnect(void); \
132static void usb_dc##__N##_wakeup(void); \
133 \
134static void usb_dc##__N##_set_address(uint_fast8_t addr); \
135static uint_fast8_t usb_dc##__N##_get_address(void); \
136 \
137static uint_fast16_t usb_dc##__N##_get_frame_number(void); \
138static uint_fast8_t usb_dc##__N##_get_mframe_number(void); \
139 \
140static void usb_dc##__N##_get_setup(uint8_t *buffer); \
141static void usb_dc##__N##_status_stage(bool is_in); \
142 \
143static uint_fast8_t usb_dc##__N##_ep_get_feature( uint_fast8_t ep, \
144 uint_fast8_t feature); \
145static vsf_err_t usb_dc##__N##_ep_add( uint_fast8_t ep, \
146 usb_ep_type_t type, \
147 uint_fast16_t size); \
148static uint_fast16_t usb_dc##__N##_ep_get_size(uint_fast8_t ep); \
149 \
150static vsf_err_t usb_dc##__N##_ep_set_stall(uint_fast8_t ep); \
151static bool usb_dc##__N##_ep_is_stalled(uint_fast8_t ep); \
152static vsf_err_t usb_dc##__N##_ep_clear_stall(uint_fast8_t ep); \
153 \
154static uint_fast32_t usb_dc##__N##_ep_get_data_size(uint_fast8_t ep); \
155static vsf_err_t usb_dc##__N##_ep_transaction_read_buffer(uint_fast8_t ep, \
156 uint8_t *buffer, \
157 uint_fast16_t size);\
158static vsf_err_t usb_dc##__N##_ep_transaction_enable_out(uint_fast8_t ep); \
159 \
160static vsf_err_t usb_dc##__N##_ep_transaction_set_data_size( \
161 uint_fast8_t ep, \
162 uint_fast16_t size);\
163static vsf_err_t usb_dc##__N##_ep_transaction_write_buffer( \
164 uint_fast8_t ep, \
165 uint8_t *buffer, \
166 uint_fast16_t size);\
167 \
168static vsf_err_t usb_dc##__N##_ep_transfer_recv( uint_fast8_t ep, \
169 uint8_t *buffer, \
170 uint_fast32_t size); \
171static vsf_err_t usb_dc##__N##_ep_transfer_send( uint_fast8_t ep, \
172 uint8_t *buffer, \
173 uint_fast32_t size, \
174 bool zlp); \
175 \
176static void usb_dc##__N##_irq(void);
177
178#define __USB_DC_INTERFACE_FUNC_DEF(__N, __VALUE) \
179 { \
180 .Init = &usb_dc##__N##_init, \
181 .Fini = &usb_dc##__N##_fini, \
182 .Reset = &usb_dc##__N##_reset, \
183 .Connect = &usb_dc##__N##_connect, \
184 .Disconnect = &usb_dc##__N##_disconnect, \
185 .Wakeup = &usb_dc##__N##_wakeup, \
186 .SetAddress = &usb_dc##__N##_set_address, \
187 .GetAddress = &usb_dc##__N##_get_address, \
188 .GetFrameNo = &usb_dc##__N##_get_frame_number, \
189 .GetMicroFrameNo= &usb_dc##__N##_get_mframe_number, \
190 .GetSetup = &usb_dc##__N##_get_setup, \
191 .StatusStage = &usb_dc##__N##_status_stage, \
192 \
193 .Ep.GetFeature = &usb_dc##__N##_ep_get_feature, \
194 .Ep.Add = &usb_dc##__N##_ep_add, \
195 .Ep.GetSize = &usb_dc##__N##_ep_get_size, \
196 .Ep.SetStall = &usb_dc##__N##_ep_set_stall, \
197 .Ep.IsStalled = &usb_dc##__N##_ep_is_stalled, \
198 .Ep.ClearStall = &usb_dc##__N##_ep_clear_stall, \
199 .Ep.GetDataSize = &usb_dc##__N##_ep_get_data_size, \
200 .Ep.Transaction.ReadBuffer = \
201 &usb_dc##__N##_ep_transaction_read_buffer, \
202 .Ep.Transaction.EnableOut = \
203 &usb_dc##__N##_ep_transaction_enable_out, \
204 .Ep.Transaction.SetDataSize = \
205 &usb_dc##__N##_ep_transaction_set_data_size, \
206 .Ep.Transaction.WriteBuffer = \
207 &usb_dc##__N##_ep_transaction_write_buffer, \
208 .Ep.Transfer.Recv = \
209 &usb_dc##__N##_ep_transfer_recv, \
210 .Ep.Transfer.Send = \
211 &usb_dc##__N##_ep_transfer_send, \
212 \
213 .Irq = &usb_dc##__N##_irq, \
214 }
215
216#define __USB_DC_BODY_EX(__N, __HEADER, __OBJ) \
217static vsf_err_t usb_dc##__N##_init(usb_dc_cfg_t *cfg) \
218{ return __HEADER##_init(&(__OBJ), cfg); } \
219static void usb_dc##__N##_fini(void) \
220{ __HEADER##_fini(&(__OBJ)); } \
221static void usb_dc##__N##_reset(usb_dc_cfg_t *cfg) \
222{ __HEADER##_reset(&(__OBJ), cfg); } \
223static void usb_dc##__N##_connect(void) \
224{ __HEADER##_connect(&(__OBJ)); } \
225static void usb_dc##__N##_disconnect(void) \
226{ __HEADER##_disconnect(&(__OBJ)); } \
227static void usb_dc##__N##_wakeup(void) \
228{ __HEADER##_wakeup(&(__OBJ)); } \
229static void usb_dc##__N##_set_address(uint_fast8_t addr) \
230{ __HEADER##_set_address(&(__OBJ), addr); } \
231static uint_fast8_t usb_dc##__N##_get_address(void) \
232{ return __HEADER##_get_address(&(__OBJ)); } \
233static uint_fast16_t usb_dc##__N##_get_frame_number(void) \
234{ return __HEADER##_get_frame_number(&(__OBJ)); } \
235static uint_fast8_t usb_dc##__N##_get_mframe_number(void) \
236{ return __HEADER##_get_mframe_number(&(__OBJ)); } \
237static void usb_dc##__N##_get_setup(uint8_t *buffer) \
238{ __HEADER##_get_setup(&(__OBJ), buffer); } \
239static void usb_dc##__N##_status_stage(bool is_in) \
240{ __HEADER##_status_stage(&(__OBJ), is_in); } \
241static uint_fast8_t usb_dc##__N##_ep_get_feature( uint_fast8_t ep, \
242 uint_fast8_t feature) \
243{ return __HEADER##_ep_get_feature(&(__OBJ), ep, feature); } \
244static vsf_err_t usb_dc##__N##_ep_add( uint_fast8_t ep, \
245 usb_ep_type_t type, \
246 uint_fast16_t size) \
247{ return __HEADER##_ep_add(&(__OBJ), ep, type, size); } \
248static uint_fast16_t usb_dc##__N##_ep_get_size(uint_fast8_t ep) \
249{ return __HEADER##_ep_get_size(&(__OBJ), ep); } \
250static vsf_err_t usb_dc##__N##_ep_set_stall(uint_fast8_t ep) \
251{ return __HEADER##_ep_set_stall(&(__OBJ), ep); } \
252static bool usb_dc##__N##_ep_is_stalled(uint_fast8_t ep) \
253{ return __HEADER##_ep_is_stalled(&(__OBJ), ep); } \
254static vsf_err_t usb_dc##__N##_ep_clear_stall(uint_fast8_t ep) \
255{ return __HEADER##_ep_clear_stall(&(__OBJ), ep); } \
256static uint_fast32_t usb_dc##__N##_ep_get_data_size(uint_fast8_t ep) \
257{ return __HEADER##_ep_get_data_size(&(__OBJ), ep); } \
258static vsf_err_t usb_dc##__N##_ep_transaction_read_buffer( \
259 uint_fast8_t ep, \
260 uint8_t *buffer, \
261 uint_fast16_t size) \
262{ return __HEADER##_ep_transaction_read_buffer(&(__OBJ), ep, buffer, size); } \
263static vsf_err_t usb_dc##__N##_ep_transaction_enable_out(uint_fast8_t ep) \
264{ return __HEADER##_ep_transaction_enable_out(&(__OBJ), ep); } \
265static vsf_err_t usb_dc##__N##_ep_transaction_set_data_size(uint_fast8_t ep, \
266 uint_fast16_t size) \
267{ return __HEADER##_ep_transaction_set_data_size(&(__OBJ), ep, size); } \
268static vsf_err_t usb_dc##__N##_ep_transaction_write_buffer( uint_fast8_t ep, \
269 uint8_t *buffer, \
270 uint_fast16_t size) \
271{ return __HEADER##_ep_transaction_write_buffer(&(__OBJ), ep, buffer, size); } \
272static vsf_err_t usb_dc##__N##_ep_transfer_recv(uint_fast8_t ep, \
273 uint8_t *buffer, \
274 uint_fast32_t size) \
275{ return __HEADER##_ep_transfer_recv(&(__OBJ), ep, buffer, size); } \
276static vsf_err_t usb_dc##__N##_ep_transfer_send(uint_fast8_t ep, \
277 uint8_t *buffer, \
278 uint_fast32_t size, \
279 bool zlp) \
280{ return __HEADER##_ep_transfer_send(&(__OBJ), ep, buffer, size, zlp); } \
281static void usb_dc##__N##_irq(void) \
282{ __HEADER##_irq(&(__OBJ)); }
283
284#define __USB_DC_BODY(__N, __HEADER) \
285 __USB_DC_BODY_EX(__N, __HEADER, USB_DC##__N)
286
287/*============================ TYPES =========================================*/
288
289typedef enum {
292
293typedef enum {
299
300typedef enum {
316} usb_evt_t;
317
318typedef enum {
323
324typedef void (*usb_ip_irqhandler_t)( void *param);
325typedef void (*usb_dc_evthandler_t)( void *param,
326 usb_evt_t evt,
328
332typedef struct usb_dc_cfg_t {
335 void *param;
336
340
343
344def_interface(i_usb_dc_t)
345
346 vsf_err_t (*Init) (usb_dc_cfg_t *cfg);
347 void (*Fini) (void);
348 void (*Reset) (usb_dc_cfg_t *cfg);
349
350 void (*Connect) (void);
351 void (*Disconnect) (void);
352 void (*Wakeup) (void);
353
354 void (*SetAddress) (uint_fast8_t addr);
356
359
360 void (*GetSetup) (uint8_t *buffer);
361 void (*StatusStage) (bool is_in);
362
363 struct {
365 uint_fast8_t feature);
366
371
375
379
380 struct {
382 uint8_t *buffer,
388 uint8_t *buffer,
391
392 struct {
394 uint8_t *buffer,
397 uint8_t *buffer,
399 bool zlp);
401 } Ep;
402
404 void (*Irq) (void);
405
406end_def_interface(i_usb_dc_t)
408
409
410
411
412
414typedef struct usb_dc_ip_cfg_t {
415 vsf_arch_prio_t priority;
416 usb_dc_speed_t speed;
417 usb_ip_irqhandler_t irqhandler;
418 void *param;
421
424typedef struct usb_dc_ip_info_t {
425 void *regbase;
427 bool is_dma;
430
433def_interface(i_usb_dc_ip_t)
434
435
437 void (*Fini) (void);
438
439 void (*GetInfo) (usb_dc_ip_info_t *info);
440
441 void (*Connect) (void);
442 void (*Disconnect) (void);
443
445 void (*IrqEnable) (void);
446 void (*IrqDisable) (void);
447 void (*Irq) (void);
448
449end_def_interface(i_usb_dc_ip_t)
451
452
453
455typedef struct usb_hc_ip_cfg_t {
456 vsf_arch_prio_t priority;
457 usb_ip_irqhandler_t irqhandler;
458 void *param;
461
464typedef struct usb_hc_ip_info_t {
465 void *regbase;
467 bool is_dma;
470
473def_interface(i_usb_hc_ip_t)
474
475
477
479 void (*GetInfo) (usb_hc_ip_info_t *info);
480
482 void (*IrqEnable) (void);
483 void (*IrqDisable) (void);
484 void (*Irq) (void);
485
486end_def_interface(i_usb_hc_ip_t)
488
489/*============================ GLOBAL VARIABLES ==============================*/
490/*============================ LOCAL VARIABLES ===============================*/
491/*============================ PROTOTYPES ====================================*/
492
493#ifdef __cplusplus
494}
495#endif
496
497#endif
498/* EOF */
vsf_err_t
Definition __type.h:42
vsf_err_t(* Init)(vsf_adc_cfg_t *pCfg)
Definition adc_interface.h:38
bool
Definition type.h:60
vsf_arch_prio_t
Definition cortex_a_generic.h:88
end_def_interface(i_pm_wakeup_t) struct vsf_pm_pclk_cfg_t
Definition device.h:249
unsigned char uint8_t
Definition lvgl.h:40
unsigned char uint_fast8_t
Definition stdint.h:23
unsigned int uint_fast32_t
Definition stdint.h:27
unsigned short uint_fast16_t
Definition stdint.h:25
Definition vsf_template_usb.h:332
vsf_arch_prio_t priority
interrupt priority
Definition vsf_template_usb.h:333
usb_dc_evthandler_t evthandler
evthandler function
Definition vsf_template_usb.h:334
void * param
dcd related parameters
Definition vsf_template_usb.h:335
usb_dc_speed_t speed
speed
Definition vsf_template_usb.h:337
Definition vsf_template_usb.h:424
void * regbase
Definition vsf_template_usb.h:425
bool is_dma
Definition vsf_template_usb.h:427
uint8_t ep_num
Definition vsf_template_usb.h:426
Definition vsf_template_usb.h:464
uint8_t ep_num
Definition vsf_template_usb.h:466
void * regbase
Definition vsf_template_usb.h:465
bool is_dma
Definition vsf_template_usb.h:467
vk_av_control_value_t value
Definition vsf_audio.h:171
vk_av_control_type_t type
Definition vsf_audio.h:170
uint32_t size
Definition vsf_memfs.h:50
void(* Fini)(void)
Definition vsf_template_usb.h:347
void(* Connect)(void)
Definition vsf_template_usb.h:350
void(* Irq)(void)
irq handler
Definition vsf_template_usb.h:404
vsf_err_t(* SetDataSize)(uint_fast8_t ep, uint_fast16_t size)
Definition vsf_template_usb.h:385
struct @571::@577 Transfer
uint_fast8_t(* GetFeature)(uint_fast8_t ep, uint_fast8_t feature)
Definition vsf_template_usb.h:364
usb_ep_type_t
Definition vsf_template_usb.h:293
@ USB_EP_TYPE_CONTROL
Definition vsf_template_usb.h:294
@ USB_EP_TYPE_BULK
Definition vsf_template_usb.h:296
@ USB_EP_TYPE_INTERRUPT
Definition vsf_template_usb.h:295
@ USB_EP_TYPE_ISO
Definition vsf_template_usb.h:297
usb_dc_err_t
Definition vsf_template_usb.h:318
@ USB_DC_ERR_ERROR
Definition vsf_template_usb.h:319
@ USB_DC_ERR_SOF_TO
Definition vsf_template_usb.h:321
@ USB_DC_ERR_INVALID_CRC
Definition vsf_template_usb.h:320
void(* IrqEnable)(void)
irq handler
Definition vsf_template_usb.h:445
vsf_err_t(* SetStall)(uint_fast8_t ep)
Definition vsf_template_usb.h:372
usb_evt_t
Definition vsf_template_usb.h:300
@ USB_ON_SOF
Definition vsf_template_usb.h:308
@ USB_ON_ERROR
Definition vsf_template_usb.h:305
@ USB_ON_SETUP
Definition vsf_template_usb.h:304
@ USB_ON_SUSPEND
Definition vsf_template_usb.h:306
@ USB_ON_ATTACH
Definition vsf_template_usb.h:301
@ USB_ON_RESUME
Definition vsf_template_usb.h:307
@ USB_ON_STATUS
Definition vsf_template_usb.h:312
@ USB_ON_RESET
Definition vsf_template_usb.h:303
@ USB_ON_NAK
Definition vsf_template_usb.h:310
@ USB_ON_IN
Definition vsf_template_usb.h:309
@ USB_ON_OVERFLOW
Definition vsf_template_usb.h:314
@ USB_ON_OUT
Definition vsf_template_usb.h:311
@ USB_USR_EVT
Definition vsf_template_usb.h:315
@ USB_ON_UNDERFLOW
Definition vsf_template_usb.h:313
@ USB_ON_DETACH
Definition vsf_template_usb.h:302
void(* Reset)(usb_dc_cfg_t *cfg)
Definition vsf_template_usb.h:348
uint8_t usb_dc_speed_t
Definition vsf_template_usb.h:329
void(* Wakeup)(void)
Definition vsf_template_usb.h:352
uint_fast16_t(* GetFrameNo)(void)
Definition vsf_template_usb.h:357
struct @571 Ep
void(* usb_ip_irqhandler_t)(void *param)
Definition vsf_template_usb.h:324
usb_hc_ip_cfg_t
Definition vsf_template_usb.h:459
void(* IrqDisable)(void)
Definition vsf_template_usb.h:446
vsf_err_t(* ReadBuffer)(uint_fast8_t ep, uint8_t *buffer, uint_fast16_t size)
Definition vsf_template_usb.h:381
usb_dc_ip_cfg_t
Definition vsf_template_usb.h:419
uint_fast32_t(* GetDataSize)(uint_fast8_t ep)
Definition vsf_template_usb.h:378
void(* StatusStage)(bool is_in)
Definition vsf_template_usb.h:361
uint_fast8_t(* GetAddress)(void)
Definition vsf_template_usb.h:355
vsf_err_t(* Recv)(uint_fast8_t ep, uint8_t *buffer, uint_fast32_t size)
Definition vsf_template_usb.h:393
vsf_err_t(* ClearStall)(uint_fast8_t ep)
Definition vsf_template_usb.h:374
void(* GetSetup)(uint8_t *buffer)
Definition vsf_template_usb.h:360
void(* SetAddress)(uint_fast8_t addr)
Definition vsf_template_usb.h:354
bool(* IsStalled)(uint_fast8_t ep)
Definition vsf_template_usb.h:373
struct @571::@576 Transaction
usb_dc_feature_t
Definition vsf_template_usb.h:289
@ USB_DC_FEATURE_TRANSFER
Definition vsf_template_usb.h:290
uint_fast8_t(* GetMicroFrameNo)(void)
Definition vsf_template_usb.h:358
void(* GetInfo)(usb_dc_ip_info_t *info)
get register base
Definition vsf_template_usb.h:439
vsf_err_t(* EnableOut)(uint_fast8_t ep)
Definition vsf_template_usb.h:384
vsf_err_t(* Add)(uint_fast8_t ep, usb_ep_type_t type, uint_fast16_t size)
Definition vsf_template_usb.h:367
void(* usb_dc_evthandler_t)(void *param, usb_evt_t evt, uint_fast8_t value)
Definition vsf_template_usb.h:325
vsf_err_t(* Send)(uint_fast8_t ep, uint8_t *buffer, uint_fast32_t size, bool zlp)
Definition vsf_template_usb.h:396
void(* Disconnect)(void)
Definition vsf_template_usb.h:351
uint_fast16_t(* GetSize)(uint_fast8_t ep)
Definition vsf_template_usb.h:370
vsf_err_t(* WriteBuffer)(uint_fast8_t ep, uint8_t *buffer, uint_fast16_t size)
Definition vsf_template_usb.h:387
def_interface(i_usb_dc_t) vsf_err_t(*Init)(usb_dc_cfg_t *cfg)