WebSocket Client for GSwifiInterface library Please see: http://mbed.org/users/gsfan/notebook/GSwifiInterface/
Dependencies: GSwifiInterface mbed-rtos mbed
main.cpp@0:82dc85bf7a0c, 2014-03-07 (annotated)
- Committer:
- gsfan
- Date:
- Fri Mar 07 15:19:07 2014 +0000
- Revision:
- 0:82dc85bf7a0c
- Child:
- 1:bc2b47567c49
1st build
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gsfan | 0:82dc85bf7a0c | 1 | #include "mbed.h" |
gsfan | 0:82dc85bf7a0c | 2 | #include "GSwifiInterface.h" |
gsfan | 0:82dc85bf7a0c | 3 | |
gsfan | 0:82dc85bf7a0c | 4 | #define SEC GSwifi::SEC_WPA_PSK |
gsfan | 0:82dc85bf7a0c | 5 | #define SSID "SSID" |
gsfan | 0:82dc85bf7a0c | 6 | #define PASS "PASSPHRASE" |
gsfan | 0:82dc85bf7a0c | 7 | |
gsfan | 0:82dc85bf7a0c | 8 | #define WS_SERVER "sockets.mbed.org" |
gsfan | 0:82dc85bf7a0c | 9 | #define WS_URI "/ws/username/rw" |
gsfan | 0:82dc85bf7a0c | 10 | |
gsfan | 0:82dc85bf7a0c | 11 | #ifndef CFG_ENABLE_WEBSOCKET |
gsfan | 0:82dc85bf7a0c | 12 | #error Please enable "#define CFG_ENABLE_WEBSOCKET" in "GSwifi_conf.h" |
gsfan | 0:82dc85bf7a0c | 13 | #endif |
gsfan | 0:82dc85bf7a0c | 14 | |
gsfan | 0:82dc85bf7a0c | 15 | Serial pc(USBTX, USBRX); |
gsfan | 0:82dc85bf7a0c | 16 | |
gsfan | 0:82dc85bf7a0c | 17 | int main() { |
gsfan | 0:82dc85bf7a0c | 18 | GSwifiInterface gs(p13, p14, p12, P0_22, p20, NC, 115200); |
gsfan | 0:82dc85bf7a0c | 19 | pc.baud(115200); |
gsfan | 0:82dc85bf7a0c | 20 | printf("WebSocket Client...\r\n"); |
gsfan | 0:82dc85bf7a0c | 21 | gs.init(); //Use DHCP |
gsfan | 0:82dc85bf7a0c | 22 | if (gs.connect(SEC, SSID, PASS)) exit(-1); // join the network |
gsfan | 0:82dc85bf7a0c | 23 | printf("IP Address is %s\r\n", gs.getIPAddress()); |
gsfan | 0:82dc85bf7a0c | 24 | |
gsfan | 0:82dc85bf7a0c | 25 | int cid = gs.wsOpen (WS_SERVER, 80, WS_URI); |
gsfan | 0:82dc85bf7a0c | 26 | if (cid < 0) { |
gsfan | 0:82dc85bf7a0c | 27 | printf("error: wsOpen\r\n"); |
gsfan | 0:82dc85bf7a0c | 28 | return -1; |
gsfan | 0:82dc85bf7a0c | 29 | } |
gsfan | 0:82dc85bf7a0c | 30 | |
gsfan | 0:82dc85bf7a0c | 31 | printf("WebSocket ready\r\n"); |
gsfan | 0:82dc85bf7a0c | 32 | for (;;) { |
gsfan | 0:82dc85bf7a0c | 33 | gs.poll(); |
gsfan | 0:82dc85bf7a0c | 34 | |
gsfan | 0:82dc85bf7a0c | 35 | if (pc.readable()) { |
gsfan | 0:82dc85bf7a0c | 36 | char c; |
gsfan | 0:82dc85bf7a0c | 37 | char buf[2]; |
gsfan | 0:82dc85bf7a0c | 38 | c = pc.getc(); |
gsfan | 0:82dc85bf7a0c | 39 | if (c == 0x1b) break; // ESC |
gsfan | 0:82dc85bf7a0c | 40 | pc.printf("send: %c\r\n", c); |
gsfan | 0:82dc85bf7a0c | 41 | buf[0] = c; |
gsfan | 0:82dc85bf7a0c | 42 | gs.wsSend(cid, buf, 1, "MASK"); |
gsfan | 0:82dc85bf7a0c | 43 | } |
gsfan | 0:82dc85bf7a0c | 44 | |
gsfan | 0:82dc85bf7a0c | 45 | if (gs.readable(cid)) { |
gsfan | 0:82dc85bf7a0c | 46 | int i, n; |
gsfan | 0:82dc85bf7a0c | 47 | char buf[40]; |
gsfan | 0:82dc85bf7a0c | 48 | n = gs.recv(cid, buf, sizeof(buf)); |
gsfan | 0:82dc85bf7a0c | 49 | printf("recv: "); |
gsfan | 0:82dc85bf7a0c | 50 | for (i = 0; i < n; i ++) { |
gsfan | 0:82dc85bf7a0c | 51 | printf(" %02x", buf[i]); |
gsfan | 0:82dc85bf7a0c | 52 | } |
gsfan | 0:82dc85bf7a0c | 53 | printf("\r\n"); |
gsfan | 0:82dc85bf7a0c | 54 | } |
gsfan | 0:82dc85bf7a0c | 55 | |
gsfan | 0:82dc85bf7a0c | 56 | if (!gs.isConnected(cid)) { |
gsfan | 0:82dc85bf7a0c | 57 | break; |
gsfan | 0:82dc85bf7a0c | 58 | } |
gsfan | 0:82dc85bf7a0c | 59 | } |
gsfan | 0:82dc85bf7a0c | 60 | |
gsfan | 0:82dc85bf7a0c | 61 | gs.dissociate(); |
gsfan | 0:82dc85bf7a0c | 62 | return 0; |
gsfan | 0:82dc85bf7a0c | 63 | } |