@@ -348,7 +348,15 @@ static void esp_rmaker_task(void *param)
348
348
esp_rmaker_priv_data -> state = ESP_RMAKER_STATE_STARTING ;
349
349
esp_err_t err ;
350
350
wifi_event_group = xEventGroupCreate ();
351
- ESP_ERROR_CHECK (esp_event_handler_register (IP_EVENT , IP_EVENT_STA_GOT_IP , & esp_rmaker_event_handler , esp_rmaker_priv_data ));
351
+ if (!wifi_event_group ) {
352
+ ESP_LOGE (TAG , "Failed to create event group. Aborting" );
353
+ goto rmaker_err ;
354
+ }
355
+ err = esp_event_handler_register (IP_EVENT , IP_EVENT_STA_GOT_IP , & esp_rmaker_event_handler , esp_rmaker_priv_data );
356
+ if (err != ESP_OK ) {
357
+ ESP_LOGE (TAG , "Failed to register event handler. Error: %d. Aborting" , err );
358
+ goto rmaker_err ;
359
+ }
352
360
/* Assisted claiming needs to be done before Wi-Fi connection */
353
361
#ifdef CONFIG_ESP_RMAKER_ASSISTED_CLAIM
354
362
if (esp_rmaker_priv_data -> need_claim ) {
@@ -357,7 +365,8 @@ static void esp_rmaker_task(void *param)
357
365
if (err != ESP_OK ) {
358
366
esp_rmaker_post_event (RMAKER_EVENT_CLAIM_FAILED , NULL , 0 );
359
367
ESP_LOGE (TAG , "esp_rmaker_self_claim_perform() returned %d. Aborting" , err );
360
- vTaskDelete (NULL );
368
+ esp_event_handler_unregister (IP_EVENT , IP_EVENT_STA_GOT_IP , & esp_rmaker_event_handler );
369
+ goto rmaker_err ;
361
370
}
362
371
esp_rmaker_priv_data -> claim_data = NULL ;
363
372
esp_rmaker_post_event (RMAKER_EVENT_CLAIM_SUCCESSFUL , NULL , 0 );
@@ -366,6 +375,8 @@ static void esp_rmaker_task(void *param)
366
375
/* Wait for Wi-Fi connection */
367
376
xEventGroupWaitBits (wifi_event_group , WIFI_CONNECTED_EVENT , false, true, portMAX_DELAY );
368
377
vEventGroupDelete (wifi_event_group );
378
+ wifi_event_group = NULL ;
379
+ esp_event_handler_unregister (IP_EVENT , IP_EVENT_STA_GOT_IP , & esp_rmaker_event_handler );
369
380
370
381
if (esp_rmaker_priv_data -> enable_time_sync ) {
371
382
#ifdef CONFIG_MBEDTLS_HAVE_TIME_DATE
@@ -380,7 +391,7 @@ static void esp_rmaker_task(void *param)
380
391
if (err != ESP_OK ) {
381
392
esp_rmaker_post_event (RMAKER_EVENT_CLAIM_FAILED , NULL , 0 );
382
393
ESP_LOGE (TAG , "esp_rmaker_self_claim_perform() returned %d. Aborting" , err );
383
- vTaskDelete ( NULL ) ;
394
+ goto rmaker_err ;
384
395
}
385
396
esp_rmaker_priv_data -> claim_data = NULL ;
386
397
esp_rmaker_post_event (RMAKER_EVENT_CLAIM_SUCCESSFUL , NULL , 0 );
@@ -391,20 +402,20 @@ static void esp_rmaker_task(void *param)
391
402
esp_rmaker_priv_data -> mqtt_config = esp_rmaker_get_mqtt_config ();
392
403
if (!esp_rmaker_priv_data -> mqtt_config ) {
393
404
ESP_LOGE (TAG , "Failed to initialise MQTT Config after claiming. Aborting" );
394
- vTaskDelete ( NULL ) ;
405
+ goto rmaker_err ;
395
406
}
396
407
err = esp_rmaker_mqtt_init (esp_rmaker_priv_data -> mqtt_config );
397
408
if (err != ESP_OK ) {
398
409
ESP_LOGE (TAG , "esp_rmaker_mqtt_init() returned %d. Aborting" , err );
399
- vTaskDelete ( NULL ) ;
410
+ goto rmaker_err ;
400
411
}
401
412
esp_rmaker_priv_data -> need_claim = false;
402
413
}
403
414
#endif /* ESP_RMAKER_CLAIM_ENABLED */
404
415
err = esp_rmaker_mqtt_connect ();
405
416
if (err != ESP_OK ) {
406
417
ESP_LOGE (TAG , "esp_rmaker_mqtt_connect() returned %d. Aborting" , err );
407
- vTaskDelete ( NULL ) ;
418
+ goto rmaker_err ;
408
419
}
409
420
esp_rmaker_priv_data -> mqtt_connected = true;
410
421
esp_rmaker_priv_data -> state = ESP_RMAKER_STATE_STARTED ;
@@ -424,6 +435,11 @@ static void esp_rmaker_task(void *param)
424
435
rmaker_end :
425
436
esp_rmaker_mqtt_disconnect ();
426
437
esp_rmaker_priv_data -> mqtt_connected = false;
438
+ rmaker_err :
439
+ if (wifi_event_group ) {
440
+ vEventGroupDelete (wifi_event_group );
441
+ }
442
+ wifi_event_group = NULL ;
427
443
esp_rmaker_priv_data -> state = ESP_RMAKER_STATE_INIT_DONE ;
428
444
vTaskDelete (NULL );
429
445
}
0 commit comments