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

Dependents:   JRO_DDSv2 JRO_DDSv2_rev2019

Committer:
miguelcordero191
Date:
Wed Sep 04 22:25:24 2019 +0000
Revision:
6:dd61acd77e2c
Parent:
5:6500be930b36
Updated to 04/09/2019

Who changed what in which revision?

UserRevisionLine numberNew contents of line
miguelcordero191 4:de495ce256b8 1 #ifndef JRO_IPDATA
miguelcordero191 4:de495ce256b8 2 #define JRO_IPDATA
miguelcordero191 4:de495ce256b8 3
miguelcordero191 0:b444ea725ba7 4 #include "mbed.h"
miguelcordero191 1:7c424a3e12ea 5
miguelcordero191 1:7c424a3e12ea 6 #define ID_CLASS 2
miguelcordero191 1:7c424a3e12ea 7 #define ID_DEV 1
miguelcordero191 1:7c424a3e12ea 8
miguelcordero191 6:dd61acd77e2c 9 #define HEADER "$JRO$"
miguelcordero191 5:6500be930b36 10
miguelcordero191 6:dd61acd77e2c 11 #define OK_PAYLOAD "1:Successful configuration"
miguelcordero191 6:dd61acd77e2c 12 #define KO_PAYLOAD "0:Ethernet data not recognized"
miguelcordero191 6:dd61acd77e2c 13 #define NI_PAYLOAD "0:DDS is not working propertly. Try reconnecting the clock"
miguelcordero191 4:de495ce256b8 14
miguelcordero191 1:7c424a3e12ea 15 /*
miguelcordero191 1:7c424a3e12ea 16 IP DATA STRUCTURE
miguelcordero191 1:7c424a3e12ea 17
miguelcordero191 2:3d8d52e9751c 18 5B 4B 1B 1B 2B NB 1B
miguelcordero191 1:7c424a3e12ea 19 CAB LEN ID_CLASS ID_DEV CMD PAYLOAD XOR
miguelcordero191 1:7c424a3e12ea 20
miguelcordero191 1:7c424a3e12ea 21 ID_CLASS: Identifica la clase de dispositivo a programar
miguelcordero191 1:7c424a3e12ea 22
miguelcordero191 1:7c424a3e12ea 23 1 -> CR
miguelcordero191 1:7c424a3e12ea 24 2 -> DDS
miguelcordero191 1:7c424a3e12ea 25 3 -> JARS
miguelcordero191 1:7c424a3e12ea 26 4 -> USRP
miguelcordero191 1:7c424a3e12ea 27 5 -> ECHOTEK
miguelcordero191 1:7c424a3e12ea 28 6 -> ABS
miguelcordero191 1:7c424a3e12ea 29 7 -> CLK_GEN
miguelcordero191 1:7c424a3e12ea 30
miguelcordero191 1:7c424a3e12ea 31 ID_DEV: Identifica el id del dispositivo a programar
miguelcordero191 1:7c424a3e12ea 32
miguelcordero191 1:7c424a3e12ea 33 Desde el 1-255, el 0 es usado como broadcast.
miguelcordero191 1:7c424a3e12ea 34
miguelcordero191 1:7c424a3e12ea 35 CMD: Identifica el comando enviado que define la operacion a realizar
miguelcordero191 1:7c424a3e12ea 36
miguelcordero191 1:7c424a3e12ea 37 1 -> RESET
miguelcordero191 1:7c424a3e12ea 38 2 -> DEV. ENABLE
miguelcordero191 1:7c424a3e12ea 39 3 -> CONFIG
miguelcordero191 1:7c424a3e12ea 40 4 ->
miguelcordero191 1:7c424a3e12ea 41 5 ->
miguelcordero191 1:7c424a3e12ea 42
miguelcordero191 1:7c424a3e12ea 43 */
miguelcordero191 0:b444ea725ba7 44
miguelcordero191 0:b444ea725ba7 45 class IpData{
miguelcordero191 0:b444ea725ba7 46
miguelcordero191 0:b444ea725ba7 47 private:
miguelcordero191 0:b444ea725ba7 48
miguelcordero191 1:7c424a3e12ea 49 char* rx_buff;
miguelcordero191 1:7c424a3e12ea 50
miguelcordero191 0:b444ea725ba7 51 char id_class;
miguelcordero191 0:b444ea725ba7 52 char id_dev;
miguelcordero191 0:b444ea725ba7 53 unsigned short cmd;
miguelcordero191 0:b444ea725ba7 54 char* payload;
miguelcordero191 1:7c424a3e12ea 55 unsigned long len_payload;
miguelcordero191 1:7c424a3e12ea 56 char xor_rd;
miguelcordero191 0:b444ea725ba7 57
miguelcordero191 1:7c424a3e12ea 58 char *tx_buff;
miguelcordero191 1:7c424a3e12ea 59 unsigned long len_tx_data;
miguelcordero191 1:7c424a3e12ea 60 unsigned long len_tx_buffer;
miguelcordero191 1:7c424a3e12ea 61
miguelcordero191 1:7c424a3e12ea 62 bool isValidData;
miguelcordero191 0:b444ea725ba7 63
miguelcordero191 0:b444ea725ba7 64 char* __findHeader(char* buffer);
miguelcordero191 2:3d8d52e9751c 65 char __getXor(char* data, unsigned long len_data);
miguelcordero191 2:3d8d52e9751c 66 int __verifyData(char* ip_data, unsigned long len_data);
miguelcordero191 0:b444ea725ba7 67 int __getParameters();
miguelcordero191 0:b444ea725ba7 68
miguelcordero191 0:b444ea725ba7 69 public:
miguelcordero191 0:b444ea725ba7 70
miguelcordero191 1:7c424a3e12ea 71 IpData(char* tx_buffer);
miguelcordero191 1:7c424a3e12ea 72 char id;
miguelcordero191 4:de495ce256b8 73 char* encode( unsigned short cmd, const char* payload, unsigned long len_payload);
miguelcordero191 2:3d8d52e9751c 74 int decode(char* buffer, unsigned long len_buffer);
miguelcordero191 0:b444ea725ba7 75 char getIdClass();
miguelcordero191 0:b444ea725ba7 76 char getIdDevice();
miguelcordero191 1:7c424a3e12ea 77 unsigned short getCmd();
miguelcordero191 0:b444ea725ba7 78 unsigned long getPayloadLen();
miguelcordero191 0:b444ea725ba7 79 char* getPayload();
miguelcordero191 1:7c424a3e12ea 80 char* getTxData();
miguelcordero191 1:7c424a3e12ea 81 unsigned long getTxDataLen();
miguelcordero191 4:de495ce256b8 82 char* getNIData(unsigned short cmd=0x0);
miguelcordero191 4:de495ce256b8 83 unsigned long getNIDataLen();
miguelcordero191 5:6500be930b36 84 char* getOKData(unsigned short cmd=0x0);
miguelcordero191 5:6500be930b36 85 unsigned long getOKDataLen();
miguelcordero191 5:6500be930b36 86 char* getKOData(unsigned short cmd=0x0);
miguelcordero191 5:6500be930b36 87 unsigned long getKODataLen();
miguelcordero191 4:de495ce256b8 88 };
miguelcordero191 0:b444ea725ba7 89
miguelcordero191 4:de495ce256b8 90 #endif