ping pong with modifiable parameters

Dependencies:   mbed SX126xLib

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 )