example websocket server

Dependencies:   EthernetInterface WebSocketClient WiflyInterface mbed-rtos mbed

Committer:
wangstabill
Date:
Thu Sep 06 19:00:02 2012 +0000
Revision:
0:90270ce862ec
intial commit

Who changed what in which revision?

UserRevisionLine numberNew 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 }