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:
Sun Nov 22 13:48:21 2015 +0000
Parent:
2:e19b937a29c1
Child:
4:5881695ba67a
Commit message:
with more docu

Changed in this revision

EthernetInterface.lib Show annotated file Show diff for this revision Revisions of this file
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
mbed-rtos.lib Show annotated file Show diff for this revision Revisions of this file
--- a/EthernetInterface.lib	Sat Oct 31 17:33:18 2015 +0000
+++ b/EthernetInterface.lib	Sun Nov 22 13:48:21 2015 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/EthernetInterface/#2fc406e2553f
+http://developer.mbed.org/users/mbed_official/code/EthernetInterface/#2fc406e2553f
--- a/Telemetry.cpp	Sat Oct 31 17:33:18 2015 +0000
+++ b/Telemetry.cpp	Sun Nov 22 13:48:21 2015 +0000
@@ -1,15 +1,41 @@
-/*------------------------------------------------*/
-/*Autor: Sebastian Donner                         */
-/*------------------------------------------------*/
+ /** Ethernet Interface for send/receive Datastructs over udp 
+ *
+ *
+ * By Sebastian Donner
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ */
 
 #include "Telemetry.h"
 
-//Debug Schnittstelle
+/**Debug Schnittstelle
+*/
 #ifdef DEBUG
 Serial debug(USBTX, USBRX);
+debug.baud(115200);
 #endif
 
-//Konstruktoren
+/**Konstruktoren
+*/
 EthernetInterface   eth;
 TCPSocketConnection sock_tcp;
 UDPSocket           sock_udp_send;  //send socket
@@ -18,14 +44,18 @@
 
     
 
-//Globale Variable
-bool InitSucceed = false;
-
+/** Create a new Ethernet interface
+  *
+  */
 Telemetry::Telemetry()
 {
-    
+    InitSucceed = false;
 }
 
+
+/** Init a Serial Debug interface
+  *
+  */
 #ifdef DEBUG
 void Telemetry::InitUSBSerialConnection()
 {
@@ -33,6 +63,179 @@
 }
 #endif
 
