]> git.rkrishnan.org Git - pihpsdr.git/commitdiff
fixed NR2 problem - AE Filter not set. Added DSP tab to Menu dialog. Toolbar improvements
authorJohn Melton g0orx/n6lyt <john.d.melton@googlemail.com>
Wed, 20 Apr 2016 11:04:18 +0000 (11:04 +0000)
committerJohn Melton g0orx/n6lyt <john.d.melton@googlemail.com>
Wed, 20 Apr 2016 11:04:18 +0000 (11:04 +0000)
gpio.c
menu.c
old_protocol.c
pihpsdr
radio.c
radio.h
release/pihpsdr.tar
release/pihpsdr/pihpsdr
toolbar.c
toolbar.h
wdsp_init.c

diff --git a/gpio.c b/gpio.c
index 6ddf73802e2542c761aea1d26a18a509e5cb8df3..efadf09b7a646ab8490f598db3d75008436c8c0a 100644 (file)
--- a/gpio.c
+++ b/gpio.c
@@ -899,6 +899,9 @@ static int bandstack_pressed(void *data) {
 static int function_pressed(void *data) {
 fprintf(stderr,"function_pressed\n");
   function=function==1?0:1;
+  if(display_toolbar && toolbar_simulate_buttons) {
+    update_toolbar();
+  }
   vfo_update(NULL);
   return 0;
 }
diff --git a/menu.c b/menu.c
index 21a33170d7b66840743c5aaa52e14639c018bdf9..6b8a3ca6bb942d46cf290a473274733537ad73aa 100644 (file)
--- a/menu.c
+++ b/menu.c
@@ -209,6 +209,38 @@ static gboolean exit_pressed_event_cb (GtkWidget *widget,
   _exit(0);
 }
 
+static gboolean reboot_pressed_event_cb (GtkWidget *widget,
+               GdkEventButton *event,
+               gpointer        data)
+{
+#ifdef INCLUDE_GPIO
+  gpio_close();
+#endif
+  if(protocol==ORIGINAL_PROTOCOL) {
+    old_protocol_stop();
+  } else {
+    new_protocol_stop();
+  }
+  system("reboot");
+  _exit(0);
+}
+
+static gboolean shutdown_pressed_event_cb (GtkWidget *widget,
+               GdkEventButton *event,
+               gpointer        data)
+{
+#ifdef INCLUDE_GPIO
+  gpio_close();
+#endif
+  if(protocol==ORIGINAL_PROTOCOL) {
+    old_protocol_stop();
+  } else {
+    new_protocol_stop();
+  }
+  system("shutdown -h -P now");
+  _exit(0);
+}
+
 static void oc_rx_cb(GtkWidget *widget, gpointer data) {
   int b=((int)data)>>4;
   int oc=((int)data)&0xF;
@@ -269,8 +301,37 @@ static void frames_per_second_value_changed_cb(GtkWidget *widget, gpointer data)
   calculate_display_average();
 }
 
-static void oc_tune_time_cb(GtkWidget *widget, gpointer data) {
-  OCtune_time=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
+static void oc_full_tune_time_cb(GtkWidget *widget, gpointer data) {
+  OCfull_tune_time=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
+}
+
+static void oc_memory_tune_time_cb(GtkWidget *widget, gpointer data) {
+  OCmemory_tune_time=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
+}
+
+static void pre_post_agc_cb(GtkWidget *widget, gpointer data) {
+  nr_agc=(int)data;
+  SetRXAEMNRPosition(CHANNEL_RX0, nr_agc);
+
+}
+
+static void nr2_gain_cb(GtkWidget *widget, gpointer data) {
+  nr2_gain_method==(int)data;
+  SetRXAEMNRgainMethod(CHANNEL_RX0, nr2_gain_method);
+}
+
+static void nr2_npe_method_cb(GtkWidget *widget, gpointer data) {
+  nr2_npe_method=(int)data;
+  SetRXAEMNRnpeMethod(CHANNEL_RX0, nr2_npe_method);
+}
+
+static void ae_cb(GtkWidget *widget, gpointer data) {
+  if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) {
+    nr2_ae=1;
+  } else {
+    nr2_ae=0;
+  }
+  SetRXAEMNRaeRun(CHANNEL_RX0, nr2_ae);
 }
 
 static gboolean menu_pressed_event_cb (GtkWidget *widget,
@@ -568,6 +629,78 @@ static gboolean menu_pressed_event_cb (GtkWidget *widget,
 
 
 
+
+  GtkWidget *dsp_label=gtk_label_new("DSP");
+  GtkWidget *dsp_grid=gtk_grid_new();
+  gtk_grid_set_row_homogeneous(GTK_GRID(dsp_grid),TRUE);
+  gtk_grid_set_column_spacing (GTK_GRID(dsp_grid),10);
+
+  GtkWidget *pre_post_agc_label=gtk_label_new("NR/NR2/ANF");
+  //gtk_widget_override_font(pre_post_agc_label, pango_font_description_from_string("Arial 18"));
+  gtk_widget_show(pre_post_agc_label);
+  gtk_grid_attach(GTK_GRID(dsp_grid),pre_post_agc_label,0,0,1,1);
+
+  GtkWidget *pre_agc_b=gtk_radio_button_new_with_label(NULL,"Pre AGC");
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pre_agc_b),nr_agc==0);
+  gtk_widget_show(pre_agc_b);
+  gtk_grid_attach(GTK_GRID(dsp_grid),pre_agc_b,1,0,1,1);
+  g_signal_connect(pre_agc_b,"pressed",G_CALLBACK(pre_post_agc_cb),(gpointer *)0);
+
+  GtkWidget *post_agc_b=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(pre_agc_b),"Post AGC");
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (post_agc_b), nr_agc==1);
+  gtk_widget_show(post_agc_b);
+  gtk_grid_attach(GTK_GRID(dsp_grid),post_agc_b,2,0,1,1);
+  g_signal_connect(post_agc_b,"pressed",G_CALLBACK(pre_post_agc_cb),(gpointer *)1);
+
+  GtkWidget *nr2_gain_label=gtk_label_new("NR2 Gain Method");
+  //gtk_widget_override_font(nr2_gain_label, pango_font_description_from_string("Arial 18"));
+  gtk_widget_show(nr2_gain_label);
+  gtk_grid_attach(GTK_GRID(dsp_grid),nr2_gain_label,0,1,1,1);
+
+  GtkWidget *linear_b=gtk_radio_button_new_with_label(NULL,"Linear");
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (linear_b),nr2_gain_method==0);
+  gtk_widget_show(linear_b);
+  gtk_grid_attach(GTK_GRID(dsp_grid),linear_b,1,1,1,1);
+  g_signal_connect(linear_b,"pressed",G_CALLBACK(nr2_gain_cb),(gpointer *)0);
+
+  GtkWidget *log_b=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(linear_b),"Log");
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (log_b), nr2_gain_method==1);
+  gtk_widget_show(log_b);
+  gtk_grid_attach(GTK_GRID(dsp_grid),log_b,2,1,1,1);
+  g_signal_connect(log_b,"pressed",G_CALLBACK(nr2_gain_cb),(gpointer *)1);
+
+  GtkWidget *gamma_b=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(log_b),"Gamma");
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gamma_b), nr2_gain_method==2);
+  gtk_widget_show(gamma_b);
+  gtk_grid_attach(GTK_GRID(dsp_grid),gamma_b,3,1,1,1);
+  g_signal_connect(gamma_b,"pressed",G_CALLBACK(nr2_gain_cb),(gpointer *)2);
+
+  GtkWidget *nr2_npe_method_label=gtk_label_new("NR2 NPE Method");
+  //gtk_widget_override_font(nr2_npe_method_label, pango_font_description_from_string("Arial 18"));
+  gtk_widget_show(nr2_npe_method_label);
+  gtk_grid_attach(GTK_GRID(dsp_grid),nr2_npe_method_label,0,2,1,1);
+
+  GtkWidget *osms_b=gtk_radio_button_new_with_label(NULL,"OSMS");
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (osms_b),nr2_npe_method==0);
+  gtk_widget_show(osms_b);
+  gtk_grid_attach(GTK_GRID(dsp_grid),osms_b,1,2,1,1);
+  g_signal_connect(osms_b,"pressed",G_CALLBACK(nr2_npe_method_cb),(gpointer *)0);
+
+  GtkWidget *mmse_b=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(osms_b),"MMSE");
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (mmse_b), nr2_npe_method==1);
+  gtk_widget_show(mmse_b);
+  gtk_grid_attach(GTK_GRID(dsp_grid),mmse_b,2,2,1,1);
+  g_signal_connect(mmse_b,"pressed",G_CALLBACK(nr2_npe_method_cb),(gpointer *)1);
+
+  GtkWidget *ae_b=gtk_check_button_new_with_label("NR2 AE Filter");
+  //gtk_widget_override_font(ae_b, pango_font_description_from_string("Arial 18"));
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ae_b), nr2_ae);
+  gtk_widget_show(ae_b);
+  gtk_grid_attach(GTK_GRID(dsp_grid),ae_b,0,3,1,1);
+  g_signal_connect(ae_b,"toggled",G_CALLBACK(ae_cb),NULL);
+
+  id=gtk_notebook_append_page(GTK_NOTEBOOK(notebook),dsp_grid,dsp_label);
+
   GtkWidget *tx_label=gtk_label_new("PA Gain");
   GtkWidget *tx_grid=gtk_grid_new();
   gtk_grid_set_row_homogeneous(GTK_GRID(tx_grid),TRUE);
