Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
DecaWave/DecaWave.h@0:3333b6066adf, 2017-12-06 (annotated)
- Committer:
- aungriah
- Date:
- Wed Dec 06 21:42:54 2017 +0000
- Revision:
- 0:3333b6066adf
asfaf
Who changed what in which revision?
User | Revision | Line number | New 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 |