GSwifiInterface library (interface for GainSpan Wi-Fi GS1011 modules) Please see https://mbed.org/users/gsfan/notebook/GSwifiInterface/

Dependents:   GSwifiInterface_HelloWorld GSwifiInterface_HelloServo GSwifiInterface_UDPEchoServer GSwifiInterface_UDPEchoClient ... more

Fork of WiflyInterface by mbed official

GainSpan Wi-Fi library

The GS1011/GS2100 is an ultra low power 802.11b wireless module from GainSpan.

mbed RTOS supported.

/media/uploads/gsfan/gs_im_002.jpg /media/uploads/gsfan/gs1011m_2.jpg

ゲインスパン Wi-Fi モジュール ライブラリ

ゲインスパン社の低電力 Wi-Fiモジュール(無線LAN) GS1011/GS2100 シリーズ用のライブラリです。

mbed RTOS に対応しています。(mbed2.0)

Revision:
11:71d67fea5ace
Parent:
8:64184a968e3b
Child:
12:057089026a20
--- 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;
+}