Alejandro Ungria Hirte / GA-Test

Dependencies:   mbed-dev

Committer:
aungriah
Date:
Wed Dec 06 21:42:54 2017 +0000
Revision:
0:3333b6066adf
asfaf

Who changed what in which revision?

UserRevisionLine numberNew contents of line
aungriah 0:3333b6066adf 1 /*
aungriah 0:3333b6066adf 2 * DecaWave.h
aungriah 0:3333b6066adf 3 *
aungriah 0:3333b6066adf 4 * Created on: 04.11.2015
aungriah 0:3333b6066adf 5 * Author: kauf
aungriah 0:3333b6066adf 6 */
aungriah 0:3333b6066adf 7
aungriah 0:3333b6066adf 8 #ifndef _DECAWAVE_H_
aungriah 0:3333b6066adf 9 #define _DECAWAVE_H_
aungriah 0:3333b6066adf 10
aungriah 0:3333b6066adf 11 #include <stddef.h>
aungriah 0:3333b6066adf 12 #include "deca_device_api.h"
aungriah 0:3333b6066adf 13 #include "deca_param_types.h"
aungriah 0:3333b6066adf 14 #include "deca_regs.h"
aungriah 0:3333b6066adf 15 #include "mbed.h"
aungriah 0:3333b6066adf 16 #include "PC.h"
aungriah 0:3333b6066adf 17
aungriah 0:3333b6066adf 18 #include "globals.h"
aungriah 0:3333b6066adf 19 //#include "frames.h"
aungriah 0:3333b6066adf 20
aungriah 0:3333b6066adf 21 #ifndef uint64
aungriah 0:3333b6066adf 22 #ifndef _DECA_INT64_
aungriah 0:3333b6066adf 23 #define _DECA_INT64_
aungriah 0:3333b6066adf 24 typedef uint64_t uint64;
aungriah 0:3333b6066adf 25 #endif
aungriah 0:3333b6066adf 26 #endif
aungriah 0:3333b6066adf 27
aungriah 0:3333b6066adf 28 #define TIMEUNITS_TO_US (1/(128*499.2)) // conversion between the decawave timeunits (ca 15.65ps) to microseconds.
aungriah 0:3333b6066adf 29 #define US_TO_TIMEUNITS (128*499.2) // conversion between microseconds to the decawave timeunits (ca 15.65ps).
aungriah 0:3333b6066adf 30 #define MASK_40BIT (0x00FFFFFFFFFF) // MP counter is 40 bits
aungriah 0:3333b6066adf 31 #define MASK_TXDTS (0x00FFFFFFFE00) // TX timestamp will snap to 8 ns resolution - mask lower 9 bits.
aungriah 0:3333b6066adf 32
aungriah 0:3333b6066adf 33 #define SPEED_OF_LIGHT (299702547.0f) // in m/s in air
aungriah 0:3333b6066adf 34 #define MIN_SPI_FREQ 1000000
aungriah 0:3333b6066adf 35 #define MAX_SPI_FREQ 20000000
aungriah 0:3333b6066adf 36
aungriah 0:3333b6066adf 37 enum dw_state { DW_RECEIVE, DW_TRANSMIT, DW_IDLE };
aungriah 0:3333b6066adf 38 double dwt_getrangebias(uint8 chan, float range, uint8 prf);
aungriah 0:3333b6066adf 39
aungriah 0:3333b6066adf 40
aungriah 0:3333b6066adf 41 class DecaWave {
aungriah 0:3333b6066adf 42 public:
aungriah 0:3333b6066adf 43
aungriah 0:3333b6066adf 44 DecaWave();
aungriah 0:3333b6066adf 45
aungriah 0:3333b6066adf 46 virtual ~DecaWave();
aungriah 0:3333b6066adf 47
aungriah 0:3333b6066adf 48 void setup(dwt_config_t config, dwt_txconfig_t configdw_tx, uint32_t delay,
aungriah 0:3333b6066adf 49 void (*txcallback)(const dwt_cb_data_t *),
aungriah 0:3333b6066adf 50 void (*rxcallback)(const dwt_cb_data_t *));
aungriah 0:3333b6066adf 51
aungriah 0:3333b6066adf 52 int8_t sendFrame(uint8_t* message, uint16_t length, uint32_t dtime,
aungriah 0:3333b6066adf 53 uint32_t delay);
aungriah 0:3333b6066adf 54 int8_t turnonrx();
aungriah 0:3333b6066adf 55 void turnoffrx();
aungriah 0:3333b6066adf 56
aungriah 0:3333b6066adf 57 uint16_t computeFrameLength_us();
aungriah 0:3333b6066adf 58 float getRXLevel(dwt_rxdiag_t *diagnostics);
aungriah 0:3333b6066adf 59 float getFPLevel();
aungriah 0:3333b6066adf 60
aungriah 0:3333b6066adf 61 uint32_t getStatus();
aungriah 0:3333b6066adf 62 uint32_t readdevid();
aungriah 0:3333b6066adf 63
aungriah 0:3333b6066adf 64 uint8_t getNextSequenceNumber();
aungriah 0:3333b6066adf 65 uint16_t getAntennaDelay();
aungriah 0:3333b6066adf 66 uint8_t getCHAN();
aungriah 0:3333b6066adf 67 uint8_t getPRF();
aungriah 0:3333b6066adf 68
aungriah 0:3333b6066adf 69
aungriah 0:3333b6066adf 70 protected:
aungriah 0:3333b6066adf 71
aungriah 0:3333b6066adf 72 void reset();
aungriah 0:3333b6066adf 73 void hardreset();
aungriah 0:3333b6066adf 74 void autoreenable();
aungriah 0:3333b6066adf 75 int16_t getAntennaDelayOffset(uint32_t board_id);
aungriah 0:3333b6066adf 76
aungriah 0:3333b6066adf 77 uint8_t _sequenceNumber;
aungriah 0:3333b6066adf 78 dwt_config_t _deca_config;
aungriah 0:3333b6066adf 79 uint8_t _euid[8];
aungriah 0:3333b6066adf 80 uint16_t _antennadelay;
aungriah 0:3333b6066adf 81 dwt_txconfig_t _configTX;
aungriah 0:3333b6066adf 82 dw_state _state;
aungriah 0:3333b6066adf 83 };
aungriah 0:3333b6066adf 84
aungriah 0:3333b6066adf 85 #endif /* _DECAWAVE_H_ */
aungriah 0:3333b6066adf 86