Based on SX1276Lib. Simplified and targeted for Modtronix inAir modules. All pins can now be specified to use interrupts or general purpose I/O pins.
Diff: inair.cpp
- Revision:
- 5:1a255cc8d54a
- Parent:
- 4:0086deec9cac
- Child:
- 6:d542b5a44d5a
--- a/inair.cpp Thu Sep 17 11:22:51 2015 +1000 +++ b/inair.cpp Thu Sep 17 16:51:47 2015 +1000 @@ -1270,8 +1270,6 @@ #endif //#if (INAIR_ENABLE_FSK==1) case MODEM_LORA: { - uint8_t snr = 0; - // Clear Irq Write( REG_LR_IRQFLAGS, RFLR_IRQFLAGS_RXDONE ); @@ -1285,7 +1283,6 @@ { this->settings.State = IDLE; } - //MODTRONIX BEGIN ///////////////////////////////////////// // For Continuous reception, we remain in Receive mode. Delete current packet! // - RegFifoAddrPtr = FIFO Pointer used for SPI instructions. // - RegFifoRxByteAddr = Address of last byte written to FIFO + 1 = Start address of next receive packet @@ -1295,7 +1292,6 @@ //Set SPI pointer to address of next packet we will receive = delete current packet! Write(REG_LR_FIFOADDRPTR, startAddNxtPckt); } - //MODTRONIX END /////////////////////////////////////////// rxTimeoutTimer.detach( ); if( ( rxError != NULL ) ) @@ -1306,47 +1302,36 @@ } this->settings.LoRaPacketHandler.SnrValue = Read( REG_LR_PKTSNRVALUE ); - if( this->settings.LoRaPacketHandler.SnrValue & 0x80 ) // The SNR sign bit is 1 - { - // Invert and divide by 4 - snr = ( ( ~this->settings.LoRaPacketHandler.SnrValue + 1 ) & 0xFF ) >> 2; - snr = -snr; - } - else - { - // Divide by 4 - snr = ( this->settings.LoRaPacketHandler.SnrValue & 0xFF ) >> 2; - } int16_t rssi = Read( REG_LR_PKTRSSIVALUE ); if( this->settings.LoRaPacketHandler.SnrValue < 0 ) { if( this->settings.Channel > RF_MID_BAND_THRESH ) { - this->settings.LoRaPacketHandler.RssiValue = RSSI_OFFSET_HF + rssi + ( rssi >> 4 ) + - snr; + this->settings.LoRaPacketHandler.RssiValue = RSSI_OFFSET_HF; } else { - this->settings.LoRaPacketHandler.RssiValue = RSSI_OFFSET_LF + rssi + ( rssi >> 4 ) + - snr; + this->settings.LoRaPacketHandler.RssiValue = RSSI_OFFSET_LF; } + this->settings.LoRaPacketHandler.RssiValue += rssi + ( rssi >> 4 ) + + (this->settings.LoRaPacketHandler.SnrValue / 4); } else { if( this->settings.Channel > RF_MID_BAND_THRESH ) { - this->settings.LoRaPacketHandler.RssiValue = RSSI_OFFSET_HF + rssi + ( rssi >> 4 ); + this->settings.LoRaPacketHandler.RssiValue = RSSI_OFFSET_HF; } else { - this->settings.LoRaPacketHandler.RssiValue = RSSI_OFFSET_LF + rssi + ( rssi >> 4 ); + this->settings.LoRaPacketHandler.RssiValue = RSSI_OFFSET_LF; } + this->settings.LoRaPacketHandler.RssiValue += rssi + ( rssi >> 4 ); } this->settings.LoRaPacketHandler.Size = Read( REG_LR_RXNBBYTES ); - //MODTRONIX BEGIN ///////////////////////////////////////// //Debug Output: // - RegRxNbBytes = Nb bytes RXed // - RegFifoAddrPtr = FIFO Pointer used for SPI instructions. @@ -1362,7 +1347,6 @@ //Ensure we read the last packet received. Without doing this, the bytes read can get out of sync //with the last packet received after errors occur! Write(REG_LR_FIFOADDRPTR, Read(REG_LR_FIFORXCURRENTADDR)); - //MODTRONIX END /////////////////////////////////////////// ReadFifo( rxBuffer, this->settings.LoRaPacketHandler.Size ); if( this->settings.LoRa.RxContinuous == false )