@@ -741,28 +874,44 @@ static gboolean menu_pressed_event_cb (GtkWidget *widget,
     GtkWidget *oc_tune_title=gtk_label_new(oc_id);
     //gtk_widget_override_font(oc_tune_title, pango_font_description_from_string("Arial 18"));
     gtk_widget_show(oc_tune_title);
-    gtk_grid_attach(GTK_GRID(oc_grid),oc_tune_title,18,j+2,1,1);
+    gtk_grid_attach(GTK_GRID(oc_grid),oc_tune_title,18,j,1,1);
 
     mask=0x01<<j;
     GtkWidget *oc_tune_b=gtk_check_button_new();
     //gtk_widget_override_font(oc_tune_b, pango_font_description_from_string("Arial 18"));
     gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (oc_tune_b), (OCtune&mask)==mask);
     gtk_widget_show(oc_tune_b);
-    gtk_grid_attach(GTK_GRID(oc_grid),oc_tune_b,19,j+2,1,1);
+    gtk_grid_attach(GTK_GRID(oc_grid),oc_tune_b,19,j,1,1);
     g_signal_connect(oc_tune_b,"toggled",G_CALLBACK(oc_tune_cb),(gpointer)j);
   }
 
-  GtkWidget *oc_tune_time_title=gtk_label_new("Tune Duration(ms):");
-  //gtk_widget_override_font(oc_tune_time_title, pango_font_description_from_string("Arial 18"));
-  gtk_widget_show(oc_tune_time_title);
-  gtk_grid_attach(GTK_GRID(oc_grid),oc_tune_time_title,18,j+2,2,1);
-
-  GtkWidget *oc_tune_time_b=gtk_spin_button_new_with_range(0.0,9999.0,1.0);
-  //gtk_widget_override_font(oc_tune_time_b, pango_font_description_from_string("Arial 18"));
-  gtk_spin_button_set_value(GTK_SPIN_BUTTON(oc_tune_time_b),(double)OCtune_time);
-  gtk_widget_show(oc_tune_time_b);
-  gtk_grid_attach(GTK_GRID(oc_grid),oc_tune_time_b,18,j+3,2,1);
-  g_signal_connect(oc_tune_time_b,"value_changed",G_CALLBACK(oc_tune_time_cb),NULL);
+  GtkWidget *oc_full_tune_time_title=gtk_label_new("Full Tune(ms):");
+  //gtk_widget_override_font(oc_full_tune_time_title, pango_font_description_from_string("Arial 18"));
+  gtk_widget_show(oc_full_tune_time_title);
+  gtk_grid_attach(GTK_GRID(oc_grid),oc_full_tune_time_title,18,j,2,1);
+  j++;
+
+  GtkWidget *oc_full_tune_time_b=gtk_spin_button_new_with_range(0.0,9999.0,1.0);
+  //gtk_widget_override_font(oc_full_tune_time_b, pango_font_description_from_string("Arial 18"));
+  gtk_spin_button_set_value(GTK_SPIN_BUTTON(oc_full_tune_time_b),(double)OCfull_tune_time);
+  gtk_widget_show(oc_full_tune_time_b);
+  gtk_grid_attach(GTK_GRID(oc_grid),oc_full_tune_time_b,18,j,2,1);
+  g_signal_connect(oc_full_tune_time_b,"value_changed",G_CALLBACK(oc_full_tune_time_cb),NULL);
+  j++;
+
+  GtkWidget *oc_memory_tune_time_title=gtk_label_new("Memory Tune(ms):");
+  //gtk_widget_override_font(oc_memory_tune_time_title, pango_font_description_from_string("Arial 18"));
+  gtk_widget_show(oc_memory_tune_time_title);
+  gtk_grid_attach(GTK_GRID(oc_grid),oc_memory_tune_time_title,18,j,2,1);
+  j++;
+
+  GtkWidget *oc_memory_tune_time_b=gtk_spin_button_new_with_range(0.0,9999.0,1.0);
+  //gtk_widget_override_font(oc_memory_tune_time_b, pango_font_description_from_string("Arial 18"));
+  gtk_spin_button_set_value(GTK_SPIN_BUTTON(oc_memory_tune_time_b),(double)OCmemory_tune_time);
+  gtk_widget_show(oc_memory_tune_time_b);
+  gtk_grid_attach(GTK_GRID(oc_grid),oc_memory_tune_time_b,18,j,2,1);
+  g_signal_connect(oc_memory_tune_time_b,"value_changed",G_CALLBACK(oc_memory_tune_time_cb),NULL);
+  j++;
 
   id=gtk_notebook_append_page(GTK_NOTEBOOK(notebook),oc_grid,oc_label);
 
