8
8
#include " driver/uart.h"
9
9
#include " hal/uart_ll.h"
10
10
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
+
11
20
typedef struct {
12
21
void *arg;
13
22
} PdpContext;
@@ -416,26 +425,13 @@ void PPPClass::end(void) {
416
425
}
417
426
418
427
bool PPPClass::sync () const {
419
- if (_dce == NULL ) {
420
- return false ;
421
- }
428
+ PPP_CMD_MODE_CHECK (false );
422
429
423
- if (_mode == ESP_MODEM_MODE_DATA) {
424
- log_e (" Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND" );
425
- return false ;
426
- }
427
430
return esp_modem_sync (_dce) == ESP_OK;
428
431
}
429
432
430
433
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 );
439
435
440
436
int m = 0 ;
441
437
esp_err_t err = esp_modem_get_network_attachment_state (_dce, m);
@@ -500,52 +496,31 @@ bool PPPClass::setPin(const char *pin) {
500
496
}
501
497
502
498
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 );
511
500
512
501
int rssi, ber;
513
502
esp_err_t err = esp_modem_get_signal_quality (_dce, rssi, ber);
514
503
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));
516
505
return -1 ;
517
506
}
518
507
return rssi;
519
508
}
520
509
521
510
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 );
530
512
531
513
int rssi, ber;
532
514
esp_err_t err = esp_modem_get_signal_quality (_dce, rssi, ber);
533
515
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));
535
517
return -1 ;
536
518
}
537
519
return ber;
538
520
}
539
521
540
522
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 ());
549
524
550
525
char imsi[32 ];
551
526
esp_err_t err = esp_modem_get_imsi (_dce, (std::string &)imsi);
@@ -558,14 +533,7 @@ String PPPClass::IMSI() const {
558
533
}
559
534
560
535
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 ());
569
537
570
538
char imei[32 ];
571
539
esp_err_t err = esp_modem_get_imei (_dce, (std::string &)imei);
@@ -578,14 +546,7 @@ String PPPClass::IMEI() const {
578
546
}
579
547
580
548
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 ());
589
550
590
551
char name[32 ];
591
552
esp_err_t err = esp_modem_get_module_name (_dce, (std::string &)name);
@@ -598,14 +559,7 @@ String PPPClass::moduleName() const {
598
559
}
599
560
600
561
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 ());
609
563
610
564
char oper[32 ];
611
565
int act = 0 ;
@@ -619,14 +573,7 @@ String PPPClass::operatorName() const {
619
573
}
620
574
621
575
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 );
630
577
631
578
int m = 0 ;
632
579
esp_err_t err = esp_modem_get_network_system_mode (_dce, m);
@@ -638,14 +585,7 @@ int PPPClass::networkMode() const {
638
585
}
639
586
640
587
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 );
649
589
650
590
int m = 0 ;
651
591
esp_err_t err = esp_modem_get_radio_state (_dce, m);
@@ -657,14 +597,7 @@ int PPPClass::radioState() const {
657
597
}
658
598
659
599
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 );
668
601
669
602
esp_err_t err = esp_modem_power_down (_dce);
670
603
if (err != ESP_OK) {
@@ -675,14 +608,7 @@ bool PPPClass::powerDown() {
675
608
}
676
609
677
610
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 );
686
612
687
613
esp_err_t err = esp_modem_reset (_dce);
688
614
if (err != ESP_OK) {
@@ -693,14 +619,7 @@ bool PPPClass::reset() {
693
619
}
694
620
695
621
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 );
704
623
705
624
esp_err_t err = esp_modem_store_profile (_dce);
706
625
if (err != ESP_OK) {
@@ -711,14 +630,7 @@ bool PPPClass::storeProfile() {
711
630
}
712
631
713
632
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 );
722
634
723
635
esp_err_t err = esp_modem_set_baud (_dce, baudrate);
724
636
if (err != ESP_OK) {
@@ -737,15 +649,44 @@ bool PPPClass::setBaudrate(int baudrate) {
737
649
return true ;
738
650
}
739
651
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 ;
743
660
}
661
+ return volt;
662
+ }
744
663
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 ;
748
672
}
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 );
749
690
750
691
for (int i = 0 ; i < strlen (num); i++) {
751
692
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) {
775
716
}
776
717
777
718
String PPPClass::cmd (const char *at_command, int timeout) {
778
- if (_dce == NULL ) {
779
- return String ();
780
- }
719
+ PPP_CMD_MODE_CHECK (String ());
781
720
782
- if (_mode == ESP_MODEM_MODE_DATA) {
783
- log_e (" Wrong modem mode. Should be ESP_MODEM_MODE_COMMAND" );
784
- return String ();
785
- }
786
721
char out[128 ] = {0 };
787
722
esp_err_t err = _esp_modem_at (_dce, at_command, out, timeout);
788
723
if (err != ESP_OK) {
0 commit comments