Driver for the SX1280 RF Transceiver
Dependents: SX1280PingPong RangignMaster RangingSlave MSNV2-Terminal_V1-6 ... more
radio.h@12:c4f110f3fe3e, 2018-11-08 (annotated)
- Committer:
- mverdy
- Date:
- Thu Nov 08 10:08:44 2018 +0000
- Revision:
- 12:c4f110f3fe3e
- Parent:
- 11:d60df50e108f
Synchronze driver on v1.3.1
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: Handling of the node configuration protocol |
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 __RADIO_H__ |
GregCr | 0:03ec2f3bde8c | 17 | #define __RADIO_H__ |
GregCr | 0:03ec2f3bde8c | 18 | |
GregCr | 0:03ec2f3bde8c | 19 | #include "mbed.h" |
GregCr | 0:03ec2f3bde8c | 20 | |
GregCr | 0:03ec2f3bde8c | 21 | /*! |
GregCr | 0:03ec2f3bde8c | 22 | * \brief Structure describing the radio status |
GregCr | 0:03ec2f3bde8c | 23 | */ |
GregCr | 0:03ec2f3bde8c | 24 | typedef union |
GregCr | 0:03ec2f3bde8c | 25 | { |
GregCr | 0:03ec2f3bde8c | 26 | /*! |
GregCr | 0:03ec2f3bde8c | 27 | * \brief Structure of the radio status |
GregCr | 0:03ec2f3bde8c | 28 | */ |
GregCr | 0:03ec2f3bde8c | 29 | struct |
GregCr | 0:03ec2f3bde8c | 30 | { |
GregCr | 0:03ec2f3bde8c | 31 | uint8_t CpuBusy : 1; //!< Flag for CPU radio busy |
GregCr | 0:03ec2f3bde8c | 32 | uint8_t DmaBusy : 1; //!< Flag for DMA busy |
GregCr | 0:03ec2f3bde8c | 33 | uint8_t CmdStatus : 3; //!< Command status |
GregCr | 0:03ec2f3bde8c | 34 | uint8_t ChipMode : 3; //!< Chip mode |
GregCr | 0:03ec2f3bde8c | 35 | }Fields; |
GregCr | 0:03ec2f3bde8c | 36 | |
GregCr | 0:03ec2f3bde8c | 37 | /*! |
GregCr | 0:03ec2f3bde8c | 38 | * \brief Serialized radio status |
GregCr | 0:03ec2f3bde8c | 39 | */ |
GregCr | 0:03ec2f3bde8c | 40 | uint8_t Value; |
GregCr | 0:03ec2f3bde8c | 41 | }RadioStatus_t; |
GregCr | 0:03ec2f3bde8c | 42 | |
GregCr | 0:03ec2f3bde8c | 43 | /*! |
GregCr | 0:03ec2f3bde8c | 44 | * \brief Structure describing the ranging codes for callback functions |
GregCr | 0:03ec2f3bde8c | 45 | */ |
GregCr | 0:03ec2f3bde8c | 46 | typedef enum |
GregCr | 0:03ec2f3bde8c | 47 | { |
GregCr | 0:03ec2f3bde8c | 48 | IRQ_RANGING_SLAVE_ERROR_CODE = 0x00, |
GregCr | 0:03ec2f3bde8c | 49 | IRQ_RANGING_SLAVE_VALID_CODE, |
GregCr | 0:03ec2f3bde8c | 50 | IRQ_RANGING_MASTER_ERROR_CODE, |
GregCr | 0:03ec2f3bde8c | 51 | IRQ_RANGING_MASTER_VALID_CODE, |
GregCr | 0:03ec2f3bde8c | 52 | }IrqRangingCode_t; |
GregCr | 0:03ec2f3bde8c | 53 | |
GregCr | 0:03ec2f3bde8c | 54 | /*! |
GregCr | 0:03ec2f3bde8c | 55 | * \brief Structure describing the error codes for callback functions |
GregCr | 0:03ec2f3bde8c | 56 | */ |
GregCr | 0:03ec2f3bde8c | 57 | typedef enum |
GregCr | 0:03ec2f3bde8c | 58 | { |
GregCr | 0:03ec2f3bde8c | 59 | IRQ_HEADER_ERROR_CODE = 0x00, |
GregCr | 0:03ec2f3bde8c | 60 | IRQ_SYNCWORD_ERROR_CODE, |
GregCr | 0:03ec2f3bde8c | 61 | IRQ_CRC_ERROR_CODE, |
GregCr | 0:03ec2f3bde8c | 62 | IRQ_RANGING_ON_LORA_ERROR_CODE, |
GregCr | 0:03ec2f3bde8c | 63 | }IrqErrorCode_t; |
GregCr | 0:03ec2f3bde8c | 64 | |
GregCr | 0:03ec2f3bde8c | 65 | /*! |
GregCr | 0:03ec2f3bde8c | 66 | * \brief Structure describing the validity codes for callback function rxValid |
GregCr | 0:03ec2f3bde8c | 67 | */ |
GregCr | 0:03ec2f3bde8c | 68 | typedef enum |
GregCr | 0:03ec2f3bde8c | 69 | { |
GregCr | 0:03ec2f3bde8c | 70 | IRQ_HEADER_VALID_CODE = 0x00, |
GregCr | 0:03ec2f3bde8c | 71 | IRQ_SYNCWORD_VALID_CODE, |
GregCr | 0:03ec2f3bde8c | 72 | }IrqValidCode_t; |
GregCr | 0:03ec2f3bde8c | 73 | |
GregCr | 0:03ec2f3bde8c | 74 | /*! |
GregCr | 11:d60df50e108f | 75 | * \brief Represents all possible opcode understood by the radio |
GregCr | 0:03ec2f3bde8c | 76 | */ |
GregCr | 11:d60df50e108f | 77 | typedef enum RadioCommands_u |
GregCr | 11:d60df50e108f | 78 | { |
GregCr | 11:d60df50e108f | 79 | RADIO_GET_STATUS = 0xC0, |
GregCr | 11:d60df50e108f | 80 | RADIO_WRITE_REGISTER = 0x18, |
GregCr | 11:d60df50e108f | 81 | RADIO_READ_REGISTER = 0x19, |
GregCr | 11:d60df50e108f | 82 | RADIO_WRITE_BUFFER = 0x1A, |
GregCr | 11:d60df50e108f | 83 | RADIO_READ_BUFFER = 0x1B, |
GregCr | 11:d60df50e108f | 84 | RADIO_SET_SLEEP = 0x84, |
GregCr | 11:d60df50e108f | 85 | RADIO_SET_STANDBY = 0x80, |
GregCr | 11:d60df50e108f | 86 | RADIO_SET_FS = 0xC1, |
GregCr | 11:d60df50e108f | 87 | RADIO_SET_TX = 0x83, |
GregCr | 11:d60df50e108f | 88 | RADIO_SET_RX = 0x82, |
GregCr | 11:d60df50e108f | 89 | RADIO_SET_RXDUTYCYCLE = 0x94, |
GregCr | 11:d60df50e108f | 90 | RADIO_SET_CAD = 0xC5, |
GregCr | 11:d60df50e108f | 91 | RADIO_SET_TXCONTINUOUSWAVE = 0xD1, |
GregCr | 11:d60df50e108f | 92 | RADIO_SET_TXCONTINUOUSPREAMBLE = 0xD2, |
GregCr | 11:d60df50e108f | 93 | RADIO_SET_PACKETTYPE = 0x8A, |
GregCr | 11:d60df50e108f | 94 | RADIO_GET_PACKETTYPE = 0x03, |
GregCr | 11:d60df50e108f | 95 | RADIO_SET_RFFREQUENCY = 0x86, |
GregCr | 11:d60df50e108f | 96 | RADIO_SET_TXPARAMS = 0x8E, |
GregCr | 11:d60df50e108f | 97 | RADIO_SET_CADPARAMS = 0x88, |
GregCr | 11:d60df50e108f | 98 | RADIO_SET_BUFFERBASEADDRESS = 0x8F, |
GregCr | 11:d60df50e108f | 99 | RADIO_SET_MODULATIONPARAMS = 0x8B, |
GregCr | 11:d60df50e108f | 100 | RADIO_SET_PACKETPARAMS = 0x8C, |
GregCr | 11:d60df50e108f | 101 | RADIO_GET_RXBUFFERSTATUS = 0x17, |
GregCr | 11:d60df50e108f | 102 | RADIO_GET_PACKETSTATUS = 0x1D, |
GregCr | 11:d60df50e108f | 103 | RADIO_GET_RSSIINST = 0x1F, |
GregCr | 11:d60df50e108f | 104 | RADIO_SET_DIOIRQPARAMS = 0x8D, |
GregCr | 11:d60df50e108f | 105 | RADIO_GET_IRQSTATUS = 0x15, |
GregCr | 11:d60df50e108f | 106 | RADIO_CLR_IRQSTATUS = 0x97, |
GregCr | 11:d60df50e108f | 107 | RADIO_CALIBRATE = 0x89, |
GregCr | 11:d60df50e108f | 108 | RADIO_SET_REGULATORMODE = 0x96, |
GregCr | 11:d60df50e108f | 109 | RADIO_SET_SAVECONTEXT = 0xD5, |
GregCr | 11:d60df50e108f | 110 | RADIO_SET_AUTOTX = 0x98, |
GregCr | 11:d60df50e108f | 111 | RADIO_SET_AUTOFS = 0x9E, |
GregCr | 11:d60df50e108f | 112 | RADIO_SET_LONGPREAMBLE = 0x9B, |
GregCr | 11:d60df50e108f | 113 | RADIO_SET_UARTSPEED = 0x9D, |
GregCr | 11:d60df50e108f | 114 | RADIO_SET_RANGING_ROLE = 0xA3, |
GregCr | 11:d60df50e108f | 115 | }RadioCommands_t; |
GregCr | 0:03ec2f3bde8c | 116 | |
GregCr | 0:03ec2f3bde8c | 117 | /*! |
GregCr | 0:03ec2f3bde8c | 118 | * \brief The radio callbacks structure |
GregCr | 0:03ec2f3bde8c | 119 | * Holds function pointers to be called on radio interrupts |
GregCr | 0:03ec2f3bde8c | 120 | */ |
GregCr | 0:03ec2f3bde8c | 121 | typedef struct |
GregCr | 0:03ec2f3bde8c | 122 | { |
GregCr | 0:03ec2f3bde8c | 123 | void ( *txDone )( void ); //!< Pointer to a function run on successful transmission |
GregCr | 0:03ec2f3bde8c | 124 | void ( *rxDone )( void ); //!< Pointer to a function run on successful reception |
GregCr | 0:03ec2f3bde8c | 125 | void ( *rxSyncWordDone )( void ); //!< Pointer to a function run on successful SyncWord reception |
GregCr | 0:03ec2f3bde8c | 126 | void ( *rxHeaderDone )( void ); //!< Pointer to a function run on successful Header reception |
GregCr | 0:03ec2f3bde8c | 127 | void ( *txTimeout )( void ); //!< Pointer to a function run on transmission timeout |
GregCr | 0:03ec2f3bde8c | 128 | void ( *rxTimeout )( void ); //!< Pointer to a function run on reception timeout |
GregCr | 0:03ec2f3bde8c | 129 | void ( *rxError )( IrqErrorCode_t errCode ); //!< Pointer to a function run on reception error |
GregCr | 0:03ec2f3bde8c | 130 | void ( *rangingDone )( IrqRangingCode_t val ); //!< Pointer to a function run on ranging terminated |
GregCr | 0:03ec2f3bde8c | 131 | void ( *cadDone )( bool cadFlag ); //!< Pointer to a function run on channel activity detected |
GregCr | 0:03ec2f3bde8c | 132 | }RadioCallbacks_t; |
GregCr | 0:03ec2f3bde8c | 133 | |
GregCr | 0:03ec2f3bde8c | 134 | /*! |
GregCr | 0:03ec2f3bde8c | 135 | * \brief Class holding the basic communications with a radio |
GregCr | 0:03ec2f3bde8c | 136 | * |
GregCr | 0:03ec2f3bde8c | 137 | * It sets the functions to read/write registers, send commands and read/write |
GregCr | 0:03ec2f3bde8c | 138 | * payload. |
GregCr | 0:03ec2f3bde8c | 139 | * It also provides functions to run callback functions depending on the |
GregCr | 0:03ec2f3bde8c | 140 | * interrupts generated from the radio. |
GregCr | 0:03ec2f3bde8c | 141 | */ |
GregCr | 0:03ec2f3bde8c | 142 | class Radio |
GregCr | 0:03ec2f3bde8c | 143 | { |
GregCr | 0:03ec2f3bde8c | 144 | protected: |
GregCr | 0:03ec2f3bde8c | 145 | /*! |
GregCr | 0:03ec2f3bde8c | 146 | * \brief Callback on Tx done interrupt |
GregCr | 0:03ec2f3bde8c | 147 | */ |
GregCr | 0:03ec2f3bde8c | 148 | void ( *txDone )( void ); |
GregCr | 0:03ec2f3bde8c | 149 | |
GregCr | 0:03ec2f3bde8c | 150 | /*! |
GregCr | 0:03ec2f3bde8c | 151 | * \brief Callback on Rx done interrupt |
GregCr | 0:03ec2f3bde8c | 152 | */ |
GregCr | 0:03ec2f3bde8c | 153 | void ( *rxDone )( void ); |
GregCr | 0:03ec2f3bde8c | 154 | |
GregCr | 0:03ec2f3bde8c | 155 | /*! |
GregCr | 0:03ec2f3bde8c | 156 | * \brief Callback on Rx SyncWord interrupt |
GregCr | 0:03ec2f3bde8c | 157 | */ |
GregCr | 0:03ec2f3bde8c | 158 | void ( *rxSyncWordDone )( void ); |
GregCr | 0:03ec2f3bde8c | 159 | |
GregCr | 0:03ec2f3bde8c | 160 | /*! |
GregCr | 0:03ec2f3bde8c | 161 | * \brief Callback on Rx header received interrupt |
GregCr | 0:03ec2f3bde8c | 162 | */ |
GregCr | 0:03ec2f3bde8c | 163 | void ( *rxHeaderDone )( void ); |
GregCr | 0:03ec2f3bde8c | 164 | |
GregCr | 0:03ec2f3bde8c | 165 | /*! |
GregCr | 0:03ec2f3bde8c | 166 | * \brief Callback on Tx timeout interrupt |
GregCr | 0:03ec2f3bde8c | 167 | */ |
GregCr | 0:03ec2f3bde8c | 168 | void ( *txTimeout )( void ); |
GregCr | 0:03ec2f3bde8c | 169 | |
GregCr | 0:03ec2f3bde8c | 170 | /*! |
GregCr | 0:03ec2f3bde8c | 171 | * \brief Callback on Rx timeout interrupt |
GregCr | 0:03ec2f3bde8c | 172 | */ |
GregCr | 0:03ec2f3bde8c | 173 | void ( *rxTimeout )( void ); |
GregCr | 0:03ec2f3bde8c | 174 | |
GregCr | 0:03ec2f3bde8c | 175 | /*! |
GregCr | 0:03ec2f3bde8c | 176 | * \brief Callback on Rx error interrupt |
GregCr | 0:03ec2f3bde8c | 177 | * |
GregCr | 0:03ec2f3bde8c | 178 | * \param [out] errCode A code indicating the type of interrupt (SyncWord error or CRC error) |
GregCr | 0:03ec2f3bde8c | 179 | */ |
GregCr | 0:03ec2f3bde8c | 180 | void ( *rxError )( IrqErrorCode_t errCode ); |
GregCr | 0:03ec2f3bde8c | 181 | |
GregCr | 0:03ec2f3bde8c | 182 | /*! |
GregCr | 0:03ec2f3bde8c | 183 | * \brief Callback on ranging done interrupt |
GregCr | 0:03ec2f3bde8c | 184 | * |
GregCr | 0:03ec2f3bde8c | 185 | * \param [out] val A flag indicating the type of interrupt (Master/Slave and Valid/Error) |
GregCr | 0:03ec2f3bde8c | 186 | */ |
GregCr | 0:03ec2f3bde8c | 187 | void ( *rangingDone )( IrqRangingCode_t val ); |
GregCr | 0:03ec2f3bde8c | 188 | |
GregCr | 0:03ec2f3bde8c | 189 | /*! |
GregCr | 0:03ec2f3bde8c | 190 | * \brief Callback on Channel Activity Detection done interrupt |
GregCr | 0:03ec2f3bde8c | 191 | * |
GregCr | 0:03ec2f3bde8c | 192 | * \param [out] cadFlag Flag for channel activity detected or not |
GregCr | 0:03ec2f3bde8c | 193 | */ |
GregCr | 0:03ec2f3bde8c | 194 | void ( *cadDone )( bool cadFlag ); |
GregCr | 0:03ec2f3bde8c | 195 | |
GregCr | 0:03ec2f3bde8c | 196 | public: |
GregCr | 0:03ec2f3bde8c | 197 | /*! |
GregCr | 0:03ec2f3bde8c | 198 | * \brief Constructor for radio class |
GregCr | 0:03ec2f3bde8c | 199 | * Sets the callbacks functions pointers |
GregCr | 0:03ec2f3bde8c | 200 | * |
GregCr | 0:03ec2f3bde8c | 201 | * \param [in] callbacks The structure of callbacks function pointers |
GregCr | 0:03ec2f3bde8c | 202 | * to be called on radio interrupts |
GregCr | 0:03ec2f3bde8c | 203 | * |
GregCr | 0:03ec2f3bde8c | 204 | */ |
GregCr | 0:03ec2f3bde8c | 205 | Radio( RadioCallbacks_t *callbacks ) |
GregCr | 0:03ec2f3bde8c | 206 | { |
GregCr | 0:03ec2f3bde8c | 207 | this->txDone = callbacks->txDone; |
GregCr | 0:03ec2f3bde8c | 208 | this->rxDone = callbacks->rxDone; |
GregCr | 0:03ec2f3bde8c | 209 | this->rxSyncWordDone = callbacks->rxSyncWordDone; |
GregCr | 0:03ec2f3bde8c | 210 | this->rxHeaderDone = callbacks->rxHeaderDone; |
GregCr | 0:03ec2f3bde8c | 211 | this->txTimeout = callbacks->txTimeout; |
GregCr | 0:03ec2f3bde8c | 212 | this->rxTimeout = callbacks->rxTimeout; |
GregCr | 0:03ec2f3bde8c | 213 | this->rxError = callbacks->rxError; |
GregCr | 0:03ec2f3bde8c | 214 | this->rangingDone = callbacks->rangingDone; |
GregCr | 0:03ec2f3bde8c | 215 | this->cadDone = callbacks->cadDone; |
GregCr | 0:03ec2f3bde8c | 216 | } |
GregCr | 0:03ec2f3bde8c | 217 | virtual ~Radio( void ){ }; |
GregCr | 0:03ec2f3bde8c | 218 | |
GregCr | 0:03ec2f3bde8c | 219 | /*! |
GregCr | 0:03ec2f3bde8c | 220 | * \brief Resets the radio |
GregCr | 0:03ec2f3bde8c | 221 | */ |
GregCr | 0:03ec2f3bde8c | 222 | virtual void Reset( void ) = 0; |
GregCr | 0:03ec2f3bde8c | 223 | |
GregCr | 0:03ec2f3bde8c | 224 | /*! |
GregCr | 0:03ec2f3bde8c | 225 | * \brief Gets the current radio status |
GregCr | 0:03ec2f3bde8c | 226 | * |
GregCr | 0:03ec2f3bde8c | 227 | * \retval status Radio status |
GregCr | 0:03ec2f3bde8c | 228 | */ |
GregCr | 0:03ec2f3bde8c | 229 | virtual RadioStatus_t GetStatus( void ) = 0; |
GregCr | 0:03ec2f3bde8c | 230 | |
GregCr | 0:03ec2f3bde8c | 231 | /*! |
GregCr | 0:03ec2f3bde8c | 232 | * \brief Writes the given command to the radio |
GregCr | 0:03ec2f3bde8c | 233 | * |
GregCr | 0:03ec2f3bde8c | 234 | * \param [in] opcode Command opcode |
GregCr | 0:03ec2f3bde8c | 235 | * \param [in] buffer Command parameters byte array |
GregCr | 0:03ec2f3bde8c | 236 | * \param [in] size Command parameters byte array size |
GregCr | 0:03ec2f3bde8c | 237 | */ |
GregCr | 0:03ec2f3bde8c | 238 | virtual void WriteCommand( RadioCommands_t opcode, uint8_t *buffer, uint16_t size ) = 0; |
GregCr | 0:03ec2f3bde8c | 239 | |
GregCr | 0:03ec2f3bde8c | 240 | /*! |
GregCr | 0:03ec2f3bde8c | 241 | * \brief Reads the given command from the radio |
GregCr | 0:03ec2f3bde8c | 242 | * |
GregCr | 0:03ec2f3bde8c | 243 | * \param [in] opcode Command opcode |
GregCr | 0:03ec2f3bde8c | 244 | * \param [in] buffer Command parameters byte array |
GregCr | 0:03ec2f3bde8c | 245 | * \param [in] size Command parameters byte array size |
GregCr | 0:03ec2f3bde8c | 246 | */ |
GregCr | 0:03ec2f3bde8c | 247 | virtual void ReadCommand( RadioCommands_t opcode, uint8_t *buffer, uint16_t size ) = 0; |
GregCr | 0:03ec2f3bde8c | 248 | |
GregCr | 0:03ec2f3bde8c | 249 | /*! |
GregCr | 0:03ec2f3bde8c | 250 | * \brief Writes multiple radio registers starting at address |
GregCr | 0:03ec2f3bde8c | 251 | * |
GregCr | 0:03ec2f3bde8c | 252 | * \param [in] address First Radio register address |
GregCr | 0:03ec2f3bde8c | 253 | * \param [in] buffer Buffer containing the new register's values |
GregCr | 0:03ec2f3bde8c | 254 | * \param [in] size Number of registers to be written |
GregCr | 0:03ec2f3bde8c | 255 | */ |
GregCr | 0:03ec2f3bde8c | 256 | virtual void WriteRegister( uint16_t address, uint8_t *buffer, uint16_t size ) = 0; |
GregCr | 0:03ec2f3bde8c | 257 | |
GregCr | 0:03ec2f3bde8c | 258 | /*! |
GregCr | 0:03ec2f3bde8c | 259 | * \brief Writes the radio register at the specified address |
GregCr | 0:03ec2f3bde8c | 260 | * |
GregCr | 0:03ec2f3bde8c | 261 | * \param [in] address Register address |
GregCr | 0:03ec2f3bde8c | 262 | * \param [in] value New register value |
GregCr | 0:03ec2f3bde8c | 263 | */ |
GregCr | 0:03ec2f3bde8c | 264 | virtual void WriteRegister( uint16_t address, uint8_t value ) = 0; |
GregCr | 0:03ec2f3bde8c | 265 | |
GregCr | 0:03ec2f3bde8c | 266 | /*! |
GregCr | 0:03ec2f3bde8c | 267 | * \brief Reads multiple radio registers starting at address |
GregCr | 0:03ec2f3bde8c | 268 | * |
GregCr | 0:03ec2f3bde8c | 269 | * \param [in] address First Radio register address |
GregCr | 0:03ec2f3bde8c | 270 | * \param [out] buffer Buffer where to copy the registers data |
GregCr | 0:03ec2f3bde8c | 271 | * \param [in] size Number of registers to be read |
GregCr | 0:03ec2f3bde8c | 272 | */ |
GregCr | 0:03ec2f3bde8c | 273 | virtual void ReadRegister( uint16_t address, uint8_t *buffer, uint16_t size ) = 0; |
GregCr | 0:03ec2f3bde8c | 274 | |
GregCr | 0:03ec2f3bde8c | 275 | /*! |
GregCr | 0:03ec2f3bde8c | 276 | * \brief Reads the radio register at the specified address |
GregCr | 0:03ec2f3bde8c | 277 | * |
GregCr | 0:03ec2f3bde8c | 278 | * \param [in] address Register address |
GregCr | 0:03ec2f3bde8c | 279 | * |
GregCr | 0:03ec2f3bde8c | 280 | * \retval value The register value |
GregCr | 0:03ec2f3bde8c | 281 | */ |
GregCr | 0:03ec2f3bde8c | 282 | virtual uint8_t ReadRegister( uint16_t address ) = 0; |
GregCr | 0:03ec2f3bde8c | 283 | |
GregCr | 0:03ec2f3bde8c | 284 | /*! |
GregCr | 0:03ec2f3bde8c | 285 | * \brief Writes Radio Data Buffer with buffer of size starting at offset. |
GregCr | 0:03ec2f3bde8c | 286 | * |
GregCr | 0:03ec2f3bde8c | 287 | * \param [in] offset Offset where to start writing |
GregCr | 0:03ec2f3bde8c | 288 | * \param [in] buffer Buffer pointer |
GregCr | 0:03ec2f3bde8c | 289 | * \param [in] size Buffer size |
GregCr | 0:03ec2f3bde8c | 290 | */ |
GregCr | 0:03ec2f3bde8c | 291 | virtual void WriteBuffer( uint8_t offset, uint8_t *buffer, uint8_t size ) = 0; |
GregCr | 0:03ec2f3bde8c | 292 | |
GregCr | 0:03ec2f3bde8c | 293 | /*! |
GregCr | 0:03ec2f3bde8c | 294 | * \brief Reads Radio Data Buffer at offset to buffer of size |
GregCr | 0:03ec2f3bde8c | 295 | * |
GregCr | 0:03ec2f3bde8c | 296 | * \param [in] offset Offset where to start reading |
GregCr | 0:03ec2f3bde8c | 297 | * \param [out] buffer Buffer pointer |
GregCr | 0:03ec2f3bde8c | 298 | * \param [in] size Buffer size |
GregCr | 0:03ec2f3bde8c | 299 | */ |
GregCr | 0:03ec2f3bde8c | 300 | virtual void ReadBuffer( uint8_t offset, uint8_t *buffer, uint8_t size ) = 0; |
GregCr | 0:03ec2f3bde8c | 301 | |
GregCr | 0:03ec2f3bde8c | 302 | /*! |
GregCr | 0:03ec2f3bde8c | 303 | * \brief Return firmware version |
GregCr | 0:03ec2f3bde8c | 304 | * |
GregCr | 0:03ec2f3bde8c | 305 | * \retval firmware The firmware version |
GregCr | 0:03ec2f3bde8c | 306 | */ |
GregCr | 0:03ec2f3bde8c | 307 | virtual uint16_t GetFirmwareVersion( void ) = 0; |
GregCr | 0:03ec2f3bde8c | 308 | }; |
GregCr | 0:03ec2f3bde8c | 309 | |
GregCr | 0:03ec2f3bde8c | 310 | #endif // __RADIO_H__ |