BANDSTACK bandstackWWV={5,1,bandstack_entriesWWV};
BAND bands[BANDS] =
- {{"160",&bandstack160,0,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
- {"80",&bandstack80,0,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
- {"60",&bandstack60,0,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
- {"40",&bandstack40,0,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
- {"30",&bandstack30,0,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
- {"20",&bandstack20,0,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
- {"18",&bandstack18,0,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
- {"15",&bandstack15,0,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
- {"12",&bandstack12,0,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
- {"10",&bandstack10,0,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
- {"50",&bandstack50,0,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
- {"GEN",&bandstackGEN,0,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,0},
- {"WWV",&bandstackWWV,0,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,0}};
+ {{"160",&bandstack160,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
+ {"80",&bandstack80,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
+ {"60",&bandstack60,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
+ {"40",&bandstack40,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
+ {"30",&bandstack30,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
+ {"20",&bandstack20,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
+ {"18",&bandstack18,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
+ {"15",&bandstack15,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
+ {"12",&bandstack12,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
+ {"10",&bandstack10,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
+ {"50",&bandstack50,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
+ {"GEN",&bandstackGEN,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,0},
+ {"WWV",&bandstackWWV,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,0}};
#define NUM_BAND_LIMITS 22
int VFO_ENCODER_B_PIN=1;
#endif
int ENABLE_AF_ENCODER=88;
-int ENABLE_AF_PULLUP=87;
+int ENABLE_AF_PULLUP=0;
int AF_ENCODER_A=20;
int AF_ENCODER_B=26;
int AF_FUNCTION=25;
static int agc_encoder_changed(void *data) {
int pos=*(int*)data;
if(pos!=0) {
- double gain=agc_gain;
- gain+=(double)pos;
- if(gain<0.0) {
- gain=0.0;
- } else if(gain>120.0) {
- gain=120.0;
+ if(function) {
+ int att=attenuation;
+ att+=pos;
+ if(att<0) {
+ att=0;
+ } else if (att>31) {
+ att=31;
+ }
+ set_attenuation_value((double)att);
+ } else {
+ double gain=agc_gain;
+ gain+=(double)pos;
+ if(gain<0.0) {
+ gain=0.0;
+ } else if(gain>120.0) {
+ gain=120.0;
+ }
+ set_agc_gain(gain);
}
- set_agc_gain(gain);
}
return 0;
}
GtkWidget *dialog=gtk_dialog_new_with_buttons("Configure GPIO",GTK_WINDOW(splash_window),GTK_DIALOG_DESTROY_WITH_PARENT,NULL,NULL);
GtkWidget *content=gtk_dialog_get_content_area(GTK_DIALOG(dialog));
GtkWidget *grid=gtk_grid_new();
- gtk_grid_set_column_homogeneous(GTK_GRID(grid),TRUE);
+ //gtk_grid_set_column_homogeneous(GTK_GRID(grid),TRUE);
gtk_grid_set_row_homogeneous(GTK_GRID(grid),TRUE);
//gtk_widget_override_font(close_button, pango_font_description_from_string("Arial 20"));
gtk_widget_show_all(dialog);
-/*
- g_signal_connect_swapped (dialog,
- "response",
- G_CALLBACK (gtk_widget_destroy),
- dialog);
-*/
-
int result=gtk_dialog_run(GTK_DIALOG(dialog));
ENABLE_VFO_ENCODER=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(b_enable_vfo_encoder))?1:0;
VFO_ENCODER_A=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(vfo_a));
VFO_ENCODER_B=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(vfo_b));
+ ENABLE_VFO_PULLUP=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(b_enable_vfo_pullup))?1:0;
ENABLE_AF_ENCODER=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(b_enable_af_encoder))?1:0;
AF_ENCODER_A=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(af_a));
AF_ENCODER_B=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(af_b));
+ ENABLE_AF_PULLUP=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(b_enable_af_pullup))?1:0;
ENABLE_RF_ENCODER=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(b_enable_rf_encoder))?1:0;
RF_ENCODER_A=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(rf_a));
RF_ENCODER_B=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(rf_b));
+ ENABLE_RF_PULLUP=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(b_enable_rf_pullup))?1:0;
ENABLE_AGC_ENCODER=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(b_enable_agc_encoder))?1:0;
AGC_ENCODER_A=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(agc_a));
AGC_ENCODER_B=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(agc_b));
+ ENABLE_AGC_PULLUP=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(b_enable_agc_pullup))?1:0;
ENABLE_BAND_BUTTON=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(b_enable_band))?1:0;
BAND_BUTTON=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(band));
ENABLE_MODE_BUTTON=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(b_enable_mode))?1:0;
if(!display_toolbar) {
height+=TOOLBAR_HEIGHT;
}
+ } else {
+ if(!display_sliders) {
+ height+=SLIDERS_HEIGHT/2;
+ }
}
fprintf(stderr,"panadapter_height=%d\n",height);
panadapter = panadapter_init(display_width,height);
height+=PANADAPTER_HEIGHT;
}
if(!display_sliders) {
- height+=SLIDERS_HEIGHT;
+ if(display_panadapter) {
+ height+=SLIDERS_HEIGHT/2;
+ } else {
+ height+=SLIDERS_HEIGHT;
+ }
}
if(!display_toolbar) {
height+=TOOLBAR_HEIGHT;
}
}
+static void rx_dither_cb(GtkWidget *widget, gpointer data) {
+ rx_dither=rx_dither==1?0:1;
+ if(protocol==NEW_PROTOCOL) {
+ }
+}
+
+static void rx_random_cb(GtkWidget *widget, gpointer data) {
+ rx_random=rx_random==1?0:1;
+ if(protocol==NEW_PROTOCOL) {
+ }
+}
+
+static void rx_preamp_cb(GtkWidget *widget, gpointer data) {
+ rx_preamp=rx_preamp==1?0:1;
+ if(protocol==NEW_PROTOCOL) {
+ }
+}
+
static void tx_out_of_band_cb(GtkWidget *widget, gpointer data) {
tx_out_of_band=tx_out_of_band==1?0:1;
}
}
+static void oc_tune_cb(GtkWidget *widget, gpointer data) {
+ int oc=((int)data)&0xF;
+ int mask=0x01<<oc;
+ if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) {
+ OCtune|=mask;
+ } else {
+ OCtune&=~mask;
+ }
+}
+
static void detector_mode_cb(GtkWidget *widget, gpointer data) {
display_detector_mode=(int)data;
SetDisplayDetectorMode(CHANNEL_RX0, 0, display_detector_mode);
GtkWidget *notebook=gtk_notebook_new();
+ GtkWidget *general_label=gtk_label_new("General");
+ GtkWidget *general_grid=gtk_grid_new();
+ gtk_grid_set_row_homogeneous(GTK_GRID(general_grid),TRUE);
+ gtk_grid_set_column_homogeneous(GTK_GRID(general_grid),TRUE);
+
+
+ GtkWidget *vfo_divisor_label=gtk_label_new("VFO Encoder Divisor: ");
+ //gtk_widget_override_font(vfo_divisor_label, pango_font_description_from_string("Arial 18"));
+ gtk_widget_show(vfo_divisor_label);
+ gtk_grid_attach(GTK_GRID(general_grid),vfo_divisor_label,0,0,1,1);
+
+ GtkWidget *vfo_divisor=gtk_spin_button_new_with_range(1.0,60.0,1.0);
+ //gtk_widget_override_font(vfo_divisor, pango_font_description_from_string("Arial 18"));
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(vfo_divisor),(double)vfo_encoder_divisor);
+ gtk_widget_show(vfo_divisor);
+ gtk_grid_attach(GTK_GRID(general_grid),vfo_divisor,1,0,1,1);
+ g_signal_connect(vfo_divisor,"value_changed",G_CALLBACK(vfo_divisor_value_changed_cb),NULL);
+
+
+ GtkWidget *rx_dither_b=gtk_check_button_new_with_label("Dither");
+ //gtk_widget_override_font(rx_dither_b, pango_font_description_from_string("Arial 18"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rx_dither_b), rx_dither);
+ gtk_widget_show(rx_dither_b);
+ gtk_grid_attach(GTK_GRID(general_grid),rx_dither_b,0,1,1,1);
+ g_signal_connect(rx_dither_b,"toggled",G_CALLBACK(rx_dither_cb),NULL);
+
+ GtkWidget *rx_random_b=gtk_check_button_new_with_label("Random");
+ //gtk_widget_override_font(rx_random_b, pango_font_description_from_string("Arial 18"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rx_random_b), rx_random);
+ gtk_widget_show(rx_random_b);
+ gtk_grid_attach(GTK_GRID(general_grid),rx_random_b,0,2,1,1);
+ g_signal_connect(rx_random_b,"toggled",G_CALLBACK(rx_random_cb),NULL);
+
+/*
+ GtkWidget *rx_preamp_b=gtk_check_button_new_with_label("Preamp");
+ //gtk_widget_override_font(rx_preamp_b, pango_font_description_from_string("Arial 18"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rx_preamp_b), rx_preamp);
+ gtk_widget_show(rx_preamp_b);
+ gtk_grid_attach(GTK_GRID(general_grid),rx_preamp_b,0,3,1,1);
+ g_signal_connect(rx_preamp_b,"toggled",G_CALLBACK(rx_preamp_cb),NULL);
+*/
+
+ GtkWidget *linein_b=gtk_check_button_new_with_label("Mic Line In");
+ //gtk_widget_override_font(linein_b, pango_font_description_from_string("Arial 18"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (linein_b), mic_linein);
+ gtk_widget_show(linein_b);
+ gtk_grid_attach(GTK_GRID(general_grid),linein_b,1,1,1,1);
+ g_signal_connect(linein_b,"toggled",G_CALLBACK(linein_cb),NULL);
+
+ GtkWidget *micboost_b=gtk_check_button_new_with_label("Mic Boost");
+ //gtk_widget_override_font(micboost_b, pango_font_description_from_string("Arial 18"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (micboost_b), mic_boost);
+ gtk_widget_show(micboost_b);
+ gtk_grid_attach(GTK_GRID(general_grid),micboost_b,1,2,1,1);
+ g_signal_connect(micboost_b,"toggled",G_CALLBACK(micboost_cb),NULL);
+
+
+ if((protocol==NEW_PROTOCOL && device==NEW_DEVICE_ORION) || (protocol==ORIGINAL_PROTOCOL && device==DEVICE_ORION)) {
+
+ GtkWidget *ptt_ring_b=gtk_radio_button_new_with_label(NULL,"PTT On Ring, Mic and Bias on Tip");
+ //gtk_widget_override_font(ptt_ring_b, pango_font_description_from_string("Arial 18"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ptt_ring_b), mic_ptt_tip_bias_ring==0);
+ gtk_widget_show(ptt_ring_b);
+ gtk_grid_attach(GTK_GRID(general_grid),ptt_ring_b,1,3,1,1);
+ g_signal_connect(ptt_ring_b,"pressed",G_CALLBACK(ptt_ring_cb),NULL);
+
+ GtkWidget *ptt_tip_b=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(ptt_ring_b),"PTT On Tip, Mic and Bias on Ring");
+ //gtk_widget_override_font(ptt_tip_b, pango_font_description_from_string("Arial 18"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ptt_tip_b), mic_ptt_tip_bias_ring==1);
+ gtk_widget_show(ptt_tip_b);
+ gtk_grid_attach(GTK_GRID(general_grid),ptt_tip_b,1,4,1,1);
+ g_signal_connect(ptt_tip_b,"pressed",G_CALLBACK(ptt_tip_cb),NULL);
+
+ GtkWidget *ptt_b=gtk_check_button_new_with_label("PTT Enabled");
+ //gtk_widget_override_font(ptt_b, pango_font_description_from_string("Arial 18"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ptt_b), mic_ptt_enabled);
+ gtk_widget_show(ptt_b);
+ gtk_grid_attach(GTK_GRID(general_grid),ptt_b,1,5,1,1);
+ g_signal_connect(ptt_b,"toggled",G_CALLBACK(ptt_cb),NULL);
+
+ GtkWidget *bias_b=gtk_check_button_new_with_label("BIAS Enabled");
+ //gtk_widget_override_font(bias_b, pango_font_description_from_string("Arial 18"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bias_b), mic_bias_enabled);
+ gtk_widget_show(bias_b);
+ gtk_grid_attach(GTK_GRID(general_grid),bias_b,1,6,1,1);
+ g_signal_connect(bias_b,"toggled",G_CALLBACK(bias_cb),NULL);
+ }
+
+
+ GtkWidget *alex_b=gtk_check_button_new_with_label("ALEX");
+ //gtk_widget_override_font(alex_b, pango_font_description_from_string("Arial 18"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (alex_b), filter_board==ALEX);
+ gtk_widget_show(alex_b);
+ gtk_grid_attach(GTK_GRID(general_grid),alex_b,2,1,1,1);
+
+ GtkWidget *apollo_b=gtk_check_button_new_with_label("APOLLO");
+ //gtk_widget_override_font(apollo_b, pango_font_description_from_string("Arial 18"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (apollo_b), filter_board==APOLLO);
+ gtk_widget_show(apollo_b);
+ gtk_grid_attach(GTK_GRID(general_grid),apollo_b,2,2,1,1);
+
+ g_signal_connect(alex_b,"toggled",G_CALLBACK(alex_cb),apollo_b);
+ g_signal_connect(apollo_b,"toggled",G_CALLBACK(apollo_cb),alex_b);
+
+ GtkWidget *apollo_tuner_b=gtk_check_button_new_with_label("Auto Tuner");
+ //gtk_widget_override_font(apollo_tuner_b, pango_font_description_from_string("Arial 18"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (apollo_tuner_b), apollo_tuner);
+ gtk_widget_show(apollo_tuner_b);
+ gtk_grid_attach(GTK_GRID(general_grid),apollo_tuner_b,2,3,1,1);
+ g_signal_connect(apollo_tuner_b,"toggled",G_CALLBACK(apollo_tuner_cb),NULL);
+
+ GtkWidget *pa_b=gtk_check_button_new_with_label("PA");
+ //gtk_widget_override_font(pa_b, pango_font_description_from_string("Arial 18"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pa_b), pa);
+ gtk_widget_show(pa_b);
+ gtk_grid_attach(GTK_GRID(general_grid),pa_b,2,4,1,1);
+ g_signal_connect(pa_b,"toggled",G_CALLBACK(pa_cb),NULL);
+
+ id=gtk_notebook_append_page(GTK_NOTEBOOK(notebook),general_grid,general_label);
+
GtkWidget *display_label=gtk_label_new("Display");
GtkWidget *display_grid=gtk_grid_new();
- GtkWidget *tx_label=gtk_label_new("TX");
+ GtkWidget *tx_label=gtk_label_new("PA Gain");
GtkWidget *tx_grid=gtk_grid_new();
gtk_grid_set_row_homogeneous(GTK_GRID(tx_grid),TRUE);
gtk_grid_set_column_spacing (GTK_GRID(tx_grid),10);
id=gtk_notebook_append_page(GTK_NOTEBOOK(notebook),cw_grid,cw_label);
-
- GtkWidget *encoder_label=gtk_label_new("VFO Encoder");
- GtkWidget *encoder_grid=gtk_grid_new();
- gtk_grid_set_row_homogeneous(GTK_GRID(encoder_grid),TRUE);
-
- GtkWidget *vfo_divisor_label=gtk_label_new("Divisor: ");
- //gtk_widget_override_font(vfo_divisor_label, pango_font_description_from_string("Arial 18"));
- gtk_widget_show(vfo_divisor_label);
- gtk_grid_attach(GTK_GRID(encoder_grid),vfo_divisor_label,0,0,1,1);
-
- GtkWidget *vfo_divisor=gtk_spin_button_new_with_range(1.0,60.0,1.0);
- //gtk_widget_override_font(vfo_divisor, pango_font_description_from_string("Arial 18"));
- gtk_spin_button_set_value(GTK_SPIN_BUTTON(vfo_divisor),(double)vfo_encoder_divisor);
- gtk_widget_show(vfo_divisor);
- gtk_grid_attach(GTK_GRID(encoder_grid),vfo_divisor,1,0,1,1);
- g_signal_connect(vfo_divisor,"value_changed",G_CALLBACK(vfo_divisor_value_changed_cb),NULL);
-
- id=gtk_notebook_append_page(GTK_NOTEBOOK(notebook),encoder_grid,encoder_label);
-
- GtkWidget *microphone_label=gtk_label_new("Microphone");
- GtkWidget *microphone_grid=gtk_grid_new();
- gtk_grid_set_row_homogeneous(GTK_GRID(microphone_grid),TRUE);
-
- GtkWidget *linein_b=gtk_check_button_new_with_label("Line In");
- //gtk_widget_override_font(linein_b, pango_font_description_from_string("Arial 18"));
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (linein_b), mic_linein);
- gtk_widget_show(linein_b);
- gtk_grid_attach(GTK_GRID(microphone_grid),linein_b,1,1,1,1);
- g_signal_connect(linein_b,"toggled",G_CALLBACK(linein_cb),NULL);
-
- GtkWidget *micboost_b=gtk_check_button_new_with_label("Boost");
- //gtk_widget_override_font(micboost_b, pango_font_description_from_string("Arial 18"));
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (micboost_b), mic_boost);
- gtk_widget_show(micboost_b);
- gtk_grid_attach(GTK_GRID(microphone_grid),micboost_b,1,2,1,1);
- g_signal_connect(micboost_b,"toggled",G_CALLBACK(micboost_cb),NULL);
-
-
- if((protocol==NEW_PROTOCOL && device==NEW_DEVICE_ORION) || (protocol==ORIGINAL_PROTOCOL && device==DEVICE_ORION)) {
-
- GtkWidget *ptt_ring_b=gtk_radio_button_new_with_label(NULL,"PTT On Ring, Mic and Bias on Tip");
- //gtk_widget_override_font(ptt_ring_b, pango_font_description_from_string("Arial 18"));
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ptt_ring_b), mic_ptt_tip_bias_ring==0);
- gtk_widget_show(ptt_ring_b);
- gtk_grid_attach(GTK_GRID(microphone_grid),ptt_ring_b,1,3,1,1);
- g_signal_connect(ptt_ring_b,"pressed",G_CALLBACK(ptt_ring_cb),NULL);
-
- GtkWidget *ptt_tip_b=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(ptt_ring_b),"PTT On Tip, Mic and Bias on Ring");
- //gtk_widget_override_font(ptt_tip_b, pango_font_description_from_string("Arial 18"));
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ptt_tip_b), mic_ptt_tip_bias_ring==1);
- gtk_widget_show(ptt_tip_b);
- gtk_grid_attach(GTK_GRID(microphone_grid),ptt_tip_b,1,4,1,1);
- g_signal_connect(ptt_tip_b,"pressed",G_CALLBACK(ptt_tip_cb),NULL);
-
- GtkWidget *ptt_b=gtk_check_button_new_with_label("PTT Enabled");
- //gtk_widget_override_font(ptt_b, pango_font_description_from_string("Arial 18"));
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ptt_b), mic_ptt_enabled);
- gtk_widget_show(ptt_b);
- gtk_grid_attach(GTK_GRID(microphone_grid),ptt_b,1,5,1,1);
- g_signal_connect(ptt_b,"toggled",G_CALLBACK(ptt_cb),NULL);
-
- GtkWidget *bias_b=gtk_check_button_new_with_label("BIAS Enabled");
- //gtk_widget_override_font(bias_b, pango_font_description_from_string("Arial 18"));
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bias_b), mic_bias_enabled);
- gtk_widget_show(bias_b);
- gtk_grid_attach(GTK_GRID(microphone_grid),bias_b,1,6,1,1);
- g_signal_connect(bias_b,"toggled",G_CALLBACK(bias_cb),NULL);
- }
-
- id=gtk_notebook_append_page(GTK_NOTEBOOK(notebook),microphone_grid,microphone_label);
-
- GtkWidget *filters_label=gtk_label_new("Filters/PA");
- GtkWidget *filters_grid=gtk_grid_new();
- gtk_grid_set_row_homogeneous(GTK_GRID(filters_grid),TRUE);
-
- GtkWidget *alex_b=gtk_check_button_new_with_label("ALEX");
- //gtk_widget_override_font(alex_b, pango_font_description_from_string("Arial 18"));
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (alex_b), filter_board==ALEX);
- gtk_widget_show(alex_b);
- gtk_grid_attach(GTK_GRID(filters_grid),alex_b,2,1,1,1);
-
- GtkWidget *apollo_b=gtk_check_button_new_with_label("APOLLO");
- //gtk_widget_override_font(apollo_b, pango_font_description_from_string("Arial 18"));
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (apollo_b), filter_board==APOLLO);
- gtk_widget_show(apollo_b);
- gtk_grid_attach(GTK_GRID(filters_grid),apollo_b,2,2,1,1);
-
- g_signal_connect(alex_b,"toggled",G_CALLBACK(alex_cb),apollo_b);
- g_signal_connect(apollo_b,"toggled",G_CALLBACK(apollo_cb),alex_b);
-
- GtkWidget *apollo_tuner_b=gtk_check_button_new_with_label("Auto Tuner");
- //gtk_widget_override_font(apollo_tuner_b, pango_font_description_from_string("Arial 18"));
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (apollo_tuner_b), apollo_tuner);
- gtk_widget_show(apollo_tuner_b);
- gtk_grid_attach(GTK_GRID(filters_grid),apollo_tuner_b,2,3,1,1);
- g_signal_connect(apollo_tuner_b,"toggled",G_CALLBACK(apollo_tuner_cb),NULL);
-
- GtkWidget *pa_b=gtk_check_button_new_with_label("PA");
- //gtk_widget_override_font(pa_b, pango_font_description_from_string("Arial 18"));
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pa_b), pa);
- gtk_widget_show(pa_b);
- gtk_grid_attach(GTK_GRID(filters_grid),pa_b,2,4,1,1);
- g_signal_connect(pa_b,"toggled",G_CALLBACK(pa_cb),NULL);
-
- id=gtk_notebook_append_page(GTK_NOTEBOOK(notebook),filters_grid,filters_label);
-
GtkWidget *oc_label=gtk_label_new("OC");
GtkWidget *oc_grid=gtk_grid_new();
gtk_grid_set_row_homogeneous(GTK_GRID(oc_grid),TRUE);
gtk_widget_show(tx_title);
gtk_grid_attach(GTK_GRID(oc_grid),tx_title,11,0,1,1);
+ GtkWidget *tune_title=gtk_label_new("Tune (ORed with TX)");
+ //gtk_widget_override_font(tune_title, pango_font_description_from_string("Arial 18"));
+ gtk_widget_show(tune_title);
+ gtk_grid_attach(GTK_GRID(oc_grid),tune_title,18,0,2,1);
+
for(i=1;i<8;i++) {
char oc_id[8];
sprintf(oc_id,"%d",i);
//gtk_widget_override_font(oc_tx_title, pango_font_description_from_string("Arial 18"));
gtk_widget_show(oc_tx_title);
gtk_grid_attach(GTK_GRID(oc_grid),oc_tx_title,i+7,1,1,1);
+/*
+ GtkWidget *oc_tune_title=gtk_label_new(oc_id);
+ //gtk_widget_override_font(oc_tune_title, pango_font_description_from_string("Arial 18"));
+ gtk_widget_show(oc_tune_title);
+ gtk_grid_attach(GTK_GRID(oc_grid),oc_tune_title,i+14,1,1,1);
+*/
}
for(i=0;i<HAM_BANDS;i++) {
gtk_widget_show(oc_tx_b);
gtk_grid_attach(GTK_GRID(oc_grid),oc_tx_b,j+7,i+2,1,1);
g_signal_connect(oc_tx_b,"toggled",G_CALLBACK(oc_tx_cb),(gpointer)(j+(i<<4)));
+
+/*
+ GtkWidget *oc_tune_b=gtk_check_button_new();
+ //gtk_widget_override_font(oc_tune_b, pango_font_description_from_string("Arial 18"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (oc_tune_b), (band->OCtune&mask)==mask);
+ gtk_widget_show(oc_tune_b);
+ gtk_grid_attach(GTK_GRID(oc_grid),oc_tune_b,j+14,i+2,1,1);
+ g_signal_connect(oc_tune_b,"toggled",G_CALLBACK(oc_tune_cb),(gpointer)(j+(i<<4)));
+*/
}
}
+ int mask;
+ for(j=1;j<8;j++) {
+ char oc_id[8];
+ sprintf(oc_id,"%d",j);
+ GtkWidget *oc_tune_title=gtk_label_new(oc_id);
+ //gtk_widget_override_font(oc_tune_title, pango_font_description_from_string("Arial 18"));
+ gtk_widget_show(oc_tune_title);
+ gtk_grid_attach(GTK_GRID(oc_grid),oc_tune_title,18,j+2,1,1);
+
+ mask=0x01<<j;
+ GtkWidget *oc_tune_b=gtk_check_button_new();
+ //gtk_widget_override_font(oc_tune_b, pango_font_description_from_string("Arial 18"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (oc_tune_b), (OCtune&mask)==mask);
+ gtk_widget_show(oc_tune_b);
+ gtk_grid_attach(GTK_GRID(oc_grid),oc_tune_b,19,j+2,1,1);
+ g_signal_connect(oc_tune_b,"toggled",G_CALLBACK(oc_tune_cb),(gpointer)j);
+ }
+
+
id=gtk_notebook_append_page(GTK_NOTEBOOK(notebook),oc_grid,oc_label);
#include "radio.h"
#include "toolbar.h"
+#define SYNC0 0
+#define SYNC1 1
+#define SYNC2 2
+#define C0 3
+#define C1 4
+#define C2 5
+#define C3 6
+#define C4 7
+
#define PI 3.1415926535897932F
#define DATA_PORT 1024
#define LT2208_RANDOM_OFF 0x00
#define LT2208_RANDOM_ON 0x10
+static DISCOVERED *d;
+
static int buffer_size=BUFFER_SIZE;
static int receiver;
static int output_buffer_size;
static unsigned char control_in[5]={0x00,0x00,0x00,0x00,0x00};
-static unsigned char control_out[5]={0x00,0x00,0x00,0x00,0x00};
static double tuning_phase;
static float phase=0.0f;
return phase;
}
-static void setSpeed(int s) {
- int speed=SPEED_48K;
- output_buffer_size=OUTPUT_BUFFER_SIZE;
- switch(s) {
- case 48000:
- speed=SPEED_48K;
- output_buffer_size=OUTPUT_BUFFER_SIZE;
- break;
- case 96000:
- speed=SPEED_96K;
- output_buffer_size=OUTPUT_BUFFER_SIZE/2;
- break;
- case 192000:
- speed=SPEED_192K;
- output_buffer_size=OUTPUT_BUFFER_SIZE/4;
- break;
- case 384000:
- speed=SPEED_384K;
- output_buffer_size=OUTPUT_BUFFER_SIZE/8;
- break;
- default:
- fprintf(stderr,"Invalid sample rate: %d. Defaulting to 48K.\n",s);
- break;
- }
-
- //fprintf(stderr,"setSpeed sample_rate=%d speed=%d\n",s,speed);
-
- control_out[1]=control_out[1]&0xFC;
- control_out[1]=control_out[1]|speed;
-
-}
-
-
void old_protocol_stop() {
metis_start_stop(0);
running=FALSE;
fprintf(stderr,"old_protocol_init\n");
+ d=&discovered[selected_device];
+
//int result=sem_init(&frequency_changed_sem, 0, 1);
receiver=rx;
display_width=pixels;
-
- // setup defaults
- control_out[0] = MOX_DISABLED;
- control_out[1] = CONFIG_BOTH
- | MERCURY_122_88MHZ_SOURCE
- | MERCURY_10MHZ_SOURCE
- | speed
- | MIC_SOURCE_PENELOPE;
- control_out[2] = MODE_OTHERS;
- control_out[3] = ALEX_ATTENUATION_0DB
- | LT2208_GAIN_OFF
- | LT2208_DITHER_ON
- | LT2208_RANDOM_ON;
- control_out[4] = 0;
-
- setSpeed(sample_rate);
+
+ switch(sample_rate) {
+ case 48000:
+ output_buffer_size=OUTPUT_BUFFER_SIZE;
+ break;
+ case 96000:
+ output_buffer_size=OUTPUT_BUFFER_SIZE/2;
+ break;
+ case 192000:
+ output_buffer_size=OUTPUT_BUFFER_SIZE/4;
+ break;
+ case 384000:
+ output_buffer_size=OUTPUT_BUFFER_SIZE/8;
+ break;
+ default:
+ fprintf(stderr,"Invalid sample rate: %d. Defaulting to 48K.\n",sample_rate);
+ break;
+ }
start_receive_thread();
for(i=8;i<OZY_BUFFER_SIZE;i++) {
output_buffer[i]=0;
}
+
+
+ // send commands twice
+ do {
+ ozy_send_buffer();
+ } while (command!=0);
+
do {
ozy_send_buffer();
} while (command!=0);
+ // start the data flowing
metis_start_stop(1);
}
fprintf(stderr,"old_protocol starting receive thread\n");
- DISCOVERED* d=&discovered[selected_device];
-
data_socket=socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP);
if(data_socket<0) {
perror("old_protocol: create socket failed for data_socket\n");
fprintf(stderr,"fexchange0 (CHANNEL_TX) returned error: %d\n", error);
}
Spectrum0(1, CHANNEL_TX, 0, 0, micoutputbuffer);
- if(penelope) {
+ if(d->device!=DEVICE_METIS || atlas_penelope) {
if(tune) {
gain=65535.0*255.0/(double)tune_drive;
} else {
void ozy_send_buffer() {
- output_buffer[0]=SYNC;
- output_buffer[1]=SYNC;
- output_buffer[2]=SYNC;
+
+ output_buffer[SYNC0]=SYNC;
+ output_buffer[SYNC1]=SYNC;
+ output_buffer[SYNC2]=SYNC;
switch(command) {
-#ifdef EXCLUDE
case 0:
- //sem_wait(&frequency_changed_sem);
- if(frequencyChanged) {
- // send rx frequency
- output_buffer[3]=control_out[0]|0x04;
- output_buffer[4]=ddsFrequency>>24;
- output_buffer[5]=ddsFrequency>>16;
- output_buffer[6]=ddsFrequency>>8;
- output_buffer[7]=ddsFrequency;
- //freqcommand++;
- } else {
- output_buffer[3]=control_out[0];
- output_buffer[4]=control_out[1];
- output_buffer[5]=control_out[2];
- output_buffer[6]=control_out[3];
- output_buffer[7]=control_out[4];
+ {
+ BAND *band=band_get_current_band();
+
+ output_buffer[C0]=0x00;
+
+ output_buffer[C1]=0x00;
+ switch(sample_rate) {
+ case 48000:
+ output_buffer[C1]|=SPEED_48K;
+ break;
+ case 96000:
+ output_buffer[C1]|=SPEED_96K;
+ break;
+ case 192000:
+ output_buffer[C1]|=SPEED_192K;
+ break;
+ case 384000:
+ output_buffer[C1]|=SPEED_384K;
+ break;
}
- //sem_post(&frequency_changed_sem);
- break;
- case 1:
- // send tx frequency
- output_buffer[3]=control_out[0]|0x02;
-/*
- if(bSplit) {
- if(frequencyBChanged) {
- output_buffer[3]=control_out[0]|0x02; // Penelope
- output_buffer[4]=ddsBFrequency>>24;
- output_buffer[5]=ddsBFrequency>>16;
- output_buffer[6]=ddsBFrequency>>8;
- output_buffer[7]=ddsBFrequency;
- } else {
- output_buffer[3]=control_out[0];
- output_buffer[4]=control_out[1];
- output_buffer[5]=control_out[2];
- output_buffer[6]=control_out[3];
- output_buffer[7]=control_out[4];
+ if(d->device==DEVICE_METIS) {
+ }
+
+ output_buffer[C2]=0x00;
+ if(classE) {
+ output_buffer[C2]|=0x01;
+ }
+ if(isTransmitting()) {
+ output_buffer[C2]|=band->OCtx;
+ if(tune) {
+ output_buffer[C2]|=OCtune;
}
} else {
-*/
- //sem_wait(&frequency_changed_sem);
- if(frequencyChanged) {
- output_buffer[4]=ddsFrequency>>24;
- output_buffer[5]=ddsFrequency>>16;
- output_buffer[6]=ddsFrequency>>8;
- output_buffer[7]=ddsFrequency;
- } else {
- output_buffer[3]=control_out[0];
- output_buffer[4]=control_out[1];
- output_buffer[5]=control_out[2];
- output_buffer[6]=control_out[3];
- output_buffer[7]=control_out[4];
- }
- frequencyChanged=0;
- //sem_post(&frequency_changed_sem);
-/*
+ output_buffer[C2]|=band->OCrx;
+ }
+
+// TODO - add Alex Attenuation and Alex Antenna
+ output_buffer[C3]=0x00;
+ if(rx_random) {
+ output_buffer[C3]|=LT2208_RANDOM_ON;
+ }
+ if(rx_dither) {
+ output_buffer[C3]|=LT2208_DITHER_ON;
}
-*/
/*
- frequencyBChanged=0;
+ if(rx_preamp) {
+ output_buffer[C3]|=LT2208_GAIN_ON;
+ }
*/
- break;
- case 2:
- output_buffer[3]=control_out[0];
- output_buffer[4]=control_out[1];
- output_buffer[5]=control_out[2];
- output_buffer[6]=control_out[3];
- output_buffer[7]=control_out[4];
- break;
-#endif
- case 0:
- {
- BAND *band=band_get_current_band();
- output_buffer[3]=control_out[0];
- output_buffer[4]=control_out[1];
- if(isTransmitting()) {
- output_buffer[5]=control_out[2]|band->OCtx;
- } else {
- output_buffer[5]=control_out[2]|band->OCrx;
- }
- output_buffer[6]=control_out[3];
- output_buffer[7]=control_out[4];
+// TODO - add Alex TX relay, duplex, receivers Mercury board frequency
+ output_buffer[C4]=0x00;
}
break;
case 1:
- output_buffer[3]=control_out[0]|0x04;
- output_buffer[4]=ddsFrequency>>24;
- output_buffer[5]=ddsFrequency>>16;
- output_buffer[6]=ddsFrequency>>8;
- output_buffer[7]=ddsFrequency;
+ output_buffer[C0]=0x04;
+ output_buffer[C1]=ddsFrequency>>24;
+ output_buffer[C2]=ddsFrequency>>16;
+ output_buffer[C3]=ddsFrequency>>8;
+ output_buffer[C4]=ddsFrequency;
break;
case 2:
- output_buffer[3]=control_out[0]|0x02;
- output_buffer[4]=ddsFrequency>>24;
- output_buffer[5]=ddsFrequency>>16;
- output_buffer[6]=ddsFrequency>>8;
- output_buffer[7]=ddsFrequency;
+ output_buffer[C0]=0x02;
+ output_buffer[C1]=ddsFrequency>>24;
+ output_buffer[C2]=ddsFrequency>>16;
+ output_buffer[C3]=ddsFrequency>>8;
+ output_buffer[C4]=ddsFrequency;
break;
case 3:
{
BAND *band=band_get_current_band();
d=(d/100.0F)*(float)band->pa_calibration;
- output_buffer[3]=0x12;
- output_buffer[4]=(int)d;
- output_buffer[5]=control_out[2];
+ output_buffer[C0]=0x12;
+ output_buffer[C1]=(int)d;
+ output_buffer[C2]=0x00;
if(mic_boost) {
- output_buffer[5]|=0x01;
+ output_buffer[C2]|=0x01;
}
if(mic_linein) {
- output_buffer[5]|=0x02;
+ output_buffer[C2]|=0x02;
}
if(filter_board==APOLLO) {
- output_buffer[5]|=0x2C; // board, filter ,tuner
+ output_buffer[C2]|=0x2C; // board, filter ,tuner
}
if((filter_board==APOLLO) && tune && apollo_tuner) {
- output_buffer[5]|=0x10;
+ output_buffer[C2]|=0x10;
+ }
+ output_buffer[C3]=0x00;
+ if(band_get_current()==band6) {
+ output_buffer[C3]=output_buffer[6]|0x40; // Alex 6M low noise amplifier
}
- output_buffer[6]=control_out[3];
- output_buffer[7]=control_out[4];
+ output_buffer[C4]=0x00;
}
break;
case 4:
- // need to add orion tip/ring and bias configuration
- output_buffer[3]=0x14;
- output_buffer[4]=0x00;
+ output_buffer[C0]=0x14;
+ output_buffer[C1]=0x00;
if(mic_ptt_enabled==0) {
- output_buffer[4]|=0x40;
+ output_buffer[C1]|=0x40;
}
if(mic_bias_enabled) {
- output_buffer[4]|=0x20;
+ output_buffer[C1]|=0x20;
}
if(mic_ptt_tip_bias_ring) {
- output_buffer[4]|=0x10;
+ output_buffer[C1]|=0x10;
+ }
+ output_buffer[C2]=0x00;
+ output_buffer[C3]=0x00;
+
+ if(d->device==DEVICE_HERMES || d->device==DEVICE_ANGELIA || d->device==DEVICE_ORION) {
+ output_buffer[C4]=0x20|attenuation;
+ } else {
+ output_buffer[C4]=0x00;
}
- output_buffer[5]=0x00;
- output_buffer[6]=0x00;
- output_buffer[7]=0x00;
break;
case 5:
- // need to add rx attenuation and cw configuration
- output_buffer[3]=0x16;
- output_buffer[4]=0x00;
- output_buffer[5]=0x00;
+ // need to add adc 2 and 3 attenuation
+ output_buffer[C0]=0x16;
+ output_buffer[C1]=0x00;
+ output_buffer[C2]=0x00;
if(cw_keys_reversed!=0) {
- output_buffer[5]|=0x40;
+ output_buffer[C2]|=0x40;
}
- output_buffer[6]=cw_keyer_speed | (cw_keyer_mode<<6);
- output_buffer[7]=cw_keyer_weight | (cw_keyer_spacing<<7);
+ output_buffer[C3]=cw_keyer_speed | (cw_keyer_mode<<6);
+ output_buffer[C4]=cw_keyer_weight | (cw_keyer_spacing<<7);
break;
case 6:
// need to add tx attenuation and rx ADC selection
- output_buffer[3]=0x1C;
- output_buffer[4]=0x00;
- output_buffer[5]=0x00;
- output_buffer[6]=0x00;
- output_buffer[7]=0x00;
+ output_buffer[C0]=0x1C;
+ output_buffer[C1]=0x00;
+ output_buffer[C2]=0x00;
+ output_buffer[C3]=0x00;
+ output_buffer[C4]=0x00;
break;
case 7:
// need to add cw configuration
- output_buffer[3]=0x1E;
+ output_buffer[C0]=0x1E;
if(cw_keyer_internal==1) {
if(isTransmitting() || (mode!=modeCWU && mode!=modeCWL)) {
- output_buffer[4]=0x00;
+ output_buffer[C1]=0x00;
} else {
- output_buffer[4]=0x01;
+ output_buffer[C1]=0x01;
}
} else {
- output_buffer[4]=0x00;
+ output_buffer[C1]=0x00;
}
- output_buffer[5]=cw_keyer_sidetone_volume;
- output_buffer[6]=cw_keyer_ptt_delay;
- output_buffer[7]=0x00;
+ output_buffer[C2]=cw_keyer_sidetone_volume;
+ output_buffer[C3]=cw_keyer_ptt_delay;
+ output_buffer[C4]=0x00;
break;
case 8:
// need to add cw configuration
- output_buffer[3]=0x20;
- output_buffer[4]=cw_keyer_hang_time;
- output_buffer[5]=cw_keyer_hang_time>>8;
- output_buffer[6]=cw_keyer_sidetone_frequency;
- output_buffer[7]=cw_keyer_sidetone_frequency>>8;
+ output_buffer[C0]=0x20;
+ output_buffer[C1]=cw_keyer_hang_time;
+ output_buffer[C2]=cw_keyer_hang_time>>8;
+ output_buffer[C3]=cw_keyer_sidetone_frequency;
+ output_buffer[C4]=cw_keyer_sidetone_frequency>>8;
break;
}
command++;
- //if(command>=14) {
- if(command>=8) {
- command=0;
- }
+ if(command>8) {
+ command=0;
+ }
+
// set mox
- output_buffer[3]|=isTransmitting();
+ output_buffer[C0]|=isTransmitting();
metis_write(0x02,output_buffer,OZY_BUFFER_SIZE);
+
+ //fprintf(stderr,"C0=%02X C1=%02X C2=%02X C3=%02X C4=%02X\n",
+ // output_buffer[C0],output_buffer[C1],output_buffer[C2],output_buffer[C3],output_buffer[C4]);
}
static int metis_write(unsigned char ep,char* buffer,int length) {
// signal
double s1,s2;
- samples[0]=panadapter_low-20;
- samples[display_width-1]=panadapter_low-20;
- s1=samples[0]-(get_attenuation()-20.0);
+ samples[0]=-200.0;
+ samples[display_width-1]=-200.0;
+ s1=(double)samples[0]+(double)get_attenuation()-20.0;
s1 = floor((panadapter_high - s1)
* (double) panadapter_height
/ (panadapter_high - panadapter_low));
cairo_move_to(cr, 0.0, s1);
for(i=1;i<display_width;i++) {
- s2=samples[i]-(get_attenuation()-20.0);
+ s2=(double)samples[i]+(double)get_attenuation()-20.0;
s2 = floor((panadapter_high - s2)
* (double) panadapter_height
/ (panadapter_high - panadapter_low));
sem_t property_sem;
-int penelope=0;
+int atlas_penelope=0;
+int atlas_clock_source_10mhz=0;
+int atlas_clock_source_128mhz=0;
+int atlas_config=0;
+int atlas_mic_source=0;
+
+int classE=0;
+
int tx_out_of_band=0;
int sample_rate=48000;
double volume=0.2;
double mic_gain=1.5;
+int rx_dither=0;
+int rx_random=0;
+int rx_preamp=0;
+
int mic_linein=0;
int mic_boost=0;
int mic_bias_enabled=0;
int lt2208Dither = 0;
int lt2208Random = 0;
-int attenuation = 20; // 20dB
+int attenuation = 0; // 0dB
unsigned long alex_rx_antenna=0;
unsigned long alex_tx_antenna=0;
unsigned long alex_attenuation=0;
long long ddsFrequency=14250000;
+unsigned char OCtune=0;
+
void init_radio() {
int rc;
rc=sem_init(&property_sem, 0, 0);
sem_wait(&property_sem);
loadProperties(property_path);
- value=getProperty("penelope");
- if(value) penelope=atoi(value);
+ value=getProperty("atlas_penelope");
+ if(value) atlas_penelope=atoi(value);
value=getProperty("tx_out_of_band");
if(value) tx_out_of_band=atoi(value);
value=getProperty("sample_rate");
if(value) cw_breakin=atoi(value);
value=getProperty("vfo_encoder_divisor");
if(value) vfo_encoder_divisor=atoi(value);
+ value=getProperty("OCtune");
+ if(value) OCtune=atoi(value);
bandRestoreState();
sem_post(&property_sem);
char value[80];
sem_wait(&property_sem);
+ sprintf(value,"%d",atlas_penelope);
+ setProperty("atlas_penelope",value);
sprintf(value,"%d",sample_rate);
setProperty("sample_rate",value);
sprintf(value,"%d",filter_board);
setProperty("cw_breakin",value);
sprintf(value,"%d",vfo_encoder_divisor);
setProperty("vfo_encoder_divisor",value);
+ sprintf(value,"%d",OCtune);
+ setProperty("OCtune",value);
bandSaveState();
#define KEYER_MODE_A 1
#define KEYER_MODE_B 2
-extern int penelope;
+extern int rx_dither;
+extern int rx_random;
+extern int rx_preamp;
+
+extern int atlas_penelope;
+extern int atlas_clock_source_10mhz;
+extern int atlas_clock_source_128mhz;
+extern int atlas_config;
+extern int atlas_mic_source;
+
+extern int classE;
+
extern int tx_out_of_band;
extern int sample_rate;
extern long long ddsFrequency;
+extern unsigned char OCtune;
+
extern void init_radio();
extern void setSampleRate(int rate);
extern int getSampleRate();
#define AGC_GAIN 3
#define DRIVE 4
#define TUNE_DRIVE 5
+#define ATTENUATION 5
#define MIC_GAIN_FUDGE 25.0
static GtkWidget *af_gain_scale;
static GtkWidget *agc_gain_label;
static GtkWidget *agc_scale;
+static GtkWidget *attenuation_label;
+static GtkWidget *attenuation_scale;
static GtkWidget *mic_gain_label;
static GtkWidget *mic_gain_scale;
static GtkWidget *drive_label;
return FALSE;
}
+static void attenuation_value_changed_cb(GtkWidget *widget, gpointer data) {
+ attenuation=gtk_range_get_value(GTK_RANGE(attenuation_scale));
+ if(protocol==NEW_PROTOCOL) {
+ // need to schedule something
+ }
+}
+
+void set_attenuation_value(double value) {
+ attenuation=(int)value;
+ if(display_sliders) {
+ gtk_range_set_value (GTK_RANGE(attenuation_scale),attenuation);
+ } else {
+ if(scale_status!=ATTENUATION) {
+ if(scale_status!=NONE) {
+ g_source_remove(scale_timer);
+ gtk_widget_destroy(scale_dialog);
+ scale_status=NONE;
+ }
+ }
+ if(scale_status==NONE) {
+ scale_status=ATTENUATION;
+ scale_dialog=gtk_dialog_new_with_buttons("Attenuation (dB)",GTK_WINDOW(parent_window),GTK_DIALOG_DESTROY_WITH_PARENT,NULL,NULL);
+ GtkWidget *content=gtk_dialog_get_content_area(GTK_DIALOG(scale_dialog));
+ attenuation_scale=gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL,0.0, 31.0, 1.00);
+ gtk_widget_set_size_request (attenuation_scale, 400, 30);
+ gtk_range_set_value (GTK_RANGE(attenuation_scale),attenuation);
+ gtk_widget_show(attenuation_scale);
+ gtk_container_add(GTK_CONTAINER(content),attenuation_scale);
+ scale_timer=g_timeout_add(2000,scale_timeout_cb,NULL);
+ //gtk_widget_show_all(scale_dialog);
+ int result=gtk_dialog_run(GTK_DIALOG(scale_dialog));
+ } else {
+ g_source_remove(scale_timer);
+ gtk_range_set_value (GTK_RANGE(attenuation_scale),attenuation);
+ scale_timer=g_timeout_add(2000,scale_timeout_cb,NULL);
+ }
+ }
+ if(protocol==NEW_PROTOCOL) {
+ // need to schedule something
+ }
+}
+
static void agc_select_cb(GtkWidget *widget, gpointer data) {
agc=(int)data;
SetRXAAGCMode(CHANNEL_RX0, agc);
gtk_grid_attach(GTK_GRID(sliders),agc_scale,4,0,2,1);
g_signal_connect(G_OBJECT(agc_scale),"value_changed",G_CALLBACK(agcgain_value_changed_cb),NULL);
+ attenuation_label=gtk_label_new("ATT (dB):");
+ //gtk_widget_override_font(attenuation_label, pango_font_description_from_string("Arial 16"));
+ gtk_widget_show(attenuation_label);
+ gtk_grid_attach(GTK_GRID(sliders),attenuation_label,6,0,1,1);
+
+ attenuation_scale=gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL,0.0, 31.0, 1.0);
+ gtk_range_set_value (GTK_RANGE(attenuation_scale),attenuation);
+ gtk_widget_show(attenuation_scale);
+ gtk_grid_attach(GTK_GRID(sliders),attenuation_scale,7,0,2,1);
+ g_signal_connect(G_OBJECT(attenuation_scale),"value_changed",G_CALLBACK(attenuation_value_changed_cb),NULL);
+
+
mic_gain_label=gtk_label_new("Mic:");
//gtk_widget_override_font(mic_gain_label, pango_font_description_from_string("Arial 16"));
void set_mic_gain(double value);
void set_drive(double drive);
void set_tune(double tune);
+void set_attenuation_value(double attenuation);
int ptt_update(void *data);
void lock_cb(GtkWidget *widget, gpointer data);
void mox_cb(GtkWidget *widget, gpointer data);
cairo_move_to(cr, (my_width/2)+20, 30);
cairo_show_text(cr, getFrequencyInfo(entry->frequencyA));
-// sprintf(sf,"Step %dHz",step);
-// cairo_move_to(cr, 10, 25);
-// cairo_show_text(cr, sf);
+ sprintf(sf,"Step %dHz",step);
+ cairo_move_to(cr, (my_width/2)+20, 15);
+ cairo_show_text(cr, sf);
if(locked) {
cairo_set_source_rgb(cr, 1, 0, 0);