SimpleSocket 1.0 examples

Dependencies:   EthernetNetIf SimpleSocket 1.0 mbed

Revision:
1:7350a2598a80
Parent:
0:c41b68a4a296
Child:
2:304672a01127
--- a/main.cpp	Tue Aug 16 02:02:54 2011 +0000
+++ b/main.cpp	Tue Aug 16 02:50:52 2011 +0000
@@ -1,215 +1,84 @@
-#include "mbed.h"
-#include "EthernetNetIf.h"
-#include "TCPSocket.h"
-
-EthernetNetIf eth;
-DigitalOut led1(LED1);
-
-
-TCPSocket tcp;  //The listening port where requests are queued
-TCPSocket* link; //The port where accepted requests can communicate
-Host local(IpAddr(), 1234); // mbed
-Host client;
-
-TCPSocketErr accErr;
-
-void onLinkSocketEvent(TCPSocketEvent e) {
-    switch (e) {
-        case TCPSOCKET_CONNECTED:
-            printf("TCP Socket Connected\r\n");
-            break;
-        case TCPSOCKET_WRITEABLE:
-            //Can now write some data...
-            printf("TCP Socket Writable\r\n");
-            break;
-        case TCPSOCKET_READABLE:
-            //Can now read dome data...
-            printf("TCP Socket Readable\r\n");
-            // Read in any available data into the buffer
-            char buff[128];
-            while (int len = link->recv(buff, 128)) {
-                // And send straight back out again
-                link->send(buff, len);
-                buff[len]=0; // make terminater
-                printf("Received&Wrote:%s\r\n",buff);
-            }
-            break;
-        case TCPSOCKET_CONTIMEOUT:
-            printf("TCP Socket Timeout\r\n");
-            break;
-        case TCPSOCKET_CONRST:
-            printf("TCP Socket CONRST\r\n");
-            break;
-        case TCPSOCKET_CONABRT:
-            printf("TCP Socket CONABRT\r\n");
-            break;
-        case TCPSOCKET_ERROR:
-            printf("TCP Socket Error\r\n");
-            break;
-        case TCPSOCKET_DISCONNECTED:
-            //Close socket...
-            printf("TCP Socket Disconnected\r\n");
-            link->close();
-            break;
-        default:
-            printf("DEFAULT\r\n");
-    }
-}
-
-void onTCPSocketEvent(TCPSocketEvent e) {
-    IpAddr clientIp;
-    
-    switch (e) {
-        case TCPSOCKET_CONNECTED:
-            printf("Connected\n");
-            break;
-
-        case TCPSOCKET_ACCEPT:
-            accErr = tcp.accept(&client,&link);
-            switch (accErr) {
-                case TCPSOCKET_SETUP:
-                    printf("Err:Setup\n");
-                    break;  //TCPSocket not properly configured.
-                case TCPSOCKET_TIMEOUT:
-                    printf("Err:Timeout\n");
-                    break;  //Connection timed out.
-                case TCPSOCKET_IF:
-                    printf("Err:Interface\n");
-                    break;  //Interface has problems, does not exist or is not initialized.
-                case TCPSOCKET_MEM:
-                    printf("Err:Memory\n");
-                    break;  //Not enough mem.
-                case TCPSOCKET_INUSE:
-                    printf("Err:In use\n");
-                    break;  //Interface / Port is in use.
-                case TCPSOCKET_EMPTY:
-                    printf("Err:Empty\n");
-                    break;  //Connections queue is empty.
-                case TCPSOCKET_RST:
-                    printf("Err:Reset\n");
-                    break;  //Connection was reset by remote host.
-                case TCPSOCKET_OK:
-                    printf("Accepted: ");
-                    break;  //Success.
-            }
-
-            link->setOnEvent(&onLinkSocketEvent);
-            clientIp = client.getIp();
-            printf("Incoming TCP connection from %d.%d.%d.%d\r\n",
-                   clientIp[0], clientIp[1], clientIp[2], clientIp[3]);
-            break;
-        case TCPSOCKET_READABLE:
-            printf("Readable\n");
-            break;
-
-        case TCPSOCKET_WRITEABLE:
-            printf("Writeable\n");
-            break;
-
-        case TCPSOCKET_CONTIMEOUT:
-            printf("Timeout\n");
-            break;
-
-        case TCPSOCKET_CONRST:
-            printf("Reset\n");
-            break;
-        case TCPSOCKET_CONABRT:
-            printf("Aborted\n");
-            break;
-
-        case TCPSOCKET_ERROR:
-            printf("Error\n");
-            break;
-
-        case TCPSOCKET_DISCONNECTED:
-            printf("Disconnected\n");
-            tcp.close();
-            break;
-    }
-}
-
-int main() {
-    //********Basic setup********
-    printf("Welcome to wireFUSE\n");
-    printf("Setting up...\n");
-    EthernetErr ethErr = eth.setup();
-    if (ethErr) {
-        printf("Error %d in setup.\n", ethErr);
-        return -1;
-    }
-    printf("Setup OK\n");
-    //****End of basic setup*****
-
-    tcp.setOnEvent(&onTCPSocketEvent); //Generate method to deal with requests
-
-    //Bind to local port
-    printf("Init bind..\n");
-    TCPSocketErr bindErr = tcp.bind(local);
-    switch (bindErr) {
-        case TCPSOCKET_SETUP:
-            printf("Err:Setup\n");
-            break;  //TCPSocket not properly configured.
-        case TCPSOCKET_TIMEOUT:
-            printf("Err:Timeout\n");
-            break;  //Connection timed out.
-        case TCPSOCKET_IF:
-            printf("Err:Interface\n");
-            break;  //Interface has problems, does not exist or is not initialized.
-        case TCPSOCKET_MEM:
-            printf("Err:Memory\n");
-            break;  //Not enough mem.
-        case TCPSOCKET_INUSE:
-            printf("Err:In use\n");
-            break;  //Interface / Port is in use.
-        case TCPSOCKET_EMPTY:
-            printf("Err:Empty\n");
-            break;  //Connections queue is empty.
-        case TCPSOCKET_RST:
-            printf("Err:Reset\n");
-            break;  //Connection was reset by remote host.
-        case TCPSOCKET_OK:
-            printf("Bound to port\n");
-            break;  //Success.
-    }
-
-    //Listen to local port
-    printf("Init listen..\n");
-    TCPSocketErr listenErr = tcp.listen();
-    switch (listenErr) {
-        case TCPSOCKET_SETUP:
-            printf("Err:Setup\n");
-            break;  //TCPSocket not properly configured.
-        case TCPSOCKET_TIMEOUT:
-            printf("Err:Timeout\n");
-            break;  //Connection timed out.
-        case TCPSOCKET_IF:
-            printf("Err:Interface\n");
-            break;  //Interface has problems, does not exist or is not initialized.
-        case TCPSOCKET_MEM:
-            printf("Err:Memory\n");
-            break;  //Not enough mem.
-        case TCPSOCKET_INUSE:
-            printf("Err:In use\n");
-            break;  //Interface / Port is in use.
-        case TCPSOCKET_EMPTY:
-            printf("Err:Empty\n");
-            break;  //Connections queue is empty.
-        case TCPSOCKET_RST:
-            printf("Err:Reset\n");
-            break;  //Connection was reset by remote host.
-        case TCPSOCKET_OK:
-            printf("Listening\n");
-            break;  //Success.
-    }
-    Timer tmr;
-    tmr.start();
-    while (1) {
-        Net::poll();
-        if (tmr.read() > 10) {
-            tmr.reset();
-            led1 = !led1; //Show that we are alive
-            //Wait for a connection request
-            printf("waiting for client on port 1234\n");
-        }
-    }
+#include "mbed.h"
+#include "EthernetNetIf.h"
+#include "TCPSocket.h"
+#include "SocketUtil.h"
+
+EthernetNetIf eth;
+DigitalOut led1(LED1);
+
+TCPSocket tcp;   //The listening port where requests are queued
+TCPSocket* link; //The port where accepted requests can communicate
+Host local(IpAddr(), 1234); // mbed
+Host client;
+
+void onLinkSocketEvent(TCPSocketEvent e) {
+    SocketEvent event = e;
+    printf(event);
+
+    switch (event) {
+        case TCPSOCKET_READABLE:
+            char buf[128];
+            while (int len = link->recv(buf, 128)) {
+                // And send straight back out again
+                link->send(buf, len);
+                buf[len] = 0; // make terminater
+                printf("Received & Wrote: %s\n",buf);
+            }
+            break;
+        case TCPSOCKET_DISCONNECTED:
+            link->close();
+            break;
+    }
+}
+
+void onTCPSocketEvent(TCPSocketEvent e) {
+    SocketEvent event = e;
+    printf(event);
+
+    switch (event) {
+        case TCPSOCKET_ACCEPT:
+            if (SocketError err = tcp.accept(&client, &link)) {
+                printf(err);
+            } else {
+                link->setOnEvent(&onLinkSocketEvent);
+                IpAddr ip = client.getIp();
+                printf("Incoming TCP connection from %d.%d.%d.%d\r\n", ip[0], ip[1], ip[2], ip[3]);
+            }
+            break;
+
+        case TCPSOCKET_DISCONNECTED:
+            tcp.close();
+            break;
+    }
+}
+
+int main() {
+    //Basic setup
+    printf("Welcome to wireFUSE\n");
+    printf("Setting up...\n");
+    EthernetErr ethErr = eth.setup();
+    if (ethErr)
+        error("Error %d in setup.\n", ethErr);
+    printf("Setup OK\n");
+
+    tcp.setOnEvent(&onTCPSocketEvent);
+
+    //Bind to local port
+    SocketError bindErr = tcp.bind(local);
+    printf("Init bind... %s", (char *) bindErr);
+
+    //Listen to local port
+    TCPSocketErr listenErr = tcp.listen();
+    printf("Init listen... %s", (char *)listenErr);
+    
+    Timer timer;
+    timer.start();
+    while (true) {
+        Net::poll();
+        if (timer.read() > 10) {
+            timer.reset();
+            led1 = !led1; //Show that we are alive
+            printf("waiting for client on port 1234\n");
+        }
+    }
 }
\ No newline at end of file