]> git.rkrishnan.org Git - pihpsdr.git/commitdiff
Included TX compressor on/off and level in the list of
authorc vw <dl1ycf@darc.de>
Thu, 3 Feb 2022 15:04:12 +0000 (16:04 +0100)
committerc vw <dl1ycf@darc.de>
Thu, 3 Feb 2022 15:04:12 +0000 (16:04 +0100)
settings "remembered by the mode".

actions.c
tx_menu.c
vfo.c
vfo.h

index 68257ceca8ebe7e43ec8c0cfa6f1a3ed1cc8f7c7..cc3bb55dd91adf1b79043aedd277a4f69ad4c46c 100644 (file)
--- a/actions.c
+++ b/actions.c
@@ -546,6 +546,7 @@ int process_action(void *data) {
     case COMP_ENABLE:
       if(can_transmit && a->mode==PRESSED) {
         transmitter_set_compressor(transmitter,transmitter->compressor?FALSE:TRUE);
+       mode_settings[transmitter->mode].compressor=transmitter->compressor;
       }
       break;
     case COMPRESSION:
@@ -553,6 +554,8 @@ int process_action(void *data) {
         value=KnobOrWheel(a, transmitter->compressor_level, 0.0, 20.0, 1.0);
         transmitter_set_compressor_level(transmitter,value);
         transmitter_set_compressor(transmitter, value > 0.5);
+       mode_settings[transmitter->mode].compressor=transmitter->compressor;
+       mode_settings[transmitter->mode].compressor_level=transmitter->compressor_level;
         g_idle_add(ext_vfo_update, NULL);
       }
       break;
index 0d7d36ee7e6de2b3fcf615e99df920efb4f5f6d9..acd75b0e5b79580fa004ea73e8278fc7374994af 100644 (file)
--- a/tx_menu.c
+++ b/tx_menu.c
@@ -61,12 +61,14 @@ static gboolean delete_event(GtkWidget *widget, GdkEvent *event, gpointer user_d
 }
 
 static void comp_enable_cb(GtkWidget *widget, gpointer data) {
-  transmitter->compressor=gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
+  transmitter_set_compressor(transmitter,gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)));
+  mode_settings[transmitter->mode].compressor=transmitter->compressor;
   g_idle_add(ext_vfo_update, NULL);
 }
 
 static void comp_cb(GtkWidget *widget, gpointer data) {
   transmitter_set_compressor_level(transmitter,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget)));
+  mode_settings[transmitter->mode].compressor_level=transmitter->compressor_level;
   g_idle_add(ext_vfo_update, NULL);
 }
 
diff --git a/vfo.c b/vfo.c
index 67dcf87e822dd9b9e964353246743913db6a3d8d..acab8982160e10a89f35026f1768ba1f6327329c 100644 (file)
--- a/vfo.c
+++ b/vfo.c
@@ -147,6 +147,12 @@ void modesettings_save_state() {
     sprintf(name,"modeset.%d.step", i);
     sprintf(value,"%lld", mode_settings[i].step);
     setProperty(name,value);
+    sprintf(name,"modeset.%d.compressor_level", i);
+    sprintf(value,"%f", mode_settings[i].compressor_level);
+    setProperty(name,value);
+    sprintf(name,"modeset.%d.compressor", i);
+    sprintf(value,"%d", mode_settings[i].compressor);
+    setProperty(name,value);
   }
 }
 
@@ -176,6 +182,8 @@ void modesettings_restore_state() {
     mode_settings[i].rxeq[2]=0;
     mode_settings[i].rxeq[3]=0;
     mode_settings[i].step=100;
+    mode_settings[i].compressor=0;
+    mode_settings[i].compressor_level=0.0;
 
     sprintf(name,"modeset.%d.filter",i);
     value=getProperty(name);
@@ -231,6 +239,12 @@ void modesettings_restore_state() {
     sprintf(name,"modeset.%d.step",i);
     value=getProperty(name);
     if(value) mode_settings[i].step=atoll(value);
+    sprintf(name,"modeset.%d.compressor_level",i);
+    value=getProperty(name);
+    if (value) mode_settings[i].compressor_level=atof(value);
+    sprintf(name,"modeset.%d.compressor",i);
+    value=getProperty(name);
+    if (value) mode_settings[i].compressor=atoi(value);
   }
 }
 
@@ -357,28 +371,37 @@ void vfo_apply_mode_settings(int 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;
-
-  // make changes effective
+  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      );
+
+  //
+  // Note that the caller invokes receiver_vfo_changed and tx_vfo_changed
+  // *after* we have changed the settings
+  //
+  // make changes effective and put them on the VFO display
+  //
   g_idle_add(ext_update_noise, NULL);
   g_idle_add(ext_update_eq   , NULL);
+  g_idle_add(ext_vfo_update  , NULL);
 
 }
 
diff --git a/vfo.h b/vfo.h
index ae9695e78c15c40187628239f97f35798c513c09..859eab7e5630edf99522a4f1c86bb8691f57a113 100644 (file)
--- a/vfo.h
+++ b/vfo.h
@@ -56,18 +56,20 @@ extern struct _vfo vfo[MAX_VFOS];
 // all elements are "on/off"
 //
 struct _mode_settings {
-  int filter;
-  int nb;            // Noise blanker #1
-  int nb2;           // Noise blanker #2
-  int nr;            // Noise reduction #1
-  int nr2;           // Noise reduction #2
-  int anf;           // Automatic notch filter
-  int snb;           // Spectral noise blanker
-  int en_txeq;       // TX equalizer on/off
-  int en_rxeq;       // RX equalizer on/off
-  int txeq[4];       // TX equalizer settings
-  int rxeq[4];       // RX equalizer settings
-  long long step;    // VFO step size
+  int filter;               // actual filter used
+  int nb;                   // Noise blanker #1
+  int nb2;                  // Noise blanker #2
+  int nr;                   // Noise reduction #1
+  int nr2;                  // Noise reduction #2
+  int anf;                  // Automatic notch filter
+  int snb;                  // Spectral noise blanker
+  int en_txeq;              // TX equalizer on/off
+  int en_rxeq;              // RX equalizer on/off
+  int txeq[4];              // TX equalizer settings
+  int rxeq[4];              // RX equalizer settings
+  long long step;           // VFO step size
+  int compressor;           // TX compressor on/off
+  double compressor_level;  // TX compressor level
 };
 
 extern struct _mode_settings mode_settings[];