Init
Fork of ESP8266Interface by
Diff: ESP8266/ESP8266.cpp
- Revision:
- 44:3a7b6083210b
- Parent:
- 35:22d30e936e4c
- Child:
- 45:c180905b5b79
diff -r 22d30e936e4c -r 3a7b6083210b ESP8266/ESP8266.cpp --- 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);