]> git.rkrishnan.org Git - pihpsdr.git/commitdiff
Do not "apply mode settings" for the second RX when in single-RX mode.
authorc vw <dl1ycf@darc.de>
Tue, 22 Feb 2022 14:07:21 +0000 (15:07 +0100)
committerc vw <dl1ycf@darc.de>
Tue, 22 Feb 2022 14:07:21 +0000 (15:07 +0100)
vfo.c

diff --git a/vfo.c b/vfo.c
index acab8982160e10a89f35026f1768ba1f6327329c..f0c359655471ae32c72a9e9960aaeca807ebc299 100644 (file)
--- 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