TCPTest Server attempt

Dependencies:   EthernetNetIf mbed

main.cpp

Committer:
OTBsolar
Date:
2011-03-15
Revision:
0:f8aba92e4c46
Child:
1:7785624d8f35

File content as of revision 0:f8aba92e4c46:

#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

void onTCPSocketEvent(TCPSocketEvent e)
{
    switch(e)
    {
        case TCPSOCKET_CONNECTED:
            printf("Connected\n");
        break;
        
        case TCPSOCKET_ACCEPT:
            printf("Accepted\n");
        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
    Host local(IpAddr(130,144,3,9), 12345); //mbed IP
    Host client;
  
    Timer tmr;
    tmr.start();
    while(true)
    {
        Net::poll();
        if(tmr.read() > 2)
        {
            tmr.reset();
            led1=!led1; //Show that we are alive
            
            //Bind to local port
            printf("Init bind..\n");
            TCPSocketErr bindErr = tcp.bind(local);
            if(bindErr == 0) {
                printf("Bound to port\n");
            }
            else {
                printf("Error %i\n",bindErr);
            }
            
            //Listen to local port
            printf("Init listen..\n");
            TCPSocketErr listenErr = tcp.listen();
            if(listenErr == 0) {
                printf("Listening to port");
            }
            else {
                printf("Error %i\n",listenErr);
            }
            
            //Wait for a connection request
            printf("waiting for client on port 12345");
            TCPSocketErr accErr = tcp.accept(&local,&link);
            if(accErr == 0) {
                printf("Connection accepted\n");
            }
            else {
                printf("Error opening connection\n");
            }
        }
    }
}