VSF Documented
exti_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/*============================ INCLUDES ======================================*/
19
21
22#if VSF_HAL_USE_EXTI == ENABLED
23
24/*============================ MACROS ========================================*/
25
26#ifndef VSF_EXTI_CFG_RETAIN_DEFINED_PREFIX
27# define VSF_EXTI_CFG_RETAIN_DEFINED_PREFIX DISABLED
28#endif
29
30#ifndef VSF_EXTI_CFG_REIMPLEMENT_API_IRQ_CLEAR
31# define VSF_EXTI_CFG_REIMPLEMENT_API_IRQ_CLEAR DISABLED
32#endif
33
34/*============================ MACROFIED FUNCTIONS ===========================*/
35/*============================ PROTOTYPES ====================================*/
36/*============================ LOCAL VARIABLES ===============================*/
37/*============================ MACROFIED FUNCTIONS ===========================*/
38/*============================ IMPLEMENTATION ================================*/
39
40#ifndef VSF_EXTI_CFG_REAL_PREFIX
41# if defined(VSF_EXTI_CFG_IMP_RENAME_DEVICE_PREFIX) && (VSF_EXTI_CFG_IMP_RENAME_DEVICE_PREFIX == ENABLED)
42# define VSF_EXTI_CFG_REAL_PREFIX VSF_EXTI_CFG_IMP_DEVICE_PREFIX
43# else
44# define VSF_EXTI_CFG_REAL_PREFIX VSF_EXTI_CFG_IMP_PREFIX
45# endif
46#endif
47
48#if defined(VSF_EXTI_CFG_IMP_RENAME_DEVICE_PREFIX) && (VSF_EXTI_CFG_IMP_RENAME_DEVICE_PREFIX == ENABLED)
49# define vsf_real_exti_t VSF_MCONNECT(VSF_EXTI_CFG_IMP_DEVICE_PREFIX, _t)
50# define vsf_real_exti_irq_clear VSF_MCONNECT(VSF_EXTI_CFG_IMP_DEVICE_PREFIX, _irq_clear)
51# define vsf_real_exti_ctrl VSF_MCONNECT(VSF_EXTI_CFG_IMP_DEVICE_PREFIX, _ctrl)
52#else
53# define vsf_real_exti_t VSF_MCONNECT(VSF_EXTI_CFG_REAL_PREFIX, _exti_t)
54# define vsf_real_exti_irq_clear VSF_MCONNECT(VSF_EXTI_CFG_REAL_PREFIX, _exti_irq_clear)
55# define vsf_real_exti_ctrl VSF_MCONNECT(VSF_EXTI_CFG_REAL_PREFIX, _exti_ctrl)
56#endif
57
58#ifndef VSF_EXTI_CFG_REIMPLEMENT_API_CTRL
59# define VSF_EXTI_CFG_REIMPLEMENT_API_CTRL DISABLED
60#endif
61
62#if VSF_EXTI_CFG_REIMPLEMENT_API_IRQ_CLEAR == DISABLED
63vsf_exti_channel_mask_t vsf_real_exti_irq_clear(vsf_real_exti_t *exti_ptr, vsf_exti_channel_mask_t channel_mask)
64{
65 VSF_HAL_ASSERT(NULL != exti_ptr);
66
67 // Default implementation: not supported, trigger assertion
69
70 return 0;
71}
72#endif
73
74#if VSF_EXTI_CFG_REIMPLEMENT_API_CTRL == DISABLED
75vsf_err_t vsf_real_exti_ctrl(vsf_real_exti_t *exti_ptr, vsf_exti_ctrl_t ctrl, void *param)
76{
77 VSF_HAL_ASSERT(NULL != exti_ptr);
78
79 // Default implementation: not supported, trigger assertion
81
83}
84#endif
85/*============================ MACROS ========================================*/
86/*============================ MACROS ========================================*/
87/*============================ GLOBAL VARIABLES ==============================*/
88
89#ifndef VSF_HAL_TEMPLATE_IMP_NAME
90# define VSF_HAL_TEMPLATE_IMP_NAME _exti
91#endif
92
93#ifndef VSF_HAL_TEMPLATE_IMP_UPCASE_NAME
94# define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _EXTI
95#endif
96
97#ifndef VSF_HAL_TEMPLATE_IMP_COUNT_SUFFIX
98# define VSF_HAL_TEMPLATE_IMP_COUNT_SUFFIX _COUNT
99#endif
100
101#ifndef VSF_HAL_TEMPLATE_IMP_MASK_SUFFIX
102# define VSF_HAL_TEMPLATE_IMP_MASK_SUFFIX _MASK
103#endif
104
105#if !defined(VSF_EXTI_CFG_IMP_PREFIX) && !defined(VSF_EXTI_CFG_IMP_DEVICE_PREFIX)
106# error "Please define VSF_EXTI_CFG_IMP_PREFIX in exti driver"
107#endif
108
109#if !defined(VSF_EXTI_CFG_IMP_UPCASE_PREFIX) && !defined(VSF_EXTI_CFG_IMP_DEVICE_UPCASE_PREFIX)
110# error "Please define VSF_EXTI_CFG_IMP_UPCASE_PREFIX in exti driver"
111#endif
112
113#ifndef VSF_EXTI_CFG_IMP_COUNT_MASK_PREFIX
114# define VSF_EXTI_CFG_IMP_COUNT_MASK_PREFIX VSF_EXTI_CFG_IMP_UPCASE_PREFIX
115#endif
116
117#ifdef VSF_EXTI_CFG_IMP_REMAP_FUNCTIONS
118# define VSF_HAL_CFG_IMP_REMAP_FUNCTIONS VSF_EXTI_CFG_IMP_REMAP_FUNCTIONS
119#endif
120
122
123#if VSF_EXTI_CFG_RETAIN_DEFINED_PREFIX == DISABLED
124# undef VSF_EXTI_CFG_IMP_PREFIX
125# undef VSF_EXTI_CFG_IMP_UPCASE_PREFIX
126# undef VSF_EXTI_CFG_IMP_DEVICE_PREFIX
127# undef VSF_EXTI_CFG_IMP_DEVICE_UPCASE_PREFIX
128#endif
129
130#undef VSF_EXTI_CFG_REIMPLEMENT_API_IRQ_CLEAR
131#undef VSF_EXTI_CFG_REIMPLEMENT_API_CTRL
132#undef VSF_EXTI_CFG_REIMPLEMENT_TYPE_CTRL
133#undef VSF_EXTI_CFG_REAL_PREFIX
134#undef vsf_real_exti_t
135#undef vsf_real_exti_irq_clear
136#undef vsf_real_exti_ctrl
137
138/*============================ STATIC ASSERTIONS ==============================*/
139
140/* User-extensible macros for custom mode and IRQ mask values
141 * Users can define these macros before including this template to append
142 * their custom enum values to the uniqueness checks.
143 *
144 * Check modes for custom values:
145 * VSF_EXTI_CFG_MODE_CHECK_UNIQUE - Check mode for custom mode values
146 * Default: VSF_HAL_CHECK_MODE_LOOSE (loose mode, no overlapping bits)
147 * Can be set to: VSF_HAL_CHECK_MODE_STRICT (strict mode, no overlapping bits)
148 * VSF_EXTI_CFG_IRQ_MASK_CHECK_UNIQUE - Check mode for custom IRQ mask values
149 * Default: VSF_HAL_CHECK_MODE_STRICT (strict mode, no overlapping bits)
150 * Can be set to: VSF_HAL_CHECK_MODE_LOOSE (loose mode, no overlapping bits)
151 *
152 * Example usage in vendor driver:
153 * #define VSF_EXTI_CUSTOM_MODE_VALUES MY_CUSTOM_MODE1, MY_CUSTOM_MODE2
154 * #define VSF_EXTI_CFG_MODE_CHECK_UNIQUE VSF_HAL_CHECK_MODE_LOOSE
155 * #define VSF_EXTI_CUSTOM_IRQ_MASK_VALUES MY_CUSTOM_IRQ1, MY_CUSTOM_IRQ2
156 * #define VSF_EXTI_CFG_IRQ_MASK_CHECK_UNIQUE VSF_HAL_CHECK_MODE_STRICT
157 * #include "hal/driver/common/exti/exti_template.inc"
158 */
159
160
161#undef VSF_EXTI_CFG_MODE_CHECK_UNIQUE
162#undef VSF_EXTI_CFG_IRQ_MASK_CHECK_UNIQUE
163#undef VSF_EXTI_CUSTOM_MODE_VALUES
164#undef VSF_EXTI_CUSTOM_IRQ_MASK_VALUES
165#undef VSF_EXTI_CFG_IMP_RENAME_DEVICE_PREFIX
166
167#endif /* VSF_HAL_USE_EXTI */
vsf_err_t
Definition __type.h:42
@ VSF_ERR_NOT_SUPPORT
function not supported
Definition __type.h:46
#define NULL
Definition lvgl.h:26
#define VSF_HAL_ASSERT(__CON)
all hal modules use this configuration file
Definition vsf_hal_cfg.h:36
vsf_exti_ctrl_t
Predefined VSF EXTI control commands that can be reimplemented in specific HAL drivers.
Definition vsf_template_exti.h:375
uint32_t vsf_exti_channel_mask_t
Definition vsf_template_exti.h:205
Generated from commit: vsfteam/vsf@b2e9e8a