VSF Documented
i2s_template.inc
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#if VSF_HAL_USE_I2S == ENABLED
19
20/*============================ INCLUDES ======================================*/
21/*============================ MACROS ========================================*/
22
23#define vsf_real_i2s_t VSF_MCONNECT(VSF_I2S_CFG_IMP_PREFIX, _i2s_t)
24#define vsf_real_i2s_capability VSF_MCONNECT(VSF_I2S_CFG_IMP_PREFIX, _i2s_capability)
25
26#ifndef VSF_I2S_CFG_REIMPLEMENT_API_CAPABILITY
27# define VSF_I2S_CFG_REIMPLEMENT_API_CAPABILITY DISABLED
28#endif
29
30#ifdef VSF_I2S_CFG_IMP_REMAP_PREFIX
31# undef VSF_I2S_CFG_REIMPLEMENT_API_CAPABILITY
32# define VSF_I2S_CFG_REIMPLEMENT_API_CAPABILITY ENABLED
33#endif
34
35#if VSF_I2S_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
36# ifndef VSF_I2S_CFG_CAPABILITY_IS_SRC_SUPPORTED
37# define VSF_I2S_CFG_CAPABILITY_IS_SRC_SUPPORTED 1
38# endif
39# ifndef VSF_I2S_CFG_CAPABILITY_IS_DBUFFER_SUPPORTED
40# define VSF_I2S_CFG_CAPABILITY_IS_DBUFFER_SUPPORTED 1
41# endif
42#endif
43
44/*============================ LOCAL VARIABLES ===============================*/
45/*============================ IMPLEMENTATION ================================*/
46
47#if VSF_I2S_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
48vsf_i2s_capability_t vsf_real_i2s_capability(vsf_real_i2s_t *i2s_ptr)
49{
50 vsf_i2s_capability_t i2s_capability = {
52 .is_src_supported = VSF_I2S_CFG_CAPABILITY_IS_SRC_SUPPORTED
53 .is_dbuffer_supported = VSF_I2S_CFG_CAPABILITY_IS_DBUFFER_SUPPORTED
54 }
55 };
56
57 return i2s_capability;
58}
59#endif
60
61/*============================ MACROS ========================================*/
62
63#undef VSF_I2S_CFG_REIMPLEMENT_API_CAPABILITY
64#undef VSF_I2S_CFG_CAPABILITY_IS_SRC_SUPPORTED
65#undef VSF_I2S_CFG_CAPABILITY_IS_DBUFFER_SUPPORTED
66
67#undef vsf_real_i2s_t
68#undef vsf_real_i2s_capability
69
70/*============================ MACROS ========================================*/
71
72#ifdef VSF_I2S_CFG_IMP_REMAP_PREFIX
73# define vsf_imp_i2s_t VSF_MCONNECT(VSF_I2S_CFG_IMP_PREFIX, _i2s_t)
74# define vsf_imp_i2s_init VSF_MCONNECT(VSF_I2S_CFG_IMP_PREFIX, _i2s_init)
75# define vsf_imp_i2s_enable VSF_MCONNECT(VSF_I2S_CFG_IMP_PREFIX, _i2s_enable)
76# define vsf_imp_i2s_disable VSF_MCONNECT(VSF_I2S_CFG_IMP_PREFIX, _i2s_disable)
77# define vsf_imp_i2s_status VSF_MCONNECT(VSF_I2S_CFG_IMP_PREFIX, _i2s_status)
78# define vsf_imp_i2s_capability VSF_MCONNECT(VSF_I2S_CFG_IMP_PREFIX, _i2s_capability)
79# define vsf_imp_i2s_tx_init VSF_MCONNECT(VSF_I2S_CFG_IMP_PREFIX, _i2s_tx_init)
80# define vsf_imp_i2s_tx_fini VSF_MCONNECT(VSF_I2S_CFG_IMP_PREFIX, _i2s_tx_fini)
81# define vsf_imp_i2s_tx_start VSF_MCONNECT(VSF_I2S_CFG_IMP_PREFIX, _i2s_tx_start)
82# define vsf_imp_i2s_rx_init VSF_MCONNECT(VSF_I2S_CFG_IMP_PREFIX, _i2s_rx_init)
83# define vsf_imp_i2s_rx_fini VSF_MCONNECT(VSF_I2S_CFG_IMP_PREFIX, _i2s_rx_fini)
84# define vsf_imp_i2s_rx_start VSF_MCONNECT(VSF_I2S_CFG_IMP_PREFIX, _i2s_rx_start)
85
86# define vsf_remap_i2s_t VSF_MCONNECT(VSF_I2S_CFG_IMP_REMAP_PREFIX, _i2s_t)
87# define vsf_remap_i2s_init VSF_MCONNECT(VSF_I2S_CFG_IMP_REMAP_PREFIX, _i2s_init)
88# define vsf_remap_i2s_enable VSF_MCONNECT(VSF_I2S_CFG_IMP_REMAP_PREFIX, _i2s_enable)
89# define vsf_remap_i2s_disable VSF_MCONNECT(VSF_I2S_CFG_IMP_REMAP_PREFIX, _i2s_disable)
90# define vsf_remap_i2s_status VSF_MCONNECT(VSF_I2S_CFG_IMP_REMAP_PREFIX, _i2s_status)
91# define vsf_remap_i2s_capability VSF_MCONNECT(VSF_I2S_CFG_IMP_REMAP_PREFIX, _i2s_capability)
92# define vsf_remap_i2s_tx_init VSF_MCONNECT(VSF_I2S_CFG_IMP_REMAP_PREFIX, _i2s_tx_init)
93# define vsf_remap_i2s_tx_fini VSF_MCONNECT(VSF_I2S_CFG_IMP_REMAP_PREFIX, _i2s_tx_fini)
94# define vsf_remap_i2s_tx_start VSF_MCONNECT(VSF_I2S_CFG_IMP_REMAP_PREFIX, _i2s_tx_start)
95# define vsf_remap_i2s_rx_init VSF_MCONNECT(VSF_I2S_CFG_IMP_REMAP_PREFIX, _i2s_rx_init)
96# define vsf_remap_i2s_rx_fini VSF_MCONNECT(VSF_I2S_CFG_IMP_REMAP_PREFIX, _i2s_rx_fini)
97# define vsf_remap_i2s_rx_start VSF_MCONNECT(VSF_I2S_CFG_IMP_REMAP_PREFIX, _i2s_rx_start)
98
99# define VSF_I2S_CFG_IMP_REMAP_FUNCTIONS \
100 vsf_err_t vsf_imp_i2s_init(vsf_imp_i2s_t *i2s_ptr, vsf_i2s_cfg_t *cfg_ptr) \
101 { \
102 VSF_HAL_ASSERT(i2s_ptr != NULL); \
103 return vsf_remap_i2s_init(i2s_ptr, cfg_ptr); \
104 } \
105 vsf_err_t vsf_imp_i2s_tx_init(vsf_imp_i2s_t *i2s_ptr, vsf_i2s_cfg_t *cfg_ptr) \
106 { \
107 VSF_HAL_ASSERT(i2s_ptr != NULL); \
108 return vsf_remap_i2s_tx_init(i2s_ptr, cfg_ptr); \
109 } \
110 void vsf_imp_i2s_tx_fini(vsf_imp_i2s_t *i2s_ptr) \
111 { \
112 VSF_HAL_ASSERT(i2s_ptr != NULL); \
113 vsf_remap_i2s_tx_fini(i2s_ptr); \
114 } \
115 vsf_err_t vsf_imp_i2s_tx_start(vsf_imp_i2s_t *i2s_ptr) \
116 { \
117 VSF_HAL_ASSERT(i2s_ptr != NULL); \
118 return vsf_remap_i2s_tx_start(i2s_ptr); \
119 } \
120 vsf_err_t vsf_imp_i2s_rx_init(vsf_imp_i2s_t *i2s_ptr, vsf_i2s_cfg_t *cfg_ptr) \
121 { \
122 VSF_HAL_ASSERT(i2s_ptr != NULL); \
123 return vsf_remap_i2s_rx_init(i2s_ptr, cfg_ptr); \
124 } \
125 void vsf_imp_i2s_rx_fini(vsf_imp_i2s_t *i2s_ptr) \
126 { \
127 VSF_HAL_ASSERT(i2s_ptr != NULL); \
128 vsf_remap_i2s_rx_fini(i2s_ptr); \
129 } \
130 vsf_err_t vsf_imp_i2s_rx_start(vsf_imp_i2s_t *i2s_ptr) \
131 { \
132 VSF_HAL_ASSERT(i2s_ptr != NULL); \
133 return vsf_remap_i2s_rx_start(i2s_ptr); \
134 } \
135 fsm_rt_t vsf_imp_i2s_enable(vsf_imp_i2s_t *i2s_ptr) \
136 { \
137 VSF_HAL_ASSERT(i2s_ptr != NULL); \
138 return vsf_remap_i2s_enable(i2s_ptr); \
139 } \
140 fsm_rt_t vsf_imp_i2s_disable(vsf_imp_i2s_t *i2s_ptr) \
141 { \
142 VSF_HAL_ASSERT(i2s_ptr != NULL); \
143 return vsf_remap_i2s_disable(i2s_ptr); \
144 } \
145 vsf_i2s_status_t vsf_imp_i2s_status(vsf_imp_i2s_t *i2s_ptr) \
146 { \
147 VSF_HAL_ASSERT(i2s_ptr != NULL); \
148 return vsf_remap_i2s_status(i2s_ptr); \
149 } \
150 vsf_i2s_capability_t vsf_imp_i2s_capability(vsf_imp_i2s_t *i2s_ptr) \
151 { \
152 VSF_HAL_ASSERT(i2s_ptr != NULL); \
153 return vsf_remap_i2s_capability(i2s_ptr); \
154 }
155#endif
156
157/*============================ MACROFIED FUNCTIONS ===========================*/
158/*============================ LOCAL VARIABLES ===============================*/
159/*============================ IMPLEMENTATION ================================*/
160/*============================ GLOBAL VARIABLES ==============================*/
161
162#define VSF_HAL_TEMPLATE_IMP_NAME _i2s
163#define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _I2S
164
165#ifndef VSF_I2S_CFG_IMP_PREFIX
166# error "Please define VSF_I2S_CFG_IMP_PREFIX in i2s driver"
167#endif
168
169#ifndef VSF_I2S_CFG_IMP_UPCASE_PREFIX
170# error "Please define VSF_I2S_CFG_IMP_UPCASE_PREFIX in i2s driver"
171#endif
172
173#ifndef VSF_I2S_CFG_IMP_COUNT_MASK_PREFIX
174# define VSF_I2S_CFG_IMP_COUNT_MASK_PREFIX VSF_I2S_CFG_IMP_UPCASE_PREFIX
175#endif
176
177#ifdef VSF_I2S_CFG_IMP_REMAP_FUNCTIONS
178# define VSF_HAL_CFG_IMP_REMAP_FUNCTIONS VSF_I2S_CFG_IMP_REMAP_FUNCTIONS
179#endif
180
182
183#undef VSF_I2S_CFG_IMP_PREFIX
184#undef VSF_I2S_CFG_IMP_UPCASE_PREFIX
185#undef VSF_I2S_CFG_IMP_COUNT_MASK_PREFIX
186#undef VSF_I2S_CFG_IMP_LV0
187#undef VSF_I2S_CFG_IMP_REMAP_FUNCTIONS
188#undef VSF_I2S_CFG_IMP_HAS_OP
189#undef VSF_I2S_CFG_IMP_EXTERN_OP
190
191#undef vsf_imp_i2s_t
192#undef vsf_imp_i2s_init
193#undef vsf_imp_i2s_enable
194#undef vsf_imp_i2s_disable
195#undef vsf_imp_i2s_status
196#undef vsf_imp_i2s_capability
197#undef vsf_imp_i2s_tx_init
198#undef vsf_imp_i2s_tx_fini
199#undef vsf_imp_i2s_tx_start
200#undef vsf_imp_i2s_rx_init
201#undef vsf_imp_i2s_rx_fini
202#undef vsf_imp_i2s_rx_start
203
204#undef vsf_remap_i2s_t
205#undef vsf_remap_i2s_init
206#undef vsf_remap_i2s_enable
207#undef vsf_remap_i2s_disable
208#undef vsf_remap_i2s_status
209#undef vsf_remap_i2s_capability
210#undef vsf_remap_i2s_tx_init
211#undef vsf_remap_i2s_tx_fini
212#undef vsf_remap_i2s_tx_start
213#undef vsf_remap_i2s_rx_init
214#undef vsf_remap_i2s_rx_fini
215#undef vsf_remap_i2s_rx_start
216
217#endif // VSF_HAL_USE_I2S == ENABLED
Definition vsf_template_i2s.h:181
i2s_capability
Definition vsf_template_i2s.h:190