Improve Wifly Interface
Fork of WiflyInterface by
Diff: Wifly/Wifly.cpp
- Revision:
- 10:131675c17372
- Parent:
- 7:3152fcc74390
- Parent:
- 4:0bcec6272784
- Child:
- 11:fc3d86645d23
diff -r 3152fcc74390 -r 131675c17372 Wifly/Wifly.cpp --- a/Wifly/Wifly.cpp Fri Nov 08 21:27:08 2013 +0000 +++ b/Wifly/Wifly.cpp Tue Jun 03 18:41:15 2014 +0000 @@ -22,7 +22,7 @@ #include <algorithm> //Debug is disabled by default -#if (1 && defined(TARGET_LPC1768)) +#if (defined(DEBUG)) #define DBG(x, ...) std::printf("[Wifly : DBG]"x"\r\n", ##__VA_ARGS__); #define WARN(x, ...) std::printf("[Wifly : WARN]"x"\r\n", ##__VA_ARGS__); #define ERR(x, ...) std::printf("[Wifly : ERR]"x"\r\n", ##__VA_ARGS__); @@ -32,7 +32,7 @@ #define ERR(x, ...) #endif -#if TARGET_LPC1768 +#if defined(DEBUG) #define INFO(x, ...) printf("[Wifly : INFO]"x"\r\n", ##__VA_ARGS__); #else #define INFO(x, ...) @@ -70,12 +70,21 @@ char cmd[20]; for (int i= 0; i < MAX_TRY_JOIN; i++) { + + // no auto join + if (!sendCommand("set w j 0\r", "AOK")) + continue; + + //no echo + if (!sendCommand("set u m 1\r", "AOK")) + continue; + // set time - if (!sendCommand("set c t 20\r", "AOK")) + if (!sendCommand("set c t 30\r", "AOK")) continue; // set size - if (!sendCommand("set c s 128\r", "AOK")) + if (!sendCommand("set c s 1024\r", "AOK")) continue; // red led on when tcp connection active @@ -93,13 +102,9 @@ // tcp retry if (!sendCommand("set i f 0x7\r", "AOK")) continue; - - //no echo - if (!sendCommand("set u m 1\r", "AOK")) - continue; - - // no auto join - if (!sendCommand("set w j 0\r", "AOK")) + + // set dns server + if (!sendCommand("set d n rn.microchip.com\r", "AOK")) continue; //dhcp @@ -158,6 +163,9 @@ continue; } + if (!sendCommand("save\r", "Stor")) + continue; + exit(); state.associated = true; @@ -184,11 +192,9 @@ break; case UDP: // set ip flags: udp auto pairing enabled - if (!sendCommand("set i f 0x40\r", "AOK")) - return false; if (!sendCommand("set i h 0.0.0.0\r", "AOK")) return false; - if (!sendCommand("set i r 0\r", "AOK")) + if (!sendCommand("set i f 0x40\r", "AOK")) return false; break; } @@ -214,27 +220,23 @@ char rcv[20]; char cmd[20]; - // get ip from host and set host - if (gethostbyname(host, rcv)) { - sprintf(cmd, "set i h %s\r", rcv); - if (!sendCommand(cmd, "AOK")) - return false; - } else { - return false; + // try to open + sprintf(cmd, "open %s %d\r", host, port); + if (sendCommand(cmd, "OPEN", NULL, 10000)) { + state.tcp = true; + state.cmd_mode = false; + return true; } - // set port - sprintf(cmd, "set i r %d\r", port); - if (!sendCommand(cmd, "AOK")) - return false; - - // open - if (sendCommand("open\r", NULL, rcv)) { + // if failed, retry and parse the response + if (sendCommand(cmd, NULL, rcv, 5000)) { if (strstr(rcv, "OPEN") == NULL) { if (strstr(rcv, "Connected") != NULL) { + wait(0.25); if (!sendCommand("close\r", "CLOS")) return false; - if (!sendCommand("open\r", "OPEN")) + wait(0.25); + if (!sendCommand(cmd, "OPEN", NULL, 10000)) return false; } else { return false; @@ -243,7 +245,7 @@ } else { return false; } - + state.tcp = true; state.cmd_mode = false; @@ -322,6 +324,7 @@ if (send("$$$", 3, "CMD") == -1 && send("\r",1,">") != true) { ERR("cannot enter in cmd mode\r\n"); + exit(); return false; } state.cmd_mode = true; @@ -333,11 +336,11 @@ // if already disconnected, return if (!state.associated) return true; - + if (!sendCommand("leave\r", "DeAuth")) return false; exit(); - + state.associated = false; return true; @@ -357,17 +360,29 @@ wait(0.2); } +bool Wifly::reboot() +{ + // if already in cmd mode, return + if (!sendCommand("reboot\r")) + return false; + + wait(0.3); + + state.cmd_mode = false; + return true; +} + bool Wifly::close() { // if not connected, return if (!state.tcp) return true; - + wait(0.25); if (!sendCommand("close\r", "CLOS")) return false; exit(); - + state.tcp = false; return true; }