Zephyr Project API  3.3.0
A Scalable Open Source RTOS
settings.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2018 Nordic Semiconductor ASA
3 * Copyright (c) 2015 Runtime Inc
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
8#ifndef ZEPHYR_INCLUDE_SETTINGS_SETTINGS_H_
9#define ZEPHYR_INCLUDE_SETTINGS_SETTINGS_H_
10
11#include <sys/types.h>
12#include <zephyr/sys/util.h>
13#include <zephyr/sys/slist.h>
14#include <stdint.h>
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
20
33#define SETTINGS_MAX_DIR_DEPTH 8 /* max depth of settings tree */
34#define SETTINGS_MAX_NAME_LEN (8 * SETTINGS_MAX_DIR_DEPTH)
35#define SETTINGS_MAX_VAL_LEN 256
36#define SETTINGS_NAME_SEPARATOR '/'
37#define SETTINGS_NAME_END '='
38
39/* place for settings additions:
40 * up to 7 separators, '=', '\0'
41 */
42#define SETTINGS_EXTRA_LEN ((SETTINGS_MAX_DIR_DEPTH - 1) + 2)
43
57typedef ssize_t (*settings_read_cb)(void *cb_arg, void *data, size_t len);
58
65
66 const char *name;
69 int (*h_get)(const char *key, char *val, int val_len_max);
81 int (*h_set)(const char *key, size_t len, settings_read_cb read_cb,
82 void *cb_arg);
96 int (*h_commit)(void);
103 int (*h_export)(int (*export_func)(const char *name, const void *val,
104 size_t val_len));
123};
124
131
132 const char *name;
135 int (*h_get)(const char *key, char *val, int val_len_max);
147 int (*h_set)(const char *key, size_t len, settings_read_cb read_cb,
148 void *cb_arg);
162 int (*h_commit)(void);
167 int (*h_export)(int (*export_func)(const char *name, const void *val,
168 size_t val_len));
184};
185
200#define SETTINGS_STATIC_HANDLER_DEFINE(_hname, _tree, _get, _set, _commit, \
201 _export) \
202 const STRUCT_SECTION_ITERABLE(settings_handler_static, \
203 settings_handler_ ## _hname) = { \
204 .name = _tree, \
205 .h_get = _get, \
206 .h_set = _set, \
207 .h_commit = _commit, \
208 .h_export = _export, \
209 }
210
221
230
239
248int settings_load_subtree(const char *subtree);
249
266 const char *key,
267 size_t len,
268 settings_read_cb read_cb,
269 void *cb_arg,
270 void *param);
271
290 const char *subtree,
292 void *param);
293
301
313int settings_save_one(const char *name, const void *value, size_t val_len);
314
325int settings_delete(const char *name);
326
334
343int settings_commit_subtree(const char *subtree);
344
356/*
357 * API for config storage
358 */
359
360struct settings_store_itf;
361
371};
372
383 const char *subtree;
395 void *param;
396};
397
404 int (*csi_load)(struct settings_store *cs,
405 const struct settings_load_arg *arg);
419 int (*csi_save_start)(struct settings_store *cs);
426 int (*csi_save)(struct settings_store *cs, const char *name,
427 const char *value, size_t val_len);
437 int (*csi_save_end)(struct settings_store *cs);
449 void *(*csi_storage_get)(struct settings_store *cs);
450};
451
459
467
468
469/*
470 * API for handler lookup
471 */
472
482 const char **next);
483
498 size_t len,
499 settings_read_cb read_cb,
500 void *read_cb_arg,
501 const struct settings_load_arg *load_arg);
533int settings_name_steq(const char *name, const char *key, const char **next);
534
545int settings_name_next(const char *name, const char **next);
550#ifdef CONFIG_SETTINGS_RUNTIME
551
568int settings_runtime_set(const char *name, const void *data, size_t len);
569
579int settings_runtime_get(const char *name, void *data, size_t len);
580
593#endif /* CONFIG_SETTINGS_RUNTIME */
594
606int settings_storage_get(void **storage);
607
608#ifdef __cplusplus
609}
610#endif
611
612#endif /* ZEPHYR_INCLUDE_SETTINGS_SETTINGS_H_ */
void settings_dst_register(struct settings_store *cs)
struct settings_handler_static * settings_parse_and_lookup(const char *name, const char **next)
void settings_src_register(struct settings_store *cs)
int settings_call_set_handler(const char *name, size_t len, settings_read_cb read_cb, void *read_cb_arg, const struct settings_load_arg *load_arg)
int settings_name_steq(const char *name, const char *key, const char **next)
int settings_name_next(const char *name, const char **next)
int settings_runtime_get(const char *name, void *data, size_t len)
int settings_runtime_set(const char *name, const void *data, size_t len)
int settings_runtime_commit(const char *name)
int settings_delete(const char *name)
int settings_commit_subtree(const char *subtree)
int settings_load_subtree_direct(const char *subtree, settings_load_direct_cb cb, void *param)
ssize_t(* settings_read_cb)(void *cb_arg, void *data, size_t len)
Definition: settings.h:57
int settings_commit(void)
int(* settings_load_direct_cb)(const char *key, size_t len, settings_read_cb read_cb, void *cb_arg, void *param)
Definition: settings.h:265
int settings_save(void)
int settings_load(void)
int settings_register(struct settings_handler *cf)
int settings_load_subtree(const char *subtree)
int settings_save_one(const char *name, const void *value, size_t val_len)
int settings_subsys_init(void)
__SIZE_TYPE__ ssize_t
Definition: types.h:28
int settings_storage_get(void **storage)
Single-linked list implementation.
struct _snode sys_snode_t
Definition: slist.h:33
static k_spinlock_key_t key
Definition: spinlock_error_case.c:15
Definition: settings.h:130
int(* h_commit)(void)
Definition: settings.h:162
int(* h_set)(const char *key, size_t len, settings_read_cb read_cb, void *cb_arg)
Definition: settings.h:147
const char * name
Definition: settings.h:132
int(* h_export)(int(*export_func)(const char *name, const void *val, size_t val_len))
Definition: settings.h:167
int(* h_get)(const char *key, char *val, int val_len_max)
Definition: settings.h:135
Definition: settings.h:64
int(* h_export)(int(*export_func)(const char *name, const void *val, size_t val_len))
Definition: settings.h:103
sys_snode_t node
Definition: settings.h:121
int(* h_set)(const char *key, size_t len, settings_read_cb read_cb, void *cb_arg)
Definition: settings.h:81
int(* h_get)(const char *key, char *val, int val_len_max)
Definition: settings.h:69
const char * name
Definition: settings.h:66
int(* h_commit)(void)
Definition: settings.h:96
Definition: settings.h:377
const char * subtree
Name of the subtree to be loaded.
Definition: settings.h:383
void * param
Parameter for callback function.
Definition: settings.h:395
settings_load_direct_cb cb
Pointer to the callback function.
Definition: settings.h:389
Definition: settings.h:403
int(* csi_load)(struct settings_store *cs, const struct settings_load_arg *arg)
Definition: settings.h:404
int(* csi_save_end)(struct settings_store *cs)
Definition: settings.h:437
int(* csi_save_start)(struct settings_store *cs)
Definition: settings.h:419
int(* csi_save)(struct settings_store *cs, const char *name, const char *value, size_t val_len)
Definition: settings.h:426
Definition: settings.h:365
sys_snode_t cs_next
Definition: settings.h:366
const struct settings_store_itf * cs_itf
Definition: settings.h:369
static fdata_t data[2]
Definition: test_fifo_contexts.c:15
Misc utilities.