WebSocket client library

Revision:
14:c5ac3e26998f
Parent:
13:3b058372cad9
Child:
15:79bfbc0ad6bc
--- a/Websocket.cpp	Tue Aug 30 09:25:28 2011 +0000
+++ b/Websocket.cpp	Tue Aug 30 11:47:56 2011 +0000
@@ -19,6 +19,24 @@
     eth_connected = false;
     response_server_eth = false;
     fillFields(wifi_use, url);
+
+
+    EthernetErr ethErr = eth.setup();
+    if (ethErr) {
+        printf("\r\nERROR %d in setup.\r\n", ethErr);
+    }
+
+    //we must use dnsresolver to find the ip address
+    if (server_ip == NULL) {
+        DNSResolver dr;
+        server_ip = dr.resolveName(ip_domain);
+        printf("\r\nserver with dns=%i.%i.%i.%i\r\n",server_ip[0],server_ip[1],server_ip[2],server_ip[3]);
+    }
+    
+    IpAddr ipt = eth.getIp();
+    printf("\r\nmbed IP Address is %d.%d.%d.%d\r\n", ipt[0], ipt[1], ipt[2], ipt[3]);
+    
+    sock.setOnEvent(this, &Websocket::onTCPSocketEvent);
 }
 
 
@@ -65,7 +83,7 @@
             //if we use ethernet, we must decode ip address or use dnsresolver
             if (!wifi) {
                 strcpy(buf, res);
-                
+
                 //we try to decode the ip address
                 if (buf[0] >= '0' && buf[0] <= '9') {
                     res = strtok(buf, ".");
@@ -126,38 +144,26 @@
         printf("\r\nip_domain: %s\r\npath: /%s\r\nport: %s\r\n\r\n",this->ip_domain, this->path, this->port);
         return true;
     } else if ( eth_use ) {
-        int i = 0;
 
-        EthernetErr ethErr = eth.setup();
-        if (ethErr) {
-            printf("Error %d in setup.\r\n", ethErr);
-            return false;
-        }
-        
-        //we must use dnsresolver to find the ip address
-        if (server_ip == NULL) {
-            DNSResolver dr;
-            server_ip = dr.resolveName(ip_domain);
-            printf("server with dns=%i.%i.%i.%i\r\n",server_ip[0],server_ip[1],server_ip[2],server_ip[3]);
-        }
-
-        IpAddr ipt = eth.getIp();
-        printf("mbed IP Address is %d.%d.%d.%d\r\n", ipt[0], ipt[1], ipt[2], ipt[3]);
-
-        sock.setOnEvent(this, &Websocket::onTCPSocketEvent);
         Host server (server_ip, atoi(port));
+        sock.close();
         TCPSocketErr bindErr = sock.connect(server);
         if (bindErr) {
-            printf("binderr: %d\r\n", bindErr);
+            printf("\r\nERROR binderr: %d\r\n", bindErr);
             return false;
         }
 
-
         Timer tmr;
         tmr.start();
+        
+        Timer stop;
+        stop.start();
 
+        int i = 0;
         while (true) {
             Net::poll();
+            if(stop.read() > 3)
+                return false;
             if (tmr.read() > 0.01) {
                 tmr.reset();
                 if (eth_connected) {