RT_OPTION=-lrt
endif
-LIBS=$(RT_OPTION) -lm -lwdsp -lpthread $(AUDIO_LIBS) $(USBOZY_LIBS) $(GTKLIBS) $(GPIO_LIBS) $(MIDI_LIBS)
+LIBS=$(RT_OPTION) -lm -lwdsp -lrnnoise -lpthread $(AUDIO_LIBS) $(USBOZY_LIBS) $(GTKLIBS) $(GPIO_LIBS) $(MIDI_LIBS)
INCLUDES=$(GTKINCLUDES)
COMPILE=$(CC) $(CFLAGS) $(OPTIONS) $(INCLUDES)
SetEXTNOBRun(active_receiver->id, active_receiver->nb2);
SetRXAANRRun(active_receiver->id, active_receiver->nr);
SetRXAEMNRRun(active_receiver->id, active_receiver->nr2);
+ SetRXARNNRRun(active_receiver->id, active_receiver->nr3);
SetRXAANFRun(active_receiver->id, active_receiver->anf);
SetRXASNBARun(active_receiver->id, active_receiver->snb);
g_idle_add(ext_vfo_update,NULL);
if(gtk_toggle_button_get_active(widget)) {
active_receiver->nr=0;
active_receiver->nr2=0;
+ active_receiver->nr3=0;
mode_settings[vfo[active_receiver->id].mode].nr=0;
mode_settings[vfo[active_receiver->id].mode].nr2=0;
+ mode_settings[vfo[active_receiver->id].mode].nr3=0;
update_noise();
}
}
if(gtk_toggle_button_get_active(widget)) {
active_receiver->nr=1;
active_receiver->nr2=0;
+ active_receiver->nr3=0;
mode_settings[vfo[active_receiver->id].mode].nr=1;
mode_settings[vfo[active_receiver->id].mode].nr2=0;
+ mode_settings[vfo[active_receiver->id].mode].nr3=0;
update_noise();
}
}
if(gtk_toggle_button_get_active(widget)) {
active_receiver->nr=0;
active_receiver->nr2=1;
+ active_receiver->nr3=0;
mode_settings[vfo[active_receiver->id].mode].nr=0;
mode_settings[vfo[active_receiver->id].mode].nr2=1;
+ mode_settings[vfo[active_receiver->id].mode].nr3=0;
+ update_noise();
+ }
+}
+
+static void nr3_cb(GtkToggleButton *widget, gpointer data) {
+ if(gtk_toggle_button_get_active(widget)) {
+ active_receiver->nr=0;
+ active_receiver->nr2=0;
+ active_receiver->nr3=1;
+ mode_settings[vfo[active_receiver->id].mode].nr=0;
+ mode_settings[vfo[active_receiver->id].mode].nr2=0;
+ mode_settings[vfo[active_receiver->id].mode].nr3=1;
update_noise();
}
}
col++;
GtkWidget *b_nr_none=gtk_radio_button_new_with_label(NULL, "None");
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b_nr_none), active_receiver->nr==0 && active_receiver->nr2==0);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b_nr_none), active_receiver->nr==0 && active_receiver->nr2==0 && active_receiver->nr3 ==0);
gtk_widget_show(b_nr_none);
gtk_grid_attach(GTK_GRID(grid),b_nr_none,col,row,1,1);
g_signal_connect(b_nr_none,"toggled",G_CALLBACK(nr_none_cb),NULL);
gtk_grid_attach(GTK_GRID(grid),b_nr2,col,row,1,1);
g_signal_connect(b_nr2,"toggled",G_CALLBACK(nr2_cb),NULL);
+ row++;
+
+ GtkWidget *b_nr3=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(b_nr),"NR3");
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b_nr3), active_receiver->nr3);
+ gtk_widget_show(b_nr3);
+ gtk_grid_attach(GTK_GRID(grid),b_nr3,col,row,1,1);
+ g_signal_connect(b_nr3,"toggled",G_CALLBACK(nr3_cb),NULL);
+
gtk_container_add(GTK_CONTAINER(content),grid);
sub_menu=dialog;
sprintf(name,"receiver.%d.nr2",rx->id);
sprintf(value,"%d",rx->nr2);
setProperty(name,value);
+
+ sprintf(name,"receiver.%d.nr3",rx->id);
+ sprintf(value,"%d",rx->nr3);
+ setProperty(name,value);
+
sprintf(name,"receiver.%d.anf",rx->id);
sprintf(value,"%d",rx->anf);
setProperty(name,value);
sprintf(name,"receiver.%d.nr2",rx->id);
value=getProperty(name);
if(value) rx->nr2=atoi(value);
+
+ sprintf(name,"receiver.%d.nr3",rx->id);
+ value=getProperty(name);
+ if(value) rx->nr3=atoi(value);
+
sprintf(name,"receiver.%d.anf",rx->id);
value=getProperty(name);
if(value) rx->anf=atoi(value);
rx->nb2=0;
rx->nr=0;
rx->nr2=0;
+ rx->nr3=0;
rx->anf=0;
rx->snb=0;
rx->nb2=0;
rx->nr=0;
rx->nr2=0;
+ rx->nr3=0;
rx->anf=0;
rx->snb=0;
SetRXAEMNRRun(rx->id, rx->nr2);
SetRXAEMNRaeRun(rx->id, rx->nr2_ae);
+ SetRXARNNRRun(rx->id, rx->nr3);
+
SetEXTANBRun(rx->id, rx->nb);
SetEXTNOBRun(rx->id, rx->nb2);
gint nb2;
gint nr;
gint nr2;
+ gint nr3;
gint anf;
gint snb;
sprintf(name,"modeset.%d.nr2", i);
sprintf(value,"%d", mode_settings[i].nr2);
setProperty(name,value);
+
+ sprintf(name,"modeset.%d.nr3", i);
+ sprintf(value,"%d", mode_settings[i].nr3);
+ setProperty(name,value);
+
sprintf(name,"modeset.%d.nb", i);
sprintf(value,"%d", mode_settings[i].nb);
setProperty(name,value);
mode_settings[i].filter=filterF6;
mode_settings[i].nr=0;
mode_settings[i].nr2=0;
+ mode_settings[i].nr3=0;
mode_settings[i].nb=0;
mode_settings[i].nb2=0;
mode_settings[i].anf=0;
value=getProperty(name);
if(value) mode_settings[i].nr2=atoi(value);
sprintf(name,"modeset.%d.nb",i);
+
+ sprintf(name,"modeset.%d.nr3",i);
+ value=getProperty(name);
+ if(value) mode_settings[i].nr3=atoi(value);
+
value=getProperty(name);
if(value) mode_settings[i].nb=atoi(value);
sprintf(name,"modeset.%d.nb2",i);
vfo[id].filter =mode_settings[m].filter;
active_receiver->nr =mode_settings[m].nr;
active_receiver->nr2=mode_settings[m].nr2;
+ active_receiver->nr3=mode_settings[m].nr3;
active_receiver->nb =mode_settings[m].nb;
active_receiver->nb2=mode_settings[m].nb2;
active_receiver->anf=mode_settings[m].anf;
cairo_show_text(cr, "NB");
}
- // NR and NR2 are mutually exclusive
+ // NR, NR2 and NR3 are mutually exclusive
cairo_move_to(cr, 70, 40);
if(active_receiver->nr) {
cairo_set_source_rgb(cr, 1.0, 1.0, 0.0);
cairo_set_source_rgb(cr, 0.7, 0.7, 0.7);
cairo_show_text(cr, "NR");
}
+ // XXX need to have a button for NR3
cairo_move_to(cr, 70, 20);
if(active_receiver->anf) {
int nb2;
int nr;
int nr2;
+ int nr3;
int anf;
int snb;
};