Skip to content

Commit 0b32193

Browse files
committed
Add polling to SMS receive example
1 parent 0db0da0 commit 0b32193

File tree

1 file changed

+28
-13
lines changed

1 file changed

+28
-13
lines changed

examples/ReceiveSMS/ReceiveSMS.ino

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,68 @@
11
#include "ArduinoCellular.h"
22
#include "arduino_secrets.h"
33

4-
// #define TINY_GSM_DEBUG Serial
5-
// #define ARDUINO_CELLULAR_DEBUG
64

75
constexpr int NEW_SMS_INTERRUPT_PIN = A0;
86

97
ArduinoCellular cellular = ArduinoCellular();
108
volatile boolean smsReceived = false;
9+
constexpr int POLLING_INTERVAL_MS = 1 * 60 * 1000; // 1 minute
1110

1211
void printMessages(std::vector<SMS> msg){
1312
for(int i = 0; i < msg.size(); i++){
1413
Serial.println("SMS:");
15-
Serial.print("\t * From: "); Serial.println(msg[i].number);
16-
Serial.print("\t * Message: "); Serial.println(msg[i].message);
17-
Serial.print("\t * Timestamp: "); Serial.println(msg[i].timestamp.getISO8601());
14+
Serial.print("* Index: "); Serial.println(msg[i].index);
15+
Serial.print("* From: "); Serial.println(msg[i].sender);
16+
Serial.print("* Timestamp: "); Serial.println(msg[i].timestamp.getISO8601());
17+
Serial.println("* Message: "); Serial.println(msg[i].message);
18+
Serial.println("--------------------\n");
1819
}
1920
}
2021
void onSMSReceived(){
21-
Serial.println("New SMS received!");
2222
smsReceived = true;
2323
}
2424

2525
void setup(){
2626
Serial.begin(115200);
2727
while (!Serial);
2828
cellular.setDebugStream(Serial);
29-
3029
cellular.begin();
30+
3131
Serial.println("Connecting...");
3232
cellular.connect(SECRET_GPRS_APN, SECRET_GPRS_LOGIN, SECRET_GPRS_PASSWORD, SECRET_PINNUMBER);
33-
33+
3434
// Register interrupt based callback for new SMS
3535
attachInterrupt(digitalPinToInterrupt(NEW_SMS_INTERRUPT_PIN), onSMSReceived, RISING);
3636

37-
Serial.println("Read SMS:");
3837
std::vector<SMS> readSMS = cellular.getReadSMS();
39-
printMessages(readSMS);
38+
if(readSMS.size() > 0){
39+
Serial.println("Read SMS:");
40+
printMessages(readSMS);
41+
}
4042

41-
Serial.println("Unread SMS:");
4243
std::vector<SMS> unreadSMS = cellular.getUnreadSMS();
43-
printMessages(unreadSMS);
44+
if(unreadSMS.size() > 0){
45+
Serial.println("Unread SMS:");
46+
printMessages(unreadSMS);
47+
}
4448
}
4549

4650
void loop(){
47-
if(smsReceived){
51+
static unsigned long lastPoll = 0;
52+
static bool checkForNewSMS = false;
53+
54+
if(millis() - lastPoll > POLLING_INTERVAL_MS){
55+
checkForNewSMS = true;
56+
lastPoll = millis();
57+
}
58+
59+
if(smsReceived || checkForNewSMS){
4860
smsReceived = false;
61+
checkForNewSMS = false;
4962
std::vector<SMS> unreadSMS = cellular.getUnreadSMS();
63+
5064
if (unreadSMS.size() > 0){
65+
Serial.println("New SMS received!");
5166
printMessages(unreadSMS);
5267
}
5368
}

0 commit comments

Comments
 (0)