Prototyping the Adaptable Emergency System on an C027 board.

Dependencies:   C027_Support mbed

Fork of c027_prototyping by Philémon Favrod

Committer:
philemonf
Date:
Tue Sep 30 17:49:29 2014 +0000
Revision:
5:6d0cdd715100
Parent:
4:f1708f6ec905
Child:
6:58d48b90c9f7
sms_lib completed

Who changed what in which revision?

UserRevisionLine numberNew contents of line
aroulin 4:f1708f6ec905 1 #include "MDM.h"
aroulin 4:f1708f6ec905 2
aroulin 4:f1708f6ec905 3 #include "sms_lib.h"
aroulin 4:f1708f6ec905 4
aroulin 4:f1708f6ec905 5 DigitalOut myled(LED);
aroulin 4:f1708f6ec905 6
philemonf 5:6d0cdd715100 7 static MDMSerial *mdm;
aroulin 4:f1708f6ec905 8 int init_sms_features(void)
aroulin 4:f1708f6ec905 9 {
philemonf 5:6d0cdd715100 10 mdm = new MDMSerial;
philemonf 5:6d0cdd715100 11
aroulin 4:f1708f6ec905 12 static const char *SIMPIN = "5554";
aroulin 4:f1708f6ec905 13
aroulin 4:f1708f6ec905 14 MDMParser::DevStatus devStatus = {};
aroulin 4:f1708f6ec905 15 MDMParser::NetStatus netStatus = {};
aroulin 4:f1708f6ec905 16 bool mdmOk = mdm.init(SIMPIN, &devStatus);
aroulin 4:f1708f6ec905 17 mdm.dumpDevStatus(&devStatus);
aroulin 4:f1708f6ec905 18
aroulin 4:f1708f6ec905 19 if (mdmOk) {
philemonf 5:6d0cdd715100 20 mdmOk &= mdm.registerNet(&netStatus);
aroulin 4:f1708f6ec905 21 mdm.dumpNetStatus(&netStatus);
aroulin 4:f1708f6ec905 22 }
aroulin 4:f1708f6ec905 23
philemonf 5:6d0cdd715100 24 return mdmOk;
philemonf 5:6d0cdd715100 25 }
philemonf 5:6d0cdd715100 26
philemonf 5:6d0cdd715100 27 void close_sms_features(void)
philemonf 5:6d0cdd715100 28 {
philemonf 5:6d0cdd715100 29 if (mdm) {
philemonf 5:6d0cdd715100 30 delete mdm;
philemonf 5:6d0cdd715100 31 }
philemonf 5:6d0cdd715100 32 }
philemonf 5:6d0cdd715100 33
philemonf 5:6d0cdd715100 34 #define PREC_UNSATISFIED (!sms || !(sms->phone_num) || !(sms->msg_buf) || !mdm)
philemonf 5:6d0cdd715100 35 int send_sms(struct sms_t *sms)
philemonf 5:6d0cdd715100 36 {
philemonf 5:6d0cdd715100 37
philemonf 5:6d0cdd715100 38 if (PREC_UNSATISFIED) {
philemonf 5:6d0cdd715100 39 return 0;
aroulin 4:f1708f6ec905 40 }
philemonf 5:6d0cdd715100 41
philemonf 5:6d0cdd715100 42 return mdm->smsSend(sms->phone_num, sms->msg_buf);
philemonf 5:6d0cdd715100 43 }
philemonf 5:6d0cdd715100 44
philemonf 5:6d0cdd715100 45
philemonf 5:6d0cdd715100 46 int read_sms(struct sms_t *sms)
philemonf 5:6d0cdd715100 47 {
philemonf 5:6d0cdd715100 48 if (PREC_UNSATISFIED) {
philemonf 5:6d0cdd715100 49 return 0;
philemonf 5:6d0cdd715100 50 }
philemonf 5:6d0cdd715100 51
philemonf 5:6d0cdd715100 52 int ix[1];
philemonf 5:6d0cdd715100 53 int numReceivedSMS = mdm.smsList("REC UNREAD", ix, 1);
philemonf 5:6d0cdd715100 54
philemonf 5:6d0cdd715100 55 if (numReceivedSMS > 1 && mdm.smsRead(ix[0], sms->phone_num, sms->msg_buf, sizeof(sms->msg_buf)) {
philemonf 5:6d0cdd715100 56 mdm.smsDelete(ix[0]);
philemonf 5:6d0cdd715100 57 return 1;
philemonf 5:6d0cdd715100 58 }
philemonf 5:6d0cdd715100 59
philemonf 5:6d0cdd715100 60 return 0;
aroulin 4:f1708f6ec905 61 }