Alejandro Ungria Hirte / GA-Test_copy

Dependencies:   mbed-dev

Committer:
aungriah
Date:
Wed Dec 06 21:35:45 2017 +0000
Revision:
0:a3b83d366423
test

Who changed what in which revision?

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