Skip to content

Commit 0fa4aa6

Browse files
PPP: add "battery status" read stub functions (#10043)
* 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. * add "getBattery" function defs to PPP.h * fix(ppp): uncomment error logging, change new function naming * fix(ppp): rename new functions for naming conformity * ci(pre-commit): Apply automatic fixes --------- Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
1 parent b2e67ca commit 0fa4aa6

File tree

2 files changed

+64
-126
lines changed

2 files changed

+64
-126
lines changed

Diff for: libraries/PPP/src/PPP.cpp

+61-126
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,15 @@
88
#include "driver/uart.h"
99
#include "hal/uart_ll.h"
1010

11+
#define PPP_CMD_MODE_CHECK(x) \
12+
if (_dce == NULL) { \
13+
return x; \
14+
} \
15+
if (_mode == ESP_MODEM_MODE_DATA) { \
16+
log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND"); \
17+
return x; \
18+
}
19+
1120
typedef struct {
1221
void *arg;
1322
} PdpContext;
@@ -416,26 +425,13 @@ void PPPClass::end(void) {
416425
}
417426

418427
bool PPPClass::sync() const {
419-
if (_dce == NULL) {
420-
return false;
421-
}
428+
PPP_CMD_MODE_CHECK(false);
422429

423-
if (_mode == ESP_MODEM_MODE_DATA) {
424-
log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND");
425-
return false;
426-
}
427430
return esp_modem_sync(_dce) == ESP_OK;
428431
}
429432

430433
bool PPPClass::attached() const {
431-
if (_dce == NULL) {
432-
return false;
433-
}
434-
435-
if (_mode == ESP_MODEM_MODE_DATA) {
436-
log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND");
437-
return false;
438-
}
434+
PPP_CMD_MODE_CHECK(false);
439435

440436
int m = 0;
441437
esp_err_t err = esp_modem_get_network_attachment_state(_dce, m);
@@ -500,52 +496,31 @@ bool PPPClass::setPin(const char *pin) {
500496
}
501497

502498
int PPPClass::RSSI() const {
503-
if (_dce == NULL) {
504-
return -1;
505-
}
506-
507-
if (_mode == ESP_MODEM_MODE_DATA) {
508-
log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND");
509-
return -1;
510-
}
499+
PPP_CMD_MODE_CHECK(-1);
511500

512501
int rssi, ber;
513502
esp_err_t err = esp_modem_get_signal_quality(_dce, rssi, ber);
514503
if (err != ESP_OK) {
515-
// log_e("esp_modem_get_signal_quality failed with %d %s", err, esp_err_to_name(err));
504+
log_e("esp_modem_get_signal_quality failed with %d %s", err, esp_err_to_name(err));
516505
return -1;
517506
}
518507
return rssi;
519508
}
520509

521510
int PPPClass::BER() const {
522-
if (_dce == NULL) {
523-
return -1;
524-
}
525-
526-
if (_mode == ESP_MODEM_MODE_DATA) {
527-
log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND");
528-
return -1;
529-
}
511+
PPP_CMD_MODE_CHECK(-1);
530512

531513
int rssi, ber;
532514
esp_err_t err = esp_modem_get_signal_quality(_dce, rssi, ber);
533515
if (err != ESP_OK) {
534-
// log_e("esp_modem_get_signal_quality failed with %d %s", err, esp_err_to_name(err));
516+
log_e("esp_modem_get_signal_quality failed with %d %s", err, esp_err_to_name(err));
535517
return -1;
536518
}
537519
return ber;
538520
}
539521

540522
String PPPClass::IMSI() const {
541-
if (_dce == NULL) {
542-
return String();
543-
}
544-
545-
if (_mode == ESP_MODEM_MODE_DATA) {
546-
log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND");
547-
return String();
548-
}
523+
PPP_CMD_MODE_CHECK(String());
549524

550525
char imsi[32];
551526
esp_err_t err = esp_modem_get_imsi(_dce, (std::string &)imsi);
@@ -558,14 +533,7 @@ String PPPClass::IMSI() const {
558533
}
559534

560535
String PPPClass::IMEI() const {
561-
if (_dce == NULL) {
562-
return String();
563-
}
564-
565-
if (_mode == ESP_MODEM_MODE_DATA) {
566-
log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND");
567-
return String();
568-
}
536+
PPP_CMD_MODE_CHECK(String());
569537

570538
char imei[32];
571539
esp_err_t err = esp_modem_get_imei(_dce, (std::string &)imei);
@@ -578,14 +546,7 @@ String PPPClass::IMEI() const {
578546
}
579547

580548
String PPPClass::moduleName() const {
581-
if (_dce == NULL) {
582-
return String();
583-
}
584-
585-
if (_mode == ESP_MODEM_MODE_DATA) {
586-
log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND");
587-
return String();
588-
}
549+
PPP_CMD_MODE_CHECK(String());
589550

590551
char name[32];
591552
esp_err_t err = esp_modem_get_module_name(_dce, (std::string &)name);
@@ -598,14 +559,7 @@ String PPPClass::moduleName() const {
598559
}
599560

600561
String PPPClass::operatorName() const {
601-
if (_dce == NULL) {
602-
return String();
603-
}
604-
605-
if (_mode == ESP_MODEM_MODE_DATA) {
606-
log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND");
607-
return String();
608-
}
562+
PPP_CMD_MODE_CHECK(String());
609563

610564
char oper[32];
611565
int act = 0;
@@ -619,14 +573,7 @@ String PPPClass::operatorName() const {
619573
}
620574

621575
int PPPClass::networkMode() const {
622-
if (_dce == NULL) {
623-
return -1;
624-
}
625-
626-
if (_mode == ESP_MODEM_MODE_DATA) {
627-
log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND");
628-
return -1;
629-
}
576+
PPP_CMD_MODE_CHECK(-1);
630577

631578
int m = 0;
632579
esp_err_t err = esp_modem_get_network_system_mode(_dce, m);
@@ -638,14 +585,7 @@ int PPPClass::networkMode() const {
638585
}
639586

640587
int PPPClass::radioState() const {
641-
if (_dce == NULL) {
642-
return -1;
643-
}
644-
645-
if (_mode == ESP_MODEM_MODE_DATA) {
646-
log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND");
647-
return -1;
648-
}
588+
PPP_CMD_MODE_CHECK(-1);
649589

650590
int m = 0;
651591
esp_err_t err = esp_modem_get_radio_state(_dce, m);
@@ -657,14 +597,7 @@ int PPPClass::radioState() const {
657597
}
658598

659599
bool PPPClass::powerDown() {
660-
if (_dce == NULL) {
661-
return false;
662-
}
663-
664-
if (_mode == ESP_MODEM_MODE_DATA) {
665-
log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND");
666-
return false;
667-
}
600+
PPP_CMD_MODE_CHECK(false);
668601

669602
esp_err_t err = esp_modem_power_down(_dce);
670603
if (err != ESP_OK) {
@@ -675,14 +608,7 @@ bool PPPClass::powerDown() {
675608
}
676609

677610
bool PPPClass::reset() {
678-
if (_dce == NULL) {
679-
return false;
680-
}
681-
682-
if (_mode == ESP_MODEM_MODE_DATA) {
683-
log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND");
684-
return false;
685-
}
611+
PPP_CMD_MODE_CHECK(false);
686612

687613
esp_err_t err = esp_modem_reset(_dce);
688614
if (err != ESP_OK) {
@@ -693,14 +619,7 @@ bool PPPClass::reset() {
693619
}
694620

695621
bool PPPClass::storeProfile() {
696-
if (_dce == NULL) {
697-
return false;
698-
}
699-
700-
if (_mode == ESP_MODEM_MODE_DATA) {
701-
log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND");
702-
return false;
703-
}
622+
PPP_CMD_MODE_CHECK(false);
704623

705624
esp_err_t err = esp_modem_store_profile(_dce);
706625
if (err != ESP_OK) {
@@ -711,14 +630,7 @@ bool PPPClass::storeProfile() {
711630
}
712631

713632
bool PPPClass::setBaudrate(int baudrate) {
714-
if (_dce == NULL) {
715-
return false;
716-
}
717-
718-
if (_mode == ESP_MODEM_MODE_DATA) {
719-
log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND");
720-
return false;
721-
}
633+
PPP_CMD_MODE_CHECK(false);
722634

723635
esp_err_t err = esp_modem_set_baud(_dce, baudrate);
724636
if (err != ESP_OK) {
@@ -737,15 +649,44 @@ bool PPPClass::setBaudrate(int baudrate) {
737649
return true;
738650
}
739651

740-
bool PPPClass::sms(const char *num, const char *message) {
741-
if (_dce == NULL) {
742-
return false;
652+
int PPPClass::batteryVoltage() const {
653+
PPP_CMD_MODE_CHECK(-1);
654+
655+
int volt, bcs, bcl;
656+
esp_err_t err = esp_modem_get_battery_status(_dce, volt, bcs, bcl);
657+
if (err != ESP_OK) {
658+
log_e("esp_modem_get_battery_status failed with %d %s", err, esp_err_to_name(err));
659+
return -1;
743660
}
661+
return volt;
662+
}
744663

745-
if (_mode == ESP_MODEM_MODE_DATA) {
746-
log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND");
747-
return false;
664+
int PPPClass::batteryLevel() const {
665+
PPP_CMD_MODE_CHECK(-1);
666+
667+
int volt, bcs, bcl;
668+
esp_err_t err = esp_modem_get_battery_status(_dce, volt, bcs, bcl);
669+
if (err != ESP_OK) {
670+
log_e("esp_modem_get_battery_status failed with %d %s", err, esp_err_to_name(err));
671+
return -1;
748672
}
673+
return bcl;
674+
}
675+
676+
int PPPClass::batteryStatus() const {
677+
PPP_CMD_MODE_CHECK(-1);
678+
679+
int volt, bcs, bcl;
680+
esp_err_t err = esp_modem_get_battery_status(_dce, volt, bcs, bcl);
681+
if (err != ESP_OK) {
682+
log_e("esp_modem_get_battery_status failed with %d %s", err, esp_err_to_name(err));
683+
return -1;
684+
}
685+
return bcs;
686+
}
687+
688+
bool PPPClass::sms(const char *num, const char *message) {
689+
PPP_CMD_MODE_CHECK(false);
749690

750691
for (int i = 0; i < strlen(num); i++) {
751692
if (num[i] != '+' && num[i] != '#' && num[i] != '*' && (num[i] < 0x30 || num[i] > 0x39)) {
@@ -775,14 +716,8 @@ bool PPPClass::sms(const char *num, const char *message) {
775716
}
776717

777718
String PPPClass::cmd(const char *at_command, int timeout) {
778-
if (_dce == NULL) {
779-
return String();
780-
}
719+
PPP_CMD_MODE_CHECK(String());
781720

782-
if (_mode == ESP_MODEM_MODE_DATA) {
783-
log_e("Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND");
784-
return String();
785-
}
786721
char out[128] = {0};
787722
esp_err_t err = _esp_modem_at(_dce, at_command, out, timeout);
788723
if (err != ESP_OK) {

Diff for: libraries/PPP/src/PPP.h

+3
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@ class PPPClass : public NetworkInterface {
4949
int radioState() const; // 0:minimal, 1:full
5050
bool attached() const; // true is attached to network
5151
bool sync() const; // true if responds to 'AT'
52+
int batteryVoltage() const;
53+
int batteryLevel() const;
54+
int batteryStatus() const;
5255

5356
// Switch the communication mode
5457
bool mode(esp_modem_dce_mode_t m);

0 commit comments

Comments
 (0)