@@ -180,7 +180,7 @@ void wifi_manager_start(){
180
180
181
181
/* initialize flash memory */
182
182
nvs_flash_init ();
183
- nvs_sync_create (); /* semaphore for thread synchronization on NVS memory */
183
+ ESP_ERROR_CHECK ( nvs_sync_create () ); /* semaphore for thread synchronization on NVS memory */
184
184
185
185
/* memory allocation */
186
186
wifi_manager_queue = xQueueCreate ( 3 , sizeof ( queue_message ) );
@@ -225,19 +225,25 @@ esp_err_t wifi_manager_save_sta_config(){
225
225
memset (& tmp_settings , 0x00 , sizeof (tmp_settings ));
226
226
bool change = false;
227
227
228
- ESP_LOGI (TAG , "About to save config to flash" );
228
+ ESP_LOGI (TAG , "About to save config to flash!! " );
229
229
230
230
if (wifi_manager_config_sta && nvs_sync_lock ( portMAX_DELAY )){
231
231
232
232
esp_err = nvs_open (wifi_manager_nvs_namespace , NVS_READWRITE , & handle );
233
- if (esp_err != ESP_OK ) return esp_err ;
233
+ if (esp_err != ESP_OK ){
234
+ nvs_sync_unlock ();
235
+ return esp_err ;
236
+ }
234
237
235
238
sz = sizeof (tmp_conf .sta .ssid );
236
239
esp_err = nvs_get_blob (handle , "ssid" , tmp_conf .sta .ssid , & sz );
237
240
if ( (esp_err == ESP_OK || esp_err == ESP_ERR_NVS_NOT_FOUND ) && strcmp ( (char * )tmp_conf .sta .ssid , (char * )wifi_manager_config_sta -> sta .ssid ) != 0 ){
238
241
/* different ssid or ssid does not exist in flash: save new ssid */
239
242
esp_err = nvs_set_blob (handle , "ssid" , wifi_manager_config_sta -> sta .ssid , 32 );
240
- if (esp_err != ESP_OK ) return esp_err ;
243
+ if (esp_err != ESP_OK ){
244
+ nvs_sync_unlock ();
245
+ return esp_err ;
246
+ }
241
247
change = true;
242
248
ESP_LOGI (TAG , "wifi_manager_wrote wifi_sta_config: ssid:%s" ,wifi_manager_config_sta -> sta .ssid );
243
249
@@ -248,7 +254,10 @@ esp_err_t wifi_manager_save_sta_config(){
248
254
if ( (esp_err == ESP_OK || esp_err == ESP_ERR_NVS_NOT_FOUND ) && strcmp ( (char * )tmp_conf .sta .password , (char * )wifi_manager_config_sta -> sta .password ) != 0 ){
249
255
/* different password or password does not exist in flash: save new password */
250
256
esp_err = nvs_set_blob (handle , "password" , wifi_manager_config_sta -> sta .password , 64 );
251
- if (esp_err != ESP_OK ) return esp_err ;
257
+ if (esp_err != ESP_OK ){
258
+ nvs_sync_unlock ();
259
+ return esp_err ;
260
+ }
252
261
change = true;
253
262
ESP_LOGI (TAG , "wifi_manager_wrote wifi_sta_config: password:%s" ,wifi_manager_config_sta -> sta .password );
254
263
}
@@ -267,7 +276,10 @@ esp_err_t wifi_manager_save_sta_config(){
267
276
)
268
277
){
269
278
esp_err = nvs_set_blob (handle , "settings" , & wifi_settings , sizeof (wifi_settings ));
270
- if (esp_err != ESP_OK ) return esp_err ;
279
+ if (esp_err != ESP_OK ){
280
+ nvs_sync_unlock ();
281
+ return esp_err ;
282
+ }
271
283
change = true;
272
284
273
285
ESP_LOGD (TAG , "wifi_manager_wrote wifi_settings: SoftAP_ssid: %s" ,wifi_settings .ap_ssid );
@@ -292,6 +304,9 @@ esp_err_t wifi_manager_save_sta_config(){
292
304
nvs_sync_unlock ();
293
305
294
306
}
307
+ else {
308
+ ESP_LOGE (TAG , "wifi_manager_save_sta_config failed to acquire nvs_sync mutex" );
309
+ }
295
310
296
311
return ESP_OK ;
297
312
}
@@ -300,7 +315,14 @@ bool wifi_manager_fetch_wifi_sta_config(){
300
315
301
316
nvs_handle handle ;
302
317
esp_err_t esp_err ;
303
- if (nvs_sync_lock ( portMAX_DELAY ) && nvs_open (wifi_manager_nvs_namespace , NVS_READONLY , & handle ) == ESP_OK ){
318
+ if (nvs_sync_lock ( portMAX_DELAY )){
319
+
320
+ esp_err = nvs_open (wifi_manager_nvs_namespace , NVS_READONLY , & handle );
321
+
322
+ if (esp_err != ESP_OK ){
323
+ nvs_sync_unlock ();
324
+ return false;
325
+ }
304
326
305
327
if (wifi_manager_config_sta == NULL ){
306
328
wifi_manager_config_sta = (wifi_config_t * )malloc (sizeof (wifi_config_t ));
0 commit comments