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

Dependencies:   GSwifiInterface mbed-rpc mbed

Committer:
okini3939
Date:
Mon May 12 03:04:13 2014 +0000
Revision:
0:74134a0b1de1
Child:
1:61f6e7d6b8d1
1st build

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okini3939 0:74134a0b1de1 1 /*
okini3939 0:74134a0b1de1 2 * Please modify "GSwifi_conf.h"
okini3939 0:74134a0b1de1 3 * ----------
okini3939 0:74134a0b1de1 4 * //#define CFG_ENABLE_RTOS
okini3939 0:74134a0b1de1 5 * #define CFG_ENABLE_HTTPD
okini3939 0:74134a0b1de1 6 * #define CFG_ENABLE_WEBSOCKET
okini3939 0:74134a0b1de1 7 * //#define CFG_ENABLE_SMTP
okini3939 0:74134a0b1de1 8 * ----------
okini3939 0:74134a0b1de1 9 */
okini3939 0:74134a0b1de1 10
okini3939 0:74134a0b1de1 11 #include "mbed.h"
okini3939 0:74134a0b1de1 12 #include "mbed_rpc.h"
okini3939 0:74134a0b1de1 13 #include "GSwifi.h"
okini3939 0:74134a0b1de1 14
okini3939 0:74134a0b1de1 15 #define SEC GSwifi::SEC_OPEN
okini3939 0:74134a0b1de1 16 #define SSID "MBED"
okini3939 0:74134a0b1de1 17 #define PASS "1234567890"
okini3939 0:74134a0b1de1 18
okini3939 0:74134a0b1de1 19 #define WS_SERVER "sockets.mbed.org"
okini3939 0:74134a0b1de1 20 #define WS_URI "/ws/username/rw"
okini3939 0:74134a0b1de1 21
okini3939 0:74134a0b1de1 22 #ifndef CFG_ENABLE_WEBSOCKET
okini3939 0:74134a0b1de1 23 #error Please enable "#define CFG_ENABLE_WEBSOCKET" in "GSwifi_conf.h"
okini3939 0:74134a0b1de1 24 #endif
okini3939 0:74134a0b1de1 25
okini3939 0:74134a0b1de1 26 DigitalOut led1(LED1), led2(LED2);
okini3939 0:74134a0b1de1 27 Serial pc(USBTX, USBRX);
okini3939 0:74134a0b1de1 28 GSwifi gs(p13, p14, p12, P0_22, p20, NC, 115200); // mbed LPC1768
okini3939 0:74134a0b1de1 29 LocalFileSystem local("local");
okini3939 0:74134a0b1de1 30
okini3939 0:74134a0b1de1 31 void ws_server (int cid) {
okini3939 0:74134a0b1de1 32 int i;
okini3939 0:74134a0b1de1 33 char buf[40], outbuf[40];
okini3939 0:74134a0b1de1 34
okini3939 0:74134a0b1de1 35 led2 = 1;
okini3939 0:74134a0b1de1 36 i = gs.recv(cid, buf, sizeof(buf));
okini3939 0:74134a0b1de1 37 if (i < 0) return;
okini3939 0:74134a0b1de1 38 buf[i] = 0;
okini3939 0:74134a0b1de1 39
okini3939 0:74134a0b1de1 40 RPC::call(buf, outbuf);
okini3939 0:74134a0b1de1 41 printf("RPC %d '%s' '%s'\r\n", cid, buf, outbuf);
okini3939 0:74134a0b1de1 42
okini3939 0:74134a0b1de1 43 gs.wsSend(cid, outbuf, strlen(outbuf));
okini3939 0:74134a0b1de1 44 led2 = 0;
okini3939 0:74134a0b1de1 45 }
okini3939 0:74134a0b1de1 46
okini3939 0:74134a0b1de1 47 int main () {
okini3939 0:74134a0b1de1 48
okini3939 0:74134a0b1de1 49 pc.baud(115200);
okini3939 0:74134a0b1de1 50
okini3939 0:74134a0b1de1 51 gs.setAddress("192.168.1.1", "255.255.255.0", "192.168.1.1", "192.168.1.1", "www.mbed");
okini3939 0:74134a0b1de1 52 gs.setSsid(SEC, SSID, PASS);
okini3939 0:74134a0b1de1 53 if (gs.limitedap()) {
okini3939 0:74134a0b1de1 54 pc.printf("error: limitedap\r\n");
okini3939 0:74134a0b1de1 55 return -1;
okini3939 0:74134a0b1de1 56 }
okini3939 0:74134a0b1de1 57
okini3939 0:74134a0b1de1 58 RPC::add_rpc_class<RpcDigitalIn>();
okini3939 0:74134a0b1de1 59 RPC::add_rpc_class<RpcDigitalOut>();
okini3939 0:74134a0b1de1 60 RPC::add_rpc_class<RpcDigitalInOut>();
okini3939 0:74134a0b1de1 61 RPC::add_rpc_class<RpcPwmOut>();
okini3939 0:74134a0b1de1 62 RPC::add_rpc_class<RpcAnalogIn>();
okini3939 0:74134a0b1de1 63
okini3939 0:74134a0b1de1 64 gs.httpd(80);
okini3939 0:74134a0b1de1 65 gs.httpdAttach("/ws/", &ws_server, 1);
okini3939 0:74134a0b1de1 66 gs.httpdAttach("/", "/local/");
okini3939 0:74134a0b1de1 67 printf("httpd ready\r\n");
okini3939 0:74134a0b1de1 68 led1 = 1;
okini3939 0:74134a0b1de1 69
okini3939 0:74134a0b1de1 70 for (;;) {
okini3939 0:74134a0b1de1 71 gs.poll();
okini3939 0:74134a0b1de1 72
okini3939 0:74134a0b1de1 73 if (pc.readable()) {
okini3939 0:74134a0b1de1 74 if (pc.getc() == 'q') break;
okini3939 0:74134a0b1de1 75 }
okini3939 0:74134a0b1de1 76 }
okini3939 0:74134a0b1de1 77 gs.dissociate();
okini3939 0:74134a0b1de1 78 led1 = 0;
okini3939 0:74134a0b1de1 79 return 0;
okini3939 0:74134a0b1de1 80 }