Based on Ale C. program

Dependencies:   mbed EthernetNetIf

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?

UserRevisionLine numberNew 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 // **********************************************************************