@@ -53,7 +53,7 @@ static int cmd_list(const struct shell *shell_ptr, size_t argc, char *argv[])
5353 shell_error (shell_ptr , "Failed to load settings: %d" , err );
5454 }
5555
56- return 0 ;
56+ return err ;
5757}
5858
5959struct settings_read_callback_params {
@@ -106,19 +106,56 @@ static int cmd_read(const struct shell *shell_ptr, size_t argc, char *argv[])
106106 err = settings_load_subtree_direct (name , settings_read_callback , & params );
107107
108108 if (err ) {
109- shell_error (shell_ptr , "Failed to load settings : %d" , err );
109+ shell_error (shell_ptr , "Failed to load setting : %d" , err );
110110 } else if (!params .value_found ) {
111+ err = - ENOENT ;
111112 shell_error (shell_ptr , "Setting not found" );
112113 }
113114
114- return 0 ;
115+ return err ;
116+ }
117+
118+ static int cmd_write (const struct shell * shell_ptr , size_t argc , char * argv [])
119+ {
120+ int err ;
121+ uint8_t buffer [CONFIG_SHELL_CMD_BUFF_SIZE / 2 ];
122+ size_t buffer_len ;
123+
124+ buffer_len = hex2bin (argv [2 ], strlen (argv [2 ]), buffer , sizeof (buffer ));
125+
126+ if (buffer_len == 0 ) {
127+ shell_error (shell_ptr , "Failed to parse hex value" );
128+ return - EINVAL ;
129+ }
130+
131+ err = settings_save_one (argv [1 ], buffer , buffer_len );
132+
133+ if (err ) {
134+ shell_error (shell_ptr , "Failed to write setting: %d" , err );
135+ }
136+
137+ return err ;
138+ }
139+
140+ static int cmd_delete (const struct shell * shell_ptr , size_t argc , char * argv [])
141+ {
142+ int err ;
143+
144+ err = settings_delete (argv [1 ]);
145+
146+ if (err ) {
147+ shell_error (shell_ptr , "Failed to delete setting: %d" , err );
148+ }
149+
150+ return err ;
115151}
116152
117153SHELL_STATIC_SUBCMD_SET_CREATE (settings_cmds ,
118154 SHELL_CMD_ARG (list , NULL , "[<subtree>]" , cmd_list , 1 , 1 ),
119155 SHELL_CMD_ARG (read , NULL , "<name>" , cmd_read , 2 , 0 ),
120- SHELL_SUBCMD_SET_END
121- );
156+ SHELL_CMD_ARG (write , NULL , "<name> <hex>" , cmd_write , 3 , 0 ),
157+ SHELL_CMD_ARG (delete , NULL , "<name>" , cmd_delete , 2 , 0 ),
158+ SHELL_SUBCMD_SET_END );
122159
123160static int cmd_settings (const struct shell * shell_ptr , size_t argc , char * * argv )
124161{
0 commit comments