caffeine-sal 0.1.17
Header-only polymorphic middleware services layer for the Caffeine Framework
Loading...
Searching...
No Matches
cfn_sal_utl_kv.h
Go to the documentation of this file.
1
6#ifndef CAFFEINE_SAL_UTL_KV_H
7#define CAFFEINE_SAL_UTL_KV_H
8
9#ifdef __cplusplus
10extern "C"
11{
12#endif
13
14/* Includes ---------------------------------------------------------*/
15#include "cfn_sal.h"
16
17/* Defines ----------------------------------------------------------*/
18
19#define CFN_SAL_UTL_TYPE_KEY_VALUE CFN_SAL_TYPE('K', 'V', 'S')
20
21/* Types Enums ------------------------------------------------------*/
22
23/* Types Structs ----------------------------------------------------*/
24
25typedef struct
26{
27 const char *partition_name;
28 void *custom;
30
31typedef struct cfn_sal_utl_key_value_s cfn_sal_utl_key_value_t;
33
35 uint32_t event,
36 uint32_t error,
37 void *user_arg);
38
43{
44 cfn_hal_api_base_t base;
45
46 /* KV Operations */
47 cfn_hal_error_code_t (*set)(cfn_sal_utl_key_value_t *driver, const char *key, const void *val, size_t len);
48 cfn_hal_error_code_t (*get)(
49 cfn_sal_utl_key_value_t *driver, const char *key, void *val_buf, size_t max_len, size_t *actual_len);
50 cfn_hal_error_code_t (*del)(cfn_sal_utl_key_value_t *driver, const char *key);
51 cfn_hal_error_code_t (*clear)(cfn_sal_utl_key_value_t *driver);
52 cfn_hal_error_code_t (*get_info)(cfn_sal_utl_key_value_t *driver, size_t *used_bytes, size_t *total_bytes);
53};
54
56
62
63/* Functions inline ------------------------------------------------- */
64
66 uint32_t peripheral_id,
67 void *dependency,
69 const cfn_sal_phy_t *phy,
72 void *user_arg)
73{
74 CFN_HAL_POPULATE_DRIVER(
75 driver, CFN_SAL_UTL_TYPE_KEY_VALUE, peripheral_id, NULL, dependency, api, phy, config, callback, user_arg);
76}
77
80 const cfn_sal_phy_t *phy,
81 void *dependency,
83 void *user_arg);
85
86CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_init(cfn_sal_utl_key_value_t *driver)
87{
88 if (!driver)
89 {
90 return CFN_HAL_ERROR_BAD_PARAM;
91 }
92 driver->base.vmt = (const struct cfn_hal_api_base_s *) driver->api;
93 return cfn_hal_base_init(&driver->base, CFN_SAL_UTL_TYPE_KEY_VALUE);
94}
95
96CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_deinit(cfn_sal_utl_key_value_t *driver)
97{
98 if (!driver)
99 {
100 return CFN_HAL_ERROR_BAD_PARAM;
101 }
102 return cfn_hal_base_deinit(&driver->base, CFN_SAL_UTL_TYPE_KEY_VALUE);
103}
104
105CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_config_set(cfn_sal_utl_key_value_t *driver,
106 const cfn_sal_utl_key_value_config_t *config)
107{
108 if (!driver)
109 {
110 return CFN_HAL_ERROR_BAD_PARAM;
111 }
112 driver->config = config;
113 return cfn_hal_base_config_set(&driver->base, CFN_SAL_UTL_TYPE_KEY_VALUE, (const void *) config);
114}
115
116CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_config_get(cfn_sal_utl_key_value_t *driver,
118{
119 if (!driver || !config || !driver->config)
120 {
121 return CFN_HAL_ERROR_BAD_PARAM;
122 }
123 *config = *(driver->config);
124 return CFN_HAL_ERROR_OK;
125}
126
127CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_callback_register(cfn_sal_utl_key_value_t *driver,
129 void *user_arg)
130{
131 if (!driver)
132 {
133 return CFN_HAL_ERROR_BAD_PARAM;
134 }
135 driver->cb = callback;
136 driver->cb_user_arg = user_arg;
137 return cfn_hal_base_callback_register(
138 &driver->base, CFN_SAL_UTL_TYPE_KEY_VALUE, (cfn_hal_callback_t) callback, user_arg);
139}
140
141CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_power_state_set(cfn_sal_utl_key_value_t *driver,
142 cfn_hal_power_state_t state)
143{
144 if (!driver)
145 {
146 return CFN_HAL_ERROR_BAD_PARAM;
147 }
148 return cfn_hal_power_state_set(&driver->base, CFN_SAL_UTL_TYPE_KEY_VALUE, state);
149}
150
151CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_event_enable(cfn_sal_utl_key_value_t *driver,
152 uint32_t event_mask)
153{
154 if (!driver)
155 {
156 return CFN_HAL_ERROR_BAD_PARAM;
157 }
158 return cfn_hal_base_event_enable(&driver->base, CFN_SAL_UTL_TYPE_KEY_VALUE, event_mask);
159}
160
161CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_event_disable(cfn_sal_utl_key_value_t *driver,
162 uint32_t event_mask)
163{
164 if (!driver)
165 {
166 return CFN_HAL_ERROR_BAD_PARAM;
167 }
168 return cfn_hal_base_event_disable(&driver->base, CFN_SAL_UTL_TYPE_KEY_VALUE, event_mask);
169}
170
171CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_event_get(cfn_sal_utl_key_value_t *driver,
172 uint32_t *event_mask)
173{
174 if (!driver)
175 {
176 return CFN_HAL_ERROR_BAD_PARAM;
177 }
178 return cfn_hal_base_event_get(&driver->base, CFN_SAL_UTL_TYPE_KEY_VALUE, event_mask);
179}
180
181CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_error_enable(cfn_sal_utl_key_value_t *driver,
182 uint32_t error_mask)
183{
184 if (!driver)
185 {
186 return CFN_HAL_ERROR_BAD_PARAM;
187 }
188 return cfn_hal_base_error_enable(&driver->base, CFN_SAL_UTL_TYPE_KEY_VALUE, error_mask);
189}
190
191CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_error_disable(cfn_sal_utl_key_value_t *driver,
192 uint32_t error_mask)
193{
194 if (!driver)
195 {
196 return CFN_HAL_ERROR_BAD_PARAM;
197 }
198 return cfn_hal_base_error_disable(&driver->base, CFN_SAL_UTL_TYPE_KEY_VALUE, error_mask);
199}
200
201CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_error_get(cfn_sal_utl_key_value_t *driver,
202 uint32_t *error_mask)
203{
204 if (!driver)
205 {
206 return CFN_HAL_ERROR_BAD_PARAM;
207 }
208 return cfn_hal_base_error_get(&driver->base, CFN_SAL_UTL_TYPE_KEY_VALUE, error_mask);
209}
210
211/* Service Specific Functions --------------------------------------- */
212
213CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_set(cfn_sal_utl_key_value_t *driver,
214 const char *key,
215 const void *val,
216 size_t len)
217{
218 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
219 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_UTL_TYPE_KEY_VALUE, set, driver, error, key, val, len);
220 return error;
221}
222
223CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_get(
224 cfn_sal_utl_key_value_t *driver, const char *key, void *val_buf, size_t max_len, size_t *actual_len)
225{
226 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
227 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_UTL_TYPE_KEY_VALUE, get, driver, error, key, val_buf, max_len, actual_len);
228 return error;
229}
230
231CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_del(cfn_sal_utl_key_value_t *driver, const char *key)
232{
233 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
234 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_UTL_TYPE_KEY_VALUE, del, driver, error, key);
235 return error;
236}
237
238CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_clear(cfn_sal_utl_key_value_t *driver)
239{
240 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
241 CFN_HAL_CHECK_AND_CALL_FUNC(CFN_SAL_UTL_TYPE_KEY_VALUE, clear, driver, error);
242 return error;
243}
244
245CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_get_info(cfn_sal_utl_key_value_t *driver,
246 size_t *used_bytes,
247 size_t *total_bytes)
248{
249 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
250 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_UTL_TYPE_KEY_VALUE, get_info, driver, error, used_bytes, total_bytes);
251 return error;
252}
253
254#ifdef __cplusplus
255}
256#endif
257
258#endif /* CAFFEINE_SAL_UTL_KV_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_key_value_get(cfn_sal_utl_key_value_t *driver, const char *key, void *val_buf, size_t max_len, size_t *actual_len)
Definition cfn_sal_utl_kv.h:223
cfn_hal_error_code_t cfn_sal_utl_key_value_construct(cfn_sal_utl_key_value_t *driver, const cfn_sal_utl_key_value_config_t *config, const cfn_sal_phy_t *phy, void *dependency, cfn_sal_utl_key_value_callback_t callback, void *user_arg)
CFN_HAL_VMT_CHECK(struct cfn_sal_utl_key_value_api_s)
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_error_disable(cfn_sal_utl_key_value_t *driver, uint32_t error_mask)
Definition cfn_sal_utl_kv.h:191
struct cfn_sal_utl_key_value_s cfn_sal_utl_key_value_t
Definition cfn_sal_utl_kv.h:31
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_callback_register(cfn_sal_utl_key_value_t *driver, cfn_sal_utl_key_value_callback_t callback, void *user_arg)
Definition cfn_sal_utl_kv.h:127
CFN_HAL_INLINE void cfn_sal_utl_key_value_populate(cfn_sal_utl_key_value_t *driver, uint32_t peripheral_id, void *dependency, const cfn_sal_utl_key_value_api_t *api, const cfn_sal_phy_t *phy, const cfn_sal_utl_key_value_config_t *config, cfn_sal_utl_key_value_callback_t callback, void *user_arg)
Definition cfn_sal_utl_kv.h:65
#define CFN_SAL_UTL_TYPE_KEY_VALUE
Definition cfn_sal_utl_kv.h:19
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_get_info(cfn_sal_utl_key_value_t *driver, size_t *used_bytes, size_t *total_bytes)
Definition cfn_sal_utl_kv.h:245
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_clear(cfn_sal_utl_key_value_t *driver)
Definition cfn_sal_utl_kv.h:238
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_event_get(cfn_sal_utl_key_value_t *driver, uint32_t *event_mask)
Definition cfn_sal_utl_kv.h:171
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_set(cfn_sal_utl_key_value_t *driver, const char *key, const void *val, size_t len)
Definition cfn_sal_utl_kv.h:213
cfn_hal_error_code_t cfn_sal_utl_key_value_destruct(cfn_sal_utl_key_value_t *driver)
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_config_set(cfn_sal_utl_key_value_t *driver, const cfn_sal_utl_key_value_config_t *config)
Definition cfn_sal_utl_kv.h:105
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_deinit(cfn_sal_utl_key_value_t *driver)
Definition cfn_sal_utl_kv.h:96
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_init(cfn_sal_utl_key_value_t *driver)
Definition cfn_sal_utl_kv.h:86
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_event_enable(cfn_sal_utl_key_value_t *driver, uint32_t event_mask)
Definition cfn_sal_utl_kv.h:151
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_power_state_set(cfn_sal_utl_key_value_t *driver, cfn_hal_power_state_t state)
Definition cfn_sal_utl_kv.h:141
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_error_enable(cfn_sal_utl_key_value_t *driver, uint32_t error_mask)
Definition cfn_sal_utl_kv.h:181
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_error_get(cfn_sal_utl_key_value_t *driver, uint32_t *error_mask)
Definition cfn_sal_utl_kv.h:201
void(* cfn_sal_utl_key_value_callback_t)(cfn_sal_utl_key_value_t *driver, uint32_t event, uint32_t error, void *user_arg)
Definition cfn_sal_utl_kv.h:34
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_config_get(cfn_sal_utl_key_value_t *driver, cfn_sal_utl_key_value_config_t *config)
Definition cfn_sal_utl_kv.h:116
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_del(cfn_sal_utl_key_value_t *driver, const char *key)
Definition cfn_sal_utl_kv.h:231
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_key_value_event_disable(cfn_sal_utl_key_value_t *driver, uint32_t event_mask)
Definition cfn_sal_utl_kv.h:161
Generic physical mapping for services.
Definition cfn_sal_types.h:26
Key-Value Store Virtual Method Table (VMT).
Definition cfn_sal_utl_kv.h:43
cfn_hal_error_code_t(* clear)(cfn_sal_utl_key_value_t *driver)
Definition cfn_sal_utl_kv.h:51
cfn_hal_error_code_t(* get)(cfn_sal_utl_key_value_t *driver, const char *key, void *val_buf, size_t max_len, size_t *actual_len)
Definition cfn_sal_utl_kv.h:48
cfn_hal_error_code_t(* del)(cfn_sal_utl_key_value_t *driver, const char *key)
Definition cfn_sal_utl_kv.h:50
cfn_hal_error_code_t(* get_info)(cfn_sal_utl_key_value_t *driver, size_t *used_bytes, size_t *total_bytes)
Definition cfn_sal_utl_kv.h:52
cfn_hal_error_code_t(* set)(cfn_sal_utl_key_value_t *driver, const char *key, const void *val, size_t len)
Definition cfn_sal_utl_kv.h:47
cfn_hal_api_base_t base
Definition cfn_sal_utl_kv.h:44
Definition cfn_sal_utl_kv.h:26
const char * partition_name
Definition cfn_sal_utl_kv.h:27
void * custom
Definition cfn_sal_utl_kv.h:28