Driver for the SX1276 RF Transceiver

Dependents:   LoRa_PIR LoRaWAN-lmic-app SX1276PingPong LoRaWAN-lmic-app ... more

Revision:
18:99c6e44c1672
Parent:
16:d447f8d2d2d6
Child:
19:71a47bb03fbb
diff -r d447f8d2d2d6 -r 99c6e44c1672 sx1276/sx1276.cpp
--- a/sx1276/sx1276.cpp	Tue Mar 31 13:35:04 2015 +0000
+++ b/sx1276/sx1276.cpp	Fri Jul 10 14:24:45 2015 +0000
@@ -1050,42 +1050,45 @@
             switch( this->settings.Modem )
             {
             case MODEM_FSK:
-                irqFlags = Read( REG_IRQFLAGS2 );
-                if( ( irqFlags & RF_IRQFLAGS2_CRCOK ) != RF_IRQFLAGS2_CRCOK )
+                if( this->settings.Fsk.CrcOn == true )
                 {
-                    // Clear Irqs
-                    Write( REG_IRQFLAGS1, RF_IRQFLAGS1_RSSI | 
-                                                RF_IRQFLAGS1_PREAMBLEDETECT |
-                                                RF_IRQFLAGS1_SYNCADDRESSMATCH );
-                    Write( REG_IRQFLAGS2, RF_IRQFLAGS2_FIFOOVERRUN );
-
-                    if( this->settings.Fsk.RxContinuous == false )
+                    irqFlags = Read( REG_IRQFLAGS2 );
+                    if( ( irqFlags & RF_IRQFLAGS2_CRCOK ) != RF_IRQFLAGS2_CRCOK )
                     {
-                        this->settings.State = IDLE;
-                        rxTimeoutSyncWord.attach_us( this, &SX1276::OnTimeoutIrq, (  8.0 * ( this->settings.Fsk.PreambleLen +
-                                                         ( ( Read( REG_SYNCCONFIG ) &
-                                                            ~RF_SYNCCONFIG_SYNCSIZE_MASK ) +
-                                                         1.0 ) + 1.0 ) /
-                                                        ( double )this->settings.Fsk.Datarate ) * 1e6 ) ;
+                        // Clear Irqs
+                        Write( REG_IRQFLAGS1, RF_IRQFLAGS1_RSSI | 
+                                                    RF_IRQFLAGS1_PREAMBLEDETECT |
+                                                    RF_IRQFLAGS1_SYNCADDRESSMATCH );
+                        Write( REG_IRQFLAGS2, RF_IRQFLAGS2_FIFOOVERRUN );
+    
+                        if( this->settings.Fsk.RxContinuous == false )
+                        {
+                            this->settings.State = IDLE;
+                            rxTimeoutSyncWord.attach_us( this, &SX1276::OnTimeoutIrq, (  8.0 * ( this->settings.Fsk.PreambleLen +
+                                                             ( ( Read( REG_SYNCCONFIG ) &
+                                                                ~RF_SYNCCONFIG_SYNCSIZE_MASK ) +
+                                                             1.0 ) + 1.0 ) /
+                                                            ( double )this->settings.Fsk.Datarate ) * 1e6 ) ;
+                        }
+                        else
+                        {
+                            // Continuous mode restart Rx chain
+                            Write( REG_RXCONFIG, Read( REG_RXCONFIG ) | RF_RXCONFIG_RESTARTRXWITHOUTPLLLOCK );
+                        }
+                        rxTimeoutTimer.detach( );
+    
+                        if( ( rxError != NULL ) )
+                        {
+                            rxError( ); 
+                        }
+                        this->settings.FskPacketHandler.PreambleDetected = false;
+                        this->settings.FskPacketHandler.SyncWordDetected = false;
+                        this->settings.FskPacketHandler.NbBytes = 0;
+                        this->settings.FskPacketHandler.Size = 0;
+                        break;
                     }
-                    else
-                    {
-                        // Continuous mode restart Rx chain
-                        Write( REG_RXCONFIG, Read( REG_RXCONFIG ) | RF_RXCONFIG_RESTARTRXWITHOUTPLLLOCK );
-                    }
-                    rxTimeoutTimer.detach( );
-
-                    if( ( rxError != NULL ) )
-                    {
-                        rxError( ); 
-                    }
-                    this->settings.FskPacketHandler.PreambleDetected = false;
-                    this->settings.FskPacketHandler.SyncWordDetected = false;
-                    this->settings.FskPacketHandler.NbBytes = 0;
-                    this->settings.FskPacketHandler.Size = 0;
-                    break;
                 }
-
+                
                 // Read received packet size
                 if( ( this->settings.FskPacketHandler.Size == 0 ) && ( this->settings.FskPacketHandler.NbBytes == 0 ) )
                 {