mirror of
https://github.com/espressif/esp-protocols.git
synced 2025-07-16 12:02:11 +02:00
fix(esp_modem): Correct timeouts for certain commands
And adds an explicit timeout parameter to the esp_modem_at() Closes https://github.com/espressif/esp-protocols/issues/129
This commit is contained in:
@ -72,9 +72,10 @@ ESP_MODEM_DECLARE_DCE_COMMAND(set_pin, command_result, 1, STRING_IN(p1, pin)) \
|
|||||||
* @brief Execute the supplied AT command
|
* @brief Execute the supplied AT command
|
||||||
* @param[in] at AT command
|
* @param[in] at AT command
|
||||||
* @param[out] out Command output string
|
* @param[out] out Command output string
|
||||||
|
* @param[in] timeout AT command timeout in milliseconds
|
||||||
* @return OK, FAIL or TIMEOUT
|
* @return OK, FAIL or TIMEOUT
|
||||||
*/\
|
*/\
|
||||||
ESP_MODEM_DECLARE_DCE_COMMAND(at, command_result, 2, STRING_IN(p1, cmd), STRING_OUT(p2, out)) \
|
ESP_MODEM_DECLARE_DCE_COMMAND(at, command_result, 3, STRING_IN(p1, cmd), STRING_OUT(p2, out), INT_IN(p3, timeout)) \
|
||||||
\
|
\
|
||||||
/**
|
/**
|
||||||
* @brief Checks if the SIM needs a PIN
|
* @brief Checks if the SIM needs a PIN
|
||||||
|
@ -179,14 +179,14 @@ extern "C" esp_err_t esp_modem_set_pin(esp_modem_dce_t *dce_wrap, const char *pi
|
|||||||
return command_response_to_esp_err(dce_wrap->dce->set_pin(pin_str));
|
return command_response_to_esp_err(dce_wrap->dce->set_pin(pin_str));
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" esp_err_t esp_modem_at(esp_modem_dce_t *dce_wrap, const char *at, char *p_out)
|
extern "C" esp_err_t esp_modem_at(esp_modem_dce_t *dce_wrap, const char *at, char *p_out, int timeout)
|
||||||
{
|
{
|
||||||
if (dce_wrap == nullptr || dce_wrap->dce == nullptr) {
|
if (dce_wrap == nullptr || dce_wrap->dce == nullptr) {
|
||||||
return ESP_ERR_INVALID_ARG;
|
return ESP_ERR_INVALID_ARG;
|
||||||
}
|
}
|
||||||
std::string out;
|
std::string out;
|
||||||
std::string at_str(at);
|
std::string at_str(at);
|
||||||
auto ret = command_response_to_esp_err(dce_wrap->dce->at(at_str, out));
|
auto ret = command_response_to_esp_err(dce_wrap->dce->at(at_str, out, timeout));
|
||||||
if ((p_out != NULL) && (!out.empty())) {
|
if ((p_out != NULL) && (!out.empty())) {
|
||||||
strlcpy(p_out, out.c_str(), ESP_MODEM_C_API_STR_MAX);
|
strlcpy(p_out, out.c_str(), ESP_MODEM_C_API_STR_MAX);
|
||||||
}
|
}
|
||||||
|
@ -273,7 +273,7 @@ command_result set_pdp_context(CommandableIf *t, PdpContext &pdp)
|
|||||||
ESP_LOGV(TAG, "%s", __func__ );
|
ESP_LOGV(TAG, "%s", __func__ );
|
||||||
std::string pdp_command = "AT+CGDCONT=" + std::to_string(pdp.context_id) +
|
std::string pdp_command = "AT+CGDCONT=" + std::to_string(pdp.context_id) +
|
||||||
",\"" + pdp.protocol_type + "\",\"" + pdp.apn + "\"\r";
|
",\"" + pdp.protocol_type + "\",\"" + pdp.apn + "\"\r";
|
||||||
return generic_command_common(t, pdp_command);
|
return generic_command_common(t, pdp_command, 150000);
|
||||||
}
|
}
|
||||||
|
|
||||||
command_result set_data_mode(CommandableIf *t)
|
command_result set_data_mode(CommandableIf *t)
|
||||||
@ -389,11 +389,11 @@ command_result set_pin(CommandableIf *t, const std::string &pin)
|
|||||||
return generic_command_common(t, set_pin_command);
|
return generic_command_common(t, set_pin_command);
|
||||||
}
|
}
|
||||||
|
|
||||||
command_result at(CommandableIf *t, const std::string &cmd, std::string &out)
|
command_result at(CommandableIf *t, const std::string &cmd, std::string &out, int timeout = 500)
|
||||||
{
|
{
|
||||||
ESP_LOGV(TAG, "%s", __func__ );
|
ESP_LOGV(TAG, "%s", __func__ );
|
||||||
std::string at_command = cmd + "\r";
|
std::string at_command = cmd + "\r";
|
||||||
return generic_get_string(t, at_command, out);
|
return generic_get_string(t, at_command, out, timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
command_result get_signal_quality(CommandableIf *t, int &rssi, int &ber)
|
command_result get_signal_quality(CommandableIf *t, int &rssi, int &ber)
|
||||||
@ -458,7 +458,7 @@ command_result get_network_attachment_state(CommandableIf *t, int &state)
|
|||||||
command_result set_radio_state(CommandableIf *t, int state)
|
command_result set_radio_state(CommandableIf *t, int state)
|
||||||
{
|
{
|
||||||
ESP_LOGV(TAG, "%s", __func__ );
|
ESP_LOGV(TAG, "%s", __func__ );
|
||||||
return generic_command_common(t, "AT+CFUN=" + std::to_string(state) + "\r");
|
return generic_command_common(t, "AT+CFUN=" + std::to_string(state) + "\r", 15000);
|
||||||
}
|
}
|
||||||
|
|
||||||
command_result get_radio_state(CommandableIf *t, int &state)
|
command_result get_radio_state(CommandableIf *t, int &state)
|
||||||
|
Reference in New Issue
Block a user