Added monitoring feature of ESP8266's UART

Dependents:   ESP8266_W7500_Example DualNetworkInterface-Basic

Fork of ESP8266Interface by ESP8266

Revision:
17:d11fa4c3ac65
Parent:
16:3f0efaa57a12
Child:
18:60422852e99c
--- a/ESP8266/ESP8266.cpp	Mon Dec 01 06:22:00 2014 +0000
+++ b/ESP8266/ESP8266.cpp	Mon Dec 01 08:02:38 2014 +0000
@@ -92,18 +92,20 @@
 }
 
 bool ESP8266::startUDP(char* ip, int port){
-    char* portstr = "";
+    char portstr[5];
     sprintf(portstr, "%d", port);
+    sendCommand(( "AT+CIPSTART=\"UDP\",\"" + (string) ip + "\",\"" + (string) portstr + "\"").c_str(), "OK", NULL, 10000);
     
-    sendCommand(( "AT+CIPSTART=\"UDP\",\"" + (string) ip + "\"" + (string) portstr + "\"").c_str(), "OK", NULL, 10000);
-    
-    sendCommand("AT+CIPSEND", "OK", NULL, 1000);// go into transparent mode 
+    sendCommand("AT+CIPMODE=1", "OK", NULL, 1000);// go into transparent mode 
+    sendCommand("AT+CIPSEND", ">", NULL, 1000);// go into transparent mode 
 
     return true;
 }
 
 bool ESP8266::close()
 {
+    send("+++",3);
+    wait(1);
     sendCommand("AT+CIPCLOSE","OK", NULL, 10000);
     return true;
 }
@@ -171,7 +173,7 @@
     while (wifi.readable()){
         c=wifi.getc();
         buf_ESP8266.queue(c);
-        //pc.printf("%c",c);
+        pc.printf("%c",c);
     }
 }
 
@@ -203,7 +205,7 @@
 
 int ESP8266::putc(char c)
 {
-    while (!wifi.writeable());
+    while (!wifi.writeable() || wifi.readable());
     return wifi.putc(c);
 }
 
@@ -215,10 +217,8 @@
 int ESP8266::send(const char * buf, int len)
 {
     const char* bufptr=buf;
-    while(!wifi.writeable()){}
     for(int i=0; i<len; i++){
-        wifi.putc((int)*bufptr++);
-        while(!wifi.writeable()){}
+        putc((int)*bufptr++);
     }return true;
 }
 
@@ -230,52 +230,49 @@
     Timer tmr;
     int result = 0;
 
-    DBG("will send: %s\r\n",cmd);
+    //pc.printf("will send: %s\r\n",cmd);
 
-    attach_rx(false);
+    attach_rx(true);
 
     //We flush the buffer
-    while (wifi.readable())
-        wifi.getc();
+    while (readable())
+        getc();
     
-    while(!wifi.writeable()){};
-
     if (!ACK || !strcmp(ACK, "NO")) {
-        for (int i = 0; i < sizeof(cmd); i++){
+        for (int i = 0; i < strlen(cmd); i++){
             result = (putc(cmd[i]) == cmd[i]) ? result + 1 : result;
-            while(!wifi.writeable()){};
+            wait(.005);
         }
         putc(13); //CR
-        while(!wifi.writeable()){};
+        wait(.005);
         putc(10); //LF
 
     } else {
         //We flush the buffer
-        while (wifi.readable())
-            wifi.getc();
+        while (readable())
+            getc();
 
         tmr.start();
-        for (int i = 0; i < sizeof(cmd); i++){
+        for (int i = 0; i < strlen(cmd); i++){
             result = (putc(cmd[i]) == cmd[i]) ? result + 1 : result;
-            while(!wifi.writeable()){};
+            wait(.005);
         }
         putc(13); //CR
-        while(!wifi.writeable()){};
+        wait(.005);
         putc(10); //LF
 
         while (1) {
             if (tmr.read_ms() > timeout) {
                 //We flush the buffer
-                while (wifi.readable())
-                    wifi.getc();
+                while (readable())
+                    getc();
 
                 DBG("check: %s\r\n", checking.c_str());
 
                 attach_rx(true);
                 return -1;
-            } else if (wifi.readable()) {
-                read = wifi.getc();
-                pc.putc(read);//debug
+            } else if (readable()) {
+                read = getc();
                 if ( read != '\r' && read != '\n') {
                     checking += read;
                     found = checking.find(ACK);
@@ -283,8 +280,8 @@
                         wait(0.01);
 
                         //We flush the buffer
-                        while (wifi.readable())
-                            wifi.getc();
+                        while (readable())
+                            getc();
 
                         break;
                     }
@@ -320,9 +317,9 @@
 
                     break;
                 }
-                if (wifi.readable()) {
+                if (readable()) {
                     tmr.start();
-                    read = wifi.getc();
+                    read = getc();
 
                     // we drop \r and \n
                     if ( read != '\r' && read != '\n') {
@@ -335,8 +332,8 @@
     }
 
     //We flush the buffer
-    while (wifi.readable())
-        wifi.getc();
+    while (readable())
+        getc();
 
     attach_rx(true);
     DBG("result: %d\r\n", result)