From 4f1d31f9b7bf018c72e7a8b6268f28cf12d5914f Mon Sep 17 00:00:00 2001 From: David Cermak Date: Mon, 6 Dec 2021 11:12:00 +0100 Subject: [PATCH 1/3] fix(esp_modem): Fix battery status parse Variable `pos` was meant to hold position of first `,` (comma) appearance in the parsed string, but due to wrong parantheses it contained the boolean representation of not equal to `string::npos` --- components/esp_modem/src/esp_modem_command_library.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/esp_modem/src/esp_modem_command_library.cpp b/components/esp_modem/src/esp_modem_command_library.cpp index a4743c13a..77957afb2 100644 --- a/components/esp_modem/src/esp_modem_command_library.cpp +++ b/components/esp_modem/src/esp_modem_command_library.cpp @@ -167,7 +167,7 @@ command_result get_battery_status(CommandableIf *t, int &voltage, int &bcs, int // Parsing +CBC: ,, out = out.substr(pattern.size()); int pos, value, property = 0; - while ((pos = out.find(',') != std::string::npos)) { + while ((pos = out.find(',')) != std::string::npos) { if (std::from_chars(out.data(), out.data() + pos, value).ec == std::errc::invalid_argument) { return command_result::FAIL; } From d879e82a428d1d1cb755d123e37c530479982f3a Mon Sep 17 00:00:00 2001 From: David Cermak Date: Mon, 6 Dec 2021 11:16:38 +0100 Subject: [PATCH 2/3] fix(esp_modem): Update the test to exersise CBC parser --- components/esp_modem/test/host_test/main/LoopbackTerm.cpp | 2 +- components/esp_modem/test/host_test/main/test_modem.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/components/esp_modem/test/host_test/main/LoopbackTerm.cpp b/components/esp_modem/test/host_test/main/LoopbackTerm.cpp index b66cc8f65..4f33d64c2 100644 --- a/components/esp_modem/test/host_test/main/LoopbackTerm.cpp +++ b/components/esp_modem/test/host_test/main/LoopbackTerm.cpp @@ -31,7 +31,7 @@ int LoopbackTerm::write(uint8_t *data, size_t len) } else if (command.find("AT+CGMM\r") != std::string::npos) { response = "0G Dummy Model\n\r\nOK\r\n"; } else if (command.find("AT+CBC\r") != std::string::npos) { - response = is_bg96 ? "+CBC: 1,2,123456V\r\r\n\r\nOK\r\n\n\r\n" : + response = is_bg96 ? "+CBC: 1,20,123456\r\r\n\r\nOK\r\n\n\r\n" : "+CBC: 123.456V\r\r\n\r\nOK\r\n\n\r\n"; } else if (command.find("AT+CPIN=1234\r") != std::string::npos) { response = "OK\r\n"; diff --git a/components/esp_modem/test/host_test/main/test_modem.cpp b/components/esp_modem/test/host_test/main/test_modem.cpp index 1cf02cf33..a50f02b1d 100644 --- a/components/esp_modem/test/host_test/main/test_modem.cpp +++ b/components/esp_modem/test/host_test/main/test_modem.cpp @@ -24,7 +24,7 @@ TEST_CASE("DCE AT parser", "[esp_modem]") CHECK(dce->get_battery_status(milli_volt, bcl, bcs) == command_result::OK); CHECK(milli_volt == 123456); CHECK(bcl == 1); - CHECK(bcs == 2); + CHECK(bcs == 20); int rssi, ber; CHECK(dce->get_signal_quality(rssi, ber) == command_result::OK); From 2cb74cf8d0aab49116fa06776d43cd24a9d370b3 Mon Sep 17 00:00:00 2001 From: David Cermak Date: Mon, 6 Dec 2021 12:49:09 +0100 Subject: [PATCH 3/3] Update(esp_modem): Bump component version --- components/esp_modem/idf_component.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/esp_modem/idf_component.yml b/components/esp_modem/idf_component.yml index 339cb13fe..3ccf91f2e 100644 --- a/components/esp_modem/idf_component.yml +++ b/components/esp_modem/idf_component.yml @@ -1,4 +1,4 @@ -version: "0.1.12" +version: "0.1.13" description: esp modem dependencies: # Required IDF version