Fork of the Simple Ping-Pong demo application between two SX1272MB2xAs demo board. It's now a simple application demonstrating simple Rx (Receive) from a SX1272 boards.

Dependencies:   SX1272Lib mbed

Fork of SX1272PingPong by Semtech

Revision:
15:dc867bef95d9
Parent:
14:6c312f8635fe
Child:
17:c44bd9aea979
--- a/main.cpp	Mon Mar 13 09:35:55 2017 +0000
+++ b/main.cpp	Mon Mar 13 09:54:09 2017 +0000
@@ -8,20 +8,19 @@
 
 
 #define RF_FREQUENCY                                868000000 // Hz
-#define TX_OUTPUT_POWER                             14        // 14 dBm
 
 #define LORA_BANDWIDTH                              2         // [0: 125 kHz,
-                                                              //  1: 250 kHz,
-                                                              //  2: 500 kHz,
-                                                              //  3: Reserved]
-                                                              
+//  1: 250 kHz,
+//  2: 500 kHz,
+//  3: Reserved]
+
 #define LORA_SPREADING_FACTOR                       7         // [SF7..SF12]
 #define LORA_CODINGRATE                             1         // [1: 4/5,
-                                                              //  2: 4/6,
-                                                              //  3: 4/7,
-                                                              //  4: 4/8]
-                              
-#define LORA_PREAMBLE_LENGTH                        8         // Same for Tx and Rx
+//  2: 4/6,
+//  3: 4/7,
+//  4: 4/8]
+
+#define LORA_PREAMBLE_LENGTH                        8
 #define LORA_SYMBOL_TIMEOUT                         5         // Symbols
 #define LORA_FIX_LENGTH_PAYLOAD_ON                  false
 #define LORA_FHSS_ENABLED                           false
@@ -45,9 +44,6 @@
     RX_TIMEOUT,
     RX_ERROR,
 
-    TX,
-    TX_TIMEOUT,
-
     CAD,
     CAD_DONE
 } AppStates_t;
@@ -64,9 +60,6 @@
  */
 SX1272MB2xAS Radio( NULL );
 
-const uint8_t PingMsg[] = "PING";
-const uint8_t PongMsg[] = "PONG";
-
 uint16_t BufferSize = BUFFER_SIZE;
 uint8_t Buffer[BUFFER_SIZE];
 
@@ -80,10 +73,8 @@
     debug( "\n\n\r     iGreenhouse Application \n\n\r" );
 
     // Initialize Radio driver
-    RadioEvents.TxDone = OnTxDone;
     RadioEvents.RxDone = OnRxDone;
     RadioEvents.RxError = OnRxError;
-    RadioEvents.TxTimeout = OnTxTimeout;
     RadioEvents.RxTimeout = OnRxTimeout;
     Radio.Init( &RadioEvents );
 
@@ -101,12 +92,6 @@
     debug_if( LORA_FHSS_ENABLED, "\n\n\r             > LORA FHSS Mode < \n\n\r");
     debug_if( !LORA_FHSS_ENABLED, "\n\n\r             > LORA Mode < \n\n\r");
 
-    Radio.SetTxConfig( MODEM_LORA, TX_OUTPUT_POWER, 0, LORA_BANDWIDTH,
-                       LORA_SPREADING_FACTOR, LORA_CODINGRATE,
-                       LORA_PREAMBLE_LENGTH, LORA_FIX_LENGTH_PAYLOAD_ON,
-                       LORA_CRC_ENABLED, LORA_FHSS_ENABLED, LORA_NB_SYMB_HOP,
-                       LORA_IQ_INVERSION_ON, 2000000 );
-
     Radio.SetRxConfig( MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR,
                        LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH,
                        LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON, 0,
@@ -123,49 +108,24 @@
     while( 1 ) {
         switch( State ) {
             case RX:
-                    if( BufferSize > 0 ) {
-                        if( strncmp( ( const char* )Buffer, ( const char* )PingMsg, 4 ) == 0 ) {
-                            led = !led;
-                            debug( "...Ping\r\n" );
-                            // Send the reply to the PING string
-                            strcpy( ( char* )Buffer, ( char* )PongMsg );
-                            // We fill the buffer with numbers for the payload
-                            for( i = 4; i < BufferSize; i++ ) {
-                                Buffer[i] = i - 4;
-                            }
-                            wait_ms( 10 );
-                            Radio.Send( Buffer, BufferSize );
-                        } else { // valid reception but not a PING as expected
-                            // Set device as master and start again
-                            isMaster = true;
-                            Radio.Rx( RX_TIMEOUT_VALUE );
-                        }
-                    }
+                if( BufferSize > 0 ) {
+                    debug("\r\n========\r\nNew Packet\r\n========\r\n");
+                    debug("%s \r\n", Buffer);
+                    /*if( strncmp( ( const char* )Buffer, ( const char* )PingMsg, 4 ) == 0 ) {
+                        led = !led;
+                        debug( "...Ping\r\n" );
+                    } else { // valid reception but not a PING as expected, let start again
+                        Radio.Rx( RX_TIMEOUT_VALUE );
+                    }*/
+                }
                 State = LOWPOWER;
                 break;
-            case TX:
-                led = !led;
-                    debug( "Pong...\r\n" );
+            case RX_TIMEOUT:
                 Radio.Rx( RX_TIMEOUT_VALUE );
                 State = LOWPOWER;
                 break;
-            case RX_TIMEOUT:
-                    Radio.Rx( RX_TIMEOUT_VALUE );
-                State = LOWPOWER;
-                break;
             case RX_ERROR:
-                // We have received a Packet with a CRC error, send reply as if packet was correct
-                    // Send the next PONG frame
-                    strcpy( ( char* )Buffer, ( char* )PongMsg );
-                    for( i = 4; i < BufferSize; i++ ) {
-                        Buffer[i] = i - 4;
-                    }
-                    wait_ms( 10 );
-                    Radio.Send( Buffer, BufferSize );
-                State = LOWPOWER;
-                break;
-            case TX_TIMEOUT:
-                Radio.Rx( RX_TIMEOUT_VALUE );
+                // We have received a Packet with a CRC error
                 State = LOWPOWER;
                 break;
             case LOWPOWER:
@@ -177,13 +137,6 @@
     }
 }
 
-void OnTxDone( void )
-{
-    Radio.Sleep( );
-    State = TX;
-    debug_if( DEBUG_MESSAGE, "> OnTxDone\n\r" );
-}
-
 void OnRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr)
 {
     Radio.Sleep( );
@@ -195,13 +148,6 @@
     debug_if( DEBUG_MESSAGE, "> OnRxDone\n\r" );
 }
 
-void OnTxTimeout( void )
-{
-    Radio.Sleep( );
-    State = TX_TIMEOUT;
-    debug_if( DEBUG_MESSAGE, "> OnTxTimeout\n\r" );
-}
-
 void OnRxTimeout( void )
 {
     Radio.Sleep( );