+
+
+
+/** Init Ethernet interface
+  * mit DHCP max. 10 Sekunden 
+*/
+bool Telemetry::InitEthernetConnection()
+{   
+    bool ReturnValue = false;
+    #ifdef DEBUG
+    debug.printf("Initalisiere LAN Verbindung mit DHCP\r\n\r\n");
+    #endif
+    
+    //Schnittstelle nur einmal initialisieren, sonst gibt es Fehler!
+    if (!InitSucceed)
+    {
+        if (eth.init()==0)  //Init Interface
+        {
+            InitSucceed = true;
+        }
+    }
+    
+    //Nur wenn Initialisierung erfolgreich war!
+    if (InitSucceed)
+    {
+        #ifdef DEBUG
+        serial.printf("Verbinde\r\n\r\n");
+        #endif
+        ip_self = eth.getIPAddress();
+        
+        if (eth.connect(10000)==0) //CONNECT
+        {
+            #ifdef DEBUG
+            printf("IP Adresse: %s\r\n\r\n", eth.getIPAddress());
+            #endif
+            ReturnValue = true;
+        }
+        else
+        {
+            #ifdef DEBUG
+            serial.printf("DHCP fail!\r\n\r\n");
+            #endif
+            ReturnValue = false;
+        }
+    }
+    
+    return ReturnValue;
+}
+
+
+/** Init Ethernet interface
+  * ohne DHCP max. 2.5 Sekunden 
+*/
+bool Telemetry::InitEthernetConnection(const char* IPAdress, const char* SubNetMask, const char* GateWay)
+{   
+    bool ReturnValue = false;
+    #ifdef DEBUG
+    printf("Initalisiere LAN Verbindung ohne DHCP\r\n\r\n");
+    printf("IP: %s - GateWay: %s - SubNetMask: %s\r\n\r\n",IPAdress, GateWay, SubNetMask);
+    #endif
+    
+    //Schnittstelle nur einmal initialisieren, sonst gibt es Fehler!
+    if (!InitSucceed)
+    {
+        if (eth.init(IPAdress, SubNetMask, GateWay)==0)  //Init Interface
+        {
+            InitSucceed = true;
+        }
+    }
+    
+    //Nur wenn Initialisierung erfolgreich war!
+    if (InitSucceed)
+    {   
+        if (eth.connect(2500)==0) //CONNECT
+        {
+            #ifdef DEBUG
+            serial.printf("Init success!");
+            #endif
+            
+            ReturnValue = true;
+        }
+        else
+        {
+            #ifdef DEBUG
+            serial.printf("Init fail!");
+            #endif
+            ReturnValue = false;
+        }
+    }    
+    
+    return ReturnValue;
+}
+
+
+//! Close Connection
+void Telemetry::CloseEthernetConnection()
+{
+    eth.disconnect();
+    InitSucceed = false;
+    
+    #ifdef DEBUG
+    serial.printf("LAN Stack close\r\n\r\n");
+    #endif
+}
+
+
+//! Connect Port TCP 
+void Telemetry::ConnectSocket_tcp(Endpoint Host)
+{
+    sock_tcp.connect(Host.get_address(), Host.get_port());
+    sock_tcp.set_blocking(false, 0);
+    #ifdef DEBUG
+    serial.printf("Open TCP Socket to IP: %s:%d.\r\n\r\n",Host.get_address(), Host.get_port());
+    #endif
+}
+
+
+//! Connect Port UDP receive 
+void Telemetry::ConnectSocket_udp_rec(int Port)
+{
+    sock_udp_rec.bind(Port);
+    sock_udp_rec.set_blocking(false, 0);  
+
+    #ifdef DEBUG
+    serial.printf("Open UDP_receive Socket on Port:%d.\r\n\r\n",Port);
+    #endif
+}
+
+
+//! Connect Port UDP send
+void Telemetry::ConnectSocket_udp_send()
+{
+    sock_udp_send.init();
+ 
+    #ifdef DEBUG
+    serial.printf("Open UDP_send Socket.\r\n\r\n");
+    #endif
+}
+
+
+//! Close Port TCP
+void Telemetry::CloseSocket_tcp()
+{
+    sock_tcp.close();
+
+    #ifdef DEBUG
+    serial.printf("TCP Socket closed.\r\n\r\n");
+    #endif
+}
+
+
+//! Close Port UDP receive
+void Telemetry::CloseSocket_udp_rec()
+{
+ sock_udp_rec.close();   
+  #ifdef DEBUG
+    serial.printf("UDP receive Socket closed.\r\n\r\n");
+  #endif
+}
+
+
+//! Close Port UDP send
+void Telemetry::CloseSocket_udp_send()
+{
+    sock_udp_send.close();
+
+    #ifdef DEBUG
+    serial.printf("UDP send Socket closed.\r\n\r\n");
+    #endif
+}
+
+
+//! Struct Check Sum calc
 char Telemetry::do_cs(char* buffer)
 {
     char ck_a=0;
@@ -48,172 +251,14 @@
 }
 
 
