Prototyping the Adaptable Emergency System on an C027 board.
Dependencies: C027_Support mbed
Fork of c027_prototyping by
sms_lib.cpp@5:6d0cdd715100, 2014-09-30 (annotated)
- 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?
User | Revision | Line number | New 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 | } |