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#if VSF_HAL_DISTBUS_USE_GPIO == ENABLED && VSF_HAL_USE_GPIO == ENABLED
32#endif
33#if VSF_HAL_DISTBUS_USE_I2C == ENABLED && VSF_HAL_USE_I2C == ENABLED
35#endif
36#if VSF_HAL_DISTBUS_USE_SPI == ENABLED && VSF_HAL_USE_SPI == ENABLED
38#endif
39#if VSF_HAL_DISTBUS_USE_USART == ENABLED && VSF_HAL_USE_USART == ENABLED
41#endif
42#if VSF_HAL_DISTBUS_USE_SDIO == ENABLED && VSF_HAL_USE_SDIO == ENABLED
44#endif
45#if VSF_HAL_DISTBUS_USE_ADC == ENABLED && VSF_HAL_USE_ADC == ENABLED
47#endif
48#if VSF_HAL_DISTBUS_USE_DAC == ENABLED && VSF_HAL_USE_DAC == ENABLED
50#endif
51#if VSF_HAL_DISTBUS_USE_PWM == ENABLED && VSF_HAL_USE_PWM == ENABLED
53#endif
54#if VSF_HAL_DISTBUS_USE_I2S == ENABLED && VSF_HAL_USE_I2S == ENABLED
56#endif
57#if VSF_HAL_DISTBUS_USE_USBD == ENABLED && VSF_HAL_USE_USBD == ENABLED
59#endif
60#if VSF_HAL_DISTBUS_USE_USBH == ENABLED && VSF_HAL_USE_USBH == ENABLED
62#endif
63
64#undef PUBLIC_CONST
65#if defined(__VSF_HAL_DISTBUS_CLASS_IMPLEMENT)
66# define __VSF_CLASS_IMPLEMENT__
67# define PUBLIC_CONST
68#elif defined(__VSF_HAL_DISTBUS_CLASS_INHERIT__)
69# define __VSF_CLASS_INHERIT__
70# define PUBLIC_CONST
71#else
72# define PUBLIC_CONST const
73#endif
74
75#include "utilities/ooc_class.h"
76
77#ifdef __cplusplus
78extern "C" {
79#endif
80
81/*============================ MACROS ========================================*/
82
83#ifndef VSF_HAL_DISTBUS_CFG_MTU
84# define VSF_HAL_DISTBUS_CFG_MTU 512
85#endif
86
87/*============================ MACROFIED FUNCTIONS ===========================*/
88/*============================ TYPES =========================================*/
89
102
103 // for MACRO usage only
116
117#if defined(__VSF_HAL_DISTBUS_CLASS_INHERIT__) || defined(__VSF_HAL_DISTBUS_CLASS_IMPLEMENT)
118typedef enum vsf_hal_distbus_cmd_t {
119 VSF_HAL_DISTBUS_CMD_CONNECT = 0,
120 VSF_HAL_DISTBUS_CMD_DECLARE,
121
122 VSF_HAL_DISTBUS_CMD_ADDR_RANGE,
123} vsf_hal_distbus_cmd_t;
124#endif
125
127#define VSF_HAL_DISTBUS_DEFINE(__TYPE) \
128 struct { \
129 uint8_t dev_num; \
130 VSF_MCONNECT(vsf_hal_distbus_, __TYPE, _t) *dev; \
131 } __TYPE;
132
133#define __VSF_HAL_DISTBUS_ENUM VSF_HAL_DISTBUS_DEFINE
135#undef VSF_HAL_DISTBUS_DEFINE
137
139 public_member(
140 implement(__vsf_hal_distbus_enum_t)
141 void (*on_remote_connected)(vsf_hal_distbus_t *hal_distbus);
142 PUBLIC_CONST bool remote_connected;
143 PUBLIC_CONST bool remote_declared;
145 protected_member(
146 vsf_distbus_service_t service;
147 vsf_distbus_t *distbus;
149};
150
151/*============================ GLOBAL VARIABLES ==============================*/
152/*============================ LOCAL VARIABLES ===============================*/
153/*============================ PROTOTYPES ====================================*/
154
155extern void vsf_hal_distbus_register(vsf_distbus_t *distbus, vsf_hal_distbus_t *hal_distbus);
156extern void vsf_hal_distbus_start(vsf_hal_distbus_t *hal_distbus);
157
158#ifdef __cplusplus
159}
160#endif
161
162#undef __VSF_HAL_DISTBUS_CLASS_IMPLEMENT
163#undef __VSF_HAL_DISTBUS_CLASS_INHERIT__
164
165#endif
166#endif
167/* EOF */
Definition vsf_distbus.h:87
Definition vsf_distbus.h:120
Definition driver.h:138
void vsf_hal_distbus_register(vsf_distbus_t *distbus, vsf_hal_distbus_t *hal_distbus)
Definition vsf_hal_distbus.c:129
vsf_hal_distbus_type_t
Definition driver.h:90
@ VSF_HAL_DISTBUS_DAC
Definition driver.h:97
@ VSF_HAL_DISTBUS_PWM
Definition driver.h:98
@ VSF_HAL_DISTBUS_USBH
Definition driver.h:101
@ VSF_HAL_DISTBUS_I2S
Definition driver.h:99
@ VSF_HAL_DISTBUS_pwm
Definition driver.h:111
@ VSF_HAL_DISTBUS_adc
Definition driver.h:109
@ VSF_HAL_DISTBUS_usbd
Definition driver.h:113
@ VSF_HAL_DISTBUS_gpio
Definition driver.h:104
@ VSF_HAL_DISTBUS_I2C
Definition driver.h:92
@ VSF_HAL_DISTBUS_usbh
Definition driver.h:114
@ VSF_HAL_DISTBUS_sdio
Definition driver.h:108
@ VSF_HAL_DISTBUS_usart
Definition driver.h:107
@ VSF_HAL_DISTBUS_USBD
Definition driver.h:100
@ VSF_HAL_DISTBUS_GPIO
Definition driver.h:91
@ VSF_HAL_DISTBUS_ADC
Definition driver.h:96
@ VSF_HAL_DISTBUS_dac
Definition driver.h:110
@ VSF_HAL_DISTBUS_SDIO
Definition driver.h:95
@ VSF_HAL_DISTBUS_i2s
Definition driver.h:112
@ VSF_HAL_DISTBUS_i2c
Definition driver.h:105
@ VSF_HAL_DISTBUS_SPI
Definition driver.h:93
@ VSF_HAL_DISTBUS_USART
Definition driver.h:94
@ VSF_HAL_DISTBUS_spi
Definition driver.h:106
void vsf_hal_distbus_start(vsf_hal_distbus_t *hal_distbus)
Definition vsf_hal_distbus.c:138
#define PUBLIC_CONST
Definition driver.h:72
#define vsf_class(__name)
Definition ooc_class.h:48
Definition driver.h:126
Generated from commit: vsfteam/vsf@74aa6ce