private fork
Fork of GSwifiInterface by
Diff: GSwifi/GSwifi_util.cpp
- Revision:
- 11:71d67fea5ace
- Parent:
- 8:64184a968e3b
- Child:
- 12:057089026a20
diff -r 7d8134e7df01 -r 71d67fea5ace GSwifi/GSwifi_util.cpp --- a/GSwifi/GSwifi_util.cpp Thu Oct 31 08:34:45 2013 +0000 +++ b/GSwifi/GSwifi_util.cpp Fri Nov 15 04:20:14 2013 +0000 @@ -87,6 +87,8 @@ int GSwifi::ntpdate (char *host, int sec) { char ip[17]; + if (!isConnected() && _state.status == STAT_READY) return -1; + if (getHostByName(host, ip)) return -1; return cmdNTIMESYNC(true, ip, sec); } @@ -96,5 +98,80 @@ } int GSwifi::provisioning (char *user, char *pass) { + + if (!isConnected() && _state.status == STAT_READY) return -1; + return cmdWEBPROV(user, pass); } + +int GSwifi::standby (int msec) { + switch (_state.status) { + case STAT_READY: + cmdNCLOSEALL(); + for (int i = 0; i < 16; i ++) { + _con[i].connected = false; + } + cmdSTORENWCONN(); +// cmdWRXACTIVE(false); + break; + case STAT_WAKEUP: + if (cmdE(false)) return -1; + if (_flow) { + cmdR(true); + } + break; + default: + return -1; + } + + _state.status = STAT_STANDBY; + return cmdPSSTBY(msec, 0); +} + + +int GSwifi::deepSleep () { + if (_state.status != STAT_READY) return -1; + + _state.status = STAT_DEEPSLEEP; + return cmdPSDPSLEEP(); // go deep sleep +} + +int GSwifi::wakeup () { + int r; + + if (_state.status == STAT_STANDBY) { + Timer timeout; + setAlarm(true); + timeout.start(); + while (timeout.read() < CFG_TIMEOUT) { + if (_state.status == STAT_WAKEUP) break; + } + timeout.stop(); + setAlarm(false); + } + + switch (_state.status) { + case STAT_WAKEUP: + if (cmdE(false)) return -1; + if (_flow) { + cmdR(true); + } + cmdBDATA(true); + r = cmdRESTORENWCONN(); + if (!r) { + wait_ms(100); +// cmdWRXACTIVE(true); + _state.status = STAT_READY; + } + return r; + case STAT_DEEPSLEEP: + r = cmdAT(); + if (!r) { + _state.status = STAT_READY; + } + return r; + default: + break; + } + return -1; +}