VSF Documented
wdt_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_WDT == ENABLED
19
20/*============================ INCLUDES ======================================*/
21/*============================ MACROS ========================================*/
22
23#define vsf_real_wdt_t VSF_MCONNECT(VSF_WDT_CFG_IMP_PREFIX, _wdt_t)
24#define vsf_real_wdt_capability VSF_MCONNECT(VSF_WDT_CFG_IMP_PREFIX, _wdt_capability)
25#define vsf_real_wdt_get_configuration VSF_MCONNECT(VSF_WDT_CFG_IMP_PREFIX, _wdt_get_configuration)
26
27#ifndef VSF_WDT_CFG_REIMPLEMENT_API_CAPABILITY
28
29#ifndef VSF_WDT_CFG_REIMPLEMENT_API_GET_CONFIGURATION
30# define VSF_WDT_CFG_REIMPLEMENT_API_GET_CONFIGURATION DISABLED
31#endif
32# define VSF_WDT_CFG_REIMPLEMENT_API_CAPABILITY DISABLED
33#endif
34
35#ifdef VSF_WDT_CFG_IMP_REMAP_PREFIX
36# undef VSF_WDT_CFG_REIMPLEMENT_API_CAPABILITY
37# define VSF_WDT_CFG_REIMPLEMENT_API_CAPABILITY ENABLED
38# undef VSF_WDT_CFG_REIMPLEMENT_API_GET_CONFIGURATION
39# define VSF_WDT_CFG_REIMPLEMENT_API_GET_CONFIGURATION ENABLED
40#endif
41
42#if VSF_WDT_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
43# ifndef VSF_WDT_CFG_CAPABILITY_SUPPORT_EARLY_WAKEUP
44# define VSF_WDT_CFG_CAPABILITY_SUPPORT_EARLY_WAKEUP 1
45# endif
46# ifndef VSF_WDT_CFG_CAPABILITY_SUPPORT_RESET_NONE
47# define VSF_WDT_CFG_CAPABILITY_SUPPORT_RESET_NONE 1
48# endif
49# ifndef VSF_WDT_CFG_CAPABILITY_support_reset_cpu
50# define VSF_WDT_CFG_CAPABILITY_support_reset_cpu 1
51# endif
52# ifndef VSF_WDT_CFG_CAPABILITY_SUPPORT_RESET_SOC
53# define VSF_WDT_CFG_CAPABILITY_SUPPORT_RESET_SOC 1
54# endif
55# ifndef VSF_WDT_CFG_CAPABILITY_SUPPORT_DISABLE
56# define VSF_WDT_CFG_CAPABILITY_SUPPORT_DISABLE 1
57# endif
58# ifndef VSF_WDT_CFG_CAPABILITY_MAX_TIMEOUT_MS
59# define VSF_WDT_CFG_CAPABILITY_MAX_TIMEOUT_MS (1000 * 1000)
60# endif
61#endif
62
63/*============================ LOCAL VARIABLES ===============================*/
64/*============================ IMPLEMENTATION ================================*/
65
66#if VSF_WDT_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
67vsf_wdt_capability_t vsf_real_wdt_capability(vsf_real_wdt_t *wdt_ptr)
68{
69 vsf_wdt_capability_t wdt_capability = {
70 .support_early_wakeup = VSF_WDT_CFG_CAPABILITY_SUPPORT_EARLY_WAKEUP,
71 .support_reset_none = VSF_WDT_CFG_CAPABILITY_SUPPORT_RESET_NONE,
72 .support_reset_cpu = VSF_WDT_CFG_CAPABILITY_support_reset_cpu,
73 .support_reset_soc = VSF_WDT_CFG_CAPABILITY_SUPPORT_RESET_SOC,
74 .support_disable = VSF_WDT_CFG_CAPABILITY_SUPPORT_DISABLE,
75 .max_timeout_ms = VSF_WDT_CFG_CAPABILITY_MAX_TIMEOUT_MS,
76 };
77
78 return wdt_capability;
79}
80#endif
81
82#if VSF_WDT_CFG_REIMPLEMENT_API_GET_CONFIGURATION == DISABLED
83vsf_err_t vsf_real_wdt_get_configuration(vsf_real_wdt_t *wdt_ptr, vsf_wdt_cfg_t *cfg_ptr)
84{
85 VSF_HAL_ASSERT(NULL != wdt_ptr);
86 VSF_HAL_ASSERT(NULL != cfg_ptr);
87
88 // Default implementation: not supported, trigger assertion
90
92}
93#endif
94
95/*============================ MACROS ========================================*/
96
97#undef VSF_WDT_CFG_REIMPLEMENT_API_CAPABILITY
98#undef VSF_WDT_CFG_REIMPLEMENT_API_GET_CONFIGURATION
99#undef VSF_WDT_CFG_CAPABILITY_SUPPORT_EARLY_WAKEUP
100#undef VSF_WDT_CFG_CAPABILITY_SUPPORT_RESET_NONE
101#undef VSF_WDT_CFG_CAPABILITY_support_reset_cpu
102#undef VSF_WDT_CFG_CAPABILITY_SUPPORT_RESET_SOC
103#undef VSF_WDT_CFG_CAPABILITY_SUPPORT_DISABLE
104#undef VSF_WDT_CFG_CAPABILITY_MAX_TIMEOUT_MS
105
106#undef vsf_real_wdt_t
107#undef vsf_real_wdt_capability
108#undef vsf_real_wdt_get_configuration
109
110/*============================ MACROS ========================================*/
111
112#ifdef VSF_WDT_CFG_IMP_REMAP_PREFIX
113
114# define vsf_imp_wdt_t VSF_MCONNECT(VSF_WDT_CFG_IMP_PREFIX, _wdt_t)
115# define vsf_imp_wdt_init VSF_MCONNECT(VSF_WDT_CFG_IMP_PREFIX, _wdt_init)
116# define vsf_imp_wdt_fini VSF_MCONNECT(VSF_WDT_CFG_IMP_PREFIX, _wdt_fini)
117# define vsf_imp_wdt_enable VSF_MCONNECT(VSF_WDT_CFG_IMP_PREFIX, _wdt_enable)
118# define vsf_imp_wdt_disable VSF_MCONNECT(VSF_WDT_CFG_IMP_PREFIX, _wdt_disable)
119# define vsf_imp_wdt_capability VSF_MCONNECT(VSF_WDT_CFG_IMP_PREFIX, _wdt_capability)
120# define vsf_imp_wdt_feed VSF_MCONNECT(VSF_WDT_CFG_IMP_PREFIX, _wdt_feed)
121# define vsf_imp_wdt_get_configuration VSF_MCONNECT(VSF_WDT_CFG_IMP_PREFIX, _wdt_get_configuration)
122
123# define vsf_remap_wdt_t VSF_MCONNECT(VSF_WDT_CFG_IMP_REMAP_PREFIX, _wdt_t)
124# define vsf_remap_wdt_init VSF_MCONNECT(VSF_WDT_CFG_IMP_REMAP_PREFIX, _wdt_init)
125# define vsf_remap_wdt_fini VSF_MCONNECT(VSF_WDT_CFG_IMP_REMAP_PREFIX, _wdt_fini)
126# define vsf_remap_wdt_enable VSF_MCONNECT(VSF_WDT_CFG_IMP_REMAP_PREFIX, _wdt_enable)
127# define vsf_remap_wdt_disable VSF_MCONNECT(VSF_WDT_CFG_IMP_REMAP_PREFIX, _wdt_disable)
128# define vsf_remap_wdt_capability VSF_MCONNECT(VSF_WDT_CFG_IMP_REMAP_PREFIX, _wdt_capability)
129# define vsf_remap_wdt_feed VSF_MCONNECT(VSF_WDT_CFG_IMP_REMAP_PREFIX, _wdt_feed)
130# define vsf_remap_wdt_get_configuration VSF_MCONNECT(VSF_WDT_CFG_IMP_REMAP_PREFIX, _wdt_get_configuration)
131
132# define VSF_WDT_CFG_IMP_REMAP_FUNCTIONS \
133 vsf_err_t vsf_imp_wdt_init(vsf_imp_wdt_t *wdt_ptr, vsf_wdt_cfg_t *cfg_ptr) \
134 { \
135 VSF_HAL_ASSERT(wdt_ptr != NULL); \
136 return vsf_remap_wdt_init(wdt_ptr, cfg_ptr); \
137 } \
138 void vsf_imp_wdt_fini(vsf_imp_wdt_t *wdt_ptr) \
139 { \
140 VSF_HAL_ASSERT(wdt_ptr != NULL); \
141 vsf_remap_wdt_fini(wdt_ptr); \
142 } \
143 fsm_rt_t vsf_imp_wdt_enable(vsf_imp_wdt_t *wdt_ptr) \
144 { \
145 VSF_HAL_ASSERT(wdt_ptr != NULL); \
146 return vsf_remap_wdt_enable(wdt_ptr); \
147 } \
148 fsm_rt_t vsf_imp_wdt_disable(vsf_imp_wdt_t *wdt_ptr) \
149 { \
150 VSF_HAL_ASSERT(wdt_ptr != NULL); \
151 return vsf_remap_wdt_disable(wdt_ptr); \
152 } \
153 vsf_wdt_capability_t vsf_imp_wdt_capability(vsf_imp_wdt_t *wdt_ptr) \
154 { \
155 VSF_HAL_ASSERT(wdt_ptr != NULL); \
156 return vsf_remap_wdt_capability(wdt_ptr); \
157 } \
158 void vsf_imp_wdt_feed(vsf_imp_wdt_t *wdt_ptr) \
159 { \
160 VSF_HAL_ASSERT(wdt_ptr != NULL); \
161 vsf_remap_wdt_feed(wdt_ptr); \
162 } \
163 vsf_err_t vsf_imp_wdt_get_configuration(vsf_imp_wdt_t *wdt_ptr, \
164 vsf_wdt_cfg_t *cfg_ptr) \
165 { \
166 VSF_HAL_ASSERT(wdt_ptr != NULL); \
167 return vsf_remap_wdt_get_configuration(wdt_ptr, cfg_ptr); \
168 }
169#endif
170
171/*============================ GLOBAL VARIABLES ==============================*/
172
173#define VSF_HAL_TEMPLATE_IMP_NAME _wdt
174#define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _WDT
175
176#if !defined(VSF_WDT_CFG_IMP_PREFIX) && !defined(VSF_WDT_CFG_IMP_DEVICE_PREFIX)
177# error "Please define VSF_WDT_CFG_IMP_PREFIX in wdt driver"
178#endif
179
180#if !defined(VSF_WDT_CFG_IMP_UPCASE_PREFIX) && !defined(VSF_WDT_CFG_IMP_DEVICE_UPCASE_PREFIX)
181# error "Please define VSF_WDT_CFG_IMP_UPCASE_PREFIX in wdt driver"
182#endif
183
184#ifndef VSF_WDT_CFG_IMP_COUNT_MASK_PREFIX
185# define VSF_WDT_CFG_IMP_COUNT_MASK_PREFIX VSF_WDT_CFG_IMP_UPCASE_PREFIX
186#endif
187
188#ifdef VSF_WDT_CFG_IMP_REMAP_FUNCTIONS
189# define VSF_HAL_CFG_IMP_REMAP_FUNCTIONS VSF_WDT_CFG_IMP_REMAP_FUNCTIONS
190#endif
191
193
194#undef VSF_WDT_CFG_IMP_PREFIX
195#undef VSF_WDT_CFG_IMP_COUNT_MASK_PREFIX
196#undef VSF_WDT_CFG_IMP_UPCASE_PREFIX
197#undef VSF_WDT_CFG_IMP_DEVICE_PREFIX
198#undef VSF_WDT_CFG_IMP_DEVICE_UPCASE_PREFIX
199#undef VSF_WDT_CFG_IMP_LV0
200#undef VSF_WDT_CFG_IMP_REMAP_FUNCTIONS
201#undef VSF_WDT_CFG_IMP_HAS_OP
202#undef VSF_WDT_CFG_IMP_EXTERN_OP
203
204#undef vsf_imp_wdt_t
205#undef vsf_imp_wdt_init
206#undef vsf_imp_wdt_fini
207#undef vsf_imp_wdt_enable
208#undef vsf_imp_wdt_disable
209#undef vsf_imp_wdt_capability
210#undef vsf_imp_wdt_feed
211#undef vsf_imp_wdt_get_configuration
212
213#undef vsf_remap_wdt_t
214#undef vsf_remap_wdt_init
215#undef vsf_remap_wdt_fini
216#undef vsf_remap_wdt_enable
217#undef vsf_remap_wdt_disable
218#undef vsf_remap_wdt_capability
219#undef vsf_remap_wdt_feed
220#undef vsf_remap_wdt_get_configuration
221#endif /* VSF_HAL_USE_WDT */
vsf_err_t
Definition __type.h:42
@ VSF_ERR_NOT_SUPPORT
function not supported
Definition __type.h:46
#define NULL
Definition lvgl.h:26
Predefined VSF WDT capability that can be reimplemented in specific hal drivers. The vsf_wdt_capabili...
Definition vsf_template_wdt.h:330
uint8_t support_early_wakeup
Definition wdt.h:158
WDT configuration structure.
Definition vsf_template_wdt.h:311
#define VSF_HAL_ASSERT(__CON)
all hal modules use this configuration file
Definition vsf_hal_cfg.h:36
Generated from commit: vsfteam/vsf@74aa6ce