nimita naik
/
SX1262PingPong
ping pong with modifiable parameters
Diff: main.cpp
- Revision:
- 3:c704345b0c9f
- Parent:
- 2:2bedac9faed3
- Child:
- 4:99bfe3b61a6a
--- a/main.cpp Thu Jun 13 20:31:55 2019 +0000 +++ b/main.cpp Wed Jun 19 16:25:56 2019 +0000 @@ -34,7 +34,7 @@ /*! * \brief Defines the nominal frequency */ -#define RF_FREQUENCY 868000000 // Hz +#define RF_FREQUENCY 350000000 // Hz /*! * \brief Defines the output power in dBm @@ -115,21 +115,6 @@ */ void OnRxError( IrqErrorCode_t ); -/*! - * \brief All the callbacks are stored in a structure - */ -//RadioCallbacks_t callbacks = -//{ -// &OnTxDone, // txDone -// &OnRxDone, // rxDone -// NULL, // syncWordDone -// NULL, // headerDone -// &OnTxTimeout, // txTimeout -// &OnRxTimeout, // rxTimeout -// NULL, // rxError -// NULL, // rangingDone -// NULL, // cadDone -//}; RadioCallbacks_t callbacks = { @@ -145,12 +130,8 @@ }; // mosi, miso, sclk, nss, busy, dio1, dio2, dio3, rst, callbacks... -//SX126xHal Radio( D11, D12, D13, D7, D3, D5, NC, NC, A0, &callbacks ); SX126xHal Radio( D11, D12, D13, D7, D3, D5, NC, NC, A0, A1, A2, D8, &callbacks ); -//SX126xHal Radio(&callbacks ); - - DigitalOut ANT_SW( A3 ); DigitalOut TxLed( A4 ); @@ -165,17 +146,12 @@ /*! * \brief Number of tick size steps for tx timeout */ -#define TX_TIMEOUT_VALUE 100 // ms +#define TX_TIMEOUT_VALUE 0xFFFF // ms /*! * \brief Number of tick size steps for rx timeout */ -#define RX_TIMEOUT_VALUE 100 // ms - -/*! - * \brief Size of ticks (used for Tx and Rx timeout) - */ -#define RX_TIMEOUT_TICK_SIZE 0x02 +#define RX_TIMEOUT_VALUE 0xFFFF // ms /*! * \brief Mask of IRQs to listen to in rx mode @@ -251,19 +227,14 @@ Radio.SetBufferBaseAddresses( 0x00, 0x00 ); Radio.SetTxParams( TX_OUTPUT_POWER, RADIO_RAMP_20_US ); - // only used in GENERIC and BLE mode -// Radio.SetSyncWord( 1, ( uint8_t[] ){ 0xDD, 0xA0, 0x96, 0x69, 0xDD } ); - RxLed = 0; TxLed = 0; Radio.SetDioIrqParams( RxIrqMask, RxIrqMask, IRQ_RADIO_NONE, IRQ_RADIO_NONE ); - Radio.SetRx( RX_TIMEOUT_TICK_SIZE*RX_TIMEOUT_VALUE ); + Radio.SetRx( RX_TIMEOUT_VALUE ); AppState = APP_LOWPOWER; Radio.ProcessIrqs( ); - - printf( "\nLora initialized\n\r"); while( 1 ) { @@ -273,7 +244,6 @@ case APP_RX: AppState = APP_LOWPOWER; RxLed = !RxLed; - printf("Hi\n"); Radio.GetPayload( Buffer, &BufferSize, BUFFER_SIZE ); printf("\n%s\n", Buffer); if( isMaster == true ) @@ -285,7 +255,7 @@ printf( "...Pong\r\n" ); memcpy( Buffer, PingMsg, PINGPONGSIZE ); Radio.SetDioIrqParams( TxIrqMask, TxIrqMask, IRQ_RADIO_NONE, IRQ_RADIO_NONE ); - Radio.SendPayload( Buffer, BufferSize, (RX_TIMEOUT_TICK_SIZE*TX_TIMEOUT_VALUE)); + Radio.SendPayload( Buffer, BufferSize, (TX_TIMEOUT_VALUE)); } else if( strncmp( ( const char* )Buffer, ( const char* )PingMsg, PINGPONGSIZE ) == 0 ) { @@ -294,13 +264,13 @@ isMaster = false; memcpy( Buffer, PongMsg, PINGPONGSIZE ); Radio.SetDioIrqParams( TxIrqMask, TxIrqMask, IRQ_RADIO_NONE, IRQ_RADIO_NONE ); - Radio.SendPayload( Buffer, BufferSize, RX_TIMEOUT_TICK_SIZE*TX_TIMEOUT_VALUE ); + Radio.SendPayload( Buffer, BufferSize, TX_TIMEOUT_VALUE ); } else // valid reception but neither a PING or a PONG message { // Set device as master ans start again isMaster = true; Radio.SetDioIrqParams( RxIrqMask, RxIrqMask, IRQ_RADIO_NONE, IRQ_RADIO_NONE ); - Radio.SetRx(RX_TIMEOUT_TICK_SIZE* RX_TIMEOUT_VALUE ); + Radio.SetRx(RX_TIMEOUT_VALUE ); } } } @@ -313,13 +283,13 @@ printf( "...Ping\r\n" ); memcpy( Buffer, PongMsg, 4 ); Radio.SetDioIrqParams( TxIrqMask, TxIrqMask, IRQ_RADIO_NONE, IRQ_RADIO_NONE ); - Radio.SendPayload( Buffer, BufferSize, RX_TIMEOUT_TICK_SIZE* TX_TIMEOUT_VALUE ); + Radio.SendPayload( Buffer, BufferSize, TX_TIMEOUT_VALUE ); } else // valid reception but not a PING as expected { isMaster = true; Radio.SetDioIrqParams( RxIrqMask, RxIrqMask, IRQ_RADIO_NONE, IRQ_RADIO_NONE ); - Radio.SetRx( RX_TIMEOUT_TICK_SIZE*RX_TIMEOUT_VALUE); + Radio.SetRx(RX_TIMEOUT_VALUE); } } } @@ -337,7 +307,7 @@ printf( "Pong...\r\n" ); } Radio.SetDioIrqParams( RxIrqMask, RxIrqMask, IRQ_RADIO_NONE, IRQ_RADIO_NONE ); - Radio.SetRx(RX_TIMEOUT_TICK_SIZE* RX_TIMEOUT_VALUE ); + Radio.SetRx(RX_TIMEOUT_VALUE ); break; case APP_RX_TIMEOUT: @@ -347,12 +317,12 @@ // Send the next PING frame memcpy( Buffer, PingMsg, PINGPONGSIZE ); Radio.SetDioIrqParams( TxIrqMask, TxIrqMask, IRQ_RADIO_NONE, IRQ_RADIO_NONE ); - Radio.SendPayload( Buffer, BufferSize,RX_TIMEOUT_TICK_SIZE* TX_TIMEOUT_VALUE ); + Radio.SendPayload( Buffer, BufferSize, TX_TIMEOUT_VALUE ); } else { Radio.SetDioIrqParams( RxIrqMask, RxIrqMask, IRQ_RADIO_NONE, IRQ_RADIO_NONE ); - Radio.SetRx( RX_TIMEOUT_TICK_SIZE * RX_TIMEOUT_VALUE ); + Radio.SetRx( RX_TIMEOUT_VALUE ); } break; @@ -364,21 +334,21 @@ // Send the next PING frame memcpy( Buffer, PingMsg, PINGPONGSIZE ); Radio.SetDioIrqParams( TxIrqMask, TxIrqMask, IRQ_RADIO_NONE, IRQ_RADIO_NONE ); - Radio.SendPayload( Buffer, BufferSize, RX_TIMEOUT_TICK_SIZE *TX_TIMEOUT_VALUE); + Radio.SendPayload( Buffer, BufferSize, TX_TIMEOUT_VALUE); } else { // Send the next PONG frame memcpy( Buffer, PongMsg, PINGPONGSIZE ); Radio.SetDioIrqParams( TxIrqMask, TxIrqMask, IRQ_RADIO_NONE, IRQ_RADIO_NONE ); - Radio.SendPayload( Buffer, BufferSize, RX_TIMEOUT_TICK_SIZE* TX_TIMEOUT_VALUE ); + Radio.SendPayload( Buffer, BufferSize, TX_TIMEOUT_VALUE ); } break; case APP_TX_TIMEOUT: AppState = APP_LOWPOWER; Radio.SetDioIrqParams( RxIrqMask, RxIrqMask, IRQ_RADIO_NONE, IRQ_RADIO_NONE ); - Radio.SetRx( RX_TIMEOUT_TICK_SIZE* RX_TIMEOUT_VALUE ); + Radio.SetRx( RX_TIMEOUT_VALUE ); break; case APP_LOWPOWER: @@ -398,16 +368,12 @@ void OnRxDone( void ) { - AppState = APP_RX;/* + AppState = APP_RX; + PacketStatus_t packetStatus; Radio.GetPacketStatus(&packetStatus); -#if ( defined( MODE_BLE ) || defined( MODE_GENERIC ) ) - RssiValue = packetStatus.Ble.RssiSync; - printf("rssi: %d\n\r", RssiValue); -#elif defined( MODE_LORA ) - RssiValue = packetStatus.Lr24.RssiPkt; - SnrValue = packetStatus.Lr24.SnrPkt; + RssiValue = packetStatus.Params.LoRa.RssiPkt; + SnrValue = packetStatus.Params.LoRa.SnrPkt; printf("rssi: %d; snr: %d\n\r", RssiValue, SnrValue ); -#endif*/ } void OnTxTimeout( void )