example websocket server
Dependencies: EthernetInterface WebSocketClient WiflyInterface mbed-rtos mbed
main.cpp@0:90270ce862ec, 2012-09-06 (annotated)
- Committer:
- wangstabill
- Date:
- Thu Sep 06 19:00:02 2012 +0000
- Revision:
- 0:90270ce862ec
intial commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
wangstabill | 0:90270ce862ec | 1 | #include "mbed.h" |
wangstabill | 0:90270ce862ec | 2 | //#include "EthernetInterface.h" |
wangstabill | 0:90270ce862ec | 3 | #include "WiflyInterface.h" |
wangstabill | 0:90270ce862ec | 4 | #include "Websocket.h" |
wangstabill | 0:90270ce862ec | 5 | |
wangstabill | 0:90270ce862ec | 6 | #define WS_SERVER_IP_ADDR "ws://192.168.42.61:8080/" |
wangstabill | 0:90270ce862ec | 7 | #define SSID "mbed" |
wangstabill | 0:90270ce862ec | 8 | #define PASSPHRASE "6033937142" |
wangstabill | 0:90270ce862ec | 9 | |
wangstabill | 0:90270ce862ec | 10 | static DigitalOut led1(LED1); |
wangstabill | 0:90270ce862ec | 11 | static DigitalOut led2(LED2); |
wangstabill | 0:90270ce862ec | 12 | static DigitalOut led3(LED3); |
wangstabill | 0:90270ce862ec | 13 | static DigitalOut led4(LED4); |
wangstabill | 0:90270ce862ec | 14 | |
wangstabill | 0:90270ce862ec | 15 | static int count = 0; |
wangstabill | 0:90270ce862ec | 16 | static char buffer[2]; |
wangstabill | 0:90270ce862ec | 17 | |
wangstabill | 0:90270ce862ec | 18 | /* wifly object where: |
wangstabill | 0:90270ce862ec | 19 | * - p13 and p14 are for the serial communication |
wangstabill | 0:90270ce862ec | 20 | * - p22 is for the reset pin |
wangstabill | 0:90270ce862ec | 21 | * - p21 is for the connection status |
wangstabill | 0:90270ce862ec | 22 | * - SSID is the ssid of the network |
wangstabill | 0:90270ce862ec | 23 | * - PASSPHRASE is the password |
wangstabill | 0:90270ce862ec | 24 | * - WPA is the security |
wangstabill | 0:90270ce862ec | 25 | */ |
wangstabill | 0:90270ce862ec | 26 | WiflyInterface wifly(p13, p14, p22, p21, SSID, PASSPHRASE, WPA); |
wangstabill | 0:90270ce862ec | 27 | |
wangstabill | 0:90270ce862ec | 28 | void static clear_leds () { |
wangstabill | 0:90270ce862ec | 29 | led1 = led2 = led3 = led4 = 0; |
wangstabill | 0:90270ce862ec | 30 | } |
wangstabill | 0:90270ce862ec | 31 | |
wangstabill | 0:90270ce862ec | 32 | void static counter () { |
wangstabill | 0:90270ce862ec | 33 | if (count == 99) { |
wangstabill | 0:90270ce862ec | 34 | count = 0; |
wangstabill | 0:90270ce862ec | 35 | } |
wangstabill | 0:90270ce862ec | 36 | count++; |
wangstabill | 0:90270ce862ec | 37 | sprintf(buffer, "%d", count); |
wangstabill | 0:90270ce862ec | 38 | } |
wangstabill | 0:90270ce862ec | 39 | |
wangstabill | 0:90270ce862ec | 40 | /*static int connect_eth () { |
wangstabill | 0:90270ce862ec | 41 | EthernetInterface eth; |
wangstabill | 0:90270ce862ec | 42 | // Use DHCP |
wangstabill | 0:90270ce862ec | 43 | eth.init(); |
wangstabill | 0:90270ce862ec | 44 | eth.connect(); |
wangstabill | 0:90270ce862ec | 45 | // screen /dev/tty.usbmodem* |
wangstabill | 0:90270ce862ec | 46 | //printf("IP Address is %s\n\r", eth.getIPAddress()); |
wangstabill | 0:90270ce862ec | 47 | return 0; |
wangstabill | 0:90270ce862ec | 48 | }*/ |
wangstabill | 0:90270ce862ec | 49 | |
wangstabill | 0:90270ce862ec | 50 | static int connect_wifi () { |
wangstabill | 0:90270ce862ec | 51 | wifly.init(); // use DHCP |
wangstabill | 0:90270ce862ec | 52 | while (!wifly.connect()); // join the network |
wangstabill | 0:90270ce862ec | 53 | return 0; |
wangstabill | 0:90270ce862ec | 54 | } |
wangstabill | 0:90270ce862ec | 55 | |
wangstabill | 0:90270ce862ec | 56 | static Websocket connect_ws (char* ip_addr) { |
wangstabill | 0:90270ce862ec | 57 | // Viewable at: http://sockets.mbed.org/demo/viewer |
wangstabill | 0:90270ce862ec | 58 | //Websocket ws("ws://sockets.mbed.org:443/ws/demo/wo"); |
wangstabill | 0:90270ce862ec | 59 | |
wangstabill | 0:90270ce862ec | 60 | Websocket ws(ip_addr); |
wangstabill | 0:90270ce862ec | 61 | //printf("WS Constructed\n\r"); |
wangstabill | 0:90270ce862ec | 62 | while(!ws.connect()); |
wangstabill | 0:90270ce862ec | 63 | //printf("WS Connected\n\r"); |
wangstabill | 0:90270ce862ec | 64 | return ws; |
wangstabill | 0:90270ce862ec | 65 | } |
wangstabill | 0:90270ce862ec | 66 | |
wangstabill | 0:90270ce862ec | 67 | static Websocket connect (char* ip_addr) { |
wangstabill | 0:90270ce862ec | 68 | clear_leds(); |
wangstabill | 0:90270ce862ec | 69 | //led1 = !connect_eth(); |
wangstabill | 0:90270ce862ec | 70 | led1 = !connect_wifi(); |
wangstabill | 0:90270ce862ec | 71 | Websocket ws = connect_ws(ip_addr); |
wangstabill | 0:90270ce862ec | 72 | led2 = 1; |
wangstabill | 0:90270ce862ec | 73 | return ws; |
wangstabill | 0:90270ce862ec | 74 | } |
wangstabill | 0:90270ce862ec | 75 | |
wangstabill | 0:90270ce862ec | 76 | int main () { |
wangstabill | 0:90270ce862ec | 77 | Websocket ws = connect(WS_SERVER_IP_ADDR); |
wangstabill | 0:90270ce862ec | 78 | |
wangstabill | 0:90270ce862ec | 79 | while (1) { |
wangstabill | 0:90270ce862ec | 80 | counter(); |
wangstabill | 0:90270ce862ec | 81 | if (ws.is_connected()) { |
wangstabill | 0:90270ce862ec | 82 | //printf("Sending...%s\n\r", buffer); |
wangstabill | 0:90270ce862ec | 83 | ws.send(buffer); |
wangstabill | 0:90270ce862ec | 84 | } else { |
wangstabill | 0:90270ce862ec | 85 | clear_leds(); |
wangstabill | 0:90270ce862ec | 86 | } |
wangstabill | 0:90270ce862ec | 87 | //wait(0.1); |
wangstabill | 0:90270ce862ec | 88 | } |
wangstabill | 0:90270ce862ec | 89 | } |