From 37eece54ee0feb65467bef5e3d17393766770186 Mon Sep 17 00:00:00 2001 From: c vw Date: Thu, 3 Feb 2022 16:04:12 +0100 Subject: [PATCH] Included TX compressor on/off and level in the list of settings "remembered by the mode". --- actions.c | 3 +++ tx_menu.c | 4 +++- vfo.c | 63 +++++++++++++++++++++++++++++++++++++------------------ vfo.h | 26 ++++++++++++----------- 4 files changed, 63 insertions(+), 33 deletions(-) diff --git a/actions.c b/actions.c index 68257ce..cc3bb55 100644 --- 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; diff --git a/tx_menu.c b/tx_menu.c index 0d7d36e..acd75b0 100644 --- 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 67dcf87..acab898 100644 --- 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 ae9695e..859eab7 100644 --- 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[]; -- 2.45.2