wifisp2

Dependents:  

wifiesp8266.cpp

Committer:
schnf30
Date:
2021-06-06
Revision:
1:933bf1dbce6d
Parent:
0:5339903aacbc

File content as of revision 1:933bf1dbce6d:

#include "mbed.h"
#include "wifiesp8266.h"
WifiEsp8266::WifiEsp8266(PinName Txd, PinName Rxd) : RawSerial(Txd,Rxd)
{
    baud(Baud);
    _DataPtr = 0;
    _DataReady = false;
    attach(this,&WifiEsp8266::receive, RawSerial::RxIrq);
}

char * WifiEsp8266::read(void)
{
    _DataReady = false;
    return _Data;
}

bool WifiEsp8266::dataready(void)
{
    return _DataReady;
}

// reception phrase de type '$' "....' "\r\n"
void WifiEsp8266::receive(void)
{
    bool _PhraseComplete = false;
    char inChar;
    while (readable() && (_PhraseComplete == false)) {
        inChar = getc();
        switch (inChar) {
            case '$' :
                _DataPtr = 0;
                _DataTmp[_DataPtr++] = inChar;
                _DataTmp[_DataPtr] = 0;
                break;
            case '\n' :
                if (_DataPtr > 1) {
                    strcpy(_Data,_DataTmp);
                    _PhraseComplete = true;
                }
                _DataTmp[0] = 0;
                _DataPtr = 0;
                break;
            case '\r' :
                break;
            default :
                if (_DataPtr > 0) {
                    _DataTmp[_DataPtr++] = inChar;
                    _DataTmp[_DataPtr] = 0;
                }
        }
        if (_DataPtr >= maxdata) {  // si phrase trop longue vide phrase
            _DataTmp[0] = 0;
            _DataPtr = 0;
            _PhraseComplete = false;
        }
    }
    _DataReady = _PhraseComplete;
}