See: http://mbed.org/users/okini3939/notebook/wifi_rpc/

Dependencies:   GSwifiInterface mbed-rpc mbed

Revision:
0:74134a0b1de1
Child:
1:61f6e7d6b8d1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon May 12 03:04:13 2014 +0000
@@ -0,0 +1,80 @@
+/*
+ * Please modify "GSwifi_conf.h"
+ * ----------
+ * //#define CFG_ENABLE_RTOS
+ * #define CFG_ENABLE_HTTPD
+ * #define CFG_ENABLE_WEBSOCKET
+ * //#define CFG_ENABLE_SMTP
+ * ----------
+ */
+
+#include "mbed.h"
+#include "mbed_rpc.h"
+#include "GSwifi.h"
+ 
+#define SEC  GSwifi::SEC_OPEN
+#define SSID "MBED"
+#define PASS "1234567890"
+ 
+#define WS_SERVER "sockets.mbed.org"
+#define WS_URI    "/ws/username/rw"
+ 
+#ifndef CFG_ENABLE_WEBSOCKET
+#error Please enable "#define CFG_ENABLE_WEBSOCKET" in "GSwifi_conf.h"
+#endif
+
+DigitalOut led1(LED1), led2(LED2);
+Serial pc(USBTX, USBRX);
+GSwifi gs(p13, p14, p12, P0_22, p20, NC, 115200); // mbed LPC1768
+LocalFileSystem local("local");
+
+void ws_server (int cid) {
+    int i;
+    char buf[40], outbuf[40];
+
+    led2 = 1;
+    i = gs.recv(cid, buf, sizeof(buf));
+    if (i < 0) return;
+    buf[i] = 0;
+
+    RPC::call(buf, outbuf);
+    printf("RPC %d '%s' '%s'\r\n", cid, buf, outbuf);
+
+    gs.wsSend(cid, outbuf, strlen(outbuf));
+    led2 = 0;
+}
+ 
+int main () {
+
+    pc.baud(115200);
+
+    gs.setAddress("192.168.1.1", "255.255.255.0", "192.168.1.1", "192.168.1.1", "www.mbed");
+    gs.setSsid(SEC, SSID, PASS);
+    if (gs.limitedap()) {
+        pc.printf("error: limitedap\r\n");
+        return -1;
+    }
+
+    RPC::add_rpc_class<RpcDigitalIn>();
+    RPC::add_rpc_class<RpcDigitalOut>();
+    RPC::add_rpc_class<RpcDigitalInOut>();
+    RPC::add_rpc_class<RpcPwmOut>();
+    RPC::add_rpc_class<RpcAnalogIn>();
+
+    gs.httpd(80);
+    gs.httpdAttach("/ws/", &ws_server, 1);
+    gs.httpdAttach("/", "/local/");
+    printf("httpd ready\r\n");
+    led1 = 1;
+
+    for (;;) {
+        gs.poll();
+
+        if (pc.readable()) {
+            if (pc.getc() == 'q') break;
+        }
+    }
+    gs.dissociate();
+    led1 = 0;
+    return 0;
+}