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.
Fork of SX1280Lib by
sx1280.h@2:3fd91078f344, 2017-04-02 (annotated)
- Committer:
- ubhat
- Date:
- Sun Apr 02 10:01:59 2017 +0000
- Revision:
- 2:3fd91078f344
- Parent:
- 0:03ec2f3bde8c
use function parameter "offset" instead of default 0x00 offset in WriteBuffer
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| GregCr | 0:03ec2f3bde8c | 1 | /* |
| GregCr | 0:03ec2f3bde8c | 2 | ______ _ |
| GregCr | 0:03ec2f3bde8c | 3 | / _____) _ | | |
| GregCr | 0:03ec2f3bde8c | 4 | ( (____ _____ ____ _| |_ _____ ____| |__ |
| GregCr | 0:03ec2f3bde8c | 5 | \____ \| ___ | (_ _) ___ |/ ___) _ \ |
| GregCr | 0:03ec2f3bde8c | 6 | _____) ) ____| | | || |_| ____( (___| | | | |
| GregCr | 0:03ec2f3bde8c | 7 | (______/|_____)_|_|_| \__)_____)\____)_| |_| |
| GregCr | 0:03ec2f3bde8c | 8 | (C)2016 Semtech |
| GregCr | 0:03ec2f3bde8c | 9 | |
| GregCr | 0:03ec2f3bde8c | 10 | Description: Driver for SX1280 devices |
| GregCr | 0:03ec2f3bde8c | 11 | |
| GregCr | 0:03ec2f3bde8c | 12 | License: Revised BSD License, see LICENSE.TXT file include in the project |
| GregCr | 0:03ec2f3bde8c | 13 | |
| GregCr | 0:03ec2f3bde8c | 14 | Maintainer: Miguel Luis, Gregory Cristian and Matthieu Verdy |
| GregCr | 0:03ec2f3bde8c | 15 | */ |
| GregCr | 0:03ec2f3bde8c | 16 | #ifndef __SX1280_H__ |
| GregCr | 0:03ec2f3bde8c | 17 | #define __SX1280_H__ |
| GregCr | 0:03ec2f3bde8c | 18 | |
| GregCr | 0:03ec2f3bde8c | 19 | #include "radio.h" |
| GregCr | 0:03ec2f3bde8c | 20 | |
| GregCr | 0:03ec2f3bde8c | 21 | /*! |
| GregCr | 0:03ec2f3bde8c | 22 | * \brief Enables/disables driver debug features |
| GregCr | 0:03ec2f3bde8c | 23 | */ |
| GregCr | 0:03ec2f3bde8c | 24 | #define SX1280_DEBUG 0 |
| GregCr | 0:03ec2f3bde8c | 25 | |
| GregCr | 0:03ec2f3bde8c | 26 | /*! |
| GregCr | 0:03ec2f3bde8c | 27 | * \brief Hardware IO IRQ callback function definition |
| GregCr | 0:03ec2f3bde8c | 28 | */ |
| GregCr | 0:03ec2f3bde8c | 29 | class SX1280; |
| GregCr | 0:03ec2f3bde8c | 30 | typedef void ( SX1280::*DioIrqHandler )( void ); |
| GregCr | 0:03ec2f3bde8c | 31 | |
| GregCr | 0:03ec2f3bde8c | 32 | /*! |
| GregCr | 0:03ec2f3bde8c | 33 | * \brief IRQ triggers callback function definition |
| GregCr | 0:03ec2f3bde8c | 34 | */ |
| GregCr | 0:03ec2f3bde8c | 35 | class SX1280Hal; |
| GregCr | 0:03ec2f3bde8c | 36 | typedef void ( SX1280Hal::*Trigger )( void ); |
| GregCr | 0:03ec2f3bde8c | 37 | |
| GregCr | 0:03ec2f3bde8c | 38 | /*! |
| GregCr | 0:03ec2f3bde8c | 39 | * \brief Provides the frequency of the chip running on the radio and the frequency step |
| GregCr | 0:03ec2f3bde8c | 40 | * |
| GregCr | 0:03ec2f3bde8c | 41 | * \remark These defines are used for computing the frequency divider to set the RF frequency |
| GregCr | 0:03ec2f3bde8c | 42 | */ |
| GregCr | 0:03ec2f3bde8c | 43 | #define XTAL_FREQ 52000000 |
| GregCr | 0:03ec2f3bde8c | 44 | #define FREQ_STEP ( ( double )( XTAL_FREQ / pow( 2.0, 18.0 ) ) ) |
| GregCr | 0:03ec2f3bde8c | 45 | |
| GregCr | 0:03ec2f3bde8c | 46 | /*! |
| GregCr | 0:03ec2f3bde8c | 47 | * \brief Compensation delay for SetAutoTx method in microseconds |
| GregCr | 0:03ec2f3bde8c | 48 | */ |
| GregCr | 0:03ec2f3bde8c | 49 | #define AUTO_TX_OFFSET 33 |
| GregCr | 0:03ec2f3bde8c | 50 | |
| GregCr | 0:03ec2f3bde8c | 51 | /*! |
| GregCr | 0:03ec2f3bde8c | 52 | * \brief The address of the register holding the first byte defining the CRC seed |
| GregCr | 0:03ec2f3bde8c | 53 | * |
| GregCr | 0:03ec2f3bde8c | 54 | * \remark Only used for packet types GFSK and Flrc |
| GregCr | 0:03ec2f3bde8c | 55 | */ |
| GregCr | 0:03ec2f3bde8c | 56 | #define REG_LR_CRCSEEDBASEADDR 0x09C8 |
| GregCr | 0:03ec2f3bde8c | 57 | |
| GregCr | 0:03ec2f3bde8c | 58 | /*! |
| GregCr | 0:03ec2f3bde8c | 59 | * \brief The address of the register holding the first byte defining the CRC polynomial |
| GregCr | 0:03ec2f3bde8c | 60 | * |
| GregCr | 0:03ec2f3bde8c | 61 | * \remark Only used for packet types GFSK and Flrc |
| GregCr | 0:03ec2f3bde8c | 62 | */ |
| GregCr | 0:03ec2f3bde8c | 63 | #define REG_LR_CRCPOLYBASEADDR 0x09C6 |
| GregCr | 0:03ec2f3bde8c | 64 | |
| GregCr | 0:03ec2f3bde8c | 65 | /*! |
| GregCr | 0:03ec2f3bde8c | 66 | * \brief The address of the register holding the first byte defining the whitening seed |
| GregCr | 0:03ec2f3bde8c | 67 | * |
| GregCr | 0:03ec2f3bde8c | 68 | * \remark Only used for packet types GFSK, FLRC and BLE |
| GregCr | 0:03ec2f3bde8c | 69 | */ |
| GregCr | 0:03ec2f3bde8c | 70 | #define REG_LR_WHITSEEDBASEADDR 0x09C5 |
| GregCr | 0:03ec2f3bde8c | 71 | |
| GregCr | 0:03ec2f3bde8c | 72 | /*! |
| GregCr | 0:03ec2f3bde8c | 73 | * \brief The address of the register holding the ranging id check length |
| GregCr | 0:03ec2f3bde8c | 74 | * |
| GregCr | 0:03ec2f3bde8c | 75 | * \remark Only used for packet type Ranging |
| GregCr | 0:03ec2f3bde8c | 76 | */ |
| GregCr | 0:03ec2f3bde8c | 77 | #define REG_LR_RANGINGIDCHECKLENGTH 0x0931 |
| GregCr | 0:03ec2f3bde8c | 78 | |
| GregCr | 0:03ec2f3bde8c | 79 | /*! |
| GregCr | 0:03ec2f3bde8c | 80 | * \brief The address of the register holding the device ranging id |
| GregCr | 0:03ec2f3bde8c | 81 | * |
| GregCr | 0:03ec2f3bde8c | 82 | * \remark Only used for packet type Ranging |
| GregCr | 0:03ec2f3bde8c | 83 | */ |
| GregCr | 0:03ec2f3bde8c | 84 | #define REG_LR_DEVICERANGINGADDR 0x0916 |
| GregCr | 0:03ec2f3bde8c | 85 | |
| GregCr | 0:03ec2f3bde8c | 86 | /*! |
| GregCr | 0:03ec2f3bde8c | 87 | * \brief The address of the register holding the device ranging id |
| GregCr | 0:03ec2f3bde8c | 88 | * |
| GregCr | 0:03ec2f3bde8c | 89 | * \remark Only used for packet type Ranging |
| GregCr | 0:03ec2f3bde8c | 90 | */ |
| GregCr | 0:03ec2f3bde8c | 91 | #define REG_LR_REQUESTRANGINGADDR 0x0912 |
| GregCr | 0:03ec2f3bde8c | 92 | |
| GregCr | 0:03ec2f3bde8c | 93 | /*! |
| GregCr | 0:03ec2f3bde8c | 94 | * \brief The address of the register holding ranging results configuration |
| GregCr | 0:03ec2f3bde8c | 95 | * and the corresponding mask |
| GregCr | 0:03ec2f3bde8c | 96 | * |
| GregCr | 0:03ec2f3bde8c | 97 | * \remark Only used for packet type Ranging |
| GregCr | 0:03ec2f3bde8c | 98 | */ |
| GregCr | 0:03ec2f3bde8c | 99 | #define REG_LR_RANGINGRESULTCONFIG 0x0924 |
| GregCr | 0:03ec2f3bde8c | 100 | #define MASK_RANGINGMUXSEL 0xCF |
| GregCr | 0:03ec2f3bde8c | 101 | |
| GregCr | 0:03ec2f3bde8c | 102 | /*! |
| GregCr | 0:03ec2f3bde8c | 103 | * \brief The address of the register holding the first byte of ranging results |
| GregCr | 0:03ec2f3bde8c | 104 | * Only used for packet type Ranging |
| GregCr | 0:03ec2f3bde8c | 105 | */ |
| GregCr | 0:03ec2f3bde8c | 106 | #define REG_LR_RANGINGRESULTBASEADDR 0x0961 |
| GregCr | 0:03ec2f3bde8c | 107 | |
| GregCr | 0:03ec2f3bde8c | 108 | /*! |
| GregCr | 0:03ec2f3bde8c | 109 | * \brief The address of the register allowing to read ranging results |
| GregCr | 0:03ec2f3bde8c | 110 | * |
| GregCr | 0:03ec2f3bde8c | 111 | * \remark Only used for packet type Ranging |
| GregCr | 0:03ec2f3bde8c | 112 | */ |
| GregCr | 0:03ec2f3bde8c | 113 | #define REG_LR_RANGINGRESULTSFREEZE 0x097F |
| GregCr | 0:03ec2f3bde8c | 114 | |
| GregCr | 0:03ec2f3bde8c | 115 | /*! |
| GregCr | 0:03ec2f3bde8c | 116 | * \brief The address of the register holding the first byte of ranging calibration |
| GregCr | 0:03ec2f3bde8c | 117 | * |
| GregCr | 0:03ec2f3bde8c | 118 | * \remark Only used for packet type Ranging |
| GregCr | 0:03ec2f3bde8c | 119 | */ |
| GregCr | 0:03ec2f3bde8c | 120 | #define REG_LR_RANGINGRERXTXDELAYCAL 0x092C |
| GregCr | 0:03ec2f3bde8c | 121 | |
| GregCr | 0:03ec2f3bde8c | 122 | /*! |
| GregCr | 0:03ec2f3bde8c | 123 | *\brief The address of the register holding the ranging filter window size |
| GregCr | 0:03ec2f3bde8c | 124 | * |
| GregCr | 0:03ec2f3bde8c | 125 | * \remark Only used for packet type Ranging |
| GregCr | 0:03ec2f3bde8c | 126 | */ |
| GregCr | 0:03ec2f3bde8c | 127 | #define REG_LR_RANGINGFILTERWINDOWSIZE 0x091E |
| GregCr | 0:03ec2f3bde8c | 128 | |
| GregCr | 0:03ec2f3bde8c | 129 | /*! |
| GregCr | 0:03ec2f3bde8c | 130 | *\brief The address of the register to reset for clearing ranging filter |
| GregCr | 0:03ec2f3bde8c | 131 | * |
| GregCr | 0:03ec2f3bde8c | 132 | * \remark Only used for packet type Ranging |
| GregCr | 0:03ec2f3bde8c | 133 | */ |
| GregCr | 0:03ec2f3bde8c | 134 | #define REG_LR_RANGINGRESULTCLEARREG 0x0923 |
| GregCr | 0:03ec2f3bde8c | 135 | |
| GregCr | 0:03ec2f3bde8c | 136 | /*! |
| GregCr | 0:03ec2f3bde8c | 137 | * \brief The default number of samples considered in built-in ranging filter |
| GregCr | 0:03ec2f3bde8c | 138 | */ |
| GregCr | 0:03ec2f3bde8c | 139 | #define DEFAULT_RANGING_FILTER_SIZE 127 |
| GregCr | 0:03ec2f3bde8c | 140 | |
| GregCr | 0:03ec2f3bde8c | 141 | /*! |
| GregCr | 0:03ec2f3bde8c | 142 | * \brief The address of the register holding LORA packet parameters |
| GregCr | 0:03ec2f3bde8c | 143 | */ |
| GregCr | 0:03ec2f3bde8c | 144 | #define REG_LR_PACKETPARAMS 0x903 |
| GregCr | 0:03ec2f3bde8c | 145 | |
| GregCr | 0:03ec2f3bde8c | 146 | /*! |
| GregCr | 0:03ec2f3bde8c | 147 | * \brief The address of the register holding payload length |
| GregCr | 0:03ec2f3bde8c | 148 | * |
| GregCr | 0:03ec2f3bde8c | 149 | * \remark Do NOT try to read it directly. Use GetRxBuffer( ) instead. |
| GregCr | 0:03ec2f3bde8c | 150 | */ |
| GregCr | 0:03ec2f3bde8c | 151 | #define REG_LR_PAYLOADLENGTH 0x901 |
| GregCr | 0:03ec2f3bde8c | 152 | |
| GregCr | 0:03ec2f3bde8c | 153 | /*! |
| GregCr | 0:03ec2f3bde8c | 154 | * \brief The addresses of the registers holding SyncWords values |
| GregCr | 0:03ec2f3bde8c | 155 | * |
| GregCr | 0:03ec2f3bde8c | 156 | * \remark The addresses depends on the Packet Type in use, and not all |
| GregCr | 0:03ec2f3bde8c | 157 | * SyncWords are available for every Packet Type |
| GregCr | 0:03ec2f3bde8c | 158 | */ |
| GregCr | 0:03ec2f3bde8c | 159 | #define REG_LR_SYNCWORDBASEADDRESS1 0x09CE |
| GregCr | 0:03ec2f3bde8c | 160 | #define REG_LR_SYNCWORDBASEADDRESS2 0x09D3 |
| GregCr | 0:03ec2f3bde8c | 161 | #define REG_LR_SYNCWORDBASEADDRESS3 0x09D8 |
| GregCr | 0:03ec2f3bde8c | 162 | |
| GregCr | 0:03ec2f3bde8c | 163 | /*! |
| GregCr | 0:03ec2f3bde8c | 164 | * \brief The MSB address and mask used to read the estimated frequency |
| GregCr | 0:03ec2f3bde8c | 165 | * error |
| GregCr | 0:03ec2f3bde8c | 166 | */ |
| GregCr | 0:03ec2f3bde8c | 167 | #define REG_LR_ESTIMATED_FREQUENCY_ERROR_MSB 0x0954 |
| GregCr | 0:03ec2f3bde8c | 168 | #define REG_LR_ESTIMATED_FREQUENCY_ERROR_MASK 0x0FFFFF |
| GregCr | 0:03ec2f3bde8c | 169 | |
| GregCr | 0:03ec2f3bde8c | 170 | /*! |
| GregCr | 0:03ec2f3bde8c | 171 | * \brief Defines how many bit errors are tolerated in sync word detection |
| GregCr | 0:03ec2f3bde8c | 172 | */ |
| GregCr | 0:03ec2f3bde8c | 173 | #define REG_LR_SYNCWORDTOLERANCE 0x09CD |
| GregCr | 0:03ec2f3bde8c | 174 | |
| GregCr | 0:03ec2f3bde8c | 175 | /*! |
| GregCr | 0:03ec2f3bde8c | 176 | * \brief Represents the states of the radio |
| GregCr | 0:03ec2f3bde8c | 177 | */ |
| GregCr | 0:03ec2f3bde8c | 178 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 179 | { |
| GregCr | 0:03ec2f3bde8c | 180 | RF_IDLE = 0x00, //!< The radio is idle |
| GregCr | 0:03ec2f3bde8c | 181 | RF_RX_RUNNING, //!< The radio is in reception state |
| GregCr | 0:03ec2f3bde8c | 182 | RF_TX_RUNNING, //!< The radio is in transmission state |
| GregCr | 0:03ec2f3bde8c | 183 | RF_CAD, //!< The radio is doing channel activity detection |
| GregCr | 0:03ec2f3bde8c | 184 | }RadioStates_t; |
| GregCr | 0:03ec2f3bde8c | 185 | |
| GregCr | 0:03ec2f3bde8c | 186 | /*! |
| GregCr | 0:03ec2f3bde8c | 187 | * \brief Represents the operating mode the radio is actually running |
| GregCr | 0:03ec2f3bde8c | 188 | */ |
| GregCr | 0:03ec2f3bde8c | 189 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 190 | { |
| GregCr | 0:03ec2f3bde8c | 191 | MODE_SLEEP = 0x00, //! The radio is in sleep mode |
| GregCr | 0:03ec2f3bde8c | 192 | MODE_CALIBRATION, //! The radio is in calibration mode |
| GregCr | 0:03ec2f3bde8c | 193 | MODE_STDBY_RC, //! The radio is in standby mode with RC oscillator |
| GregCr | 0:03ec2f3bde8c | 194 | MODE_STDBY_XOSC, //! The radio is in standby mode with XOSC oscillator |
| GregCr | 0:03ec2f3bde8c | 195 | MODE_FS, //! The radio is in frequency synthesis mode |
| GregCr | 0:03ec2f3bde8c | 196 | MODE_RX, //! The radio is in receive mode |
| GregCr | 0:03ec2f3bde8c | 197 | MODE_TX, //! The radio is in transmit mode |
| GregCr | 0:03ec2f3bde8c | 198 | MODE_CAD //! The radio is in channel activity detection mode |
| GregCr | 0:03ec2f3bde8c | 199 | }RadioOperatingModes_t; |
| GregCr | 0:03ec2f3bde8c | 200 | |
| GregCr | 0:03ec2f3bde8c | 201 | /*! |
| GregCr | 0:03ec2f3bde8c | 202 | * \brief Declares the oscillator in use while in standby mode |
| GregCr | 0:03ec2f3bde8c | 203 | * |
| GregCr | 0:03ec2f3bde8c | 204 | * Using the STDBY_RC standby mode allow to reduce the energy consumption |
| GregCr | 0:03ec2f3bde8c | 205 | * STDBY_XOSC should be used for time critical applications |
| GregCr | 0:03ec2f3bde8c | 206 | */ |
| GregCr | 0:03ec2f3bde8c | 207 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 208 | { |
| GregCr | 0:03ec2f3bde8c | 209 | STDBY_RC = 0x00, |
| GregCr | 0:03ec2f3bde8c | 210 | STDBY_XOSC = 0x01, |
| GregCr | 0:03ec2f3bde8c | 211 | }RadioStandbyModes_t; |
| GregCr | 0:03ec2f3bde8c | 212 | |
| GregCr | 0:03ec2f3bde8c | 213 | /*! |
| GregCr | 0:03ec2f3bde8c | 214 | * \brief Declares the power regulation used to power the device |
| GregCr | 0:03ec2f3bde8c | 215 | * |
| GregCr | 0:03ec2f3bde8c | 216 | * This command allows the user to specify if DC-DC or LDO is used for power regulation. |
| GregCr | 0:03ec2f3bde8c | 217 | * Using only LDO implies that the Rx or Tx current is doubled |
| GregCr | 0:03ec2f3bde8c | 218 | */ |
| GregCr | 0:03ec2f3bde8c | 219 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 220 | { |
| GregCr | 0:03ec2f3bde8c | 221 | USE_LDO = 0x00, //! Use LDO (default value) |
| GregCr | 0:03ec2f3bde8c | 222 | USE_DCDC = 0x01, //! Use DCDC |
| GregCr | 0:03ec2f3bde8c | 223 | }RadioRegulatorModes_t; |
| GregCr | 0:03ec2f3bde8c | 224 | |
| GregCr | 0:03ec2f3bde8c | 225 | /*! |
| GregCr | 0:03ec2f3bde8c | 226 | * \brief Represents the possible packet type (i.e. modem) used |
| GregCr | 0:03ec2f3bde8c | 227 | */ |
| GregCr | 0:03ec2f3bde8c | 228 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 229 | { |
| GregCr | 0:03ec2f3bde8c | 230 | PACKET_TYPE_GFSK = 0x00, |
| GregCr | 0:03ec2f3bde8c | 231 | PACKET_TYPE_LORA, |
| GregCr | 0:03ec2f3bde8c | 232 | PACKET_TYPE_RANGING, |
| GregCr | 0:03ec2f3bde8c | 233 | PACKET_TYPE_FLRC, |
| GregCr | 0:03ec2f3bde8c | 234 | PACKET_TYPE_BLE, |
| GregCr | 0:03ec2f3bde8c | 235 | PACKET_TYPE_NONE = 0x0F, |
| GregCr | 0:03ec2f3bde8c | 236 | }RadioPacketTypes_t; |
| GregCr | 0:03ec2f3bde8c | 237 | |
| GregCr | 0:03ec2f3bde8c | 238 | /*! |
| GregCr | 0:03ec2f3bde8c | 239 | * \brief Represents the ramping time for power amplifier |
| GregCr | 0:03ec2f3bde8c | 240 | */ |
| GregCr | 0:03ec2f3bde8c | 241 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 242 | { |
| GregCr | 0:03ec2f3bde8c | 243 | RADIO_RAMP_02_US = 0x00, |
| GregCr | 0:03ec2f3bde8c | 244 | RADIO_RAMP_04_US = 0x20, |
| GregCr | 0:03ec2f3bde8c | 245 | RADIO_RAMP_06_US = 0x40, |
| GregCr | 0:03ec2f3bde8c | 246 | RADIO_RAMP_08_US = 0x60, |
| GregCr | 0:03ec2f3bde8c | 247 | RADIO_RAMP_10_US = 0x80, |
| GregCr | 0:03ec2f3bde8c | 248 | RADIO_RAMP_12_US = 0xA0, |
| GregCr | 0:03ec2f3bde8c | 249 | RADIO_RAMP_16_US = 0xC0, |
| GregCr | 0:03ec2f3bde8c | 250 | RADIO_RAMP_20_US = 0xE0, |
| GregCr | 0:03ec2f3bde8c | 251 | }RadioRampTimes_t; |
| GregCr | 0:03ec2f3bde8c | 252 | |
| GregCr | 0:03ec2f3bde8c | 253 | /*! |
| GregCr | 0:03ec2f3bde8c | 254 | * \brief Represents the number of symbols to be used for channel activity detection operation |
| GregCr | 0:03ec2f3bde8c | 255 | */ |
| GregCr | 0:03ec2f3bde8c | 256 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 257 | { |
| GregCr | 0:03ec2f3bde8c | 258 | LORA_CAD_01_SYMBOL = 0x00, |
| GregCr | 0:03ec2f3bde8c | 259 | LORA_CAD_02_SYMBOL = 0x20, |
| GregCr | 0:03ec2f3bde8c | 260 | LORA_CAD_04_SYMBOL = 0x40, |
| GregCr | 0:03ec2f3bde8c | 261 | LORA_CAD_08_SYMBOL = 0x60, |
| GregCr | 0:03ec2f3bde8c | 262 | LORA_CAD_16_SYMBOL = 0x80, |
| GregCr | 0:03ec2f3bde8c | 263 | }RadioLoRaCadSymbols_t; |
| GregCr | 0:03ec2f3bde8c | 264 | |
| GregCr | 0:03ec2f3bde8c | 265 | /*! |
| GregCr | 0:03ec2f3bde8c | 266 | * \brief Represents the possible combinations of bitrate and bandwidth for |
| GregCr | 0:03ec2f3bde8c | 267 | * GFSK and BLE packet types |
| GregCr | 0:03ec2f3bde8c | 268 | * |
| GregCr | 0:03ec2f3bde8c | 269 | * The bitrate is expressed in Mb/s and the bandwidth in MHz |
| GregCr | 0:03ec2f3bde8c | 270 | */ |
| GregCr | 0:03ec2f3bde8c | 271 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 272 | { |
| GregCr | 0:03ec2f3bde8c | 273 | GFSK_BLE_BR_2_000_BW_2_4 = 0x04, |
| GregCr | 0:03ec2f3bde8c | 274 | GFSK_BLE_BR_1_600_BW_2_4 = 0x28, |
| GregCr | 0:03ec2f3bde8c | 275 | GFSK_BLE_BR_1_000_BW_2_4 = 0x4C, |
| GregCr | 0:03ec2f3bde8c | 276 | GFSK_BLE_BR_1_000_BW_1_2 = 0x45, |
| GregCr | 0:03ec2f3bde8c | 277 | GFSK_BLE_BR_0_800_BW_2_4 = 0x70, |
| GregCr | 0:03ec2f3bde8c | 278 | GFSK_BLE_BR_0_800_BW_1_2 = 0x69, |
| GregCr | 0:03ec2f3bde8c | 279 | GFSK_BLE_BR_0_500_BW_1_2 = 0x8D, |
| GregCr | 0:03ec2f3bde8c | 280 | GFSK_BLE_BR_0_500_BW_0_6 = 0x86, |
| GregCr | 0:03ec2f3bde8c | 281 | GFSK_BLE_BR_0_400_BW_1_2 = 0xB1, |
| GregCr | 0:03ec2f3bde8c | 282 | GFSK_BLE_BR_0_400_BW_0_6 = 0xAA, |
| GregCr | 0:03ec2f3bde8c | 283 | GFSK_BLE_BR_0_250_BW_0_6 = 0xCE, |
| GregCr | 0:03ec2f3bde8c | 284 | GFSK_BLE_BR_0_250_BW_0_3 = 0xC7, |
| GregCr | 0:03ec2f3bde8c | 285 | GFSK_BLE_BR_0_125_BW_0_3 = 0xEF, |
| GregCr | 0:03ec2f3bde8c | 286 | }RadioGfskBleBitrates_t; |
| GregCr | 0:03ec2f3bde8c | 287 | |
| GregCr | 0:03ec2f3bde8c | 288 | /*! |
| GregCr | 0:03ec2f3bde8c | 289 | * \brief Represents the modulation index used in GFSK and BLE packet |
| GregCr | 0:03ec2f3bde8c | 290 | * types |
| GregCr | 0:03ec2f3bde8c | 291 | */ |
| GregCr | 0:03ec2f3bde8c | 292 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 293 | { |
| GregCr | 0:03ec2f3bde8c | 294 | GFSK_BLE_MOD_IND_0_35 = 0, |
| GregCr | 0:03ec2f3bde8c | 295 | GFSK_BLE_MOD_IND_0_50 = 1, |
| GregCr | 0:03ec2f3bde8c | 296 | GFSK_BLE_MOD_IND_0_75 = 2, |
| GregCr | 0:03ec2f3bde8c | 297 | GFSK_BLE_MOD_IND_1_00 = 3, |
| GregCr | 0:03ec2f3bde8c | 298 | GFSK_BLE_MOD_IND_1_25 = 4, |
| GregCr | 0:03ec2f3bde8c | 299 | GFSK_BLE_MOD_IND_1_50 = 5, |
| GregCr | 0:03ec2f3bde8c | 300 | GFSK_BLE_MOD_IND_1_75 = 6, |
| GregCr | 0:03ec2f3bde8c | 301 | GFSK_BLE_MOD_IND_2_00 = 7, |
| GregCr | 0:03ec2f3bde8c | 302 | GFSK_BLE_MOD_IND_2_25 = 8, |
| GregCr | 0:03ec2f3bde8c | 303 | GFSK_BLE_MOD_IND_2_50 = 9, |
| GregCr | 0:03ec2f3bde8c | 304 | GFSK_BLE_MOD_IND_2_75 = 10, |
| GregCr | 0:03ec2f3bde8c | 305 | GFSK_BLE_MOD_IND_3_00 = 11, |
| GregCr | 0:03ec2f3bde8c | 306 | GFSK_BLE_MOD_IND_3_25 = 12, |
| GregCr | 0:03ec2f3bde8c | 307 | GFSK_BLE_MOD_IND_3_50 = 13, |
| GregCr | 0:03ec2f3bde8c | 308 | GFSK_BLE_MOD_IND_3_75 = 14, |
| GregCr | 0:03ec2f3bde8c | 309 | GFSK_BLE_MOD_IND_4_00 = 15, |
| GregCr | 0:03ec2f3bde8c | 310 | }RadioGfskBleModIndexes_t; |
| GregCr | 0:03ec2f3bde8c | 311 | |
| GregCr | 0:03ec2f3bde8c | 312 | /*! |
| GregCr | 0:03ec2f3bde8c | 313 | * \brief Represents the possible combination of bitrate and bandwidth for FLRC |
| GregCr | 0:03ec2f3bde8c | 314 | * packet type |
| GregCr | 0:03ec2f3bde8c | 315 | * |
| GregCr | 0:03ec2f3bde8c | 316 | * The bitrate is in Mb/s and the bitrate in MHz |
| GregCr | 0:03ec2f3bde8c | 317 | */ |
| GregCr | 0:03ec2f3bde8c | 318 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 319 | { |
| GregCr | 0:03ec2f3bde8c | 320 | FLRC_BR_1_300_BW_1_2 = 0x45, |
| GregCr | 0:03ec2f3bde8c | 321 | FLRC_BR_1_040_BW_1_2 = 0x69, |
| GregCr | 0:03ec2f3bde8c | 322 | FLRC_BR_0_650_BW_0_6 = 0x86, |
| GregCr | 0:03ec2f3bde8c | 323 | FLRC_BR_0_520_BW_0_6 = 0xAA, |
| GregCr | 0:03ec2f3bde8c | 324 | FLRC_BR_0_325_BW_0_3 = 0xC7, |
| GregCr | 0:03ec2f3bde8c | 325 | FLRC_BR_0_260_BW_0_3 = 0xEB, |
| GregCr | 0:03ec2f3bde8c | 326 | }RadioFlrcBitrates_t; |
| GregCr | 0:03ec2f3bde8c | 327 | |
| GregCr | 0:03ec2f3bde8c | 328 | /*! |
| GregCr | 0:03ec2f3bde8c | 329 | * \brief Represents the possible values for coding rate parameter in FLRC |
| GregCr | 0:03ec2f3bde8c | 330 | * packet type |
| GregCr | 0:03ec2f3bde8c | 331 | */ |
| GregCr | 0:03ec2f3bde8c | 332 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 333 | { |
| GregCr | 0:03ec2f3bde8c | 334 | FLRC_CR_1_2 = 0x00, |
| GregCr | 0:03ec2f3bde8c | 335 | FLRC_CR_3_4 = 0x02, |
| GregCr | 0:03ec2f3bde8c | 336 | FLRC_CR_1_0 = 0x04, |
| GregCr | 0:03ec2f3bde8c | 337 | }RadioFlrcCodingRates_t; |
| GregCr | 0:03ec2f3bde8c | 338 | |
| GregCr | 0:03ec2f3bde8c | 339 | /*! |
| GregCr | 0:03ec2f3bde8c | 340 | * \brief Represents the modulation shaping parameter for GFSK, FLRC and BLE |
| GregCr | 0:03ec2f3bde8c | 341 | * packet types |
| GregCr | 0:03ec2f3bde8c | 342 | */ |
| GregCr | 0:03ec2f3bde8c | 343 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 344 | { |
| GregCr | 0:03ec2f3bde8c | 345 | RADIO_MOD_SHAPING_BT_OFF = 0x00, //! No filtering |
| GregCr | 0:03ec2f3bde8c | 346 | RADIO_MOD_SHAPING_BT_1_0 = 0x10, |
| GregCr | 0:03ec2f3bde8c | 347 | RADIO_MOD_SHAPING_BT_0_5 = 0x20, |
| GregCr | 0:03ec2f3bde8c | 348 | }RadioModShapings_t; |
| GregCr | 0:03ec2f3bde8c | 349 | |
| GregCr | 0:03ec2f3bde8c | 350 | /*! |
| GregCr | 0:03ec2f3bde8c | 351 | * \brief Represents the possible spreading factor values in LORA packet types |
| GregCr | 0:03ec2f3bde8c | 352 | */ |
| GregCr | 0:03ec2f3bde8c | 353 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 354 | { |
| GregCr | 0:03ec2f3bde8c | 355 | LORA_SF5 = 0x50, |
| GregCr | 0:03ec2f3bde8c | 356 | LORA_SF6 = 0x60, |
| GregCr | 0:03ec2f3bde8c | 357 | LORA_SF7 = 0x70, |
| GregCr | 0:03ec2f3bde8c | 358 | LORA_SF8 = 0x80, |
| GregCr | 0:03ec2f3bde8c | 359 | LORA_SF9 = 0x90, |
| GregCr | 0:03ec2f3bde8c | 360 | LORA_SF10 = 0xA0, |
| GregCr | 0:03ec2f3bde8c | 361 | LORA_SF11 = 0xB0, |
| GregCr | 0:03ec2f3bde8c | 362 | LORA_SF12 = 0xC0, |
| GregCr | 0:03ec2f3bde8c | 363 | }RadioLoRaSpreadingFactors_t; |
| GregCr | 0:03ec2f3bde8c | 364 | |
| GregCr | 0:03ec2f3bde8c | 365 | /*! |
| GregCr | 0:03ec2f3bde8c | 366 | * \brief Represents the bandwidth values for LORA packet type |
| GregCr | 0:03ec2f3bde8c | 367 | */ |
| GregCr | 0:03ec2f3bde8c | 368 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 369 | { |
| GregCr | 0:03ec2f3bde8c | 370 | LORA_BW_0200 = 0x34, |
| GregCr | 0:03ec2f3bde8c | 371 | LORA_BW_0400 = 0x26, |
| GregCr | 0:03ec2f3bde8c | 372 | LORA_BW_0800 = 0x18, |
| GregCr | 0:03ec2f3bde8c | 373 | LORA_BW_1600 = 0x0A, |
| GregCr | 0:03ec2f3bde8c | 374 | }RadioLoRaBandwidths_t; |
| GregCr | 0:03ec2f3bde8c | 375 | |
| GregCr | 0:03ec2f3bde8c | 376 | /*! |
| GregCr | 0:03ec2f3bde8c | 377 | * \brief Represents the coding rate values for LORA packet type |
| GregCr | 0:03ec2f3bde8c | 378 | */ |
| GregCr | 0:03ec2f3bde8c | 379 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 380 | { |
| GregCr | 0:03ec2f3bde8c | 381 | LORA_CR_4_5 = 0x01, |
| GregCr | 0:03ec2f3bde8c | 382 | LORA_CR_4_6 = 0x02, |
| GregCr | 0:03ec2f3bde8c | 383 | LORA_CR_4_7 = 0x03, |
| GregCr | 0:03ec2f3bde8c | 384 | LORA_CR_4_8 = 0x04, |
| GregCr | 0:03ec2f3bde8c | 385 | LORA_CR_LI_4_5 = 0x05, |
| GregCr | 0:03ec2f3bde8c | 386 | LORA_CR_LI_4_6 = 0x06, |
| GregCr | 0:03ec2f3bde8c | 387 | LORA_CR_LI_4_7 = 0x07, |
| GregCr | 0:03ec2f3bde8c | 388 | }RadioLoRaCodingRates_t; |
| GregCr | 0:03ec2f3bde8c | 389 | |
| GregCr | 0:03ec2f3bde8c | 390 | /*! |
| GregCr | 0:03ec2f3bde8c | 391 | * \brief Represents the preamble length values for GFSK and FLRC packet |
| GregCr | 0:03ec2f3bde8c | 392 | * types |
| GregCr | 0:03ec2f3bde8c | 393 | */ |
| GregCr | 0:03ec2f3bde8c | 394 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 395 | { |
| GregCr | 0:03ec2f3bde8c | 396 | PREAMBLE_LENGTH_04_BITS = 0x00, //!< Preamble length: 04 bits |
| GregCr | 0:03ec2f3bde8c | 397 | PREAMBLE_LENGTH_08_BITS = 0x10, //!< Preamble length: 08 bits |
| GregCr | 0:03ec2f3bde8c | 398 | PREAMBLE_LENGTH_12_BITS = 0x20, //!< Preamble length: 12 bits |
| GregCr | 0:03ec2f3bde8c | 399 | PREAMBLE_LENGTH_16_BITS = 0x30, //!< Preamble length: 16 bits |
| GregCr | 0:03ec2f3bde8c | 400 | PREAMBLE_LENGTH_20_BITS = 0x40, //!< Preamble length: 20 bits |
| GregCr | 0:03ec2f3bde8c | 401 | PREAMBLE_LENGTH_24_BITS = 0x50, //!< Preamble length: 24 bits |
| GregCr | 0:03ec2f3bde8c | 402 | PREAMBLE_LENGTH_28_BITS = 0x60, //!< Preamble length: 28 bits |
| GregCr | 0:03ec2f3bde8c | 403 | PREAMBLE_LENGTH_32_BITS = 0x70, //!< Preamble length: 32 bits |
| GregCr | 0:03ec2f3bde8c | 404 | }RadioPreambleLengths_t; |
| GregCr | 0:03ec2f3bde8c | 405 | |
| GregCr | 0:03ec2f3bde8c | 406 | /*! |
| GregCr | 0:03ec2f3bde8c | 407 | * \brief Represents the SyncWord length for FLRC packet type |
| GregCr | 0:03ec2f3bde8c | 408 | */ |
| GregCr | 0:03ec2f3bde8c | 409 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 410 | { |
| GregCr | 0:03ec2f3bde8c | 411 | FLRC_NO_SYNCWORD = 0x00, |
| GregCr | 0:03ec2f3bde8c | 412 | FLRC_SYNCWORD_LENGTH_4_BYTE = 0x04, |
| GregCr | 0:03ec2f3bde8c | 413 | }RadioFlrcSyncWordLengths_t; |
| GregCr | 0:03ec2f3bde8c | 414 | |
| GregCr | 0:03ec2f3bde8c | 415 | /*! |
| GregCr | 0:03ec2f3bde8c | 416 | * \brief The length of sync words for GFSK packet type |
| GregCr | 0:03ec2f3bde8c | 417 | */ |
| GregCr | 0:03ec2f3bde8c | 418 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 419 | { |
| GregCr | 0:03ec2f3bde8c | 420 | GFSK_SYNCWORD_LENGTH_1_BYTE = 0x00, //!< Sync word length: 1 byte |
| GregCr | 0:03ec2f3bde8c | 421 | GFSK_SYNCWORD_LENGTH_2_BYTE = 0x02, //!< Sync word length: 2 bytes |
| GregCr | 0:03ec2f3bde8c | 422 | GFSK_SYNCWORD_LENGTH_3_BYTE = 0x04, //!< Sync word length: 3 bytes |
| GregCr | 0:03ec2f3bde8c | 423 | GFSK_SYNCWORD_LENGTH_4_BYTE = 0x06, //!< Sync word length: 4 bytes |
| GregCr | 0:03ec2f3bde8c | 424 | GFSK_SYNCWORD_LENGTH_5_BYTE = 0x08, //!< Sync word length: 5 bytes |
| GregCr | 0:03ec2f3bde8c | 425 | }RadioSyncWordLengths_t; |
| GregCr | 0:03ec2f3bde8c | 426 | |
| GregCr | 0:03ec2f3bde8c | 427 | /*! |
| GregCr | 0:03ec2f3bde8c | 428 | * \brief Represents the possible combinations of SyncWord correlators |
| GregCr | 0:03ec2f3bde8c | 429 | * activated for GFSK and FLRC packet types |
| GregCr | 0:03ec2f3bde8c | 430 | */ |
| GregCr | 0:03ec2f3bde8c | 431 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 432 | { |
| GregCr | 0:03ec2f3bde8c | 433 | RADIO_RX_MATCH_SYNCWORD_OFF = 0x00, //!< No correlator turned on, i.e. do not search for SyncWord |
| GregCr | 0:03ec2f3bde8c | 434 | RADIO_RX_MATCH_SYNCWORD_1 = 0x10, |
| GregCr | 0:03ec2f3bde8c | 435 | RADIO_RX_MATCH_SYNCWORD_2 = 0x20, |
| GregCr | 0:03ec2f3bde8c | 436 | RADIO_RX_MATCH_SYNCWORD_1_2 = 0x30, |
| GregCr | 0:03ec2f3bde8c | 437 | RADIO_RX_MATCH_SYNCWORD_3 = 0x40, |
| GregCr | 0:03ec2f3bde8c | 438 | RADIO_RX_MATCH_SYNCWORD_1_3 = 0x50, |
| GregCr | 0:03ec2f3bde8c | 439 | RADIO_RX_MATCH_SYNCWORD_2_3 = 0x60, |
| GregCr | 0:03ec2f3bde8c | 440 | RADIO_RX_MATCH_SYNCWORD_1_2_3 = 0x70, |
| GregCr | 0:03ec2f3bde8c | 441 | }RadioSyncWordRxMatchs_t; |
| GregCr | 0:03ec2f3bde8c | 442 | |
| GregCr | 0:03ec2f3bde8c | 443 | /*! |
| GregCr | 0:03ec2f3bde8c | 444 | * \brief Radio packet length mode for GFSK and FLRC packet types |
| GregCr | 0:03ec2f3bde8c | 445 | */ |
| GregCr | 0:03ec2f3bde8c | 446 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 447 | { |
| GregCr | 0:03ec2f3bde8c | 448 | RADIO_PACKET_FIXED_LENGTH = 0x00, //!< The packet is known on both sides, no header included in the packet |
| GregCr | 0:03ec2f3bde8c | 449 | RADIO_PACKET_VARIABLE_LENGTH = 0x20, //!< The packet is on variable size, header included |
| GregCr | 0:03ec2f3bde8c | 450 | }RadioPacketLengthModes_t; |
| GregCr | 0:03ec2f3bde8c | 451 | |
| GregCr | 0:03ec2f3bde8c | 452 | /*! |
| GregCr | 0:03ec2f3bde8c | 453 | * \brief Represents the CRC length for GFSK and FLRC packet types |
| GregCr | 0:03ec2f3bde8c | 454 | * |
| GregCr | 0:03ec2f3bde8c | 455 | * \warning Not all configurations are available for both GFSK and FLRC |
| GregCr | 0:03ec2f3bde8c | 456 | * packet type. Refer to the datasheet for possible configuration. |
| GregCr | 0:03ec2f3bde8c | 457 | */ |
| GregCr | 0:03ec2f3bde8c | 458 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 459 | { |
| GregCr | 0:03ec2f3bde8c | 460 | RADIO_CRC_OFF = 0x00, //!< No CRC in use |
| GregCr | 0:03ec2f3bde8c | 461 | RADIO_CRC_1_BYTES = 0x10, |
| GregCr | 0:03ec2f3bde8c | 462 | RADIO_CRC_2_BYTES = 0x20, |
| GregCr | 0:03ec2f3bde8c | 463 | RADIO_CRC_3_BYTES = 0x30, |
| GregCr | 0:03ec2f3bde8c | 464 | }RadioCrcTypes_t; |
| GregCr | 0:03ec2f3bde8c | 465 | |
| GregCr | 0:03ec2f3bde8c | 466 | /*! |
| GregCr | 0:03ec2f3bde8c | 467 | * \brief Radio whitening mode activated or deactivated for GFSK, FLRC and |
| GregCr | 0:03ec2f3bde8c | 468 | * BLE packet types |
| GregCr | 0:03ec2f3bde8c | 469 | */ |
| GregCr | 0:03ec2f3bde8c | 470 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 471 | { |
| GregCr | 0:03ec2f3bde8c | 472 | RADIO_WHITENING_ON = 0x00, |
| GregCr | 0:03ec2f3bde8c | 473 | RADIO_WHITENING_OFF = 0x08, |
| GregCr | 0:03ec2f3bde8c | 474 | }RadioWhiteningModes_t; |
| GregCr | 0:03ec2f3bde8c | 475 | |
| GregCr | 0:03ec2f3bde8c | 476 | /*! |
| GregCr | 0:03ec2f3bde8c | 477 | * \brief Holds the packet length mode of a LORA packet type |
| GregCr | 0:03ec2f3bde8c | 478 | */ |
| GregCr | 0:03ec2f3bde8c | 479 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 480 | { |
| GregCr | 0:03ec2f3bde8c | 481 | LORA_PACKET_VARIABLE_LENGTH = 0x00, //!< The packet is on variable size, header included |
| GregCr | 0:03ec2f3bde8c | 482 | LORA_PACKET_FIXED_LENGTH = 0x80, //!< The packet is known on both sides, no header included in the packet |
| GregCr | 0:03ec2f3bde8c | 483 | LORA_PACKET_EXPLICIT = LORA_PACKET_VARIABLE_LENGTH, |
| GregCr | 0:03ec2f3bde8c | 484 | LORA_PACKET_IMPLICIT = LORA_PACKET_FIXED_LENGTH, |
| GregCr | 0:03ec2f3bde8c | 485 | }RadioLoRaPacketLengthsModes_t; |
| GregCr | 0:03ec2f3bde8c | 486 | |
| GregCr | 0:03ec2f3bde8c | 487 | /*! |
| GregCr | 0:03ec2f3bde8c | 488 | * \brief Represents the CRC mode for LORA packet type |
| GregCr | 0:03ec2f3bde8c | 489 | */ |
| GregCr | 0:03ec2f3bde8c | 490 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 491 | { |
| GregCr | 0:03ec2f3bde8c | 492 | LORA_CRC_ON = 0x20, //!< CRC activated |
| GregCr | 0:03ec2f3bde8c | 493 | LORA_CRC_OFF = 0x00, //!< CRC not used |
| GregCr | 0:03ec2f3bde8c | 494 | }RadioLoRaCrcModes_t; |
| GregCr | 0:03ec2f3bde8c | 495 | |
| GregCr | 0:03ec2f3bde8c | 496 | /*! |
| GregCr | 0:03ec2f3bde8c | 497 | * \brief Represents the IQ mode for LORA packet type |
| GregCr | 0:03ec2f3bde8c | 498 | */ |
| GregCr | 0:03ec2f3bde8c | 499 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 500 | { |
| GregCr | 0:03ec2f3bde8c | 501 | LORA_IQ_NORMAL = 0x40, |
| GregCr | 0:03ec2f3bde8c | 502 | LORA_IQ_INVERTED = 0x00, |
| GregCr | 0:03ec2f3bde8c | 503 | }RadioLoRaIQModes_t; |
| GregCr | 0:03ec2f3bde8c | 504 | |
| GregCr | 0:03ec2f3bde8c | 505 | /*! |
| GregCr | 0:03ec2f3bde8c | 506 | * \brief Represents the length of the ID to check in ranging operation |
| GregCr | 0:03ec2f3bde8c | 507 | */ |
| GregCr | 0:03ec2f3bde8c | 508 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 509 | { |
| GregCr | 0:03ec2f3bde8c | 510 | RANGING_IDCHECK_LENGTH_08_BITS = 0x00, |
| GregCr | 0:03ec2f3bde8c | 511 | RANGING_IDCHECK_LENGTH_16_BITS, |
| GregCr | 0:03ec2f3bde8c | 512 | RANGING_IDCHECK_LENGTH_24_BITS, |
| GregCr | 0:03ec2f3bde8c | 513 | RANGING_IDCHECK_LENGTH_32_BITS, |
| GregCr | 0:03ec2f3bde8c | 514 | }RadioRangingIdCheckLengths_t; |
| GregCr | 0:03ec2f3bde8c | 515 | |
| GregCr | 0:03ec2f3bde8c | 516 | /*! |
| GregCr | 0:03ec2f3bde8c | 517 | * \brief Represents the result type to be used in ranging operation |
| GregCr | 0:03ec2f3bde8c | 518 | */ |
| GregCr | 0:03ec2f3bde8c | 519 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 520 | { |
| GregCr | 0:03ec2f3bde8c | 521 | RANGING_RESULT_RAW = 0x00, |
| GregCr | 0:03ec2f3bde8c | 522 | RANGING_RESULT_AVERAGED = 0x01, |
| GregCr | 0:03ec2f3bde8c | 523 | RANGING_RESULT_DEBIASED = 0x02, |
| GregCr | 0:03ec2f3bde8c | 524 | RANGING_RESULT_FILTERED = 0x03, |
| GregCr | 0:03ec2f3bde8c | 525 | }RadioRangingResultTypes_t; |
| GregCr | 0:03ec2f3bde8c | 526 | |
| GregCr | 0:03ec2f3bde8c | 527 | /*! |
| GregCr | 0:03ec2f3bde8c | 528 | * \brief Represents the connection state for BLE packet type |
| GregCr | 0:03ec2f3bde8c | 529 | */ |
| GregCr | 0:03ec2f3bde8c | 530 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 531 | { |
| GregCr | 0:03ec2f3bde8c | 532 | BLE_MASTER_SLAVE = 0x00, |
| GregCr | 0:03ec2f3bde8c | 533 | BLE_ADVERTISER = 0x20, |
| GregCr | 0:03ec2f3bde8c | 534 | BLE_TX_TEST_MODE = 0x40, |
| GregCr | 0:03ec2f3bde8c | 535 | BLE_RX_TEST_MODE = 0x60, |
| GregCr | 0:03ec2f3bde8c | 536 | BLE_RXTX_TEST_MODE = 0x80, |
| GregCr | 0:03ec2f3bde8c | 537 | }RadioBleConnectionStates_t; |
| GregCr | 0:03ec2f3bde8c | 538 | |
| GregCr | 0:03ec2f3bde8c | 539 | /*! |
| GregCr | 0:03ec2f3bde8c | 540 | * \brief Represents the CRC field length for BLE packet type |
| GregCr | 0:03ec2f3bde8c | 541 | */ |
| GregCr | 0:03ec2f3bde8c | 542 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 543 | { |
| GregCr | 0:03ec2f3bde8c | 544 | BLE_CRC_OFF = 0x00, |
| GregCr | 0:03ec2f3bde8c | 545 | BLE_CRC_3B = 0x10, |
| GregCr | 0:03ec2f3bde8c | 546 | }RadioBleCrcFields_t; |
| GregCr | 0:03ec2f3bde8c | 547 | |
| GregCr | 0:03ec2f3bde8c | 548 | /*! |
| GregCr | 0:03ec2f3bde8c | 549 | * \brief Represents the specific packets to use in BLE packet type |
| GregCr | 0:03ec2f3bde8c | 550 | */ |
| GregCr | 0:03ec2f3bde8c | 551 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 552 | { |
| GregCr | 0:03ec2f3bde8c | 553 | BLE_PRBS_9 = 0x00, //!< Pseudo Random Binary Sequence based on 9th degree polynomial |
| GregCr | 0:03ec2f3bde8c | 554 | BLE_PRBS_15 = 0x0C, //!< Pseudo Random Binary Sequence based on 15th degree polynomial |
| GregCr | 0:03ec2f3bde8c | 555 | BLE_EYELONG_1_0 = 0x04, //!< Repeated '11110000' sequence |
| GregCr | 0:03ec2f3bde8c | 556 | BLE_EYELONG_0_1 = 0x18, //!< Repeated '00001111' sequence |
| GregCr | 0:03ec2f3bde8c | 557 | BLE_EYESHORT_1_0 = 0x08, //!< Repeated '10101010' sequence |
| GregCr | 0:03ec2f3bde8c | 558 | BLE_EYESHORT_0_1 = 0x1C, //!< Repeated '01010101' sequence |
| GregCr | 0:03ec2f3bde8c | 559 | BLE_ALL_1 = 0x10, //!< Repeated '11111111' sequence |
| GregCr | 0:03ec2f3bde8c | 560 | BLE_ALL_0 = 0x14, //!< Repeated '00000000' sequence |
| GregCr | 0:03ec2f3bde8c | 561 | }RadioBlePacketTypes_t; |
| GregCr | 0:03ec2f3bde8c | 562 | |
| GregCr | 0:03ec2f3bde8c | 563 | /*! |
| GregCr | 0:03ec2f3bde8c | 564 | * \brief Represents the interruption masks available for the radio |
| GregCr | 0:03ec2f3bde8c | 565 | * |
| GregCr | 0:03ec2f3bde8c | 566 | * \remark Note that not all these interruptions are available for all packet types |
| GregCr | 0:03ec2f3bde8c | 567 | */ |
| GregCr | 0:03ec2f3bde8c | 568 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 569 | { |
| GregCr | 0:03ec2f3bde8c | 570 | IRQ_RADIO_NONE = 0x0000, |
| GregCr | 0:03ec2f3bde8c | 571 | IRQ_TX_DONE = 0x0001, |
| GregCr | 0:03ec2f3bde8c | 572 | IRQ_RX_DONE = 0x0002, |
| GregCr | 0:03ec2f3bde8c | 573 | IRQ_SYNCWORD_VALID = 0x0004, |
| GregCr | 0:03ec2f3bde8c | 574 | IRQ_SYNCWORD_ERROR = 0x0008, |
| GregCr | 0:03ec2f3bde8c | 575 | IRQ_HEADER_VALID = 0x0010, |
| GregCr | 0:03ec2f3bde8c | 576 | IRQ_HEADER_ERROR = 0x0020, |
| GregCr | 0:03ec2f3bde8c | 577 | IRQ_CRC_ERROR = 0x0040, |
| GregCr | 0:03ec2f3bde8c | 578 | IRQ_RANGING_SLAVE_RESPONSE_DONE = 0x0080, |
| GregCr | 0:03ec2f3bde8c | 579 | IRQ_RANGING_SLAVE_REQUEST_DISCARDED = 0x0100, |
| GregCr | 0:03ec2f3bde8c | 580 | IRQ_RANGING_MASTER_RESULT_VALID = 0x0200, |
| GregCr | 0:03ec2f3bde8c | 581 | IRQ_RANGING_MASTER_RESULT_TIMEOUT = 0x0400, |
| GregCr | 0:03ec2f3bde8c | 582 | IRQ_RANGING_SLAVE_REQUEST_VALID = 0x0800, |
| GregCr | 0:03ec2f3bde8c | 583 | IRQ_CAD_DONE = 0x1000, |
| GregCr | 0:03ec2f3bde8c | 584 | IRQ_CAD_ACTIVITY_DETECTED = 0x2000, |
| GregCr | 0:03ec2f3bde8c | 585 | IRQ_RX_TX_TIMEOUT = 0x4000, |
| GregCr | 0:03ec2f3bde8c | 586 | IRQ_PREAMBLE_DETECTED = 0x8000, |
| GregCr | 0:03ec2f3bde8c | 587 | IRQ_RADIO_ALL = 0xFFFF, |
| GregCr | 0:03ec2f3bde8c | 588 | }RadioIrqMasks_t; |
| GregCr | 0:03ec2f3bde8c | 589 | |
| GregCr | 0:03ec2f3bde8c | 590 | /*! |
| GregCr | 0:03ec2f3bde8c | 591 | * \brief Represents the digital input/output of the radio |
| GregCr | 0:03ec2f3bde8c | 592 | */ |
| GregCr | 0:03ec2f3bde8c | 593 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 594 | { |
| GregCr | 0:03ec2f3bde8c | 595 | RADIO_DIO1 = 0x02, |
| GregCr | 0:03ec2f3bde8c | 596 | RADIO_DIO2 = 0x04, |
| GregCr | 0:03ec2f3bde8c | 597 | RADIO_DIO3 = 0x08, |
| GregCr | 0:03ec2f3bde8c | 598 | }RadioDios_t; |
| GregCr | 0:03ec2f3bde8c | 599 | |
| GregCr | 0:03ec2f3bde8c | 600 | /*! |
| GregCr | 0:03ec2f3bde8c | 601 | * \brief Represents the tick size available for Rx/Tx timeout operations |
| GregCr | 0:03ec2f3bde8c | 602 | */ |
| GregCr | 0:03ec2f3bde8c | 603 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 604 | { |
| GregCr | 0:03ec2f3bde8c | 605 | RADIO_TICK_SIZE_0015_US = 0x00, |
| GregCr | 0:03ec2f3bde8c | 606 | RADIO_TICK_SIZE_0062_US = 0x01, |
| GregCr | 0:03ec2f3bde8c | 607 | RADIO_TICK_SIZE_1000_US = 0x02, |
| GregCr | 0:03ec2f3bde8c | 608 | RADIO_TICK_SIZE_4000_US = 0x03, |
| GregCr | 0:03ec2f3bde8c | 609 | }RadioTickSizes_t; |
| GregCr | 0:03ec2f3bde8c | 610 | |
| GregCr | 0:03ec2f3bde8c | 611 | /*! |
| GregCr | 0:03ec2f3bde8c | 612 | * \brief Represents the role of the radio during ranging operations |
| GregCr | 0:03ec2f3bde8c | 613 | */ |
| GregCr | 0:03ec2f3bde8c | 614 | typedef enum |
| GregCr | 0:03ec2f3bde8c | 615 | { |
| GregCr | 0:03ec2f3bde8c | 616 | RADIO_RANGING_ROLE_SLAVE = 0x00, |
| GregCr | 0:03ec2f3bde8c | 617 | RADIO_RANGING_ROLE_MASTER = 0x01, |
| GregCr | 0:03ec2f3bde8c | 618 | }RadioRangingRoles_t; |
| GregCr | 0:03ec2f3bde8c | 619 | |
| GregCr | 0:03ec2f3bde8c | 620 | /*! |
| GregCr | 0:03ec2f3bde8c | 621 | * \brief Represents all possible opcode understood by the radio |
| GregCr | 0:03ec2f3bde8c | 622 | */ |
| GregCr | 0:03ec2f3bde8c | 623 | typedef enum RadioCommands_u |
| GregCr | 0:03ec2f3bde8c | 624 | { |
| GregCr | 0:03ec2f3bde8c | 625 | RADIO_GET_STATUS = 0xC0, |
| GregCr | 0:03ec2f3bde8c | 626 | RADIO_WRITE_REGISTER = 0x18, |
| GregCr | 0:03ec2f3bde8c | 627 | RADIO_READ_REGISTER = 0x19, |
| GregCr | 0:03ec2f3bde8c | 628 | RADIO_WRITE_BUFFER = 0x1A, |
| GregCr | 0:03ec2f3bde8c | 629 | RADIO_READ_BUFFER = 0x1B, |
| GregCr | 0:03ec2f3bde8c | 630 | RADIO_SET_SLEEP = 0x84, |
| GregCr | 0:03ec2f3bde8c | 631 | RADIO_SET_STANDBY = 0x80, |
| GregCr | 0:03ec2f3bde8c | 632 | RADIO_SET_FS = 0xC1, |
| GregCr | 0:03ec2f3bde8c | 633 | RADIO_SET_TX = 0x83, |
| GregCr | 0:03ec2f3bde8c | 634 | RADIO_SET_RX = 0x82, |
| GregCr | 0:03ec2f3bde8c | 635 | RADIO_SET_RXDUTYCYCLE = 0x94, |
| GregCr | 0:03ec2f3bde8c | 636 | RADIO_SET_CAD = 0xC5, |
| GregCr | 0:03ec2f3bde8c | 637 | RADIO_SET_TXCONTINUOUSWAVE = 0xD1, |
| GregCr | 0:03ec2f3bde8c | 638 | RADIO_SET_TXCONTINUOUSPREAMBLE = 0xD2, |
| GregCr | 0:03ec2f3bde8c | 639 | RADIO_SET_PACKETTYPE = 0x8A, |
| GregCr | 0:03ec2f3bde8c | 640 | RADIO_GET_PACKETTYPE = 0x03, |
| GregCr | 0:03ec2f3bde8c | 641 | RADIO_SET_RFFREQUENCY = 0x86, |
| GregCr | 0:03ec2f3bde8c | 642 | RADIO_SET_TXPARAMS = 0x8E, |
| GregCr | 0:03ec2f3bde8c | 643 | RADIO_SET_CADPARAMS = 0x88, |
| GregCr | 0:03ec2f3bde8c | 644 | RADIO_SET_BUFFERBASEADDRESS = 0x8F, |
| GregCr | 0:03ec2f3bde8c | 645 | RADIO_SET_MODULATIONPARAMS = 0x8B, |
| GregCr | 0:03ec2f3bde8c | 646 | RADIO_SET_PACKETPARAMS = 0x8C, |
| GregCr | 0:03ec2f3bde8c | 647 | RADIO_GET_RXBUFFERSTATUS = 0x17, |
| GregCr | 0:03ec2f3bde8c | 648 | RADIO_GET_PACKETSTATUS = 0x1D, |
| GregCr | 0:03ec2f3bde8c | 649 | RADIO_GET_RSSIINST = 0x1F, |
| GregCr | 0:03ec2f3bde8c | 650 | RADIO_SET_DIOIRQPARAMS = 0x8D, |
| GregCr | 0:03ec2f3bde8c | 651 | RADIO_GET_IRQSTATUS = 0x15, |
| GregCr | 0:03ec2f3bde8c | 652 | RADIO_CLR_IRQSTATUS = 0x97, |
| GregCr | 0:03ec2f3bde8c | 653 | RADIO_CALIBRATE = 0x89, |
| GregCr | 0:03ec2f3bde8c | 654 | RADIO_SET_REGULATORMODE = 0x96, |
| GregCr | 0:03ec2f3bde8c | 655 | RADIO_SET_SAVECONTEXT = 0xD5, |
| GregCr | 0:03ec2f3bde8c | 656 | RADIO_SET_AUTOTX = 0x98, |
| GregCr | 0:03ec2f3bde8c | 657 | RADIO_SET_AUTORX = 0x9E, |
| GregCr | 0:03ec2f3bde8c | 658 | RADIO_SET_LONGPREAMBLE = 0x9B, |
| GregCr | 0:03ec2f3bde8c | 659 | RADIO_SET_UARTSPEED = 0x9D, |
| GregCr | 0:03ec2f3bde8c | 660 | RADIO_SET_RANGING_ROLE = 0xA3, |
| GregCr | 0:03ec2f3bde8c | 661 | }RadioCommands_t; |
| GregCr | 0:03ec2f3bde8c | 662 | |
| GregCr | 0:03ec2f3bde8c | 663 | /*! |
| GregCr | 0:03ec2f3bde8c | 664 | * \brief Represents an amount of time measurable by the radio clock |
| GregCr | 0:03ec2f3bde8c | 665 | * |
| GregCr | 0:03ec2f3bde8c | 666 | * @code |
| GregCr | 0:03ec2f3bde8c | 667 | * Time = Step * NbSteps |
| GregCr | 0:03ec2f3bde8c | 668 | * Example: |
| GregCr | 0:03ec2f3bde8c | 669 | * Step = RADIO_TICK_SIZE_4000_US( 4 ms ) |
| GregCr | 0:03ec2f3bde8c | 670 | * NbSteps = 1000 |
| GregCr | 0:03ec2f3bde8c | 671 | * Time = 4e-3 * 1000 = 4 seconds |
| GregCr | 0:03ec2f3bde8c | 672 | * @endcode |
| GregCr | 0:03ec2f3bde8c | 673 | */ |
| GregCr | 0:03ec2f3bde8c | 674 | typedef struct TickTime_s |
| GregCr | 0:03ec2f3bde8c | 675 | { |
| GregCr | 0:03ec2f3bde8c | 676 | RadioTickSizes_t Step; //!< The step of ticktime |
| GregCr | 0:03ec2f3bde8c | 677 | /*! |
| GregCr | 0:03ec2f3bde8c | 678 | * \brief The number of steps for ticktime |
| GregCr | 0:03ec2f3bde8c | 679 | * Special values are: |
| GregCr | 0:03ec2f3bde8c | 680 | * - 0x0000 for single mode |
| GregCr | 0:03ec2f3bde8c | 681 | * - 0xFFFF for continuous mode |
| GregCr | 0:03ec2f3bde8c | 682 | */ |
| GregCr | 0:03ec2f3bde8c | 683 | uint16_t NbSteps; |
| GregCr | 0:03ec2f3bde8c | 684 | }TickTime_t; |
| GregCr | 0:03ec2f3bde8c | 685 | |
| GregCr | 0:03ec2f3bde8c | 686 | /*! |
| GregCr | 0:03ec2f3bde8c | 687 | * \brief RX_TX_CONTINUOUS and RX_TX_SINGLE are two particular values for TickTime. |
| GregCr | 0:03ec2f3bde8c | 688 | * The former keep the radio in Rx or Tx mode, even after successfull reception |
| GregCr | 0:03ec2f3bde8c | 689 | * or transmission. It should never generate Timeout interrupt. |
| GregCr | 0:03ec2f3bde8c | 690 | * The later let the radio enought time to make one reception or transmission. |
| GregCr | 0:03ec2f3bde8c | 691 | * No Timeout interrupt is generated, and the radio fall in StandBy mode after |
| GregCr | 0:03ec2f3bde8c | 692 | * reception or transmission. |
| GregCr | 0:03ec2f3bde8c | 693 | */ |
| GregCr | 0:03ec2f3bde8c | 694 | #define RX_TX_CONTINUOUS ( TickTime_t ){ RADIO_TICK_SIZE_0015_US, 0xFFFF } |
| GregCr | 0:03ec2f3bde8c | 695 | #define RX_TX_SINGLE ( TickTime_t ){ RADIO_TICK_SIZE_0015_US, 0 } |
| GregCr | 0:03ec2f3bde8c | 696 | |
| GregCr | 0:03ec2f3bde8c | 697 | /*! |
| GregCr | 0:03ec2f3bde8c | 698 | * \brief The type describing the modulation parameters for every packet types |
| GregCr | 0:03ec2f3bde8c | 699 | */ |
| GregCr | 0:03ec2f3bde8c | 700 | typedef struct |
| GregCr | 0:03ec2f3bde8c | 701 | { |
| GregCr | 0:03ec2f3bde8c | 702 | RadioPacketTypes_t PacketType; //!< Packet to which the modulation parameters are referring to. |
| GregCr | 0:03ec2f3bde8c | 703 | struct |
| GregCr | 0:03ec2f3bde8c | 704 | { |
| GregCr | 0:03ec2f3bde8c | 705 | /*! |
| GregCr | 0:03ec2f3bde8c | 706 | * \brief Holds the GFSK modulation parameters |
| GregCr | 0:03ec2f3bde8c | 707 | * |
| GregCr | 0:03ec2f3bde8c | 708 | * In GFSK modulation, the bit-rate and bandwidth are linked together. In this structure, its values are set using the same token. |
| GregCr | 0:03ec2f3bde8c | 709 | */ |
| GregCr | 0:03ec2f3bde8c | 710 | struct |
| GregCr | 0:03ec2f3bde8c | 711 | { |
| GregCr | 0:03ec2f3bde8c | 712 | RadioGfskBleBitrates_t BitrateBandwidth; //!< The bandwidth and bit-rate values for BLE and GFSK modulations |
| GregCr | 0:03ec2f3bde8c | 713 | RadioGfskBleModIndexes_t ModulationIndex; //!< The coding rate for BLE and GFSK modulations |
| GregCr | 0:03ec2f3bde8c | 714 | RadioModShapings_t ModulationShaping; //!< The modulation shaping for BLE and GFSK modulations |
| GregCr | 0:03ec2f3bde8c | 715 | }Gfsk; |
| GregCr | 0:03ec2f3bde8c | 716 | /*! |
| GregCr | 0:03ec2f3bde8c | 717 | * \brief Holds the LORA modulation parameters |
| GregCr | 0:03ec2f3bde8c | 718 | * |
| GregCr | 0:03ec2f3bde8c | 719 | * LORA modulation is defined by Spreading Factor (SF), Bandwidth and Coding Rate |
| GregCr | 0:03ec2f3bde8c | 720 | */ |
| GregCr | 0:03ec2f3bde8c | 721 | struct |
| GregCr | 0:03ec2f3bde8c | 722 | { |
| GregCr | 0:03ec2f3bde8c | 723 | RadioLoRaSpreadingFactors_t SpreadingFactor; //!< Spreading Factor for the LORA modulation |
| GregCr | 0:03ec2f3bde8c | 724 | RadioLoRaBandwidths_t Bandwidth; //!< Bandwidth for the LORA modulation |
| GregCr | 0:03ec2f3bde8c | 725 | RadioLoRaCodingRates_t CodingRate; //!< Coding rate for the LORA modulation |
| GregCr | 0:03ec2f3bde8c | 726 | }LoRa; |
| GregCr | 0:03ec2f3bde8c | 727 | /*! |
| GregCr | 0:03ec2f3bde8c | 728 | * \brief Holds the FLRC modulation parameters |
| GregCr | 0:03ec2f3bde8c | 729 | * |
| GregCr | 0:03ec2f3bde8c | 730 | * In FLRC modulation, the bit-rate and bandwidth are linked together. In this structure, its values are set using the same token. |
| GregCr | 0:03ec2f3bde8c | 731 | */ |
| GregCr | 0:03ec2f3bde8c | 732 | struct |
| GregCr | 0:03ec2f3bde8c | 733 | { |
| GregCr | 0:03ec2f3bde8c | 734 | RadioFlrcBitrates_t BitrateBandwidth; //!< The bandwidth and bit-rate values for FLRC modulation |
| GregCr | 0:03ec2f3bde8c | 735 | RadioFlrcCodingRates_t CodingRate; //!< The coding rate for FLRC modulation |
| GregCr | 0:03ec2f3bde8c | 736 | RadioModShapings_t ModulationShaping; //!< The modulation shaping for FLRC modulation |
| GregCr | 0:03ec2f3bde8c | 737 | }Flrc; |
| GregCr | 0:03ec2f3bde8c | 738 | /*! |
| GregCr | 0:03ec2f3bde8c | 739 | * \brief Holds the BLE modulation parameters |
| GregCr | 0:03ec2f3bde8c | 740 | * |
| GregCr | 0:03ec2f3bde8c | 741 | * In BLE modulation, the bit-rate and bandwidth are linked together. In this structure, its values are set using the same token. |
| GregCr | 0:03ec2f3bde8c | 742 | */ |
| GregCr | 0:03ec2f3bde8c | 743 | struct |
| GregCr | 0:03ec2f3bde8c | 744 | { |
| GregCr | 0:03ec2f3bde8c | 745 | RadioGfskBleBitrates_t BitrateBandwidth; //!< The bandwidth and bit-rate values for BLE and GFSK modulations |
| GregCr | 0:03ec2f3bde8c | 746 | RadioGfskBleModIndexes_t ModulationIndex; //!< The coding rate for BLE and GFSK modulations |
| GregCr | 0:03ec2f3bde8c | 747 | RadioModShapings_t ModulationShaping; //!< The modulation shaping for BLE and GFSK modulations |
| GregCr | 0:03ec2f3bde8c | 748 | }Ble; |
| GregCr | 0:03ec2f3bde8c | 749 | }Params; //!< Holds the modulation parameters structure |
| GregCr | 0:03ec2f3bde8c | 750 | }ModulationParams_t; |
| GregCr | 0:03ec2f3bde8c | 751 | |
| GregCr | 0:03ec2f3bde8c | 752 | /*! |
| GregCr | 0:03ec2f3bde8c | 753 | * \brief The type describing the packet parameters for every packet types |
| GregCr | 0:03ec2f3bde8c | 754 | */ |
| GregCr | 0:03ec2f3bde8c | 755 | typedef struct |
| GregCr | 0:03ec2f3bde8c | 756 | { |
| GregCr | 0:03ec2f3bde8c | 757 | RadioPacketTypes_t PacketType; //!< Packet to which the packet parameters are referring to. |
| GregCr | 0:03ec2f3bde8c | 758 | struct |
| GregCr | 0:03ec2f3bde8c | 759 | { |
| GregCr | 0:03ec2f3bde8c | 760 | /*! |
| GregCr | 0:03ec2f3bde8c | 761 | * \brief Holds the GFSK packet parameters |
| GregCr | 0:03ec2f3bde8c | 762 | */ |
| GregCr | 0:03ec2f3bde8c | 763 | struct |
| GregCr | 0:03ec2f3bde8c | 764 | { |
| GregCr | 0:03ec2f3bde8c | 765 | RadioPreambleLengths_t PreambleLength; //!< The preamble length for GFSK packet type |
| GregCr | 0:03ec2f3bde8c | 766 | RadioSyncWordLengths_t SyncWordLength; //!< The synchronization word length for GFSK packet type |
| GregCr | 0:03ec2f3bde8c | 767 | RadioSyncWordRxMatchs_t SyncWordMatch; //!< The synchronization correlator to use to check synchronization word |
| GregCr | 0:03ec2f3bde8c | 768 | RadioPacketLengthModes_t HeaderType; //!< If the header is explicit, it will be transmitted in the GFSK packet. If the header is implicit, it will not be transmitted |
| GregCr | 0:03ec2f3bde8c | 769 | uint8_t PayloadLength; //!< Size of the payload in the GFSK packet |
| GregCr | 0:03ec2f3bde8c | 770 | RadioCrcTypes_t CrcLength; //!< Size of the CRC block in the GFSK packet |
| GregCr | 0:03ec2f3bde8c | 771 | RadioWhiteningModes_t Whitening; //!< Usage of whitening on payload and CRC blocks plus header block if header type is variable |
| GregCr | 0:03ec2f3bde8c | 772 | }Gfsk; |
| GregCr | 0:03ec2f3bde8c | 773 | /*! |
| GregCr | 0:03ec2f3bde8c | 774 | * \brief Holds the LORA packet parameters |
| GregCr | 0:03ec2f3bde8c | 775 | */ |
| GregCr | 0:03ec2f3bde8c | 776 | struct |
| GregCr | 0:03ec2f3bde8c | 777 | { |
| GregCr | 0:03ec2f3bde8c | 778 | uint8_t PreambleLength; //!< The preamble length is the number of LORA symbols in the preamble. To set it, use the following formula @code Number of symbols = PreambleLength[3:0] * ( 2^PreambleLength[7:4] ) @endcode |
| GregCr | 0:03ec2f3bde8c | 779 | RadioLoRaPacketLengthsModes_t HeaderType; //!< If the header is explicit, it will be transmitted in the LORA packet. If the header is implicit, it will not be transmitted |
| GregCr | 0:03ec2f3bde8c | 780 | uint8_t PayloadLength; //!< Size of the payload in the LORA packet |
| GregCr | 0:03ec2f3bde8c | 781 | RadioLoRaCrcModes_t CrcMode; //!< Size of CRC block in LORA packet |
| GregCr | 0:03ec2f3bde8c | 782 | RadioLoRaIQModes_t InvertIQ; //!< Allows to swap IQ for LORA packet |
| GregCr | 0:03ec2f3bde8c | 783 | }LoRa; |
| GregCr | 0:03ec2f3bde8c | 784 | /*! |
| GregCr | 0:03ec2f3bde8c | 785 | * \brief Holds the FLRC packet parameters |
| GregCr | 0:03ec2f3bde8c | 786 | */ |
| GregCr | 0:03ec2f3bde8c | 787 | struct |
| GregCr | 0:03ec2f3bde8c | 788 | { |
| GregCr | 0:03ec2f3bde8c | 789 | RadioPreambleLengths_t PreambleLength; //!< The preamble length for FLRC packet type |
| GregCr | 0:03ec2f3bde8c | 790 | RadioFlrcSyncWordLengths_t SyncWordLength; //!< The synchronization word length for FLRC packet type |
| GregCr | 0:03ec2f3bde8c | 791 | RadioSyncWordRxMatchs_t SyncWordMatch; //!< The synchronization correlator to use to check synchronization word |
| GregCr | 0:03ec2f3bde8c | 792 | RadioPacketLengthModes_t HeaderType; //!< If the header is explicit, it will be transmitted in the FLRC packet. If the header is implicit, it will not be transmitted. |
| GregCr | 0:03ec2f3bde8c | 793 | uint8_t PayloadLength; //!< Size of the payload in the FLRC packet |
| GregCr | 0:03ec2f3bde8c | 794 | RadioCrcTypes_t CrcLength; //!< Size of the CRC block in the FLRC packet |
| GregCr | 0:03ec2f3bde8c | 795 | RadioWhiteningModes_t Whitening; //!< Usage of whitening on payload and CRC blocks plus header block if header type is variable |
| GregCr | 0:03ec2f3bde8c | 796 | }Flrc; |
| GregCr | 0:03ec2f3bde8c | 797 | /*! |
| GregCr | 0:03ec2f3bde8c | 798 | * \brief Holds the BLE packet parameters |
| GregCr | 0:03ec2f3bde8c | 799 | */ |
| GregCr | 0:03ec2f3bde8c | 800 | struct |
| GregCr | 0:03ec2f3bde8c | 801 | { |
| GregCr | 0:03ec2f3bde8c | 802 | RadioBleConnectionStates_t ConnectionState; //!< The BLE state |
| GregCr | 0:03ec2f3bde8c | 803 | RadioBleCrcFields_t CrcField; //!< Size of the CRC block in the BLE packet |
| GregCr | 0:03ec2f3bde8c | 804 | RadioBlePacketTypes_t BlePacketType; //!< Special BLE packet types |
| GregCr | 0:03ec2f3bde8c | 805 | RadioWhiteningModes_t Whitening; //!< Usage of whitening on PDU and CRC blocks of BLE packet |
| GregCr | 0:03ec2f3bde8c | 806 | }Ble; |
| GregCr | 0:03ec2f3bde8c | 807 | }Params; //!< Holds the packet parameters structure |
| GregCr | 0:03ec2f3bde8c | 808 | }PacketParams_t; |
| GregCr | 0:03ec2f3bde8c | 809 | |
| GregCr | 0:03ec2f3bde8c | 810 | /*! |
| GregCr | 0:03ec2f3bde8c | 811 | * \brief Represents the packet status for every packet type |
| GregCr | 0:03ec2f3bde8c | 812 | */ |
| GregCr | 0:03ec2f3bde8c | 813 | typedef struct |
| GregCr | 0:03ec2f3bde8c | 814 | { |
| GregCr | 0:03ec2f3bde8c | 815 | RadioPacketTypes_t packetType; //!< Packet to which the packet status are referring to. |
| GregCr | 0:03ec2f3bde8c | 816 | union |
| GregCr | 0:03ec2f3bde8c | 817 | { |
| GregCr | 0:03ec2f3bde8c | 818 | struct |
| GregCr | 0:03ec2f3bde8c | 819 | { |
| GregCr | 0:03ec2f3bde8c | 820 | int8_t RssiSync; //!< The RSSI measured on last packet |
| GregCr | 0:03ec2f3bde8c | 821 | struct |
| GregCr | 0:03ec2f3bde8c | 822 | { |
| GregCr | 0:03ec2f3bde8c | 823 | bool SyncError :1; //!< SyncWord error on last packet |
| GregCr | 0:03ec2f3bde8c | 824 | bool LengthError :1; //!< Length error on last packet |
| GregCr | 0:03ec2f3bde8c | 825 | bool CrcError :1; //!< CRC error on last packet |
| GregCr | 0:03ec2f3bde8c | 826 | bool AbortError :1; //!< Abort error on last packet |
| GregCr | 0:03ec2f3bde8c | 827 | bool HeaderReceived :1; //!< Header received on last packet |
| GregCr | 0:03ec2f3bde8c | 828 | bool PacketReceived :1; //!< Packet received |
| GregCr | 0:03ec2f3bde8c | 829 | bool PacketControlerBusy :1; //!< Packet controller busy |
| GregCr | 0:03ec2f3bde8c | 830 | }ErrorStatus; //!< The error status Byte |
| GregCr | 0:03ec2f3bde8c | 831 | struct |
| GregCr | 0:03ec2f3bde8c | 832 | { |
| GregCr | 0:03ec2f3bde8c | 833 | bool RxNoAck :1; //!< No acknowledgment received for Rx with variable length packets |
| GregCr | 0:03ec2f3bde8c | 834 | bool PacketSent :1; //!< Packet sent, only relevant in Tx mode |
| GregCr | 0:03ec2f3bde8c | 835 | }TxRxStatus; //!< The Tx/Rx status Byte |
| GregCr | 0:03ec2f3bde8c | 836 | uint8_t SyncAddrStatus :3; //!< The id of the correlator who found the packet |
| GregCr | 0:03ec2f3bde8c | 837 | }Gfsk; |
| GregCr | 0:03ec2f3bde8c | 838 | struct |
| GregCr | 0:03ec2f3bde8c | 839 | { |
| GregCr | 0:03ec2f3bde8c | 840 | int8_t RssiPkt; //!< The RSSI of the last packet |
| GregCr | 0:03ec2f3bde8c | 841 | int8_t SnrPkt; //!< The SNR of the last packet |
| GregCr | 0:03ec2f3bde8c | 842 | struct |
| GregCr | 0:03ec2f3bde8c | 843 | { |
| GregCr | 0:03ec2f3bde8c | 844 | bool SyncError :1; //!< SyncWord error on last packet |
| GregCr | 0:03ec2f3bde8c | 845 | bool LengthError :1; //!< Length error on last packet |
| GregCr | 0:03ec2f3bde8c | 846 | bool CrcError :1; //!< CRC error on last packet |
| GregCr | 0:03ec2f3bde8c | 847 | bool AbortError :1; //!< Abort error on last packet |
| GregCr | 0:03ec2f3bde8c | 848 | bool HeaderReceived :1; //!< Header received on last packet |
| GregCr | 0:03ec2f3bde8c | 849 | bool PacketReceived :1; //!< Packet received |
| GregCr | 0:03ec2f3bde8c | 850 | bool PacketControlerBusy :1; //!< Packet controller busy |
| GregCr | 0:03ec2f3bde8c | 851 | }ErrorStatus; //!< The error status Byte |
| GregCr | 0:03ec2f3bde8c | 852 | struct |
| GregCr | 0:03ec2f3bde8c | 853 | { |
| GregCr | 0:03ec2f3bde8c | 854 | bool RxNoAck :1; //!< No acknowledgment received for Rx with variable length packets |
| GregCr | 0:03ec2f3bde8c | 855 | bool PacketSent :1; //!< Packet sent, only relevant in Tx mode |
| GregCr | 0:03ec2f3bde8c | 856 | }TxRxStatus; //!< The Tx/Rx status Byte |
| GregCr | 0:03ec2f3bde8c | 857 | uint8_t SyncAddrStatus :3; //!< The id of the correlator who found the packet |
| GregCr | 0:03ec2f3bde8c | 858 | }LoRa; |
| GregCr | 0:03ec2f3bde8c | 859 | struct |
| GregCr | 0:03ec2f3bde8c | 860 | { |
| GregCr | 0:03ec2f3bde8c | 861 | int8_t RssiSync; //!< The RSSI of the last packet |
| GregCr | 0:03ec2f3bde8c | 862 | struct |
| GregCr | 0:03ec2f3bde8c | 863 | { |
| GregCr | 0:03ec2f3bde8c | 864 | bool SyncError :1; //!< SyncWord error on last packet |
| GregCr | 0:03ec2f3bde8c | 865 | bool LengthError :1; //!< Length error on last packet |
| GregCr | 0:03ec2f3bde8c | 866 | bool CrcError :1; //!< CRC error on last packet |
| GregCr | 0:03ec2f3bde8c | 867 | bool AbortError :1; //!< Abort error on last packet |
| GregCr | 0:03ec2f3bde8c | 868 | bool HeaderReceived :1; //!< Header received on last packet |
| GregCr | 0:03ec2f3bde8c | 869 | bool PacketReceived :1; //!< Packet received |
| GregCr | 0:03ec2f3bde8c | 870 | bool PacketControlerBusy :1; //!< Packet controller busy |
| GregCr | 0:03ec2f3bde8c | 871 | }ErrorStatus; //!< The error status Byte |
| GregCr | 0:03ec2f3bde8c | 872 | struct |
| GregCr | 0:03ec2f3bde8c | 873 | { |
| GregCr | 0:03ec2f3bde8c | 874 | uint8_t RxPid :2; //!< PID of the Rx |
| GregCr | 0:03ec2f3bde8c | 875 | bool RxNoAck :1; //!< No acknowledgment received for Rx with variable length packets |
| GregCr | 0:03ec2f3bde8c | 876 | bool RxPidErr :1; //!< Received PID error |
| GregCr | 0:03ec2f3bde8c | 877 | bool PacketSent :1; //!< Packet sent, only relevant in Tx mode |
| GregCr | 0:03ec2f3bde8c | 878 | }TxRxStatus; //!< The Tx/Rx status Byte |
| GregCr | 0:03ec2f3bde8c | 879 | uint8_t SyncAddrStatus :3; //!< The id of the correlator who found the packet |
| GregCr | 0:03ec2f3bde8c | 880 | }Flrc; |
| GregCr | 0:03ec2f3bde8c | 881 | struct |
| GregCr | 0:03ec2f3bde8c | 882 | { |
| GregCr | 0:03ec2f3bde8c | 883 | int8_t RssiSync; //!< The RSSI of the last packet |
| GregCr | 0:03ec2f3bde8c | 884 | struct |
| GregCr | 0:03ec2f3bde8c | 885 | { |
| GregCr | 0:03ec2f3bde8c | 886 | bool SyncError :1; //!< SyncWord error on last packet |
| GregCr | 0:03ec2f3bde8c | 887 | bool LengthError :1; //!< Length error on last packet |
| GregCr | 0:03ec2f3bde8c | 888 | bool CrcError :1; //!< CRC error on last packet |
| GregCr | 0:03ec2f3bde8c | 889 | bool AbortError :1; //!< Abort error on last packet |
| GregCr | 0:03ec2f3bde8c | 890 | bool HeaderReceived :1; //!< Header received on last packet |
| GregCr | 0:03ec2f3bde8c | 891 | bool PacketReceived :1; //!< Packet received |
| GregCr | 0:03ec2f3bde8c | 892 | bool PacketControlerBusy :1; //!< Packet controller busy |
| GregCr | 0:03ec2f3bde8c | 893 | }ErrorStatus; //!< The error status Byte |
| GregCr | 0:03ec2f3bde8c | 894 | struct |
| GregCr | 0:03ec2f3bde8c | 895 | { |
| GregCr | 0:03ec2f3bde8c | 896 | bool PacketSent :1; //!< Packet sent, only relevant in Tx mode |
| GregCr | 0:03ec2f3bde8c | 897 | }TxRxStatus; //!< The Tx/Rx status Byte |
| GregCr | 0:03ec2f3bde8c | 898 | uint8_t SyncAddrStatus :3; //!< The id of the correlator who found the packet |
| GregCr | 0:03ec2f3bde8c | 899 | }Ble; |
| GregCr | 0:03ec2f3bde8c | 900 | }; |
| GregCr | 0:03ec2f3bde8c | 901 | }PacketStatus_t; |
| GregCr | 0:03ec2f3bde8c | 902 | |
| GregCr | 0:03ec2f3bde8c | 903 | /*! |
| GregCr | 0:03ec2f3bde8c | 904 | * \brief Represents the Rx internal counters values when GFSK or LORA packet type is used |
| GregCr | 0:03ec2f3bde8c | 905 | */ |
| GregCr | 0:03ec2f3bde8c | 906 | typedef struct |
| GregCr | 0:03ec2f3bde8c | 907 | { |
| GregCr | 0:03ec2f3bde8c | 908 | RadioPacketTypes_t packetType; //!< Packet to which the packet status are referring to. |
| GregCr | 0:03ec2f3bde8c | 909 | union |
| GregCr | 0:03ec2f3bde8c | 910 | { |
| GregCr | 0:03ec2f3bde8c | 911 | struct |
| GregCr | 0:03ec2f3bde8c | 912 | { |
| GregCr | 0:03ec2f3bde8c | 913 | uint16_t PacketReceived; //!< Number of received packets |
| GregCr | 0:03ec2f3bde8c | 914 | uint16_t CrcError; //!< Number of CRC errors |
| GregCr | 0:03ec2f3bde8c | 915 | uint16_t LengthError; //!< Number of length errors |
| GregCr | 0:03ec2f3bde8c | 916 | uint16_t SyncwordError; //!< Number of sync-word errors |
| GregCr | 0:03ec2f3bde8c | 917 | }Gfsk; |
| GregCr | 0:03ec2f3bde8c | 918 | struct |
| GregCr | 0:03ec2f3bde8c | 919 | { |
| GregCr | 0:03ec2f3bde8c | 920 | uint16_t PacketReceived; //!< Number of received packets |
| GregCr | 0:03ec2f3bde8c | 921 | uint16_t CrcError; //!< Number of CRC errors |
| GregCr | 0:03ec2f3bde8c | 922 | uint16_t HeaderValid; //!< Number of valid headers |
| GregCr | 0:03ec2f3bde8c | 923 | }LoRa; |
| GregCr | 0:03ec2f3bde8c | 924 | }; |
| GregCr | 0:03ec2f3bde8c | 925 | }RxCounter_t; |
| GregCr | 0:03ec2f3bde8c | 926 | |
| GregCr | 0:03ec2f3bde8c | 927 | /*! |
| GregCr | 0:03ec2f3bde8c | 928 | * \brief Represents a calibration configuration |
| GregCr | 0:03ec2f3bde8c | 929 | */ |
| GregCr | 0:03ec2f3bde8c | 930 | typedef struct |
| GregCr | 0:03ec2f3bde8c | 931 | { |
| GregCr | 0:03ec2f3bde8c | 932 | uint8_t RC64KEnable : 1; //!< Calibrate RC64K clock |
| GregCr | 0:03ec2f3bde8c | 933 | uint8_t RC13MEnable : 1; //!< Calibrate RC13M clock |
| GregCr | 0:03ec2f3bde8c | 934 | uint8_t PLLEnable : 1; //!< Calibrate PLL |
| GregCr | 0:03ec2f3bde8c | 935 | uint8_t ADCPulseEnable : 1; //!< Calibrate ADC Pulse |
| GregCr | 0:03ec2f3bde8c | 936 | uint8_t ADCBulkNEnable : 1; //!< Calibrate ADC bulkN |
| GregCr | 0:03ec2f3bde8c | 937 | uint8_t ADCBulkPEnable : 1; //!< Calibrate ADC bulkP |
| GregCr | 0:03ec2f3bde8c | 938 | }CalibrationParams_t; |
| GregCr | 0:03ec2f3bde8c | 939 | |
| GregCr | 0:03ec2f3bde8c | 940 | /*! |
| GregCr | 0:03ec2f3bde8c | 941 | * \brief Represents a sleep mode configuration |
| GregCr | 0:03ec2f3bde8c | 942 | */ |
| GregCr | 0:03ec2f3bde8c | 943 | typedef struct |
| GregCr | 0:03ec2f3bde8c | 944 | { |
| GregCr | 0:03ec2f3bde8c | 945 | uint8_t WakeUpRTC : 1; //!< Get out of sleep mode if wakeup signal received from RTC |
| GregCr | 0:03ec2f3bde8c | 946 | uint8_t InstructionRamRetention : 1; //!< InstructionRam is conserved during sleep |
| GregCr | 0:03ec2f3bde8c | 947 | uint8_t DataBufferRetention : 1; //!< Data buffer is conserved during sleep |
| GregCr | 0:03ec2f3bde8c | 948 | uint8_t DataRamRetention : 1; //!< Data ram is conserved during sleep |
| GregCr | 0:03ec2f3bde8c | 949 | }SleepParams_t; |
| GregCr | 0:03ec2f3bde8c | 950 | |
| GregCr | 0:03ec2f3bde8c | 951 | /*! |
| GregCr | 0:03ec2f3bde8c | 952 | * \brief Represents the SX1280 and its features |
| GregCr | 0:03ec2f3bde8c | 953 | * |
| GregCr | 0:03ec2f3bde8c | 954 | * It implements the commands the SX1280 can understands |
| GregCr | 0:03ec2f3bde8c | 955 | */ |
| GregCr | 0:03ec2f3bde8c | 956 | class SX1280 : public Radio |
| GregCr | 0:03ec2f3bde8c | 957 | { |
| GregCr | 0:03ec2f3bde8c | 958 | public: |
| GregCr | 0:03ec2f3bde8c | 959 | /*! |
| GregCr | 0:03ec2f3bde8c | 960 | * \brief Instantiates a SX1280 object and provides API functions to communicates with the radio |
| GregCr | 0:03ec2f3bde8c | 961 | * |
| GregCr | 0:03ec2f3bde8c | 962 | * \param [in] callbacks Pointer to the callbacks structure defining |
| GregCr | 0:03ec2f3bde8c | 963 | * all callbacks function pointers |
| GregCr | 0:03ec2f3bde8c | 964 | */ |
| GregCr | 0:03ec2f3bde8c | 965 | SX1280( RadioCallbacks_t *callbacks ): |
| GregCr | 0:03ec2f3bde8c | 966 | Radio( callbacks ) |
| GregCr | 0:03ec2f3bde8c | 967 | { |
| GregCr | 0:03ec2f3bde8c | 968 | this->dioIrq = &SX1280::OnDioIrq; |
| GregCr | 0:03ec2f3bde8c | 969 | this->PacketType = PACKET_TYPE_NONE; |
| GregCr | 0:03ec2f3bde8c | 970 | this->LoRaBandwidth = LORA_BW_0200; // This value is not set to the radio! |
| GregCr | 0:03ec2f3bde8c | 971 | this->PollingMode = false; |
| GregCr | 0:03ec2f3bde8c | 972 | this->IrqState = false; |
| GregCr | 0:03ec2f3bde8c | 973 | } |
| GregCr | 0:03ec2f3bde8c | 974 | |
| GregCr | 0:03ec2f3bde8c | 975 | virtual ~SX1280( ) |
| GregCr | 0:03ec2f3bde8c | 976 | { |
| GregCr | 0:03ec2f3bde8c | 977 | } |
| GregCr | 0:03ec2f3bde8c | 978 | |
| GregCr | 0:03ec2f3bde8c | 979 | private: |
| GregCr | 0:03ec2f3bde8c | 980 | /*! |
| GregCr | 0:03ec2f3bde8c | 981 | * \brief Holds the internal operating mode of the radio |
| GregCr | 0:03ec2f3bde8c | 982 | */ |
| GregCr | 0:03ec2f3bde8c | 983 | RadioOperatingModes_t OperatingMode; |
| GregCr | 0:03ec2f3bde8c | 984 | |
| GregCr | 0:03ec2f3bde8c | 985 | /*! |
| GregCr | 0:03ec2f3bde8c | 986 | * \brief Stores the current packet type set in the radio |
| GregCr | 0:03ec2f3bde8c | 987 | */ |
| GregCr | 0:03ec2f3bde8c | 988 | RadioPacketTypes_t PacketType; |
| GregCr | 0:03ec2f3bde8c | 989 | |
| GregCr | 0:03ec2f3bde8c | 990 | /*! |
| GregCr | 0:03ec2f3bde8c | 991 | * \brief Stores the current LORA bandwidth set in the radio |
| GregCr | 0:03ec2f3bde8c | 992 | */ |
| GregCr | 0:03ec2f3bde8c | 993 | RadioLoRaBandwidths_t LoRaBandwidth; |
| GregCr | 0:03ec2f3bde8c | 994 | |
| GregCr | 0:03ec2f3bde8c | 995 | /*! |
| GregCr | 0:03ec2f3bde8c | 996 | * \brief Holds a flag raised on radio interrupt |
| GregCr | 0:03ec2f3bde8c | 997 | */ |
| GregCr | 0:03ec2f3bde8c | 998 | bool IrqState; |
| GregCr | 0:03ec2f3bde8c | 999 | |
| GregCr | 0:03ec2f3bde8c | 1000 | /*! |
| GregCr | 0:03ec2f3bde8c | 1001 | * \brief Hardware DIO IRQ functions |
| GregCr | 0:03ec2f3bde8c | 1002 | */ |
| GregCr | 0:03ec2f3bde8c | 1003 | DioIrqHandler dioIrq; |
| GregCr | 0:03ec2f3bde8c | 1004 | |
| GregCr | 0:03ec2f3bde8c | 1005 | /*! |
| GregCr | 0:03ec2f3bde8c | 1006 | * \brief Holds the polling state of the driver |
| GregCr | 0:03ec2f3bde8c | 1007 | */ |
| GregCr | 0:03ec2f3bde8c | 1008 | bool PollingMode; |
| GregCr | 0:03ec2f3bde8c | 1009 | |
| GregCr | 0:03ec2f3bde8c | 1010 | /*! |
| GregCr | 0:03ec2f3bde8c | 1011 | * \brief Compute the two's complement for a register of size lower than |
| GregCr | 0:03ec2f3bde8c | 1012 | * 32bits |
| GregCr | 0:03ec2f3bde8c | 1013 | * |
| GregCr | 0:03ec2f3bde8c | 1014 | * \param [in] num The register to be two's complemented |
| GregCr | 0:03ec2f3bde8c | 1015 | * \param [in] bitCnt The position of the sign bit |
| GregCr | 0:03ec2f3bde8c | 1016 | */ |
| GregCr | 0:03ec2f3bde8c | 1017 | static int32_t complement2( const uint32_t num, const uint8_t bitCnt ); |
| GregCr | 0:03ec2f3bde8c | 1018 | |
| GregCr | 0:03ec2f3bde8c | 1019 | /*! |
| GregCr | 0:03ec2f3bde8c | 1020 | * \brief Returns the value of LoRa bandwidth from driver's value |
| GregCr | 0:03ec2f3bde8c | 1021 | * |
| GregCr | 0:03ec2f3bde8c | 1022 | * The value is returned in Hz so that it can be represented as an integer |
| GregCr | 0:03ec2f3bde8c | 1023 | * type. Most computation should be done as integer to reduce floating |
| GregCr | 0:03ec2f3bde8c | 1024 | * point related errors. |
| GregCr | 0:03ec2f3bde8c | 1025 | * |
| GregCr | 0:03ec2f3bde8c | 1026 | * \retval loRaBw The value of the current bandwidth in Hz |
| GregCr | 0:03ec2f3bde8c | 1027 | */ |
| GregCr | 0:03ec2f3bde8c | 1028 | int32_t GetLoRaBandwidth( void ); |
| GregCr | 0:03ec2f3bde8c | 1029 | |
| GregCr | 0:03ec2f3bde8c | 1030 | protected: |
| GregCr | 0:03ec2f3bde8c | 1031 | /*! |
| GregCr | 0:03ec2f3bde8c | 1032 | * \brief Sets a function to be triggered on radio interrupt |
| GregCr | 0:03ec2f3bde8c | 1033 | * |
| GregCr | 0:03ec2f3bde8c | 1034 | * \param [in] irqHandler A pointer to a function to be run on interrupt |
| GregCr | 0:03ec2f3bde8c | 1035 | * from the radio |
| GregCr | 0:03ec2f3bde8c | 1036 | */ |
| GregCr | 0:03ec2f3bde8c | 1037 | virtual void IoIrqInit( DioIrqHandler irqHandler ) = 0; |
| GregCr | 0:03ec2f3bde8c | 1038 | |
| GregCr | 0:03ec2f3bde8c | 1039 | /*! |
| GregCr | 0:03ec2f3bde8c | 1040 | * \brief DIOs interrupt callback |
| GregCr | 0:03ec2f3bde8c | 1041 | * |
| GregCr | 0:03ec2f3bde8c | 1042 | * \remark Called to handle all 3 DIOs pins |
| GregCr | 0:03ec2f3bde8c | 1043 | */ |
| GregCr | 0:03ec2f3bde8c | 1044 | void OnDioIrq( void ); |
| GregCr | 0:03ec2f3bde8c | 1045 | |
| GregCr | 0:03ec2f3bde8c | 1046 | /*! |
| GregCr | 0:03ec2f3bde8c | 1047 | * \brief Set the role of the radio during ranging operations |
| GregCr | 0:03ec2f3bde8c | 1048 | * |
| GregCr | 0:03ec2f3bde8c | 1049 | * \param [in] role Role of the radio |
| GregCr | 0:03ec2f3bde8c | 1050 | */ |
| GregCr | 0:03ec2f3bde8c | 1051 | void SetRangingRole( RadioRangingRoles_t role ); |
| GregCr | 0:03ec2f3bde8c | 1052 | |
| GregCr | 0:03ec2f3bde8c | 1053 | public: |
| GregCr | 0:03ec2f3bde8c | 1054 | /*! |
| GregCr | 0:03ec2f3bde8c | 1055 | * \brief Initializes the radio driver |
| GregCr | 0:03ec2f3bde8c | 1056 | */ |
| GregCr | 0:03ec2f3bde8c | 1057 | void Init( void ); |
| GregCr | 0:03ec2f3bde8c | 1058 | |
| GregCr | 0:03ec2f3bde8c | 1059 | /*! |
| GregCr | 0:03ec2f3bde8c | 1060 | * \brief Set the driver in polling mode. |
| GregCr | 0:03ec2f3bde8c | 1061 | * |
| GregCr | 0:03ec2f3bde8c | 1062 | * In polling mode the application is responsible to call ProcessIrqs( ) to |
| GregCr | 0:03ec2f3bde8c | 1063 | * execute callbacks functions. |
| GregCr | 0:03ec2f3bde8c | 1064 | * The default mode is Interrupt Mode. |
| GregCr | 0:03ec2f3bde8c | 1065 | * @code |
| GregCr | 0:03ec2f3bde8c | 1066 | * // Initializations and callbacks declaration/definition |
| GregCr | 0:03ec2f3bde8c | 1067 | * radio = SX1280( mosi, miso, sclk, nss, busy, int1, int2, int3, rst, &callbacks ); |
| GregCr | 0:03ec2f3bde8c | 1068 | * radio.Init( ); |
| GregCr | 0:03ec2f3bde8c | 1069 | * radio.SetPollingMode( ); |
| GregCr | 0:03ec2f3bde8c | 1070 | * |
| GregCr | 0:03ec2f3bde8c | 1071 | * while( true ) |
| GregCr | 0:03ec2f3bde8c | 1072 | * { |
| GregCr | 0:03ec2f3bde8c | 1073 | * // IRQ processing is automatically done |
| GregCr | 0:03ec2f3bde8c | 1074 | * radio.ProcessIrqs( ); // <-- here, as well as callback functions |
| GregCr | 0:03ec2f3bde8c | 1075 | * // calls |
| GregCr | 0:03ec2f3bde8c | 1076 | * // Do some applicative work |
| GregCr | 0:03ec2f3bde8c | 1077 | * } |
| GregCr | 0:03ec2f3bde8c | 1078 | * @endcode |
| GregCr | 0:03ec2f3bde8c | 1079 | * |
| GregCr | 0:03ec2f3bde8c | 1080 | * \see SX1280::SetInterruptMode |
| GregCr | 0:03ec2f3bde8c | 1081 | */ |
| GregCr | 0:03ec2f3bde8c | 1082 | void SetPollingMode( void ); |
| GregCr | 0:03ec2f3bde8c | 1083 | |
| GregCr | 0:03ec2f3bde8c | 1084 | /*! |
| GregCr | 0:03ec2f3bde8c | 1085 | * \brief Set the driver in interrupt mode. |
| GregCr | 0:03ec2f3bde8c | 1086 | * |
| GregCr | 0:03ec2f3bde8c | 1087 | * In interrupt mode, the driver communicate with the radio during the |
| GregCr | 0:03ec2f3bde8c | 1088 | * interruption by direct calls to ProcessIrqs( ). The main advantage is |
| GregCr | 0:03ec2f3bde8c | 1089 | * the possibility to have low power application architecture. |
| GregCr | 0:03ec2f3bde8c | 1090 | * This is the default mode. |
| GregCr | 0:03ec2f3bde8c | 1091 | * @code |
| GregCr | 0:03ec2f3bde8c | 1092 | * // Initializations and callbacks declaration/definition |
| GregCr | 0:03ec2f3bde8c | 1093 | * radio = SX1280( mosi, miso, sclk, nss, busy, int1, int2, int3, rst, &callbacks ); |
| GregCr | 0:03ec2f3bde8c | 1094 | * radio.Init( ); |
| GregCr | 0:03ec2f3bde8c | 1095 | * radio.SetInterruptMode( ); // Optionnal. Driver default behavior |
| GregCr | 0:03ec2f3bde8c | 1096 | * |
| GregCr | 0:03ec2f3bde8c | 1097 | * while( true ) |
| GregCr | 0:03ec2f3bde8c | 1098 | * { |
| GregCr | 0:03ec2f3bde8c | 1099 | * // Do some applicative work |
| GregCr | 0:03ec2f3bde8c | 1100 | * } |
| GregCr | 0:03ec2f3bde8c | 1101 | * @endcode |
| GregCr | 0:03ec2f3bde8c | 1102 | * |
| GregCr | 0:03ec2f3bde8c | 1103 | * \see SX1280::SetPollingMode |
| GregCr | 0:03ec2f3bde8c | 1104 | */ |
| GregCr | 0:03ec2f3bde8c | 1105 | void SetInterruptMode( void ); |
| GregCr | 0:03ec2f3bde8c | 1106 | |
| GregCr | 0:03ec2f3bde8c | 1107 | /*! |
| GregCr | 0:03ec2f3bde8c | 1108 | * \brief Initializes the radio registers to the recommended default values |
| GregCr | 0:03ec2f3bde8c | 1109 | */ |
| GregCr | 0:03ec2f3bde8c | 1110 | void SetRegistersDefault( void ); |
| GregCr | 0:03ec2f3bde8c | 1111 | |
| GregCr | 0:03ec2f3bde8c | 1112 | /*! |
| GregCr | 0:03ec2f3bde8c | 1113 | * \brief Returns the current device firmware version |
| GregCr | 0:03ec2f3bde8c | 1114 | * |
| GregCr | 0:03ec2f3bde8c | 1115 | * \retval version Firmware version |
| GregCr | 0:03ec2f3bde8c | 1116 | */ |
| GregCr | 0:03ec2f3bde8c | 1117 | virtual uint16_t GetFirmwareVersion( void ); |
| GregCr | 0:03ec2f3bde8c | 1118 | |
| GregCr | 0:03ec2f3bde8c | 1119 | /*! |
| GregCr | 0:03ec2f3bde8c | 1120 | * \brief Resets the radio |
| GregCr | 0:03ec2f3bde8c | 1121 | */ |
| GregCr | 0:03ec2f3bde8c | 1122 | virtual void Reset( void ) = 0; |
| GregCr | 0:03ec2f3bde8c | 1123 | |
| GregCr | 0:03ec2f3bde8c | 1124 | /*! |
| GregCr | 0:03ec2f3bde8c | 1125 | * \brief Wake-ups the radio from Sleep mode |
| GregCr | 0:03ec2f3bde8c | 1126 | */ |
| GregCr | 0:03ec2f3bde8c | 1127 | virtual void Wakeup( void ) = 0; |
| GregCr | 0:03ec2f3bde8c | 1128 | |
| GregCr | 0:03ec2f3bde8c | 1129 | /*! |
| GregCr | 0:03ec2f3bde8c | 1130 | * \brief Writes the given command to the radio |
| GregCr | 0:03ec2f3bde8c | 1131 | * |
| GregCr | 0:03ec2f3bde8c | 1132 | * \param [in] opcode Command opcode |
| GregCr | 0:03ec2f3bde8c | 1133 | * \param [in] buffer Command parameters byte array |
| GregCr | 0:03ec2f3bde8c | 1134 | * \param [in] size Command parameters byte array size |
| GregCr | 0:03ec2f3bde8c | 1135 | */ |
| GregCr | 0:03ec2f3bde8c | 1136 | virtual void WriteCommand( RadioCommands_t opcode, uint8_t *buffer, uint16_t size ) = 0; |
| GregCr | 0:03ec2f3bde8c | 1137 | |
| GregCr | 0:03ec2f3bde8c | 1138 | /*! |
| GregCr | 0:03ec2f3bde8c | 1139 | * \brief Reads the given command from the radio |
| GregCr | 0:03ec2f3bde8c | 1140 | * |
| GregCr | 0:03ec2f3bde8c | 1141 | * \param [in] opcode Command opcode |
| GregCr | 0:03ec2f3bde8c | 1142 | * \param [in] buffer Command parameters byte array |
| GregCr | 0:03ec2f3bde8c | 1143 | * \param [in] size Command parameters byte array size |
| GregCr | 0:03ec2f3bde8c | 1144 | */ |
| GregCr | 0:03ec2f3bde8c | 1145 | virtual void ReadCommand( RadioCommands_t opcode, uint8_t *buffer, uint16_t size ) = 0; |
| GregCr | 0:03ec2f3bde8c | 1146 | |
| GregCr | 0:03ec2f3bde8c | 1147 | /*! |
| GregCr | 0:03ec2f3bde8c | 1148 | * \brief Writes multiple radio registers starting at address |
| GregCr | 0:03ec2f3bde8c | 1149 | * |
| GregCr | 0:03ec2f3bde8c | 1150 | * \param [in] address First Radio register address |
| GregCr | 0:03ec2f3bde8c | 1151 | * \param [in] buffer Buffer containing the new register's values |
| GregCr | 0:03ec2f3bde8c | 1152 | * \param [in] size Number of registers to be written |
| GregCr | 0:03ec2f3bde8c | 1153 | */ |
| GregCr | 0:03ec2f3bde8c | 1154 | virtual void WriteRegister( uint16_t address, uint8_t *buffer, uint16_t size ) = 0; |
| GregCr | 0:03ec2f3bde8c | 1155 | |
| GregCr | 0:03ec2f3bde8c | 1156 | /*! |
| GregCr | 0:03ec2f3bde8c | 1157 | * \brief Writes the radio register at the specified address |
| GregCr | 0:03ec2f3bde8c | 1158 | * |
| GregCr | 0:03ec2f3bde8c | 1159 | * \param [in] address Register address |
| GregCr | 0:03ec2f3bde8c | 1160 | * \param [in] value New register value |
| GregCr | 0:03ec2f3bde8c | 1161 | */ |
| GregCr | 0:03ec2f3bde8c | 1162 | virtual void WriteRegister( uint16_t address, uint8_t value ) = 0; |
| GregCr | 0:03ec2f3bde8c | 1163 | |
| GregCr | 0:03ec2f3bde8c | 1164 | /*! |
| GregCr | 0:03ec2f3bde8c | 1165 | * \brief Reads multiple radio registers starting at address |
| GregCr | 0:03ec2f3bde8c | 1166 | * |
| GregCr | 0:03ec2f3bde8c | 1167 | * \param [in] address First Radio register address |
| GregCr | 0:03ec2f3bde8c | 1168 | * \param [out] buffer Buffer where to copy the registers data |
| GregCr | 0:03ec2f3bde8c | 1169 | * \param [in] size Number of registers to be read |
| GregCr | 0:03ec2f3bde8c | 1170 | */ |
| GregCr | 0:03ec2f3bde8c | 1171 | virtual void ReadRegister( uint16_t address, uint8_t *buffer, uint16_t size ) = 0; |
| GregCr | 0:03ec2f3bde8c | 1172 | |
| GregCr | 0:03ec2f3bde8c | 1173 | /*! |
| GregCr | 0:03ec2f3bde8c | 1174 | * \brief Reads the radio register at the specified address |
| GregCr | 0:03ec2f3bde8c | 1175 | * |
| GregCr | 0:03ec2f3bde8c | 1176 | * \param [in] address Register address |
| GregCr | 0:03ec2f3bde8c | 1177 | * |
| GregCr | 0:03ec2f3bde8c | 1178 | * \retval data Register value |
| GregCr | 0:03ec2f3bde8c | 1179 | */ |
| GregCr | 0:03ec2f3bde8c | 1180 | virtual uint8_t ReadRegister( uint16_t address ) = 0; |
| GregCr | 0:03ec2f3bde8c | 1181 | |
| GregCr | 0:03ec2f3bde8c | 1182 | /*! |
| GregCr | 0:03ec2f3bde8c | 1183 | * \brief Writes Radio Data Buffer with buffer of size starting at offset. |
| GregCr | 0:03ec2f3bde8c | 1184 | * |
| GregCr | 0:03ec2f3bde8c | 1185 | * \param [in] offset Offset where to start writing |
| GregCr | 0:03ec2f3bde8c | 1186 | * \param [in] buffer Buffer pointer |
| GregCr | 0:03ec2f3bde8c | 1187 | * \param [in] size Buffer size |
| GregCr | 0:03ec2f3bde8c | 1188 | */ |
| GregCr | 0:03ec2f3bde8c | 1189 | virtual void WriteBuffer( uint8_t offset, uint8_t *buffer, uint8_t size ) = 0; |
| GregCr | 0:03ec2f3bde8c | 1190 | |
| GregCr | 0:03ec2f3bde8c | 1191 | /*! |
| GregCr | 0:03ec2f3bde8c | 1192 | * \brief Reads Radio Data Buffer at offset to buffer of size |
| GregCr | 0:03ec2f3bde8c | 1193 | * |
| GregCr | 0:03ec2f3bde8c | 1194 | * \param [in] offset Offset where to start reading |
| GregCr | 0:03ec2f3bde8c | 1195 | * \param [out] buffer Buffer pointer |
| GregCr | 0:03ec2f3bde8c | 1196 | * \param [in] size Buffer size |
| GregCr | 0:03ec2f3bde8c | 1197 | */ |
| GregCr | 0:03ec2f3bde8c | 1198 | virtual void ReadBuffer( uint8_t offset, uint8_t *buffer, uint8_t size ) = 0; |
| GregCr | 0:03ec2f3bde8c | 1199 | |
| GregCr | 0:03ec2f3bde8c | 1200 | /*! |
| GregCr | 0:03ec2f3bde8c | 1201 | * \brief Gets the current status of the radio DIOs |
| GregCr | 0:03ec2f3bde8c | 1202 | * |
| GregCr | 0:03ec2f3bde8c | 1203 | * \retval status [Bit #3: DIO3, Bit #2: DIO2, |
| GregCr | 0:03ec2f3bde8c | 1204 | * Bit #1: DIO1, Bit #0: BUSY] |
| GregCr | 0:03ec2f3bde8c | 1205 | */ |
| GregCr | 0:03ec2f3bde8c | 1206 | virtual uint8_t GetDioStatus( void ) = 0; |
| GregCr | 0:03ec2f3bde8c | 1207 | |
| GregCr | 0:03ec2f3bde8c | 1208 | /*! |
| GregCr | 0:03ec2f3bde8c | 1209 | * \brief Gets the current Operation Mode of the Radio |
| GregCr | 0:03ec2f3bde8c | 1210 | * |
| GregCr | 0:03ec2f3bde8c | 1211 | * \retval opMode Last operating mode |
| GregCr | 0:03ec2f3bde8c | 1212 | */ |
| GregCr | 0:03ec2f3bde8c | 1213 | virtual RadioOperatingModes_t GetOpMode( void ); |
| GregCr | 0:03ec2f3bde8c | 1214 | |
| GregCr | 0:03ec2f3bde8c | 1215 | /*! |
| GregCr | 0:03ec2f3bde8c | 1216 | * \brief Gets the current radio status |
| GregCr | 0:03ec2f3bde8c | 1217 | * |
| GregCr | 0:03ec2f3bde8c | 1218 | * \retval status Radio status |
| GregCr | 0:03ec2f3bde8c | 1219 | */ |
| GregCr | 0:03ec2f3bde8c | 1220 | virtual RadioStatus_t GetStatus( void ); |
| GregCr | 0:03ec2f3bde8c | 1221 | |
| GregCr | 0:03ec2f3bde8c | 1222 | /*! |
| GregCr | 0:03ec2f3bde8c | 1223 | * \brief Sets the radio in sleep mode |
| GregCr | 0:03ec2f3bde8c | 1224 | * |
| GregCr | 0:03ec2f3bde8c | 1225 | * \param [in] sleepConfig The sleep configuration describing data |
| GregCr | 0:03ec2f3bde8c | 1226 | * retention and RTC wake-up |
| GregCr | 0:03ec2f3bde8c | 1227 | */ |
| GregCr | 0:03ec2f3bde8c | 1228 | void SetSleep( SleepParams_t sleepConfig ); |
| GregCr | 0:03ec2f3bde8c | 1229 | |
| GregCr | 0:03ec2f3bde8c | 1230 | /*! |
| GregCr | 0:03ec2f3bde8c | 1231 | * \brief Sets the radio in configuration mode |
| GregCr | 0:03ec2f3bde8c | 1232 | * |
| GregCr | 0:03ec2f3bde8c | 1233 | * \param [in] mode The standby mode to put the radio into |
| GregCr | 0:03ec2f3bde8c | 1234 | */ |
| GregCr | 0:03ec2f3bde8c | 1235 | void SetStandby( RadioStandbyModes_t mode ); |
| GregCr | 0:03ec2f3bde8c | 1236 | |
| GregCr | 0:03ec2f3bde8c | 1237 | /*! |
| GregCr | 0:03ec2f3bde8c | 1238 | * \brief Sets the radio in FS mode |
| GregCr | 0:03ec2f3bde8c | 1239 | */ |
| GregCr | 0:03ec2f3bde8c | 1240 | void SetFs( void ); |
| GregCr | 0:03ec2f3bde8c | 1241 | |
| GregCr | 0:03ec2f3bde8c | 1242 | /*! |
| GregCr | 0:03ec2f3bde8c | 1243 | * \brief Sets the radio in transmission mode |
| GregCr | 0:03ec2f3bde8c | 1244 | * |
| GregCr | 0:03ec2f3bde8c | 1245 | * \param [in] timeout Structure describing the transmission timeout value |
| GregCr | 0:03ec2f3bde8c | 1246 | */ |
| GregCr | 0:03ec2f3bde8c | 1247 | void SetTx( TickTime_t timeout ); |
| GregCr | 0:03ec2f3bde8c | 1248 | |
| GregCr | 0:03ec2f3bde8c | 1249 | /*! |
| GregCr | 0:03ec2f3bde8c | 1250 | * \brief Sets the radio in reception mode |
| GregCr | 0:03ec2f3bde8c | 1251 | * |
| GregCr | 0:03ec2f3bde8c | 1252 | * \param [in] timeout Structure describing the reception timeout value |
| GregCr | 0:03ec2f3bde8c | 1253 | */ |
| GregCr | 0:03ec2f3bde8c | 1254 | void SetRx( TickTime_t timeout ); |
| GregCr | 0:03ec2f3bde8c | 1255 | |
| GregCr | 0:03ec2f3bde8c | 1256 | /*! |
| GregCr | 0:03ec2f3bde8c | 1257 | * \brief Sets the Rx duty cycle management parameters |
| GregCr | 0:03ec2f3bde8c | 1258 | * |
| GregCr | 0:03ec2f3bde8c | 1259 | * \param [in] step Step time size for Rx and Sleep TickTime sequences |
| GregCr | 0:03ec2f3bde8c | 1260 | * \param [in] nbStepRx Number of step time size for Rx TickTime sequence |
| GregCr | 0:03ec2f3bde8c | 1261 | * \param [in] nbStepSleep Number of step time size for Sleep TickTime sequence |
| GregCr | 0:03ec2f3bde8c | 1262 | */ |
| GregCr | 0:03ec2f3bde8c | 1263 | void SetRxDutyCycle( RadioTickSizes_t step, uint16_t nbStepRx, uint16_t nbStepSleep ); |
| GregCr | 0:03ec2f3bde8c | 1264 | |
| GregCr | 0:03ec2f3bde8c | 1265 | /*! |
| GregCr | 0:03ec2f3bde8c | 1266 | * \brief Sets the radio in CAD mode |
| GregCr | 0:03ec2f3bde8c | 1267 | * |
| GregCr | 0:03ec2f3bde8c | 1268 | * \see SX1280::SetCadParams |
| GregCr | 0:03ec2f3bde8c | 1269 | */ |
| GregCr | 0:03ec2f3bde8c | 1270 | void SetCad( void ); |
| GregCr | 0:03ec2f3bde8c | 1271 | |
| GregCr | 0:03ec2f3bde8c | 1272 | /*! |
| GregCr | 0:03ec2f3bde8c | 1273 | * \brief Sets the radio in continuous wave transmission mode |
| GregCr | 0:03ec2f3bde8c | 1274 | */ |
| GregCr | 0:03ec2f3bde8c | 1275 | void SetTxContinuousWave( void ); |
| GregCr | 0:03ec2f3bde8c | 1276 | |
| GregCr | 0:03ec2f3bde8c | 1277 | /*! |
| GregCr | 0:03ec2f3bde8c | 1278 | * \brief Sets the radio in continuous preamble transmission mode |
| GregCr | 0:03ec2f3bde8c | 1279 | */ |
| GregCr | 0:03ec2f3bde8c | 1280 | void SetTxContinuousPreamble( void ); |
| GregCr | 0:03ec2f3bde8c | 1281 | |
| GregCr | 0:03ec2f3bde8c | 1282 | /*! |
| GregCr | 0:03ec2f3bde8c | 1283 | * \brief Sets the radio for the given protocol |
| GregCr | 0:03ec2f3bde8c | 1284 | * |
| GregCr | 0:03ec2f3bde8c | 1285 | * \param [in] packetType [PACKET_TYPE_GFSK, PACKET_TYPE_LORA, |
| GregCr | 0:03ec2f3bde8c | 1286 | * PACKET_TYPE_RANGING, PACKET_TYPE_FLRC, |
| GregCr | 0:03ec2f3bde8c | 1287 | * PACKET_TYPE_BLE] |
| GregCr | 0:03ec2f3bde8c | 1288 | * |
| GregCr | 0:03ec2f3bde8c | 1289 | * \remark This method has to be called before SetRfFrequency, |
| GregCr | 0:03ec2f3bde8c | 1290 | * SetModulationParams and SetPacketParams |
| GregCr | 0:03ec2f3bde8c | 1291 | */ |
| GregCr | 0:03ec2f3bde8c | 1292 | void SetPacketType( RadioPacketTypes_t packetType ); |
| GregCr | 0:03ec2f3bde8c | 1293 | |
| GregCr | 0:03ec2f3bde8c | 1294 | /*! |
| GregCr | 0:03ec2f3bde8c | 1295 | * \brief Gets the current radio protocol |
| GregCr | 0:03ec2f3bde8c | 1296 | * |
| GregCr | 0:03ec2f3bde8c | 1297 | * \retval packetType [PACKET_TYPE_GFSK, PACKET_TYPE_LORA, |
| GregCr | 0:03ec2f3bde8c | 1298 | * PACKET_TYPE_RANGING, PACKET_TYPE_FLRC, |
| GregCr | 0:03ec2f3bde8c | 1299 | * PACKET_TYPE_BLE, PACKET_TYPE_NONE] |
| GregCr | 0:03ec2f3bde8c | 1300 | */ |
| GregCr | 0:03ec2f3bde8c | 1301 | RadioPacketTypes_t GetPacketType( void ); |
| GregCr | 0:03ec2f3bde8c | 1302 | |
| GregCr | 0:03ec2f3bde8c | 1303 | /*! |
| GregCr | 0:03ec2f3bde8c | 1304 | * \brief Sets the RF frequency |
| GregCr | 0:03ec2f3bde8c | 1305 | * |
| GregCr | 0:03ec2f3bde8c | 1306 | * \param [in] frequency RF frequency [Hz] |
| GregCr | 0:03ec2f3bde8c | 1307 | */ |
| GregCr | 0:03ec2f3bde8c | 1308 | void SetRfFrequency( uint32_t frequency ); |
| GregCr | 0:03ec2f3bde8c | 1309 | |
| GregCr | 0:03ec2f3bde8c | 1310 | /*! |
| GregCr | 0:03ec2f3bde8c | 1311 | * \brief Sets the transmission parameters |
| GregCr | 0:03ec2f3bde8c | 1312 | * |
| GregCr | 0:03ec2f3bde8c | 1313 | * \param [in] power RF output power [-18..13] dBm |
| GregCr | 0:03ec2f3bde8c | 1314 | * \param [in] rampTime Transmission ramp up time |
| GregCr | 0:03ec2f3bde8c | 1315 | */ |
| GregCr | 0:03ec2f3bde8c | 1316 | void SetTxParams( int8_t power, RadioRampTimes_t rampTime ); |
| GregCr | 0:03ec2f3bde8c | 1317 | |
| GregCr | 0:03ec2f3bde8c | 1318 | /*! |
| GregCr | 0:03ec2f3bde8c | 1319 | * \brief Sets the number of symbols to be used for Channel Activity |
| GregCr | 0:03ec2f3bde8c | 1320 | * Detection operation |
| GregCr | 0:03ec2f3bde8c | 1321 | * |
| GregCr | 0:03ec2f3bde8c | 1322 | * \param [in] cadSymbolNum The number of symbol to use for Channel Activity |
| GregCr | 0:03ec2f3bde8c | 1323 | * Detection operations [LORA_CAD_01_SYMBOL, LORA_CAD_02_SYMBOL, |
| GregCr | 0:03ec2f3bde8c | 1324 | * LORA_CAD_04_SYMBOL, LORA_CAD_08_SYMBOL, LORA_CAD_16_SYMBOL] |
| GregCr | 0:03ec2f3bde8c | 1325 | */ |
| GregCr | 0:03ec2f3bde8c | 1326 | void SetCadParams( RadioLoRaCadSymbols_t cadSymbolNum ); |
| GregCr | 0:03ec2f3bde8c | 1327 | |
| GregCr | 0:03ec2f3bde8c | 1328 | /*! |
| GregCr | 0:03ec2f3bde8c | 1329 | * \brief Sets the data buffer base address for transmission and reception |
| GregCr | 0:03ec2f3bde8c | 1330 | * |
| GregCr | 0:03ec2f3bde8c | 1331 | * \param [in] txBaseAddress Transmission base address |
| GregCr | 0:03ec2f3bde8c | 1332 | * \param [in] rxBaseAddress Reception base address |
| GregCr | 0:03ec2f3bde8c | 1333 | */ |
| GregCr | 0:03ec2f3bde8c | 1334 | void SetBufferBaseAddresses( uint8_t txBaseAddress, uint8_t rxBaseAddress ); |
| GregCr | 0:03ec2f3bde8c | 1335 | |
| GregCr | 0:03ec2f3bde8c | 1336 | /*! |
| GregCr | 0:03ec2f3bde8c | 1337 | * \brief Set the modulation parameters |
| GregCr | 0:03ec2f3bde8c | 1338 | * |
| GregCr | 0:03ec2f3bde8c | 1339 | * \param [in] modParams A structure describing the modulation parameters |
| GregCr | 0:03ec2f3bde8c | 1340 | */ |
| GregCr | 0:03ec2f3bde8c | 1341 | void SetModulationParams( ModulationParams_t *modParams ); |
| GregCr | 0:03ec2f3bde8c | 1342 | |
| GregCr | 0:03ec2f3bde8c | 1343 | /*! |
| GregCr | 0:03ec2f3bde8c | 1344 | * \brief Sets the packet parameters |
| GregCr | 0:03ec2f3bde8c | 1345 | * |
| GregCr | 0:03ec2f3bde8c | 1346 | * \param [in] packetParams A structure describing the packet parameters |
| GregCr | 0:03ec2f3bde8c | 1347 | */ |
| GregCr | 0:03ec2f3bde8c | 1348 | void SetPacketParams( PacketParams_t *packetParams ); |
| GregCr | 0:03ec2f3bde8c | 1349 | |
| GregCr | 0:03ec2f3bde8c | 1350 | /*! |
| GregCr | 0:03ec2f3bde8c | 1351 | * \brief Gets the last received packet buffer status |
| GregCr | 0:03ec2f3bde8c | 1352 | * |
| GregCr | 0:03ec2f3bde8c | 1353 | * \param [out] payloadLength Last received packet payload length |
| GregCr | 0:03ec2f3bde8c | 1354 | * \param [out] rxStartBuffer Last received packet buffer address pointer |
| GregCr | 0:03ec2f3bde8c | 1355 | */ |
| GregCr | 0:03ec2f3bde8c | 1356 | void GetRxBufferStatus( uint8_t *payloadLength, uint8_t *rxStartBuffer ); |
| GregCr | 0:03ec2f3bde8c | 1357 | |
| GregCr | 0:03ec2f3bde8c | 1358 | /*! |
| GregCr | 0:03ec2f3bde8c | 1359 | * \brief Gets the last received packet payload length |
| GregCr | 0:03ec2f3bde8c | 1360 | * |
| GregCr | 0:03ec2f3bde8c | 1361 | * \param [out] pktStatus A structure of packet status |
| GregCr | 0:03ec2f3bde8c | 1362 | */ |
| GregCr | 0:03ec2f3bde8c | 1363 | void GetPacketStatus( PacketStatus_t *pktStatus ); |
| GregCr | 0:03ec2f3bde8c | 1364 | |
| GregCr | 0:03ec2f3bde8c | 1365 | /*! |
| GregCr | 0:03ec2f3bde8c | 1366 | * \brief Returns the instantaneous RSSI value for the last packet received |
| GregCr | 0:03ec2f3bde8c | 1367 | * |
| GregCr | 0:03ec2f3bde8c | 1368 | * \retval rssiInst Instantaneous RSSI |
| GregCr | 0:03ec2f3bde8c | 1369 | */ |
| GregCr | 0:03ec2f3bde8c | 1370 | int8_t GetRssiInst( void ); |
| GregCr | 0:03ec2f3bde8c | 1371 | |
| GregCr | 0:03ec2f3bde8c | 1372 | /*! |
| GregCr | 0:03ec2f3bde8c | 1373 | * \brief Sets the IRQ mask and DIO masks |
| GregCr | 0:03ec2f3bde8c | 1374 | * |
| GregCr | 0:03ec2f3bde8c | 1375 | * \param [in] irqMask General IRQ mask |
| GregCr | 0:03ec2f3bde8c | 1376 | * \param [in] dio1Mask DIO1 mask |
| GregCr | 0:03ec2f3bde8c | 1377 | * \param [in] dio2Mask DIO2 mask |
| GregCr | 0:03ec2f3bde8c | 1378 | * \param [in] dio3Mask DIO3 mask |
| GregCr | 0:03ec2f3bde8c | 1379 | */ |
| GregCr | 0:03ec2f3bde8c | 1380 | void SetDioIrqParams( uint16_t irqMask, uint16_t dio1Mask, uint16_t dio2Mask, uint16_t dio3Mask ); |
| GregCr | 0:03ec2f3bde8c | 1381 | |
| GregCr | 0:03ec2f3bde8c | 1382 | /*! |
| GregCr | 0:03ec2f3bde8c | 1383 | * \brief Returns the current IRQ status |
| GregCr | 0:03ec2f3bde8c | 1384 | * |
| GregCr | 0:03ec2f3bde8c | 1385 | * \retval irqStatus IRQ status |
| GregCr | 0:03ec2f3bde8c | 1386 | */ |
| GregCr | 0:03ec2f3bde8c | 1387 | uint16_t GetIrqStatus( void ); |
| GregCr | 0:03ec2f3bde8c | 1388 | |
| GregCr | 0:03ec2f3bde8c | 1389 | /*! |
| GregCr | 0:03ec2f3bde8c | 1390 | * \brief Clears the IRQs |
| GregCr | 0:03ec2f3bde8c | 1391 | * |
| GregCr | 0:03ec2f3bde8c | 1392 | * \param [in] irq IRQ(s) to be cleared |
| GregCr | 0:03ec2f3bde8c | 1393 | */ |
| GregCr | 0:03ec2f3bde8c | 1394 | void ClearIrqStatus( uint16_t irq ); |
| GregCr | 0:03ec2f3bde8c | 1395 | |
| GregCr | 0:03ec2f3bde8c | 1396 | /*! |
| GregCr | 0:03ec2f3bde8c | 1397 | * \brief Calibrates the given radio block |
| GregCr | 0:03ec2f3bde8c | 1398 | * |
| GregCr | 0:03ec2f3bde8c | 1399 | * \param [in] calibParam The description of blocks to be calibrated |
| GregCr | 0:03ec2f3bde8c | 1400 | */ |
| GregCr | 0:03ec2f3bde8c | 1401 | void Calibrate( CalibrationParams_t calibParam ); |
| GregCr | 0:03ec2f3bde8c | 1402 | |
| GregCr | 0:03ec2f3bde8c | 1403 | /*! |
| GregCr | 0:03ec2f3bde8c | 1404 | * \brief Sets the power regulators operating mode |
| GregCr | 0:03ec2f3bde8c | 1405 | * |
| GregCr | 0:03ec2f3bde8c | 1406 | * \param [in] mode [0: LDO, 1:DC_DC] |
| GregCr | 0:03ec2f3bde8c | 1407 | */ |
| GregCr | 0:03ec2f3bde8c | 1408 | void SetRegulatorMode( RadioRegulatorModes_t mode ); |
| GregCr | 0:03ec2f3bde8c | 1409 | |
| GregCr | 0:03ec2f3bde8c | 1410 | /*! |
| GregCr | 0:03ec2f3bde8c | 1411 | * \brief Saves the current selected modem configuration into data RAM |
| GregCr | 0:03ec2f3bde8c | 1412 | */ |
| GregCr | 0:03ec2f3bde8c | 1413 | void SetSaveContext( void ); |
| GregCr | 0:03ec2f3bde8c | 1414 | |
| GregCr | 0:03ec2f3bde8c | 1415 | /*! |
| GregCr | 0:03ec2f3bde8c | 1416 | * \brief Sets the chip to automatically send a packet after the end of a packet reception |
| GregCr | 0:03ec2f3bde8c | 1417 | * |
| GregCr | 0:03ec2f3bde8c | 1418 | * \remark The offset is automatically compensated inside the function |
| GregCr | 0:03ec2f3bde8c | 1419 | * |
| GregCr | 0:03ec2f3bde8c | 1420 | * \param [in] time The delay in us after which a Tx is done |
| GregCr | 0:03ec2f3bde8c | 1421 | */ |
| GregCr | 0:03ec2f3bde8c | 1422 | void SetAutoTx( uint16_t time ); |
| GregCr | 0:03ec2f3bde8c | 1423 | |
| GregCr | 0:03ec2f3bde8c | 1424 | /*! |
| GregCr | 0:03ec2f3bde8c | 1425 | * \brief Sets the chip to stay in FS mode after sending a packet |
| GregCr | 0:03ec2f3bde8c | 1426 | * |
| GregCr | 0:03ec2f3bde8c | 1427 | * \param [in] enableAutoFs Turn on auto FS |
| GregCr | 0:03ec2f3bde8c | 1428 | */ |
| GregCr | 0:03ec2f3bde8c | 1429 | void SetAutoFs( bool enableAutoFs ); |
| GregCr | 0:03ec2f3bde8c | 1430 | |
| GregCr | 0:03ec2f3bde8c | 1431 | /*! |
| GregCr | 0:03ec2f3bde8c | 1432 | * \brief Enables or disables long preamble detection mode |
| GregCr | 0:03ec2f3bde8c | 1433 | * |
| GregCr | 0:03ec2f3bde8c | 1434 | * \param [in] enable Turn on long preamble mode |
| GregCr | 0:03ec2f3bde8c | 1435 | */ |
| GregCr | 0:03ec2f3bde8c | 1436 | void SetLongPreamble( bool enable ); |
| GregCr | 0:03ec2f3bde8c | 1437 | |
| GregCr | 0:03ec2f3bde8c | 1438 | /*! |
| GregCr | 0:03ec2f3bde8c | 1439 | * \brief Saves the payload to be send in the radio buffer |
| GregCr | 0:03ec2f3bde8c | 1440 | * |
| GregCr | 0:03ec2f3bde8c | 1441 | * \param [in] payload A pointer to the payload |
| GregCr | 0:03ec2f3bde8c | 1442 | * \param [in] size The size of the payload |
| GregCr | 0:03ec2f3bde8c | 1443 | * \param [in] offset The address in FIFO where writting first byte (default = 0x00) |
| GregCr | 0:03ec2f3bde8c | 1444 | */ |
| GregCr | 0:03ec2f3bde8c | 1445 | void SetPayload( uint8_t *payload, uint8_t size, uint8_t offset = 0x00 ); |
| GregCr | 0:03ec2f3bde8c | 1446 | |
| GregCr | 0:03ec2f3bde8c | 1447 | /*! |
| GregCr | 0:03ec2f3bde8c | 1448 | * \brief Reads the payload received. If the received payload is longer |
| GregCr | 0:03ec2f3bde8c | 1449 | * than maxSize, then the method returns 1 and do not set size and payload. |
| GregCr | 0:03ec2f3bde8c | 1450 | * |
| GregCr | 0:03ec2f3bde8c | 1451 | * \param [out] payload A pointer to a buffer into which the payload will be copied |
| GregCr | 0:03ec2f3bde8c | 1452 | * \param [out] size A pointer to the size of the payload received |
| GregCr | 0:03ec2f3bde8c | 1453 | * \param [in] maxSize The maximal size allowed to copy into the buffer |
| GregCr | 0:03ec2f3bde8c | 1454 | */ |
| GregCr | 0:03ec2f3bde8c | 1455 | uint8_t GetPayload( uint8_t *payload, uint8_t *size, uint8_t maxSize ); |
| GregCr | 0:03ec2f3bde8c | 1456 | |
| GregCr | 0:03ec2f3bde8c | 1457 | /*! |
| GregCr | 0:03ec2f3bde8c | 1458 | * \brief Sends a payload |
| GregCr | 0:03ec2f3bde8c | 1459 | * |
| GregCr | 0:03ec2f3bde8c | 1460 | * \param [in] payload A pointer to the payload to send |
| GregCr | 0:03ec2f3bde8c | 1461 | * \param [in] size The size of the payload to send |
| GregCr | 0:03ec2f3bde8c | 1462 | * \param [in] timeout The timeout for Tx operation |
| GregCr | 0:03ec2f3bde8c | 1463 | * \param [in] offset The address in FIFO where writting first byte (default = 0x00) |
| GregCr | 0:03ec2f3bde8c | 1464 | */ |
| GregCr | 0:03ec2f3bde8c | 1465 | void SendPayload( uint8_t *payload, uint8_t size, TickTime_t timeout, uint8_t offset = 0x00 ); |
| GregCr | 0:03ec2f3bde8c | 1466 | |
| GregCr | 0:03ec2f3bde8c | 1467 | /*! |
| GregCr | 0:03ec2f3bde8c | 1468 | * \brief Sets the Sync Word given by index used in GFSK, FLRC and BLE protocols |
| GregCr | 0:03ec2f3bde8c | 1469 | * |
| GregCr | 0:03ec2f3bde8c | 1470 | * \remark 5th byte isn't used in FLRC and BLE protocols |
| GregCr | 0:03ec2f3bde8c | 1471 | * |
| GregCr | 0:03ec2f3bde8c | 1472 | * \param [in] syncWordIdx Index of SyncWord to be set [1..3] |
| GregCr | 0:03ec2f3bde8c | 1473 | * \param [in] syncWord SyncWord bytes ( 5 bytes ) |
| GregCr | 0:03ec2f3bde8c | 1474 | * |
| GregCr | 0:03ec2f3bde8c | 1475 | * \retval status [0: OK, 1: NOK] |
| GregCr | 0:03ec2f3bde8c | 1476 | */ |
| GregCr | 0:03ec2f3bde8c | 1477 | uint8_t SetSyncWord( uint8_t syncWordIdx, uint8_t *syncWord ); |
| GregCr | 0:03ec2f3bde8c | 1478 | |
| GregCr | 0:03ec2f3bde8c | 1479 | /*! |
| GregCr | 0:03ec2f3bde8c | 1480 | * \brief Defines how many error bits are tolerated in sync word detection |
| GregCr | 0:03ec2f3bde8c | 1481 | * |
| GregCr | 0:03ec2f3bde8c | 1482 | * \param [in] errorBits Number of error bits supported to validate the Sync word detection |
| GregCr | 0:03ec2f3bde8c | 1483 | * ( default is 4 bit, minimum is 1 bit ) |
| GregCr | 0:03ec2f3bde8c | 1484 | */ |
| GregCr | 0:03ec2f3bde8c | 1485 | void SetSyncWordErrorTolerance( uint8_t errorBits ); |
| GregCr | 0:03ec2f3bde8c | 1486 | |
| GregCr | 0:03ec2f3bde8c | 1487 | /*! |
| GregCr | 0:03ec2f3bde8c | 1488 | * \brief Sets the Initial value for the LFSR used for the CRC calculation |
| GregCr | 0:03ec2f3bde8c | 1489 | * |
| GregCr | 0:03ec2f3bde8c | 1490 | * \param [in] seed Initial LFSR value ( 4 bytes ) |
| GregCr | 0:03ec2f3bde8c | 1491 | * |
| GregCr | 0:03ec2f3bde8c | 1492 | */ |
| GregCr | 0:03ec2f3bde8c | 1493 | void SetCrcSeed( uint16_t seed ); |
| GregCr | 0:03ec2f3bde8c | 1494 | |
| GregCr | 0:03ec2f3bde8c | 1495 | /*! |
| GregCr | 0:03ec2f3bde8c | 1496 | * \brief Sets the seed used for the CRC calculation |
| GregCr | 0:03ec2f3bde8c | 1497 | * |
| GregCr | 0:03ec2f3bde8c | 1498 | * \param [in] polynomial The seed value |
| GregCr | 0:03ec2f3bde8c | 1499 | * |
| GregCr | 0:03ec2f3bde8c | 1500 | */ |
| GregCr | 0:03ec2f3bde8c | 1501 | void SetCrcPolynomial( uint16_t polynomial ); |
| GregCr | 0:03ec2f3bde8c | 1502 | |
| GregCr | 0:03ec2f3bde8c | 1503 | /*! |
| GregCr | 0:03ec2f3bde8c | 1504 | * \brief Sets the Initial value of the LFSR used for the whitening in GFSK, FLRC and BLE protocols |
| GregCr | 0:03ec2f3bde8c | 1505 | * |
| GregCr | 0:03ec2f3bde8c | 1506 | * \param [in] seed Initial LFSR value |
| GregCr | 0:03ec2f3bde8c | 1507 | */ |
| GregCr | 0:03ec2f3bde8c | 1508 | void SetWhiteningSeed( uint8_t seed ); |
| GregCr | 0:03ec2f3bde8c | 1509 | |
| GregCr | 0:03ec2f3bde8c | 1510 | /*! |
| GregCr | 0:03ec2f3bde8c | 1511 | * \brief Sets the number of bits used to check that ranging request match ranging ID |
| GregCr | 0:03ec2f3bde8c | 1512 | * |
| GregCr | 0:03ec2f3bde8c | 1513 | * \param [in] length [0: 8 bits, 1: 16 bits, |
| GregCr | 0:03ec2f3bde8c | 1514 | * 2: 24 bits, 3: 32 bits] |
| GregCr | 0:03ec2f3bde8c | 1515 | */ |
| GregCr | 0:03ec2f3bde8c | 1516 | void SetRangingIdLength( RadioRangingIdCheckLengths_t length ); |
| GregCr | 0:03ec2f3bde8c | 1517 | |
| GregCr | 0:03ec2f3bde8c | 1518 | /*! |
| GregCr | 0:03ec2f3bde8c | 1519 | * \brief Sets ranging device id |
| GregCr | 0:03ec2f3bde8c | 1520 | * |
| GregCr | 0:03ec2f3bde8c | 1521 | * \param [in] address Device address |
| GregCr | 0:03ec2f3bde8c | 1522 | */ |
| GregCr | 0:03ec2f3bde8c | 1523 | void SetDeviceRangingAddress( uint32_t address ); |
| GregCr | 0:03ec2f3bde8c | 1524 | |
| GregCr | 0:03ec2f3bde8c | 1525 | /*! |
| GregCr | 0:03ec2f3bde8c | 1526 | * \brief Sets the device id to ping in a ranging request |
| GregCr | 0:03ec2f3bde8c | 1527 | * |
| GregCr | 0:03ec2f3bde8c | 1528 | * \param [in] address Address of the device to ping |
| GregCr | 0:03ec2f3bde8c | 1529 | */ |
| GregCr | 0:03ec2f3bde8c | 1530 | void SetRangingRequestAddress( uint32_t address ); |
| GregCr | 0:03ec2f3bde8c | 1531 | |
| GregCr | 0:03ec2f3bde8c | 1532 | /*! |
| GregCr | 0:03ec2f3bde8c | 1533 | * \brief Return the ranging result value |
| GregCr | 0:03ec2f3bde8c | 1534 | * |
| GregCr | 0:03ec2f3bde8c | 1535 | * \param [in] resultType Specifies the type of result. |
| GregCr | 0:03ec2f3bde8c | 1536 | * [0: RAW, 1: Averaged, |
| GregCr | 0:03ec2f3bde8c | 1537 | * 2: De-biased, 3:Filtered] |
| GregCr | 0:03ec2f3bde8c | 1538 | * |
| GregCr | 0:03ec2f3bde8c | 1539 | * \retval ranging The ranging measure filtered according to resultType [m] |
| GregCr | 0:03ec2f3bde8c | 1540 | */ |
| GregCr | 0:03ec2f3bde8c | 1541 | double GetRangingResult( RadioRangingResultTypes_t resultType ); |
| GregCr | 0:03ec2f3bde8c | 1542 | |
| GregCr | 0:03ec2f3bde8c | 1543 | /*! |
| GregCr | 0:03ec2f3bde8c | 1544 | * \brief Sets the standard processing delay between Master and Slave |
| GregCr | 0:03ec2f3bde8c | 1545 | * |
| GregCr | 0:03ec2f3bde8c | 1546 | * \param [in] cal RxTx delay offset for correcting ranging bias. |
| GregCr | 0:03ec2f3bde8c | 1547 | * |
| GregCr | 0:03ec2f3bde8c | 1548 | * The calibration value reflects the group delay of the radio front end and |
| GregCr | 0:03ec2f3bde8c | 1549 | * must be re-performed for each new SX1280 PCB design. The value is obtained |
| GregCr | 0:03ec2f3bde8c | 1550 | * empirically by either conducted measurement in a known electrical length |
| GregCr | 0:03ec2f3bde8c | 1551 | * coaxial RF cable (where the design is connectorised) or by radiated |
| GregCr | 0:03ec2f3bde8c | 1552 | * measurement, at a known distance, where an antenna is present. |
| GregCr | 0:03ec2f3bde8c | 1553 | * The result of the calibration process is that the SX1280 ranging result |
| GregCr | 0:03ec2f3bde8c | 1554 | * accurately reflects the physical range, the calibration procedure therefore |
| GregCr | 0:03ec2f3bde8c | 1555 | * removes the average timing error from the time-of-flight measurement for a |
| GregCr | 0:03ec2f3bde8c | 1556 | * given design. |
| GregCr | 0:03ec2f3bde8c | 1557 | * |
| GregCr | 0:03ec2f3bde8c | 1558 | * The values are Spreading Factor dependents, and depend also of the board |
| GregCr | 0:03ec2f3bde8c | 1559 | * design. |
| GregCr | 0:03ec2f3bde8c | 1560 | */ |
| GregCr | 0:03ec2f3bde8c | 1561 | void SetRangingCalibration( uint16_t cal ); |
| GregCr | 0:03ec2f3bde8c | 1562 | |
| GregCr | 0:03ec2f3bde8c | 1563 | /*! |
| GregCr | 0:03ec2f3bde8c | 1564 | * \brief Clears the ranging filter |
| GregCr | 0:03ec2f3bde8c | 1565 | */ |
| GregCr | 0:03ec2f3bde8c | 1566 | void RangingClearFilterResult( void ); |
| GregCr | 0:03ec2f3bde8c | 1567 | |
| GregCr | 0:03ec2f3bde8c | 1568 | /*! |
| GregCr | 0:03ec2f3bde8c | 1569 | * \brief Set the number of samples considered in the built-in filter |
| GregCr | 0:03ec2f3bde8c | 1570 | * |
| GregCr | 0:03ec2f3bde8c | 1571 | * \param [in] numSample The number of samples to use built-in filter |
| GregCr | 0:03ec2f3bde8c | 1572 | * [8..255] |
| GregCr | 0:03ec2f3bde8c | 1573 | * |
| GregCr | 0:03ec2f3bde8c | 1574 | * \remark Value inferior to 8 will be silently set to 8 |
| GregCr | 0:03ec2f3bde8c | 1575 | */ |
| GregCr | 0:03ec2f3bde8c | 1576 | void RangingSetFilterNumSamples( uint8_t numSample ); |
| GregCr | 0:03ec2f3bde8c | 1577 | |
| GregCr | 0:03ec2f3bde8c | 1578 | /*! |
| GregCr | 0:03ec2f3bde8c | 1579 | * \brief Return the Estimated Frequency Error in LORA and RANGING operations |
| GregCr | 0:03ec2f3bde8c | 1580 | * |
| GregCr | 0:03ec2f3bde8c | 1581 | * \retval efe The estimated frequency error [Hz] |
| GregCr | 0:03ec2f3bde8c | 1582 | */ |
| GregCr | 0:03ec2f3bde8c | 1583 | double GetFrequencyError( ); |
| GregCr | 0:03ec2f3bde8c | 1584 | |
| GregCr | 0:03ec2f3bde8c | 1585 | /*! |
| GregCr | 0:03ec2f3bde8c | 1586 | * \brief Process the analysis of radio IRQs and calls callback functions |
| GregCr | 0:03ec2f3bde8c | 1587 | * depending on radio state |
| GregCr | 0:03ec2f3bde8c | 1588 | */ |
| GregCr | 0:03ec2f3bde8c | 1589 | void ProcessIrqs( void ); |
| GregCr | 0:03ec2f3bde8c | 1590 | }; |
| GregCr | 0:03ec2f3bde8c | 1591 | |
| GregCr | 0:03ec2f3bde8c | 1592 | #endif // __SX1280_H__ |
