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:a3b83d366423, 2017-12-06 (annotated)
- Committer:
- aungriah
- Date:
- Wed Dec 06 21:35:45 2017 +0000
- Revision:
- 0:a3b83d366423
test
Who changed what in which revision?
User | Revision | Line number | New 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 |