9
9
10
10
/* Zephyr includes */
11
11
#include <zephyr/shell/shell.h>
12
+ #include <zephyr/settings/settings.h>
12
13
13
14
/* Standard include */
14
15
#include <stddef.h>
@@ -22,12 +23,114 @@ extern "C" {
22
23
* @{
23
24
*/
24
25
26
+ enum ctr_config_item_type {
27
+ CTR_CONFIG_TYPE_INT ,
28
+ CTR_CONFIG_TYPE_FLOAT ,
29
+ CTR_CONFIG_TYPE_BOOL ,
30
+ CTR_CONFIG_TYPE_ENUM ,
31
+ CTR_CONFIG_TYPE_STRING ,
32
+ };
33
+
34
+ #define CTR_CONFIG_ITEM_INT (_name_d , _var , _min , _max , _help , _default ) \
35
+ { \
36
+ .module = SETTINGS_PFX, \
37
+ .name = _name_d, \
38
+ .type = CTR_CONFIG_TYPE_INT, \
39
+ .variable = &_var, \
40
+ .size = sizeof(_var), \
41
+ .min = _min, \
42
+ .max = _max, \
43
+ .help = _help, \
44
+ .default_int = _default, \
45
+ }
46
+
47
+ #define CTR_CONFIG_ITEM_FLOAT (_name_d , _var , _min , _max , _help , _default ) \
48
+ { \
49
+ .module = SETTINGS_PFX, \
50
+ .name = _name_d, \
51
+ .type = CTR_CONFIG_TYPE_FLOAT, \
52
+ .variable = &_var, \
53
+ .size = sizeof(_var), \
54
+ .min = _min, \
55
+ .max = _max, \
56
+ .help = _help, \
57
+ .default_float = _default, \
58
+ }
59
+
60
+ #define CTR_CONFIG_ITEM_BOOL (_name_d , _var , _help , _default ) \
61
+ { \
62
+ .module = SETTINGS_PFX, \
63
+ .name = _name_d, \
64
+ .type = CTR_CONFIG_TYPE_BOOL, \
65
+ .variable = &_var, \
66
+ .size = sizeof(_var), \
67
+ .help = _help, \
68
+ .default_bool = _default, \
69
+ }
70
+
71
+ #define CTR_CONFIG_ITEM_ENUM (_name_d , _var , _items_str , _help , _default ) \
72
+ { \
73
+ .module = SETTINGS_PFX, \
74
+ .name = _name_d, \
75
+ .type = CTR_CONFIG_TYPE_ENUM, \
76
+ .variable = &_var, \
77
+ .size = sizeof(_var), \
78
+ .min = 0, \
79
+ .max = ARRAY_SIZE(_items_str), \
80
+ .help = _help, \
81
+ .enums = _items_str, \
82
+ .default_enum = _default, \
83
+ }
84
+
85
+ #define CTR_CONFIG_ITEM_STRING (_name_d , _var , _help , _default ) \
86
+ { \
87
+ .module = SETTINGS_PFX, \
88
+ .name = _name_d, \
89
+ .type = CTR_CONFIG_TYPE_STRING, \
90
+ .variable = _var, \
91
+ .size = ARRAY_SIZE(_var), \
92
+ .help = _help, \
93
+ .default_string = _default, \
94
+ }
95
+
96
+ struct ctr_config_item {
97
+ const char * module ;
98
+ const char * name ;
99
+ enum ctr_config_item_type type ;
100
+ void * variable ;
101
+ size_t size ;
102
+ int min ;
103
+ int max ;
104
+ const char * help ;
105
+ const char * * enums ;
106
+ union {
107
+ int default_int ;
108
+ float default_float ;
109
+ bool default_bool ;
110
+ int default_enum ;
111
+ const char * default_string ;
112
+ };
113
+ };
114
+
25
115
typedef int (* ctr_config_show_cb )(const struct shell * shell , size_t argc , char * * argv );
26
116
27
117
int ctr_config_save (bool reboot );
28
118
int ctr_config_reset (bool reboot );
29
119
void ctr_config_append_show (const char * name , ctr_config_show_cb cb );
30
120
121
+ int ctr_config_show_item (const struct shell * shell , const struct ctr_config_item * item );
122
+ int ctr_config_help_item (const struct shell * shell , const struct ctr_config_item * item );
123
+ int ctr_config_parse_item (const struct shell * shell , char * argv ,
124
+ const struct ctr_config_item * item );
125
+ int ctr_config_init_item (const struct ctr_config_item * item );
126
+
127
+ int ctr_config_cmd_config (const struct ctr_config_item * items , int nitems ,
128
+ const struct shell * shell , size_t argc , char * * argv );
129
+ int ctr_config_h_export (const struct ctr_config_item * items , int nitems ,
130
+ int (* export_func )(const char * name , const void * val , size_t val_len ));
131
+ int ctr_config_h_set (const struct ctr_config_item * items , int nitems , const char * key , size_t len ,
132
+ settings_read_cb read_cb , void * cb_arg );
133
+
31
134
/** @} */
32
135
33
136
#ifdef __cplusplus
0 commit comments