@@ -274,9 +274,9 @@ STATIC mp_obj_t mod_pycom_nvs_set (mp_obj_t _key, mp_obj_t _value) {
274274}
275275STATIC MP_DEFINE_CONST_FUN_OBJ_2 (mod_pycom_nvs_set_obj , mod_pycom_nvs_set );
276276
277- STATIC mp_obj_t mod_pycom_nvs_get (mp_obj_t _key ) {
277+ STATIC mp_obj_t mod_pycom_nvs_get (mp_uint_t n_args , const mp_obj_t * args ) {
278278
279- const char * key = mp_obj_str_get_str (_key );
279+ const char * key = mp_obj_str_get_str (args [ 0 ] );
280280 esp_err_t esp_err = ESP_OK ;
281281 mp_obj_t ret = mp_const_none ;
282282 uint32_t value ;
@@ -302,14 +302,21 @@ STATIC mp_obj_t mod_pycom_nvs_get (mp_obj_t _key) {
302302 }
303303
304304 if (esp_err == ESP_ERR_NVS_NOT_FOUND ) {
305- nlr_raise (mp_obj_new_exception_msg (& mp_type_ValueError , "No matching object for the provided key" ));
305+ if (n_args > 1 ) {
306+ // return user defined NoExistValue
307+ return args [1 ];
308+ }
309+ else
310+ {
311+ nlr_raise (mp_obj_new_exception_msg (& mp_type_ValueError , "No matching object for the provided key" ));
312+ }
306313 } else if (esp_err != ESP_OK ) {
307314 nlr_raise (mp_obj_new_exception_msg_varg (& mp_type_Exception , "Error occurred while fetching value, code: %d" , esp_err ));
308315 }
309316
310317 return ret ;
311318}
312- STATIC MP_DEFINE_CONST_FUN_OBJ_1 (mod_pycom_nvs_get_obj , mod_pycom_nvs_get );
319+ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (mod_pycom_nvs_get_obj , 1 , 2 , mod_pycom_nvs_get );
313320
314321STATIC mp_obj_t mod_pycom_nvs_erase (mp_obj_t _key ) {
315322 const char * key = mp_obj_str_get_str (_key );
0 commit comments