wifisp1

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers wifiesp8266.cpp Source File

wifiesp8266.cpp

00001 #include "mbed.h"
00002 #include "wifiesp8266.h"
00003 WifiEsp8266::WifiEsp8266(PinName Txd, PinName Rxd) : RawSerial(Txd,Rxd)
00004 {
00005     baud(Baud);
00006     _DataPtr = 0; 
00007     _DataReady = false;
00008     attach(this,&WifiEsp8266::receive, RawSerial::RxIrq);
00009 }
00010 char * WifiEsp8266::read(void)
00011 {
00012    _DataReady = false;
00013     return _Data;
00014 }    
00015 
00016 bool WifiEsp8266::dataready(void)
00017 {
00018     return _DataReady;
00019 }    
00020     
00021 // reception phrase de type '$' "....' "\r\n"
00022 void WifiEsp8266::receive(void)
00023 {
00024     bool _PhraseComplete = false;
00025     char inChar;   
00026     while (readable() && (_PhraseComplete == false)) {
00027         inChar = getc();
00028         switch (inChar) {
00029             case '$' :
00030                 _DataPtr = 0;
00031                 _DataTmp[_DataPtr++] = inChar;
00032                 _DataTmp[_DataPtr] = 0;
00033                 break;
00034             case '\n' :
00035                 if (_DataPtr > 1) {
00036                     strcpy(_Data,_DataTmp);
00037                     _PhraseComplete = true;
00038                 }
00039                 _DataTmp[0] = 0;
00040                 _DataPtr = 0;
00041                 break;
00042             case '\r' :
00043                 break;
00044             default :
00045                 if (_DataPtr > 0) {
00046                     _DataTmp[_DataPtr++] = inChar;
00047                     _DataTmp[_DataPtr] = 0;
00048                 }
00049         }
00050         if (_DataPtr >= maxdata) {  // si phrase trop longue vide phrase
00051             _DataTmp[0] = 0;
00052             _DataPtr = 0;
00053             _PhraseComplete = false;
00054         }
00055     }
00056     _DataReady = _PhraseComplete;
00057 }