Tadao Iida / Mbed 2 deprecated TCPCtrlServer

Dependencies:   EthernetNetIf TextLCD mbed

Committer:
sunifu
Date:
Sun Oct 10 10:59:30 2010 +0000
Revision:
0:b75f48b4f752
Child:
1:cb49bd07d33d

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sunifu 0:b75f48b4f752 1 #include "mbed.h"
sunifu 0:b75f48b4f752 2 #include "EthernetNetIf.h"
sunifu 0:b75f48b4f752 3 #include "TCPSocket.h"
sunifu 0:b75f48b4f752 4
sunifu 0:b75f48b4f752 5 #define TCP_LISTENING_PORT 50505
sunifu 0:b75f48b4f752 6
sunifu 0:b75f48b4f752 7 BusOut myleds(LED1, LED2, LED3, LED4);
sunifu 0:b75f48b4f752 8
sunifu 0:b75f48b4f752 9 void onTCPSocketEvent(TCPSocketEvent e) ;
sunifu 0:b75f48b4f752 10 void onConnectedTCPSocketEvent(TCPSocketEvent e) ;
sunifu 0:b75f48b4f752 11
sunifu 0:b75f48b4f752 12 EthernetNetIf eth ;
sunifu 0:b75f48b4f752 13 TCPSocketErr tcpErr ;
sunifu 0:b75f48b4f752 14 TCPSocket tcpSock ;
sunifu 0:b75f48b4f752 15 TCPSocket* pConnectedSock ;
sunifu 0:b75f48b4f752 16 Host client ;
sunifu 0:b75f48b4f752 17
sunifu 0:b75f48b4f752 18 int main() {
sunifu 0:b75f48b4f752 19
sunifu 0:b75f48b4f752 20 printf("Setting up...\r\n");
sunifu 0:b75f48b4f752 21 EthernetErr ethErr = eth.setup();
sunifu 0:b75f48b4f752 22 if( ethErr != ETH_OK )
sunifu 0:b75f48b4f752 23 {
sunifu 0:b75f48b4f752 24 printf("Error %d in setup.\r\n", ethErr);
sunifu 0:b75f48b4f752 25 return -1;
sunifu 0:b75f48b4f752 26 }
sunifu 0:b75f48b4f752 27 printf("Setup OK\r\n");
sunifu 0:b75f48b4f752 28
sunifu 0:b75f48b4f752 29 IpAddr ip = eth.getIp() ;
sunifu 0:b75f48b4f752 30 printf("mbed IP Address is [%d.%d.%d.%d]\r\n", ip[0], ip[1], ip[2], ip[3]) ;
sunifu 0:b75f48b4f752 31
sunifu 0:b75f48b4f752 32 tcpSock.setOnEvent(&onTCPSocketEvent) ;
sunifu 0:b75f48b4f752 33
sunifu 0:b75f48b4f752 34 printf("Bindding...\r\n") ;
sunifu 0:b75f48b4f752 35 tcpErr = tcpSock.bind(Host(IpAddr(), TCP_LISTENING_PORT));
sunifu 0:b75f48b4f752 36 if ( tcpErr != ETH_OK ){
sunifu 0:b75f48b4f752 37 printf("Bindding Error.\r\n") ;
sunifu 0:b75f48b4f752 38 return -1 ;
sunifu 0:b75f48b4f752 39 }
sunifu 0:b75f48b4f752 40
sunifu 0:b75f48b4f752 41 printf("Listen...\r\n");
sunifu 0:b75f48b4f752 42 tcpErr = tcpSock.listen() ;
sunifu 0:b75f48b4f752 43 if ( tcpErr != ETH_OK ){
sunifu 0:b75f48b4f752 44 printf("Listen Error.\r\n") ;
sunifu 0:b75f48b4f752 45 return -1 ;
sunifu 0:b75f48b4f752 46 }
sunifu 0:b75f48b4f752 47
sunifu 0:b75f48b4f752 48 while(1) {
sunifu 0:b75f48b4f752 49 Net::poll();
sunifu 0:b75f48b4f752 50 }
sunifu 0:b75f48b4f752 51 }
sunifu 0:b75f48b4f752 52
sunifu 0:b75f48b4f752 53 void onTCPSocketEvent(TCPSocketEvent e)
sunifu 0:b75f48b4f752 54 {
sunifu 0:b75f48b4f752 55 printf("---IN TCPSocketEvent ---\r\n");
sunifu 0:b75f48b4f752 56
sunifu 0:b75f48b4f752 57 if ( e == TCPSOCKET_ACCEPT ){
sunifu 0:b75f48b4f752 58 printf("Listening: TCP Socket Accepted\r\n");
sunifu 0:b75f48b4f752 59 tcpErr=tcpSock.accept(&client, &pConnectedSock);
sunifu 0:b75f48b4f752 60
sunifu 0:b75f48b4f752 61 if ( tcpErr != TCPSOCKET_OK ) {
sunifu 0:b75f48b4f752 62 printf("onTcpSocketEvent Error \r\n");
sunifu 0:b75f48b4f752 63 return;
sunifu 0:b75f48b4f752 64 }
sunifu 0:b75f48b4f752 65 pConnectedSock->setOnEvent(&onConnectedTCPSocketEvent);
sunifu 0:b75f48b4f752 66 IpAddr clientIp = client.getIp();
sunifu 0:b75f48b4f752 67 printf("Controler IP Address is [%d.%d.%d.%d].\r\n",
sunifu 0:b75f48b4f752 68 clientIp[0], clientIp[1], clientIp[2], clientIp[3]);
sunifu 0:b75f48b4f752 69 }
sunifu 0:b75f48b4f752 70 printf("--- OUT TCPSocketEvent ---\r\n\r\n") ;
sunifu 0:b75f48b4f752 71 }
sunifu 0:b75f48b4f752 72
sunifu 0:b75f48b4f752 73 void onConnectedTCPSocketEvent(TCPSocketEvent e)
sunifu 0:b75f48b4f752 74 {
sunifu 0:b75f48b4f752 75 printf("--- IN ConnectEvent ---\r\n");
sunifu 0:b75f48b4f752 76 char buf[128] ;
sunifu 0:b75f48b4f752 77
sunifu 0:b75f48b4f752 78 switch(e)
sunifu 0:b75f48b4f752 79 {
sunifu 0:b75f48b4f752 80 case TCPSOCKET_CONNECTED:
sunifu 0:b75f48b4f752 81 printf("Connected to host.\r\n") ;
sunifu 0:b75f48b4f752 82 break;
sunifu 0:b75f48b4f752 83 case TCPSOCKET_WRITEABLE:
sunifu 0:b75f48b4f752 84 printf("Can write data to buf.\r\n");
sunifu 0:b75f48b4f752 85 break;
sunifu 0:b75f48b4f752 86 case TCPSOCKET_READABLE:
sunifu 0:b75f48b4f752 87 printf("Data in buf.\r\n");
sunifu 0:b75f48b4f752 88 pConnectedSock->recv(buf,sizeof(buf)) ;
sunifu 0:b75f48b4f752 89 printf("n = %s\r\n",buf) ;
sunifu 0:b75f48b4f752 90 myleds = atoi(buf) ;
sunifu 0:b75f48b4f752 91 break;
sunifu 0:b75f48b4f752 92 case TCPSOCKET_CONTIMEOUT:
sunifu 0:b75f48b4f752 93 printf("Connection timed out.\r\n");
sunifu 0:b75f48b4f752 94 break ;
sunifu 0:b75f48b4f752 95 case TCPSOCKET_CONRST:
sunifu 0:b75f48b4f752 96 printf("Connection was reset by remote host.\r\n");
sunifu 0:b75f48b4f752 97 break ;
sunifu 0:b75f48b4f752 98 case TCPSOCKET_CONABRT:
sunifu 0:b75f48b4f752 99 printf("Connection was aborted.\r\n") ;
sunifu 0:b75f48b4f752 100 break ;
sunifu 0:b75f48b4f752 101 case TCPSOCKET_ERROR:
sunifu 0:b75f48b4f752 102 printf("Unknown error.\r\n") ;
sunifu 0:b75f48b4f752 103 break ;
sunifu 0:b75f48b4f752 104 case TCPSOCKET_DISCONNECTED:
sunifu 0:b75f48b4f752 105 printf("Tcp Socket Disconnected\r\n") ;
sunifu 0:b75f48b4f752 106 pConnectedSock->close() ;
sunifu 0:b75f48b4f752 107 break;
sunifu 0:b75f48b4f752 108 }
sunifu 0:b75f48b4f752 109 printf("--- OUT ConnectEvent ---\r\n\r\n");
sunifu 0:b75f48b4f752 110 }