From e8d957658476ac4adc5ac621a4c6dc54773edc8c Mon Sep 17 00:00:00 2001 From: c vw Date: Tue, 22 Feb 2022 15:07:21 +0100 Subject: [PATCH] Do not "apply mode settings" for the second RX when in single-RX mode. --- vfo.c | 65 +++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 36 insertions(+), 29 deletions(-) diff --git a/vfo.c b/vfo.c index acab898..f0c3596 100644 --- a/vfo.c +++ b/vfo.c @@ -366,36 +366,40 @@ void vfo_xvtr_changed() { } } -void vfo_apply_mode_settings(int id) { - int m; +void vfo_apply_mode_settings(RECEIVER *rx) { + int id,m; + id=rx->id; m=vfo[id].mode; - vfo[id].filter = mode_settings[m].filter; - active_receiver->nr = mode_settings[m].nr; - active_receiver->nr2 = mode_settings[m].nr2; - active_receiver->nb = mode_settings[m].nb; - active_receiver->nb2 = mode_settings[m].nb2; - active_receiver->anf = mode_settings[m].anf; - active_receiver->snb = mode_settings[m].snb; - enable_rx_equalizer = mode_settings[m].en_rxeq; - rx_equalizer[0] = mode_settings[m].rxeq[0]; - rx_equalizer[1] = mode_settings[m].rxeq[1]; - rx_equalizer[2] = mode_settings[m].rxeq[2]; - rx_equalizer[3] = mode_settings[m].rxeq[3]; - enable_tx_equalizer = mode_settings[m].en_txeq; - tx_equalizer[0] = mode_settings[m].txeq[0]; - tx_equalizer[1] = mode_settings[m].txeq[1]; - tx_equalizer[2] = mode_settings[m].txeq[2]; - tx_equalizer[3] = mode_settings[m].txeq[3]; - step = mode_settings[m].step; - - transmitter_set_compressor_level(transmitter, mode_settings[m].compressor_level); - transmitter_set_compressor (transmitter, mode_settings[m].compressor ); + vfo[id].filter = mode_settings[m].filter; + rx->nr = mode_settings[m].nr; + rx->nr2 = mode_settings[m].nr2; + rx->nb = mode_settings[m].nb; + rx->nb2 = mode_settings[m].nb2; + rx->anf = mode_settings[m].anf; + rx->snb = mode_settings[m].snb; + enable_rx_equalizer = mode_settings[m].en_rxeq; + rx_equalizer[0] = mode_settings[m].rxeq[0]; + rx_equalizer[1] = mode_settings[m].rxeq[1]; + rx_equalizer[2] = mode_settings[m].rxeq[2]; + rx_equalizer[3] = mode_settings[m].rxeq[3]; + step = mode_settings[m].step; // - // Note that the caller invokes receiver_vfo_changed and tx_vfo_changed - // *after* we have changed the settings + // Transmitter-specific settings are only changed if this VFO + // controls the TX + // + if ((id == get_tx_vfo()) && can_transmit) { + enable_tx_equalizer = mode_settings[m].en_txeq; + tx_equalizer[0] = mode_settings[m].txeq[0]; + tx_equalizer[1] = mode_settings[m].txeq[1]; + tx_equalizer[2] = mode_settings[m].txeq[2]; + tx_equalizer[3] = mode_settings[m].txeq[3]; + + transmitter_set_compressor_level(transmitter, mode_settings[m].compressor_level); + transmitter_set_compressor (transmitter, mode_settings[m].compressor ); + } // // make changes effective and put them on the VFO display // @@ -438,8 +442,6 @@ void vfo_band_changed(int id,int b) { vfo[id].mode=entry->mode; vfo[id].lo=band->frequencyLO+band->errorLO; - vfo_apply_mode_settings(id); - // turn off ctun vfo[id].ctun=0; vfo[id].ctun_frequency=0LL; @@ -450,10 +452,12 @@ void vfo_band_changed(int id,int b) { switch(id) { case 0: bandstack->current_entry=vfo[id].bandstack; + vfo_apply_mode_settings(receiver[0]); receiver_vfo_changed(receiver[0]); break; case 1: if(receivers==2) { + vfo_apply_mode_settings(receiver[1]); receiver_vfo_changed(receiver[1]); } break; @@ -489,10 +493,12 @@ void vfo_bandstack_changed(int b) { switch(id) { case 0: bandstack->current_entry=vfo[id].bandstack; + vfo_apply_mode_settings(receiver[0]); receiver_vfo_changed(receiver[0]); break; case 1: if(receivers==2) { + vfo_apply_mode_settings(receiver[1]); receiver_vfo_changed(receiver[1]); } break; @@ -512,15 +518,16 @@ void vfo_mode_changed(int m) { #endif vfo[id].mode=m; - vfo_apply_mode_settings(id); switch(id) { case 0: + vfo_apply_mode_settings(receiver[0]); receiver_mode_changed(receiver[0]); receiver_filter_changed(receiver[0]); break; case 1: if(receivers==2) { + vfo_apply_mode_settings(receiver[1]); receiver_mode_changed(receiver[1]); receiver_filter_changed(receiver[1]); } @@ -600,7 +607,7 @@ void vfo_b_to_a() { vfo[VFO_A].rit=vfo[VFO_B].rit; vfo[VFO_A].lo=vfo[VFO_B].lo; vfo[VFO_A].offset=vfo[VFO_B].offset; - + receiver_vfo_changed(receiver[0]); tx_vfo_changed(); set_alex_antennas(); // This includes scheduling hiprio and general packets -- 2.45.2