Eric-Ethernet-2019

Dependencies:   mbed mbed-rtos C12832_lcd NTPClient EthernetInterface

main.cpp

Committer:
Aryane
Date:
2019-02-07
Revision:
2:f3b7851c0245
Parent:
1:9095ffb76813

File content as of revision 2:f3b7851c0245:

#include "mbed.h"
#include "EthernetInterface.h"
#include "NTPClient.h"
#include "C12832_lcd.h"

C12832_LCD lcd; //Graphics LCD
EthernetInterface eth;
NTPClient ntp;
Serial pc(USBTX,USBRX);

TCPSocketServer server;
TCPSocketConnection client;
int serveur_port =2000;
DigitalOut myled(LED1);

char ip[]="192.168.1.10";
char masque[]="255.255.255.0";
char passerelle[]="192.168.1.254"; 

int main()
{  

// ANCIEN PROG
// int a; // moi
    //char * adresseIP;// moi, adresse IP est un pointeur sur une chaine de car, mais un car suffit
   // a=eth.init(); //Use DHCP, le a= c'est moi !
    //pc.printf("eth init= %d\n",a); // moi
    //wait(2);
    //lcd.cls();
    //lcd.printf("Getting IP Address\r\n");
    
    /*if(eth.connect(60000)!=0)
        {
          lcd.printf("DHCP error - No IP");
           wait(10);
        }
         else {
                adresseIP=eth.getIPAddress(); // moi, getIPAddress retourne un pointeur sur une chaine de car
                lcd.printf("IP is %s\n", adresseIP); // moi dans un pointeur sur un chaine de caractéres
                pc.printf("IP est %s\n",eth.getIPAddress()); // moi
                lcd.printf("MAC1 is %s\n", eth.getMACAddress());
                pc.printf("MAC est %s\n",eth.getMACAddress()); // moi
                wait(2);
              }
              
    lcd.cls();
    lcd.printf("Trying to update time...\r\n");
    
    if (ntp.setTime("0.pool.ntp.org") == 0) 
         {
           lcd.printf("Set time successfully\r\n");
            while(1) {
                      lcd.cls();
                      lcd.locate(0,0);
                      time_t ctTime;
                      ctTime = time(NULL);
                      lcd.printf("%s\r\n", ctime(&ctTime));
                      lcd.printf("Current Time (UTC)");
                      wait(1);
                     }
       } 
       else {
             lcd.printf("NTP Error\r\n");//rien
            }

    eth.disconnect();*/
    
    // FIN ANCIEN PROG 
    
    bool client_connected = false;
    char buffer[100];
    
     wait(2);
    lcd.cls();
    lcd.printf("Getting IP Address\r\n");
    pc.printf("Mon Port serie OK\n\r");
    
    /*if(eth.init(ip,masque,passerelle)!=0)
      {
        pc.printf("Erreur init Ethernet\n\r");
        return -1;
     }*/
     
     eth.init();
     
     if(eth.connect()!=0)
      {
        pc.printf("Erreur Connect\n\r");
        return -1;
     }
     
      lcd.printf("IP est %s\n",eth.getIPAddress());
      pc.printf("IP est %s\n",eth.getIPAddress()); // moi
      lcd.printf("MAC1 is %s\n", eth.getMACAddress());
      pc.printf("MAC est %s\n",eth.getMACAddress()); // moi
      wait(2);
      
      if(server.bind(serveur_port)!=0)
         {
          pc.printf("Erreur TCP Bind\n\r");
          return -1;         
         }
       wait(2);
       lcd.cls();
       
         
      lcd.printf("Succes TCP bind\n");
      pc.printf("Succes TCP Bind\n"); // moi
       wait(2);
       lcd.cls();
      
       if(server.listen()!=0)
         {
          pc.printf("Erreur TCP Listen \n");
          return -1;         
         }
       wait(2);
       lcd.cls();
         
      lcd.printf("Succes TCP listen\n");
      pc.printf("Succes TCP listen\n"); // moi
      
      wait(2);
      lcd.cls();
         
      lcd.printf("Connectez un client TCP \n");
       lcd.printf("sur le port 2000\n");
      pc.printf("Connectez un client TCP sur le port 2000\n"); // moi
      
      client.set_blocking(false,100); // timeout 100 ms
      
           
      

    while(1) {
             
               if(client_connected==false)
                  {
                  
                   
                    if(server.accept(client)!=0)
                      {
                       pc.printf("Erreur TCP Listen accepte client \n");
                      return -1;         
                      }
                     client_connected=true; 
                     lcd.printf("Client TCP connecte\n");
                     pc.printf("Client TCP connecte\n"); // moi
                     pc.printf(" Adresse IP du client %s\r\n",client.get_address());
                     client.send("Hello\r\n",strlen("Hello\r\n"));
                  
                   }   
                   else
                   {
                       if(client.is_connected())
                          {
                            if(pc.readable())
                              {
                               buffer[0]=pc.getc();
                               client.send(buffer,1);                              
                                  
                              }
                            int nbcaractere=client.receive(buffer,sizeof(buffer));
                            if (nbcaractere>0)
                               {
                                 buffer[nbcaractere-1]=0;
                                 pc.printf("%s",buffer);   
                                }             
                          }   
                          else
                            {
                             client_connected=false;
                             client.close();
                             pc.printf("client deconnecte\r\n");
                             pc.printf("Connectez un client sur le port TCP 2000....\r\n");
                            }    
                       
                   }    
           } // fin du while 1
     }