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+
1120typedef struct {
1221 void *arg;
1322} PdpContext;
@@ -416,26 +425,13 @@ void PPPClass::end(void) {
416425}
417426
418427bool 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
430433bool 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
502498int 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
521510int 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
540522String 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
560535String 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
580548String 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
600561String 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
621575int 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
640587int 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
659599bool 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
677610bool 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
695621bool 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
713632bool 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
777718String 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) {
0 commit comments