VSF Documented
driver.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 __HAL_DRIVER_VSF_DISTBUS_H__
19#define __HAL_DRIVER_VSF_DISTBUS_H__
20
21/*============================ INCLUDES ======================================*/
22
23#include "hal/vsf_hal_cfg.h"
24
25#if VSF_USE_DISTBUS == ENABLED && VSF_HAL_USE_DISTBUS == ENABLED
26
27// for distbus
28#include "service/vsf_service.h"
29
30#ifdef VSF_HAL_DISTBUS_AS_REAL_DRIVER
31# define VSF_HAL_DISTBUS_ENUM(__ELEMENT) __ELEMENT
32# define VSF_HAL_DISTBUS_PREFIX vsf_
33#else
34# define VSF_HAL_DISTBUS_ENUM(__ELEMENT) VSF_HAL_DISTBUS_ ## __ELEMENT
35# define VSF_HAL_DISTBUS_PREFIX vsf_hal_distbus_
36#endif
37
38#if VSF_HAL_DISTBUS_USE_GPIO == ENABLED && VSF_HAL_USE_GPIO == ENABLED
40#endif
41#if VSF_HAL_DISTBUS_USE_I2C == ENABLED && VSF_HAL_USE_I2C == ENABLED
43#endif
44#if VSF_HAL_DISTBUS_USE_SPI == ENABLED && VSF_HAL_USE_SPI == ENABLED
46#endif
47#if VSF_HAL_DISTBUS_USE_USART == ENABLED && VSF_HAL_USE_USART == ENABLED
49#endif
50#if VSF_HAL_DISTBUS_USE_SDIO == ENABLED && VSF_HAL_USE_SDIO == ENABLED
52#endif
53#if VSF_HAL_DISTBUS_USE_ADC == ENABLED && VSF_HAL_USE_ADC == ENABLED
55#endif
56#if VSF_HAL_DISTBUS_USE_DAC == ENABLED && VSF_HAL_USE_DAC == ENABLED
58#endif
59#if VSF_HAL_DISTBUS_USE_PWM == ENABLED && VSF_HAL_USE_PWM == ENABLED
61#endif
62#if VSF_HAL_DISTBUS_USE_I2S == ENABLED && VSF_HAL_USE_I2S == ENABLED
64#endif
65#if VSF_HAL_DISTBUS_USE_USBD == ENABLED && VSF_HAL_USE_USBD == ENABLED
67#endif
68#if VSF_HAL_DISTBUS_USE_USBH == ENABLED && VSF_HAL_USE_USBH == ENABLED
70#endif
71
72#undef PUBLIC_CONST
73#if defined(__VSF_HAL_DISTBUS_CLASS_IMPLEMENT)
74# define __VSF_CLASS_IMPLEMENT__
75# define PUBLIC_CONST
76#elif defined(__VSF_HAL_DISTBUS_CLASS_INHERIT__)
77# define __VSF_CLASS_INHERIT__
78# define PUBLIC_CONST
79#else
80# define PUBLIC_CONST const
81#endif
82
83#include "utilities/ooc_class.h"
84
85#ifdef __cplusplus
86extern "C" {
87#endif
88
89/*============================ MACROS ========================================*/
90
91#ifndef VSF_HAL_DISTBUS_CFG_MTU
92# define VSF_HAL_DISTBUS_CFG_MTU 512
93#endif
94
95/*============================ MACROFIED FUNCTIONS ===========================*/
96/*============================ TYPES =========================================*/
97
110
111 // for MACRO usage only
124
125#if defined(__VSF_HAL_DISTBUS_CLASS_INHERIT__) || defined(__VSF_HAL_DISTBUS_CLASS_IMPLEMENT)
126typedef enum vsf_hal_distbus_cmd_t {
127 VSF_HAL_DISTBUS_CMD_CONNECT = 0,
128 VSF_HAL_DISTBUS_CMD_DECLARE,
129
130 VSF_HAL_DISTBUS_CMD_ADDR_RANGE,
131} vsf_hal_distbus_cmd_t;
132#endif
133
135#define VSF_HAL_DISTBUS_DEFINE(__TYPE) \
136 struct { \
137 uint8_t dev_num; \
138 VSF_MCONNECT(vsf_hal_distbus_, __TYPE, _t) *dev; \
139 } __TYPE;
140
141#define __VSF_HAL_DISTBUS_ENUM VSF_HAL_DISTBUS_DEFINE
143#undef VSF_HAL_DISTBUS_DEFINE
145
147 public_member(
148 implement(__vsf_hal_distbus_enum_t)
149 void (*on_remote_connected)(vsf_hal_distbus_t *hal_distbus);
150 PUBLIC_CONST bool remote_connected;
151 PUBLIC_CONST bool remote_declared;
153 protected_member(
154 vsf_distbus_service_t service;
155 vsf_distbus_t *distbus;
157};
158
159/*============================ GLOBAL VARIABLES ==============================*/
160/*============================ LOCAL VARIABLES ===============================*/
161/*============================ PROTOTYPES ====================================*/
162
163extern void vsf_hal_distbus_register(vsf_distbus_t *distbus, vsf_hal_distbus_t *hal_distbus);
164extern void vsf_hal_distbus_start(vsf_hal_distbus_t *hal_distbus);
165
166extern bool vsf_hal_distbus_on_irq(void *devs, uint16_t irqn);
167
168/*============================ INCLUDES ======================================*/
169
170#if VSF_HAL_USE_GPIO == ENABLED
172
173# define VSF_GPIO_CFG_DEC_PREFIX vsf_hal_distbus
174# define VSF_GPIO_CFG_DEC_UPCASE_PREFIX VSF_HAL_DISTBUS
176#endif
177
178#if VSF_HAL_USE_ADC == ENABLED
180
181# define VSF_ADC_CFG_DEC_PREFIX vsf_hal_distbus
182# define VSF_ADC_CFG_DEC_UPCASE_PREFIX VSF_HAL_DISTBUS
184#endif
185
186#if VSF_HAL_USE_FLASH == ENABLED
188
189# define VSF_FLASH_CFG_DEC_PREFIX vsf_hal_distbus
190# define VSF_FLASH_CFG_DEC_UPCASE_PREFIX VSF_HAL_DISTBUS
192#endif
193
194#if VSF_HAL_USE_I2C == ENABLED
196
197# define VSF_I2C_CFG_DEC_PREFIX vsf_hal_distbus
198# define VSF_I2C_CFG_DEC_UPCASE_PREFIX VSF_HAL_DISTBUS
200#endif
201
202#if VSF_HAL_USE_PWM == ENABLED
204
205# define VSF_PWM_CFG_DEC_PREFIX vsf_hal_distbus
206# define VSF_PWM_CFG_DEC_UPCASE_PREFIX VSF_HAL_DISTBUS
208#endif
209
210#if VSF_HAL_USE_RTC == ENABLED
212
213# define VSF_RTC_CFG_DEC_PREFIX vsf_hal_distbus
214# define VSF_RTC_CFG_DEC_UPCASE_PREFIX VSF_HAL_DISTBUS
216#endif
217
218#if VSF_HAL_USE_SPI == ENABLED
220
221# define VSF_SPI_CFG_DEC_PREFIX vsf_hal_distbus
222# define VSF_SPI_CFG_DEC_UPCASE_PREFIX VSF_HAL_DISTBUS
224
225// Optional: Add QSPI
226//# define VSF_SPI_CFG_DEC_DEVICE_PREFIX vsf_hal_distbus_qspi
227//# define VSF_SPI_CFG_DEC_DEVICE_UPCASE_PREFIX VSF_HAL_DISTBUS_QSPI
228//# define VSF_SPI_CFG_DEC_RENAME_DEVICE_PREFIX ENABLED
229//# include "hal/driver/common/spi/spi_template.h"
230#endif
231
232#if VSF_HAL_USE_SDIO == ENABLED
234
235# define VSF_SDIO_CFG_DEC_PREFIX vsf_hal_distbus
236# define VSF_SDIO_CFG_DEC_UPCASE_PREFIX VSF_HAL_DISTBUS
238#endif
239
240#if VSF_HAL_USE_TIMER == ENABLED
242
243# define VSF_TIMER_CFG_DEC_PREFIX vsf_hal_distbus
244# define VSF_TIMER_CFG_DEC_UPCASE_PREFIX VSF_HAL_DISTBUS
246#endif
247
248#if VSF_HAL_USE_RNG == ENABLED
250
251# define VSF_RNG_CFG_DEC_PREFIX vsf_hal_distbus
252# define VSF_RNG_CFG_DEC_UPCASE_PREFIX VSF_HAL_DISTBUS
254#endif
255
256#if VSF_HAL_USE_USART == ENABLED
258
259# define VSF_USART_CFG_DEC_PREFIX vsf_hal_distbus
260# define VSF_USART_CFG_DEC_UPCASE_PREFIX VSF_HAL_DISTBUS
262#endif
263
264#if VSF_HAL_USE_WDT == ENABLED
266
267# define VSF_WDT_CFG_DEC_PREFIX vsf_hal_distbus
268# define VSF_WDT_CFG_DEC_UPCASE_PREFIX VSF_HAL_DISTBUS
270#endif
271
272#ifdef __cplusplus
273}
274#endif
275
276#undef __VSF_HAL_DISTBUS_CLASS_IMPLEMENT
277#undef __VSF_HAL_DISTBUS_CLASS_INHERIT__
278
279#endif
280#endif
281/* EOF */
Definition vsf_distbus.h:87
Definition vsf_distbus.h:122
Definition driver.h:146
void vsf_hal_distbus_register(vsf_distbus_t *distbus, vsf_hal_distbus_t *hal_distbus)
Definition vsf_hal_distbus.c:135
vsf_hal_distbus_type_t
Definition driver.h:98
@ VSF_HAL_DISTBUS_DAC
Definition driver.h:105
@ VSF_HAL_DISTBUS_PWM
Definition driver.h:106
@ VSF_HAL_DISTBUS_USBH
Definition driver.h:109
@ VSF_HAL_DISTBUS_I2S
Definition driver.h:107
@ VSF_HAL_DISTBUS_pwm
Definition driver.h:119
@ VSF_HAL_DISTBUS_adc
Definition driver.h:117
@ VSF_HAL_DISTBUS_usbd
Definition driver.h:121
@ VSF_HAL_DISTBUS_gpio
Definition driver.h:112
@ VSF_HAL_DISTBUS_I2C
Definition driver.h:100
@ VSF_HAL_DISTBUS_usbh
Definition driver.h:122
@ VSF_HAL_DISTBUS_sdio
Definition driver.h:116
@ VSF_HAL_DISTBUS_usart
Definition driver.h:115
@ VSF_HAL_DISTBUS_USBD
Definition driver.h:108
@ VSF_HAL_DISTBUS_GPIO
Definition driver.h:99
@ VSF_HAL_DISTBUS_ADC
Definition driver.h:104
@ VSF_HAL_DISTBUS_dac
Definition driver.h:118
@ VSF_HAL_DISTBUS_SDIO
Definition driver.h:103
@ VSF_HAL_DISTBUS_i2s
Definition driver.h:120
@ VSF_HAL_DISTBUS_i2c
Definition driver.h:113
@ VSF_HAL_DISTBUS_SPI
Definition driver.h:101
@ VSF_HAL_DISTBUS_USART
Definition driver.h:102
@ VSF_HAL_DISTBUS_spi
Definition driver.h:114
void vsf_hal_distbus_start(vsf_hal_distbus_t *hal_distbus)
Definition vsf_hal_distbus.c:144
bool vsf_hal_distbus_on_irq(void *devs, uint16_t irqn)
Definition driver.c:325
#define PUBLIC_CONST
Definition driver.h:80
#define vsf_class(__name)
Definition ooc_class.h:48
unsigned short uint16_t
Definition stdint.h:7
Definition driver.h:134
Generated from commit: vsfteam/vsf@3f091ef