Explorar el Código

Merge branch 'bugfix/pppos_event_deinit_exit_ppp_v4.3' into 'release/v4.3'

Examples/PPPoS: Minor fixes related to init/deinit cycling (v4.3)

See merge request espressif/esp-idf!16062
Jiang Jiang Jian hace 4 años
padre
commit
233dc30fb1

+ 13 - 0
examples/protocols/pppos_client/components/modem/src/esp_modem_netif.c

@@ -144,6 +144,19 @@ esp_err_t esp_modem_netif_clear_default_handlers(void *h)
     if (ret != ESP_OK) {
         goto clear_event_failed;
     }
+    ret = esp_event_handler_unregister(IP_EVENT, IP_EVENT_PPP_GOT_IP, esp_netif_action_connected);
+    if (ret != ESP_OK) {
+        goto clear_event_failed;
+    }
+    ret = esp_event_handler_unregister(IP_EVENT, IP_EVENT_PPP_LOST_IP, esp_netif_action_disconnected);
+    if (ret != ESP_OK) {
+        goto clear_event_failed;
+    }
+
+    // this event is registered while modem gets attached to netif.
+    // we don't have any detach functionality, so we unregister here and ignore potential error
+    esp_event_handler_unregister(NETIF_PPP_STATUS, ESP_EVENT_ANY_ID, on_ppp_changed);
+
     return ESP_OK;
 
 clear_event_failed:

+ 1 - 0
examples/protocols/pppos_client/components/modem/src/sim800.c

@@ -307,6 +307,7 @@ static esp_err_t sim800_set_working_mode(modem_dce_t *dce, modem_mode_t mode)
             DCE_CHECK(dce->state == MODEM_STATE_SUCCESS, "sync failed", err);
         } else {
             DCE_CHECK(dce->state == MODEM_STATE_SUCCESS, "enter command mode failed", err);
+            vTaskDelay(pdMS_TO_TICKS(1000)); // spec: 1s delay after `+++` command
         }
         ESP_LOGD(DCE_TAG, "enter command mode ok");
         dce->mode = MODEM_COMMAND_MODE;