-//Funktion überladen. Ohne Parameter DHCP und 10 Sekunden Timeout. Mit Parameter kein DHCP und 3 Sekunden Timeout
-bool Telemetry::InitEthernetConnection()
-{   
-    bool ReturnValue = false;
-    #ifdef DEBUG
-    debug.printf("Initalisiere LAN Verbindung mit DHCP\r\n\r\n");
-    #endif
-    
-    //Schnittstelle nur einmal initialisieren, sonst gibt es Fehler!
-    if (!InitSucceed)
-    {
-        if (eth.init()==0)  //Init Interface
-        {
-            InitSucceed = true;
-            ReturnValue = true;
-        }
-    }
-    
-    //Nur wenn Initialisierung erfolgreich war!
-    if (InitSucceed)
-    {
-        #ifdef DEBUG
-        serial.printf("Verbinde\r\n\r\n");
-        #endif
-        ip_self = eth.getIPAddress();
-        
-        if (eth.connect(8000)==0) //CONNECT
-        {
-            printf("IP Adresse: %s\r\n\r\n", eth.getIPAddress());
-            ReturnValue = true;
-        }
-        else
-        {
-            ReturnValue = false;
-        }
-    }
-    
-    #ifdef DEBUG
-    if (ReturnValue == false)
-    {
-        serial.printf("DHCP fail!\r\n\r\n");
-    }
-    #endif
-    
-    return ReturnValue;
-}
-
-bool Telemetry::InitEthernetConnection(const char* IPAdress, const char* SubNetMask, const char* GateWay)
-{   
-    bool ReturnValue = false;
-    //#ifdef DEBUG
-    printf("Initalisiere LAN Verbindung ohne DHCP\r\n\r\n");
-    printf("IP: %s - GateWay: %s - SubNetMask: %s\r\n\r\n",IPAdress, GateWay, SubNetMask);
-    //#endif
-    
-    //Schnittstelle nur einmal initialisieren, sonst gibt es Fehler!
-    if (!InitSucceed)
-    {
-        if (eth.init(IPAdress, SubNetMask, GateWay)==0)  //Init Interface
-        {
-            InitSucceed = true;
-            ReturnValue = true;
-        }
-    }
-    
-    //Nur wenn Initialisierung erfolgreich war!
-    if (InitSucceed)
-    {   
-        if (eth.connect(2000)==0) //CONNECT
-        {
-            #ifdef DEBUG
-            serial.printf("Init success!");
-            #endif
-            
-            ReturnValue = true;
-        }
-        else
-        {
-            ReturnValue = false;
-        }
-    }
-    
-    #ifdef DEBUG
-    if (ReturnValue == false)
-    {
-        serial.printf("Init fail!");
-    }
-    #endif
-    
-    return ReturnValue;
-}
-
-
-void Telemetry::CloseEthernetConnection()
-{
-    eth.disconnect();
-    InitSucceed = false;
-    
-    #ifdef DEBUG
-    serial.printf("LAN Stack close\r\n\r\n");
-    #endif
-}
-
-void Telemetry::ConnectSocket_tcp(Endpoint Host)
-{
-    sock_tcp.connect(Host.get_address(), Host.get_port());
-    sock_tcp.set_blocking(false, 0);
-    #ifdef DEBUG
-    serial.printf("Open TCP Socket to IP: %s:%d.\r\n\r\n",Host.get_address(), Host.get_port());
-    #endif
-}
-
-void Telemetry::ConnectSocket_udp_rec(int Port)
-{
-    sock_udp_rec.bind(Port);
-    sock_udp_rec.set_blocking(false, 0);  
-
-    #ifdef DEBUG
-    serial.printf("Open UDP_receive Socket on Port:%d.\r\n\r\n",Port);
-    #endif
-}
-
-void Telemetry::ConnectSocket_udp_send()
-{
-    sock_udp_send.init();
- 
-    #ifdef DEBUG
-    serial.printf("Open UDP_send Socket.\r\n\r\n");
-    #endif
-}
-
-
-void Telemetry::CloseSocket_tcp()
-{
-    sock_tcp.close();
-
-    #ifdef DEBUG
-    serial.printf("TCP Socket closed.\r\n\r\n");
-    #endif
-}
-
-
-void Telemetry::CloseSocket_udp_send()
-{
-    sock_udp_send.close();
-
-    #ifdef DEBUG
-    serial.printf("UDP send Socket closed.\r\n\r\n");
-    #endif
-}
-
-
-void Telemetry::CloseSocket_udp_rec()
-{
- sock_udp_rec.close();   
-  #ifdef DEBUG
-    serial.printf("UDP receive Socket closed.\r\n\r\n");
-  #endif
-}
-
+//! Read UDP Packet
 int Telemetry::Rec_Data_UDP(char *buffer, int size)
 {
   return sock_udp_rec.receiveFrom(input_Host, buffer, size);    
 }
 
 
