From 3afa8634f6a1e4f952ea65866c72925760028029 Mon Sep 17 00:00:00 2001
From: WebDust21 <WebDust21@users.noreply.github.com>
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 <WebDust21@users.noreply.github.com>
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 <WebDust21@users.noreply.github.com>
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 <WebDust21@users.noreply.github.com>
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 {