From 3afa8634f6a1e4f952ea65866c72925760028029 Mon Sep 17 00:00:00 2001 From: WebDust21 Date: Wed, 17 Jul 2024 10:54:09 -0400 Subject: [PATCH 1/5] add "getBattery" functions + #define simplicity replaced all function protections with a #define to simplify code functionality. Also added "getBattery" functions to leverage "esp_modem_get_battery_status" call in ESP-MODEM. --- libraries/PPP/src/PPP.cpp | 191 +++++++++++++------------------------- 1 file changed, 62 insertions(+), 129 deletions(-) diff --git a/libraries/PPP/src/PPP.cpp b/libraries/PPP/src/PPP.cpp index 6c0e7e46aa8..2fcc602f184 100644 --- a/libraries/PPP/src/PPP.cpp +++ b/libraries/PPP/src/PPP.cpp @@ -8,6 +8,13 @@ #include "driver/uart.h" #include "hal/uart_ll.h" +#define PPP_CMD_MODE_CHECK(x) if (_dce == NULL) {return x;} \ + if (_mode == ESP_MODEM_MODE_DATA) { \ + log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND"); \ + return x; \ + } \ + + typedef struct { void *arg; } PdpContext; @@ -416,26 +423,13 @@ void PPPClass::end(void) { } bool PPPClass::sync() const { - if (_dce == NULL) { - return false; - } - - if (_mode == ESP_MODEM_MODE_DATA) { - log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND"); - return false; - } + PPP_CMD_MODE_CHECK(false); + return esp_modem_sync(_dce) == ESP_OK; } bool PPPClass::attached() const { - if (_dce == NULL) { - return false; - } - - if (_mode == ESP_MODEM_MODE_DATA) { - log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND"); - return false; - } + PPP_CMD_MODE_CHECK(false); int m = 0; esp_err_t err = esp_modem_get_network_attachment_state(_dce, m); @@ -500,15 +494,8 @@ bool PPPClass::setPin(const char *pin) { } int PPPClass::RSSI() const { - if (_dce == NULL) { - return -1; - } - - if (_mode == ESP_MODEM_MODE_DATA) { - log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND"); - return -1; - } - + PPP_CMD_MODE_CHECK(-1); + int rssi, ber; esp_err_t err = esp_modem_get_signal_quality(_dce, rssi, ber); if (err != ESP_OK) { @@ -519,14 +506,7 @@ int PPPClass::RSSI() const { } int PPPClass::BER() const { - if (_dce == NULL) { - return -1; - } - - if (_mode == ESP_MODEM_MODE_DATA) { - log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND"); - return -1; - } + PPP_CMD_MODE_CHECK(-1); int rssi, ber; esp_err_t err = esp_modem_get_signal_quality(_dce, rssi, ber); @@ -538,14 +518,7 @@ int PPPClass::BER() const { } String PPPClass::IMSI() const { - if (_dce == NULL) { - return String(); - } - - if (_mode == ESP_MODEM_MODE_DATA) { - log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND"); - return String(); - } + PPP_CMD_MODE_CHECK(String()); char imsi[32]; esp_err_t err = esp_modem_get_imsi(_dce, (std::string &)imsi); @@ -558,15 +531,8 @@ String PPPClass::IMSI() const { } String PPPClass::IMEI() const { - if (_dce == NULL) { - return String(); - } - - if (_mode == ESP_MODEM_MODE_DATA) { - log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND"); - return String(); - } - + PPP_CMD_MODE_CHECK(String()); + char imei[32]; esp_err_t err = esp_modem_get_imei(_dce, (std::string &)imei); if (err != ESP_OK) { @@ -578,15 +544,8 @@ String PPPClass::IMEI() const { } String PPPClass::moduleName() const { - if (_dce == NULL) { - return String(); - } - - if (_mode == ESP_MODEM_MODE_DATA) { - log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND"); - return String(); - } - + PPP_CMD_MODE_CHECK(String()); + char name[32]; esp_err_t err = esp_modem_get_module_name(_dce, (std::string &)name); if (err != ESP_OK) { @@ -598,14 +557,7 @@ String PPPClass::moduleName() const { } String PPPClass::operatorName() const { - if (_dce == NULL) { - return String(); - } - - if (_mode == ESP_MODEM_MODE_DATA) { - log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND"); - return String(); - } + PPP_CMD_MODE_CHECK(String()); char oper[32]; int act = 0; @@ -619,14 +571,7 @@ String PPPClass::operatorName() const { } int PPPClass::networkMode() const { - if (_dce == NULL) { - return -1; - } - - if (_mode == ESP_MODEM_MODE_DATA) { - log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND"); - return -1; - } + PPP_CMD_MODE_CHECK(-1); int m = 0; esp_err_t err = esp_modem_get_network_system_mode(_dce, m); @@ -638,14 +583,7 @@ int PPPClass::networkMode() const { } int PPPClass::radioState() const { - if (_dce == NULL) { - return -1; - } - - if (_mode == ESP_MODEM_MODE_DATA) { - log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND"); - return -1; - } + PPP_CMD_MODE_CHECK(-1); int m = 0; esp_err_t err = esp_modem_get_radio_state(_dce, m); @@ -657,14 +595,7 @@ int PPPClass::radioState() const { } bool PPPClass::powerDown() { - if (_dce == NULL) { - return false; - } - - if (_mode == ESP_MODEM_MODE_DATA) { - log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND"); - return false; - } + PPP_CMD_MODE_CHECK(false); esp_err_t err = esp_modem_power_down(_dce); if (err != ESP_OK) { @@ -675,14 +606,7 @@ bool PPPClass::powerDown() { } bool PPPClass::reset() { - if (_dce == NULL) { - return false; - } - - if (_mode == ESP_MODEM_MODE_DATA) { - log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND"); - return false; - } + PPP_CMD_MODE_CHECK(false); esp_err_t err = esp_modem_reset(_dce); if (err != ESP_OK) { @@ -693,14 +617,7 @@ bool PPPClass::reset() { } bool PPPClass::storeProfile() { - if (_dce == NULL) { - return false; - } - - if (_mode == ESP_MODEM_MODE_DATA) { - log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND"); - return false; - } + PPP_CMD_MODE_CHECK(false); esp_err_t err = esp_modem_store_profile(_dce); if (err != ESP_OK) { @@ -711,14 +628,7 @@ bool PPPClass::storeProfile() { } bool PPPClass::setBaudrate(int baudrate) { - if (_dce == NULL) { - return false; - } - - if (_mode == ESP_MODEM_MODE_DATA) { - log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND"); - return false; - } + PPP_CMD_MODE_CHECK(false); esp_err_t err = esp_modem_set_baud(_dce, baudrate); if (err != ESP_OK) { @@ -737,15 +647,44 @@ bool PPPClass::setBaudrate(int baudrate) { return true; } -bool PPPClass::sms(const char *num, const char *message) { - if (_dce == NULL) { - return false; +int PPPClass::getBatteryVoltage() const { + PPP_CMD_MODE_CHECK(-1); + + int volt, bcs, bcl; + esp_err_t err = esp_modem_get_battery_status(_dce, volt, bcs, bcl); + if (err != ESP_OK) { + //log_e("esp_modem_get_battery_status failed with %d %s", err, esp_err_to_name(err)); + return -1; } + return volt; +} - if (_mode == ESP_MODEM_MODE_DATA) { - log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND"); - return false; +int PPPClass::getBatteryLevel() const { + PPP_CMD_MODE_CHECK(-1); + + int volt, bcs, bcl; + esp_err_t err = esp_modem_get_battery_status(_dce, volt, bcs, bcl); + if (err != ESP_OK) { + //log_e("esp_modem_get_battery_status failed with %d %s", err, esp_err_to_name(err)); + return -1; + } + return bcl; +} + +int PPPClass::getBatteryStatus() const { + PPP_CMD_MODE_CHECK(-1); + + int volt, bcs, bcl; + esp_err_t err = esp_modem_get_battery_status(_dce, volt, bcs, bcl); + if (err != ESP_OK) { + //log_e("esp_modem_get_battery_status failed with %d %s", err, esp_err_to_name(err)); + return -1; } + return bcs; +} + +bool PPPClass::sms(const char *num, const char *message) { + PPP_CMD_MODE_CHECK(false); for (int i = 0; i < strlen(num); i++) { if (num[i] != '+' && num[i] != '#' && num[i] != '*' && (num[i] < 0x30 || num[i] > 0x39)) { @@ -775,14 +714,8 @@ bool PPPClass::sms(const char *num, const char *message) { } String PPPClass::cmd(const char *at_command, int timeout) { - if (_dce == NULL) { - return String(); - } - - if (_mode == ESP_MODEM_MODE_DATA) { - log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND"); - return String(); - } + PPP_CMD_MODE_CHECK(String()); + char out[128] = {0}; esp_err_t err = _esp_modem_at(_dce, at_command, out, timeout); if (err != ESP_OK) { From 81f98e5617ad16379a2c03b7b38f184a73ffb3ff Mon Sep 17 00:00:00 2001 From: WebDust21 Date: Wed, 17 Jul 2024 10:55:37 -0400 Subject: [PATCH 2/5] add "getBattery" function defs to PPP.h --- libraries/PPP/src/PPP.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libraries/PPP/src/PPP.h b/libraries/PPP/src/PPP.h index f34dd957fe7..4d2094b5c5e 100644 --- a/libraries/PPP/src/PPP.h +++ b/libraries/PPP/src/PPP.h @@ -41,6 +41,9 @@ class PPPClass : public NetworkInterface { // Modem DCE APIs int RSSI() const; int BER() const; + int getBatteryVoltage() const; + int getBatteryLevel() const; + int getBatteryStatus() const; String IMSI() const; String IMEI() const; String moduleName() const; // modem module name From 055be33ca359b606f81b411293ad8f95dd05b0bc Mon Sep 17 00:00:00 2001 From: WebDust21 Date: Wed, 17 Jul 2024 12:19:46 -0400 Subject: [PATCH 3/5] fix(ppp): uncomment error logging, change new function naming --- libraries/PPP/src/PPP.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/libraries/PPP/src/PPP.cpp b/libraries/PPP/src/PPP.cpp index 2fcc602f184..079c180d678 100644 --- a/libraries/PPP/src/PPP.cpp +++ b/libraries/PPP/src/PPP.cpp @@ -499,7 +499,7 @@ int PPPClass::RSSI() const { int rssi, ber; esp_err_t err = esp_modem_get_signal_quality(_dce, rssi, ber); if (err != ESP_OK) { - // log_e("esp_modem_get_signal_quality failed with %d %s", err, esp_err_to_name(err)); + log_e("esp_modem_get_signal_quality failed with %d %s", err, esp_err_to_name(err)); return -1; } return rssi; @@ -511,7 +511,7 @@ int PPPClass::BER() const { int rssi, ber; esp_err_t err = esp_modem_get_signal_quality(_dce, rssi, ber); if (err != ESP_OK) { - // log_e("esp_modem_get_signal_quality failed with %d %s", err, esp_err_to_name(err)); + log_e("esp_modem_get_signal_quality failed with %d %s", err, esp_err_to_name(err)); return -1; } return ber; @@ -647,37 +647,37 @@ bool PPPClass::setBaudrate(int baudrate) { return true; } -int PPPClass::getBatteryVoltage() const { +int PPPClass::batteryVoltage() const { PPP_CMD_MODE_CHECK(-1); int volt, bcs, bcl; esp_err_t err = esp_modem_get_battery_status(_dce, volt, bcs, bcl); if (err != ESP_OK) { - //log_e("esp_modem_get_battery_status failed with %d %s", err, esp_err_to_name(err)); + log_e("esp_modem_get_battery_status failed with %d %s", err, esp_err_to_name(err)); return -1; } return volt; } -int PPPClass::getBatteryLevel() const { +int PPPClass::batteryLevel() const { PPP_CMD_MODE_CHECK(-1); int volt, bcs, bcl; esp_err_t err = esp_modem_get_battery_status(_dce, volt, bcs, bcl); if (err != ESP_OK) { - //log_e("esp_modem_get_battery_status failed with %d %s", err, esp_err_to_name(err)); + log_e("esp_modem_get_battery_status failed with %d %s", err, esp_err_to_name(err)); return -1; } return bcl; } -int PPPClass::getBatteryStatus() const { +int PPPClass::batteryStatus() const { PPP_CMD_MODE_CHECK(-1); int volt, bcs, bcl; esp_err_t err = esp_modem_get_battery_status(_dce, volt, bcs, bcl); if (err != ESP_OK) { - //log_e("esp_modem_get_battery_status failed with %d %s", err, esp_err_to_name(err)); + log_e("esp_modem_get_battery_status failed with %d %s", err, esp_err_to_name(err)); return -1; } return bcs; From c41b4d8d291f47d1dd4b3bcc604c31125fbcd64e Mon Sep 17 00:00:00 2001 From: WebDust21 Date: Wed, 17 Jul 2024 12:21:00 -0400 Subject: [PATCH 4/5] fix(ppp): rename new functions for naming conformity --- libraries/PPP/src/PPP.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/PPP/src/PPP.h b/libraries/PPP/src/PPP.h index 4d2094b5c5e..3e93ec4653e 100644 --- a/libraries/PPP/src/PPP.h +++ b/libraries/PPP/src/PPP.h @@ -41,9 +41,6 @@ class PPPClass : public NetworkInterface { // Modem DCE APIs int RSSI() const; int BER() const; - int getBatteryVoltage() const; - int getBatteryLevel() const; - int getBatteryStatus() const; String IMSI() const; String IMEI() const; String moduleName() const; // modem module name @@ -52,7 +49,10 @@ class PPPClass : public NetworkInterface { int radioState() const; // 0:minimal, 1:full bool attached() const; // true is attached to network bool sync() const; // true if responds to 'AT' - + int batteryVoltage() const; + int batteryLevel() const; + int batteryStatus() const; + // Switch the communication mode bool mode(esp_modem_dce_mode_t m); esp_modem_dce_mode_t mode() const { From 81f9e5490bc36fb5191a758b7e8cffd8402dceed Mon Sep 17 00:00:00 2001 From: "pre-commit-ci-lite[bot]" <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Date: Fri, 19 Jul 2024 08:20:18 +0000 Subject: [PATCH 5/5] ci(pre-commit): Apply automatic fixes --- libraries/PPP/src/PPP.cpp | 18 ++++++++++-------- libraries/PPP/src/PPP.h | 2 +- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/libraries/PPP/src/PPP.cpp b/libraries/PPP/src/PPP.cpp index 079c180d678..8c25fe6aad5 100644 --- a/libraries/PPP/src/PPP.cpp +++ b/libraries/PPP/src/PPP.cpp @@ -8,12 +8,14 @@ #include "driver/uart.h" #include "hal/uart_ll.h" -#define PPP_CMD_MODE_CHECK(x) if (_dce == NULL) {return x;} \ +#define PPP_CMD_MODE_CHECK(x) \ + if (_dce == NULL) { \ + return x; \ + } \ if (_mode == ESP_MODEM_MODE_DATA) { \ log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND"); \ return x; \ - } \ - + } typedef struct { void *arg; @@ -424,7 +426,7 @@ void PPPClass::end(void) { bool PPPClass::sync() const { PPP_CMD_MODE_CHECK(false); - + return esp_modem_sync(_dce) == ESP_OK; } @@ -495,7 +497,7 @@ bool PPPClass::setPin(const char *pin) { int PPPClass::RSSI() const { PPP_CMD_MODE_CHECK(-1); - + int rssi, ber; esp_err_t err = esp_modem_get_signal_quality(_dce, rssi, ber); if (err != ESP_OK) { @@ -532,7 +534,7 @@ String PPPClass::IMSI() const { String PPPClass::IMEI() const { PPP_CMD_MODE_CHECK(String()); - + char imei[32]; esp_err_t err = esp_modem_get_imei(_dce, (std::string &)imei); if (err != ESP_OK) { @@ -545,7 +547,7 @@ String PPPClass::IMEI() const { String PPPClass::moduleName() const { PPP_CMD_MODE_CHECK(String()); - + char name[32]; esp_err_t err = esp_modem_get_module_name(_dce, (std::string &)name); if (err != ESP_OK) { @@ -715,7 +717,7 @@ bool PPPClass::sms(const char *num, const char *message) { String PPPClass::cmd(const char *at_command, int timeout) { PPP_CMD_MODE_CHECK(String()); - + char out[128] = {0}; esp_err_t err = _esp_modem_at(_dce, at_command, out, timeout); if (err != ESP_OK) { diff --git a/libraries/PPP/src/PPP.h b/libraries/PPP/src/PPP.h index 3e93ec4653e..52eed57edbc 100644 --- a/libraries/PPP/src/PPP.h +++ b/libraries/PPP/src/PPP.h @@ -52,7 +52,7 @@ class PPPClass : public NetworkInterface { int batteryVoltage() const; int batteryLevel() const; int batteryStatus() const; - + // Switch the communication mode bool mode(esp_modem_dce_mode_t m); esp_modem_dce_mode_t mode() const {