diff --git a/components/esp_modem/examples/pppos_client/main/Kconfig.projbuild b/components/esp_modem/examples/pppos_client/main/Kconfig.projbuild index d5d6381b08..2bb3e4c551 100644 --- a/components/esp_modem/examples/pppos_client/main/Kconfig.projbuild +++ b/components/esp_modem/examples/pppos_client/main/Kconfig.projbuild @@ -211,4 +211,13 @@ menu "Example Configuration" publishes another MQTT message. Connection to the MQTT broker should be kept. + config EXAMPLE_DETECT_MODE_BEFORE_CONNECT + bool "Detect mode before connect" + default n + help + Set this to true to demonstrate mode auto-detection. + If enabled, the example tries to recognize the actual mode. + If mode is detected correctly and it is not a command mode, + then the example switches to command mode. + endmenu diff --git a/components/esp_modem/examples/pppos_client/main/pppos_client_main.c b/components/esp_modem/examples/pppos_client/main/pppos_client_main.c index 7c0212eefb..75b8ad296c 100644 --- a/components/esp_modem/examples/pppos_client/main/pppos_client_main.c +++ b/components/esp_modem/examples/pppos_client/main/pppos_client_main.c @@ -55,6 +55,7 @@ static void usb_terminal_error_handler(esp_modem_terminal_error_t err) } #define CHECK_USB_DISCONNECTION(event_group) \ if ((xEventGroupGetBits(event_group) & USB_DISCONNECTED_BIT) == USB_DISCONNECTED_BIT) { \ + ESP_LOGE(TAG, "USB_DISCONNECTED_BIT destroying modem dce"); \ esp_modem_destroy(dce); \ continue; \ } @@ -158,6 +159,7 @@ void app_main(void) ESP_ERROR_CHECK(esp_event_handler_register(NETIF_PPP_STATUS, ESP_EVENT_ANY_ID, &on_ppp_changed, NULL)); /* Configure the PPP netif */ + esp_err_t err; esp_modem_dce_config_t dce_config = ESP_MODEM_DCE_DEFAULT_CONFIG(CONFIG_EXAMPLE_MODEM_PPP_APN); esp_netif_config_t netif_ppp_config = ESP_NETIF_DEFAULT_PPP(); esp_netif_t *esp_netif = esp_netif_new(&netif_ppp_config); @@ -246,9 +248,10 @@ void app_main(void) #error Invalid serial connection to modem. #endif +#if CONFIG_EXAMPLE_DETECT_MODE_BEFORE_CONNECT xEventGroupClearBits(event_group, CONNECT_BIT | GOT_DATA_BIT | USB_DISCONNECTED_BIT); - esp_err_t err = esp_modem_set_mode(dce, ESP_MODEM_MODE_DETECT); + err = esp_modem_set_mode(dce, ESP_MODEM_MODE_DETECT); if (err != ESP_OK) { ESP_LOGE(TAG, "esp_modem_set_mode(ESP_MODEM_MODE_DETECT) failed with %d", err); return; @@ -263,6 +266,9 @@ void app_main(void) return; } } +#endif + + xEventGroupClearBits(event_group, CONNECT_BIT | GOT_DATA_BIT | USB_DISCONNECTED_BIT); /* Run the modem demo app */ #if CONFIG_EXAMPLE_NEED_SIM_PIN == 1 @@ -319,6 +325,7 @@ void app_main(void) ESP_LOGI(TAG, "Waiting for IP address"); xEventGroupWaitBits(event_group, CONNECT_BIT | USB_DISCONNECTED_BIT, pdFALSE, pdFALSE, portMAX_DELAY); CHECK_USB_DISCONNECTION(event_group); + ESP_LOGW(TAG, "Waiting for IP address DONE!"); /* Config MQTT */ #if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0) diff --git a/components/esp_modem/examples/pppos_client/pytest_pppos_client.py b/components/esp_modem/examples/pppos_client/pytest_pppos_client.py index 2ffb42cabc..6c823c5aa9 100644 --- a/components/esp_modem/examples/pppos_client/pytest_pppos_client.py +++ b/components/esp_modem/examples/pppos_client/pytest_pppos_client.py @@ -12,7 +12,7 @@ def test_pppos_connect(dut): 4. checks that the client cleanly disconnects """ # Check the sequence of connecting, publishing, disconnecting - dut.expect('Modem Connect to PPP Server') + dut.expect('Modem Connect to PPP Server', timeout=90) # Check for MQTT connection and the data event dut.expect('MQTT_EVENT_CONNECTED') dut.expect('MQTT_EVENT_DATA') diff --git a/components/esp_modem/examples/pppos_client/sdkconfig.ci.sim800_c3 b/components/esp_modem/examples/pppos_client/sdkconfig.ci.sim800_c3 index a537afeb22..23b0fc200f 100644 --- a/components/esp_modem/examples/pppos_client/sdkconfig.ci.sim800_c3 +++ b/components/esp_modem/examples/pppos_client/sdkconfig.ci.sim800_c3 @@ -14,4 +14,4 @@ CONFIG_EXAMPLE_MQTT_TEST_TOPIC="/ci/esp-modem/pppos-client" CONFIG_EXAMPLE_PAUSE_NETIF_TO_CHECK_SIGNAL=y CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT=y CONFIG_ESP32_PANIC_PRINT_HALT=y -CONFIG_LOG_DEFAULT_LEVEL_DEBUG=y +CONFIG_EXAMPLE_DETECT_MODE_BEFORE_CONNECT=y diff --git a/components/esp_modem/examples/pppos_client/sdkconfig.ci.usb_a7670_s2 b/components/esp_modem/examples/pppos_client/sdkconfig.ci.usb_a7670_s2 index 665f78517c..5cd6ab9450 100644 --- a/components/esp_modem/examples/pppos_client/sdkconfig.ci.usb_a7670_s2 +++ b/components/esp_modem/examples/pppos_client/sdkconfig.ci.usb_a7670_s2 @@ -12,3 +12,4 @@ CONFIG_EXAMPLE_MODEM_PPP_AUTH_NONE=y CONFIG_EXAMPLE_MQTT_TEST_TOPIC="/ci/esp-modem/pppos-client" CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT=y CONFIG_ESP32_PANIC_PRINT_HALT=y +CONFIG_LOG_DEFAULT_LEVEL_DEBUG=y diff --git a/components/esp_modem/examples/simple_cmux_client/sdkconfig.ci.sim800_cmux b/components/esp_modem/examples/simple_cmux_client/sdkconfig.ci.sim800_cmux index 6bf623113c..6a22a89f12 100644 --- a/components/esp_modem/examples/simple_cmux_client/sdkconfig.ci.sim800_cmux +++ b/components/esp_modem/examples/simple_cmux_client/sdkconfig.ci.sim800_cmux @@ -16,3 +16,4 @@ CONFIG_COMPILER_CXX_EXCEPTIONS=y CONFIG_ESP_MAIN_TASK_STACK_SIZE=8192 CONFIG_EXAMPLE_CLOSE_CMUX_AT_END=y CONFIG_EXAMPLE_MQTT_TEST_TOPIC="/ci/esp-modem/pppos-client" +CONFIG_BROKER_URI="mqtt://mqtt.eclipseprojects.io"