mirror of
https://github.com/esphome/esphome.git
synced 2024-11-27 09:18:00 +01:00
use flush_uart to get long at results
This commit is contained in:
parent
8681a5b302
commit
17309fb315
2 changed files with 9 additions and 9 deletions
|
@ -83,7 +83,7 @@ AtCommandResult ModemComponent::get_imei() {
|
||||||
// get the imei, and check the result is a valid imei string
|
// get the imei, and check the result is a valid imei string
|
||||||
// (so it can be used to check if the modem is responding correctly (a simple 'AT' cmd is sometime not enough))
|
// (so it can be used to check if the modem is responding correctly (a simple 'AT' cmd is sometime not enough))
|
||||||
AtCommandResult at_command_result;
|
AtCommandResult at_command_result;
|
||||||
at_command_result = this->send_at("AT+CGSN", 4000);
|
at_command_result = this->send_at("AT+CGSN", this->command_delay_);
|
||||||
if (at_command_result.success && at_command_result.output.length() == 15) {
|
if (at_command_result.success && at_command_result.output.length() == 15) {
|
||||||
for (char c : at_command_result.output) {
|
for (char c : at_command_result.output) {
|
||||||
if (!isdigit(static_cast<unsigned char>(c))) {
|
if (!isdigit(static_cast<unsigned char>(c))) {
|
||||||
|
@ -665,9 +665,9 @@ void ModemComponent::send_init_at_() {
|
||||||
std::replace(output.begin(), output.end(), '\n', ' ');
|
std::replace(output.begin(), output.end(), '\n', ' ');
|
||||||
return command_result::OK;
|
return command_result::OK;
|
||||||
},
|
},
|
||||||
2000),
|
this->command_delay_),
|
||||||
"init_at");
|
"init_at");
|
||||||
|
output += this->flush_uart_(); // probably a bug in esp_modem. long string are truncated
|
||||||
ESP_LOGI(TAG, "init_at %s: %s", cmd.c_str(), output.c_str());
|
ESP_LOGI(TAG, "init_at %s: %s", cmd.c_str(), output.c_str());
|
||||||
}
|
}
|
||||||
this->flush_uart_();
|
this->flush_uart_();
|
||||||
|
@ -803,7 +803,8 @@ void ModemComponent::dump_connect_params_() {
|
||||||
ESP_LOGCONFIG(TAG, " DNS fallback: %s", network::IPAddress(dns_fallback_ip).str().c_str());
|
ESP_LOGCONFIG(TAG, " DNS fallback: %s", network::IPAddress(dns_fallback_ip).str().c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ModemComponent::flush_uart_() {
|
std::string ModemComponent::flush_uart_() {
|
||||||
|
// empty command that just read the result, to flush the uart
|
||||||
size_t cleaned = 0;
|
size_t cleaned = 0;
|
||||||
std::string output;
|
std::string output;
|
||||||
this->dce->command(
|
this->dce->command(
|
||||||
|
@ -811,15 +812,14 @@ bool ModemComponent::flush_uart_() {
|
||||||
[&](uint8_t *data, size_t len) {
|
[&](uint8_t *data, size_t len) {
|
||||||
cleaned = len;
|
cleaned = len;
|
||||||
output.assign(reinterpret_cast<char *>(data), len);
|
output.assign(reinterpret_cast<char *>(data), len);
|
||||||
std::replace(output.begin(), output.end(), '\n', ' ');
|
|
||||||
return command_result::OK;
|
return command_result::OK;
|
||||||
},
|
},
|
||||||
2000);
|
this->command_delay_);
|
||||||
|
|
||||||
if (cleaned != 0) {
|
if (cleaned != 0) {
|
||||||
ESP_LOGW(TAG, "Cleaned %d modem buffer data: %s", cleaned, output.c_str());
|
ESP_LOGD(TAG, "Flushed %d modem buffer data: %s", cleaned, output.c_str());
|
||||||
}
|
}
|
||||||
return cleaned != 0;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *AtCommandResult::c_str() const {
|
const char *AtCommandResult::c_str() const {
|
||||||
|
|
|
@ -121,7 +121,7 @@ class ModemComponent : public Component {
|
||||||
void abort_(const std::string &message);
|
void abort_(const std::string &message);
|
||||||
static void ip_event_handler(void *arg, esp_event_base_t event_base, int32_t event_id, void *event_data);
|
static void ip_event_handler(void *arg, esp_event_base_t event_base, int32_t event_id, void *event_data);
|
||||||
void dump_connect_params_();
|
void dump_connect_params_();
|
||||||
bool flush_uart_();
|
std::string flush_uart_();
|
||||||
|
|
||||||
// Attributes from yaml config
|
// Attributes from yaml config
|
||||||
uint32_t timeout_;
|
uint32_t timeout_;
|
||||||
|
|
Loading…
Reference in a new issue