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
103
104 // for MACRO usage only
118
119#if defined(__VSF_HAL_DISTBUS_CLASS_INHERIT__) || defined(__VSF_HAL_DISTBUS_CLASS_IMPLEMENT)
120typedef enum vsf_hal_distbus_cmd_t {
121 VSF_HAL_DISTBUS_CMD_CONNECT = 0,
122 VSF_HAL_DISTBUS_CMD_DECLARE,
123
124 VSF_HAL_DISTBUS_CMD_ADDR_RANGE,
125} vsf_hal_distbus_cmd_t;
126#endif
127
129#define VSF_HAL_DISTBUS_DEFINE(__TYPE) \
130 struct { \
131 uint8_t dev_num; \
132 VSF_MCONNECT(vsf_hal_distbus_, __TYPE, _t) *dev; \
133 } __TYPE;
134
135#define __VSF_HAL_DISTBUS_ENUM VSF_HAL_DISTBUS_DEFINE
138
140 public_member(
141 implement(__vsf_hal_distbus_enum_t)
142 void (*on_remote_connected)(vsf_hal_distbus_t *hal_distbus);
143 PUBLIC_CONST bool remote_connected;
144 PUBLIC_CONST bool remote_declared;
146 protected_member(
147 vsf_distbus_service_t service;
148 vsf_distbus_t *distbus;
150};
151
152/*============================ GLOBAL VARIABLES ==============================*/
153/*============================ LOCAL VARIABLES ===============================*/
154/*============================ PROTOTYPES ====================================*/
155
156extern void vsf_hal_distbus_register(vsf_distbus_t *distbus, vsf_hal_distbus_t *hal_distbus);
157extern void vsf_hal_distbus_start(vsf_hal_distbus_t *hal_distbus);
158
159#ifdef __cplusplus
160}
161#endif
162
163#undef __VSF_HAL_DISTBUS_CLASS_IMPLEMENT
164#undef __VSF_HAL_DISTBUS_CLASS_INHERIT__
165
166#endif
167#endif
168/* EOF */
Definition vsf_distbus.h:86
Definition vsf_distbus.h:119
Definition driver.h:139
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:98
@ VSF_HAL_DISTBUS_PWM
Definition driver.h:99
@ VSF_HAL_DISTBUS_USBH
Definition driver.h:102
@ VSF_HAL_DISTBUS_I2S
Definition driver.h:100
@ VSF_HAL_DISTBUS_pwm
Definition driver.h:113
@ VSF_HAL_DISTBUS_adc
Definition driver.h:111
@ VSF_HAL_DISTBUS_io
Definition driver.h:105
@ VSF_HAL_DISTBUS_usbd
Definition driver.h:115
@ VSF_HAL_DISTBUS_IO
Definition driver.h:91
@ VSF_HAL_DISTBUS_gpio
Definition driver.h:106
@ VSF_HAL_DISTBUS_I2C
Definition driver.h:93
@ VSF_HAL_DISTBUS_usbh
Definition driver.h:116
@ VSF_HAL_DISTBUS_sdio
Definition driver.h:110
@ VSF_HAL_DISTBUS_usart
Definition driver.h:109
@ VSF_HAL_DISTBUS_USBD
Definition driver.h:101
@ VSF_HAL_DISTBUS_GPIO
Definition driver.h:92
@ VSF_HAL_DISTBUS_ADC
Definition driver.h:97
@ VSF_HAL_DISTBUS_dac
Definition driver.h:112
@ VSF_HAL_DISTBUS_SDIO
Definition driver.h:96
@ VSF_HAL_DISTBUS_i2s
Definition driver.h:114
@ VSF_HAL_DISTBUS_i2c
Definition driver.h:107
@ VSF_HAL_DISTBUS_SPI
Definition driver.h:94
@ VSF_HAL_DISTBUS_USART
Definition driver.h:95
@ VSF_HAL_DISTBUS_spi
Definition driver.h:108
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:128