diff --git a/mLRS/Common/rf_power.h b/mLRS/Common/rf_power.h index 1df4f0c43..11ed892e8 100644 --- a/mLRS/Common/rf_power.h +++ b/mLRS/Common/rf_power.h @@ -17,7 +17,7 @@ class tRfPower { public: - void Init(void); + void Init(bool _antenna1, bool _antenna2); void Update(void); void Set(tRcData* const rc, uint8_t power_switch_channel, uint8_t power); void Set(uint8_t power); @@ -25,13 +25,18 @@ class tRfPower private: uint8_t rfpower_current_idx; uint8_t rfpower_new_idx; + bool do_antenna1; + bool do_antenna2; }; -void tRfPower::Init(void) +void tRfPower::Init(bool _antenna1, bool _antenna2) { rfpower_current_idx = 0; rfpower_new_idx = rfpower_current_idx; // to prevent update before first Set + + do_antenna1 = _antenna1; + do_antenna2 = _antenna2; } @@ -49,8 +54,8 @@ void tRfPower::Update(void) Config.Sx.Power_dbm = rfpower_list[rfpower_current_idx].dbm; Config.Sx2.Power_dbm = Config.Sx.Power_dbm; - sx.UpdateRfPower(&Config.Sx); - sx2.UpdateRfPower(&Config.Sx2); + if (do_antenna1) sx.UpdateRfPower(&Config.Sx); + if (do_antenna2) sx2.UpdateRfPower(&Config.Sx2); } diff --git a/mLRS/CommonRx/mlrs-rx.cpp b/mLRS/CommonRx/mlrs-rx.cpp index c261fc89e..58c2af44b 100644 --- a/mLRS/CommonRx/mlrs-rx.cpp +++ b/mLRS/CommonRx/mlrs-rx.cpp @@ -550,7 +550,7 @@ RESTARTCONTROLLER bind.Init(); fhss.Init(&Config.Fhss, &Config.Fhss2); fhss.Start(); - rfpower.Init(); + rfpower.Init(TRANSMIT_USE_ANTENNA1, TRANSMIT_USE_ANTENNA2); sx.SetRfFrequency(fhss.GetCurrFreq()); sx2.SetRfFrequency(fhss.GetCurrFreq2()); diff --git a/mLRS/CommonTx/mbridge_interface.h b/mLRS/CommonTx/mbridge_interface.h index 867fbacbc..179813d42 100644 --- a/mLRS/CommonTx/mbridge_interface.h +++ b/mLRS/CommonTx/mbridge_interface.h @@ -569,8 +569,15 @@ tMBridgeInfo info = {}; info.tx_config_id = Config.ConfigId; - info.receiver_sensitivity = sx.ReceiverSensitivity_dbm(); // is equal for Tx and Rx - info.tx_actual_power_dbm = sx.RfPower_dbm(); + if (Config.TransmitUseAntenna1) { + info.receiver_sensitivity = sx.ReceiverSensitivity_dbm(); // is equal for Tx and Rx + info.tx_actual_power_dbm = sx.RfPower_dbm(); + } + else { + info.receiver_sensitivity = sx2.ReceiverSensitivity_dbm(); + info.tx_actual_power_dbm = sx2.RfPower_dbm(); + } + info.tx_actual_diversity = Config.Diversity; if (SetupMetaData.rx_available) { diff --git a/mLRS/CommonTx/mlrs-tx.cpp b/mLRS/CommonTx/mlrs-tx.cpp index 576357a9d..14d461c20 100644 --- a/mLRS/CommonTx/mlrs-tx.cpp +++ b/mLRS/CommonTx/mlrs-tx.cpp @@ -722,7 +722,7 @@ RESTARTCONTROLLER bind.Init(); fhss.Init(&Config.Fhss, &Config.Fhss2); fhss.Start(); - rfpower.Init(); + rfpower.Init(TRANSMIT_USE_ANTENNA1, TRANSMIT_USE_ANTENNA2); sx.SetRfFrequency(fhss.GetCurrFreq()); sx2.SetRfFrequency(fhss.GetCurrFreq2());