TCPTest Server attempt
Dependencies: EthernetNetIf mbed
main.cpp@0:f8aba92e4c46, 2011-03-15 (annotated)
- Committer:
- OTBsolar
- Date:
- Tue Mar 15 11:50:38 2011 +0000
- Revision:
- 0:f8aba92e4c46
- Child:
- 1:7785624d8f35
beta
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
OTBsolar | 0:f8aba92e4c46 | 1 | #include "mbed.h" |
OTBsolar | 0:f8aba92e4c46 | 2 | #include "EthernetNetIf.h" |
OTBsolar | 0:f8aba92e4c46 | 3 | #include "TCPSocket.h" |
OTBsolar | 0:f8aba92e4c46 | 4 | |
OTBsolar | 0:f8aba92e4c46 | 5 | EthernetNetIf eth; |
OTBsolar | 0:f8aba92e4c46 | 6 | DigitalOut led1(LED1); |
OTBsolar | 0:f8aba92e4c46 | 7 | |
OTBsolar | 0:f8aba92e4c46 | 8 | |
OTBsolar | 0:f8aba92e4c46 | 9 | TCPSocket tcp; //The listening port where requests are queued |
OTBsolar | 0:f8aba92e4c46 | 10 | TCPSocket* link; //The port where accepted requests can communicate |
OTBsolar | 0:f8aba92e4c46 | 11 | |
OTBsolar | 0:f8aba92e4c46 | 12 | void onTCPSocketEvent(TCPSocketEvent e) |
OTBsolar | 0:f8aba92e4c46 | 13 | { |
OTBsolar | 0:f8aba92e4c46 | 14 | switch(e) |
OTBsolar | 0:f8aba92e4c46 | 15 | { |
OTBsolar | 0:f8aba92e4c46 | 16 | case TCPSOCKET_CONNECTED: |
OTBsolar | 0:f8aba92e4c46 | 17 | printf("Connected\n"); |
OTBsolar | 0:f8aba92e4c46 | 18 | break; |
OTBsolar | 0:f8aba92e4c46 | 19 | |
OTBsolar | 0:f8aba92e4c46 | 20 | case TCPSOCKET_ACCEPT: |
OTBsolar | 0:f8aba92e4c46 | 21 | printf("Accepted\n"); |
OTBsolar | 0:f8aba92e4c46 | 22 | break; |
OTBsolar | 0:f8aba92e4c46 | 23 | |
OTBsolar | 0:f8aba92e4c46 | 24 | case TCPSOCKET_READABLE: |
OTBsolar | 0:f8aba92e4c46 | 25 | printf("Readable\n"); |
OTBsolar | 0:f8aba92e4c46 | 26 | break; |
OTBsolar | 0:f8aba92e4c46 | 27 | |
OTBsolar | 0:f8aba92e4c46 | 28 | case TCPSOCKET_WRITEABLE: |
OTBsolar | 0:f8aba92e4c46 | 29 | printf("Writeable\n"); |
OTBsolar | 0:f8aba92e4c46 | 30 | break; |
OTBsolar | 0:f8aba92e4c46 | 31 | |
OTBsolar | 0:f8aba92e4c46 | 32 | case TCPSOCKET_CONTIMEOUT: |
OTBsolar | 0:f8aba92e4c46 | 33 | printf("Timeout\n"); |
OTBsolar | 0:f8aba92e4c46 | 34 | break; |
OTBsolar | 0:f8aba92e4c46 | 35 | |
OTBsolar | 0:f8aba92e4c46 | 36 | case TCPSOCKET_CONRST: |
OTBsolar | 0:f8aba92e4c46 | 37 | printf("Reset\n"); |
OTBsolar | 0:f8aba92e4c46 | 38 | break; |
OTBsolar | 0:f8aba92e4c46 | 39 | case TCPSOCKET_CONABRT: |
OTBsolar | 0:f8aba92e4c46 | 40 | printf("Aborted\n"); |
OTBsolar | 0:f8aba92e4c46 | 41 | break; |
OTBsolar | 0:f8aba92e4c46 | 42 | |
OTBsolar | 0:f8aba92e4c46 | 43 | case TCPSOCKET_ERROR: |
OTBsolar | 0:f8aba92e4c46 | 44 | printf("Error\n"); |
OTBsolar | 0:f8aba92e4c46 | 45 | break; |
OTBsolar | 0:f8aba92e4c46 | 46 | |
OTBsolar | 0:f8aba92e4c46 | 47 | case TCPSOCKET_DISCONNECTED: |
OTBsolar | 0:f8aba92e4c46 | 48 | printf("Disconnected\n"); |
OTBsolar | 0:f8aba92e4c46 | 49 | tcp.close(); |
OTBsolar | 0:f8aba92e4c46 | 50 | break; |
OTBsolar | 0:f8aba92e4c46 | 51 | } |
OTBsolar | 0:f8aba92e4c46 | 52 | } |
OTBsolar | 0:f8aba92e4c46 | 53 | |
OTBsolar | 0:f8aba92e4c46 | 54 | int main() { |
OTBsolar | 0:f8aba92e4c46 | 55 | //********Basic setup******** |
OTBsolar | 0:f8aba92e4c46 | 56 | printf("Welcome to wireFUSE\n"); |
OTBsolar | 0:f8aba92e4c46 | 57 | printf("Setting up...\n"); |
OTBsolar | 0:f8aba92e4c46 | 58 | EthernetErr ethErr = eth.setup(); |
OTBsolar | 0:f8aba92e4c46 | 59 | if(ethErr) |
OTBsolar | 0:f8aba92e4c46 | 60 | { |
OTBsolar | 0:f8aba92e4c46 | 61 | printf("Error %d in setup.\n", ethErr); |
OTBsolar | 0:f8aba92e4c46 | 62 | return -1; |
OTBsolar | 0:f8aba92e4c46 | 63 | } |
OTBsolar | 0:f8aba92e4c46 | 64 | printf("Setup OK\n"); |
OTBsolar | 0:f8aba92e4c46 | 65 | //****End of basic setup***** |
OTBsolar | 0:f8aba92e4c46 | 66 | |
OTBsolar | 0:f8aba92e4c46 | 67 | tcp.setOnEvent(&onTCPSocketEvent); //Generate method |
OTBsolar | 0:f8aba92e4c46 | 68 | Host local(IpAddr(130,144,3,9), 12345); //mbed IP |
OTBsolar | 0:f8aba92e4c46 | 69 | Host client; |
OTBsolar | 0:f8aba92e4c46 | 70 | |
OTBsolar | 0:f8aba92e4c46 | 71 | Timer tmr; |
OTBsolar | 0:f8aba92e4c46 | 72 | tmr.start(); |
OTBsolar | 0:f8aba92e4c46 | 73 | while(true) |
OTBsolar | 0:f8aba92e4c46 | 74 | { |
OTBsolar | 0:f8aba92e4c46 | 75 | Net::poll(); |
OTBsolar | 0:f8aba92e4c46 | 76 | if(tmr.read() > 2) |
OTBsolar | 0:f8aba92e4c46 | 77 | { |
OTBsolar | 0:f8aba92e4c46 | 78 | tmr.reset(); |
OTBsolar | 0:f8aba92e4c46 | 79 | led1=!led1; //Show that we are alive |
OTBsolar | 0:f8aba92e4c46 | 80 | |
OTBsolar | 0:f8aba92e4c46 | 81 | //Bind to local port |
OTBsolar | 0:f8aba92e4c46 | 82 | printf("Init bind..\n"); |
OTBsolar | 0:f8aba92e4c46 | 83 | TCPSocketErr bindErr = tcp.bind(local); |
OTBsolar | 0:f8aba92e4c46 | 84 | if(bindErr == 0) { |
OTBsolar | 0:f8aba92e4c46 | 85 | printf("Bound to port\n"); |
OTBsolar | 0:f8aba92e4c46 | 86 | } |
OTBsolar | 0:f8aba92e4c46 | 87 | else { |
OTBsolar | 0:f8aba92e4c46 | 88 | printf("Error %i\n",bindErr); |
OTBsolar | 0:f8aba92e4c46 | 89 | } |
OTBsolar | 0:f8aba92e4c46 | 90 | |
OTBsolar | 0:f8aba92e4c46 | 91 | //Listen to local port |
OTBsolar | 0:f8aba92e4c46 | 92 | printf("Init listen..\n"); |
OTBsolar | 0:f8aba92e4c46 | 93 | TCPSocketErr listenErr = tcp.listen(); |
OTBsolar | 0:f8aba92e4c46 | 94 | if(listenErr == 0) { |
OTBsolar | 0:f8aba92e4c46 | 95 | printf("Listening to port"); |
OTBsolar | 0:f8aba92e4c46 | 96 | } |
OTBsolar | 0:f8aba92e4c46 | 97 | else { |
OTBsolar | 0:f8aba92e4c46 | 98 | printf("Error %i\n",listenErr); |
OTBsolar | 0:f8aba92e4c46 | 99 | } |
OTBsolar | 0:f8aba92e4c46 | 100 | |
OTBsolar | 0:f8aba92e4c46 | 101 | //Wait for a connection request |
OTBsolar | 0:f8aba92e4c46 | 102 | printf("waiting for client on port 12345"); |
OTBsolar | 0:f8aba92e4c46 | 103 | TCPSocketErr accErr = tcp.accept(&local,&link); |
OTBsolar | 0:f8aba92e4c46 | 104 | if(accErr == 0) { |
OTBsolar | 0:f8aba92e4c46 | 105 | printf("Connection accepted\n"); |
OTBsolar | 0:f8aba92e4c46 | 106 | } |
OTBsolar | 0:f8aba92e4c46 | 107 | else { |
OTBsolar | 0:f8aba92e4c46 | 108 | printf("Error opening connection\n"); |
OTBsolar | 0:f8aba92e4c46 | 109 | } |
OTBsolar | 0:f8aba92e4c46 | 110 | } |
OTBsolar | 0:f8aba92e4c46 | 111 | } |
OTBsolar | 0:f8aba92e4c46 | 112 | } |