Based on Ale C. program

Dependencies:   mbed EthernetNetIf

Committer:
nenad
Date:
Tue May 03 20:07:22 2011 +0000
Revision:
0:733a3a171a22
Child:
1:98d377ac0af5
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nenad 0:733a3a171a22 1 /*
nenad 0:733a3a171a22 2 \file main.cpp
nenad 0:733a3a171a22 3 \version: 1.0
nenad 0:733a3a171a22 4
nenad 0:733a3a171a22 5 \brief Este fichero contiene ejemplo para sincronizacion de fecha y hora
nenad 0:733a3a171a22 6 mediante TCPClient
nenad 0:733a3a171a22 7
nenad 0:733a3a171a22 8 \web www.micros-designs.com.ar
nenad 0:733a3a171a22 9 \date 19/01/11
nenad 0:733a3a171a22 10
nenad 0:733a3a171a22 11 *- Version Log --------------------------------------------------------------*
nenad 0:733a3a171a22 12 * Fecha Autor Comentarios *
nenad 0:733a3a171a22 13 *----------------------------------------------------------------------------*
nenad 0:733a3a171a22 14 * 19/01/11 Suky Original *
nenad 0:733a3a171a22 15 *----------------------------------------------------------------------------*
nenad 0:733a3a171a22 16 */
nenad 0:733a3a171a22 17 #include "mbed.h"
nenad 0:733a3a171a22 18 #include "EthernetNetIf.h"
nenad 0:733a3a171a22 19 #include "TCPSocket.h"
nenad 0:733a3a171a22 20 // **********************************************************************
nenad 0:733a3a171a22 21 #define SERVER_ADR IpAddr(192,168,1,110) // server address
nenad 0:733a3a171a22 22 #define SERVER_PORT 12345 // server address
nenad 0:733a3a171a22 23 // **********************************************************************
nenad 0:733a3a171a22 24 DigitalIn button(p8);
nenad 0:733a3a171a22 25 // **********************************************************************
nenad 0:733a3a171a22 26
nenad 0:733a3a171a22 27 DigitalOut led4(LED4, "led4");
nenad 0:733a3a171a22 28 int global_counter=0;
nenad 0:733a3a171a22 29
nenad 0:733a3a171a22 30 //EthernetNetIf eth;//using DHCP
nenad 0:733a3a171a22 31 EthernetNetIf eth(//manual configuration
nenad 0:733a3a171a22 32 IpAddr(192,168,1,111), //IP Address
nenad 0:733a3a171a22 33 IpAddr(255,255,255,0), //Network Mask
nenad 0:733a3a171a22 34 IpAddr(192,168,1,1), //Gateway
nenad 0:733a3a171a22 35 IpAddr(192,168,1,1) //DNS
nenad 0:733a3a171a22 36 );
nenad 0:733a3a171a22 37
nenad 0:733a3a171a22 38 TCPSocket tcp;
nenad 0:733a3a171a22 39 Host server(SERVER_ADR,SERVER_PORT,"PMK server");
nenad 0:733a3a171a22 40 // **********************************************************************
nenad 0:733a3a171a22 41 struct{
nenad 0:733a3a171a22 42 int connected;
nenad 0:733a3a171a22 43 int writeable;
nenad 0:733a3a171a22 44 int readable;
nenad 0:733a3a171a22 45 }flags;
nenad 0:733a3a171a22 46 // **********************************************************************
nenad 0:733a3a171a22 47 void onTCPSocketEvent(TCPSocketEvent e){
nenad 0:733a3a171a22 48 //printf("New TCPSocketEvent: %d\r\n",e);
nenad 0:733a3a171a22 49 switch(e){
nenad 0:733a3a171a22 50 case TCPSOCKET_CONNECTED: flags.connected = 1;break;
nenad 0:733a3a171a22 51 case TCPSOCKET_WRITEABLE: flags.writeable = 1;break;
nenad 0:733a3a171a22 52 case TCPSOCKET_READABLE: flags.readable = 1;break;
nenad 0:733a3a171a22 53 case TCPSOCKET_CONTIMEOUT:
nenad 0:733a3a171a22 54 case TCPSOCKET_CONRST:
nenad 0:733a3a171a22 55 case TCPSOCKET_CONABRT:
nenad 0:733a3a171a22 56 case TCPSOCKET_ERROR:
nenad 0:733a3a171a22 57 case TCPSOCKET_DISCONNECTED:
nenad 0:733a3a171a22 58 tcp.close();
nenad 0:733a3a171a22 59 flags.connected = 0;
nenad 0:733a3a171a22 60 break;
nenad 0:733a3a171a22 61 }
nenad 0:733a3a171a22 62 }
nenad 0:733a3a171a22 63 // **********************************************************************
nenad 0:733a3a171a22 64 int main(){
nenad 0:733a3a171a22 65 button.mode(PullUp);
nenad 0:733a3a171a22 66
nenad 0:733a3a171a22 67 printf("Setting up...\n");
nenad 0:733a3a171a22 68 EthernetErr ethErr = eth.setup();
nenad 0:733a3a171a22 69 if(ethErr){
nenad 0:733a3a171a22 70 printf("Ethernet Error %d\n", ethErr);
nenad 0:733a3a171a22 71 return -1;
nenad 0:733a3a171a22 72 }else{
nenad 0:733a3a171a22 73 printf("mbed is online...\n");
nenad 0:733a3a171a22 74 }
nenad 0:733a3a171a22 75
nenad 0:733a3a171a22 76 flags.connected=0;
nenad 0:733a3a171a22 77 flags.writeable=1;
nenad 0:733a3a171a22 78 flags.readable=0;
nenad 0:733a3a171a22 79 tcp.setOnEvent(&onTCPSocketEvent);
nenad 0:733a3a171a22 80
nenad 0:733a3a171a22 81 printf("Conecting host...\n");
nenad 0:733a3a171a22 82 TCPSocketErr err = tcp.connect(server);
nenad 0:733a3a171a22 83 if(err){
nenad 0:733a3a171a22 84 printf("Error connecting\n");
nenad 0:733a3a171a22 85 }
nenad 0:733a3a171a22 86
nenad 0:733a3a171a22 87 Timer tmr;
nenad 0:733a3a171a22 88 tmr.start();
nenad 0:733a3a171a22 89
nenad 0:733a3a171a22 90 while(true){
nenad 0:733a3a171a22 91 Net::poll();
nenad 0:733a3a171a22 92
nenad 0:733a3a171a22 93 if(!button){
nenad 0:733a3a171a22 94 printf("Conecting host...\n");
nenad 0:733a3a171a22 95 TCPSocketErr err = tcp.connect(server);
nenad 0:733a3a171a22 96 if(err){
nenad 0:733a3a171a22 97 printf("Error connecting\n");
nenad 0:733a3a171a22 98 }
nenad 0:733a3a171a22 99 }
nenad 0:733a3a171a22 100
nenad 0:733a3a171a22 101 if(flags.readable==1){
nenad 0:733a3a171a22 102 char Buffer[100]={0};
nenad 0:733a3a171a22 103 flags.readable=0;
nenad 0:733a3a171a22 104 tcp.recv(Buffer,100);
nenad 0:733a3a171a22 105 printf("received from server: %s\r\n", Buffer);
nenad 0:733a3a171a22 106 printf("\r\n");
nenad 0:733a3a171a22 107 }// end if
nenad 0:733a3a171a22 108
nenad 0:733a3a171a22 109 if(tmr.read() > 2) // sec
nenad 0:733a3a171a22 110 {
nenad 0:733a3a171a22 111 led4=!led4; //Show that we are alive
nenad 0:733a3a171a22 112 tmr.reset();
nenad 0:733a3a171a22 113 if(flags.writeable==1){
nenad 0:733a3a171a22 114 flags.writeable=0;
nenad 0:733a3a171a22 115 global_counter++;
nenad 0:733a3a171a22 116 char Buffer[100]={0};
nenad 0:733a3a171a22 117 sprintf(Buffer,"%d", global_counter);
nenad 0:733a3a171a22 118 tcp.send(Buffer,strlen(Buffer));
nenad 0:733a3a171a22 119 printf("data sent to server:%d\r\n", global_counter);
nenad 0:733a3a171a22 120
nenad 0:733a3a171a22 121 };
nenad 0:733a3a171a22 122 }
nenad 0:733a3a171a22 123
nenad 0:733a3a171a22 124 }// end while(true)
nenad 0:733a3a171a22 125 }// end main
nenad 0:733a3a171a22 126 // **********************************************************************