Changed frequency info to just have band edges.
Fixed SAT/Split frequency updates to vfo when only one receiver.
Fixed MOX control using space bar when TX Panadapter is a dialog.
Several changes to menus to use "toggled" event rather than "pressed" for radio buttons.
Fixed a protocol 2 startup timing problem.
Some more cleanup of code.
return FALSE;
}
-static gboolean agc_select_cb (GtkWidget *widget, gpointer data) {
- active_receiver->agc=GPOINTER_TO_INT(data);
- //wdsp_set_agc(CHANNEL_RX0, agc);
- set_agc(active_receiver, active_receiver->agc);
- vfo_update();
- return FALSE;
+static void agc_select_cb (GtkToggleButton *widget, gpointer data) {
+ if(gtk_toggle_button_get_active(widget)) {
+ active_receiver->agc=GPOINTER_TO_INT(data);
+ set_agc(active_receiver, active_receiver->agc);
+ vfo_update();
+ }
}
void agc_menu(GtkWidget *parent) {
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b_off), active_receiver->agc==AGC_OFF);
gtk_widget_show(b_off);
gtk_grid_attach(GTK_GRID(grid),b_off,col,row,1,1);
- g_signal_connect(b_off,"pressed",G_CALLBACK(agc_select_cb),(gpointer)(long)AGC_OFF);
+ g_signal_connect(b_off,"toggled",G_CALLBACK(agc_select_cb),(gpointer)(long)AGC_OFF);
col++;
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b_long), active_receiver->agc==AGC_LONG);
gtk_widget_show(b_long);
gtk_grid_attach(GTK_GRID(grid),b_long,col,row,1,1);
- g_signal_connect(b_long,"pressed",G_CALLBACK(agc_select_cb),(gpointer)(long)AGC_LONG);
+ g_signal_connect(b_long,"toggled",G_CALLBACK(agc_select_cb),(gpointer)(long)AGC_LONG);
col++;
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b_slow), active_receiver->agc==AGC_SLOW);
gtk_widget_show(b_slow);
gtk_grid_attach(GTK_GRID(grid),b_slow,col,row,1,1);
- g_signal_connect(b_slow,"pressed",G_CALLBACK(agc_select_cb),(gpointer)(long)AGC_SLOW);
+ g_signal_connect(b_slow,"toggled",G_CALLBACK(agc_select_cb),(gpointer)(long)AGC_SLOW);
col++;
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b_medium), active_receiver->agc==AGC_MEDIUM);
gtk_widget_show(b_medium);
gtk_grid_attach(GTK_GRID(grid),b_medium,col,row,1,1);
- g_signal_connect(b_medium,"pressed",G_CALLBACK(agc_select_cb),(gpointer)(long)AGC_MEDIUM);
+ g_signal_connect(b_medium,"toggled",G_CALLBACK(agc_select_cb),(gpointer)(long)AGC_MEDIUM);
col++;
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b_fast), active_receiver->agc==AGC_FAST);
gtk_widget_show(b_fast);
gtk_grid_attach(GTK_GRID(grid),b_fast,col,row,1,1);
- g_signal_connect(b_fast,"pressed",G_CALLBACK(agc_select_cb),(gpointer)(long)AGC_FAST);
+ g_signal_connect(b_fast,"toggled",G_CALLBACK(agc_select_cb),(gpointer)(long)AGC_FAST);
gtk_container_add(GTK_CONTAINER(content),grid);
return FALSE;
}
-static void rx_ant_cb(GtkWidget *widget, gpointer data) {
- int b=(GPOINTER_TO_UINT(data))>>4;
- int ant=(GPOINTER_TO_UINT(data))&0xF;
- BAND *band=band_get_band(b);
- band->alexRxAntenna=ant;
- if(active_receiver->id==0) {
- set_alex_rx_antenna(ant);
+static void rx_ant_cb(GtkToggleButton *widget, gpointer data) {
+ if(gtk_toggle_button_get_active(widget)) {
+ int b=(GPOINTER_TO_UINT(data))>>4;
+ int ant=(GPOINTER_TO_UINT(data))&0xF;
+ BAND *band=band_get_band(b);
+ band->alexRxAntenna=ant;
+ if(active_receiver->id==0) {
+ set_alex_rx_antenna(ant);
+ }
}
}
}
}
-static void rx_lime_ant_cb(GtkWidget *widget, gpointer data) {
- int ant=(GPOINTER_TO_UINT(data))&0xF;
- BAND *band=band_get_current_band();
- band->alexRxAntenna=ant;
- if(active_receiver->id==0) {
- set_alex_rx_antenna(ant);
- }
-}
-
-static void tx_ant_cb(GtkWidget *widget, gpointer data) {
- int b=(GPOINTER_TO_UINT(data))>>4;
- int ant=(GPOINTER_TO_UINT(data))&0xF;
- BAND *band=band_get_band(b);
- band->alexTxAntenna=ant;
- if(active_receiver->id==0) {
- set_alex_tx_antenna(ant);
+static void tx_ant_cb(GtkToggleButton *widget, gpointer data) {
+ if(gtk_toggle_button_get_active(widget)) {
+ int b=(GPOINTER_TO_UINT(data))>>4;
+ int ant=(GPOINTER_TO_UINT(data))&0xF;
+ BAND *band=band_get_band(b);
+ band->alexTxAntenna=ant;
+ if(active_receiver->id==0) {
+ set_alex_tx_antenna(ant);
+ }
}
}
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rx1_b), band->alexRxAntenna==0);
gtk_widget_show(rx1_b);
gtk_grid_attach(GTK_GRID(grid),rx1_b,1,i+2,1,1);
- g_signal_connect(rx1_b,"pressed",G_CALLBACK(rx_ant_cb),(gpointer)(long)((i<<4)+0));
+ g_signal_connect(rx1_b,"toggled",G_CALLBACK(rx_ant_cb),(gpointer)(long)((i<<4)+0));
GtkWidget *rx2_b=gtk_radio_button_new_from_widget(GTK_RADIO_BUTTON(rx1_b));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rx2_b), band->alexRxAntenna==1);
gtk_widget_show(rx2_b);
gtk_grid_attach(GTK_GRID(grid),rx2_b,2,i+2,1,1);
- g_signal_connect(rx2_b,"pressed",G_CALLBACK(rx_ant_cb),(gpointer)(long)((i<<4)+1));
+ g_signal_connect(rx2_b,"toggled",G_CALLBACK(rx_ant_cb),(gpointer)(long)((i<<4)+1));
GtkWidget *rx3_b=gtk_radio_button_new_from_widget(GTK_RADIO_BUTTON(rx2_b));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rx3_b), band->alexRxAntenna==2);
gtk_widget_show(rx3_b);
gtk_grid_attach(GTK_GRID(grid),rx3_b,3,i+2,1,1);
- g_signal_connect(rx3_b,"pressed",G_CALLBACK(rx_ant_cb),(gpointer)(long)((i<<4)+2));
+ g_signal_connect(rx3_b,"toggled",G_CALLBACK(rx_ant_cb),(gpointer)(long)((i<<4)+2));
GtkWidget *ext1_b=gtk_radio_button_new_from_widget(GTK_RADIO_BUTTON(rx3_b));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ext1_b), band->alexRxAntenna==3);
gtk_widget_show(ext1_b);
gtk_grid_attach(GTK_GRID(grid),ext1_b,4,i+2,1,1);
- g_signal_connect(ext1_b,"pressed",G_CALLBACK(rx_ant_cb),(gpointer)(long)((i<<4)+3));
+ g_signal_connect(ext1_b,"toggled",G_CALLBACK(rx_ant_cb),(gpointer)(long)((i<<4)+3));
GtkWidget *ext2_b=gtk_radio_button_new_from_widget(GTK_RADIO_BUTTON(ext1_b));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ext2_b), band->alexRxAntenna==4);
gtk_widget_show(ext2_b);
gtk_grid_attach(GTK_GRID(grid),ext2_b,5,i+2,1,1);
- g_signal_connect(ext2_b,"pressed",G_CALLBACK(rx_ant_cb),(gpointer)(long)((i<<4)+4));
+ g_signal_connect(ext2_b,"toggled",G_CALLBACK(rx_ant_cb),(gpointer)(long)((i<<4)+4));
GtkWidget *xvtr_b=gtk_radio_button_new_from_widget(GTK_RADIO_BUTTON(ext2_b));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (xvtr_b), band->alexRxAntenna==5);
gtk_widget_show(xvtr_b);
gtk_grid_attach(GTK_GRID(grid),xvtr_b,6,i+2,1,1);
- g_signal_connect(xvtr_b,"pressed",G_CALLBACK(rx_ant_cb),(gpointer)(long)((i<<4)+5));
+ g_signal_connect(xvtr_b,"toggled",G_CALLBACK(rx_ant_cb),(gpointer)(long)((i<<4)+5));
GtkWidget *ant_band_label=gtk_label_new(band->title);
//gtk_widget_override_font(ant_band_label, pango_font_description_from_string("Arial 18"));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tx1_b), band->alexTxAntenna==0);
gtk_widget_show(tx1_b);
gtk_grid_attach(GTK_GRID(grid),tx1_b,8,i+2,1,1);
- g_signal_connect(tx1_b,"pressed",G_CALLBACK(tx_ant_cb),(gpointer)(long)((i<<4)+0));
+ g_signal_connect(tx1_b,"toggled",G_CALLBACK(tx_ant_cb),(gpointer)(long)((i<<4)+0));
GtkWidget *tx2_b=gtk_radio_button_new_from_widget(GTK_RADIO_BUTTON(tx1_b));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tx2_b), band->alexTxAntenna==1);
gtk_widget_show(tx2_b);
gtk_grid_attach(GTK_GRID(grid),tx2_b,9,i+2,1,1);
- g_signal_connect(tx2_b,"pressed",G_CALLBACK(tx_ant_cb),(gpointer)(long)((i<<4)+1));
+ g_signal_connect(tx2_b,"toggled",G_CALLBACK(tx_ant_cb),(gpointer)(long)((i<<4)+1));
GtkWidget *tx3_b=gtk_radio_button_new_from_widget(GTK_RADIO_BUTTON(tx2_b));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tx3_b), band->alexTxAntenna==2);
gtk_widget_show(tx3_b);
gtk_grid_attach(GTK_GRID(grid),tx3_b,10,i+2,1,1);
- g_signal_connect(tx3_b,"pressed",G_CALLBACK(tx_ant_cb),(gpointer)(long)((i<<4)+2));
+ g_signal_connect(tx3_b,"toggled",G_CALLBACK(tx_ant_cb),(gpointer)(long)((i<<4)+2));
}
}
}
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rx1_b), band->alexRxAntenna==0);
gtk_widget_show(rx1_b);
gtk_grid_attach(GTK_GRID(grid),rx1_b,1,i+2,1,1);
- g_signal_connect(rx1_b,"pressed",G_CALLBACK(rx_ant_cb),(gpointer)(long)(((i+BANDS)<<4)+0));
+ g_signal_connect(rx1_b,"toggled",G_CALLBACK(rx_ant_cb),(gpointer)(long)(((i+BANDS)<<4)+0));
GtkWidget *rx2_b=gtk_radio_button_new_from_widget(GTK_RADIO_BUTTON(rx1_b));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rx2_b), band->alexRxAntenna==1);
gtk_widget_show(rx2_b);
gtk_grid_attach(GTK_GRID(grid),rx2_b,2,i+2,1,1);
- g_signal_connect(rx2_b,"pressed",G_CALLBACK(rx_ant_cb),(gpointer)(long)(((i+BANDS)<<4)+1));
+ g_signal_connect(rx2_b,"toggled",G_CALLBACK(rx_ant_cb),(gpointer)(long)(((i+BANDS)<<4)+1));
GtkWidget *rx3_b=gtk_radio_button_new_from_widget(GTK_RADIO_BUTTON(rx2_b));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rx3_b), band->alexRxAntenna==2);
gtk_widget_show(rx3_b);
gtk_grid_attach(GTK_GRID(grid),rx3_b,3,i+2,1,1);
- g_signal_connect(rx3_b,"pressed",G_CALLBACK(rx_ant_cb),(gpointer)(long)(((i+BANDS)<<4)+2));
+ g_signal_connect(rx3_b,"toggled",G_CALLBACK(rx_ant_cb),(gpointer)(long)(((i+BANDS)<<4)+2));
GtkWidget *ext1_b=gtk_radio_button_new_from_widget(GTK_RADIO_BUTTON(rx3_b));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ext1_b), band->alexRxAntenna==3);
gtk_widget_show(ext1_b);
gtk_grid_attach(GTK_GRID(grid),ext1_b,4,i+2,1,1);
- g_signal_connect(ext1_b,"pressed",G_CALLBACK(rx_ant_cb),(gpointer)(long)(((i+BANDS)<<4)+3));
+ g_signal_connect(ext1_b,"toggled",G_CALLBACK(rx_ant_cb),(gpointer)(long)(((i+BANDS)<<4)+3));
GtkWidget *ext2_b=gtk_radio_button_new_from_widget(GTK_RADIO_BUTTON(ext1_b));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ext2_b), band->alexRxAntenna==4);
gtk_widget_show(ext2_b);
gtk_grid_attach(GTK_GRID(grid),ext2_b,5,i+2,1,1);
- g_signal_connect(ext2_b,"pressed",G_CALLBACK(rx_ant_cb),(gpointer)(long)(((i+BANDS)<<4)+4));
+ g_signal_connect(ext2_b,"toggled",G_CALLBACK(rx_ant_cb),(gpointer)(long)(((i+BANDS)<<4)+4));
GtkWidget *xvtr_b=gtk_radio_button_new_from_widget(GTK_RADIO_BUTTON(ext2_b));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (xvtr_b), band->alexRxAntenna==5);
gtk_widget_show(xvtr_b);
gtk_grid_attach(GTK_GRID(grid),xvtr_b,6,i+2,1,1);
- g_signal_connect(xvtr_b,"pressed",G_CALLBACK(rx_ant_cb),(gpointer)(long)(((i+BANDS)<<4)+5));
+ g_signal_connect(xvtr_b,"toggled",G_CALLBACK(rx_ant_cb),(gpointer)(long)(((i+BANDS)<<4)+5));
GtkWidget *ant_band_label=gtk_label_new(band->title);
//gtk_widget_override_font(ant_band_label, pango_font_description_from_string("Arial 18"));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tx1_b), band->alexTxAntenna==0);
gtk_widget_show(tx1_b);
gtk_grid_attach(GTK_GRID(grid),tx1_b,8,i+2,1,1);
- g_signal_connect(tx1_b,"pressed",G_CALLBACK(tx_ant_cb),(gpointer)(long)(((i+BANDS)<<4)+0));
+ g_signal_connect(tx1_b,"toggled",G_CALLBACK(tx_ant_cb),(gpointer)(long)(((i+BANDS)<<4)+0));
GtkWidget *tx2_b=gtk_radio_button_new_from_widget(GTK_RADIO_BUTTON(tx1_b));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tx2_b), band->alexTxAntenna==1);
gtk_widget_show(tx2_b);
gtk_grid_attach(GTK_GRID(grid),tx2_b,9,i+2,1,1);
- g_signal_connect(tx2_b,"pressed",G_CALLBACK(tx_ant_cb),(gpointer)(long)(((i+BANDS)<<4)+1));
+ g_signal_connect(tx2_b,"toggled",G_CALLBACK(tx_ant_cb),(gpointer)(long)(((i+BANDS)<<4)+1));
GtkWidget *tx3_b=gtk_radio_button_new_from_widget(GTK_RADIO_BUTTON(tx2_b));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tx3_b), band->alexTxAntenna==2);
gtk_widget_show(tx3_b);
gtk_grid_attach(GTK_GRID(grid),tx3_b,10,i+2,1,1);
- g_signal_connect(tx3_b,"pressed",G_CALLBACK(tx_ant_cb),(gpointer)(long)(((i+BANDS)<<4)+2));
+ g_signal_connect(tx3_b,"toggled",G_CALLBACK(tx_ant_cb),(gpointer)(long)(((i+BANDS)<<4)+2));
}
}
}
if(radio->device==SOAPYSDR_USB_DEVICE) {
int i;
-g_print("rx_antennas=%d\n",radio->info.soapy.rx_antennas);
+g_print("rx_antennas=%ld\n",radio->info.soapy.rx_antennas);
if(radio->info.soapy.rx_antennas>0) {
GtkWidget *antenna_label=gtk_label_new("RX Antenna:");
gtk_grid_attach(GTK_GRID(grid),antenna_label,0,1,1,1);
}
if(can_transmit) {
- g_print("tx_antennas=%d\n",radio->info.soapy.tx_antennas);
+ g_print("tx_antennas=%ld\n",radio->info.soapy.tx_antennas);
if(radio->info.soapy.tx_antennas>0) {
GtkWidget *antenna_label=gtk_label_new("TX Antenna:");
gtk_grid_attach(GTK_GRID(grid),antenna_label,0,2,1,1);
g_print("audio_open_input: %s\n",transmitter->microphone_name);
+ mic_buffer_size = 256;
+/*
switch(protocol) {
case ORIGINAL_PROTOCOL:
mic_buffer_size = 720;
default:
break;
}
+*/
g_print("audio_open_input: mic_buffer_size=%d\n",mic_buffer_size);
i=0;
g_print("audio_open_input: creating mic_read_thread\n");
GError *error;
- mic_read_thread_id = g_thread_try_new("local mic",mic_read_thread,NULL,&error);
+ mic_read_thread_id = g_thread_try_new("microphone",mic_read_thread,NULL,&error);
if(!mic_read_thread_id ) {
g_print("g_thread_new failed on mic_read_thread: %s\n",error->message);
}
}
}
}
+g_print("get_band_from_frequency: %lld id %d\n",f,found);
return found;
}
return FALSE;
}
-static void cw_vfo_cb(GtkWidget *widget, gpointer data) {
- cw_is_on_vfo_freq=(uintptr_t)data;
+static void cw_vfo_cb(GtkToggleButton *widget, gpointer data) {
+ if(gtk_toggle_button_get_active(widget)) {
+ cw_is_on_vfo_freq=(uintptr_t)data;
+ }
}
static void cw_keyer_internal_cb(GtkWidget *widget, gpointer data) {
cw_changed();
}
-static void cw_keyer_mode_cb(GtkWidget *widget, gpointer data) {
- cw_keyer_mode=GPOINTER_TO_UINT(data);
- cw_changed();
+static void cw_keyer_mode_cb(GtkToggleButton *widget, gpointer data) {
+ if(gtk_toggle_button_get_active(widget)) {
+ cw_keyer_mode=GPOINTER_TO_UINT(data);
+ cw_changed();
+ }
}
static void cw_keyer_sidetone_level_value_changed_cb(GtkWidget *widget, gpointer data) {
GtkWidget *cw_keyer_speed_b=gtk_spin_button_new_with_range(1.0,60.0,1.0);
//gtk_widget_override_font(cw_keyer_speed_b, pango_font_description_from_string("Arial 18"));
gtk_spin_button_set_value(GTK_SPIN_BUTTON(cw_keyer_speed_b),(double)cw_keyer_speed);
- gtk_widget_show(cw_keyer_speed_b);
+ gtk_widget_show(cw_keyer_speed_b);
gtk_grid_attach(GTK_GRID(grid),cw_keyer_speed_b,1,1,1,1);
g_signal_connect(cw_keyer_speed_b,"value_changed",G_CALLBACK(cw_keyer_speed_value_changed_cb),NULL);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cw_keyer_straight), cw_keyer_mode==KEYER_STRAIGHT);
gtk_widget_show(cw_keyer_straight);
gtk_grid_attach(GTK_GRID(grid),cw_keyer_straight,0,3,1,1);
- g_signal_connect(cw_keyer_straight,"pressed",G_CALLBACK(cw_keyer_mode_cb),(gpointer *)KEYER_STRAIGHT);
+ g_signal_connect(cw_keyer_straight,"toggled",G_CALLBACK(cw_keyer_mode_cb),(gpointer *)KEYER_STRAIGHT);
GtkWidget *cw_keyer_mode_a=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(cw_keyer_straight),"CW KEYER MODE A");
//gtk_widget_override_font(cw_keyer_mode_a, pango_font_description_from_string("Arial 18"));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cw_keyer_mode_a), cw_keyer_mode==KEYER_MODE_A);
gtk_widget_show(cw_keyer_mode_a);
gtk_grid_attach(GTK_GRID(grid),cw_keyer_mode_a,0,4,1,1);
- g_signal_connect(cw_keyer_mode_a,"pressed",G_CALLBACK(cw_keyer_mode_cb),(gpointer *)KEYER_MODE_A);
+ g_signal_connect(cw_keyer_mode_a,"toggled",G_CALLBACK(cw_keyer_mode_cb),(gpointer *)KEYER_MODE_A);
GtkWidget *cw_keyer_mode_b=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(cw_keyer_mode_a),"CW KEYER MODE B");
//gtk_widget_override_font(cw_keyer_mode_b, pango_font_description_from_string("Arial 18"));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cw_keyer_mode_b), cw_keyer_mode==KEYER_MODE_B);
gtk_widget_show(cw_keyer_mode_b);
gtk_grid_attach(GTK_GRID(grid),cw_keyer_mode_b,0,5,1,1);
- g_signal_connect(cw_keyer_mode_b,"pressed",G_CALLBACK(cw_keyer_mode_cb),(gpointer *)KEYER_MODE_B);
+ g_signal_connect(cw_keyer_mode_b,"toggled",G_CALLBACK(cw_keyer_mode_cb),(gpointer *)KEYER_MODE_B);
GtkWidget *cw_vfo=gtk_radio_button_new_with_label(NULL,"CW on VFO freq");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cw_vfo), cw_is_on_vfo_freq);
gtk_widget_show(cw_vfo);
gtk_grid_attach(GTK_GRID(grid),cw_vfo,1,3,1,1);
- g_signal_connect(cw_vfo,"pressed",G_CALLBACK(cw_vfo_cb),(gpointer *)1);
+ g_signal_connect(cw_vfo,"toggled",G_CALLBACK(cw_vfo_cb),(gpointer *)1);
GtkWidget *cw_vfo_pm=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(cw_vfo),"CW on VFO +/- sidetone");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cw_vfo_pm), cw_is_on_vfo_freq==0);
gtk_widget_show(cw_vfo_pm);
gtk_grid_attach(GTK_GRID(grid),cw_vfo_pm,1,4,1,1);
- g_signal_connect(cw_vfo_pm,"pressed",G_CALLBACK(cw_vfo_cb),(gpointer *)0);
+ g_signal_connect(cw_vfo_pm,"toggled",G_CALLBACK(cw_vfo_cb),(gpointer *)0);
GtkWidget *cw_keys_reversed_b=gtk_check_button_new_with_label("Keys reversed");
//gtk_widget_override_font(cw_keys_reversed_b, pango_font_description_from_string("Arial 18"));
return FALSE;
}
-static void detector_mode_cb(GtkWidget *widget, gpointer data) {
- display_detector_mode=GPOINTER_TO_UINT(data);
- SetDisplayDetectorMode(active_receiver->id, 0, display_detector_mode);
+static void detector_mode_cb(GtkToggleButton *widget, gpointer data) {
+ if(gtk_toggle_button_get_active(widget)) {
+ display_detector_mode=GPOINTER_TO_UINT(data);
+ SetDisplayDetectorMode(active_receiver->id, 0, display_detector_mode);
+ }
}
-static void average_mode_cb(GtkWidget *widget, gpointer data) {
- display_average_mode=GPOINTER_TO_UINT(data);
- SetDisplayAverageMode(active_receiver->id, 0, display_average_mode);
+static void average_mode_cb(GtkToggleButton *widget, gpointer data) {
+ if(gtk_toggle_button_get_active(widget)) {
+ display_average_mode=GPOINTER_TO_UINT(data);
+ SetDisplayAverageMode(active_receiver->id, 0, display_average_mode);
+ }
}
static void time_value_changed_cb(GtkWidget *widget, gpointer data) {
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (detector_mode_peak), display_detector_mode==DETECTOR_MODE_PEAK);
gtk_widget_show(detector_mode_peak);
gtk_grid_attach(GTK_GRID(grid),detector_mode_peak,col,row,1,1);
- g_signal_connect(detector_mode_peak,"pressed",G_CALLBACK(detector_mode_cb),(gpointer *)DETECTOR_MODE_PEAK);
+ g_signal_connect(detector_mode_peak,"toggled",G_CALLBACK(detector_mode_cb),(gpointer *)DETECTOR_MODE_PEAK);
row++;
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (detector_mode_rosenfell), display_detector_mode==DETECTOR_MODE_ROSENFELL);
gtk_widget_show(detector_mode_rosenfell);
gtk_grid_attach(GTK_GRID(grid),detector_mode_rosenfell,col,row,1,1);
- g_signal_connect(detector_mode_rosenfell,"pressed",G_CALLBACK(detector_mode_cb),(gpointer *)DETECTOR_MODE_ROSENFELL);
+ g_signal_connect(detector_mode_rosenfell,"toggled",G_CALLBACK(detector_mode_cb),(gpointer *)DETECTOR_MODE_ROSENFELL);
row++;
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (detector_mode_average), display_detector_mode==DETECTOR_MODE_AVERAGE);
gtk_widget_show(detector_mode_average);
gtk_grid_attach(GTK_GRID(grid),detector_mode_average,col,row,1,1);
- g_signal_connect(detector_mode_average,"pressed",G_CALLBACK(detector_mode_cb),(gpointer *)DETECTOR_MODE_AVERAGE);
+ g_signal_connect(detector_mode_average,"toggled",G_CALLBACK(detector_mode_cb),(gpointer *)DETECTOR_MODE_AVERAGE);
row++;
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (detector_mode_sample), display_detector_mode==DETECTOR_MODE_SAMPLE);
gtk_widget_show(detector_mode_sample);
gtk_grid_attach(GTK_GRID(grid),detector_mode_sample,col,row,1,1);
- g_signal_connect(detector_mode_sample,"pressed",G_CALLBACK(detector_mode_cb),(gpointer *)DETECTOR_MODE_SAMPLE);
+ g_signal_connect(detector_mode_sample,"toggled",G_CALLBACK(detector_mode_cb),(gpointer *)DETECTOR_MODE_SAMPLE);
col=3;
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (average_mode_none), display_detector_mode==AVERAGE_MODE_NONE);
gtk_widget_show(average_mode_none);
gtk_grid_attach(GTK_GRID(grid),average_mode_none,col,row,1,1);
- g_signal_connect(average_mode_none,"pressed",G_CALLBACK(average_mode_cb),(gpointer *)AVERAGE_MODE_NONE);
+ g_signal_connect(average_mode_none,"toggled",G_CALLBACK(average_mode_cb),(gpointer *)AVERAGE_MODE_NONE);
row++;
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (average_mode_recursive), display_average_mode==AVERAGE_MODE_RECURSIVE);
gtk_widget_show(average_mode_recursive);
gtk_grid_attach(GTK_GRID(grid),average_mode_recursive,col,row,1,1);
- g_signal_connect(average_mode_recursive,"pressed",G_CALLBACK(average_mode_cb),(gpointer *)AVERAGE_MODE_RECURSIVE);
+ g_signal_connect(average_mode_recursive,"toggled",G_CALLBACK(average_mode_cb),(gpointer *)AVERAGE_MODE_RECURSIVE);
row++;
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (average_mode_time_window), display_average_mode==AVERAGE_MODE_TIME_WINDOW);
gtk_widget_show(average_mode_time_window);
gtk_grid_attach(GTK_GRID(grid),average_mode_time_window,col,row,1,1);
- g_signal_connect(average_mode_time_window,"pressed",G_CALLBACK(average_mode_cb),(gpointer *)AVERAGE_MODE_TIME_WINDOW);
+ g_signal_connect(average_mode_time_window,"toggled",G_CALLBACK(average_mode_cb),(gpointer *)AVERAGE_MODE_TIME_WINDOW);
row++;
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (average_mode_log_recursive), display_average_mode==AVERAGE_MODE_LOG_RECURSIVE);
gtk_widget_show(average_mode_log_recursive);
gtk_grid_attach(GTK_GRID(grid),average_mode_log_recursive,col,row,1,1);
- g_signal_connect(average_mode_log_recursive,"pressed",G_CALLBACK(average_mode_cb),(gpointer *)AVERAGE_MODE_LOG_RECURSIVE);
+ g_signal_connect(average_mode_log_recursive,"toggled",G_CALLBACK(average_mode_cb),(gpointer *)AVERAGE_MODE_LOG_RECURSIVE);
row++;
}
}
-static void pre_post_agc_cb(GtkWidget *widget, gpointer data) {
- active_receiver->nr_agc=GPOINTER_TO_UINT(data);
- SetRXAEMNRPosition(active_receiver->id, active_receiver->nr_agc);
-
+static void pre_post_agc_cb(GtkToggleButton *widget, gpointer data) {
+ if(gtk_toggle_button_get_active(widget)) {
+ active_receiver->nr_agc=GPOINTER_TO_UINT(data);
+ SetRXAEMNRPosition(active_receiver->id, active_receiver->nr_agc);
+ }
}
-static void nr2_gain_cb(GtkWidget *widget, gpointer data) {
- active_receiver->nr2_gain_method=GPOINTER_TO_UINT(data);
- SetRXAEMNRgainMethod(active_receiver->id, active_receiver->nr2_gain_method);
+static void nr2_gain_cb(GtkToggleButton *widget, gpointer data) {
+ if(gtk_toggle_button_get_active(widget)) {
+ active_receiver->nr2_gain_method=GPOINTER_TO_UINT(data);
+ SetRXAEMNRgainMethod(active_receiver->id, active_receiver->nr2_gain_method);
+ }
}
-static void nr2_npe_method_cb(GtkWidget *widget, gpointer data) {
- active_receiver->nr2_npe_method=GPOINTER_TO_UINT(data);
- SetRXAEMNRnpeMethod(active_receiver->id, active_receiver->nr2_npe_method);
+static void nr2_npe_method_cb(GtkToggleButton *widget, gpointer data) {
+ if(gtk_toggle_button_get_active(widget)) {
+ active_receiver->nr2_npe_method=GPOINTER_TO_UINT(data);
+ SetRXAEMNRnpeMethod(active_receiver->id, active_receiver->nr2_npe_method);
+ }
}
static void ae_cb(GtkWidget *widget, gpointer data) {
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pre_agc_b),active_receiver->nr_agc==0);
gtk_widget_show(pre_agc_b);
gtk_grid_attach(GTK_GRID(grid),pre_agc_b,1,2,1,1);
- g_signal_connect(pre_agc_b,"pressed",G_CALLBACK(pre_post_agc_cb),(gpointer *)0);
+ g_signal_connect(pre_agc_b,"toggled",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), active_receiver->nr_agc==1);
gtk_widget_show(post_agc_b);
gtk_grid_attach(GTK_GRID(grid),post_agc_b,2,2,1,1);
- g_signal_connect(post_agc_b,"pressed",G_CALLBACK(pre_post_agc_cb),(gpointer *)1);
+ g_signal_connect(post_agc_b,"toggled",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_toggle_button_set_active (GTK_TOGGLE_BUTTON (linear_b),active_receiver->nr2_gain_method==0);
gtk_widget_show(linear_b);
gtk_grid_attach(GTK_GRID(grid),linear_b,1,3,1,1);
- g_signal_connect(linear_b,"pressed",G_CALLBACK(nr2_gain_cb),(gpointer *)0);
+ g_signal_connect(linear_b,"toggled",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), active_receiver->nr2_gain_method==1);
gtk_widget_show(log_b);
gtk_grid_attach(GTK_GRID(grid),log_b,2,3,1,1);
- g_signal_connect(log_b,"pressed",G_CALLBACK(nr2_gain_cb),(gpointer *)1);
+ g_signal_connect(log_b,"toggled",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), active_receiver->nr2_gain_method==2);
gtk_widget_show(gamma_b);
gtk_grid_attach(GTK_GRID(grid),gamma_b,3,3,1,1);
- g_signal_connect(gamma_b,"pressed",G_CALLBACK(nr2_gain_cb),(gpointer *)2);
+ g_signal_connect(gamma_b,"toggled",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_toggle_button_set_active (GTK_TOGGLE_BUTTON (osms_b),active_receiver->nr2_npe_method==0);
gtk_widget_show(osms_b);
gtk_grid_attach(GTK_GRID(grid),osms_b,1,4,1,1);
- g_signal_connect(osms_b,"pressed",G_CALLBACK(nr2_npe_method_cb),(gpointer *)0);
+ g_signal_connect(osms_b,"toggled",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), active_receiver->nr2_npe_method==1);
gtk_widget_show(mmse_b);
gtk_grid_attach(GTK_GRID(grid),mmse_b,2,4,1,1);
- g_signal_connect(mmse_b,"pressed",G_CALLBACK(nr2_npe_method_cb),(gpointer *)1);
+ g_signal_connect(mmse_b,"toggled",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"));
GtkWidget *label=gtk_label_new("Preamp");
- gtk_grid_attach(GTK_GRID(grid),label,0,2,1,1);
+ gtk_grid_attach(GTK_GRID(grid),label,0,2,1,2);
label=gtk_label_new("Low");
- gtk_grid_attach(GTK_GRID(grid),label,1,2,1,1);
+ gtk_grid_attach(GTK_GRID(grid),label,0,4,1,2);
label=gtk_label_new("Mid");
- gtk_grid_attach(GTK_GRID(grid),label,2,2,1,1);
+ gtk_grid_attach(GTK_GRID(grid),label,0,6,1,2);
label=gtk_label_new("High");
- gtk_grid_attach(GTK_GRID(grid),label,3,2,1,1);
+ gtk_grid_attach(GTK_GRID(grid),label,0,8,1,2);
- preamp_scale=gtk_scale_new_with_range(GTK_ORIENTATION_VERTICAL,-12.0,15.0,1.0);
+ preamp_scale=gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL,-12.0,15.0,1.0);
if(can_transmit) {
gtk_range_set_value(GTK_RANGE(preamp_scale),(double)tx_equalizer[0]);
} else {
gtk_range_set_value(GTK_RANGE(preamp_scale),(double)rx_equalizer[0]);
}
g_signal_connect(preamp_scale,"value-changed",G_CALLBACK(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_grid_attach(GTK_GRID(grid),preamp_scale,1,2,4,2);
gtk_scale_add_mark(GTK_SCALE(preamp_scale),-12.0,GTK_POS_LEFT,"-12dB");
gtk_scale_add_mark(GTK_SCALE(preamp_scale),-9.0,GTK_POS_LEFT,NULL);
gtk_scale_add_mark(GTK_SCALE(preamp_scale),-6.0,GTK_POS_LEFT,NULL);
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");
- low_scale=gtk_scale_new_with_range(GTK_ORIENTATION_VERTICAL,-12.0,15.0,1.0);
+ low_scale=gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL,-12.0,15.0,1.0);
if(can_transmit) {
gtk_range_set_value(GTK_RANGE(low_scale),(double)tx_equalizer[1]);
} else {
gtk_range_set_value(GTK_RANGE(low_scale),(double)rx_equalizer[1]);
}
g_signal_connect(low_scale,"value-changed",G_CALLBACK(value_changed_cb),(gpointer)1);
- gtk_grid_attach(GTK_GRID(grid),low_scale,1,3,1,10);
+ gtk_grid_attach(GTK_GRID(grid),low_scale,1,4,4,2);
gtk_scale_add_mark(GTK_SCALE(low_scale),-12.0,GTK_POS_LEFT,"-12dB");
gtk_scale_add_mark(GTK_SCALE(low_scale),-9.0,GTK_POS_LEFT,NULL);
gtk_scale_add_mark(GTK_SCALE(low_scale),-6.0,GTK_POS_LEFT,NULL);
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");
- mid_scale=gtk_scale_new_with_range(GTK_ORIENTATION_VERTICAL,-12.0,15.0,1.0);
+ mid_scale=gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL,-12.0,15.0,1.0);
if(can_transmit) {
gtk_range_set_value(GTK_RANGE(mid_scale),(double)tx_equalizer[2]);
} else {
gtk_range_set_value(GTK_RANGE(mid_scale),(double)rx_equalizer[2]);
}
g_signal_connect(mid_scale,"value-changed",G_CALLBACK(value_changed_cb),(gpointer)2);
- gtk_grid_attach(GTK_GRID(grid),mid_scale,2,3,1,10);
+ gtk_grid_attach(GTK_GRID(grid),mid_scale,1,6,4,2);
gtk_scale_add_mark(GTK_SCALE(mid_scale),-12.0,GTK_POS_LEFT,"-12dB");
gtk_scale_add_mark(GTK_SCALE(mid_scale),-9.0,GTK_POS_LEFT,NULL);
gtk_scale_add_mark(GTK_SCALE(mid_scale),-6.0,GTK_POS_LEFT,NULL);
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");
- high_scale=gtk_scale_new_with_range(GTK_ORIENTATION_VERTICAL,-12.0,15.0,1.0);
+ high_scale=gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL,-12.0,15.0,1.0);
if(can_transmit) {
gtk_range_set_value(GTK_RANGE(high_scale),(double)tx_equalizer[3]);
} else {
gtk_range_set_value(GTK_RANGE(high_scale),(double)rx_equalizer[3]);
}
g_signal_connect(high_scale,"value-changed",G_CALLBACK(value_changed_cb),(gpointer)3);
- gtk_grid_attach(GTK_GRID(grid),high_scale,3,3,1,10);
+ gtk_grid_attach(GTK_GRID(grid),high_scale,1,8,4,2);
gtk_scale_add_mark(GTK_SCALE(high_scale),-12.0,GTK_POS_LEFT,"-12dB");
gtk_scale_add_mark(GTK_SCALE(high_scale),-9.0,GTK_POS_LEFT,NULL);
gtk_scale_add_mark(GTK_SCALE(high_scale),-6.0,GTK_POS_LEFT,NULL);
return FALSE;
}
-static void filter_type_cb(GtkWidget *widget, gpointer data) {
- set_filter_type(GPOINTER_TO_UINT(data));
+static void filter_type_cb(GtkToggleButton *widget, gpointer data) {
+ if(gtk_toggle_button_get_active(widget)) {
+ set_filter_type(GPOINTER_TO_UINT(data));
+ }
}
#ifdef SET_FILTER_SIZE
-static void filter_size_cb(GtkWidget *widget, gpointer data) {
- set_filter_size((int)data);
+static void filter_size_cb(GtkToggleButton *widget, gpointer data) {
+ if(gtk_toggle_button_get_active(widget)) {
+ set_filter_size((int)data);
+ }
}
#endif
GtkWidget *linear_phase=gtk_radio_button_new_with_label(NULL,"Linear Phase");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (linear_phase), receiver[0]->low_latency==0);
gtk_grid_attach(GTK_GRID(grid),linear_phase,col,row,1,1);
- g_signal_connect(linear_phase,"pressed",G_CALLBACK(filter_type_cb),(gpointer *)0);
+ g_signal_connect(linear_phase,"toggled",G_CALLBACK(filter_type_cb),(gpointer *)0);
col++;
GtkWidget *low_latency=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(linear_phase),"Low Latency");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (low_latency), receiver[0]->low_latency==1);
gtk_grid_attach(GTK_GRID(grid),low_latency,col,row,1,1);
- g_signal_connect(low_latency,"pressed",G_CALLBACK(filter_type_cb),(gpointer *)1);
+ g_signal_connect(low_latency,"toggled",G_CALLBACK(filter_type_cb),(gpointer *)1);
#ifdef SET_FILTER_SIZE
GtkWidget *filter_1024=gtk_radio_button_new_with_label(NULL,"1024");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (filter_1024), receiver[0]->fft_size==1024);
gtk_grid_attach(GTK_GRID(grid),filter_1024,col,row,1,1);
- g_signal_connect(filter_1024,"pressed",G_CALLBACK(filter_size_cb),(gpointer *)1024);
+ g_signal_connect(filter_1024,"toggled",G_CALLBACK(filter_size_cb),(gpointer *)1024);
col++;
GtkWidget *filter_2048=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(filter_1024),"2048");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (filter_2048), receiver[0]->fft_size==2048);
gtk_grid_attach(GTK_GRID(grid),filter_2048,col,row,1,1);
- g_signal_connect(filter_2048,"pressed",G_CALLBACK(filter_size_cb),(gpointer *)2048);
+ g_signal_connect(filter_2048,"toggled",G_CALLBACK(filter_size_cb),(gpointer *)2048);
col++;
- GtkWidget *filter_4096=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(filter_2048),"4096");
+ GtkWidget *filter_4096=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(filter_1024),"4096");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (filter_4096), receiver[0]->fft_size==4096);
gtk_grid_attach(GTK_GRID(grid),filter_4096,col,row,1,1);
- g_signal_connect(filter_4096,"pressed",G_CALLBACK(filter_size_cb),(gpointer *)4096);
+ g_signal_connect(filter_4096,"toggled",G_CALLBACK(filter_size_cb),(gpointer *)4096);
col++;
- GtkWidget *filter_8192=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(filter_4096),"8192");
+ GtkWidget *filter_8192=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(filter_1024),"8192");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (filter_8192), receiver[0]->fft_size==8192);
gtk_grid_attach(GTK_GRID(grid),filter_8192,col,row,1,1);
- g_signal_connect(filter_8192,"pressed",G_CALLBACK(filter_size_cb),(gpointer *)8192);
+ g_signal_connect(filter_8192,"toggled",G_CALLBACK(filter_size_cb),(gpointer *)8192);
col++;
- GtkWidget *filter_16384=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(filter_8192),"16384");
+ GtkWidget *filter_16384=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(filter_1024),"16384");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (filter_16384), receiver[0]->fft_size==16384);
gtk_grid_attach(GTK_GRID(grid),filter_16384,col,row,1,1);
- g_signal_connect(filter_16384,"pressed",G_CALLBACK(filter_size_cb),(gpointer *)16394);
+ g_signal_connect(filter_16384,"toggled",G_CALLBACK(filter_size_cb),(gpointer *)16394);
#endif
gtk_container_add(GTK_CONTAINER(content),grid);
}
if(b!=band_get_current()) {
BAND *band=band_set_current(b);
- BANDSTACK_ENTRY *entry=bandstack_entry_get_current();
- //setMode(entry->mode);
set_mode(active_receiver,entry->mode);
FILTER* band_filters=filters[entry->mode];
FILTER* band_filter=&band_filters[entry->filter];
- //setFilter(band_filter->low,band_filter->high);
set_filter(active_receiver,band_filter->low,band_filter->high);
if(active_receiver->id==0) {
set_alex_rx_antenna(band->alexRxAntenna);
// through the bottom
//
#define NOBAND -1
+#ifdef FREQUENCY_INFO
struct frequency_info frequencyInfo[]=
{
};
+#else
+struct frequency_info frequencyInfo[]=
+ {
+
+ { 135700LL, 137800LL, "136kHz", band136, TRUE },
+ { 153000LL, 279000LL, "AM - Long Wave", bandGen, FALSE},
+ { 472000LL, 479000LL, "472kHz", band472, TRUE },
+ { 530000LL, 1710000LL, "Broadcast AM Med Wave", bandGen, FALSE},
+ { 1800000LL, 1999999LL, "160M", band160, TRUE },
+ { 2300000LL, 2495000LL, "120M Short Wave", bandGen, FALSE},
+ { 2500000LL, 2500000LL, "WWV", bandWWV, FALSE},
+ { 3200000LL, 3400000LL, "90M Short Wave", bandGen, FALSE},
+ { 3500000LL, 3999999LL, "80M", band80, TRUE },
+ { 4750000LL, 4999999LL, "60M Short Wave", bandGen, FALSE},
+ { 5000000LL, 5000000LL, "WWV", bandWWV, FALSE},
+ { 5261250LL, 5408000LL, "60M", band60, TRUE },
+ { 5900000LL, 6200000LL, "49M Short Wave", bandGen, FALSE},
+ { 7000000LL, 7299999LL, "40M", band40, TRUE },
+ { 7300000LL, 7350000LL, "41M Short Wave", bandGen, FALSE},
+ { 9400000LL, 9900000LL, "31M Short Wave", bandGen, FALSE},
+ { 10000000LL, 10000000LL, "WWV", bandWWV, FALSE},
+ { 10100000LL, 10149999LL, "30M", band30, TRUE },
+ { 11600000LL, 12100000LL, "25M Short Wave", bandGen, FALSE},
+ { 13570000LL, 13870000LL, "22M Short Wave", bandGen, FALSE},
+ { 14000000LL, 14349999LL, "20M", band20, TRUE },
+ { 15000000LL, 15000000LL, "WWV", bandWWV, FALSE},
+ { 15100000LL, 15800000LL, "19M Short Wave", bandGen, FALSE},
+ { 17480000LL, 17900000LL, "16M Short Wave", bandGen, FALSE},
+ { 18068000LL, 18167999LL, "17M", band17, TRUE },
+ { 18900000LL, 19020000LL, "15M Short Wave", bandGen, FALSE},
+ { 20000000LL, 20000000LL, "WWV", bandWWV, FALSE},
+ { 21000000LL, 21449999LL, "15M", band15, TRUE },
+ { 21450000LL, 21850000LL, "13M Short Wave", bandGen, FALSE},
+ { 24890000LL, 24989999LL, "12M", band12, TRUE },
+ { 25600000LL, 26100000LL, "11M Short Wave", bandGen, FALSE},
+ { 28000000LL, 29699999LL, "10M", band10, TRUE },
+ { 50000000LL, 53999999LL, "6M", band6, TRUE },
+ { 144000000LL, 147999999LL, "2M", NOBAND, TRUE },
+ { 222000000LL, 224979999LL, "125CM", NOBAND, TRUE },
+ { 420000000LL, 449999999LL, "70CM", NOBAND, TRUE },
+ { 902000000LL, 927999999LL, "33CM", NOBAND, TRUE },
+ { 1240000000LL, 1299999999LL, "23CM", NOBAND, TRUE },
+ { 2300000000LL, 2449999999LL, "13cm", NOBAND, TRUE },
+ { 3456000000LL, 3456399999LL, "3.4GHz", NOBAND, TRUE },
+ { 5760000000LL, 5760399999LL, "5.7GHz", NOBAND, TRUE },
+ {10000000000LL, 10499999999LL, "10GHz", NOBAND, TRUE },
+ {24192000000LL, 24192399999LL, "24GHz", NOBAND, TRUE },
+ {47088000000LL, 47088399999LL, "47GHz", NOBAND, TRUE },
+ {0LL, 0LL, "", 0, FALSE}
+ };
+#endif
/* --------------------------------------------------------------------------*/
/**
info++;
}
-//fprintf(stderr,"info: %s tx=%d\n", info->info, info->transmit);
+if(info) {
+ g_print("getFrequencyInfo: %s tx=%d\n", info->info, info->transmit);
+}
return result;
}
info++;
}
+
+g_print("getBand for %lld is %s (%d)\n",frequency,info->info,info->band);
return result;
}
static int e_function_pressed(void *data) {
int action=(int)data;
-fprintf(stderr,"e_function_pressed: %d\n",action);
+//g_print("e_function_pressed: %d\n",action);
switch(action) {
case TUNE:
if(can_transmit) g_idle_add(ext_tune_update,NULL);
static unsigned long vfo_debounce=0;
static void vfoFunctionAlert() {
- int t=millis();
if(t-vfo_debounce > settle_time) {
int level=digitalRead(VFO_FUNCTION);
if(level==0) {
}
#endif
-static void vfoEncoderInt(int A_or_B) {
- static int vfoA=1, vfoB=1;
- int levelA=digitalRead(VFO_ENCODER_A);
- int levelB=digitalRead(VFO_ENCODER_B);
+static void vfoEncoderInt() {
+ static int vfoA=1;
+ int levelA=digitalRead(VFO_ENCODER_A);
+ int levelB=digitalRead(VFO_ENCODER_B);
if(levelA!=vfoA) {
if(levelA==levelB) ++vfoEncoderPos;
if(levelA!=levelB) --vfoEncoderPos;
vfoA=levelA;
}
-/*
- if(levelA!=e2CurrentA) {
- if(levelA==levelB) ++e2EncoderPos;
- if(levelA!=levelB) --e2EncoderPos;
- e2CurrentA=levelA;
- }
-
- if(vfo_A==switch_A && vfo_B==switch_B) {
- return; // same as last
- }
- vfo_A=switch_A;
- vfo_B=switch_B;
- if(switch_A && switch_B) {
- if(A_or_B==VFO_ENCODER_B) {
- vfoEncoderPos--;
- } else {
- vfoEncoderPos++;
- }
- }
-*/
-}
-
-static void vfoEncoderA() {
- vfoEncoderInt(VFO_ENCODER_A);
}
-static void vfoEncoderB() {
- vfoEncoderInt(VFO_ENCODER_B);
-}
-
-static void e2EncoderInterrupt(int gpio) {
- static int e2CurrentA=1, e2CurrentB=1;
-
+static void e2EncoderInt() {
+ static int e2CurrentA=1;
int levelA=digitalRead(E2_ENCODER_A);
int levelB=digitalRead(E2_ENCODER_B);
}
}
-static void e2EncoderA() {
- e2EncoderInterrupt(E2_ENCODER_A);
-}
-
-static void e2EncoderB() {
- e2EncoderInterrupt(E2_ENCODER_B);
-}
-
#if defined (CONTROLLER2_V2)
-static void e2TopEncoderInterrupt(int gpio) {
- static int e2TopCurrentA=1, e2TopCurrentB=1;
-
+static void e2TopEncoderInt() {
+ static int e2TopCurrentA=1;
int levelA=digitalRead(E2_TOP_ENCODER_A);
int levelB=digitalRead(E2_TOP_ENCODER_B);
e2TopCurrentA=levelA;
}
}
-
-static void e2TopEncoderA() {
- e2TopEncoderInterrupt(E2_TOP_ENCODER_A);
-}
-
-static void e2TopEncoderB() {
- e2TopEncoderInterrupt(E2_TOP_ENCODER_B);
-}
#endif
-static void e3EncoderInterrupt(int gpio) {
- static int e3CurrentA=1, e3CurrentB=1;
-
+static void e3EncoderInt() {
+ static int e3CurrentA=1;
int levelA=digitalRead(E3_ENCODER_A);
int levelB=digitalRead(E3_ENCODER_B);
}
}
-static void e3EncoderA() {
- e3EncoderInterrupt(E3_ENCODER_A);
-}
-
-static void e3EncoderB() {
- e3EncoderInterrupt(E3_ENCODER_B);
-}
-
#if defined (CONTROLLER2_V2)
-static void e3TopEncoderInterrupt(int gpio) {
- static int e3TopCurrentA=1, e3TopCurrentB=1;
-
+static void e3TopEncoderInt() {
+ static int e3TopCurrentA=1;
int levelA=digitalRead(E3_TOP_ENCODER_A);
int levelB=digitalRead(E3_TOP_ENCODER_B);
e3TopCurrentA=levelA;
}
}
-
-static void e3TopEncoderA() {
- e3TopEncoderInterrupt(E3_TOP_ENCODER_A);
-}
-
-static void e3TopEncoderB() {
- e3TopEncoderInterrupt(E3_TOP_ENCODER_B);
-}
#endif
-static void e4EncoderInterrupt(int gpio) {
- static int e4CurrentA=1, e4CurrentB=1;
-
+static void e4EncoderInt() {
+ static int e4CurrentA=1;
int levelA=digitalRead(E4_ENCODER_A);
int levelB=digitalRead(E4_ENCODER_B);
}
}
-static void e4EncoderA() {
- e4EncoderInterrupt(E4_ENCODER_A);
-}
-
-static void e4EncoderB() {
- e4EncoderInterrupt(E4_ENCODER_B);
-}
-
#if defined (CONTROLLER2_V2)
-static void e4TopEncoderInterrupt(int gpio) {
- static int e4TopCurrentA=1, e4TopCurrentB=1;
-
+static void e4TopEncoderInt() {
+ static int e4TopCurrentA=1;
int levelA=digitalRead(E4_TOP_ENCODER_A);
int levelB=digitalRead(E4_TOP_ENCODER_B);
e4TopCurrentA=levelA;
}
}
-
-static void e4TopEncoderA() {
- e4TopEncoderInterrupt(E4_TOP_ENCODER_A);
-}
-
-static void e4TopEncoderB() {
- e4TopEncoderInterrupt(E4_TOP_ENCODER_B);
-}
#endif
#if defined (CONTROLLER2_V2) || defined (CONTROLLER2_V1)
-static void e5EncoderInterrupt(int gpio) {
- static int e5CurrentA=1, e5CurrentB=1;
-
+static void e5EncoderInt() {
+ static int e5CurrentA=1;
int levelA=digitalRead(E5_ENCODER_A);
int levelB=digitalRead(E5_ENCODER_B);
e5CurrentA=levelA;
}
}
-
-static void e5EncoderA() {
- e5EncoderInterrupt(E5_ENCODER_A);
-}
-
-static void e5EncoderB() {
- e5EncoderInterrupt(E5_ENCODER_B);
-}
#endif
#if defined (CONTROLLER2_V2)
-static void e5TopEncoderInterrupt(int gpio) {
- static int e5TopCurrentA=1, e5TopCurrentB=1;
-
+static void e5TopEncoderInt() {
+ static int e5TopCurrentA=1;
int levelA=digitalRead(E5_TOP_ENCODER_A);
int levelB=digitalRead(E5_TOP_ENCODER_B);
e5TopCurrentA=levelA;
}
}
-
-static void e5TopEncoderA() {
- e5TopEncoderInterrupt(E5_TOP_ENCODER_A);
-}
-
-static void e5TopEncoderB() {
- e5TopEncoderInterrupt(E5_TOP_ENCODER_B);
-}
#endif
setup_pin(VFO_FUNCTION, PUD_UP, &vfoFunctionAlert);
vfoFunction=0;
#endif
- setup_encoder_pin(VFO_ENCODER_A,ENABLE_VFO_PULLUP?PUD_UP:PUD_DOWN,&vfoEncoderA);
+ setup_encoder_pin(VFO_ENCODER_A,ENABLE_VFO_PULLUP?PUD_UP:PUD_DOWN,&vfoEncoderInt);
setup_encoder_pin(VFO_ENCODER_B,ENABLE_VFO_PULLUP?PUD_UP:PUD_DOWN,NULL);
- //setup_encoder_pin(VFO_ENCODER_B,ENABLE_VFO_PULLUP?PUD_UP:PUD_DOWN,&vfoEncoderB);
#else
- setup_encoder_pin(VFO_ENCODER_A,ENABLE_VFO_PULLUP?PUD_UP:PUD_DOWN,&vfoEncoderA);
+ setup_encoder_pin(VFO_ENCODER_A,ENABLE_VFO_PULLUP?PUD_UP:PUD_DOWN,&vfoEncoderInt);
setup_encoder_pin(VFO_ENCODER_B,ENABLE_VFO_PULLUP?PUD_UP:PUD_DOWN,NULL);
- //setup_encoder_pin(VFO_ENCODER_B,ENABLE_VFO_PULLUP?PUD_UP:PUD_DOWN,&vfoEncoderB);
#endif
vfoEncoderPos=0;
}
if(ENABLE_E2_ENCODER) {
setup_pin(E2_FUNCTION, PUD_UP, &e2FunctionAlert);
- setup_encoder_pin(E2_ENCODER_A,ENABLE_E2_PULLUP?PUD_UP:PUD_OFF,&e2EncoderA);
+ setup_encoder_pin(E2_ENCODER_A,ENABLE_E2_PULLUP?PUD_UP:PUD_OFF,&e2EncoderInt);
setup_encoder_pin(E2_ENCODER_B,ENABLE_E2_PULLUP?PUD_UP:PUD_OFF,NULL);
e2EncoderPos=0;
#ifdef CONTROLLER2_V2
- setup_encoder_pin(E2_TOP_ENCODER_A,ENABLE_E2_PULLUP?PUD_UP:PUD_OFF,&e2TopEncoderA);
+ setup_encoder_pin(E2_TOP_ENCODER_A,ENABLE_E2_PULLUP?PUD_UP:PUD_OFF,&e2TopEncoderInt);
setup_encoder_pin(E2_TOP_ENCODER_B,ENABLE_E2_PULLUP?PUD_UP:PUD_OFF,NULL);
e2TopEncoderPos=0;
#endif
if(ENABLE_E3_ENCODER) {
setup_pin(E3_FUNCTION, PUD_UP, &e3FunctionAlert);
- setup_encoder_pin(E3_ENCODER_A,ENABLE_E3_PULLUP?PUD_UP:PUD_OFF,&e3EncoderA);
+ setup_encoder_pin(E3_ENCODER_A,ENABLE_E3_PULLUP?PUD_UP:PUD_OFF,&e3EncoderInt);
setup_encoder_pin(E3_ENCODER_B,ENABLE_E3_PULLUP?PUD_UP:PUD_OFF,NULL);
e3EncoderPos=0;
#ifdef CONTROLLER2_V2
- setup_encoder_pin(E3_TOP_ENCODER_A,ENABLE_E3_PULLUP?PUD_UP:PUD_OFF,&e3TopEncoderA);
+ setup_encoder_pin(E3_TOP_ENCODER_A,ENABLE_E3_PULLUP?PUD_UP:PUD_OFF,&e3TopEncoderInt);
setup_encoder_pin(E3_TOP_ENCODER_B,ENABLE_E3_PULLUP?PUD_UP:PUD_OFF,NULL);
e3TopEncoderPos=0;
#endif
if(ENABLE_E4_ENCODER) {
setup_pin(E4_FUNCTION, PUD_UP, &e4FunctionAlert);
- setup_encoder_pin(E4_ENCODER_A,ENABLE_E4_PULLUP?PUD_UP:PUD_OFF,&e4EncoderA);
+ setup_encoder_pin(E4_ENCODER_A,ENABLE_E4_PULLUP?PUD_UP:PUD_OFF,&e4EncoderInt);
setup_encoder_pin(E4_ENCODER_B,ENABLE_E4_PULLUP?PUD_UP:PUD_OFF,NULL);
e4EncoderPos=0;
#ifdef CONTROLLER2_V2
- setup_encoder_pin(E4_TOP_ENCODER_A,ENABLE_E4_PULLUP?PUD_UP:PUD_OFF,&e4TopEncoderA);
+ setup_encoder_pin(E4_TOP_ENCODER_A,ENABLE_E4_PULLUP?PUD_UP:PUD_OFF,&e4TopEncoderInt);
setup_encoder_pin(E4_TOP_ENCODER_B,ENABLE_E4_PULLUP?PUD_UP:PUD_OFF,NULL);
e4TopEncoderPos=0;
#endif
if(ENABLE_E5_ENCODER) {
setup_pin(E5_FUNCTION, PUD_UP, &e5FunctionAlert);
- setup_encoder_pin(E5_ENCODER_A,ENABLE_E5_PULLUP?PUD_UP:PUD_OFF,&e5EncoderA);
+ setup_encoder_pin(E5_ENCODER_A,ENABLE_E5_PULLUP?PUD_UP:PUD_OFF,&e5EncoderInt);
setup_encoder_pin(E5_ENCODER_B,ENABLE_E5_PULLUP?PUD_UP:PUD_OFF,NULL);
e5EncoderPos=0;
#if defined (CONTROLLER2_V2)
- setup_encoder_pin(E5_TOP_ENCODER_A,ENABLE_E5_PULLUP?PUD_UP:PUD_OFF,&e5TopEncoderA);
+ setup_encoder_pin(E5_TOP_ENCODER_A,ENABLE_E5_PULLUP?PUD_UP:PUD_OFF,&e5TopEncoderInt);
setup_encoder_pin(E5_TOP_ENCODER_B,ENABLE_E5_PULLUP?PUD_UP:PUD_OFF,NULL);
e5TopEncoderPos=0;
#endif
}
#endif
- rotary_encoder_thread_id = g_thread_new( "rotary encoder", rotary_encoder_thread, NULL);
+ rotary_encoder_thread_id = g_thread_new( "encoders", rotary_encoder_thread, NULL);
if( ! rotary_encoder_thread_id )
{
fprintf(stderr,"g_thread_new failed on rotary_encoder_thread\n");
extern GtkWidget *grid;
extern void status_text(char *text);
+extern gboolean keypress_cb(GtkWidget *widget, GdkEventKey *event, gpointer data);
#endif
}
/*
-static void
-smeter_select_cb (GtkWidget *widget,
- gpointer data)
+static void smeter_select_cb (GtkWidget *widget, gpointer data)
{
smeter=(int)data;
}
-static void
-alc_meter_select_cb (GtkWidget *widget,
- gpointer data)
+static void alc_meter_select_cb (GtkWidget *widget, gpointer data)
{
alc=(int)data;
}
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (smeter_peak), smeter==RXA_S_PK);
gtk_widget_show(smeter_peak);
gtk_grid_attach(GTK_GRID(grid),smeter_peak,0,1,1,1);
- g_signal_connect(smeter_peak,"pressed",G_CALLBACK(smeter_select_cb),(gpointer *)RXA_S_PK);
+ g_signal_connect(smeter_peak,"toggled",G_CALLBACK(smeter_select_cb),(gpointer *)RXA_S_PK);
GtkWidget *smeter_average=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(smeter_peak),"S Meter Average");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (smeter_average), smeter==RXA_S_AV);
gtk_widget_show(smeter_average);
gtk_grid_attach(GTK_GRID(grid),smeter_average,0,2,1,1);
- g_signal_connect(smeter_average,"pressed",G_CALLBACK(smeter_select_cb),(gpointer *)RXA_S_AV);
+ g_signal_connect(smeter_average,"toggled",G_CALLBACK(smeter_select_cb),(gpointer *)RXA_S_AV);
GtkWidget *alc_peak=gtk_radio_button_new_with_label(NULL,"ALC Peak");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (alc_peak), alc==TXA_ALC_PK);
gtk_widget_show(alc_peak);
gtk_grid_attach(GTK_GRID(grid),alc_peak,1,1,1,1);
- g_signal_connect(alc_peak,"pressed",G_CALLBACK(alc_meter_select_cb),(gpointer *)TXA_ALC_PK);
+ g_signal_connect(alc_peak,"toggled",G_CALLBACK(alc_meter_select_cb),(gpointer *)TXA_ALC_PK);
GtkWidget *alc_average=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(alc_peak),"ALC Average");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (alc_average), alc==TXA_ALC_AV);
gtk_widget_show(alc_average);
gtk_grid_attach(GTK_GRID(grid),alc_average,1,2,1,1);
- g_signal_connect(alc_average,"pressed",G_CALLBACK(alc_meter_select_cb),(gpointer *)TXA_ALC_AV);
+ g_signal_connect(alc_average,"toggled",G_CALLBACK(alc_meter_select_cb),(gpointer *)TXA_ALC_AV);
- GtkWidget *alc_gain=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(alc_average),"ALC Gain");
+ GtkWidget *alc_gain=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(alc_peak),"ALC Gain");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (alc_gain), alc==TXA_ALC_GAIN);
gtk_widget_show(alc_gain);
gtk_grid_attach(GTK_GRID(grid),alc_gain,1,3,1,1);
- g_signal_connect(alc_gain,"pressed",G_CALLBACK(alc_meter_select_cb),(gpointer *)TXA_ALC_GAIN);
+ g_signal_connect(alc_gain,"toggled",G_CALLBACK(alc_meter_select_cb),(gpointer *)TXA_ALC_GAIN);
gtk_container_add(GTK_CONTAINER(content),grid);
return FALSE;
}
-static void smeter_select_cb (GtkWidget *widget, gpointer data) {
- smeter=GPOINTER_TO_UINT(data);
+static void smeter_select_cb (GtkToggleButton *widget, gpointer data) {
+ if(gtk_toggle_button_get_active(widget)) {
+ smeter=GPOINTER_TO_UINT(data);
+ }
}
-static void alc_meter_select_cb (GtkWidget *widget, gpointer data) {
+static void alc_meter_select_cb (GtkToggleButton *widget, gpointer data) {
alc=GPOINTER_TO_UINT(data);
}
-static void analog_cb(GtkWidget *widget, gpointer data) {
- analog_meter=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+static void analog_cb(GtkToggleButton *widget, gpointer data) {
+ if(gtk_toggle_button_get_active(widget)) {
+ analog_meter=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+ }
}
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (smeter_peak), smeter==RXA_S_PK);
gtk_widget_show(smeter_peak);
gtk_grid_attach(GTK_GRID(grid),smeter_peak,0,1,1,1);
- g_signal_connect(smeter_peak,"pressed",G_CALLBACK(smeter_select_cb),(gpointer)(long)RXA_S_PK);
+ g_signal_connect(smeter_peak,"toggled",G_CALLBACK(smeter_select_cb),(gpointer)(long)RXA_S_PK);
GtkWidget *smeter_average=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(smeter_peak),"S Meter Average");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (smeter_average), smeter==RXA_S_AV);
gtk_widget_show(smeter_average);
gtk_grid_attach(GTK_GRID(grid),smeter_average,0,2,1,1);
- g_signal_connect(smeter_average,"pressed",G_CALLBACK(smeter_select_cb),(gpointer)(long)RXA_S_AV);
+ g_signal_connect(smeter_average,"toggled",G_CALLBACK(smeter_select_cb),(gpointer)(long)RXA_S_AV);
GtkWidget *alc_peak=gtk_radio_button_new_with_label(NULL,"ALC Peak");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (alc_peak), alc==TXA_ALC_PK);
gtk_widget_show(alc_peak);
gtk_grid_attach(GTK_GRID(grid),alc_peak,1,1,1,1);
- g_signal_connect(alc_peak,"pressed",G_CALLBACK(alc_meter_select_cb),(gpointer)(long)TXA_ALC_PK);
+ g_signal_connect(alc_peak,"toggled",G_CALLBACK(alc_meter_select_cb),(gpointer)(long)TXA_ALC_PK);
GtkWidget *alc_average=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(alc_peak),"ALC Average");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (alc_average), alc==TXA_ALC_AV);
gtk_widget_show(alc_average);
gtk_grid_attach(GTK_GRID(grid),alc_average,1,2,1,1);
- g_signal_connect(alc_average,"pressed",G_CALLBACK(alc_meter_select_cb),(gpointer)(long)TXA_ALC_AV);
+ g_signal_connect(alc_average,"toggled",G_CALLBACK(alc_meter_select_cb),(gpointer)(long)TXA_ALC_AV);
- GtkWidget *alc_gain=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(alc_average),"ALC Gain");
+ GtkWidget *alc_gain=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(alc_peak),"ALC Gain");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (alc_gain), alc==TXA_ALC_GAIN);
gtk_widget_show(alc_gain);
gtk_grid_attach(GTK_GRID(grid),alc_gain,1,3,1,1);
- g_signal_connect(alc_gain,"pressed",G_CALLBACK(alc_meter_select_cb),(gpointer)(long)TXA_ALC_GAIN);
+ g_signal_connect(alc_gain,"toggled",G_CALLBACK(alc_meter_select_cb),(gpointer)(long)TXA_ALC_GAIN);
gtk_container_add(GTK_CONTAINER(content),grid);
static int local_ptt=0;
+static void new_protocol_start();
static void new_protocol_high_priority();
static void new_protocol_general();
static void new_protocol_receive_specific();
rc=sem_init(&iq_sem_ready[i], 0, 0);
rc=sem_init(&iq_sem_buffer[i], 0, 0);
#endif
- iq_thread_id[i] = g_thread_new( "iq thread", iq_thread, (gpointer)(long)i);
+ iq_thread_id[i] = g_thread_new( "iq thread", iq_thread, GINT_TO_POINTER(i));
}
-data_socket=socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP);
+ data_socket=socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP);
if(data_socket<0) {
fprintf(stderr,"NewProtocol: create socket failed for data_socket\n");
exit(-1);
exit(-1);
}
-fprintf(stderr,"new_protocol_thread: date_socket %d bound to interface\n",data_socket);
+fprintf(stderr,"new_protocol_init: data_socket %d bound to interface %s:%d\n",data_socket,inet_ntoa(radio->info.network.interface_address.sin_addr),ntohs(radio->info.network.interface_address.sin_port));
memcpy(&base_addr,&radio->info.network.address,radio->info.network.address_length);
base_addr_length=radio->info.network.address_length;
base_addr.sin_port=htons(GENERAL_REGISTERS_FROM_HOST_PORT);
+g_print("base_addr=%s\n",inet_ntoa(radio->info.network.address.sin_addr));
+
memcpy(&receiver_addr,&radio->info.network.address,radio->info.network.address_length);
receiver_addr_length=radio->info.network.address_length;
receiver_addr.sin_port=htons(RECEIVER_SPECIFIC_REGISTERS_FROM_HOST_PORT);
+g_print("receive_addr=%s\n",inet_ntoa(radio->info.network.address.sin_addr));
memcpy(&transmitter_addr,&radio->info.network.address,radio->info.network.address_length);
transmitter_addr_length=radio->info.network.address_length;
transmitter_addr.sin_port=htons(TRANSMITTER_SPECIFIC_REGISTERS_FROM_HOST_PORT);
+g_print("transmit_addr=%s\n",inet_ntoa(radio->info.network.address.sin_addr));
memcpy(&high_priority_addr,&radio->info.network.address,radio->info.network.address_length);
high_priority_addr_length=radio->info.network.address_length;
high_priority_addr.sin_port=htons(HIGH_PRIORITY_FROM_HOST_PORT);
+g_print("high_priority_addr=%s\n",inet_ntoa(radio->info.network.address.sin_addr));
fprintf(stderr,"new_protocol_thread: high_priority_addr setup for port %d\n",HIGH_PRIORITY_FROM_HOST_PORT);
memcpy(&audio_addr,&radio->info.network.address,radio->info.network.address_length);
audio_addr_length=radio->info.network.address_length;
audio_addr.sin_port=htons(AUDIO_FROM_HOST_PORT);
+g_print("audio_addr=%s\n",inet_ntoa(radio->info.network.address.sin_addr));
memcpy(&iq_addr,&radio->info.network.address,radio->info.network.address_length);
iq_addr_length=radio->info.network.address_length;
iq_addr.sin_port=htons(TX_IQ_FROM_HOST_PORT);
+g_print("iq_addr=%s\n",inet_ntoa(radio->info.network.address.sin_addr));
for(i=0;i<MAX_DDC;i++) {
}
fprintf(stderr, "new_protocol_thread: id=%p\n",new_protocol_thread_id);
+ new_protocol_general();
+ new_protocol_start();
+ new_protocol_high_priority();
+
}
static void new_protocol_general() {
BAND *band;
+ int rc;
pthread_mutex_lock(&general_mutex);
if(split) {
}
//fprintf(stderr,"Alex Enable=%02X\n",general_buffer[59]);
+//g_print("new_protocol_general: %s:%d\n",inet_ntoa(base_addr.sin_addr),ntohs(base_addr.sin_port));
- if(sendto(data_socket,general_buffer,sizeof(general_buffer),0,(struct sockaddr*)&base_addr,base_addr_length)<0) {
+ if((rc=sendto(data_socket,general_buffer,sizeof(general_buffer),0,(struct sockaddr*)&base_addr,base_addr_length))<0) {
fprintf(stderr,"sendto socket failed for general\n");
exit(1);
}
+ if(rc!=sizeof(general_buffer)) {
+ fprintf(stderr,"sendto socket for general: %d rather than %ld",rc,sizeof(general_buffer));
+ }
+
general_sequence++;
pthread_mutex_unlock(&general_mutex);
}
i=receiver[PS_RX_FEEDBACK]->alex_antenna; // 0, 6, or 7
}
#endif
- if (device == DEVICE_ORION2) {
+ if (device == NEW_DEVICE_ORION2) {
i +=100;
} else if (new_pa_board) {
// New-PA setting invalid on ANAN-7000,8000
//
// Voila mes amis. Envoyons les 1444 octets "high priority" au radio
//
+//g_print("new_protocol_high_priority: %s:%d\n",inet_ntoa(high_priority_addr.sin_addr),ntohs(high_priority_addr.sin_port));
int rc;
if((rc=sendto(data_socket,high_priority_buffer_to_radio,sizeof(high_priority_buffer_to_radio),0,(struct sockaddr*)&high_priority_addr,high_priority_addr_length))<0) {
fprintf(stderr,"sendto socket failed for high priority: rc=%d errno=%d\n",rc,errno);
abort();
//exit(1);
}
+
+ if(rc!=sizeof(high_priority_buffer_to_radio)) {
+ fprintf(stderr,"sendto socket for high_priority: %d rather than %ld",rc,sizeof(high_priority_buffer_to_radio));
+ }
high_priority_sequence++;
update_action_table();
static void new_protocol_transmit_specific() {
int mode;
+ int rc;
pthread_mutex_lock(&tx_spec_mutex);
memset(transmit_specific_buffer, 0, sizeof(transmit_specific_buffer));
// Attenuator for ADC0 upon TX
transmit_specific_buffer[59]=transmitter->attenuation;
- if(sendto(data_socket,transmit_specific_buffer,sizeof(transmit_specific_buffer),0,(struct sockaddr*)&transmitter_addr,transmitter_addr_length)<0) {
- fprintf(stderr,"sendto socket failed for tx specific\n");
+//g_print("new_protocol_transmit_specific: %s:%d\n",inet_ntoa(transmitter_addr.sin_addr),ntohs(transmitter_addr.sin_port));
+
+ if((rc=sendto(data_socket,transmit_specific_buffer,sizeof(transmit_specific_buffer),0,(struct sockaddr*)&transmitter_addr,transmitter_addr_length))<0) {
+ fprintf(stderr,"sendto socket failed for tx specific: %d\n",rc);
exit(1);
}
+ if(rc!=sizeof(transmit_specific_buffer)) {
+ fprintf(stderr,"sendto socket for transmit_specific: %d rather than %ld",rc,sizeof(transmit_specific_buffer));
+ }
+
tx_specific_sequence++;
pthread_mutex_unlock(&tx_spec_mutex);
static void new_protocol_receive_specific() {
int i;
int ddc;
+ int rc;
pthread_mutex_lock(&rx_spec_mutex);
memset(receive_specific_buffer, 0, sizeof(receive_specific_buffer));
receive_specific_buffer[7]=1; // enable DDC0 but disable all others
}
-//fprintf(stderr,"new_protocol_receive_specific: enable=%02X\n",receive_specific_buffer[7]);
- if(sendto(data_socket,receive_specific_buffer,sizeof(receive_specific_buffer),0,(struct sockaddr*)&receiver_addr,receiver_addr_length)<0) {
- fprintf(stderr,"sendto socket failed for start\n");
- exit(1);
+//g_print("new_protocol_receive_specific: %s:%d enable=%02X\n",inet_ntoa(receiver_addr.sin_addr),ntohs(receiver_addr.sin_port),receive_specific_buffer[7]);
+
+ if((rc=sendto(data_socket,receive_specific_buffer,sizeof(receive_specific_buffer),0,(struct sockaddr*)&receiver_addr,receiver_addr_length))<0) {
+ fprintf(stderr,"sendto socket failed for receive_specific: %d\n",rc);
+ exit(1);
+ }
+
+ if(rc!=sizeof(receive_specific_buffer)) {
+ fprintf(stderr,"sendto socket for receive_specific: %d rather than %ld",rc,sizeof(receive_specific_buffer));
}
rx_specific_sequence++;
micsamples=0;
iqindex=4;
-
-/*
- data_socket=socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP);
- if(data_socket<0) {
- fprintf(stderr,"metis: create socket failed for data_socket\n");
- exit(-1);
- }
-
- int optval = 1;
- setsockopt(data_socket, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval));
- setsockopt(data_socket, SOL_SOCKET, SO_REUSEPORT, &optval, sizeof(optval));
-
- // bind to the interface
- if(bind(data_socket,(struct sockaddr*)&radio->info.network.interface_address,radio->info.network.interface_length)<0) {
- fprintf(stderr,"metis: bind socket failed for data_socket\n");
- exit(-1);
- }
-
-fprintf(stderr,"new_protocol_thread: date_socket %d bound to interface\n");
-
- memcpy(&base_addr,&radio->info.network.address,radio->info.network.address_length);
- base_addr_length=radio->info.network.address_length;
- base_addr.sin_port=htons(GENERAL_REGISTERS_FROM_HOST_PORT);
-
- memcpy(&receiver_addr,&radio->info.network.address,radio->info.network.address_length);
- receiver_addr_length=radio->info.network.address_length;
- receiver_addr.sin_port=htons(RECEIVER_SPECIFIC_REGISTERS_FROM_HOST_PORT);
-
- memcpy(&transmitter_addr,&radio->info.network.address,radio->info.network.address_length);
- transmitter_addr_length=radio->info.network.address_length;
- transmitter_addr.sin_port=htons(TRANSMITTER_SPECIFIC_REGISTERS_FROM_HOST_PORT);
-
- memcpy(&high_priority_addr,&radio->info.network.address,radio->info.network.address_length);
- high_priority_addr_length=radio->info.network.address_length;
- high_priority_addr.sin_port=htons(HIGH_PRIORITY_FROM_HOST_PORT);
-
-fprintf(stderr,"new_protocol_thread: high_priority_addr setup for port %d\n",HIGH_PRIORITY_FROM_HOST_PORT);
-
- memcpy(&audio_addr,&radio->info.network.address,radio->info.network.address_length);
- audio_addr_length=radio->info.network.address_length;
- audio_addr.sin_port=htons(AUDIO_FROM_HOST_PORT);
-
- memcpy(&iq_addr,&radio->info.network.address,radio->info.network.address_length);
- iq_addr_length=radio->info.network.address_length;
- iq_addr.sin_port=htons(TX_IQ_FROM_HOST_PORT);
-
-
- for(i=0;i<MAX_DDC;i++) {
- memcpy(&data_addr[i],&radio->info.network.address,radio->info.network.address_length);
- data_addr_length[i]=radio->info.network.address_length;
- data_addr[i].sin_port=htons(RX_IQ_TO_HOST_PORT_0+i);
- }
-*/
audioindex=4; // leave space for sequence
audiosequence=0L;
running=1;
- new_protocol_general();
- new_protocol_start();
- new_protocol_high_priority();
while(running) {
exit(-1);
}
- short sourceport=ntohs(addr.sin_port);
+ sourceport=ntohs(addr.sin_port);
+
+//g_print("new_protocol_thread: recvd %d bytes on port %d\n",bytesread,sourceport);
switch(sourceport) {
case RX_IQ_TO_HOST_PORT_0:
case RX_IQ_TO_HOST_PORT_6:
case RX_IQ_TO_HOST_PORT_7:
ddc=sourceport-RX_IQ_TO_HOST_PORT_0;
-//fprintf(stderr,"iq packet from port=%d ddc=%d\n",sourceport,ddc);
+//g_print("iq packet from port=%d ddc=%d\n",sourceport,ddc);
if(ddc>=MAX_DDC) {
fprintf(stderr,"unexpected iq data from ddc %d\n",ddc);
} else {
}
static gpointer iq_thread(gpointer data) {
- int ddc=GPOINTER_TO_UINT(data);
+ int ddc=GPOINTER_TO_INT(data);
long sequence;
unsigned char *buffer;
fprintf(stderr,"iq_thread: ddc=%d\n",ddc);
bitspersample=((buffer[12]&0xFF)<<8)+(buffer[13]&0xFF);
samplesperframe=((buffer[14]&0xFF)<<8)+(buffer[15]&0xFF);
-//fprintf(stderr,"process_iq_data: rx=%d bitspersample=%d samplesperframe=%d\n",rx->id, bitspersample,samplesperframe);
+//g_print("process_iq_data: rx=%d bitspersample=%d samplesperframe=%d\n",rx->id, bitspersample,samplesperframe);
b=16;
int i;
for(i=0;i<samplesperframe;i++) {
g_idle_add(ext_vfo_update,NULL);
}
-static void nb_none_cb(GtkWidget *widget, gpointer data) {
- active_receiver->nb=0;
- active_receiver->nb2=0;
- mode_settings[vfo[active_receiver->id].mode].nb=0;
- mode_settings[vfo[active_receiver->id].mode].nb2=0;
- update_noise();
+static void nb_none_cb(GtkToggleButton *widget, gpointer data) {
+ if(gtk_toggle_button_get_active(widget)) {
+ active_receiver->nb=0;
+ active_receiver->nb2=0;
+ mode_settings[vfo[active_receiver->id].mode].nb=0;
+ mode_settings[vfo[active_receiver->id].mode].nb2=0;
+ update_noise();
+ }
}
-static void nb_cb(GtkWidget *widget, gpointer data) {
- active_receiver->nb=1;
- active_receiver->nb2=0;
- mode_settings[vfo[active_receiver->id].mode].nb=1;
- mode_settings[vfo[active_receiver->id].mode].nb2=0;
- update_noise();
+static void nb_cb(GtkToggleButton *widget, gpointer data) {
+ if(gtk_toggle_button_get_active(widget)) {
+ active_receiver->nb=1;
+ active_receiver->nb2=0;
+ mode_settings[vfo[active_receiver->id].mode].nb=1;
+ mode_settings[vfo[active_receiver->id].mode].nb2=0;
+ update_noise();
+ }
}
-static void nr_none_cb(GtkWidget *widget, gpointer data) {
- active_receiver->nr=0;
- active_receiver->nr2=0;
- mode_settings[vfo[active_receiver->id].mode].nr=0;
- mode_settings[vfo[active_receiver->id].mode].nr2=0;
- update_noise();
+static void nr_none_cb(GtkToggleButton *widget, gpointer data) {
+ if(gtk_toggle_button_get_active(widget)) {
+ active_receiver->nr=0;
+ active_receiver->nr2=0;
+ mode_settings[vfo[active_receiver->id].mode].nr=0;
+ mode_settings[vfo[active_receiver->id].mode].nr2=0;
+ update_noise();
+ }
}
-static void nr_cb(GtkWidget *widget, gpointer data) {
- active_receiver->nr=1;
- active_receiver->nr2=0;
- mode_settings[vfo[active_receiver->id].mode].nr=1;
- mode_settings[vfo[active_receiver->id].mode].nr2=0;
- update_noise();
+static void nr_cb(GtkToggleButton *widget, gpointer data) {
+ if(gtk_toggle_button_get_active(widget)) {
+ active_receiver->nr=1;
+ active_receiver->nr2=0;
+ mode_settings[vfo[active_receiver->id].mode].nr=1;
+ mode_settings[vfo[active_receiver->id].mode].nr2=0;
+ update_noise();
+ }
}
-static void nb2_cb(GtkWidget *widget, gpointer data) {
- active_receiver->nb=0;
- active_receiver->nb2=1;
- mode_settings[vfo[active_receiver->id].mode].nb=0;
- mode_settings[vfo[active_receiver->id].mode].nb2=1;
- update_noise();
+static void nb2_cb(GtkToggleButton *widget, gpointer data) {
+ if(gtk_toggle_button_get_active(widget)) {
+ active_receiver->nb=0;
+ active_receiver->nb2=1;
+ mode_settings[vfo[active_receiver->id].mode].nb=0;
+ mode_settings[vfo[active_receiver->id].mode].nb2=1;
+ update_noise();
+ }
}
-static void nr2_cb(GtkWidget *widget, gpointer data) {
- active_receiver->nr=0;
- active_receiver->nr2=1;
- mode_settings[vfo[active_receiver->id].mode].nr=0;
- mode_settings[vfo[active_receiver->id].mode].nr2=1;
- update_noise();
+static void nr2_cb(GtkToggleButton *widget, gpointer data) {
+ if(gtk_toggle_button_get_active(widget)) {
+ active_receiver->nr=0;
+ active_receiver->nr2=1;
+ mode_settings[vfo[active_receiver->id].mode].nr=0;
+ mode_settings[vfo[active_receiver->id].mode].nr2=1;
+ update_noise();
+ }
}
static void anf_cb(GtkWidget *widget, gpointer data) {
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b_nb_none), active_receiver->nb==0 && active_receiver->nb2==0);
gtk_widget_show(b_nb_none);
gtk_grid_attach(GTK_GRID(grid),b_nb_none,col,row,1,1);
- g_signal_connect(b_nb_none,"pressed",G_CALLBACK(nb_none_cb),NULL);
+ g_signal_connect(b_nb_none,"toggled",G_CALLBACK(nb_none_cb),NULL);
col++;
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b_nr_none), active_receiver->nr==0 && active_receiver->nr2==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,"pressed",G_CALLBACK(nr_none_cb),NULL);
+ g_signal_connect(b_nr_none,"toggled",G_CALLBACK(nr_none_cb),NULL);
col++;
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b_nb), active_receiver->nb);
gtk_widget_show(b_nb);
gtk_grid_attach(GTK_GRID(grid),b_nb,col,row,1,1);
- g_signal_connect(b_nb,"pressed",G_CALLBACK(nb_cb),NULL);
+ g_signal_connect(b_nb,"toggled",G_CALLBACK(nb_cb),NULL);
col++;
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b_nr), active_receiver->nr);
gtk_widget_show(b_nr);
gtk_grid_attach(GTK_GRID(grid),b_nr,col,row,1,1);
- g_signal_connect(b_nr,"pressed",G_CALLBACK(nr_cb),NULL);
+ g_signal_connect(b_nr,"toggled",G_CALLBACK(nr_cb),NULL);
col++;
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b_nb2), active_receiver->nb2);
gtk_widget_show(b_nb2);
gtk_grid_attach(GTK_GRID(grid),b_nb2,col,row,1,1);
- g_signal_connect(b_nb2,"pressed",G_CALLBACK(nb2_cb),NULL);
+ g_signal_connect(b_nb2,"toggled",G_CALLBACK(nb2_cb),NULL);
col++;
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b_nr2), active_receiver->nr2);
gtk_widget_show(b_nr2);
gtk_grid_attach(GTK_GRID(grid),b_nr2,col,row,1,1);
- g_signal_connect(b_nr2,"pressed",G_CALLBACK(nr2_cb),NULL);
+ g_signal_connect(b_nr2,"toggled",G_CALLBACK(nr2_cb),NULL);
gtk_container_add(GTK_CONTAINER(content),grid);
}
}
- if (!isTransmitting() && !diversity_enabled) {
+ if ((!isTransmitting() || duplex) && !diversity_enabled) {
//
// RX without DIVERSITY. Feed samples to RX1 and RX2
//
#ifdef SOAPYSDR
if(radio->device==SOAPYSDR_USB_DEVICE) {
iqswap=1;
+ receivers=1;
}
- receivers=1;
#endif
adc_attenuation[0]=0;
if(duplex) {
transmitter=create_transmitter(CHANNEL_TX, buffer_size, fft_size, updates_per_second, display_width/4, display_height/2);
} else {
- transmitter=create_transmitter(CHANNEL_TX, buffer_size, fft_size, updates_per_second, display_width, PANADAPTER_HEIGHT);
+ int tx_height=display_height-VFO_HEIGHT;
+ if(display_sliders) tx_height-=SLIDERS_HEIGHT;
+ if(display_toolbar) tx_height-=TOOLBAR_HEIGHT;
+ transmitter=create_transmitter(CHANNEL_TX, buffer_size, fft_size, updates_per_second, display_width, tx_height);
}
transmitter->x=0;
transmitter->y=VFO_HEIGHT;
}
void setFrequency(long long f) {
- BAND *band=band_get_current_band();
- BANDSTACK_ENTRY* entry=bandstack_entry_get_current();
int v=active_receiver->id;
+ vfo[v].band=get_band_from_frequency(f);
switch(protocol) {
case NEW_PROTOCOL:
long long maxf=vfo[v].frequency+(long long)(active_receiver->sample_rate/2);
if(f<minf) f=minf;
if(f>maxf) f=maxf;
+ vfo[v].ctun_frequency=f;
vfo[v].offset=f-vfo[v].frequency;
set_offset(active_receiver,vfo[v].offset);
return;
} else {
- //entry->frequency=f;
vfo[v].frequency=f;
}
break;
}
-static void sample_rate_cb(GtkWidget *widget, gpointer data) {
- radio_change_sample_rate(GPOINTER_TO_INT(data));
+static void sample_rate_cb(GtkToggleButton *widget, gpointer data) {
+ if(gtk_toggle_button_get_active(widget)) {
+ radio_change_sample_rate(GPOINTER_TO_INT(data));
+ }
}
-static void receivers_cb(GtkWidget *widget, gpointer data) {
- radio_change_receivers(GPOINTER_TO_INT(data));
+static void receivers_cb(GtkToggleButton *widget, gpointer data) {
+ if(gtk_toggle_button_get_active(widget)) {
+ radio_change_receivers(GPOINTER_TO_INT(data));
+ }
}
static void region_cb(GtkWidget *widget, gpointer data) {
radio_change_region(gtk_combo_box_get_active (GTK_COMBO_BOX(widget)));
-/*
- radio_change_region(GPOINTER_TO_INT(data));
-*/
}
static void rit_cb(GtkWidget *widget,gpointer data) {
GtkWidget *receivers_1=gtk_radio_button_new_with_label(NULL,"1");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (receivers_1), receivers==1);
gtk_grid_attach(GTK_GRID(grid),receivers_1,col,row,1,1);
- g_signal_connect(receivers_1,"pressed",G_CALLBACK(receivers_cb),(gpointer *)1);
+ g_signal_connect(receivers_1,"toggled",G_CALLBACK(receivers_cb),(gpointer *)1);
row++;
GtkWidget *receivers_2=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(receivers_1),"2");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (receivers_2), receivers==2);
gtk_grid_attach(GTK_GRID(grid),receivers_2,col,row,1,1);
- g_signal_connect(receivers_2,"pressed",G_CALLBACK(receivers_cb),(gpointer *)2);
+ g_signal_connect(receivers_2,"toggled",G_CALLBACK(receivers_cb),(gpointer *)2);
row++;
col++;
if(row>temp_row) temp_row=row;
GtkWidget *sample_rate_48=gtk_radio_button_new_with_label(NULL,"48000");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sample_rate_48), active_receiver->sample_rate==48000);
gtk_grid_attach(GTK_GRID(grid),sample_rate_48,col,row,1,1);
- g_signal_connect(sample_rate_48,"pressed",G_CALLBACK(sample_rate_cb),(gpointer *)48000);
+ g_signal_connect(sample_rate_48,"toggled",G_CALLBACK(sample_rate_cb),(gpointer *)48000);
row++;
GtkWidget *sample_rate_96=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(sample_rate_48),"96000");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sample_rate_96), active_receiver->sample_rate==96000);
gtk_grid_attach(GTK_GRID(grid),sample_rate_96,col,row,1,1);
- g_signal_connect(sample_rate_96,"pressed",G_CALLBACK(sample_rate_cb),(gpointer *)96000);
+ g_signal_connect(sample_rate_96,"toggled",G_CALLBACK(sample_rate_cb),(gpointer *)96000);
row++;
GtkWidget *sample_rate_192=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(sample_rate_96),"192000");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sample_rate_192), active_receiver->sample_rate==192000);
gtk_grid_attach(GTK_GRID(grid),sample_rate_192,col,row,1,1);
- g_signal_connect(sample_rate_192,"pressed",G_CALLBACK(sample_rate_cb),(gpointer *)192000);
+ g_signal_connect(sample_rate_192,"toggled",G_CALLBACK(sample_rate_cb),(gpointer *)192000);
row++;
GtkWidget *sample_rate_384=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(sample_rate_192),"384000");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sample_rate_384), active_receiver->sample_rate==384000);
gtk_grid_attach(GTK_GRID(grid),sample_rate_384,col,row,1,1);
- g_signal_connect(sample_rate_384,"pressed",G_CALLBACK(sample_rate_cb),(gpointer *)384000);
+ g_signal_connect(sample_rate_384,"toggled",G_CALLBACK(sample_rate_cb),(gpointer *)384000);
row++;
if(protocol==NEW_PROTOCOL) {
GtkWidget *sample_rate_768=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(sample_rate_384),"768000");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sample_rate_768), active_receiver->sample_rate==768000);
gtk_grid_attach(GTK_GRID(grid),sample_rate_768,col,row,1,1);
- g_signal_connect(sample_rate_768,"pressed",G_CALLBACK(sample_rate_cb),(gpointer *)768000);
+ g_signal_connect(sample_rate_768,"toggled",G_CALLBACK(sample_rate_cb),(gpointer *)768000);
row++;
GtkWidget *sample_rate_1536=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(sample_rate_768),"1536000");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sample_rate_1536), active_receiver->sample_rate==1536000);
gtk_grid_attach(GTK_GRID(grid),sample_rate_1536,col,row,1,1);
- g_signal_connect(sample_rate_1536,"pressed",G_CALLBACK(sample_rate_cb),(gpointer *)1536000);
+ g_signal_connect(sample_rate_1536,"toggled",G_CALLBACK(sample_rate_cb),(gpointer *)1536000);
row++;
#ifdef GPIO
GtkWidget *sample_rate=gtk_radio_button_new_with_label(NULL,rate);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sample_rate), radio->info.soapy.sample_rate);
gtk_grid_attach(GTK_GRID(grid),sample_rate,col,row,1,1);
- g_signal_connect(sample_rate,"pressed",G_CALLBACK(sample_rate_cb),GINT_TO_POINTER(radio->info.soapy.sample_rate));
+ g_signal_connect(sample_rate,"toggled",G_CALLBACK(sample_rate_cb),GINT_TO_POINTER(radio->info.soapy.sample_rate));
col++;
}
}
// allocate buffers
rx->iq_input_buffer=g_new(double,2*rx->buffer_size);
- rx->audio_buffer=NULL;
+ //rx->audio_buffer=NULL;
rx->audio_sequence=0L;
rx->pixel_samples=malloc(sizeof(float)*(rx->pixels));
fprintf(stderr,"create_receiver: id=%d buffer_size=%d fft_size=%d pixels=%d fps=%d\n",id,buffer_size, fft_size, pixels, fps);
RECEIVER *rx=malloc(sizeof(RECEIVER));
rx->id=id;
+ g_mutex_init(&rx->mutex);
switch(id) {
case 0:
rx->adc=0;
rx->waterfall_automatic=1;
rx->volume=0.1;
+ rx->rf_gain=50.0;
rx->dither=0;
rx->random=0;
#endif
fprintf(stderr,"create_receiver (after restore): rx=%p id=%d audio_buffer_size=%d local_audio=%d\n",rx,rx->id,rx->audio_buffer_size,rx->local_audio);
- rx->audio_buffer=g_new(guchar,rx->audio_buffer_size);
+ //rx->audio_buffer=g_new(guchar,rx->audio_buffer_size);
int scale=rx->sample_rate/48000;
rx->output_samples=rx->buffer_size/scale;
rx->audio_output_buffer=g_new(gdouble,2*rx->output_samples);
}
receiver_mode_changed(rx);
- //set_mode(rx,vfo[rx->id].mode);
- //set_filter(rx,rx->filter_low,rx->filter_high);
+ //receiver_frequency_changed(rx);
int result;
XCreateAnalyzer(rx->id, &result, 262144, 1, 1, "");
// that the central part can be displayed in the TX panadapter
//
+ g_mutex_lock(&rx->mutex);
rx->sample_rate=sample_rate;
int scale=rx->sample_rate/48000;
init_analyzer(rx);
fprintf(stderr,"PS FEEDBACK change sample rate:id=%d rate=%d buffer_size=%d output_samples=%d\n",
rx->id, rx->sample_rate, rx->buffer_size, rx->output_samples);
+ g_mutex_unlock(&rx->mutex);
return;
}
#endif
- init_analyzer(rx);
-
SetChannelState(rx->id,0,1);
- free(rx->audio_output_buffer);
- rx->audio_output_buffer=g_new(double,2*rx->output_samples);
- rx->audio_buffer=g_new(guchar,rx->audio_buffer_size);
+ init_analyzer(rx);
SetInputSamplerate(rx->id, sample_rate);
SetEXTANBSamplerate (rx->id, sample_rate);
SetEXTNOBSamplerate (rx->id, sample_rate);
-
#ifdef SOAPYSDR
if(protocol==SOAPYSDR_PROTOCOL) {
rx->resample_step=radio_sample_rate/rx->sample_rate;
SetChannelState(rx->id,1,0);
+ g_mutex_unlock(&rx->mutex);
+
fprintf(stderr,"receiver_change_sample_rate: id=%d rate=%d buffer_size=%d output_samples=%d\n",rx->id, rx->sample_rate, rx->buffer_size, rx->output_samples);
}
int j;
int error;
+ g_mutex_lock(&rx->mutex);
+
// noise blanker works on origianl IQ samples
if(rx->nb) {
xanbEXT (rx->id, rx->iq_input_buffer, rx->iq_input_buffer);
}
g_mutex_unlock(&rx->freedv_mutex);
#endif
+ g_mutex_unlock(&rx->mutex);
}
static int rx_buffer_seen=0;
typedef struct _receiver {
gint id;
+ GMutex mutex;
gint ddc;
gint adc;
gdouble *iq_input_buffer;
gdouble *audio_output_buffer;
gint audio_buffer_size;
- guchar *audio_buffer;
+ //guchar *audio_buffer;
gint audio_index;
guint32 audio_sequence;
gfloat *pixel_samples;
}
}
-static void sample_rate_cb(GtkWidget *widget, gpointer data) {
- receiver_change_sample_rate(active_receiver,GPOINTER_TO_INT(data));
+static void sample_rate_cb(GtkToggleButton *widget,gpointer data) {
+ if(gtk_toggle_button_get_active(widget)) {
+ receiver_change_sample_rate(active_receiver,GPOINTER_TO_INT(data));
+ }
}
-static void adc_cb(GtkWidget *widget, gpointer data) {
- receiver_change_adc(active_receiver,GPOINTER_TO_INT(data));
+static void adc_cb(GtkToggleButton *widget,GdkEvent *event,gpointer data) {
+ if(gtk_toggle_button_get_active(widget)) {
+ receiver_change_adc(active_receiver,GPOINTER_TO_INT(data));
+ }
}
static void local_audio_cb(GtkWidget *widget, gpointer data) {
GtkWidget *sample_rate_48=gtk_radio_button_new_with_label(NULL,"48000");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sample_rate_48), active_receiver->sample_rate==48000);
gtk_grid_attach(GTK_GRID(grid),sample_rate_48,x,2,1,1);
- g_signal_connect(sample_rate_48,"pressed",G_CALLBACK(sample_rate_cb),(gpointer *)48000);
+ g_signal_connect(sample_rate_48,"toggled",G_CALLBACK(sample_rate_cb),(gpointer *)48000);
GtkWidget *sample_rate_96=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(sample_rate_48),"96000");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sample_rate_96), active_receiver->sample_rate==96000);
gtk_grid_attach(GTK_GRID(grid),sample_rate_96,x,3,1,1);
- g_signal_connect(sample_rate_96,"pressed",G_CALLBACK(sample_rate_cb),(gpointer *)96000);
+ g_signal_connect(sample_rate_96,"toggled",G_CALLBACK(sample_rate_cb),(gpointer *)96000);
- GtkWidget *sample_rate_192=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(sample_rate_96),"192000");
+ GtkWidget *sample_rate_192=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(sample_rate_48),"192000");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sample_rate_192), active_receiver->sample_rate==192000);
gtk_grid_attach(GTK_GRID(grid),sample_rate_192,x,4,1,1);
- g_signal_connect(sample_rate_192,"pressed",G_CALLBACK(sample_rate_cb),(gpointer *)192000);
+ g_signal_connect(sample_rate_192,"toggled",G_CALLBACK(sample_rate_cb),(gpointer *)192000);
- GtkWidget *sample_rate_384=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(sample_rate_192),"384000");
+ GtkWidget *sample_rate_384=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(sample_rate_48),"384000");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sample_rate_384), active_receiver->sample_rate==384000);
gtk_grid_attach(GTK_GRID(grid),sample_rate_384,x,5,1,1);
- g_signal_connect(sample_rate_384,"pressed",G_CALLBACK(sample_rate_cb),(gpointer *)384000);
+ g_signal_connect(sample_rate_384,"toggled",G_CALLBACK(sample_rate_cb),(gpointer *)384000);
#ifndef raspberrypi
- GtkWidget *sample_rate_768=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(sample_rate_384),"768000");
+ GtkWidget *sample_rate_768=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(sample_rate_48),"768000");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sample_rate_768), active_receiver->sample_rate==768000);
gtk_grid_attach(GTK_GRID(grid),sample_rate_768,x,6,1,1);
- g_signal_connect(sample_rate_768,"pressed",G_CALLBACK(sample_rate_cb),(gpointer *)768000);
+ g_signal_connect(sample_rate_768,"toggled",G_CALLBACK(sample_rate_cb),(gpointer *)768000);
- GtkWidget *sample_rate_1536=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(sample_rate_768),"1536000");
+ GtkWidget *sample_rate_1536=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(sample_rate_48),"1536000");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sample_rate_1536), active_receiver->sample_rate==1536000);
gtk_grid_attach(GTK_GRID(grid),sample_rate_1536,x,7,1,1);
- g_signal_connect(sample_rate_1536,"pressed",G_CALLBACK(sample_rate_cb),(gpointer *)1536000);
+ g_signal_connect(sample_rate_1536,"toggled",G_CALLBACK(sample_rate_cb),(gpointer *)1536000);
#endif
}
x++;
GtkWidget *sample_rate=gtk_radio_button_new_with_label(NULL,rate_string);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sample_rate), radio->info.soapy.sample_rate);
gtk_grid_attach(GTK_GRID(grid),sample_rate,x,row,1,1);
- g_signal_connect(sample_rate,"pressed",G_CALLBACK(sample_rate_cb),GINT_TO_POINTER(radio->info.soapy.sample_rate));
+ g_signal_connect(sample_rate,"toggled",G_CALLBACK(sample_rate_cb),GINT_TO_POINTER(radio->info.soapy.sample_rate));
row++;
int rate=radio->info.soapy.sample_rate/2;
GtkWidget *next_sample_rate=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(sample_rate),rate_string);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (next_sample_rate), active_receiver->sample_rate==rate);
gtk_grid_attach(GTK_GRID(grid),next_sample_rate,x,row,1,1);
- g_signal_connect(next_sample_rate,"pressed",G_CALLBACK(sample_rate_cb),GINT_TO_POINTER(rate));
+ g_signal_connect(next_sample_rate,"toggled",G_CALLBACK(sample_rate_cb),GINT_TO_POINTER(rate));
rate=rate/2;
row++;
}
gtk_grid_attach(GTK_GRID(grid),random_b,x,3,1,1);
g_signal_connect(random_b,"toggled",G_CALLBACK(random_cb),NULL);
- //GtkWidget *preamp_b=gtk_check_button_new_with_label("Preamp");
- //gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (preamp_b), active_receiver->preamp);
- //gtk_grid_attach(GTK_GRID(grid),preamp_b,x,4,1,1);
- //g_signal_connect(preamp_b,"toggled",G_CALLBACK(preamp_cb),NULL);
-
if (filter_board == ALEX && active_receiver->adc == 0
&& ((protocol==ORIGINAL_PROTOCOL && device != DEVICE_ORION2) || (protocol==NEW_PROTOCOL && device != NEW_DEVICE_ORION2))) {
}
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (adc_b), active_receiver->adc==i);
gtk_grid_attach(GTK_GRID(grid),adc_b,x,2+i,1,1);
- g_signal_connect(adc_b,"pressed",G_CALLBACK(adc_cb),GINT_TO_POINTER(i));
+ g_signal_connect(adc_b,"toggled",G_CALLBACK(adc_cb),GINT_TO_POINTER(i));
}
x++;
}
}
}
- // If the combo box shows no device, take the first one
i=gtk_combo_box_get_active(GTK_COMBO_BOX(output));
if (i < 0) {
gtk_combo_box_set_active(GTK_COMBO_BOX(output),0);
gtk_widget_override_font(mic_gain_label, pango_font_description_from_string("Sans 10"));
gtk_grid_attach(GTK_GRID(sliders),mic_gain_label,0,1,1,1);
- mic_gain_scale=gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL,mic_linein?0.0:1.0,mic_linein?31.0:100.0, 1.0);
+ mic_gain_scale=gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL,mic_linein?0.0:-12.0,mic_linein?31.0:50.0, 1.0);
gtk_widget_override_font(mic_gain_scale, pango_font_description_from_string("Sans 10"));
gtk_range_set_value (GTK_RANGE(mic_gain_scale),mic_linein?linein_gain:mic_gain);
gtk_grid_attach(GTK_GRID(sliders),mic_gain_scale,1,1,2,1);
}
fprintf(stderr,"soapy_protocol_start_receiver: create receive_thread\n");
- receive_thread_id = g_thread_new( "rx_thread", receive_thread, rx);
+ receive_thread_id = g_thread_new( "soapy_rx", receive_thread, rx);
if( ! receive_thread_id )
{
fprintf(stderr,"g_thread_new failed for receive_thread\n");
return FALSE;
}
-static gboolean step_select_cb (GtkWidget *widget, gpointer data) {
- step=steps[GPOINTER_TO_INT(data)];
- g_idle_add(ext_vfo_update,NULL);
- return FALSE;
+static void step_select_cb (GtkToggleButton *widget, gpointer data) {
+ if(gtk_toggle_button_get_active(widget)) {
+ step=steps[GPOINTER_TO_INT(data)];
+ g_idle_add(ext_vfo_update,NULL);
+ }
}
void step_menu(GtkWidget *parent) {
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (step_rb), steps[i]==step);
gtk_widget_show(step_rb);
gtk_grid_attach(GTK_GRID(grid),step_rb,i%5,1+(i/5),1,1);
- g_signal_connect(step_rb,"pressed",G_CALLBACK(step_select_cb),(gpointer)(long)i);
+ g_signal_connect(step_rb,"toggled",G_CALLBACK(step_select_cb),(gpointer)(long)i);
i++;
}
tx->width=width;
tx->height=height;
int ratio=tx->iq_output_rate/tx->mic_sample_rate;
-/*
- tx->pixels=width*ratio*4;
+ tx->pixels=display_width*ratio*2;
g_free(tx->pixel_samples);
tx->pixel_samples=g_new(float,tx->pixels);
init_analyzer(tx);
-*/
}
gtk_widget_set_size_request(tx->panadapter, width, height);
}
double constant1=3.3;
double constant2=0.095;
- if(protocol==ORIGINAL_PROTOCOL) {
- switch(device) {
- case DEVICE_METIS:
- constant1=3.3;
- constant2=0.09;
- break;
- case DEVICE_HERMES:
- case DEVICE_STEMLAB:
- constant1=3.3;
- constant2=0.095;
- break;
- case DEVICE_ANGELIA:
- constant1=3.3;
- constant2=0.095;
- break;
- case DEVICE_ORION:
- constant1=5.0;
- constant2=0.108;
- break;
- case DEVICE_ORION2:
- constant1=5.0;
- constant2=0.108;
- break;
- case DEVICE_HERMES_LITE:
- break;
- }
+ int power;
+ double v1;
+
+ switch(protocol) {
+ case ORIGINAL_PROTOCOL:
+ switch(device) {
+ case DEVICE_METIS:
+ constant1=3.3;
+ constant2=0.09;
+ break;
+ case DEVICE_HERMES:
+ case DEVICE_STEMLAB:
+ constant1=3.3;
+ constant2=0.095;
+ break;
+ case DEVICE_ANGELIA:
+ constant1=3.3;
+ constant2=0.095;
+ break;
+ case DEVICE_ORION:
+ constant1=5.0;
+ constant2=0.108;
+ break;
+ case DEVICE_ORION2:
+ constant1=5.0;
+ constant2=0.108;
+ break;
+ case DEVICE_HERMES_LITE:
+ break;
+ }
+
+ power=alex_forward_power;
+ if(power==0) {
+ power=exciter_power;
+ }
+ v1=((double)power/4095.0)*constant1;
+ transmitter->fwd=(v1*v1)/constant2;
- int power=alex_forward_power;
- if(power==0) {
power=exciter_power;
- }
- double v1;
- v1=((double)power/4095.0)*constant1;
- transmitter->fwd=(v1*v1)/constant2;
+ v1=((double)power/4095.0)*constant1;
+ transmitter->exciter=(v1*v1)/constant2;
- power=exciter_power;
- v1=((double)power/4095.0)*constant1;
- transmitter->exciter=(v1*v1)/constant2;
+ transmitter->rev=0.0;
+ if(alex_forward_power!=0) {
+ power=alex_reverse_power;
+ v1=((double)power/4095.0)*constant1;
+ transmitter->rev=(v1*v1)/constant2;
+ }
+ break;
+ case NEW_PROTOCOL:
+ switch(device) {
+ case NEW_DEVICE_ATLAS:
+ constant1=3.3;
+ constant2=0.09;
+ break;
+ case NEW_DEVICE_HERMES:
+ constant1=3.3;
+ constant2=0.09;
+ break;
+ case NEW_DEVICE_HERMES2:
+ constant1=3.3;
+ constant2=0.095;
+ break;
+ case NEW_DEVICE_ANGELIA:
+ constant1=3.3;
+ constant2=0.095;
+ break;
+ case NEW_DEVICE_ORION:
+ constant1=5.0;
+ constant2=0.108;
+ break;
+ case NEW_DEVICE_ORION2:
+ constant1=5.0;
+ constant2=0.108;
+ break;
+ case NEW_DEVICE_HERMES_LITE:
+ constant1=3.3;
+ constant2=0.09;
+ break;
+ }
- transmitter->rev=0.0;
- if(alex_forward_power!=0) {
- power=alex_reverse_power;
+ power=alex_forward_power;
+ if(power==0) {
+ power=exciter_power;
+ }
v1=((double)power/4095.0)*constant1;
- transmitter->rev=(v1*v1)/constant2;
- }
- } else {
- switch(device) {
- case NEW_DEVICE_ATLAS:
- constant1=3.3;
- constant2=0.09;
- break;
- case NEW_DEVICE_HERMES:
- constant1=3.3;
- constant2=0.09;
- break;
- case NEW_DEVICE_HERMES2:
- constant1=3.3;
- constant2=0.095;
- break;
- case NEW_DEVICE_ANGELIA:
- constant1=3.3;
- constant2=0.095;
- break;
- case NEW_DEVICE_ORION:
- constant1=5.0;
- constant2=0.108;
- break;
- case NEW_DEVICE_ORION2:
- constant1=5.0;
- constant2=0.108;
- break;
- case NEW_DEVICE_HERMES_LITE:
- constant1=3.3;
- constant2=0.09;
- break;
- }
+ transmitter->fwd=(v1*v1)/constant2;
- int power=alex_forward_power;
- if(power==0) {
power=exciter_power;
- }
- double v1;
- v1=((double)power/4095.0)*constant1;
- transmitter->fwd=(v1*v1)/constant2;
+ v1=((double)power/4095.0)*constant1;
+ transmitter->exciter=(v1*v1)/constant2;
- power=exciter_power;
- v1=((double)power/4095.0)*constant1;
- transmitter->exciter=(v1*v1)/constant2;
+ transmitter->rev=0.0;
+ if(alex_forward_power!=0) {
+ power=alex_reverse_power;
+ v1=((double)power/4095.0)*constant1;
+ transmitter->rev=(v1*v1)/constant2;
+ }
+ break;
- transmitter->rev=0.0;
- if(alex_forward_power!=0) {
- power=alex_reverse_power;
- v1=((double)power/4095.0)*constant1;
- transmitter->rev=(v1*v1)/constant2;
- }
- }
+#ifdef SOAPY_SDR
+ case SOAPY_PROTOCOL:
+ transmitter->fwd=0.0;
+ transmitter->exciter=0.0;
+ transmitter->rev=0.0;
+ break;
+#endif
+ }
if(!duplex) {
meter_update(active_receiver,POWER,transmitter->fwd,transmitter->rev,transmitter->exciter,transmitter->alc);
g_print("create_dialog: add tx->panel\n");
gtk_widget_set_size_request (tx->panel, display_width/4, display_height/2);
gtk_container_add(GTK_CONTAINER(content),tx->panel);
+
+ gtk_widget_add_events(tx->dialog, GDK_KEY_PRESS_MASK);
+ g_signal_connect(tx->dialog, "key_press_event", G_CALLBACK(keypress_cb), NULL);
}
static void create_visual(TRANSMITTER *tx) {
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (micin_b), mic_linein==0);
gtk_widget_show(micin_b);
gtk_grid_attach(GTK_GRID(grid),micin_b,col,row,1,1);
- g_signal_connect(micin_b,"pressed",G_CALLBACK(micin_changed),NULL);
+ g_signal_connect(micin_b,"toggled",G_CALLBACK(micin_changed),NULL);
col++;
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (linein_b), mic_linein==1);
gtk_widget_show(linein_b);
gtk_grid_attach(GTK_GRID(grid),linein_b,col,row,1,1);
- g_signal_connect(linein_b,"pressed",G_CALLBACK(linein_changed),NULL);
+ g_signal_connect(linein_b,"toggled",G_CALLBACK(linein_changed),NULL);
row++;
col=0;
gtk_combo_box_set_active(GTK_COMBO_BOX(input),0);
}
-
gtk_grid_attach(GTK_GRID(grid),input,col,row++,1,1);
g_signal_connect(input,"changed",G_CALLBACK(local_input_changed_cb),NULL);
} else {
vfo[sid].frequency += delta;
}
- receiver_frequency_changed(other_receiver);
+ if(receivers==2) {
+ receiver_frequency_changed(other_receiver);
+ }
break;
case RSAT_MODE:
// A increments and B decrements or A decrments and B increments
} else {
vfo[sid].frequency -= delta;
}
- receiver_frequency_changed(other_receiver);
+ if(receivers==2) {
+ receiver_frequency_changed(other_receiver);
+ }
break;
}
receiver_frequency_changed(active_receiver);
} else {
vfo[sid].frequency += delta;
}
- receiver_frequency_changed(other_receiver);
+ if(receivers==2) {
+ receiver_frequency_changed(other_receiver);
+ }
break;
case RSAT_MODE:
// A increments and B decrements or A decrments and B increments
} else {
vfo[sid].frequency -= delta;
}
- receiver_frequency_changed(other_receiver);
+ if(receivers==2) {
+ receiver_frequency_changed(other_receiver);
+ }
break;
}
} else {
vfo[sid].frequency += delta;
}
- receiver_frequency_changed(other_receiver);
+ if(receivers==2) {
+ receiver_frequency_changed(other_receiver);
+ }
break;
case RSAT_MODE:
// A increments and B decrements or A decrments and B increments
} else {
vfo[sid].frequency -= delta;
}
- receiver_frequency_changed(other_receiver);
+ if(receivers==2) {
+ receiver_frequency_changed(other_receiver);
+ }
break;
}
receiver_frequency_changed(active_receiver);
} else {
vfo[sid].frequency += delta;
}
- receiver_frequency_changed(other_receiver);
+ if(receivers==2) {
+ receiver_frequency_changed(other_receiver);
+ }
break;
case RSAT_MODE:
// A increments and B decrements or A decrements and B increments
} else {
vfo[sid].frequency -= delta;
}
- receiver_frequency_changed(other_receiver);
+ if(receivers==2) {
+ receiver_frequency_changed(other_receiver);
+ }
break;
}