From 8d3cf8d70229196d179cf49b9e22c308d5b663cd Mon Sep 17 00:00:00 2001 From: John Melton - G0ORX/N6LYT Date: Thu, 22 Dec 2016 17:44:44 +0000 Subject: [PATCH] Disabled LOCALCW in build. Change pushbuttons/toolbar functions when function pressed (RIT+/- and CTUN). --- Makefile | 13 +-- beep.c | 2 + configure.c | 5 +- cw_menu.c | 2 + gpio.c | 22 ++++- main.c | 18 ++--- new_menu.c | 15 ++-- radio.c | 2 + toolbar.c | 229 +++++++++++++++++++++++++++++++++------------------- toolbar.h | 6 +- update.c | 2 +- vfo.c | 6 ++ 12 files changed, 210 insertions(+), 112 deletions(-) diff --git a/Makefile b/Makefile index a67664c..773c00b 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,7 @@ FREEDV_INCLUDE=FREEDV #SX1509_INCLUDE=sx1509 # uncomment the line to below include support local CW keyer -LOCALCW_INCLUDE=LOCALCW +#LOCALCW_INCLUDE=LOCALCW #uncomment the line below for the platform being compiled on UNAME_N=raspberrypi @@ -193,7 +193,8 @@ waterfall.c \ wdsp_init.c \ button_text.c \ vox.c \ -update.c +update.c \ +memory.c HEADERS= \ @@ -253,7 +254,8 @@ waterfall.h \ wdsp_init.h \ button_text.h \ vox.h \ -update.h +update.h \ +memory.h OBJS= \ @@ -311,7 +313,8 @@ waterfall.o \ wdsp_init.o \ button_text.o \ vox.o \ -update.o +update.o \ +memory.o all: prebuild $(PROGRAM) $(HEADERS) $(LIMESDR_HEADERS) $(FREEDV_HEADERS) $(LOCALCW_HEADERS) $(GPIO_HEADERS) $(PSK_HEADERS) $(SOURCES) $(LIMESDR_SOURCES) $(FREEDV_SOURCES) $(GPIO_SOURCES) $(PSK_SOURCES) @@ -332,7 +335,7 @@ clean: install: cp pihpsdr ../pihpsdr cp pihpsdr ./release/pihpsdr + cd release; echo $(GIT_VERSION) > pihpsdr/latest cd release; tar cvf pihpsdr_$(GIT_VERSION).tar pihpsdr cd release; tar cvf pihpsdr.tar pihpsdr - cd release; echo $(GIT_VERSION) > pihpsdr/latest diff --git a/beep.c b/beep.c index 284fd47..7fd9669 100644 --- a/beep.c +++ b/beep.c @@ -348,6 +348,7 @@ static void* beep_thread(void *arg) { printf("Setting of hwparams failed: %s\n", snd_strerror(err)); exit(EXIT_FAILURE); } + if ((err = set_swparams(handle, swparams)) < 0) { printf("Setting of swparams failed: %s\n", snd_strerror(err)); exit(EXIT_FAILURE); @@ -375,6 +376,7 @@ static void* beep_thread(void *arg) { free(areas); free(samples); snd_pcm_close(handle); + return 0; } diff --git a/configure.c b/configure.c index d33ce08..89b1ede 100644 --- a/configure.c +++ b/configure.c @@ -268,6 +268,7 @@ void configure_gpio(GtkWidget *parent) { gtk_widget_show(function); gtk_grid_attach(GTK_GRID(grid),function,2,10,1,1); +#ifdef LOCALCW GtkWidget *cwl_label=gtk_label_new("CWL"); gtk_widget_show(cwl_label); gtk_grid_attach(GTK_GRID(grid),cwl_label,0,11,1,1); @@ -293,7 +294,7 @@ void configure_gpio(GtkWidget *parent) { gtk_spin_button_set_value (GTK_SPIN_BUTTON(cwr),CWR_BUTTON); gtk_widget_show(cwr); gtk_grid_attach(GTK_GRID(grid),cwr,2,12,1,1); - +#endif gtk_container_add(GTK_CONTAINER(content),grid); @@ -336,8 +337,10 @@ void configure_gpio(GtkWidget *parent) { MOX_BUTTON=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(mox)); ENABLE_FUNCTION_BUTTON=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(b_enable_function))?1:0; FUNCTION_BUTTON=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(function)); +#ifdef LOCALCW CWL_BUTTON=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(cwl)); CWR_BUTTON=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(cwr)); +#endif gtk_widget_destroy(dialog); diff --git a/cw_menu.c b/cw_menu.c index aa77907..b1e263c 100644 --- a/cw_menu.c +++ b/cw_menu.c @@ -218,6 +218,7 @@ void cw_menu(GtkWidget *parent) { gtk_grid_attach(GTK_GRID(grid),cw_keyer_weight_b,1,9,1,1); g_signal_connect(cw_keyer_weight_b,"value_changed",G_CALLBACK(cw_keyer_weight_value_changed_cb),NULL); +#ifdef LOCALCW GtkWidget *cw_keyer_internal_b=gtk_check_button_new_with_label("CW Internal"); //gtk_widget_override_font(cw_keyer_internal_b, pango_font_description_from_string("Arial 18")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cw_keyer_internal_b), cw_keyer_internal); @@ -231,6 +232,7 @@ void cw_menu(GtkWidget *parent) { gtk_widget_show(cw_active_level_b); gtk_grid_attach(GTK_GRID(grid),cw_active_level_b,1,10,1,1); g_signal_connect(cw_active_level_b,"toggled",G_CALLBACK(cw_active_level_cb),NULL); +#endif gtk_container_add(GTK_CONTAINER(content),grid); diff --git a/gpio.c b/gpio.c index c9ac3be..5dea0c9 100644 --- a/gpio.c +++ b/gpio.c @@ -246,8 +246,10 @@ static void lockAlert(int gpio, int level, uint32_t tick) { static void cwAlert(int gpio, int level, uint32_t tick) { fprintf(stderr,"cwAlert: gpio=%d level=%d internal=%d\n",gpio,level,cw_keyer_internal); - if (cw_keyer_internal == 0) +#ifdef LOCALCW + if (cw_keyer_internal == 0 && (mode==modeCWL || mode==modeCWU)) keyer_event(gpio, cw_active_level == 0 ? level : (level==0)); +#endif } static void vfoEncoderPulse(int gpio, int level, unsigned int tick) { @@ -1056,12 +1058,22 @@ static int agc_encoder_changed(void *data) { } static int band_pressed(void *data) { - sim_band_cb(NULL,NULL); + sim_band_pressed_cb(NULL,NULL); + return 0; +} + +static int band_released(void *data) { + sim_band_released_cb(NULL,NULL); return 0; } static int bandstack_pressed(void *data) { - sim_bandstack_cb(NULL,NULL); + sim_bandstack_pressed_cb(NULL,NULL); + return 0; +} + +static int bandstack_released(void *data) { + sim_bandstack_released_cb(NULL,NULL); return 0; } @@ -1159,6 +1171,8 @@ static void* rotary_encoder_thread(void *arg) { previous_band_button=band_button; if(band_button) { g_idle_add(band_pressed,(gpointer)NULL); + } else { + g_idle_add(band_released,(gpointer)NULL); } } @@ -1167,6 +1181,8 @@ static void* rotary_encoder_thread(void *arg) { previous_bandstack_button=bandstack_button; if(bandstack_button) { g_idle_add(bandstack_pressed,(gpointer)NULL); + } else { + g_idle_add(bandstack_released,(gpointer)NULL); } } diff --git a/main.c b/main.c index 0226125..c0fd576 100644 --- a/main.c +++ b/main.c @@ -68,11 +68,11 @@ #define DISPLAY_INCREMENT (display_height/32) #define VFO_HEIGHT (DISPLAY_INCREMENT*4) //#define VFO_HEIGHT (DISPLAY_INCREMENT*8) -#define VFO_WIDTH ((display_width/32)*16) +#define VFO_WIDTH ((display_width/32)*21) #define MENU_HEIGHT VFO_HEIGHT //#define MENU_HEIGHT (DISPLAY_INCREMENT*4) -#define MENU_WIDTH ((display_width/32)*8) -#define RIT_WIDTH ((MENU_WIDTH/3)*2) +#define MENU_WIDTH ((display_width/32)*3) +//#define RIT_WIDTH ((MENU_WIDTH/3)*2) #define METER_HEIGHT VFO_HEIGHT //#define METER_HEIGHT (DISPLAY_INCREMENT*4) #define METER_WIDTH ((display_width/32)*8) @@ -632,19 +632,19 @@ fprintf(stderr,"start: selected radio=%p device=%d\n",radio,radio->device); - rit_control = rit_init(RIT_WIDTH,MENU_HEIGHT,window); - gtk_fixed_put(GTK_FIXED(fixed),rit_control,VFO_WIDTH,y); + //rit_control = rit_init(RIT_WIDTH,MENU_HEIGHT,window); + //gtk_fixed_put(GTK_FIXED(fixed),rit_control,VFO_WIDTH,y); GtkWidget *minimize_b=gtk_button_new_with_label("Hide"); gtk_widget_override_font(minimize_b, pango_font_description_from_string("FreeMono Bold 10")); - gtk_widget_set_size_request (minimize_b, MENU_WIDTH-RIT_WIDTH, MENU_HEIGHT/2); + gtk_widget_set_size_request (minimize_b, MENU_WIDTH, MENU_HEIGHT/2); g_signal_connect (minimize_b, "button-press-event", G_CALLBACK(minimize_cb), NULL); gtk_widget_show(minimize_b); - gtk_fixed_put(GTK_FIXED(fixed),minimize_b,VFO_WIDTH+((MENU_WIDTH/3)*2),y); + gtk_fixed_put(GTK_FIXED(fixed),minimize_b,VFO_WIDTH,y); //menu = menu_init(MENU_WIDTH,MENU_HEIGHT,window); - menu = new_menu_init(MENU_WIDTH-RIT_WIDTH,MENU_HEIGHT/2,window); - gtk_fixed_put(GTK_FIXED(fixed),menu,VFO_WIDTH+((MENU_WIDTH/3)*2),y+(MENU_HEIGHT/2)); + menu = new_menu_init(MENU_WIDTH,MENU_HEIGHT/2,window); + gtk_fixed_put(GTK_FIXED(fixed),menu,VFO_WIDTH,y+(MENU_HEIGHT/2)); meter = meter_init(METER_WIDTH,METER_HEIGHT,window); gtk_fixed_put(GTK_FIXED(fixed),meter,VFO_WIDTH+MENU_WIDTH,y); diff --git a/new_menu.c b/new_menu.c index ff5fdf3..6be6ec2 100644 --- a/new_menu.c +++ b/new_menu.c @@ -388,11 +388,13 @@ static gboolean new_menu_pressed_event_cb (GtkWidget *widget, GtkWidget *frequency_b=gtk_button_new_with_label("Frequency"); g_signal_connect (frequency_b, "button-press-event", G_CALLBACK(freqent_cb), NULL); gtk_grid_attach(GTK_GRID(grid),frequency_b,3,3,1,1); -/* - GtkWidget *diversity_b=gtk_button_new_with_label("Diversity"); - g_signal_connect (diversity_b, "button-press-event", G_CALLBACK(diversity_cb), NULL); - gtk_grid_attach(GTK_GRID(grid),diversity_b,4,3,1,1); -*/ + + if(RECEIVERS==2) { + GtkWidget *diversity_b=gtk_button_new_with_label("Diversity"); + g_signal_connect (diversity_b, "button-press-event", G_CALLBACK(diversity_cb), NULL); + gtk_grid_attach(GTK_GRID(grid),diversity_b,4,3,1,1); + } + GtkWidget *band_b=gtk_button_new_with_label("Band"); g_signal_connect (band_b, "button-press-event", G_CALLBACK(band_cb), NULL); gtk_grid_attach(GTK_GRID(grid),band_b,0,4,1,1); @@ -417,11 +419,10 @@ static gboolean new_menu_pressed_event_cb (GtkWidget *widget, g_signal_connect (agc_b, "button-press-event", G_CALLBACK(agc_cb), NULL); gtk_grid_attach(GTK_GRID(grid),agc_b,5,4,1,1); -/* GtkWidget *test_b=gtk_button_new_with_label("Test"); g_signal_connect (test_b, "button-press-event", G_CALLBACK(test_cb), NULL); gtk_grid_attach(GTK_GRID(grid),test_b,0,5,1,1); -*/ + gtk_container_add(GTK_CONTAINER(content),grid); gtk_widget_show_all(dialog); diff --git a/radio.c b/radio.c index 65f0fdd..4698dd7 100644 --- a/radio.c +++ b/radio.c @@ -619,8 +619,10 @@ fprintf(stderr,"radioRestoreState: %s\n",property_path); if(value) cw_keyer_weight=atoi(value); value=getProperty("cw_keyer_spacing"); if(value) cw_keyer_spacing=atoi(value); +#ifdef LOCALCW value=getProperty("cw_keyer_internal"); if(value) cw_keyer_internal=atoi(value); +#endif value=getProperty("cw_active_level"); if(value) cw_active_level=atoi(value); value=getProperty("cw_keyer_sidetone_volume"); diff --git a/toolbar.c b/toolbar.c index 93b2add..602201f 100644 --- a/toolbar.c +++ b/toolbar.c @@ -69,6 +69,8 @@ static GtkWidget *last_filter; static GdkRGBA white; static GdkRGBA gray; +static gint rit_timer; + static void set_button_text_color(GtkWidget *widget,char *color) { GtkStyleContext *style_context; GtkCssProvider *provider = gtk_css_provider_new (); @@ -82,16 +84,25 @@ static void set_button_text_color(GtkWidget *widget,char *color) { void update_toolbar_labels() { if(toolbar_dialog_buttons) { - gtk_button_set_label(GTK_BUTTON(sim_band),"Band"); - gtk_button_set_label(GTK_BUTTON(sim_bandstack),"BStack"); - gtk_button_set_label(GTK_BUTTON(sim_mode),"Mode"); - gtk_button_set_label(GTK_BUTTON(sim_filter),"Filter"); - gtk_button_set_label(GTK_BUTTON(sim_noise),"Noise"); - gtk_button_set_label(GTK_BUTTON(sim_agc),"AGC"); if(function) { - gtk_button_set_label(GTK_BUTTON(sim_mox),"Tune"); } else { gtk_button_set_label(GTK_BUTTON(sim_mox),"Mox"); + gtk_button_set_label(GTK_BUTTON(sim_band),"Band"); + gtk_button_set_label(GTK_BUTTON(sim_bandstack),"BStack"); + gtk_button_set_label(GTK_BUTTON(sim_mode),"Mode"); + gtk_button_set_label(GTK_BUTTON(sim_filter),"Filter"); + gtk_button_set_label(GTK_BUTTON(sim_noise),"Noise"); + gtk_button_set_label(GTK_BUTTON(sim_agc),"AGC"); + } + if(function) { + gtk_button_set_label(GTK_BUTTON(sim_mox),"Tune"); + gtk_button_set_label(GTK_BUTTON(sim_band),"RIT+"); + gtk_button_set_label(GTK_BUTTON(sim_bandstack),"RIT-"); + gtk_button_set_label(GTK_BUTTON(sim_mode),"CTUN"); + gtk_button_set_label(GTK_BUTTON(sim_filter),"Filter"); + gtk_button_set_label(GTK_BUTTON(sim_noise),"Noise"); + gtk_button_set_label(GTK_BUTTON(sim_agc),"AGC"); + } else { } } else { if(function) { @@ -998,7 +1009,7 @@ int ptt_update(void *data) { return 0; } -void tune_cb(GtkWidget *widget, gpointer data) { +static void tune_cb(GtkWidget *widget, gpointer data) { if(getMox()==1) { setMox(0); } @@ -1010,104 +1021,152 @@ void tune_cb(GtkWidget *widget, gpointer data) { vfo_update(NULL); } -void sim_band_cb(GtkWidget *widget, gpointer data) { - BAND* band; - BANDSTACK_ENTRY *entry; - if(toolbar_dialog_buttons) { - band_cb(widget,data); +static gboolean rit_timer_cb(gpointer data) { + if((int)data==1) { + rit+=rit_increment; } else { - int b=band_get_current(); - if(function) { - b--; - if(b<0) { - b=BANDS-1; - } + rit-=rit_increment; + } + if(rit>1000) rit=1000; + if(rit<-1000) rit=-1000; + vfo_update(NULL); + return TRUE; +} + +void sim_band_pressed_cb(GtkWidget *widget, gpointer data) { + if(function) { + rit+=rit_increment; + if(rit>1000) rit=1000; + vfo_update(NULL); + rit_timer=g_timeout_add(200,rit_timer_cb,(gpointer)1); + } else { + BAND* band; + BANDSTACK_ENTRY *entry; + if(toolbar_dialog_buttons) { + band_cb(widget,data); + } else { + int b=band_get_current(); + if(function) { + b--; + if(b<0) { + b=BANDS-1; + } #ifdef LIMESDR - if(protocol!=LIMESDR_PROTOCOL) { - if(b==band3400) { - b=band6; + if(protocol!=LIMESDR_PROTOCOL) { + if(b==band3400) { + b=band6; + } } - } #endif - } else { - b++; - if(b>=BANDS) { - b=0; - } + } else { + b++; + if(b>=BANDS) { + b=0; + } #ifdef LIMESDR - if(protocol!=LIMESDR_PROTOCOL) { - if(b==band70) { - b=bandGen; + if(protocol!=LIMESDR_PROTOCOL) { + if(b==band70) { + b=bandGen; + } } - } #endif + } + band=band_set_current(b); + entry=bandstack_entry_get_current(); + + setFrequency(entry->frequencyA); + setMode(entry->mode); + FILTER* band_filters=filters[entry->mode]; + FILTER* band_filter=&band_filters[entry->filter]; + setFilter(band_filter->low,band_filter->high); + + band=band_get_current_band(); + set_alex_rx_antenna(band->alexRxAntenna); + set_alex_tx_antenna(band->alexTxAntenna); + set_alex_attenuation(band->alexAttenuation); + vfo_update(NULL); + + calcDriveLevel(); + calcTuneDriveLevel(); } - band=band_set_current(b); - entry=bandstack_entry_get_current(); - - setFrequency(entry->frequencyA); - setMode(entry->mode); - FILTER* band_filters=filters[entry->mode]; - FILTER* band_filter=&band_filters[entry->filter]; - setFilter(band_filter->low,band_filter->high); - - band=band_get_current_band(); - set_alex_rx_antenna(band->alexRxAntenna); - set_alex_tx_antenna(band->alexTxAntenna); - set_alex_attenuation(band->alexAttenuation); - vfo_update(NULL); + } +} - calcDriveLevel(); - calcTuneDriveLevel(); +void sim_band_released_cb(GtkWidget *widget, gpointer data) { + if(function) { + g_source_remove(rit_timer); } } -void sim_bandstack_cb(GtkWidget *widget, gpointer data) { - BANDSTACK_ENTRY *entry; - if(toolbar_dialog_buttons) { - bandstack_cb(widget,data); +void sim_bandstack_pressed_cb(GtkWidget *widget, gpointer data) { + if(function) { + rit-=rit_increment; + if(rit<-1000) rit=-1000; + vfo_update(NULL); + rit_timer=g_timeout_add(200,rit_timer_cb,(gpointer)-1); } else { - if(function) { - entry=bandstack_entry_previous(); + BANDSTACK_ENTRY *entry; + if(toolbar_dialog_buttons) { + bandstack_cb(widget,data); } else { - entry=bandstack_entry_next(); + if(function) { + entry=bandstack_entry_previous(); + } else { + entry=bandstack_entry_next(); + } + setFrequency(entry->frequencyA); + setMode(entry->mode); + FILTER* band_filters=filters[entry->mode]; + FILTER* band_filter=&band_filters[entry->filter]; + setFilter(band_filter->low,band_filter->high); + vfo_update(NULL); } - setFrequency(entry->frequencyA); - setMode(entry->mode); - FILTER* band_filters=filters[entry->mode]; - FILTER* band_filter=&band_filters[entry->filter]; - setFilter(band_filter->low,band_filter->high); - vfo_update(NULL); } } -void sim_mode_cb(GtkWidget *widget, gpointer data) { - BAND* band; - BANDSTACK_ENTRY *entry; +void sim_bandstack_released_cb(GtkWidget *widget, gpointer data) { + if(function) { + g_source_remove(rit_timer); + } +} - if(toolbar_dialog_buttons) { - mode_cb(widget,data); + +void sim_mode_cb(GtkWidget *widget, gpointer data) { + if(function) { + ctun=ctun==1?0:1; + if(!ctun) { + ddsOffset=0; + wdsp_set_offset(ddsOffset); + } + vfo_update(NULL); } else { - band=band_get_current_band(); - entry=bandstack_entry_get_current(); - if(function) { - entry->mode--; - if(entry->mode<0) { - entry->mode=MODES-1; - } + BAND* band; + BANDSTACK_ENTRY *entry; + + if(toolbar_dialog_buttons) { + mode_cb(widget,data); } else { - entry->mode++; - if(entry->mode>=MODES) { - entry->mode=0; + band=band_get_current_band(); + entry=bandstack_entry_get_current(); + if(function) { + entry->mode--; + if(entry->mode<0) { + entry->mode=MODES-1; + } + } else { + entry->mode++; + if(entry->mode>=MODES) { + entry->mode=0; + } } - } - setMode(entry->mode); + setMode(entry->mode); - FILTER* band_filters=filters[entry->mode]; - FILTER* band_filter=&band_filters[entry->filter]; - setFilter(band_filter->low,band_filter->high); + FILTER* band_filters=filters[entry->mode]; + FILTER* band_filter=&band_filters[entry->filter]; + setFilter(band_filter->low,band_filter->high); - vfo_update(NULL); + vfo_update(NULL); + } } } @@ -1251,13 +1310,15 @@ GtkWidget *toolbar_init(int my_width, int my_height, GtkWidget* parent) { sim_band=gtk_button_new_with_label("Band ^"); gtk_widget_set_size_request (sim_band, button_width, 0); //gtk_widget_override_font(sim_band, pango_font_description_from_string("Arial 16")); - g_signal_connect(G_OBJECT(sim_band),"clicked",G_CALLBACK(sim_band_cb),NULL); + g_signal_connect(G_OBJECT(sim_band),"pressed",G_CALLBACK(sim_band_pressed_cb),NULL); + g_signal_connect(G_OBJECT(sim_band),"released",G_CALLBACK(sim_band_released_cb),NULL); gtk_grid_attach(GTK_GRID(toolbar),sim_band,4,0,4,1); sim_bandstack=gtk_button_new_with_label("BStack ^"); gtk_widget_set_size_request (sim_bandstack, button_width, 0); //gtk_widget_override_font(sim_bandstack, pango_font_description_from_string("Arial 16")); - g_signal_connect(G_OBJECT(sim_bandstack),"clicked",G_CALLBACK(sim_bandstack_cb),NULL); + g_signal_connect(G_OBJECT(sim_bandstack),"pressed",G_CALLBACK(sim_bandstack_pressed_cb),NULL); + g_signal_connect(G_OBJECT(sim_bandstack),"released",G_CALLBACK(sim_bandstack_released_cb),NULL); gtk_grid_attach(GTK_GRID(toolbar),sim_bandstack,8,0,4,1); sim_mode=gtk_button_new_with_label("Mode ^"); diff --git a/toolbar.h b/toolbar.h index 8ade0a4..f66552c 100644 --- a/toolbar.h +++ b/toolbar.h @@ -28,8 +28,10 @@ void lock_cb(GtkWidget *widget, gpointer data); void sim_mox_cb(GtkWidget *widget, gpointer data); -void sim_band_cb(GtkWidget *widget, gpointer data); -void sim_bandstack_cb(GtkWidget *widget, gpointer data); +void sim_band_pressed_cb(GtkWidget *widget, gpointer data); +void sim_band_released_cb(GtkWidget *widget, gpointer data); +void sim_bandstack_pressed_cb(GtkWidget *widget, gpointer data); +void sim_bandstack_released_cb(GtkWidget *widget, gpointer data); void sim_mode_cb(GtkWidget *widget, gpointer data); void sim_filter_cb(GtkWidget *widget, gpointer data); void sim_noise_cb(GtkWidget *widget, gpointer data); diff --git a/update.c b/update.c index 59de7ff..b4f7d49 100644 --- a/update.c +++ b/update.c @@ -50,7 +50,7 @@ int check_update() { int load_update() { char command[1024]; - sprintf(command,"/usr/sbin/wget -N https://github.com/g0orx/pihpsdr/raw/master/release/pihpsdr_%s.tar",new_version); + sprintf(command,"cd ..; /usr/bin/wget -N https://github.com/g0orx/pihpsdr/raw/master/release/pihpsdr_%s.tar",new_version); fprintf(stderr,"load_update: %s\n",command); int rc=system(command); diff --git a/vfo.c b/vfo.c index 3097f1b..5e4ffda 100644 --- a/vfo.c +++ b/vfo.c @@ -336,6 +336,12 @@ int vfo_update(void *data) { break; } + + cairo_move_to(cr, 400, 50); + if(ctun) { + cairo_show_text(cr, "CTUN"); + } + cairo_destroy (cr); gtk_widget_queue_draw (vfo); } else { -- 2.45.2