wifisp1

Revision:
0:5339903aacbc
Child:
1:227c9c991c1b
--- /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