wifisp1

Committer:
schnf30
Date:
Sun Jun 06 12:19:53 2021 +0000
Revision:
1:227c9c991c1b
Parent:
0:5339903aacbc
a

Who changed what in which revision?

UserRevisionLine numberNew contents of line
schnf30 0:5339903aacbc 1 #include "mbed.h"
schnf30 0:5339903aacbc 2 #include "wifiesp8266.h"
schnf30 1:227c9c991c1b 3 WifiEsp8266::WifiEsp8266(PinName Txd, PinName Rxd) : RawSerial(Txd,Rxd)
schnf30 0:5339903aacbc 4 {
schnf30 0:5339903aacbc 5 baud(Baud);
schnf30 0:5339903aacbc 6 _DataPtr = 0;
schnf30 0:5339903aacbc 7 _DataReady = false;
schnf30 0:5339903aacbc 8 attach(this,&WifiEsp8266::receive, RawSerial::RxIrq);
schnf30 0:5339903aacbc 9 }
schnf30 0:5339903aacbc 10 char * WifiEsp8266::read(void)
schnf30 0:5339903aacbc 11 {
schnf30 0:5339903aacbc 12 _DataReady = false;
schnf30 0:5339903aacbc 13 return _Data;
schnf30 0:5339903aacbc 14 }
schnf30 0:5339903aacbc 15
schnf30 0:5339903aacbc 16 bool WifiEsp8266::dataready(void)
schnf30 0:5339903aacbc 17 {
schnf30 0:5339903aacbc 18 return _DataReady;
schnf30 0:5339903aacbc 19 }
schnf30 0:5339903aacbc 20
schnf30 0:5339903aacbc 21 // reception phrase de type '$' "....' "\r\n"
schnf30 0:5339903aacbc 22 void WifiEsp8266::receive(void)
schnf30 0:5339903aacbc 23 {
schnf30 0:5339903aacbc 24 bool _PhraseComplete = false;
schnf30 0:5339903aacbc 25 char inChar;
schnf30 0:5339903aacbc 26 while (readable() && (_PhraseComplete == false)) {
schnf30 0:5339903aacbc 27 inChar = getc();
schnf30 0:5339903aacbc 28 switch (inChar) {
schnf30 0:5339903aacbc 29 case '$' :
schnf30 0:5339903aacbc 30 _DataPtr = 0;
schnf30 0:5339903aacbc 31 _DataTmp[_DataPtr++] = inChar;
schnf30 0:5339903aacbc 32 _DataTmp[_DataPtr] = 0;
schnf30 0:5339903aacbc 33 break;
schnf30 0:5339903aacbc 34 case '\n' :
schnf30 0:5339903aacbc 35 if (_DataPtr > 1) {
schnf30 0:5339903aacbc 36 strcpy(_Data,_DataTmp);
schnf30 0:5339903aacbc 37 _PhraseComplete = true;
schnf30 0:5339903aacbc 38 }
schnf30 0:5339903aacbc 39 _DataTmp[0] = 0;
schnf30 0:5339903aacbc 40 _DataPtr = 0;
schnf30 0:5339903aacbc 41 break;
schnf30 0:5339903aacbc 42 case '\r' :
schnf30 0:5339903aacbc 43 break;
schnf30 0:5339903aacbc 44 default :
schnf30 0:5339903aacbc 45 if (_DataPtr > 0) {
schnf30 0:5339903aacbc 46 _DataTmp[_DataPtr++] = inChar;
schnf30 0:5339903aacbc 47 _DataTmp[_DataPtr] = 0;
schnf30 0:5339903aacbc 48 }
schnf30 0:5339903aacbc 49 }
schnf30 0:5339903aacbc 50 if (_DataPtr >= maxdata) { // si phrase trop longue vide phrase
schnf30 0:5339903aacbc 51 _DataTmp[0] = 0;
schnf30 0:5339903aacbc 52 _DataPtr = 0;
schnf30 0:5339903aacbc 53 _PhraseComplete = false;
schnf30 0:5339903aacbc 54 }
schnf30 0:5339903aacbc 55 }
schnf30 0:5339903aacbc 56 _DataReady = _PhraseComplete;
schnf30 0:5339903aacbc 57 }