wifisp2

Dependents:  

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