See: http://mbed.org/users/okini3939/notebook/wifi_rpc/
Dependencies: GSwifiInterface mbed-rpc mbed
main.cpp@0:74134a0b1de1, 2014-05-12 (annotated)
- 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?
User | Revision | Line number | New 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 | } |