gefixte version 03122015

Dependencies:   EthernetInterface mbed-rtos

Fork of Telemetrie_eth_h2m by Hochschule München

Files at this revision

API Documentation at this revision

Comitter:
HMFK03LST1
Date:
Mon Nov 30 14:27:16 2015 +0000
Parent:
6:abadad863420
Child:
8:0efee67b5f76
Commit message:
Server Client UDP fix

Changed in this revision

Telemetry.cpp Show annotated file Show diff for this revision Revisions of this file
Telemetry.h Show annotated file Show diff for this revision Revisions of this file
--- a/Telemetry.cpp	Sun Nov 22 21:31:55 2015 +0000
+++ b/Telemetry.cpp	Mon Nov 30 14:27:16 2015 +0000
@@ -38,8 +38,8 @@
 */
 EthernetInterface   eth;
 TCPSocketConnection sock_tcp;
-UDPSocket           sock_udp_send;  //send socket
-UDPSocket           sock_udp_rec;   //receive socket
+UDPSocket           sock_udp_client;  //send socket
+UDPSocket           sock_udp_server;   //receive socket
 
 
     
@@ -47,9 +47,11 @@
 /** Create a new Ethernet interface
   *
   */
-Telemetry::Telemetry()
-{
+Telemetry::Telemetry(PinName ora, PinName gre):orange(ora),green(gre)
+{ 
     InitSucceed = false;
+    green = 0;
+    orange = 0;
 }
 
 
@@ -99,6 +101,7 @@
             printf("IP Adresse: %s\r\n\r\n", eth.getIPAddress());
             #endif
             ReturnValue = true;
+            green = 1;
         }
         else
         {
@@ -139,6 +142,7 @@
     {   
         if (eth.connect(2500)==0) //CONNECT
         {
+            green = 1;
             #ifdef DEBUG
             serial.printf("Init success!");
             #endif
@@ -171,7 +175,7 @@
 
 
 //! Connect Port TCP 
-void Telemetry::ConnectSocket_tcp(Endpoint Host)
+void Telemetry::ConnectSocket_TCP(Endpoint Host)
 {
     sock_tcp.connect(Host.get_address(), Host.get_port());
     sock_tcp.set_blocking(false, 0);
@@ -182,30 +186,30 @@
 
 
 //! Connect Port UDP receive 
-void Telemetry::ConnectSocket_udp_rec(int Port)
+void Telemetry::ConnectSocket_UDP_Client()
 {
-    sock_udp_rec.bind(Port);
-    sock_udp_rec.set_blocking(false, 0);  
+    sock_udp_client.init();
+    sock_udp_client.set_blocking(false, 0);  
 
     #ifdef DEBUG
-    serial.printf("Open UDP_receive Socket on Port:%d.\r\n\r\n",Port);
+    serial.printf("Open UDP_Client Socket\r\n\r\n");
     #endif
 }
 
 
 //! Connect Port UDP send
-void Telemetry::ConnectSocket_udp_send()
+void Telemetry::ConnectSocket_UDP_Server(int Port)
 {
-    sock_udp_send.init();
- 
+    sock_udp_server.init();
+    sock_udp_server.bind(Port);
     #ifdef DEBUG
-    serial.printf("Open UDP_send Socket.\r\n\r\n");
+    serial.printf("Open UDP_Server on Port: %d.\r\n\r\n",Port);
     #endif
 }
 
 
 //! Close Port TCP
-void Telemetry::CloseSocket_tcp()
+void Telemetry::CloseSocket_TCP()
 {
     sock_tcp.close();
 
@@ -216,22 +220,22 @@
 
 
 //! Close Port UDP receive
-void Telemetry::CloseSocket_udp_rec()
+void Telemetry::CloseSocket_UDP_Client()
 {
- sock_udp_rec.close();   
+ sock_udp_client.close();   
   #ifdef DEBUG
-    serial.printf("UDP receive Socket closed.\r\n\r\n");
+    serial.printf("UDP Client Socket closed.\r\n\r\n");
   #endif
 }
 
 
 //! Close Port UDP send
-void Telemetry::CloseSocket_udp_send()
+void Telemetry::CloseSocket_UDP_Server()
 {
-    sock_udp_send.close();
+    sock_udp_server.close();
 
     #ifdef DEBUG
-    serial.printf("UDP send Socket closed.\r\n\r\n");
+    serial.printf("UDP Server Socket closed.\r\n\r\n");
     #endif
 }
 
@@ -252,17 +256,23 @@
 }
 
 
-//! Read UDP Packet
-int Telemetry::Rec_Data_UDP(char *buffer, int size)
+//! Read UDP Packet on Client Port
+int Telemetry::Rec_Data_UDP_Client(char *buffer, int size)
 {
-  return sock_udp_rec.receiveFrom(input_Host, buffer, size);    
+  return sock_udp_client.receiveFrom(input_Client, buffer, size);    
 }
 
+//! Read UDP Packet on Server Port
+int Telemetry::Rec_Data_UDP_Server(char *buffer, int size)
+{
+  return sock_udp_server.receiveFrom(input_Server, buffer, size);    
+}
 
+    
 //! Check UDP Packet of containing Struct
-bool Telemetry::Rec_Struct_UDP(uint8_t *buffer)
-{
-  sock_udp_rec.receiveFrom(input_Host,(char*) buffer, 255);    
+bool Telemetry::Rec_Struct(uint8_t *buffer)
+{    
+  orange = !orange;
   if (buffer[buffer[0]-1] == do_cs(buffer)) return true;
   else return false;
 }
@@ -271,28 +281,46 @@
 //! Read TCP Packet
 int Telemetry::Rec_Data_TCP(char *buffer,int size)
 { 
+        orange = !orange;
         return sock_tcp.receive(buffer, size);
 }
 
 
-//! Send UDP Packet
-void Telemetry::Send_Data_UDP(Endpoint Server, char* Daten, int size )
+//! Send UDP Packet as Client
+void Telemetry::Send_Data_UDP_Client(Endpoint Server, char* Daten, int size )
 {   
-    sock_udp_send.sendTo(Server, Daten, size);   
-
+    sock_udp_client.sendTo(Server, Daten, size);   
+    orange = !orange;
     #ifdef DEBUG
     serial.printf("UDP Paket gesendet.\r\n\r\n");
     #endif
 }
 
+//! Send UDP Packet as Server
+void Telemetry::Send_Data_UDP_Server(Endpoint Client, char* Daten, int size )
+{   
+    sock_udp_server.sendTo(Client, Daten, size);   
+    orange = !orange;
+    #ifdef DEBUG
+    serial.printf("UDP Paket gesendet.\r\n\r\n");
+    #endif
+}
 
-//! Send Struct as UDP Packet
-void Telemetry::Send_Struct_UDP(Endpoint Server, uint8_t* Daten)
+//! Send Struct as UDP Client
+void Telemetry::Send_Struct_UDP_Client(Endpoint Server, uint8_t* Daten)
 {   
     Daten[(*Daten - 1)] = do_cs(Daten);
-    sock_udp_send.sendTo(Server, (char*)Daten, *Daten);   
+    sock_udp_client.sendTo(Server, (char*)Daten, *Daten);   
+    orange = !orange;
 }
 
+//! Send Struct as UDP Server
+void Telemetry::Send_Struct_UDP_Server(Endpoint Client, uint8_t* Daten)
+{   
+    Daten[(*Daten - 1)] = do_cs(Daten);
+    sock_udp_server.sendTo(Client, (char*)Daten, *Daten);   
+    orange = !orange;
+}
 
 //! Send TCP Packet
 void Telemetry::Send_Data_TCP(char* Host, char* Buffer)
--- a/Telemetry.h	Sun Nov 22 21:31:55 2015 +0000
+++ b/Telemetry.h	Mon Nov 30 14:27:16 2015 +0000
@@ -60,8 +60,8 @@
  * struct_test  test;
  *
  * uint8_t* struct_id[] {
- *                         &test     //ID0
- *                        };
+ *                       &test     //ID0
+ *                      };
  *                        
  * main
  * {
@@ -90,7 +90,7 @@
  *
  *    wait(1);
  *   }        
- *}          
+ * }          
  * 
  * @endcode
  */ 
@@ -101,8 +101,11 @@
 {
     public:
         //! Create Ethernet Interface
-        Telemetry();
-
+        Telemetry(PinName orange, PinName green);
+        
+        DigitalOut orange;
+        DigitalOut green;
+        
         //! IP Address of mbed Interface
         char* ip_self;
 
@@ -112,8 +115,11 @@
         //! IP Addess and Port of control Server
         Endpoint controller;
 
-        //! IP Addess and Port of incoming MSG
-        Endpoint input_Host;
+        //! IP Addess and Port of MSG on Server Port
+        Endpoint input_Server;
+        
+        //! IP Addess and Port of MSG on Client Port
+        Endpoint input_Client;
 
         
         #ifdef DEBUG
@@ -132,44 +138,55 @@
 
         
         //! Connect Port TCP 
-        void ConnectSocket_tcp(Endpoint Host);
+        void ConnectSocket_TCP(Endpoint Host);
         
-        //! Connect Port UDP receive 
-        void ConnectSocket_udp_rec(int Port);
+        //! Connect Port for UDP Client  
+        void ConnectSocket_UDP_Client();
         
-        //! Connect Port UDP send
-        void ConnectSocket_udp_send();
+        //! Connect Port for UDP Server
+        void ConnectSocket_UDP_Server(int Port);
 
         
         //! Close Port TCP
-        void CloseSocket_tcp();
+        void CloseSocket_TCP();
         
-        //! Close Port UDP receive
-        void CloseSocket_udp_rec();
+        //! Close Port UDP Client
+        void CloseSocket_UDP_Client();
         
         //! Close Port UDP send
-        void CloseSocket_udp_send();
+        void CloseSocket_UDP_Server();
 
         
         //! Struct Check Sum calc
         uint8_t do_cs(uint8_t *buffer); 
+    
         
-        //! Read UDP Packet 
-        int  Rec_Data_UDP(char *buffer, int size);
+        //! Read UDP Packet on Client Port
+        int  Rec_Data_UDP_Client(char *buffer, int size);
+
+        //! Read UDP Packet on Server Port
+        int  Rec_Data_UDP_Server(char *buffer, int size);
         
-        //! Check UDP Packet of containing Struct 
-        bool Rec_Struct_UDP(uint8_t *buffer);
+        //! Check Packet of containing Struct 
+        bool Rec_Struct(uint8_t *buffer);
         
         //! Read TCP Packet
         int  Rec_Data_TCP(char *buffer, int size);
 
         
-        //! Send UDP Packet
-        void Send_Data_UDP(Endpoint Server, char* Daten, int size);
+        //! Send UDP Packet as Client
+        void Send_Data_UDP_Client(Endpoint Server, char* Daten, int size);
+
+        //! Send UDP Packet as Server
+        void Send_Data_UDP_Server(Endpoint Client, char* Daten, int size);
+                
+        //! Send Struct as UDP Client
+        void Send_Struct_UDP_Client(Endpoint Server, uint8_t* Daten);
         
-        //! Send Struct as UDP Packet
-        void Send_Struct_UDP(Endpoint Server, uint8_t* Daten);
-        
+        //! Send Struct as UDP Server
+        void Send_Struct_UDP_Server(Endpoint Client, uint8_t* Daten);       
+       
+       
         //! Send TCP Packet
         void Send_Data_TCP(char* Host, char* Daten);