example websocket server

Dependencies:   EthernetInterface WebSocketClient WiflyInterface mbed-rtos mbed

main.cpp

Committer:
wangstabill
Date:
2012-09-06
Revision:
0:90270ce862ec

File content as of revision 0:90270ce862ec:

#include "mbed.h"
//#include "EthernetInterface.h"
#include "WiflyInterface.h"
#include "Websocket.h"

#define WS_SERVER_IP_ADDR "ws://192.168.42.61:8080/"
#define SSID "mbed"
#define PASSPHRASE "6033937142"

static DigitalOut led1(LED1);
static DigitalOut led2(LED2);
static DigitalOut led3(LED3);
static DigitalOut led4(LED4);

static int count = 0;
static char buffer[2];

/* wifly object where:
*     - p13 and p14 are for the serial communication
*     - p22 is for the reset pin
*     - p21 is for the connection status
*     - SSID is the ssid of the network
*     - PASSPHRASE is the password
*     - WPA is the security
*/
WiflyInterface wifly(p13, p14, p22, p21, SSID, PASSPHRASE, WPA);

void static clear_leds () {
  led1 = led2 = led3 = led4 = 0;
}

void static counter () {
  if (count == 99) {
    count = 0;
  }
  count++;
  sprintf(buffer, "%d", count);
}

/*static int connect_eth () {
  EthernetInterface eth;
  // Use DHCP
  eth.init();
  eth.connect();
  // screen /dev/tty.usbmodem*
  //printf("IP Address is %s\n\r", eth.getIPAddress());
  return 0;
}*/

static int connect_wifi () {
  wifly.init(); // use DHCP
  while (!wifly.connect()); // join the network
  return 0;
}

static Websocket connect_ws (char* ip_addr) {
  // Viewable at: http://sockets.mbed.org/demo/viewer
  //Websocket ws("ws://sockets.mbed.org:443/ws/demo/wo");

  Websocket ws(ip_addr);
  //printf("WS Constructed\n\r");
  while(!ws.connect());
  //printf("WS Connected\n\r");
  return ws;
}

static Websocket connect (char* ip_addr) {
  clear_leds();
  //led1 = !connect_eth();
  led1 = !connect_wifi();
  Websocket ws = connect_ws(ip_addr);
  led2 = 1;
  return ws;
}

int main () {
  Websocket ws = connect(WS_SERVER_IP_ADDR);
  
  while (1) {
    counter();
    if (ws.is_connected()) {
      //printf("Sending...%s\n\r", buffer);
      ws.send(buffer);
    } else {
      clear_leds();
    }
    //wait(0.1);
  }
}