Prototyping the Adaptable Emergency System on an C027 board.

Dependencies:   C027_Support mbed

Fork of c027_prototyping by Philémon Favrod

Files at this revision

API Documentation at this revision

Comitter:
philemonf
Date:
Tue Sep 30 17:49:29 2014 +0000
Parent:
4:f1708f6ec905
Child:
6:58d48b90c9f7
Child:
8:a45beb0e6145
Commit message:
sms_lib completed

Changed in this revision

sms_lib.cpp Show annotated file Show diff for this revision Revisions of this file
sms_lib.h Show annotated file Show diff for this revision Revisions of this file
--- a/sms_lib.cpp	Tue Sep 30 16:06:35 2014 +0000
+++ b/sms_lib.cpp	Tue Sep 30 17:49:29 2014 +0000
@@ -4,9 +4,11 @@
 
 DigitalOut myled(LED);
 
+static MDMSerial *mdm;
 int init_sms_features(void)
 {
-    MDMSerial mdm;
+    mdm = new MDMSerial;
+    
     static const char *SIMPIN = "5554";
     
     MDMParser::DevStatus devStatus = {};
@@ -15,29 +17,45 @@
     mdm.dumpDevStatus(&devStatus);
     
     if (mdmOk) {
-        mdmOk = mdm.registerNet(&netStatus);
+        mdmOk &= mdm.registerNet(&netStatus);
         mdm.dumpNetStatus(&netStatus);
     }
     
-    if (mdmOk) {
-        myled = 1;
-        wait(1);
-        myled = 0;
-        if (mdm.smsSend("+41763211792", "Salut toi!")) {
-            while (1) {
-                myled = 1;
-            }
-        } else {
-            while (1) {
-                myled = !myled;
-                wait(1);
-            }
-        }
-        
-    } else {
-        while (1) {
-            myled = !myled;
-            wait(0.2);
-        }
+    return mdmOk;
+}
+
+void close_sms_features(void)
+{
+    if (mdm) {
+        delete mdm;
+    }
+}
+
+#define PREC_UNSATISFIED (!sms || !(sms->phone_num) || !(sms->msg_buf) || !mdm)
+int send_sms(struct sms_t *sms)
+{
+    
+    if (PREC_UNSATISFIED) {
+        return 0;
     }
+    
+    return mdm->smsSend(sms->phone_num, sms->msg_buf);
+}
+
+
+int read_sms(struct sms_t *sms)
+{
+    if (PREC_UNSATISFIED) {
+        return 0;
+    }
+    
+    int ix[1];
+    int numReceivedSMS = mdm.smsList("REC UNREAD", ix, 1);
+    
+    if (numReceivedSMS > 1 && mdm.smsRead(ix[0], sms->phone_num, sms->msg_buf, sizeof(sms->msg_buf)) {
+        mdm.smsDelete(ix[0]);
+        return 1;
+    }
+    
+    return 0;
 }
\ No newline at end of file
--- a/sms_lib.h	Tue Sep 30 16:06:35 2014 +0000
+++ b/sms_lib.h	Tue Sep 30 17:49:29 2014 +0000
@@ -7,6 +7,8 @@
 };
 
 int init_sms_features(void);
-
+void close_sms_features(void);
 
+int send_sms(struct sms_t *sms);
+int read_sms(struct sms_t *sms);
 #endif
\ No newline at end of file