Driver for the SX1280 RF Transceiver

Dependents:   SX1280PingPong RangignMaster RangingSlave MSNV2-Terminal_V1-6 ... more

Revision:
12:c4f110f3fe3e
Parent:
11:d60df50e108f
--- a/sx1280.cpp	Wed Jul 18 08:48:34 2018 +0000
+++ b/sx1280.cpp	Thu Nov 08 10:08:44 2018 +0000
@@ -694,6 +694,40 @@
     }
 }
 
+void SX1280::EnableManualGain( void )
+{
+    this->WriteRegister( REG_ENABLE_MANUAL_GAIN_CONTROL, this->ReadRegister( REG_ENABLE_MANUAL_GAIN_CONTROL ) | MASK_MANUAL_GAIN_CONTROL );
+    this->WriteRegister( REG_DEMOD_DETECTION, this->ReadRegister( REG_DEMOD_DETECTION ) & MASK_DEMOD_DETECTION );
+}
+
+void SX1280::DisableManualGain( void )
+{
+    this->WriteRegister( REG_ENABLE_MANUAL_GAIN_CONTROL, this->ReadRegister( REG_ENABLE_MANUAL_GAIN_CONTROL ) & (~MASK_MANUAL_GAIN_CONTROL) );
+    this->WriteRegister( REG_DEMOD_DETECTION, this->ReadRegister( REG_DEMOD_DETECTION ) | (~MASK_DEMOD_DETECTION) );
+}
+
+void SX1280::SetManualGainValue( uint8_t gain )
+{
+    this->WriteRegister( REG_MANUAL_GAIN_VALUE, ( this->ReadRegister( REG_MANUAL_GAIN_VALUE ) & MASK_MANUAL_GAIN_VALUE ) | gain );
+}
+
+void SX1280::SetLNAGainSetting( const RadioLnaSettings_t lnaSetting )
+{
+    switch(lnaSetting)
+    {
+        case LNA_HIGH_SENSITIVITY_MODE:
+        {
+            this->WriteRegister( REG_LNA_REGIME, this->ReadRegister( REG_LNA_REGIME ) | MASK_LNA_REGIME );
+            break;
+        }
+        case LNA_LOW_POWER_MODE:
+        {
+            this->WriteRegister( REG_LNA_REGIME, this->ReadRegister( REG_LNA_REGIME ) & ~MASK_LNA_REGIME );
+            break;
+        }
+    }
+}
+
 void SX1280::SetRangingIdLength( RadioRangingIdCheckLengths_t length )
 {
     switch( GetPacketType( true ) )
@@ -775,6 +809,14 @@
     return val;
 }
 
+uint8_t SX1280::GetRangingPowerDeltaThresholdIndicator( void )
+{
+    SetStandby( STDBY_XOSC );
+    WriteRegister( 0x97F, ReadRegister( 0x97F ) | ( 1 << 1 ) ); // enable LoRa modem clock
+    WriteRegister( REG_LR_RANGINGRESULTCONFIG, ( ReadRegister( REG_LR_RANGINGRESULTCONFIG ) & MASK_RANGINGMUXSEL ) | ( ( ( ( uint8_t )RANGING_RESULT_RAW ) & 0x03 ) << 4 ) ); // Select raw results
+    return ReadRegister( REG_RANGING_RSSI );
+}
+
 void SX1280::SetRangingCalibration( uint16_t cal )
 {
     switch( GetPacketType( true ) )