wifisp2
Diff: wifiesp8266.cpp
- Revision:
- 0:5339903aacbc
- Child:
- 1:933bf1dbce6d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wifiesp8266.cpp Sun May 23 13:26:59 2021 +0000 @@ -0,0 +1,67 @@ +#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); +}*/ + +WifiEsp8266::WifiEsp8266(PinName Txd, PinName Rxd, PinName En) : RawSerial(Txd,Rxd), _En(En) +{ + baud(Baud); + _En = 1; + _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; +} \ No newline at end of file