Tadao Iida / Mbed 2 deprecated TCPCtrlServer

Dependencies:   EthernetNetIf TextLCD mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "EthernetNetIf.h"
00003 #include "TCPSocket.h"
00004 #include "TextLCD.h"
00005 
00006 #define TCP_LISTENING_PORT 50505
00007 
00008 BusOut myleds(LED1, LED2, LED3, LED4);
00009 TextLCD lcd(p24, p26, p27, p28, p29, p30);
00010 
00011 void onTCPSocketEvent(TCPSocketEvent e) ;
00012 void onConnectedTCPSocketEvent(TCPSocketEvent e) ;
00013 
00014 EthernetNetIf eth ;   
00015 TCPSocketErr tcpErr ;
00016 TCPSocket tcpSock ;
00017 TCPSocket* pConnectedSock ;
00018 Host client ;
00019 
00020 int main() {
00021     lcd.locate(0,0);
00022     lcd.printf("Setting up...");    
00023     EthernetNetIf eth; //(1)
00024     //EthernetNetIf eth( // (2)  -- static IP address 
00025     //    IpAddr(192,168,0,6),     // IP Address
00026     //    IpAddr(255,255,255,0),   // Subnet Mask
00027     //    IpAddr(192,168,0,1),     // Default Gateway
00028     //    IpAddr(192,168,0,1)      // DNS Server
00029     //) ;    
00030     
00031     EthernetErr ethErr = eth.setup(); 
00032     if( ethErr != ETH_OK )
00033     {
00034         lcd.locate(0,0);   
00035         printf("Error %d in setup.\r\n", ethErr);
00036         lcd.printf("NW Setup Error!", ethErr);
00037         return -1;
00038     }
00039     lcd.locate(0,0);
00040     lcd.printf("Setup OK     ");
00041     printf("Setup OK\r\n");
00042     
00043     IpAddr ip = eth.getIp() ;
00044  
00045     lcd.locate(0,1);
00046     lcd.printf("%d.%d.%d.%d",ip[0],ip[1],ip[2],ip[3]);
00047     
00048     printf("mbed IP Address is [%d.%d.%d.%d]\r\n", ip[0], ip[1], ip[2], ip[3]) ;
00049         
00050     tcpSock.setOnEvent(&onTCPSocketEvent) ;
00051     
00052     printf("Bindding...\r\n") ;
00053     tcpErr = tcpSock.bind(Host(IpAddr(), TCP_LISTENING_PORT));
00054     if ( tcpErr != ETH_OK ){
00055         printf("Bindding Error.\r\n") ;
00056         return -1 ;
00057     }
00058     
00059     printf("Listen...\r\n");
00060     tcpErr = tcpSock.listen() ;
00061     if ( tcpErr != ETH_OK ){
00062         printf("Listen Error.\r\n") ;
00063         return -1 ;
00064     }
00065    
00066     while(1) {
00067         Net::poll();       
00068     }
00069 }
00070 
00071 void onTCPSocketEvent(TCPSocketEvent e)
00072 {
00073     printf("---IN TCPSocketEvent ---\r\n");
00074     
00075     if ( e == TCPSOCKET_ACCEPT ){
00076         printf("Listening: TCP Socket Accepted\r\n");
00077         tcpErr=tcpSock.accept(&client, &pConnectedSock);
00078 
00079         if ( tcpErr != TCPSOCKET_OK ) {
00080             printf("onTcpSocketEvent Error \r\n");
00081             return; 
00082         }
00083         pConnectedSock->setOnEvent(&onConnectedTCPSocketEvent);
00084         IpAddr clientIp = client.getIp();
00085         printf("Controler IP Address is [%d.%d.%d.%d].\r\n", 
00086             clientIp[0], clientIp[1], clientIp[2], clientIp[3]);
00087     }
00088     printf("--- OUT TCPSocketEvent ---\r\n\r\n") ;
00089  }
00090 
00091 void onConnectedTCPSocketEvent(TCPSocketEvent e)
00092 {
00093     printf("--- IN ConnectEvent ---\r\n");
00094     char buf[128] ;
00095     
00096     switch(e)
00097     {
00098         case TCPSOCKET_CONNECTED:
00099             printf("Connected to host.\r\n") ;
00100             break;
00101         case TCPSOCKET_WRITEABLE:
00102             printf("Can write data to buf.\r\n");
00103             break;
00104         case TCPSOCKET_READABLE:
00105             printf("Data in buf.\r\n");
00106             pConnectedSock->recv(buf,sizeof(buf)) ;
00107             printf("n = %s\r\n",buf) ;
00108             myleds = atoi(buf) ;
00109             break;
00110         case TCPSOCKET_CONTIMEOUT:
00111             printf("Connection timed out.\r\n");
00112             break ;
00113         case TCPSOCKET_CONRST:
00114             printf("Connection was reset by remote host.\r\n");
00115             break ;
00116         case TCPSOCKET_CONABRT:
00117             printf("Connection was aborted.\r\n") ; 
00118             break ;
00119         case TCPSOCKET_ERROR:
00120             printf("Unknown error.\r\n") ;
00121             break ;
00122          case TCPSOCKET_DISCONNECTED:
00123             printf("Tcp Socket Disconnected\r\n") ;
00124             pConnectedSock->close() ;
00125             break;   
00126     }
00127     printf("--- OUT ConnectEvent ---\r\n\r\n");
00128 }