+//! Check UDP Packet of containing Struct
 bool Telemetry::Rec_Struct_UDP(char *buffer)
 {
   sock_udp_rec.receiveFrom(input_Host, buffer, 255);    
@@ -222,20 +267,16 @@
 }
 
 
+//! Read TCP Packet
 int Telemetry::Rec_Data_TCP(char *buffer,int size)
 { 
         return sock_tcp.receive(buffer, size);
 }
 
 
+//! Send UDP Packet
 void Telemetry::Send_Data_UDP(Endpoint Server, char* Daten, int size )
-{
-    // convert String to char*
-    //(string Daten)
-    //const char *DataBuf = Daten.c_str();
-    //char DataPaket[Daten.length()];
-    //strcpy(DataPaket,DataBuf);
-    
+{   
     sock_udp_send.sendTo(Server, Daten, size);   
 
     #ifdef DEBUG
@@ -244,6 +285,7 @@
 }
 
 
+//! Send Struct as UDP Packet
 void Telemetry::Send_Struct_UDP(Endpoint Server, char* Daten)
 {   
     Daten[(*Daten - 1)] = do_cs(Daten);
@@ -251,48 +293,25 @@
 }
 
 
-
-void Telemetry::Send_Data_TCP(char* Host, string Daten, string Username, string Passwort)
+//! Send TCP Packet
+void Telemetry::Send_Data_TCP(char* Host, char* Buffer)
 {
     
-    //Datenpaket schnüren
-    string DATEN = "Username=" + Username + "&Passwort=" + Passwort + "&Paket=" + Daten;
-    
-    string POST = "POST /H2MClient/h2m_client.php HTTP/1.1\r\n";
-    
-    string HostString = Host;
-    string HOST = "Host: " + HostString + "\r\n";
-    
-    string CONTENTTYPE = "Content-Type: application/x-www-form-urlencoded\r\n";
-    
-    string Length;
-    stringstream convert;
-    convert << DATEN.length();
-    Length = convert.str();
-    string CONTENTLENGTH = "Content-Length: " + Length + "\r\n\r\n";
-    
-    
-    string datenpaket = POST + HOST + CONTENTTYPE + CONTENTLENGTH + DATEN + "\r\n";
-    
-    //Umwandeln in char*
+    /* Umwandeln in char*
     const char *DataBuf = datenpaket.c_str();
     char DataPaket[datenpaket.length()];
     strcpy(DataPaket,DataBuf);
-
+    */
     #ifdef DEBUG
     serial.printf("----\r\n%s----\r\n\r\n",DataPaket);
     serial.printf("Sende Paket.\r\n\r\n");
     #endif
     
-    sock_tcp.send_all(DataPaket, sizeof(DataPaket)-1);
+    sock_tcp.send_all(Buffer, sizeof(Buffer)-1);
     
     #ifdef DEBUG
     serial.printf("Paket gesendet.\r\n\r\n");
     #endif
-    
-    #ifdef LED
-    ledwfa = 0;
-    #endif
 }
 
 
--- a/Telemetry.h	Sat Oct 31 17:33:18 2015 +0000
+++ b/Telemetry.h	Sun Nov 22 13:48:21 2015 +0000
@@ -1,69 +1,124 @@
-/*------------------------------------------------*/
-/*Define LED:                                     */
-/*  LEDSerial = LED1                              */
-/*  LEDEthernet = LED2                            */
-/*  LEDSOCKET = LED3                              */
-/*  LEDWAITFORANSWER = LED4                       */
-/*                                                */
-/*Define DEBUG:                                   */
-/*   Ausgabe über Serielle Schnittstelle          */
-/*   (USBRX/USBTX)                                */
-/*                                                */
-/*Autor: Sebastian Hauzenberger                   */
-/*------------------------------------------------*/
 
 #ifndef TELEMETRY
 #define TELEMETRY
 
-//#define LED
 //#define DEBUG
 
 #include "mbed.h"
 #include "EthernetInterface.h"
-#include <string>
-#include <sstream>
+
+/** Ethernet Interface for send/receive Datastructs over udp 
+ *
+ * By Sebastian Donner
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * @code
+ * {
+ * }
+ * @endcode
+*/ 
+
+
 
 class Telemetry
 {
     public:
+        //! Create Ethernet Interface
         Telemetry();
+
+        //! IP Address of mbed Interface
         char* ip_self;
+
+        //! IP Addess and Port of databank Server
         Endpoint db_server;
+
+        //! IP Addess and Port of controll Server
         Endpoint controller;
+
+        //! IP Addess and Port of incoming MSG
         Endpoint input_Host;
+
         
         #ifdef DEBUG
         void InitUSBSerialConnection();
         #endif
-        //Struct Check Sum calc
-        char do_cs(char* buffer); 
-        //init with DHCP
+
+        //! init with DHCP
         bool InitEthernetConnection();
-        //init with Static
+
+        //! init with Static IP
         bool InitEthernetConnection(const char* IPAdress, const char* SubNetMask, const char* GateWay);
-        //Close Connection
+
+
+        //! Close Connection
         void CloseEthernetConnection();
+
+        
+        //! Connect Port TCP 
+        void ConnectSocket_tcp(Endpoint Host);
+        
+        //! Connect Port UDP receive 
+        void ConnectSocket_udp_rec(int Port);
+        
+        //! Connect Port UDP send
+        void ConnectSocket_udp_send();
+
+        
+        //! Close Port TCP
+        void CloseSocket_tcp();
         
-        //Connect Ports
-        void ConnectSocket_tcp(Endpoint Host);
-        void ConnectSocket_udp_rec(int Port);
-        void ConnectSocket_udp_send();
+        //! Close Port UDP receive
+        void CloseSocket_udp_rec();
+        
+        //! Close Port UDP send
+        void CloseSocket_udp_send();
+
+        
+        //! Struct Check Sum calc
+        char do_cs(char* buffer); 
+        
+        //! Read UDP Packet 
+        int  Rec_Data_UDP(char *buffer, int size);
         
-        //Close Ports
-        void CloseSocket_tcp();
-        void CloseSocket_udp_rec();
-        void CloseSocket_udp_send();
+        //! Check UDP Packet of containing Struct 
+        bool Rec_Struct_UDP(char *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 Struct as UDP Packet
+        void Send_Struct_UDP(Endpoint Server, char* Daten);
+        
+        //! Send TCP Packet
+        void Send_Data_TCP(char* Host, char* Daten);
         
         
-        int  Rec_Data_UDP(char *buffer, int size);
-        bool Rec_Struct_UDP(char *buffer);
-        
-        int  Rec_Data_TCP(char *buffer, int size);
-        
-        void Send_Data_UDP(Endpoint Server, char* Daten, int size);
-        void Send_Struct_UDP(Endpoint Server, char* Daten);
-        
-        void Send_Data_TCP(char* Host, string Daten, string Username, string Passwort);
+    private:
+        bool InitSucceed;    
         
 };
 
--- a/mbed-rtos.lib	Sat Oct 31 17:33:18 2015 +0000
+++ b/mbed-rtos.lib	Sun Nov 22 13:48:21 2015 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/mbed-rtos/#21b438192b0f
+http://mbed.org/users/mbed_official/code/mbed-rtos/#6c35e082773a