Library used to configure a AD9854 Libreria usada para comunicarse con el AD9854

Dependents:   JRO_DDSv2 JRO_DDSv2_rev2019

JroIpdata.h

Committer:
miguelcordero191
Date:
2019-09-05
Revision:
7:45e91ce14a28
Parent:
6:dd61acd77e2c

File content as of revision 7:45e91ce14a28:

#ifndef        JRO_IPDATA
#define        JRO_IPDATA

#include "mbed.h"

#define ID_CLASS    2
#define ID_DEV      1

#define HEADER      "$JRO$"

#define OK_PAYLOAD  "1:Successful configuration"
#define KO_PAYLOAD  "0:Ethernet data not recognized"
#define NI_PAYLOAD  "0:DDS is not working propertly. Try reconnecting the clock"

/*
IP DATA STRUCTURE

5B      4B      1B          1B          2B      NB          1B
CAB     LEN     ID_CLASS    ID_DEV      CMD     PAYLOAD     XOR

ID_CLASS: Identifica la clase de dispositivo a programar

    1   ->  CR
    2   ->  DDS
    3   ->  JARS
    4   ->  USRP
    5   ->  ECHOTEK
    6   ->  ABS
    7   ->  CLK_GEN

ID_DEV: Identifica el id del dispositivo a programar

    Desde el 1-255, el 0 es usado como broadcast.

CMD: Identifica el comando enviado que define la operacion a realizar

    1   ->  RESET
    2   ->  DEV. ENABLE
    3   ->  CONFIG
    4   ->  
    5   ->  

*/

class IpData{

    private:
        
        char* rx_buff;
        
        char id_class;
        char id_dev;
        unsigned short cmd;
        char* payload;
        unsigned long len_payload;
        char xor_rd;        
        
        char *tx_buff;
        unsigned long len_tx_data;
        unsigned long len_tx_buffer;
        
        bool isValidData;
        
        char* __findHeader(char* buffer);
        char __getXor(char* data, unsigned long len_data);
        int __verifyData(char* ip_data, unsigned long len_data);
        int __getParameters();
        
    public:
        
        IpData(char* tx_buffer);
        char id;
        char* encode( unsigned short cmd, const char* payload, unsigned long len_payload);
        int decode(char* buffer, unsigned long len_buffer);
        char getIdClass();
        char getIdDevice();
        unsigned short getCmd();
        unsigned long getPayloadLen();
        char* getPayload();
        char* getTxData();
        unsigned long getTxDataLen();
        char* getNIData(unsigned short cmd=0x0);
        unsigned long getNIDataLen();
        char* getOKData(unsigned short cmd=0x0);
        unsigned long getOKDataLen();
        char* getKOData(unsigned short cmd=0x0);
        unsigned long getKODataLen();
};

#endif