@@ -770,11 +919,20 @@ static gboolean menu_pressed_event_cb (GtkWidget *widget,
   GtkWidget *exit_label=gtk_label_new("Exit");
   GtkWidget *exit_grid=gtk_grid_new();
   //gtk_grid_set_row_homogeneous(GTK_GRID(exit_grid),TRUE);
+  gtk_grid_set_row_spacing (GTK_GRID(exit_grid),20);
 
   GtkWidget *exit_button=gtk_button_new_with_label("Exit PiHPSDR");
   g_signal_connect (exit_button, "pressed", G_CALLBACK(exit_pressed_event_cb), NULL);
   gtk_grid_attach(GTK_GRID(exit_grid),exit_button,0,0,1,1);
 
+  GtkWidget *reboot_button=gtk_button_new_with_label("Reboot");
+  g_signal_connect (reboot_button, "pressed", G_CALLBACK(reboot_pressed_event_cb), NULL);
+  gtk_grid_attach(GTK_GRID(exit_grid),reboot_button,0,1,1,1);
+
+  GtkWidget *shutdown_button=gtk_button_new_with_label("Shutdown");
+  g_signal_connect (shutdown_button, "pressed", G_CALLBACK(shutdown_pressed_event_cb), NULL);
+  gtk_grid_attach(GTK_GRID(exit_grid),shutdown_button,0,2,1,1);
+
   id=gtk_notebook_append_page(GTK_NOTEBOOK(notebook),exit_grid,exit_label);
 
 
index a1b9b159ba548cd69fe12827733627a3968c4b81..203e8d67c3535d2f698182277d5dbdb65f7cd549 100644 (file)
@@ -575,7 +575,7 @@ void ozy_send_buffer() {
       if(isTransmitting()) {
         output_buffer[C2]|=band->OCtx;
         if(tune) {
-          if(OCtune_time!=0) {
+          if(OCmemory_tune_time!=0) {
             struct timeval te;
             gettimeofday(&te,NULL);
             long long now=te.tv_sec*1000LL+te.tv_usec/1000;
diff --git a/pihpsdr b/pihpsdr
index afdf957778c3f4b9a5bb48f9359d1779855f9851..d3c9f3c52b357e569eb208e9262bf9728f9cfd99 100755 (executable)
Binary files a/pihpsdr and b/pihpsdr differ
diff --git a/radio.c b/radio.c
index 23a493cf5dd22a6df6fc9a0a72a851d858a3df2d..62734dc41812472f9d8abbcacdb4d616aa34c033 100644 (file)
--- a/radio.c
+++ b/radio.c
@@ -99,6 +99,11 @@ int nb2=0;
 int anf=0;
 int snb=0;
 
+int nr_agc=0; // 0=pre AGC 1=post AGC
+int nr2_gain_method=2; // 0=Linear 1=Log 2=gamma
+int nr2_npe_method=0; // 0=OSMS 1=MMSE
+int nr2_ae=1; // 0=disable 1=enable
+
 int cwPitch=600;
 
 int tune_drive=6;
@@ -160,7 +165,8 @@ int tune;
 long long ddsFrequency=14250000;
 
 unsigned char OCtune=0;
-int OCtune_time=2800; // ms
+int OCfull_tune_time=2800; // ms
+int OCmemory_tune_time=550; // ms
 long long tune_timeout;
 
 void init_radio() {
@@ -200,10 +206,10 @@ fprintf(stderr,"setTune: protocol=%d\n", protocol);
   if(tune!=state) {
     tune=state;
     if(tune) {
-      if(OCtune_time!=0) {
+      if(OCmemory_tune_time!=0) {
         struct timeval te;
         gettimeofday(&te,NULL);
-        tune_timeout=(te.tv_sec*1000LL+te.tv_usec/1000)+(long long)OCtune_time;
+        tune_timeout=(te.tv_sec*1000LL+te.tv_usec/1000)+(long long)OCmemory_tune_time;
       }
     }
     if(protocol==NEW_PROTOCOL) {
@@ -366,6 +372,14 @@ void radioRestoreState() {
     if(value) anf=atoi(value);
     value=getProperty("snb");
     if(value) snb=atoi(value);
+    value=getProperty("nr_agc");
+    if(value) nr_agc=atoi(value);
+    value=getProperty("nr2_gain_method");
+    if(value) nr2_gain_method=atoi(value);
+    value=getProperty("nr2_npe_method");
+    if(value) nr2_npe_method=atoi(value);
+    value=getProperty("nr2_ae");
+    if(value) nr2_ae=atoi(value);
     value=getProperty("agc");
     if(value) agc=atoi(value);
     value=getProperty("agc_gain");
@@ -400,8 +414,10 @@ void radioRestoreState() {
     if(value) vfo_encoder_divisor=atoi(value);
     value=getProperty("OCtune");
     if(value) OCtune=atoi(value);
-    value=getProperty("OCtune_time");
-    if(value) OCtune_time=atoi(value);
+    value=getProperty("OCfull_tune_time");
+    if(value) OCfull_tune_time=atoi(value);
+    value=getProperty("OCmemory_tune_time");
+    if(value) OCmemory_tune_time=atoi(value);
 
     bandRestoreState();
     sem_post(&property_sem);
@@ -481,6 +497,14 @@ void radioSaveState() {
     setProperty("anf",value);
     sprintf(value,"%d",snb);
     setProperty("snb",value);
+    sprintf(value,"%d",nr_agc);
+    setProperty("nr_agc",value);
+    sprintf(value,"%d",nr2_gain_method);
+    setProperty("nr2_gain_method",value);
+    sprintf(value,"%d",nr2_npe_method);
+    setProperty("nr2_npe_method",value);
+    sprintf(value,"%d",nr2_ae);
+    setProperty("nr2_ae",value);
     sprintf(value,"%d",agc);
     setProperty("agc",value);
     sprintf(value,"%f",agc_gain);
@@ -515,8 +539,10 @@ void radioSaveState() {
     setProperty("vfo_encoder_divisor",value);
     sprintf(value,"%d",OCtune);
     setProperty("OCtune",value);
-    sprintf(value,"%d",OCtune_time);
-    setProperty("OCtune_time",value);
+    sprintf(value,"%d",OCfull_tune_time);
+    setProperty("OCfull_tune_time",value);
+    sprintf(value,"%d",OCmemory_tune_time);
+    setProperty("OCmemory_tune_time",value);
 
     bandSaveState();
 
diff --git a/radio.h b/radio.h
index 1379abc97665e423a6b15ff2207cabe303b97737..02ade6fcb7b4b5027a96b723ed688dfde5ba637d 100644 (file)
--- a/radio.h
+++ b/radio.h
@@ -107,6 +107,11 @@ extern int nb2;
 extern int anf;
 extern int snb;
 
+extern int nr_agc;
+extern int nr2_gain_method;
+extern int nr2_npe_method;
+extern int nr2_ae;
+
 extern int cwPitch;
 
 extern int mic_linein;
@@ -174,7 +179,8 @@ extern int supply_volts;
 extern long long ddsFrequency;
 
 extern unsigned char OCtune;
-extern int OCtune_time;
+extern int OCfull_tune_time;
+extern int OCmemory_tune_time;
 extern long long tune_timeout;
 
 extern void init_radio();
index 3333e2260a10f706b4797f82fbc3e02ffca6c125..2d2d9834f354756bca0907d43969ad0fef258b2d 100644 (file)
Binary files a/release/pihpsdr.tar and b/release/pihpsdr.tar differ
index afdf957778c3f4b9a5bb48f9359d1779855f9851..d3c9f3c52b357e569eb208e9262bf9728f9cfd99 100755 (executable)
Binary files a/release/pihpsdr/pihpsdr and b/release/pihpsdr/pihpsdr differ
index c967641a8fa0b35cff117644bff9987821d3c411..4ad47905eafa4796486eca7e9be8b943d270ac19 100644 (file)
--- a/toolbar.c
+++ b/toolbar.c
@@ -46,6 +46,16 @@ static int height;
 static GtkWidget *parent_window;
 static GtkWidget *toolbar;
 
+static GtkWidget *sim_band;
+static GtkWidget *sim_bandstack;
+static GtkWidget *sim_mode;
+static GtkWidget *sim_filter;
+static GtkWidget *sim_agc;
+static GtkWidget *sim_noise;
+static GtkWidget *sim_function;
+static GtkWidget *sim_mox;
+
+
 static GtkWidget *last_band;
 static GtkWidget *last_mode;
 static GtkWidget *last_filter;
@@ -930,9 +940,30 @@ void sim_noise_cb(GtkWidget *widget, gpointer data) {
 
 }
 
+void update_toolbar() {
+  if(function) {
+    gtk_button_set_label(GTK_BUTTON(sim_band),"Band v");
+    gtk_button_set_label(GTK_BUTTON(sim_bandstack),"BStack v");
+    gtk_button_set_label(GTK_BUTTON(sim_mode),"Mode v");
+    gtk_button_set_label(GTK_BUTTON(sim_filter),"Filter v");
+    gtk_button_set_label(GTK_BUTTON(sim_agc),"AGC v");
+    gtk_button_set_label(GTK_BUTTON(sim_noise),"Noise v");
+    gtk_button_set_label(GTK_BUTTON(sim_mox),"Tune");
+  } else {
+    gtk_button_set_label(GTK_BUTTON(sim_band),"Band ^");
+    gtk_button_set_label(GTK_BUTTON(sim_bandstack),"BStack ^");
+    gtk_button_set_label(GTK_BUTTON(sim_mode),"Mode ^");
+    gtk_button_set_label(GTK_BUTTON(sim_filter),"Filter ^");
+    gtk_button_set_label(GTK_BUTTON(sim_agc),"AGC ^");
+    gtk_button_set_label(GTK_BUTTON(sim_noise),"Noise ^");
+    gtk_button_set_label(GTK_BUTTON(sim_mox),"Mox");
+  }
+}
+
 void sim_function_cb(GtkWidget *widget, gpointer data) {
   fprintf(stderr,"sim_function_cb\n");
   function=function==1?0:1;
+  update_toolbar();
   vfo_update(NULL);
 }
 
@@ -969,47 +1000,47 @@ GtkWidget *toolbar_init(int my_width, int my_height, GtkWidget* parent) {
     gtk_grid_set_column_homogeneous(GTK_GRID(toolbar),TRUE);
 
     if(toolbar_simulate_buttons) {
-      GtkWidget *band=gtk_button_new_with_label("Band");
-      gtk_widget_set_size_request (band, button_width, 0);
-      //gtk_widget_override_font(band, pango_font_description_from_string("Arial 16"));
-      g_signal_connect(G_OBJECT(band),"clicked",G_CALLBACK(sim_band_cb),NULL);
-      gtk_grid_attach(GTK_GRID(toolbar),band,0,0,4,1);
-
-      GtkWidget *bandstack=gtk_button_new_with_label("BStack");
-      gtk_widget_set_size_request (bandstack, button_width, 0);
-      //gtk_widget_override_font(bandstack, pango_font_description_from_string("Arial 16"));
-      g_signal_connect(G_OBJECT(bandstack),"clicked",G_CALLBACK(sim_bandstack_cb),NULL);
-      gtk_grid_attach(GTK_GRID(toolbar),bandstack,4,0,4,1);
-
-      GtkWidget *mode=gtk_button_new_with_label("Mode");
-      //gtk_widget_override_font(mode, pango_font_description_from_string("Arial 16"));
-      g_signal_connect(G_OBJECT(mode),"clicked",G_CALLBACK(sim_mode_cb),NULL);
-      gtk_grid_attach(GTK_GRID(toolbar),mode,8,0,4,1);
-
-      GtkWidget *filter=gtk_button_new_with_label("Filter");
-      //gtk_widget_override_font(filter, pango_font_description_from_string("Arial 16"));
-      g_signal_connect(G_OBJECT(filter),"clicked",G_CALLBACK(sim_filter_cb),NULL);
-      gtk_grid_attach(GTK_GRID(toolbar),filter,12,0,4,1);
-
-      GtkWidget *agc=gtk_button_new_with_label("AGC");
-      //gtk_widget_override_font(agc, pango_font_description_from_string("Arial 16"));
-      g_signal_connect(G_OBJECT(agc),"clicked",G_CALLBACK(sim_agc_cb),NULL);
-      gtk_grid_attach(GTK_GRID(toolbar),agc,16,0,4,1);
-
-      GtkWidget *noise=gtk_button_new_with_label("Noise");
-      //gtk_widget_override_font(noise, pango_font_description_from_string("Arial 16"));
-      g_signal_connect(G_OBJECT(noise),"clicked",G_CALLBACK(sim_noise_cb),NULL);
-      gtk_grid_attach(GTK_GRID(toolbar),noise,20,0,4,1);
-
-      GtkWidget *function=gtk_button_new_with_label("Function");
-      //gtk_widget_override_font(function, pango_font_description_from_string("Arial 16"));
-      g_signal_connect(G_OBJECT(function),"clicked",G_CALLBACK(sim_function_cb),NULL);
-      gtk_grid_attach(GTK_GRID(toolbar),function,24,0,4,1);
-
-      GtkWidget *mox=gtk_button_new_with_label("Mox");
-      //gtk_widget_override_font(mox, pango_font_description_from_string("Arial 16"));
-      g_signal_connect(G_OBJECT(mox),"clicked",G_CALLBACK(sim_mox_cb),NULL);
-      gtk_grid_attach(GTK_GRID(toolbar),mox,28,0,4,1);
+      sim_band=gtk_button_new_with_label("Band ^");
+      gtk_widget_set_size_request (sim_band, button_width, 0);
+      //gtk_widget_override_font(sim_band, pango_font_description_from_string("Arial 16"));
+      g_signal_connect(G_OBJECT(sim_band),"clicked",G_CALLBACK(sim_band_cb),NULL);
+      gtk_grid_attach(GTK_GRID(toolbar),sim_band,0,0,4,1);
+
+      sim_bandstack=gtk_button_new_with_label("BStack ^");
+      gtk_widget_set_size_request (sim_bandstack, button_width, 0);
+      //gtk_widget_override_font(sim_bandstack, pango_font_description_from_string("Arial 16"));
+      g_signal_connect(G_OBJECT(sim_bandstack),"clicked",G_CALLBACK(sim_bandstack_cb),NULL);
+      gtk_grid_attach(GTK_GRID(toolbar),sim_bandstack,4,0,4,1);
+
+      sim_mode=gtk_button_new_with_label("Mode ^");
+      //gtk_widget_override_font(sim_mode, pango_font_description_from_string("Arial 16"));
+      g_signal_connect(G_OBJECT(sim_mode),"clicked",G_CALLBACK(sim_mode_cb),NULL);
+      gtk_grid_attach(GTK_GRID(toolbar),sim_mode,8,0,4,1);
+
+      sim_filter=gtk_button_new_with_label("Filter ^");
+      //gtk_widget_override_font(sim_filter, pango_font_description_from_string("Arial 16"));
+      g_signal_connect(G_OBJECT(sim_filter),"clicked",G_CALLBACK(sim_filter_cb),NULL);
+      gtk_grid_attach(GTK_GRID(toolbar),sim_filter,12,0,4,1);
+
+      sim_agc=gtk_button_new_with_label("AGC ^");
+      //gtk_widget_override_font(sim_agc, pango_font_description_from_string("Arial 16"));
+      g_signal_connect(G_OBJECT(sim_agc),"clicked",G_CALLBACK(sim_agc_cb),NULL);
+      gtk_grid_attach(GTK_GRID(toolbar),sim_agc,16,0,4,1);
+
+      sim_noise=gtk_button_new_with_label("Noise ^");
+      //gtk_widget_override_font(sim_noise, pango_font_description_from_string("Arial 16"));
+      g_signal_connect(G_OBJECT(sim_noise),"clicked",G_CALLBACK(sim_noise_cb),NULL);
+      gtk_grid_attach(GTK_GRID(toolbar),sim_noise,20,0,4,1);
+
+      sim_function=gtk_button_new_with_label("Function");
+      //gtk_widget_override_font(sim_function, pango_font_description_from_string("Arial 16"));
+      g_signal_connect(G_OBJECT(sim_function),"clicked",G_CALLBACK(sim_function_cb),NULL);
+      gtk_grid_attach(GTK_GRID(toolbar),sim_function,24,0,4,1);
+
+      sim_mox=gtk_button_new_with_label("Mox");
+      //gtk_widget_override_font(sim_mox, pango_font_description_from_string("Arial 16"));
+      g_signal_connect(G_OBJECT(sim_mox),"clicked",G_CALLBACK(sim_mox_cb),NULL);
+      gtk_grid_attach(GTK_GRID(toolbar),sim_mox,28,0,4,1);
 
     } else {
       GtkWidget *band=gtk_button_new_with_label("Band");
index eb758c79a6f8795c291fa1dd5386907b14dbd848..acaa7cae7ea9992904fc6748dc57e2757a2d924c 100644 (file)
--- a/toolbar.h
+++ b/toolbar.h
@@ -19,6 +19,7 @@
 
 extern int function;
 
+void update_toolbar();
 int ptt_update(void *data);
 void lock_cb(GtkWidget *widget, gpointer data);
 void mox_cb(GtkWidget *widget, gpointer data);
index 371a028b28d950337dcd1ac492d8604b7acc6278..7ffd8dcf194f39edc4e64a869e9dd7a32ce31716 100644 (file)
@@ -211,13 +211,12 @@ void wdsp_init(int rx,int pixels,int protocol) {
     SetRXAAMDSBMode(CHANNEL_RX0, 0);
     SetRXAShiftRun(CHANNEL_RX0, 0);
 
-    SetRXAEMNRgainMethod(CHANNEL_RX0, 2); // 0=Linear 1=Log 2=Gamma
-    SetRXAEMNRnpeMethod(CHANNEL_RX0, 0); // 0=OSMS 1=MMSE
-    SetRXAEMNRPosition(CHANNEL_RX0, 0); // 0=Pre AGC, 1=Post AGC
-    SetRXAEMNRaeRun(CHANNEL_RX0, 1); // 1=run
+    SetRXAEMNRPosition(CHANNEL_RX0, nr_agc);
+    SetRXAEMNRgainMethod(CHANNEL_RX0, nr2_gain_method);
+    SetRXAEMNRnpeMethod(CHANNEL_RX0, nr2_npe_method);
     SetRXAEMNRRun(CHANNEL_RX0, nr2);
+    SetRXAEMNRaeRun(CHANNEL_RX0, nr2_ae);
 
-    SetRXAEMNRaeRun(CHANNEL_RX0, 0);
     SetRXAANRVals(CHANNEL_RX0, 64, 16, 16e-4, 10e-7); // defaults
     SetRXAANRRun(CHANNEL_RX0, nr);
     SetRXAANFRun(CHANNEL_RX0, anf);