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:
6:58d48b90c9f7
Parent:
5:6d0cdd715100
Child:
10:b9ca12e9bb34

File content as of revision 6:58d48b90c9f7:

#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;
    }
}

int send_sms(struct sms_data_t *sms)
{
    
    if (!sms || !(sms->phone_num) || !(sms->msg_buf) || !mdm) {
        return 0;
    }
    
    return mdm->smsSend(sms->phone_num, sms->msg_buf);
}


int read_sms(struct sms_data_t *sms)
{
    if (!sms || !(sms->phone_num) || !(sms->msg_buf) || !mdm) {
        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;
}