Driver for the SX1280 RF Transceiver
Dependents: SX1280PingPong RangignMaster RangingSlave MSNV2-Terminal_V1-6 ... more
Diff: sx1280.cpp
- 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 ) )