Init

Fork of ESP8266Interface by ESP8266

Revision:
44:3a7b6083210b
Parent:
35:22d30e936e4c
Child:
45:c180905b5b79
--- a/ESP8266/ESP8266.cpp	Fri May 01 18:29:38 2015 +0000
+++ b/ESP8266/ESP8266.cpp	Wed Jun 03 18:21:19 2015 +0000
@@ -23,7 +23,7 @@
 #include <algorithm>
 
 //Debug is disabled by default
-#ifdef DEBUG
+#if 1
 #define DBG(x, ...)  printf("[ESP8266 : DBG]"x"\r\n", ##__VA_ARGS__);
 #define WARN(x, ...) printf("[ESP8266 : WARN]"x"\r\n", ##__VA_ARGS__);
 #define ERR(x, ...)  printf("[ESP8266 : ERR]"x"\r\n", ##__VA_ARGS__);
@@ -162,20 +162,49 @@
     }
 }
 
-bool ESP8266::startUDP(char* ip, int port)
+bool ESP8266::startUDP(char* ip, int port, int id, int length)
 {
     char portstr[5];
+    char idstr[1];
+    char lenstr[2];
+    
     sprintf(portstr, "%d", port);
-    sendCommand(( "AT+CIPSTART=\"UDP\",\"" + (string) ip + "\"," + (string) portstr ).c_str(), "OK", NULL, 10000);
-
-    sendCommand("AT+CIPMODE=1", "OK", NULL, 1000);// go into transparent mode
-    sendCommand("AT+CIPSEND", ">", NULL, 1000);// go into transparent mode
+    sprintf(idstr, "%d", id);
+    sprintf(lenstr, "%d", length);
+    
+    sendCommand("AT+CIPMUX=1", "OK", NULL, 1000);
+    sendCommand(( "AT+CIPSTART=" + string(idstr) + ",\"UDP\",\"" + (string) ip + "\"," + (string) portstr + ",1112,0").c_str(), "OK", NULL, 10000);
+    sendCommand(("AT+CIPSEND=" + (string)idstr + "," +  (string)lenstr).c_str(), ">", NULL, 1000);// go into transparent mode
     DBG("Data Mode\r\n");
     state.cmdMode = false;
 
     return true;
 }
 
+bool ESP8266::startTCPServer(int port)
+{
+    bool command_results[3];
+    command_results[0]=sendCommand("AT+CWMODE=3", "OK", NULL, 1000);
+    command_results[1]=sendCommand("AT+CIPMUX=1", "OK", NULL, 1000);
+    if(port == 333){
+        command_results[2]=sendCommand("AT+CIPSERVER=1", "OK", NULL, 1000);
+    }
+    else{
+        char portstr[5];
+        sprintf(portstr, "%d", port);
+        command_results[2]=sendCommand(("AT+CIPSERVER=1," + (string)portstr).c_str(), "OK", NULL, 1000);
+    }
+    //sendCommand("AT+CIFSR", "OK", NULL, 1000);
+    DBG("Data Mode\r\n");
+    state.cmdMode = false;
+    if (command_results[0] and command_results[1] and command_results[2]){
+        return true;
+    }
+    else{
+        return false;
+    }
+}
+
 bool ESP8266::close()
 {
     send("+++",3);