Lib SIM5320 avec SMS

Dependents:   0-sim5320e-L432KC-relais-0

sim800l.h

Committer:
schnf30
Date:
2022-05-01
Revision:
0:d63231e47571

File content as of revision 0:d63231e47571:

#ifndef _sim800l_
#define _sim800l_
#include "mbed.h"
#include "MySerial.h"
#ifndef maxdata
#define maxdata 99   // taille des phrasers de dialogues.
#endif
#define timeoutdefaut 1
#define timeoutsendsms 60
#define timeoutreadsms 5
#define timewaitCallready 10
#define timewaitSmsready 60
#define timewaitSmsallclear 25
#define timewaitCCID 2

extern MySerial pc;

class Sim800l
{
public:
    /*
    * Constructor
    *
    * @param tx mbed pin to use for tx line of Serial interface
    * @param rx mbed pin to use for rx line of Serial interface
    * @param reset reset pin of the wifi module ()
    */
    Sim800l(PinName tx, PinName rx, PinName resetpin, int baudrate=9600);
    bool init();
    bool smsready(void);
    bool sendsms(const char *phonenumber,const char *data);
    bool readsms(int index);
    bool smsclearall(void);
    int IndexSmsRecu(void);
    char *readtextesms();

protected:
    RawSerial serial;
    DigitalOut reset;
    /*    char *_DataTmp; // tableau de donnees pour stocker pendant reception
        char *_Data; // tableau de donnees lorsque toutes les donnees sont recues
        char *_DataSms; // tableau de donnees lorsque toutes les donnees sont recues
        char *_Phrase; // pour convertir en phrase avant envoi
        */

    char _DataTmp[maxdata + 1]; // stocker pendant reception sur rxd en evenement
    char _Data[maxdata + 1]; // stocke les donnees lorsqu'une phrase complete est recu 
    char _DataSms[maxdata + 1]; // stocke donnee lorsquun sms est recu
    char _Phrase[maxdata + 1]; // phrase temporaire pour convertir en phrase avant envoi fprintf

    volatile int _DataPtr = 0; // position de stockage de la prochaine donnee a recevoir
    volatile bool _DataReady = false;  // des donnees complete ont ete recus
    volatile bool _SmsReady = false;  // un sms est recu
    volatile int _IndexSms;   // contient lindex du sms
    Timeout _timeout; // permet deviter blocage en attente
    volatile bool FinTimeOut;  // 
    
    bool dataready(void);  // renvoi letat xe _dataready
    char * read(void);
    void receive();
    void Ftimeout();
    void SetTimeout(float delay);
// attente r eponse dans *reponse
    bool waitreponse(const char *reponse,float timeout);
// envoi commande et attend reponse
    bool writecmdandwaitreponse(const char *data, const char *reponse,float timeout);
// attente reponse dans *reponse
    bool waitsmsreponse(const char *reponse,float timeout);
};
#endif