Prototyping the Adaptable Emergency System on an C027 board.

Dependencies:   C027_Support mbed

Fork of c027_prototyping by Philémon Favrod

sms_lib.cpp

Committer:
philemonf
Date:
2014-09-30
Revision:
5:6d0cdd715100
Parent:
4:f1708f6ec905
Child:
6:58d48b90c9f7

File content as of revision 5:6d0cdd715100:

#include "MDM.h"

#include "sms_lib.h"

DigitalOut myled(LED);

static MDMSerial *mdm;
int init_sms_features(void)
{
    mdm = new MDMSerial;
    
    static const char *SIMPIN = "5554";
    
    MDMParser::DevStatus devStatus = {};
    MDMParser::NetStatus netStatus = {};
    bool mdmOk = mdm.init(SIMPIN, &devStatus);
    mdm.dumpDevStatus(&devStatus);
    
    if (mdmOk) {
        mdmOk &= mdm.registerNet(&netStatus);
        mdm.dumpNetStatus(&netStatus);
    }
    
    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;
}