1.0

Dependencies:   EthernetInterface mbed-rtos

Telemetry.h

Committer:
HMFK03LST1
Date:
2015-11-22
Revision:
5:a96e4e59c710
Parent:
3:94a735c744ff
Child:
6:abadad863420

File content as of revision 5:a96e4e59c710:


#ifndef TELEMETRY
#define TELEMETRY

//#define DEBUG

#include "mbed.h"
#include "EthernetInterface.h"

/** 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 control Server
        Endpoint controller;

        //! IP Addess and Port of incoming MSG
        Endpoint input_Host;

        
        #ifdef DEBUG
        void InitUSBSerialConnection();
        #endif

        //! init with DHCP
        bool InitEthernetConnection();

        //! init with Static IP
        bool InitEthernetConnection(const char* IPAdress, const char* SubNetMask, const char* GateWay);


        //! 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();
        
        //! Close Port UDP receive
        void CloseSocket_udp_rec();
        
        //! Close Port UDP send
        void CloseSocket_udp_send();

        
        //! Struct Check Sum calc
        uint8_t do_cs(char* buffer); 
        
        //! Read UDP Packet 
        int  Rec_Data_UDP(char *buffer, int size);
        
        //! 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);
        
        
    private:
        bool InitSucceed;    
        
};

#endif