VSF Documented
vsf_hal_distbus_usbd.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_HAL_DISTBUS_USBD_H__
19#define __VSF_HAL_DISTBUS_USBD_H__
20
21/*============================ INCLUDES ======================================*/
22
24#include "hal/vsf_hal_cfg.h"
25
26#if VSF_USE_USB_DEVICE == ENABLED && VSF_HAL_USE_USBD == ENABLED &&VSF_HAL_DISTBUS_USE_USBD == ENABLED
27
28#if defined(__VSF_HAL_DISTBUS_USBD_CLASS_IMPLEMENT)
29# define __VSF_CLASS_IMPLEMENT__
30#elif defined(__VSF_HAL_DISTBUS_USBD_CLASS_INHERIT__)
31# define __VSF_CLASS_INHERIT__
32#endif
33
34#include "utilities/ooc_class.h"
35
36#ifdef __cplusplus
37extern "C" {
38#endif
39
40/*============================ MACROS ========================================*/
41
42#ifndef VSF_HAL_DISTBUS_USBD_CFG_MULTI_CLASS
43# define VSF_HAL_DISTBUS_USBD_CFG_MULTI_CLASS VSF_USBD_CFG_MULTI_CLASS
44#endif
45
46/*============================ MACROFIED FUNCTIONS ===========================*/
47
48#define vsf_usb_dc_from_distbus_ip(__n, __obj, __drv_name) \
49 __USB_DC_FROM_IP(__n, (__obj), __drv_name, vsf_hal_distbus_usbd)
50
51/*============================ TYPES =========================================*/
52
53#if defined(__VSF_HAL_DISTBUS_USBD_CLASS_IMPLEMENT) || defined(__VSF_HAL_DISTBUS_USBD_CLASS_INHERIT__)
54enum {
55 VSF_HAL_DISTBUS_USBD_CMD_INIT = 0,
56 VSF_HAL_DISTBUS_USBD_CMD_FINI,
57 VSF_HAL_DISTBUS_USBD_CMD_RESET,
58 VSF_HAL_DISTBUS_USBD_CMD_CONNECT,
59 VSF_HAL_DISTBUS_USBD_CMD_DISCONNECT,
60 VSF_HAL_DISTBUS_USBD_CMD_WAKEUP,
61 VSF_HAL_DISTBUS_USBD_CMD_SET_ADDRESS,
62 VSF_HAL_DISTBUS_USBD_CMD_STATUS_STAGE,
63 VSF_HAL_DISTBUS_USBD_CMD_EP_ADD,
64 VSF_HAL_DISTBUS_USBD_CMD_EP_SET_STALL,
65 VSF_HAL_DISTBUS_USBD_CMD_EP_CLEAR_STALL,
66 VSF_HAL_DISTBUS_USBD_CMD_EP_ENABLE_OUT,
67 VSF_HAL_DISTBUS_USBD_CMD_EP_SET_DATA_SIZE,
68 VSF_HAL_DISTBUS_USBD_CMD_EP_WRITE_BUFFER,
69 VSF_HAL_DISTBUS_USBD_CMD_TRANSFER_SEND,
70 VSF_HAL_DISTBUS_USBD_CMD_TRANSFER_RECV,
71 VSF_HAL_DISTBUS_USBD_CMD_ON_EVT,
72
73 VSF_HAL_DISTBUS_USBD_CMD_ADDR_RANGE,
74};
75#endif
76
84
87
89#if VSF_HAL_DISTBUS_USBD_CFG_MULTI_CLASS == ENABLED
90 public_member(
91 implement(vsf_usbd_t)
92 )
93#endif
94 protected_member(
96 )
97 private_member(
98 union {
99 struct {
100 vsf_hal_distbus_usbd_ep_t ep_out[16];
102 };
104 };
105 uint8_t setup[8];
106 uint16_t frame_number;
107 uint16_t mframe_number;
108 uint8_t address;
109 uint8_t ep_feature;
110
111 struct {
112 usb_dc_evthandler_t evthandler;
113 void *param;
114 } callback;
115
116 vsf_distbus_t *distbus;
118};
119
120/*============================ GLOBAL VARIABLES ==============================*/
121/*============================ INCLUDES ======================================*/
122/*============================ PROTOTYPES ====================================*/
123
125
129
133
136
139
141extern void vsf_hal_distbus_usbd_status_stage(vsf_hal_distbus_usbd_t *usbd, bool is_in);
142
146
150
152
157
160
162
163#ifdef __cplusplus
164}
165#endif
166
167#undef __VSF_HAL_DISTBUS_USBD_CLASS_IMPLEMENT
168#undef __VSF_HAL_DISTBUS_USBD_CLASS_INHERIT__
169
170#endif
171#endif
172/* EOF */
vsf_err_t
Definition __type.h:42
Definition vsf_distbus.h:68
Definition vsf_distbus.h:86
Definition vsf_distbus.h:119
Definition vsf_hal_distbus_usbd.h:88
#define vsf_class(__name)
Definition ooc_class.h:48
unsigned short uint16_t
Definition stdint.h:7
unsigned char uint_fast8_t
Definition stdint.h:23
unsigned uint32_t
Definition stdint.h:9
unsigned int uint_fast32_t
Definition stdint.h:27
unsigned short uint_fast16_t
Definition stdint.h:25
unsigned char uint8_t
Definition stdint.h:5
Definition vsf_template_usb.h:316
Definition vsf_hal_distbus_usbd.h:77
uint8_t zlp
Definition vsf_hal_distbus_usbd.h:81
vsf_distbus_msg_t * msg
Definition vsf_hal_distbus_usbd.h:85
uint16_t size
Definition vsf_hal_distbus_usbd.h:78
uint8_t pending
Definition vsf_hal_distbus_usbd.h:82
uint8_t is_stalled
Definition vsf_hal_distbus_usbd.h:80
uint8_t ep
Definition vsf_hal_distbus_usbd.h:83
uint8_t type
Definition vsf_hal_distbus_usbd.h:79
vk_av_control_type_t type
Definition vsf_audio.h:170
void vsf_hal_distbus_usbd_status_stage(vsf_hal_distbus_usbd_t *usbd, bool is_in)
Definition vsf_hal_distbus_usbd.c:218
vsf_err_t vsf_hal_distbus_usbd_ep_clear_stall(vsf_hal_distbus_usbd_t *usbd, uint_fast8_t ep)
Definition vsf_hal_distbus_usbd.c:289
uint_fast8_t vsf_hal_distbus_usbd_ep_get_feature(vsf_hal_distbus_usbd_t *usbd, uint_fast8_t ep, uint_fast8_t feature)
Definition vsf_hal_distbus_usbd.c:230
uint_fast8_t vsf_hal_distbus_usbd_get_address(vsf_hal_distbus_usbd_t *usbd)
Definition vsf_hal_distbus_usbd.c:198
vsf_err_t vsf_hal_distbus_usbd_ep_transfer_recv(vsf_hal_distbus_usbd_t *usbd, uint_fast8_t ep, uint8_t *buffer, uint_fast32_t size)
Definition vsf_hal_distbus_usbd.c:379
void vsf_hal_distbus_usbd_disconnect(vsf_hal_distbus_usbd_t *usbd)
Definition vsf_hal_distbus_usbd.c:164
void vsf_hal_distbus_usbd_set_address(vsf_hal_distbus_usbd_t *usbd, uint_fast8_t addr)
Definition vsf_hal_distbus_usbd.c:184
void vsf_hal_distbus_usbd_reset(vsf_hal_distbus_usbd_t *usbd, usb_dc_cfg_t *cfg)
Definition vsf_hal_distbus_usbd.c:139
vsf_err_t vsf_hal_distbus_usbd_ep_transaction_enable_out(vsf_hal_distbus_usbd_t *usbd, uint_fast8_t ep)
Definition vsf_hal_distbus_usbd.c:328
uint_fast16_t vsf_hal_distbus_usbd_ep_get_size(vsf_hal_distbus_usbd_t *usbd, uint_fast8_t ep)
Definition vsf_hal_distbus_usbd.c:258
void vsf_hal_distbus_usbd_fini(vsf_hal_distbus_usbd_t *usbd)
Definition vsf_hal_distbus_usbd.c:129
void vsf_hal_distbus_usbd_get_setup(vsf_hal_distbus_usbd_t *usbd, uint8_t *buffer)
Definition vsf_hal_distbus_usbd.c:213
vsf_err_t vsf_hal_distbus_usbd_ep_transaction_read_buffer(vsf_hal_distbus_usbd_t *usbd, uint_fast8_t ep, uint8_t *buffer, uint_fast16_t size)
Definition vsf_hal_distbus_usbd.c:316
uint32_t vsf_hal_distbus_usbd_register_service(vsf_distbus_t *distbus, vsf_hal_distbus_usbd_t *usbd, void *info, uint32_t infolen)
Definition vsf_hal_distbus_usbd.c:420
vsf_err_t vsf_hal_distbus_usbd_ep_transfer_send(vsf_hal_distbus_usbd_t *usbd, uint_fast8_t ep, uint8_t *buffer, uint_fast32_t size, bool zlp)
Definition vsf_hal_distbus_usbd.c:396
vsf_err_t vsf_hal_distbus_usbd_ep_set_stall(vsf_hal_distbus_usbd_t *usbd, uint_fast8_t ep)
Definition vsf_hal_distbus_usbd.c:264
uint_fast8_t vsf_hal_distbus_usbd_get_mframe_number(vsf_hal_distbus_usbd_t *usbd)
Definition vsf_hal_distbus_usbd.c:208
vsf_err_t vsf_hal_distbus_usbd_init(vsf_hal_distbus_usbd_t *usbd, usb_dc_cfg_t *cfg)
Definition vsf_hal_distbus_usbd.c:108
void vsf_hal_distbus_usbd_connect(vsf_hal_distbus_usbd_t *usbd)
Definition vsf_hal_distbus_usbd.c:154
bool vsf_hal_distbus_usbd_ep_is_stalled(vsf_hal_distbus_usbd_t *usbd, uint_fast8_t ep)
Definition vsf_hal_distbus_usbd.c:283
void vsf_hal_distbus_usbd_irq(vsf_hal_distbus_usbd_t *usbd)
Definition vsf_hal_distbus_usbd.c:415
void vsf_hal_distbus_usbd_wakeup(vsf_hal_distbus_usbd_t *usbd)
Definition vsf_hal_distbus_usbd.c:174
uint_fast16_t vsf_hal_distbus_usbd_get_frame_number(vsf_hal_distbus_usbd_t *usbd)
Definition vsf_hal_distbus_usbd.c:203
vsf_err_t vsf_hal_distbus_usbd_ep_transaction_write_buffer(vsf_hal_distbus_usbd_t *usbd, uint_fast8_t ep, uint8_t *buffer, uint_fast16_t size)
Definition vsf_hal_distbus_usbd.c:361
vsf_err_t vsf_hal_distbus_usbd_ep_add(vsf_hal_distbus_usbd_t *usbd, uint_fast8_t ep, usb_ep_type_t type, uint_fast16_t size)
Definition vsf_hal_distbus_usbd.c:235
uint_fast32_t vsf_hal_distbus_usbd_ep_get_data_size(vsf_hal_distbus_usbd_t *usbd, uint_fast8_t ep)
Definition vsf_hal_distbus_usbd.c:308
vsf_err_t vsf_hal_distbus_usbd_ep_transaction_set_data_size(vsf_hal_distbus_usbd_t *usbd, uint_fast8_t ep, uint_fast16_t size)
Definition vsf_hal_distbus_usbd.c:344
uint32_t size
Definition vsf_memfs.h:50
usb_ep_type_t
Definition vsf_template_usb.h:277
void(* usb_dc_evthandler_t)(void *param, usb_evt_t evt, uint_fast8_t value)
Definition vsf_template_usb.h:309