From 6d70b7c352d8cf0340ac14e127372a7a83f4779a Mon Sep 17 00:00:00 2001 From: morris Date: Tue, 26 May 2020 13:54:57 +0800 Subject: [PATCH] fix esp_modem switch mode timeout Closes https://github.com/espressif/esp-idf/issues/3506 Closes https://github.com/espressif/esp-idf/issues/4324 --- .../pppos_client/components/modem/include/esp_modem_dce.h | 2 +- .../protocols/pppos_client/components/modem/src/esp_modem.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/examples/protocols/pppos_client/components/modem/include/esp_modem_dce.h b/examples/protocols/pppos_client/components/modem/include/esp_modem_dce.h index a0633cb86a..7c180b4214 100644 --- a/examples/protocols/pppos_client/components/modem/include/esp_modem_dce.h +++ b/examples/protocols/pppos_client/components/modem/include/esp_modem_dce.h @@ -52,7 +52,7 @@ typedef struct modem_dte modem_dte_t; */ #define MODEM_COMMAND_TIMEOUT_DEFAULT (500) /*!< Default timeout value for most commands */ #define MODEM_COMMAND_TIMEOUT_OPERATOR (75000) /*!< Timeout value for getting operator status */ -#define MODEM_COMMAND_TIMEOUT_MODE_CHANGE (3000) /*!< Timeout value for changing working mode */ +#define MODEM_COMMAND_TIMEOUT_MODE_CHANGE (5000) /*!< Timeout value for changing working mode */ #define MODEM_COMMAND_TIMEOUT_HANG_UP (90000) /*!< Timeout value for hang up */ #define MODEM_COMMAND_TIMEOUT_POWEROFF (1000) /*!< Timeout value for power down */ diff --git a/examples/protocols/pppos_client/components/modem/src/esp_modem.c b/examples/protocols/pppos_client/components/modem/src/esp_modem.c index eb41771860..928fbbfa51 100644 --- a/examples/protocols/pppos_client/components/modem/src/esp_modem.c +++ b/examples/protocols/pppos_client/components/modem/src/esp_modem.c @@ -412,6 +412,8 @@ modem_dte_t *esp_modem_dte_init(const esp_modem_dte_config_t *config) res = uart_driver_install(esp_dte->uart_port, config->rx_buffer_size, config->tx_buffer_size, config->event_queue_size, &(esp_dte->event_queue), 0); MODEM_CHECK(res == ESP_OK, "install uart driver failed", err_uart_config); + res = uart_set_rx_timeout(esp_dte->uart_port, 1); + MODEM_CHECK(res == ESP_OK, "set rx timeout failed", err_uart_config); /* Set pattern interrupt, used to detect the end of a line. */ res = uart_enable_pattern_det_baud_intr(esp_dte->uart_port, '\n', 1, MIN_PATTERN_INTERVAL, MIN_POST_IDLE, MIN_PRE_IDLE);