Based on Ale C. program
Dependencies: mbed EthernetNetIf
main.cpp@0:733a3a171a22, 2011-05-03 (annotated)
- Committer:
- nenad
- Date:
- Tue May 03 20:07:22 2011 +0000
- Revision:
- 0:733a3a171a22
- Child:
- 1:98d377ac0af5
1
Who changed what in which revision?
User | Revision | Line number | New 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 | // ********************************************************************** |