caffeine-sal 0.1.17
Header-only polymorphic middleware services layer for the Caffeine Framework
Loading...
Searching...
No Matches
cfn_sal_utl_logging.h
Go to the documentation of this file.
1
6#ifndef CAFFEINE_SAL_UTL_LOGGING_H
7#define CAFFEINE_SAL_UTL_LOGGING_H
8
9#ifdef __cplusplus
10extern "C"
11{
12#endif
13
14/* Includes ---------------------------------------------------------*/
15#include <stdarg.h>
16#include "cfn_sal.h"
17
18/* Defines ----------------------------------------------------------*/
19
20#define CFN_SAL_UTL_TYPE_LOGGING CFN_SAL_TYPE('L', 'O', 'G')
21
22/* Types Enums ------------------------------------------------------*/
23
32
39
45
46/* Types Structs ----------------------------------------------------*/
47
54
55typedef struct cfn_sal_utl_logging_s cfn_sal_utl_logging_t;
57
59 uint32_t event,
60 uint32_t error,
61 void *user_arg);
62
67{
68 cfn_hal_api_base_t base;
69
70 /* Logging Operations */
71 cfn_hal_error_code_t (*log)(cfn_sal_utl_logging_t *driver,
73 const char *fmt,
74 va_list args);
75 cfn_hal_error_code_t (*flush)(cfn_sal_utl_logging_t *driver);
76
77 /* Configuration */
78 cfn_hal_error_code_t (*set_level)(cfn_sal_utl_logging_t *driver, cfn_sal_utl_logging_level_t level);
80 cfn_hal_error_code_t (*enable_color)(cfn_sal_utl_logging_t *driver, bool enable);
81 cfn_hal_error_code_t (*set_format)(cfn_sal_utl_logging_t *driver, cfn_sal_utl_logging_format_t format);
82};
83
85
91
92/* Functions inline ------------------------------------------------- */
93
95 uint32_t peripheral_id,
96 void *dependency,
98 const cfn_sal_phy_t *phy,
99 const cfn_sal_utl_logging_config_t *config,
101 void *user_arg)
102{
103 CFN_HAL_POPULATE_DRIVER(
104 driver, CFN_SAL_UTL_TYPE_LOGGING, peripheral_id, NULL, dependency, api, phy, config, callback, user_arg);
105}
106
108 const cfn_sal_utl_logging_config_t *config,
109 const cfn_sal_phy_t *phy,
110 void *dependency,
112 void *user_arg);
114
115CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_init(cfn_sal_utl_logging_t *driver)
116{
117 if (!driver)
118 {
119 return CFN_HAL_ERROR_BAD_PARAM;
120 }
121 driver->base.vmt = (const struct cfn_hal_api_base_s *) driver->api;
122 return cfn_hal_base_init(&driver->base, CFN_SAL_UTL_TYPE_LOGGING);
123}
124
125CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_deinit(cfn_sal_utl_logging_t *driver)
126{
127 if (!driver)
128 {
129 return CFN_HAL_ERROR_BAD_PARAM;
130 }
131 return cfn_hal_base_deinit(&driver->base, CFN_SAL_UTL_TYPE_LOGGING);
132}
133
134CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_config_set(cfn_sal_utl_logging_t *driver,
135 const cfn_sal_utl_logging_config_t *config)
136{
137 if (!driver)
138 {
139 return CFN_HAL_ERROR_BAD_PARAM;
140 }
141 driver->config = config;
142 return cfn_hal_base_config_set(&driver->base, CFN_SAL_UTL_TYPE_LOGGING, (const void *) config);
143}
144
145CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_config_get(cfn_sal_utl_logging_t *driver,
147{
148 if (!driver || !config || !driver->config)
149 {
150 return CFN_HAL_ERROR_BAD_PARAM;
151 }
152 *config = *(driver->config);
153 return CFN_HAL_ERROR_OK;
154}
155
156CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_callback_register(cfn_sal_utl_logging_t *driver,
158 void *user_arg)
159{
160 if (!driver)
161 {
162 return CFN_HAL_ERROR_BAD_PARAM;
163 }
164 driver->cb = callback;
165 driver->cb_user_arg = user_arg;
166 return cfn_hal_base_callback_register(
167 &driver->base, CFN_SAL_UTL_TYPE_LOGGING, (cfn_hal_callback_t) callback, user_arg);
168}
169
170CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_power_state_set(cfn_sal_utl_logging_t *driver,
171 cfn_hal_power_state_t state)
172{
173 if (!driver)
174 {
175 return CFN_HAL_ERROR_BAD_PARAM;
176 }
177 return cfn_hal_power_state_set(&driver->base, CFN_SAL_UTL_TYPE_LOGGING, state);
178}
179
180CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_event_enable(cfn_sal_utl_logging_t *driver, uint32_t event_mask)
181{
182 if (!driver)
183 {
184 return CFN_HAL_ERROR_BAD_PARAM;
185 }
186 return cfn_hal_base_event_enable(&driver->base, CFN_SAL_UTL_TYPE_LOGGING, event_mask);
187}
188
189CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_event_disable(cfn_sal_utl_logging_t *driver,
190 uint32_t event_mask)
191{
192 if (!driver)
193 {
194 return CFN_HAL_ERROR_BAD_PARAM;
195 }
196 return cfn_hal_base_event_disable(&driver->base, CFN_SAL_UTL_TYPE_LOGGING, event_mask);
197}
198
199CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_event_get(cfn_sal_utl_logging_t *driver, uint32_t *event_mask)
200{
201 if (!driver)
202 {
203 return CFN_HAL_ERROR_BAD_PARAM;
204 }
205 return cfn_hal_base_event_get(&driver->base, CFN_SAL_UTL_TYPE_LOGGING, event_mask);
206}
207
208CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_error_enable(cfn_sal_utl_logging_t *driver, uint32_t error_mask)
209{
210 if (!driver)
211 {
212 return CFN_HAL_ERROR_BAD_PARAM;
213 }
214 return cfn_hal_base_error_enable(&driver->base, CFN_SAL_UTL_TYPE_LOGGING, error_mask);
215}
216
217CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_error_disable(cfn_sal_utl_logging_t *driver,
218 uint32_t error_mask)
219{
220 if (!driver)
221 {
222 return CFN_HAL_ERROR_BAD_PARAM;
223 }
224 return cfn_hal_base_error_disable(&driver->base, CFN_SAL_UTL_TYPE_LOGGING, error_mask);
225}
226
227CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_error_get(cfn_sal_utl_logging_t *driver, uint32_t *error_mask)
228{
229 if (!driver)
230 {
231 return CFN_HAL_ERROR_BAD_PARAM;
232 }
233 return cfn_hal_base_error_get(&driver->base, CFN_SAL_UTL_TYPE_LOGGING, error_mask);
234}
235
236/* Service Specific Functions --------------------------------------- */
237
238CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_log(cfn_sal_utl_logging_t *driver,
240 const char *fmt,
241 ...)
242{
243 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
244 va_list args;
245 va_start(args, fmt);
246 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_UTL_TYPE_LOGGING, log, driver, error, level, fmt, args);
247 va_end(args);
248 return error;
249}
250
251CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_flush(cfn_sal_utl_logging_t *driver)
252{
253 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
254 CFN_HAL_CHECK_AND_CALL_FUNC(CFN_SAL_UTL_TYPE_LOGGING, flush, driver, error);
255 return error;
256}
257
258CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_set_level(cfn_sal_utl_logging_t *driver,
260{
261 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
262 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_UTL_TYPE_LOGGING, set_level, driver, error, level);
263 return error;
264}
265
266CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_set_output_target(cfn_sal_utl_logging_t *driver,
268{
269 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
270 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_UTL_TYPE_LOGGING, set_output_target, driver, error, target);
271 return error;
272}
273
274CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_enable_color(cfn_sal_utl_logging_t *driver, bool enable)
275{
276 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
277 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_UTL_TYPE_LOGGING, enable_color, driver, error, enable);
278 return error;
279}
280
281CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_set_format(cfn_sal_utl_logging_t *driver,
283{
284 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
285 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_UTL_TYPE_LOGGING, set_format, driver, error, format);
286 return error;
287}
288
289#ifdef __cplusplus
290}
291#endif
292
293#endif /* CAFFEINE_SAL_UTL_LOGGING_H */
Core definitions and macros for Caffeine SAL.
#define CFN_SAL_CREATE_DRIVER_TYPE(prefix, config_type, api_type, phy_type, cb_type)
Definition cfn_sal.h:38
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_config_set(cfn_sal_utl_logging_t *driver, const cfn_sal_utl_logging_config_t *config)
Definition cfn_sal_utl_logging.h:134
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_event_disable(cfn_sal_utl_logging_t *driver, uint32_t event_mask)
Definition cfn_sal_utl_logging.h:189
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_log(cfn_sal_utl_logging_t *driver, cfn_sal_utl_logging_level_t level, const char *fmt,...)
Definition cfn_sal_utl_logging.h:238
struct cfn_sal_utl_logging_s cfn_sal_utl_logging_t
Definition cfn_sal_utl_logging.h:55
cfn_sal_utl_logging_level_t
Definition cfn_sal_utl_logging.h:25
@ CFN_SAL_UTL_LOGGING_LEVEL_FATAL
Definition cfn_sal_utl_logging.h:30
@ CFN_SAL_UTL_LOGGING_LEVEL_DEBUG
Definition cfn_sal_utl_logging.h:26
@ CFN_SAL_UTL_LOGGING_LEVEL_ERROR
Definition cfn_sal_utl_logging.h:29
@ CFN_SAL_UTL_LOGGING_LEVEL_WARN
Definition cfn_sal_utl_logging.h:28
@ CFN_SAL_UTL_LOGGING_LEVEL_INFO
Definition cfn_sal_utl_logging.h:27
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_set_level(cfn_sal_utl_logging_t *driver, cfn_sal_utl_logging_level_t level)
Definition cfn_sal_utl_logging.h:258
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_event_enable(cfn_sal_utl_logging_t *driver, uint32_t event_mask)
Definition cfn_sal_utl_logging.h:180
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_set_format(cfn_sal_utl_logging_t *driver, cfn_sal_utl_logging_format_t format)
Definition cfn_sal_utl_logging.h:281
CFN_HAL_INLINE void cfn_sal_utl_logging_populate(cfn_sal_utl_logging_t *driver, uint32_t peripheral_id, void *dependency, const cfn_sal_utl_logging_api_t *api, const cfn_sal_phy_t *phy, const cfn_sal_utl_logging_config_t *config, cfn_sal_utl_logging_callback_t callback, void *user_arg)
Definition cfn_sal_utl_logging.h:94
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_error_disable(cfn_sal_utl_logging_t *driver, uint32_t error_mask)
Definition cfn_sal_utl_logging.h:217
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_set_output_target(cfn_sal_utl_logging_t *driver, cfn_sal_utl_logging_target_t target)
Definition cfn_sal_utl_logging.h:266
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_error_enable(cfn_sal_utl_logging_t *driver, uint32_t error_mask)
Definition cfn_sal_utl_logging.h:208
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_power_state_set(cfn_sal_utl_logging_t *driver, cfn_hal_power_state_t state)
Definition cfn_sal_utl_logging.h:170
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_callback_register(cfn_sal_utl_logging_t *driver, cfn_sal_utl_logging_callback_t callback, void *user_arg)
Definition cfn_sal_utl_logging.h:156
cfn_hal_error_code_t cfn_sal_utl_logging_construct(cfn_sal_utl_logging_t *driver, const cfn_sal_utl_logging_config_t *config, const cfn_sal_phy_t *phy, void *dependency, cfn_sal_utl_logging_callback_t callback, void *user_arg)
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_config_get(cfn_sal_utl_logging_t *driver, cfn_sal_utl_logging_config_t *config)
Definition cfn_sal_utl_logging.h:145
cfn_sal_utl_logging_target_t
Definition cfn_sal_utl_logging.h:34
@ CFN_SAL_UTL_LOGGING_TARGET_CONSOLE
Definition cfn_sal_utl_logging.h:35
@ CFN_SAL_UTL_LOGGING_TARGET_FILE
Definition cfn_sal_utl_logging.h:36
@ CFN_SAL_UTL_LOGGING_TARGET_NETWORK
Definition cfn_sal_utl_logging.h:37
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_enable_color(cfn_sal_utl_logging_t *driver, bool enable)
Definition cfn_sal_utl_logging.h:274
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_deinit(cfn_sal_utl_logging_t *driver)
Definition cfn_sal_utl_logging.h:125
cfn_sal_utl_logging_format_t
Definition cfn_sal_utl_logging.h:41
@ CFN_SAL_UTL_LOGGING_FORMAT_JSON
Definition cfn_sal_utl_logging.h:43
@ CFN_SAL_UTL_LOGGING_FORMAT_TEXT
Definition cfn_sal_utl_logging.h:42
#define CFN_SAL_UTL_TYPE_LOGGING
Definition cfn_sal_utl_logging.h:20
cfn_hal_error_code_t cfn_sal_utl_logging_destruct(cfn_sal_utl_logging_t *driver)
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_init(cfn_sal_utl_logging_t *driver)
Definition cfn_sal_utl_logging.h:115
void(* cfn_sal_utl_logging_callback_t)(cfn_sal_utl_logging_t *driver, uint32_t event, uint32_t error, void *user_arg)
Definition cfn_sal_utl_logging.h:58
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_flush(cfn_sal_utl_logging_t *driver)
Definition cfn_sal_utl_logging.h:251
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_error_get(cfn_sal_utl_logging_t *driver, uint32_t *error_mask)
Definition cfn_sal_utl_logging.h:227
CFN_HAL_VMT_CHECK(struct cfn_sal_utl_logging_api_s)
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_logging_event_get(cfn_sal_utl_logging_t *driver, uint32_t *event_mask)
Definition cfn_sal_utl_logging.h:199
Generic physical mapping for services.
Definition cfn_sal_types.h:26
Logging Virtual Method Table (VMT).
Definition cfn_sal_utl_logging.h:67
cfn_hal_error_code_t(* flush)(cfn_sal_utl_logging_t *driver)
Definition cfn_sal_utl_logging.h:75
cfn_hal_error_code_t(* set_output_target)(cfn_sal_utl_logging_t *driver, cfn_sal_utl_logging_target_t target)
Definition cfn_sal_utl_logging.h:79
cfn_hal_error_code_t(* set_level)(cfn_sal_utl_logging_t *driver, cfn_sal_utl_logging_level_t level)
Definition cfn_sal_utl_logging.h:78
cfn_hal_error_code_t(* log)(cfn_sal_utl_logging_t *driver, cfn_sal_utl_logging_level_t level, const char *fmt, va_list args)
Definition cfn_sal_utl_logging.h:71
cfn_hal_error_code_t(* set_format)(cfn_sal_utl_logging_t *driver, cfn_sal_utl_logging_format_t format)
Definition cfn_sal_utl_logging.h:81
cfn_hal_error_code_t(* enable_color)(cfn_sal_utl_logging_t *driver, bool enable)
Definition cfn_sal_utl_logging.h:80
cfn_hal_api_base_t base
Definition cfn_sal_utl_logging.h:68
Definition cfn_sal_utl_logging.h:49
bool use_timestamp
Definition cfn_sal_utl_logging.h:51
cfn_sal_utl_logging_level_t min_level
Definition cfn_sal_utl_logging.h:50
void * custom
Definition cfn_sal_utl_logging.h:52