Based on Ale C. program
Dependencies: mbed EthernetNetIf
main.cpp@2:67b04d61fdaf, 2015-04-30 (annotated)
- Committer:
- nenad
- Date:
- Thu Apr 30 13:26:16 2015 +0000
- Revision:
- 2:67b04d61fdaf
- Parent:
- 1:98d377ac0af5
azurirani portovi
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nenad | 1:98d377ac0af5 | 1 | |
nenad | 0:733a3a171a22 | 2 | #include "mbed.h" |
nenad | 0:733a3a171a22 | 3 | #include "EthernetNetIf.h" |
nenad | 0:733a3a171a22 | 4 | #include "TCPSocket.h" |
nenad | 0:733a3a171a22 | 5 | // ********************************************************************** |
nenad | 0:733a3a171a22 | 6 | #define SERVER_ADR IpAddr(192,168,1,110) // server address |
nenad | 0:733a3a171a22 | 7 | #define SERVER_PORT 12345 // server address |
nenad | 0:733a3a171a22 | 8 | // ********************************************************************** |
nenad | 0:733a3a171a22 | 9 | |
nenad | 0:733a3a171a22 | 10 | DigitalOut led4(LED4, "led4"); |
nenad | 0:733a3a171a22 | 11 | int global_counter=0; |
nenad | 0:733a3a171a22 | 12 | |
nenad | 0:733a3a171a22 | 13 | //EthernetNetIf eth;//using DHCP |
nenad | 0:733a3a171a22 | 14 | EthernetNetIf eth(//manual configuration |
nenad | 0:733a3a171a22 | 15 | IpAddr(192,168,1,111), //IP Address |
nenad | 0:733a3a171a22 | 16 | IpAddr(255,255,255,0), //Network Mask |
nenad | 0:733a3a171a22 | 17 | IpAddr(192,168,1,1), //Gateway |
nenad | 0:733a3a171a22 | 18 | IpAddr(192,168,1,1) //DNS |
nenad | 0:733a3a171a22 | 19 | ); |
nenad | 0:733a3a171a22 | 20 | |
nenad | 0:733a3a171a22 | 21 | TCPSocket tcp; |
nenad | 0:733a3a171a22 | 22 | Host server(SERVER_ADR,SERVER_PORT,"PMK server"); |
nenad | 0:733a3a171a22 | 23 | // ********************************************************************** |
nenad | 0:733a3a171a22 | 24 | struct{ |
nenad | 0:733a3a171a22 | 25 | int connected; |
nenad | 0:733a3a171a22 | 26 | int writeable; |
nenad | 0:733a3a171a22 | 27 | int readable; |
nenad | 0:733a3a171a22 | 28 | }flags; |
nenad | 0:733a3a171a22 | 29 | // ********************************************************************** |
nenad | 0:733a3a171a22 | 30 | void onTCPSocketEvent(TCPSocketEvent e){ |
nenad | 0:733a3a171a22 | 31 | //printf("New TCPSocketEvent: %d\r\n",e); |
nenad | 0:733a3a171a22 | 32 | switch(e){ |
nenad | 0:733a3a171a22 | 33 | case TCPSOCKET_CONNECTED: flags.connected = 1;break; |
nenad | 0:733a3a171a22 | 34 | case TCPSOCKET_WRITEABLE: flags.writeable = 1;break; |
nenad | 0:733a3a171a22 | 35 | case TCPSOCKET_READABLE: flags.readable = 1;break; |
nenad | 0:733a3a171a22 | 36 | case TCPSOCKET_CONTIMEOUT: |
nenad | 0:733a3a171a22 | 37 | case TCPSOCKET_CONRST: |
nenad | 0:733a3a171a22 | 38 | case TCPSOCKET_CONABRT: |
nenad | 0:733a3a171a22 | 39 | case TCPSOCKET_ERROR: |
nenad | 0:733a3a171a22 | 40 | case TCPSOCKET_DISCONNECTED: |
nenad | 0:733a3a171a22 | 41 | tcp.close(); |
nenad | 0:733a3a171a22 | 42 | flags.connected = 0; |
nenad | 0:733a3a171a22 | 43 | break; |
nenad | 0:733a3a171a22 | 44 | } |
nenad | 0:733a3a171a22 | 45 | } |
nenad | 0:733a3a171a22 | 46 | // ********************************************************************** |
nenad | 0:733a3a171a22 | 47 | int main(){ |
nenad | 2:67b04d61fdaf | 48 | //button.mode(PullUp); |
nenad | 0:733a3a171a22 | 49 | |
nenad | 0:733a3a171a22 | 50 | printf("Setting up...\n"); |
nenad | 0:733a3a171a22 | 51 | EthernetErr ethErr = eth.setup(); |
nenad | 0:733a3a171a22 | 52 | if(ethErr){ |
nenad | 0:733a3a171a22 | 53 | printf("Ethernet Error %d\n", ethErr); |
nenad | 0:733a3a171a22 | 54 | return -1; |
nenad | 0:733a3a171a22 | 55 | }else{ |
nenad | 0:733a3a171a22 | 56 | printf("mbed is online...\n"); |
nenad | 0:733a3a171a22 | 57 | } |
nenad | 0:733a3a171a22 | 58 | |
nenad | 0:733a3a171a22 | 59 | flags.connected=0; |
nenad | 0:733a3a171a22 | 60 | flags.writeable=1; |
nenad | 0:733a3a171a22 | 61 | flags.readable=0; |
nenad | 0:733a3a171a22 | 62 | tcp.setOnEvent(&onTCPSocketEvent); |
nenad | 0:733a3a171a22 | 63 | |
nenad | 0:733a3a171a22 | 64 | printf("Conecting host...\n"); |
nenad | 0:733a3a171a22 | 65 | TCPSocketErr err = tcp.connect(server); |
nenad | 0:733a3a171a22 | 66 | if(err){ |
nenad | 0:733a3a171a22 | 67 | printf("Error connecting\n"); |
nenad | 0:733a3a171a22 | 68 | } |
nenad | 0:733a3a171a22 | 69 | |
nenad | 0:733a3a171a22 | 70 | Timer tmr; |
nenad | 0:733a3a171a22 | 71 | tmr.start(); |
nenad | 0:733a3a171a22 | 72 | |
nenad | 0:733a3a171a22 | 73 | while(true){ |
nenad | 0:733a3a171a22 | 74 | Net::poll(); |
nenad | 0:733a3a171a22 | 75 | |
nenad | 1:98d377ac0af5 | 76 | |
nenad | 0:733a3a171a22 | 77 | if(flags.readable==1){ |
nenad | 0:733a3a171a22 | 78 | char Buffer[100]={0}; |
nenad | 0:733a3a171a22 | 79 | flags.readable=0; |
nenad | 0:733a3a171a22 | 80 | tcp.recv(Buffer,100); |
nenad | 0:733a3a171a22 | 81 | printf("received from server: %s\r\n", Buffer); |
nenad | 0:733a3a171a22 | 82 | printf("\r\n"); |
nenad | 0:733a3a171a22 | 83 | }// end if |
nenad | 0:733a3a171a22 | 84 | |
nenad | 0:733a3a171a22 | 85 | if(tmr.read() > 2) // sec |
nenad | 0:733a3a171a22 | 86 | { |
nenad | 0:733a3a171a22 | 87 | led4=!led4; //Show that we are alive |
nenad | 0:733a3a171a22 | 88 | tmr.reset(); |
nenad | 0:733a3a171a22 | 89 | if(flags.writeable==1){ |
nenad | 0:733a3a171a22 | 90 | flags.writeable=0; |
nenad | 0:733a3a171a22 | 91 | global_counter++; |
nenad | 0:733a3a171a22 | 92 | char Buffer[100]={0}; |
nenad | 0:733a3a171a22 | 93 | sprintf(Buffer,"%d", global_counter); |
nenad | 0:733a3a171a22 | 94 | tcp.send(Buffer,strlen(Buffer)); |
nenad | 0:733a3a171a22 | 95 | printf("data sent to server:%d\r\n", global_counter); |
nenad | 0:733a3a171a22 | 96 | |
nenad | 0:733a3a171a22 | 97 | }; |
nenad | 0:733a3a171a22 | 98 | } |
nenad | 0:733a3a171a22 | 99 | |
nenad | 0:733a3a171a22 | 100 | }// end while(true) |
nenad | 0:733a3a171a22 | 101 | }// end main |
nenad | 0:733a3a171a22 | 102 | // ********************************************************************** |