18#ifndef __HAL_DRIVER_VSF_DISTBUS_H__
19#define __HAL_DRIVER_VSF_DISTBUS_H__
25#if VSF_USE_DISTBUS == ENABLED && VSF_HAL_USE_DISTBUS == ENABLED
30#ifdef VSF_HAL_DISTBUS_AS_REAL_DRIVER
31# define VSF_HAL_DISTBUS_ENUM(__ELEMENT) __ELEMENT
32# define VSF_HAL_DISTBUS_PREFIX vsf_
34# define VSF_HAL_DISTBUS_ENUM(__ELEMENT) VSF_HAL_DISTBUS_ ## __ELEMENT
35# define VSF_HAL_DISTBUS_PREFIX vsf_hal_distbus_
38#if VSF_HAL_DISTBUS_USE_GPIO == ENABLED && VSF_HAL_USE_GPIO == ENABLED
41#if VSF_HAL_DISTBUS_USE_I2C == ENABLED && VSF_HAL_USE_I2C == ENABLED
44#if VSF_HAL_DISTBUS_USE_SPI == ENABLED && VSF_HAL_USE_SPI == ENABLED
47#if VSF_HAL_DISTBUS_USE_USART == ENABLED && VSF_HAL_USE_USART == ENABLED
50#if VSF_HAL_DISTBUS_USE_SDIO == ENABLED && VSF_HAL_USE_SDIO == ENABLED
53#if VSF_HAL_DISTBUS_USE_ADC == ENABLED && VSF_HAL_USE_ADC == ENABLED
56#if VSF_HAL_DISTBUS_USE_DAC == ENABLED && VSF_HAL_USE_DAC == ENABLED
59#if VSF_HAL_DISTBUS_USE_PWM == ENABLED && VSF_HAL_USE_PWM == ENABLED
62#if VSF_HAL_DISTBUS_USE_I2S == ENABLED && VSF_HAL_USE_I2S == ENABLED
65#if VSF_HAL_DISTBUS_USE_USBD == ENABLED && VSF_HAL_USE_USBD == ENABLED
68#if VSF_HAL_DISTBUS_USE_USBH == ENABLED && VSF_HAL_USE_USBH == ENABLED
73#if defined(__VSF_HAL_DISTBUS_CLASS_IMPLEMENT)
74# define __VSF_CLASS_IMPLEMENT__
76#elif defined(__VSF_HAL_DISTBUS_CLASS_INHERIT__)
77# define __VSF_CLASS_INHERIT__
80# define PUBLIC_CONST const
91#ifndef VSF_HAL_DISTBUS_CFG_MTU
92# define VSF_HAL_DISTBUS_CFG_MTU 512
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,
130 VSF_HAL_DISTBUS_CMD_ADDR_RANGE,
131} vsf_hal_distbus_cmd_t;
135#define VSF_HAL_DISTBUS_DEFINE(__TYPE) \
138 VSF_MCONNECT(vsf_hal_distbus_, __TYPE, _t) *dev; \
141#define __VSF_HAL_DISTBUS_ENUM VSF_HAL_DISTBUS_DEFINE
143#undef VSF_HAL_DISTBUS_DEFINE
170#if VSF_HAL_USE_GPIO == ENABLED
173# define VSF_GPIO_CFG_DEC_PREFIX vsf_hal_distbus
174# define VSF_GPIO_CFG_DEC_UPCASE_PREFIX VSF_HAL_DISTBUS
178#if VSF_HAL_USE_ADC == ENABLED
181# define VSF_ADC_CFG_DEC_PREFIX vsf_hal_distbus
182# define VSF_ADC_CFG_DEC_UPCASE_PREFIX VSF_HAL_DISTBUS
186#if VSF_HAL_USE_FLASH == ENABLED
189# define VSF_FLASH_CFG_DEC_PREFIX vsf_hal_distbus
190# define VSF_FLASH_CFG_DEC_UPCASE_PREFIX VSF_HAL_DISTBUS
194#if VSF_HAL_USE_I2C == ENABLED
197# define VSF_I2C_CFG_DEC_PREFIX vsf_hal_distbus
198# define VSF_I2C_CFG_DEC_UPCASE_PREFIX VSF_HAL_DISTBUS
202#if VSF_HAL_USE_PWM == ENABLED
205# define VSF_PWM_CFG_DEC_PREFIX vsf_hal_distbus
206# define VSF_PWM_CFG_DEC_UPCASE_PREFIX VSF_HAL_DISTBUS
210#if VSF_HAL_USE_RTC == ENABLED
213# define VSF_RTC_CFG_DEC_PREFIX vsf_hal_distbus
214# define VSF_RTC_CFG_DEC_UPCASE_PREFIX VSF_HAL_DISTBUS
218#if VSF_HAL_USE_SPI == ENABLED
221# define VSF_SPI_CFG_DEC_PREFIX vsf_hal_distbus
222# define VSF_SPI_CFG_DEC_UPCASE_PREFIX VSF_HAL_DISTBUS
232#if VSF_HAL_USE_SDIO == ENABLED
235# define VSF_SDIO_CFG_DEC_PREFIX vsf_hal_distbus
236# define VSF_SDIO_CFG_DEC_UPCASE_PREFIX VSF_HAL_DISTBUS
240#if VSF_HAL_USE_TIMER == ENABLED
243# define VSF_TIMER_CFG_DEC_PREFIX vsf_hal_distbus
244# define VSF_TIMER_CFG_DEC_UPCASE_PREFIX VSF_HAL_DISTBUS
248#if VSF_HAL_USE_RNG == ENABLED
251# define VSF_RNG_CFG_DEC_PREFIX vsf_hal_distbus
252# define VSF_RNG_CFG_DEC_UPCASE_PREFIX VSF_HAL_DISTBUS
256#if VSF_HAL_USE_USART == ENABLED
259# define VSF_USART_CFG_DEC_PREFIX vsf_hal_distbus
260# define VSF_USART_CFG_DEC_UPCASE_PREFIX VSF_HAL_DISTBUS
264#if VSF_HAL_USE_WDT == ENABLED
267# define VSF_WDT_CFG_DEC_PREFIX vsf_hal_distbus
268# define VSF_WDT_CFG_DEC_UPCASE_PREFIX VSF_HAL_DISTBUS
276#undef __VSF_HAL_DISTBUS_CLASS_IMPLEMENT
277#undef __VSF_HAL_DISTBUS_CLASS_INHERIT__
Definition vsf_distbus.h:87
Definition vsf_distbus.h:122
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