]> git.rkrishnan.org Git - pihpsdr.git/commitdiff
Disabled LOCALCW in build. Change pushbuttons/toolbar functions when function pressed...
authorJohn Melton - G0ORX/N6LYT <john.d.melton@googlemail.com>
Thu, 22 Dec 2016 17:44:44 +0000 (17:44 +0000)
committerJohn Melton - G0ORX/N6LYT <john.d.melton@googlemail.com>
Thu, 22 Dec 2016 17:44:44 +0000 (17:44 +0000)
12 files changed:
Makefile
beep.c
configure.c
cw_menu.c
gpio.c
main.c
new_menu.c
radio.c
toolbar.c
toolbar.h
update.c
vfo.c

index a67664c90a7e9eca82c53773824455fff8c9a5fa..773c00b0c9424cdfe02a99500858152e7a44cae4 100644 (file)
--- 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 284fd479a6c6fd1275b2c75ee478f2ab26ff5379..7fd966946d19fc5a6066984e4766d081c58f8d5f 100644 (file)
--- 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;
 }
 
index d33ce08d74bb56d6303e904d04b018c779fd4089..89b1ede4abde80f037ec2c6f735071243cbf4639 100644 (file)
@@ -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);
 
index aa77907593c5fb4fb644f50d82758db99a5518e4..b1e263c4debd542dbbc5557c84e690cf11a18c07 100644 (file)
--- 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 c9ac3bee05e8e614bffd05a6fce6735171795f98..5dea0c98e9ce513b55b6e70264aed5abb9a5d149 100644 (file)
--- 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 0226125b712ab99da9ec7575217fe5880a66cb87..c0fd576e9c308096173353ff18e58eaa59cba888 100644 (file)
--- a/main.c
+++ b/main.c
 #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);
index ff5fdf3c7eff57c6c16d8196949302f1bb31936c..6be6ec20367694d99b7c0ebdb7e966c80e910fcb 100644 (file)
@@ -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 65f0fdd71433bffb7c1094454ea94b29914b73da..4698dd72e17dca132da0a9741ca8f1f4ddb4a5d8 100644 (file)
--- 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");
index 93b2add9fffe44952f6ae2293b5c7ab7b882506b..602201f0c029120226c4e7cea3f7082fd0971489 100644 (file)
--- 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 ^");
index 8ade0a43b572f4d9d0c8f65bc98c9cbe7918eeb1..f66552c543aeca9892486ce1c0cbf8aee008ad75 100644 (file)
--- 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);
index 59de7ff3ba9fb470a09aad214bf0d941fd88328b..b4f7d49d238331e720ad17d568724194e8db2c43 100644 (file)
--- 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 3097f1bf3c8d59c298de7e4f67dc3b0e89c2b0e5..5e4ffda86747d609bf682a88fee0d926ae370639 100644 (file)
--- 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 {