Red Light Work

Fork of realtimeMMLib by Graham Nicholson

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Coms.cpp Source File

Coms.cpp

00001 #include "Coms.h"
00002 #include "mbed.h"
00003 #include "rtos.h"
00004 #include "EthernetInterface.h"
00005 
00006 EthernetInterface eth;
00007 TCPSocketConnection sock;
00008 
00009 int Coms::EthernetInitialise (char* IPAddress, char* NetworkMask, char* DefaultGateway)
00010 {
00011     int error;
00012     int retrys = 5;
00013     int retval;
00014     
00015     while (true)
00016     {
00017                     
00018         error = eth.init(IPAddress, NetworkMask, DefaultGateway); // Use static IP
00019         
00020         if (error) {
00021             printf("Error: Could not initialise ethernet (code %i) - Retry (%d)...\r\n", error, retrys);
00022             Thread::wait(5000);
00023             retrys--;
00024             if (retrys)
00025                 continue;
00026             else
00027                 retval=error;
00028                 break;
00029         }
00030         else {
00031             printf("Ethernet Initialised\r\n");
00032             retval=0;
00033         }
00034         break;
00035     }
00036     return retval;
00037  }       
00038 
00039 char* Coms::getMACAddress()
00040 {
00041     return eth.getMACAddress();
00042 }
00043         
00044 int Coms::EthernetConnect()
00045 {
00046     int error;
00047     int retrys = 5;      
00048     int retval;
00049         
00050     while (true)
00051     {
00052         error = eth.connect(30000);
00053         if (error) {
00054             printf("Error: Could not obtain IP address (code %i) - Retry (%d)...\r\n", error, retrys);
00055             retrys--;
00056             if (retrys)
00057                 continue;
00058             else
00059                 retval=error;
00060                 break;
00061         }
00062         else {
00063             printf("Ethernet connected\r\n");
00064             retval=0;
00065         }        
00066         break;
00067     }
00068     return retval;
00069 }
00070 
00071 void Coms::EthernetDisconnect()
00072 {
00073     eth.disconnect();
00074 }
00075 
00076 int Coms::EthernetSocketConnect (char* IPAddress, int Port)
00077 {
00078     int error;
00079     int retrys = 5;
00080     int retval;
00081     
00082     while (true)
00083     {
00084                     
00085         error = sock.connect(IPAddress, Port);
00086         
00087         if (error) {
00088             printf("Error: Could not connect (code %i). Retry (%d) in 2s...\r\n", error, retrys);
00089             Thread::wait(2000);
00090             retrys--;
00091             if (retrys)
00092                 continue;
00093             else
00094                 retval=error;
00095                 break;
00096         }
00097         else {
00098             retval=0;
00099             printf("Socket Connected\r\n");
00100         }
00101         break;
00102     }
00103     return retval;
00104  }  
00105  
00106  int Coms::EthernetSocketSendAll (char* datasample, int samplesize)
00107 {
00108     int error;
00109     int retrys = 5;
00110     int retval;
00111     
00112     while (true)
00113     {
00114                     
00115         //error = sock.send_all(datasample, sizeof(datasample)-1);
00116         error = sock.send_all(datasample, samplesize);
00117         
00118         printf("Sending %s length %i\r\n",datasample,samplesize);
00119         
00120         if (error<1) 
00121         {
00122             printf("Error: Could not send http request (code %i) - Retry (%d) in 1s...\r\n", error, retrys);
00123             Thread::wait(1000);
00124             retrys--;
00125             if (retrys)
00126                 continue;
00127             else
00128                 retval=error;
00129                 break;
00130         }
00131         printf("Message Sent\r\n");
00132         retval=0;
00133         break;
00134     }
00135     return retval;
00136  } 
00137  
00138  
00139   int Coms::EthernetSocketReceive (char* datasample, int samplesize)
00140 {
00141     int retval;
00142     retval = sock.receive(datasample, samplesize);
00143     return retval;   
00144  }
00145  
00146  int Coms::EthernetSocketClose()
00147  {
00148      sock.close();
00149  }