Transmit only code for SX1262 LoRa experiments

Dependencies:   mbed SX126xLib

Committer:
adwaitnd
Date:
Thu Jul 16 02:18:22 2020 +0000
Revision:
3:1d624648c88e
Parent:
2:46047d562278
continuous transmit only sample for SX1262

Who changed what in which revision?

UserRevisionLine numberNew contents of line
adwaitnd 2:46047d562278 1 /*!
adwaitnd 2:46047d562278 2 * \file main_pingpong.cpp
adwaitnd 2:46047d562278 3 *
adwaitnd 2:46047d562278 4 * \brief Ping implementation
adwaitnd 2:46047d562278 5 *
adwaitnd 2:46047d562278 6 * \copyright Revised BSD License, see section \ref LICENSE.
adwaitnd 2:46047d562278 7 *
adwaitnd 2:46047d562278 8 * \code
adwaitnd 2:46047d562278 9 * - Changed to be transmit only code
adwaitnd 2:46047d562278 10 * ______ _
adwaitnd 2:46047d562278 11 * / _____) _ | |
adwaitnd 2:46047d562278 12 * ( (____ _____ ____ _| |_ _____ ____| |__
adwaitnd 2:46047d562278 13 * \____ \| ___ | (_ _) ___ |/ ___) _ \
adwaitnd 2:46047d562278 14 * _____) ) ____| | | || |_| ____( (___| | | |
adwaitnd 2:46047d562278 15 * (______/|_____)_|_|_| \__)_____)\____)_| |_|
adwaitnd 2:46047d562278 16 * (C)2013-2018 Semtech
adwaitnd 2:46047d562278 17 *
adwaitnd 2:46047d562278 18 * \endcode
adwaitnd 2:46047d562278 19 *
adwaitnd 2:46047d562278 20 */
adwaitnd 2:46047d562278 21
adwaitnd 2:46047d562278 22 #include "mbed.h"
adwaitnd 2:46047d562278 23 #include "sx126x-hal.h"
adwaitnd 2:46047d562278 24 #include "sx126x.h"
adwaitnd 2:46047d562278 25 //#include "debug.h"
adwaitnd 2:46047d562278 26
adwaitnd 2:46047d562278 27 #define SEND_PING_BEAT_US 300000
adwaitnd 2:46047d562278 28 #define RX_TIMEOUT_US 200000
adwaitnd 2:46047d562278 29
adwaitnd 2:46047d562278 30 /* Set this flag to '1' to display debug messages on the console */
adwaitnd 2:46047d562278 31 #define DEBUG_MESSAGE 1
adwaitnd 2:46047d562278 32
adwaitnd 2:46047d562278 33 /* Set this flag to '1' to use the LoRa modulation or to '0' to use FSK modulation */
adwaitnd 2:46047d562278 34 #define USE_MODEM_LORA 1
adwaitnd 2:46047d562278 35 #define USE_MODEM_FSK !USE_MODEM_LORA
adwaitnd 2:46047d562278 36
adwaitnd 3:1d624648c88e 37 #define RF_FREQUENCY 434000000 // Hz
adwaitnd 3:1d624648c88e 38 #define TX_OUTPUT_POWER 10 // max 14 dBm
adwaitnd 2:46047d562278 39
adwaitnd 2:46047d562278 40 #if USE_MODEM_LORA == 1
adwaitnd 2:46047d562278 41
adwaitnd 2:46047d562278 42 #define LORA_BANDWIDTH LORA_BW_125 // [0: 125 kHz,
adwaitnd 2:46047d562278 43 // 1: 250 kHz,
adwaitnd 2:46047d562278 44 // 2: 500 kHz,
adwaitnd 2:46047d562278 45 // 3: Reserved]
adwaitnd 3:1d624648c88e 46 #define LORA_SPREADING_FACTOR LORA_SF10 // [SF7..SF12]
adwaitnd 2:46047d562278 47 #define LORA_LOWDATARATEOPTIMIZE 0
adwaitnd 2:46047d562278 48 #define LORA_CODINGRATE LORA_CR_4_5 // [1: 4/5,
adwaitnd 2:46047d562278 49 // 2: 4/6,
adwaitnd 2:46047d562278 50 // 3: 4/7,
adwaitnd 2:46047d562278 51 // 4: 4/8]
adwaitnd 2:46047d562278 52 #define LORA_PREAMBLE_LENGTH 8 // Same for Tx and Rx
adwaitnd 2:46047d562278 53 #define LORA_SYMBOL_TIMEOUT 5 // Symbols
adwaitnd 2:46047d562278 54 #define LORA_HEADER_TYPE LORA_PACKET_VARIABLE_LENGTH
adwaitnd 2:46047d562278 55 #define LORA_FHSS_ENABLED false
adwaitnd 2:46047d562278 56 #define LORA_NB_SYMB_HOP 4
adwaitnd 2:46047d562278 57 #define LORA_IQ LORA_IQ_NORMAL
adwaitnd 2:46047d562278 58 #define LORA_CRC_MODE LORA_CRC_OFF
adwaitnd 2:46047d562278 59
adwaitnd 2:46047d562278 60 #elif USE_MODEM_FSK == 1
adwaitnd 2:46047d562278 61
adwaitnd 2:46047d562278 62 #define FSK_FDEV 25000 // Hz
adwaitnd 2:46047d562278 63 #define FSK_DATARATE 19200 // bps
adwaitnd 2:46047d562278 64 #define FSK_BANDWIDTH RX_BW_93800 // Hz
adwaitnd 2:46047d562278 65 #define FSK_MODULATION_SHAPPING MOD_SHAPING_G_BT_05
adwaitnd 2:46047d562278 66 #define FSK_PREAMBLE_LENGTH 5 // Same for Tx and Rx
adwaitnd 2:46047d562278 67 #define FSK_HEADER_TYPE RADIO_PACKET_VARIABLE_LENGTH
adwaitnd 2:46047d562278 68 #define FSK_CRC_MODE RADIO_CRC_2_BYTES_CCIT
adwaitnd 2:46047d562278 69 #define FSK_ADDR_FILTERING RADIO_ADDRESSCOMP_FILT_NODE;
adwaitnd 2:46047d562278 70 #define FSK_WHITENING_MODE RADIO_DC_FREE_OFF
adwaitnd 2:46047d562278 71 #define FSK_PREAMBLE_DETECTOR_MODE RADIO_PREAMBLE_DETECTOR_OFF
adwaitnd 2:46047d562278 72 #define FSK_SYNCWORD_LENGTH 8
adwaitnd 2:46047d562278 73 #else
adwaitnd 2:46047d562278 74 #error "Please define a modem in the compiler options."
adwaitnd 2:46047d562278 75 #endif
adwaitnd 2:46047d562278 76
adwaitnd 2:46047d562278 77 #define RX_TIMEOUT_VALUE 3500 // in ms
adwaitnd 2:46047d562278 78 #define BUFFER_SIZE 32 // Define the payload size here
adwaitnd 2:46047d562278 79
adwaitnd 2:46047d562278 80 #if( defined ( TARGET_KL25Z ) || defined ( TARGET_LPC11U6X ) )
adwaitnd 2:46047d562278 81 DigitalOut led( LED2 );
adwaitnd 2:46047d562278 82 #else
adwaitnd 2:46047d562278 83 DigitalOut led( LED1 );
adwaitnd 2:46047d562278 84 #endif
adwaitnd 2:46047d562278 85
adwaitnd 2:46047d562278 86 //DigitalOut led1( LED1 );
adwaitnd 2:46047d562278 87 //DigitalOut led2( LED2 );
adwaitnd 2:46047d562278 88
adwaitnd 2:46047d562278 89 /*
adwaitnd 2:46047d562278 90 * Callback functions prototypes
adwaitnd 2:46047d562278 91 */
adwaitnd 2:46047d562278 92 /*!
adwaitnd 2:46047d562278 93 * @brief Function to be executed on Radio Tx Done event
adwaitnd 2:46047d562278 94 */
adwaitnd 2:46047d562278 95 void OnTxDone( void );
adwaitnd 2:46047d562278 96
adwaitnd 2:46047d562278 97 /*!
adwaitnd 2:46047d562278 98 * @brief Function to be executed on Radio Rx Done event
adwaitnd 2:46047d562278 99 */
adwaitnd 2:46047d562278 100 void OnRxDone( void );
adwaitnd 2:46047d562278 101
adwaitnd 2:46047d562278 102 /*!
adwaitnd 2:46047d562278 103 * @brief Function executed on Radio Tx Timeout event
adwaitnd 2:46047d562278 104 */
adwaitnd 2:46047d562278 105 void OnTxTimeout( void );
adwaitnd 2:46047d562278 106
adwaitnd 2:46047d562278 107 /*!
adwaitnd 2:46047d562278 108 * @brief Function executed on Radio Rx Timeout event
adwaitnd 2:46047d562278 109 */
adwaitnd 2:46047d562278 110 void OnRxTimeout( void );
adwaitnd 2:46047d562278 111
adwaitnd 2:46047d562278 112 /*!
adwaitnd 2:46047d562278 113 * @brief Function executed on Radio Rx Error event
adwaitnd 2:46047d562278 114 */
adwaitnd 2:46047d562278 115 void OnRxError( IrqErrorCode_t errCode );
adwaitnd 2:46047d562278 116
adwaitnd 2:46047d562278 117 /*!
adwaitnd 2:46047d562278 118 * @brief Function executed on Radio Fhss Change Channel event
adwaitnd 2:46047d562278 119 */
adwaitnd 2:46047d562278 120 void OnFhssChangeChannel( uint8_t channelIndex );
adwaitnd 2:46047d562278 121
adwaitnd 2:46047d562278 122 typedef struct{
adwaitnd 2:46047d562278 123 RadioPacketTypes_t packetType;
adwaitnd 2:46047d562278 124 int8_t txPower;
adwaitnd 2:46047d562278 125 RadioRampTimes_t txRampTime;
adwaitnd 2:46047d562278 126 ModulationParams_t modParams;
adwaitnd 2:46047d562278 127 PacketParams_t packetParams;
adwaitnd 2:46047d562278 128 uint32_t rfFrequency;
adwaitnd 2:46047d562278 129 uint16_t irqTx;
adwaitnd 2:46047d562278 130 uint16_t irqRx;
adwaitnd 2:46047d562278 131 uint32_t txTimeout;
adwaitnd 2:46047d562278 132 uint32_t rxTimeout;
adwaitnd 2:46047d562278 133 }RadioConfigurations_t;
adwaitnd 2:46047d562278 134 RadioConfigurations_t radioConfiguration;
adwaitnd 2:46047d562278 135
adwaitnd 2:46047d562278 136 /*
adwaitnd 2:46047d562278 137 * Global variables declarations
adwaitnd 2:46047d562278 138 */
adwaitnd 2:46047d562278 139 typedef enum
adwaitnd 2:46047d562278 140 {
adwaitnd 2:46047d562278 141 SEND_PACKET,
adwaitnd 2:46047d562278 142 WAIT_SEND_DONE,
adwaitnd 2:46047d562278 143 }AppStates_t;
adwaitnd 2:46047d562278 144 volatile AppStates_t State = SEND_PACKET;
adwaitnd 2:46047d562278 145
adwaitnd 2:46047d562278 146 typedef struct{
adwaitnd 2:46047d562278 147 bool rxDone;
adwaitnd 2:46047d562278 148 bool rxError;
adwaitnd 2:46047d562278 149 bool txDone;
adwaitnd 2:46047d562278 150 bool rxTimeout;
adwaitnd 2:46047d562278 151 bool txTimeout;
adwaitnd 2:46047d562278 152 }RadioFlags_t;
adwaitnd 2:46047d562278 153 RadioFlags_t radioFlags = {
adwaitnd 2:46047d562278 154 .txDone = false,
adwaitnd 2:46047d562278 155 .txTimeout = false,
adwaitnd 2:46047d562278 156 };
adwaitnd 2:46047d562278 157
adwaitnd 2:46047d562278 158 /*!
adwaitnd 2:46047d562278 159 * Radio events function pointer
adwaitnd 2:46047d562278 160 */
adwaitnd 2:46047d562278 161 static RadioCallbacks_t RadioEvents = {
adwaitnd 2:46047d562278 162 .txDone = &OnTxDone,
adwaitnd 2:46047d562278 163 .txTimeout = &OnTxTimeout,
adwaitnd 2:46047d562278 164 .rxDone = NULL,
adwaitnd 2:46047d562278 165 .rxPreambleDetect = NULL,
adwaitnd 2:46047d562278 166 .rxHeaderDone = NULL,
adwaitnd 2:46047d562278 167 .rxTimeout = NULL,
adwaitnd 2:46047d562278 168 .rxError = NULL,
adwaitnd 2:46047d562278 169 .cadDone = NULL,
adwaitnd 2:46047d562278 170 };
adwaitnd 2:46047d562278 171
adwaitnd 2:46047d562278 172 /*
adwaitnd 2:46047d562278 173 * Global variables declarations
adwaitnd 2:46047d562278 174 */
adwaitnd 2:46047d562278 175 //Radio Radio( NULL );
adwaitnd 2:46047d562278 176 #define MESSAGE_SIZE 4
adwaitnd 2:46047d562278 177 typedef uint8_t Messages_t[MESSAGE_SIZE];
adwaitnd 2:46047d562278 178 const Messages_t PingMsg = {'P', 'I', 'N', 'G'};
adwaitnd 2:46047d562278 179 const Messages_t *messageToSend = &PingMsg;
adwaitnd 2:46047d562278 180
adwaitnd 2:46047d562278 181 SX126xHal Radio( D11, D12, D13, D7, D3, D5, NC, NC, A0, A1, A2, D8, &RadioEvents );
adwaitnd 2:46047d562278 182
adwaitnd 2:46047d562278 183 void SetToMaster(void);
adwaitnd 2:46047d562278 184 void RunTXStateMachine();
adwaitnd 2:46047d562278 185 void SetConfiguration(RadioConfigurations_t *config);
adwaitnd 2:46047d562278 186 void ConfigureGeneralRadio(SX126xHal *radio, RadioConfigurations_t *config);
adwaitnd 2:46047d562278 187 void ConfigureRadioTx(SX126xHal *radio, RadioConfigurations_t *config);
adwaitnd 2:46047d562278 188 void PrepareBuffer(SX126xHal *radio, const Messages_t *messageToSend);
adwaitnd 2:46047d562278 189 bool proceed = true;
adwaitnd 2:46047d562278 190 uint32_t count = 0;
adwaitnd 2:46047d562278 191
adwaitnd 2:46047d562278 192 // function to run
adwaitnd 2:46047d562278 193 void MasterSendNextEvent(void)
adwaitnd 2:46047d562278 194 {
adwaitnd 2:46047d562278 195 proceed = true;
adwaitnd 2:46047d562278 196 }
adwaitnd 2:46047d562278 197
adwaitnd 2:46047d562278 198 Ticker masterSendNextTicker;
adwaitnd 2:46047d562278 199
adwaitnd 2:46047d562278 200 Serial serial(USBTX, USBRX);
adwaitnd 2:46047d562278 201
adwaitnd 2:46047d562278 202 int main( void )
adwaitnd 2:46047d562278 203 {
adwaitnd 2:46047d562278 204 Radio.Reset();
adwaitnd 2:46047d562278 205 Radio.Init();
adwaitnd 2:46047d562278 206 serial.baud(115200);
adwaitnd 2:46047d562278 207 SetConfiguration(&radioConfiguration);
adwaitnd 2:46047d562278 208 ConfigureGeneralRadio(&Radio, &radioConfiguration);
adwaitnd 2:46047d562278 209
adwaitnd 2:46047d562278 210 // initialize transmitter
adwaitnd 2:46047d562278 211 printf("-->TX mode\n");
adwaitnd 2:46047d562278 212 State = SEND_PACKET;
adwaitnd 2:46047d562278 213 messageToSend = &PingMsg;
adwaitnd 2:46047d562278 214 masterSendNextTicker.attach_us(&MasterSendNextEvent, SEND_PING_BEAT_US);
adwaitnd 2:46047d562278 215 while(true){
adwaitnd 2:46047d562278 216 RunTXStateMachine();
adwaitnd 2:46047d562278 217 }
adwaitnd 2:46047d562278 218 }
adwaitnd 2:46047d562278 219
adwaitnd 2:46047d562278 220 // let's keep the state machine because waiting for transmission to be done
adwaitnd 2:46047d562278 221 // will take multiple instances of the state machine running. We could use a
adwaitnd 2:46047d562278 222 // for loop, but the state machine seems g
adwaitnd 2:46047d562278 223 void RunTXStateMachine(){
adwaitnd 2:46047d562278 224 switch(State){
adwaitnd 2:46047d562278 225 case SEND_PACKET:{
adwaitnd 2:46047d562278 226 if (proceed == true) {
adwaitnd 2:46047d562278 227 // wait for timer to say it's fine to proceed with transmission
adwaitnd 2:46047d562278 228 proceed = false;
adwaitnd 2:46047d562278 229 count++;
adwaitnd 2:46047d562278 230 PrepareBuffer(&Radio, messageToSend);
adwaitnd 2:46047d562278 231 ConfigureRadioTx(&Radio, &radioConfiguration);
adwaitnd 2:46047d562278 232 Radio.SetTx(radioConfiguration.txTimeout);
adwaitnd 2:46047d562278 233 printf("%u: TX", count);
adwaitnd 2:46047d562278 234 State = WAIT_SEND_DONE;
adwaitnd 2:46047d562278 235 }
adwaitnd 2:46047d562278 236 break;
adwaitnd 2:46047d562278 237 }
adwaitnd 2:46047d562278 238
adwaitnd 2:46047d562278 239 case WAIT_SEND_DONE:{
adwaitnd 2:46047d562278 240 if(radioFlags.txDone){
adwaitnd 2:46047d562278 241 // transmission successful, wait
adwaitnd 2:46047d562278 242 radioFlags.txDone = false; // reset interrupted flag
adwaitnd 2:46047d562278 243 printf(" done\r\n");
adwaitnd 2:46047d562278 244 State = SEND_PACKET;
adwaitnd 2:46047d562278 245 }
adwaitnd 2:46047d562278 246 if(radioFlags.txTimeout){
adwaitnd 2:46047d562278 247 // transmission failed, try again!
adwaitnd 2:46047d562278 248 radioFlags.txTimeout = false; // reset interrupted flag
adwaitnd 2:46047d562278 249 printf(" err\r\n");
adwaitnd 2:46047d562278 250 State = SEND_PACKET;
adwaitnd 2:46047d562278 251 }
adwaitnd 2:46047d562278 252 break;
adwaitnd 2:46047d562278 253 }
adwaitnd 2:46047d562278 254 }
adwaitnd 2:46047d562278 255 }
adwaitnd 2:46047d562278 256
adwaitnd 2:46047d562278 257
adwaitnd 2:46047d562278 258 // Interrupt handler functions - Adwait
adwaitnd 2:46047d562278 259
adwaitnd 2:46047d562278 260 void SetToMaster(){
adwaitnd 2:46047d562278 261
adwaitnd 2:46047d562278 262 }
adwaitnd 2:46047d562278 263
adwaitnd 2:46047d562278 264 void OnTxDone( void )
adwaitnd 2:46047d562278 265 {
adwaitnd 2:46047d562278 266 radioFlags.txDone = true;
adwaitnd 2:46047d562278 267 }
adwaitnd 2:46047d562278 268
adwaitnd 2:46047d562278 269 void OnTxTimeout( void )
adwaitnd 2:46047d562278 270 {
adwaitnd 2:46047d562278 271 radioFlags.txTimeout = true;
adwaitnd 2:46047d562278 272 debug_if( DEBUG_MESSAGE, "> OnTxTimeout\n\r" );
adwaitnd 2:46047d562278 273 }
adwaitnd 2:46047d562278 274
adwaitnd 2:46047d562278 275 // Other helper functions - Adwait
adwaitnd 2:46047d562278 276
adwaitnd 2:46047d562278 277 void SetConfiguration(RadioConfigurations_t *config){
adwaitnd 2:46047d562278 278 config->irqRx = IRQ_RX_DONE | IRQ_RX_TX_TIMEOUT;
adwaitnd 2:46047d562278 279 config->irqTx = IRQ_TX_DONE | IRQ_RX_TX_TIMEOUT;
adwaitnd 2:46047d562278 280 config->rfFrequency = RF_FREQUENCY;
adwaitnd 2:46047d562278 281 config->txTimeout = 0;
adwaitnd 2:46047d562278 282 config->rxTimeout = (uint32_t)(RX_TIMEOUT_US / 15.625);
adwaitnd 2:46047d562278 283 config->txPower = TX_OUTPUT_POWER;
adwaitnd 2:46047d562278 284 config->txRampTime = RADIO_RAMP_200_US;
adwaitnd 2:46047d562278 285 #if USE_MODEM_LORA == 1
adwaitnd 2:46047d562278 286 config->packetType = PACKET_TYPE_LORA;
adwaitnd 2:46047d562278 287 config->modParams.PacketType = PACKET_TYPE_LORA;
adwaitnd 2:46047d562278 288 config->modParams.Params.LoRa.Bandwidth = LORA_BANDWIDTH;
adwaitnd 2:46047d562278 289 config->modParams.Params.LoRa.CodingRate = LORA_CODINGRATE;
adwaitnd 2:46047d562278 290 config->modParams.Params.LoRa.LowDatarateOptimize = LORA_LOWDATARATEOPTIMIZE;
adwaitnd 2:46047d562278 291 config->modParams.Params.LoRa.SpreadingFactor = LORA_SPREADING_FACTOR;
adwaitnd 2:46047d562278 292 config->packetParams.PacketType = PACKET_TYPE_LORA;
adwaitnd 2:46047d562278 293 config->packetParams.Params.LoRa.CrcMode = LORA_CRC_MODE;
adwaitnd 2:46047d562278 294 config->packetParams.Params.LoRa.HeaderType = LORA_HEADER_TYPE;
adwaitnd 2:46047d562278 295 config->packetParams.Params.LoRa.InvertIQ = LORA_IQ;
adwaitnd 2:46047d562278 296 config->packetParams.Params.LoRa.PayloadLength = BUFFER_SIZE;
adwaitnd 2:46047d562278 297 config->packetParams.Params.LoRa.PreambleLength = LORA_PREAMBLE_LENGTH;
adwaitnd 2:46047d562278 298 #elif USE_MODEM_FSK == 1
adwaitnd 2:46047d562278 299 config->packetType = PACKET_TYPE_GFSK;
adwaitnd 2:46047d562278 300 config->modParams.PacketType = PACKET_TYPE_GFSK;
adwaitnd 2:46047d562278 301 config->modParams.Params.Gfsk.Bandwidth = FSK_BANDWIDTH;
adwaitnd 2:46047d562278 302 config->modParams.Params.Gfsk.BitRate = 1024000000 / FSK_DATARATE;
adwaitnd 2:46047d562278 303 config->modParams.Params.Gfsk.Fdev = FSK_FDEV * 1.048576;
adwaitnd 2:46047d562278 304 config->modParams.Params.Gfsk.ModulationShaping = FSK_MODULATION_SHAPPING;
adwaitnd 2:46047d562278 305 config->packetParams.PacketType = PACKET_TYPE_GFSK;
adwaitnd 2:46047d562278 306 config->packetParams.Params.Gfsk.AddrComp = FSK_ADDR_FILTERING;
adwaitnd 2:46047d562278 307 config->packetParams.Params.Gfsk.CrcLength = FSK_CRC_MODE;
adwaitnd 2:46047d562278 308 config->packetParams.Params.Gfsk.DcFree = FSK_WHITENING_MODE;
adwaitnd 2:46047d562278 309 config->packetParams.Params.Gfsk.HeaderType = FSK_HEADER_TYPE;
adwaitnd 2:46047d562278 310 config->packetParams.Params.Gfsk.PayloadLength = BUFFER_SIZE;
adwaitnd 2:46047d562278 311 config->packetParams.Params.Gfsk.PreambleLength = FSK_PREAMBLE_LENGTH;
adwaitnd 2:46047d562278 312 config->packetParams.Params.Gfsk.PreambleMinDetect = FSK_PREAMBLE_DETECTOR_MODE;
adwaitnd 2:46047d562278 313 config->packetParams.Params.Gfsk.SyncWordLength = FSK_SYNCWORD_LENGTH;
adwaitnd 2:46047d562278 314 #endif
adwaitnd 2:46047d562278 315 }
adwaitnd 2:46047d562278 316
adwaitnd 2:46047d562278 317 void ConfigureGeneralRadio(SX126xHal *radio, RadioConfigurations_t *config){
adwaitnd 2:46047d562278 318 radio->SetPacketType(config->packetType);
adwaitnd 2:46047d562278 319 radio->SetPacketParams(&config->packetParams);
adwaitnd 2:46047d562278 320 radio->SetModulationParams(&config->modParams);
adwaitnd 2:46047d562278 321 radio->SetRfFrequency(config->rfFrequency);
adwaitnd 2:46047d562278 322 radio->SetTxParams(config->txPower, config->txRampTime);
adwaitnd 2:46047d562278 323 radio->SetInterruptMode();
adwaitnd 2:46047d562278 324 if(config->packetType == PACKET_TYPE_GFSK){
adwaitnd 2:46047d562278 325 uint8_t syncword[8] = {0xF0, 0x0F, 0x55, 0xAA, 0xF0, 0x0F, 0x55, 0xAA};
adwaitnd 2:46047d562278 326 radio->SetSyncWord(syncword);
adwaitnd 2:46047d562278 327 }
adwaitnd 2:46047d562278 328 }
adwaitnd 2:46047d562278 329
adwaitnd 2:46047d562278 330 void ConfigureRadioTx(SX126xHal *radio, RadioConfigurations_t *config){
adwaitnd 2:46047d562278 331 radio->SetDioIrqParams(config->irqTx, config->irqTx, IRQ_RADIO_NONE, IRQ_RADIO_NONE);
adwaitnd 2:46047d562278 332 }
adwaitnd 2:46047d562278 333
adwaitnd 2:46047d562278 334 void PrepareBuffer(SX126xHal *radio, const Messages_t *messageToSend){
adwaitnd 2:46047d562278 335 radio->SetPayload((uint8_t*)messageToSend, MESSAGE_SIZE);
adwaitnd 2:46047d562278 336 }