Init
Fork of ESP8266Interface by
Diff: ESP8266/ESP8266.cpp
- Revision:
- 30:c035696b9397
- Parent:
- 29:939372104145
- Child:
- 32:cf071dc33972
--- a/ESP8266/ESP8266.cpp Tue Apr 28 20:17:51 2015 +0000 +++ b/ESP8266/ESP8266.cpp Wed Apr 29 22:43:03 2015 +0000 @@ -39,7 +39,8 @@ #define INFO(x, ...) #endif -#define MAX_TRY_JOIN 3 +#define ESP_MAX_TRY_JOIN 3 +#define ESP_MAXID 4 // the largest possible ID Value (max num of sockets possible) extern Serial pc; @@ -97,6 +98,52 @@ return true; } +bool ESP8266::start(bool type,char* ip, int port, int id) +{ + // Error Check + if(id > ESP_MAXID) { + ERR("startUDPMulti: max id is: %d, id given is %d",ESP_MAXID,id); + return false; + } + // Single Connection Mode + if(id < 0) { + DBG("Start Single Connection Mode"); + char portstr[5]; + char idstr[2]; + bool check [3] = {0}; + sprintf(idstr,"%d",id); + sprintf(portstr, "%d", port); + switch(type) { + case ESP_UDP_TYPE : //UDP + check[0] = sendCommand(( "AT+CIPSTART=" + (string) idstr + ",\"UDP\",\"" + (string) ip + "\"," + (string) portstr ).c_str(), "OK", NULL, 10000); + break; + case ESP_TCP_TYPE : //TCP + check[0] = sendCommand(( "AT+CIPSTART=" + (string) idstr + ",\"TCP\",\"" + (string) ip + "\"," + (string) portstr ).c_str(), "OK", NULL, 10000); + break; + default: + ERR("Default hit for starting connection, this shouldnt be possible!!"); + break; + } + check[1] = sendCommand("AT+CIPMODE=1", "OK", NULL, 1000);// go into transparent mode + check[2] = sendCommand("AT+CIPSEND", ">", NULL, 1000);// go into transparent mode + // check that all commands were sucessful + if(check[0] && check[1] && check[2]) { + pc.printf("Data Mode\r\n"); + state.cmdMode = false; + return true; + } else { + DBG("\r\nstartUDPTransparent Failed for ip:%s, port:%d\r\n",ip,port); + return false; + } + } + // Multi Connection Mode + else { + //TODO: impliment Multi Connection Mode + ERR("Not currently Supported!"); + return false; + } +} + bool ESP8266::startUDP(char* ip, int port) { char portstr[5]; @@ -105,7 +152,7 @@ sendCommand("AT+CIPMODE=1", "OK", NULL, 1000);// go into transparent mode sendCommand("AT+CIPSEND", ">", NULL, 1000);// go into transparent mode - printf("Data Mode\r\n"); + pc.printf("Data Mode\r\n"); state.cmdMode = false; return true; @@ -184,6 +231,7 @@ return true; } else { // dns needed, not currently available + ERR("gethostbyname(): DNS Not currently available, only use IP Addresses!"); return false; } }