#include <stdio.h>
#include <string.h>
+#include <wdsp.h>
+
#include "new_menu.h"
#include "equalizer_menu.h"
#include "radio.h"
+#include "channel.h"
static GtkWidget *parent_window=NULL;
static GtkWidget *dialog=NULL;
+static GtkWidget *enable_b;
+static GtkWidget *preamp_scale;
+static GtkWidget *low_scale;
+static GtkWidget *mid_scale;
+static GtkWidget *high_scale;
+
+static gboolean tx_menu=TRUE;
static gboolean close_cb (GtkWidget *widget, GdkEventButton *event, gpointer data) {
if(dialog!=NULL) {
return TRUE;
}
+static gboolean tx_rb_cb (GtkWidget *widget, GdkEventButton *event, gpointer data) {
+ if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) {
+ tx_menu=TRUE;
+ gtk_button_set_label(GTK_BUTTON(enable_b),"Enable TX Equalizer");
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (enable_b), enable_tx_equalizer);
+ gtk_range_set_value(GTK_RANGE(preamp_scale),(double)tx_equalizer[0]);
+ gtk_range_set_value(GTK_RANGE(low_scale),(double)tx_equalizer[1]);
+ gtk_range_set_value(GTK_RANGE(mid_scale),(double)tx_equalizer[2]);
+ gtk_range_set_value(GTK_RANGE(high_scale),(double)tx_equalizer[3]);
+ }
+}
+
+static gboolean rx_rb_cb (GtkWidget *widget, GdkEventButton *event, gpointer data) {
+ if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) {
+ tx_menu=FALSE;
+ gtk_button_set_label(GTK_BUTTON(enable_b),"Enable RX Equalizer");
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (enable_b), enable_rx_equalizer);
+ gtk_range_set_value(GTK_RANGE(preamp_scale),(double)rx_equalizer[0]);
+ gtk_range_set_value(GTK_RANGE(low_scale),(double)rx_equalizer[1]);
+ gtk_range_set_value(GTK_RANGE(mid_scale),(double)rx_equalizer[2]);
+ gtk_range_set_value(GTK_RANGE(high_scale),(double)rx_equalizer[3]);
+ }
+}
+
static gboolean enable_cb (GtkWidget *widget, GdkEventButton *event, gpointer data) {
- enable_rx_equalizer=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
- // update WDSP
+ if(tx_menu) {
+ enable_tx_equalizer=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+ SetTXAEQRun(CHANNEL_TX, enable_tx_equalizer);
+ } else {
+ enable_rx_equalizer=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+ SetRXAEQRun(CHANNEL_RX0, enable_rx_equalizer);
+ }
}
static gboolean rx_value_changed_cb (GtkWidget *widget, GdkEventButton *event, gpointer data) {
int i=(int)data;
- rx_equalizer[i]=gtk_range_get_value(GTK_RANGE(widget));
- // update WDSP
+ if(tx_menu) {
+ tx_equalizer[i]=(int)gtk_range_get_value(GTK_RANGE(widget));
+ SetTXAGrphEQ(CHANNEL_TX, tx_equalizer);
+ } else {
+ rx_equalizer[i]=(int)gtk_range_get_value(GTK_RANGE(widget));
+ SetRXAGrphEQ(CHANNEL_RX0, rx_equalizer);
+ }
}
void equalizer_menu(GtkWidget *parent) {
gtk_grid_set_row_homogeneous(GTK_GRID(grid),FALSE);
gtk_grid_set_column_homogeneous(GTK_GRID(grid),FALSE);
- GtkWidget *close_b=gtk_button_new_with_label("Close TX Equalizer");
+ GtkWidget *close_b=gtk_button_new_with_label("Close Equalizer");
g_signal_connect (close_b, "pressed", G_CALLBACK(close_cb), NULL);
gtk_grid_attach(GTK_GRID(grid),close_b,0,0,1,1);
+ GtkWidget *tx_rb=gtk_radio_button_new_with_label(NULL,"TX Equalizer");
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tx_rb),TRUE);
+ g_signal_connect(tx_rb,"toggled",G_CALLBACK(tx_rb_cb),NULL);
+ gtk_grid_attach(GTK_GRID(grid),tx_rb,1,0,1,1);
+
+
+ GtkWidget *rx_rb=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(tx_rb),"RX Equalizer");
+ g_signal_connect(rx_rb,"toggled",G_CALLBACK(rx_rb_cb),NULL);
+ gtk_grid_attach(GTK_GRID(grid),rx_rb,2,0,1,1);
+
- GtkWidget *enable_b=gtk_check_button_new_with_label("Enable TX Equalizer");
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (enable_b), enable_rx_equalizer);
- g_signal_connect(enable_b,"toggled-changed",G_CALLBACK(enable_cb),NULL);
+ enable_b=gtk_check_button_new_with_label("Enable TX Equalizer");
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (enable_b), enable_tx_equalizer);
+ g_signal_connect(enable_b,"toggled",G_CALLBACK(enable_cb),NULL);
gtk_grid_attach(GTK_GRID(grid),enable_b,0,1,1,1);
label=gtk_label_new("High");
gtk_grid_attach(GTK_GRID(grid),label,3,2,1,1);
- GtkWidget *preamp_scale=gtk_scale_new_with_range(GTK_ORIENTATION_VERTICAL,-12.0,15.0,1.0);
- gtk_range_set_value(GTK_RANGE(preamp_scale),rx_equalizer[0]);
+ preamp_scale=gtk_scale_new_with_range(GTK_ORIENTATION_VERTICAL,-12.0,15.0,1.0);
+ gtk_range_set_value(GTK_RANGE(preamp_scale),(double)tx_equalizer[0]);
g_signal_connect(preamp_scale,"value-changed",G_CALLBACK(rx_value_changed_cb),(gpointer)0);
gtk_grid_attach(GTK_GRID(grid),preamp_scale,0,3,1,10);
gtk_widget_set_size_request(preamp_scale,10,270);
gtk_scale_add_mark(GTK_SCALE(preamp_scale),12.0,GTK_POS_LEFT,NULL);
gtk_scale_add_mark(GTK_SCALE(preamp_scale),15.0,GTK_POS_LEFT,"15dB");
- GtkWidget *low_scale=gtk_scale_new_with_range(GTK_ORIENTATION_VERTICAL,-12.0,15.0,1.0);
- gtk_range_set_value(GTK_RANGE(low_scale),rx_equalizer[1]);
+ low_scale=gtk_scale_new_with_range(GTK_ORIENTATION_VERTICAL,-12.0,15.0,1.0);
+ gtk_range_set_value(GTK_RANGE(low_scale),(double)tx_equalizer[1]);
g_signal_connect(low_scale,"value-changed",G_CALLBACK(rx_value_changed_cb),(gpointer)1);
gtk_grid_attach(GTK_GRID(grid),low_scale,1,3,1,10);
gtk_scale_add_mark(GTK_SCALE(low_scale),-12.0,GTK_POS_LEFT,"-12dB");
gtk_scale_add_mark(GTK_SCALE(low_scale),12.0,GTK_POS_LEFT,NULL);
gtk_scale_add_mark(GTK_SCALE(low_scale),15.0,GTK_POS_LEFT,"15dB");
- GtkWidget *mid_scale=gtk_scale_new_with_range(GTK_ORIENTATION_VERTICAL,-12.0,15.0,1.0);
- gtk_range_set_value(GTK_RANGE(mid_scale),rx_equalizer[2]);
+ mid_scale=gtk_scale_new_with_range(GTK_ORIENTATION_VERTICAL,-12.0,15.0,1.0);
+ gtk_range_set_value(GTK_RANGE(mid_scale),(double)tx_equalizer[2]);
g_signal_connect(mid_scale,"value-changed",G_CALLBACK(rx_value_changed_cb),(gpointer)2);
gtk_grid_attach(GTK_GRID(grid),mid_scale,2,3,1,10);
gtk_scale_add_mark(GTK_SCALE(mid_scale),-12.0,GTK_POS_LEFT,"-12dB");
gtk_scale_add_mark(GTK_SCALE(mid_scale),12.0,GTK_POS_LEFT,NULL);
gtk_scale_add_mark(GTK_SCALE(mid_scale),15.0,GTK_POS_LEFT,"15dB");
- GtkWidget *high_scale=gtk_scale_new_with_range(GTK_ORIENTATION_VERTICAL,-12.0,15.0,1.0);
- gtk_range_set_value(GTK_RANGE(high_scale),rx_equalizer[3]);
+ high_scale=gtk_scale_new_with_range(GTK_ORIENTATION_VERTICAL,-12.0,15.0,1.0);
+ gtk_range_set_value(GTK_RANGE(high_scale),(double)tx_equalizer[3]);
g_signal_connect(high_scale,"value-changed",G_CALLBACK(rx_value_changed_cb),(gpointer)3);
gtk_grid_attach(GTK_GRID(grid),high_scale,3,3,1,10);
gtk_scale_add_mark(GTK_SCALE(high_scale),-12.0,GTK_POS_LEFT,"-12dB");
gdk_window_set_cursor(splash_window,cursor_arrow);
fprintf(stderr,"No devices found!\n");
GtkDialogFlags flags = GTK_DIALOG_DESTROY_WITH_PARENT;
+/*
discovery_dialog = gtk_message_dialog_new (GTK_WINDOW(splash_screen),
flags,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_OK_CANCEL,
"No devices found! Retry Discovery?");
- gtk_widget_override_font(discovery_dialog, pango_font_description_from_string("FreeMono 18"));
- gint result=gtk_dialog_run (GTK_DIALOG (discovery_dialog));
- gtk_widget_destroy(discovery_dialog);
- if(result==GTK_RESPONSE_CANCEL) {
- _exit(0);
- }
+*/
+ discovery_dialog = gtk_dialog_new();
+ gtk_window_set_transient_for(GTK_WINDOW(discovery_dialog),GTK_WINDOW(splash_screen));
+ gtk_window_set_decorated(GTK_WINDOW(discovery_dialog),FALSE);
+
+ gtk_widget_override_font(discovery_dialog, pango_font_description_from_string("FreeMono 16"));
+
+ GdkRGBA color;
+ color.red = 1.0;
+ color.green = 1.0;
+ color.blue = 1.0;
+ color.alpha = 1.0;
+ gtk_widget_override_background_color(discovery_dialog,GTK_STATE_FLAG_NORMAL,&color);
+
+ GtkWidget *content;
+
+ content=gtk_dialog_get_content_area(GTK_DIALOG(discovery_dialog));
+
+ GtkWidget *grid=gtk_grid_new();
+ gtk_grid_set_row_homogeneous(GTK_GRID(grid),TRUE);
+ gtk_grid_set_column_homogeneous(GTK_GRID(grid),TRUE);
+ gtk_grid_set_row_spacing (GTK_GRID(grid),10);
+
+ GtkWidget *label=gtk_label_new("No devices found!");
+ gtk_grid_attach(GTK_GRID(grid),label,0,0,2,1);
+
+ GtkWidget *exit_b=gtk_button_new_with_label("Exit");
+ g_signal_connect (exit_b, "button-press-event", G_CALLBACK(exit_cb), NULL);
+ gtk_grid_attach(GTK_GRID(grid),exit_b,0,1,1,1);
+
+ GtkWidget *discover_b=gtk_button_new_with_label("Retry Discovery");
+ g_signal_connect (discover_b, "button-press-event", G_CALLBACK(discover_cb), NULL);
+ gtk_grid_attach(GTK_GRID(grid),discover_b,1,1,1,1);
+
+ gtk_container_add (GTK_CONTAINER (content), grid);
+ gtk_widget_show_all(discovery_dialog);
} else {
//fprintf(stderr,"%s: found %d devices.\n", (char *)arg, devices);
gdk_window_set_cursor(splash_window,cursor_arrow);
int ctun=0;
+int enable_tx_equalizer=0;
+int tx_equalizer[4]={0,0,0,0};
+
int enable_rx_equalizer=0;
-double rx_equalizer[4]={0.0,0.0,0.0,0.0};
+int rx_equalizer[4]={0,0,0,0};
void init_radio() {
int rc;
}
if(protocol==NEW_PROTOCOL) {
schedule_high_priority(4);
- schedule_general();
+ //schedule_general();
}
if(tune) {
+ SetChannelState(CHANNEL_RX0,0,1);
pre_tune_mode = mode;
if(mode==modeCWL) {
setMode(modeLSB);
} else if(mode==modeCWU) {
setMode(modeUSB);
}
-
SetTXAPostGenMode(CHANNEL_TX,0);
if(mode==modeLSB || mode==modeCWL || mode==modeDIGL) {
SetTXAPostGenToneFreq(CHANNEL_TX,-(double)cw_keyer_sidetone_frequency);
} else {
SetTXAPostGenToneFreq(CHANNEL_TX,(double)cw_keyer_sidetone_frequency);
}
- //if(protocol==ORIGINAL_PROTOCOL) {
- SetTXAPostGenToneMag(CHANNEL_TX,0.3);
- //} else {
- // SetTXAPostGenToneMag(CHANNEL_TX,0.99999);
- //}
+ SetTXAPostGenToneMag(CHANNEL_TX,0.3);
SetTXAPostGenRun(CHANNEL_TX,1);
- SetChannelState(CHANNEL_RX0,0,1);
SetChannelState(CHANNEL_TX,1,0);
} else {
+ SetChannelState(CHANNEL_TX,0,1);
SetTXAPostGenRun(CHANNEL_TX,0);
if(pre_tune_mode==modeCWL || pre_tune_mode==modeCWU) {
setMode(pre_tune_mode);
}
- SetChannelState(CHANNEL_TX,0,1);
SetChannelState(CHANNEL_RX0,1,0);
}
}
if(value) local_microphone=atoi(value);
value=getProperty("n_selected_input_device");
if(value) n_selected_input_device=atoi(value);
+ value=getProperty("enable_tx_equalizer");
+ if(value) enable_tx_equalizer=atoi(value);
+ value=getProperty("tx_equalizer.0");
+ if(value) tx_equalizer[0]=atoi(value);
+ value=getProperty("tx_equalizer.1");
+ if(value) tx_equalizer[1]=atoi(value);
+ value=getProperty("tx_equalizer.2");
+ if(value) tx_equalizer[2]=atoi(value);
+ value=getProperty("tx_equalizer.3");
+ if(value) tx_equalizer[3]=atoi(value);
+ value=getProperty("enable_rx_equalizer");
+ if(value) enable_rx_equalizer=atoi(value);
+ value=getProperty("rx_equalizer.0");
+ if(value) rx_equalizer[0]=atoi(value);
+ value=getProperty("rx_equalizer.1");
+ if(value) rx_equalizer[1]=atoi(value);
+ value=getProperty("rx_equalizer.2");
+ if(value) rx_equalizer[2]=atoi(value);
+ value=getProperty("rx_equalizer.3");
+ if(value) rx_equalizer[3]=atoi(value);
+
bandRestoreState();
sem_post(&property_sem);
setProperty("local_microphone",value);
sprintf(value,"%d",n_selected_input_device);
setProperty("n_selected_input_device",value);
+
+ sprintf(value,"%d",enable_tx_equalizer);
+ setProperty("enable_tx_equalizer",value);
+ sprintf(value,"%d",tx_equalizer[0]);
+ setProperty("tx_equalizer.0",value);
+ sprintf(value,"%d",tx_equalizer[1]);
+ setProperty("tx_equalizer.1",value);
+ sprintf(value,"%d",tx_equalizer[2]);
+ setProperty("tx_equalizer.2",value);
+ sprintf(value,"%d",tx_equalizer[3]);
+ setProperty("tx_equalizer.3",value);
+ sprintf(value,"%d",enable_rx_equalizer);
+ setProperty("enable_rx_equalizer",value);
+ sprintf(value,"%d",rx_equalizer[0]);
+ setProperty("rx_equalizer.0",value);
+ sprintf(value,"%d",rx_equalizer[1]);
+ setProperty("rx_equalizer.1",value);
+ sprintf(value,"%d",rx_equalizer[2]);
+ setProperty("rx_equalizer.2",value);
+ sprintf(value,"%d",rx_equalizer[3]);
+ setProperty("rx_equalizer.3",value);
+
bandSaveState();
saveProperties(property_path);