Library used to configure a AD9854 Libreria usada para comunicarse con el AD9854
Dependents: JRO_DDSv2 JRO_DDSv2_rev2019
JroIpdata.h@6:dd61acd77e2c, 2019-09-04 (annotated)
- 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?
User | Revision | Line number | New 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 |