]> git.rkrishnan.org Git - pihpsdr.git/commitdiff
removed SPLIT_RXTX, etc.
authorc vw <dl1ycf@darc.de>
Wed, 15 Aug 2018 17:21:48 +0000 (19:21 +0200)
committerc vw <dl1ycf@darc.de>
Wed, 15 Aug 2018 17:21:48 +0000 (19:21 +0200)
ext.c
ps_menu.c
radio.c
transmitter.c
tx_panadapter.c

diff --git a/ext.c b/ext.c
index 331883dd6d21a36ec115c6a397fb0e6e4f6e036d..d49947a89c6cf28eead43d62245a9eefa465f457 100644 (file)
--- a/ext.c
+++ b/ext.c
@@ -170,11 +170,6 @@ int ext_tx_set_ps(void *data) {
   tx_set_ps(transmitter,(uintptr_t)data);
   return 0;
 }
-
-int ext_ps_twotone(void *data) {
-  ps_twotone((uintptr_t)data);
-  return 0;
-}
 #endif
 
 int ext_vfo_step(void *data) {
index 90a7a1cf0eb395665b0bff990826d8db34885efa..082cbf705237e8ea5939e964ebf31274e010ac5f 100644 (file)
--- a/ps_menu.c
+++ b/ps_menu.c
@@ -39,8 +39,6 @@ static GtkWidget *correcting_l;
 static GtkWidget *get_pk;
 static GtkWidget *set_pk;
 
-static GThread *info_thread_id;
-
 static int running=0;
 
 #define INFO_SIZE 16
@@ -84,15 +82,25 @@ static gboolean delete_event(GtkWidget *widget, GdkEvent *event, gpointer user_d
 
 static int deltadb=0;
 
-static gpointer info_thread(gpointer arg) {
+//
+//
+// DL1YCF: had repeated seg-faults, possibly this is not thread-safe.
+//         executing it at regular intervals in the glib main loop
+//         does the same thing.
+//         We now call this function every 100 msec, therefore we can
+//         adjust the tx attenuation upon each invocation.
+//         The massive alloc/free of the label is completely unnecessary
+//         and has been removed, the small string to be displayed is
+//         prepeared in "label".
+//
+static int info_thread(gpointer arg) {
   static int info[16];
   int i;
-  gchar *label;
+  gchar label[20];
   static int old5=0;
   static int old5_2=0;
   static int old14=0;
   int display;
-  int counter=0;
   int state=0;
   int save_auto_on;
   int save_single_on;
@@ -103,34 +111,14 @@ static gpointer info_thread(gpointer arg) {
     transmitter->attenuation=0;
   }
 
-  running=1;
-  while(running) {
     GetPSInfo(transmitter->id,&info[0]);
     for(i=0;i<INFO_SIZE;i++) {
-      label=NULL;
       display=1;
+      sprintf(label,"%d",info[i]);
       switch(i) {
-        case 0:
-          label=g_strdup_printf("%d",info[i]);
-          display=0;
-          break;
-        case 1:
-          label=g_strdup_printf("%d",info[i]);
-          display=0;
-          break;
-        case 2:
-          label=g_strdup_printf("%d",info[i]);
-          display=0;
-          break;
-        case 3:
-          label=g_strdup_printf("%d",info[i]);
-          display=0;
-          break;
         case 4:
-          label=g_strdup_printf("%d",info[i]);
           break;
         case 5:
-          label=g_strdup_printf("%d",info[i]);
           if(info[i]!=old5) {
             old5=info[5];
             if(info[4]>181)  {
@@ -145,13 +133,10 @@ static gpointer info_thread(gpointer arg) {
           }
           break;
         case 6:
-          label=g_strdup_printf("%d",info[i]);
           break;
         case 13:
-          label=g_strdup_printf("%d",info[i]);
           break;
         case 14:
-          label=g_strdup_printf("%d",info[i]);
           if(info[14]!=old14) {
             old14=info[14];
             if(info[14]==0) {
@@ -165,80 +150,62 @@ static gpointer info_thread(gpointer arg) {
         case 15:
           switch(info[i]) {
             case 0:
-              label=g_strdup_printf("RESET");
+              strcpy(label,"RESET");
               break;
             case 1:
-              label=g_strdup_printf("WAIT");
+              strcpy(label,"WAIT");
               break;
             case 2:
-              label=g_strdup_printf("MOXDELAY");
+              strcpy(label,"MOXDELAY");
               break;
             case 3:
-              label=g_strdup_printf("SETUP");
+              strcpy(label,"SETUP");
               break;
             case 4:
-              label=g_strdup_printf("COLLECT");
+              strcpy(label,"COLLECT");
               break;
             case 5:
-              label=g_strdup_printf("MOXCHECK");
+              strcpy(label,"MOXCHECK");
               break;
             case 6:
-              label=g_strdup_printf("CALC");
+              strcpy(label,"CALC");
               break;
             case 7:
-              label=g_strdup_printf("DELAY");
+              strcpy(label,"DELAY");
               break;
             case 8:
-              label=g_strdup_printf("STAYON");
+              strcpy(label,"STAYON");
               break;
             case 9:
-              label=g_strdup_printf("TUNRON");
+              strcpy(label,"TURNON");
               break;
             default:
-              label=g_strdup_printf("UNKNOWN %d=%d",i,info[i]);
+              display=0;
               break;
           }
           break;
         default:
-          label=g_strdup_printf("info %d=%d",i,info[i]);
           display=0;
           break;
       }
-      if(display) {
-        if(entry[i]!=NULL) {
+      if(display && entry[i] != NULL) {
           gtk_entry_set_text(GTK_ENTRY(entry[i]),label);
-        } else {
-fprintf(stderr,"ps_menu: entry %d is NULL\n", i);
-        }
-      }
-
-      if(label!=NULL) {
-        g_free(label);
-        label=NULL;
       }
-
     }
 
     double pk;
-    gchar *pk_label;
 
     GetPSMaxTX(transmitter->id,&pk);
-    pk_label=g_strdup_printf("%f",pk);
-    gtk_entry_set_text(GTK_ENTRY(get_pk),pk_label);
-    if(pk_label!=NULL) {
-      g_free(pk_label);
-      pk_label=NULL;
-    }
+    sprintf(label,"%f", pk);
+    gtk_entry_set_text(GTK_ENTRY(get_pk),label);
 
-
-    counter++;
-    if(counter==10) { // every 100ms
+    if (transmitter->auto_on) {
       double ddb;
       int newcal=info[5]!=old5_2;
       old5_2=info[5];
       switch(state) {
         case 0:
-          if(transmitter->auto_on && newcal && (info[4]>181 || (info[4]<=128 && transmitter->attenuation>0))) {
+          if(newcal && (info[4]>181 || (info[4]<=128 && transmitter->attenuation>0))) {
             if(info[4]<=256) {
               ddb= 20.0 * log10((double)info[4]/152.293);
               if(isnan(ddb)) {
@@ -273,12 +240,9 @@ fprintf(stderr,"ps_menu: entry %d is NULL\n", i);
           SetPSControl(transmitter->id, 0, save_single_on, save_auto_on, 0);
           break;
       }
-      counter=0;
     }
-    usleep(10000); // 10 ms
-  }
-  gtk_entry_set_text(GTK_ENTRY(entry[15]),"");
-  return NULL;
+  if (!running) gtk_entry_set_text(GTK_ENTRY(entry[15]),"");
+  return running ? TRUE : FALSE;
 }
 
 static void enable_cb(GtkWidget *widget, gpointer data) {
@@ -314,23 +278,8 @@ static void reset_cb(GtkWidget *widget, gpointer data) {
   SetPSControl(transmitter->id, 1, 0, 0, 0);
 }
 
-void ps_twotone(int state) {
-  tx_set_twotone(transmitter,state);
-  if(transmitter->twotone) {
-    //set_button_text_color(widget,"red");
-  } else {
-    //set_button_text_color(widget,"black");
-  }
-  if(state && transmitter->puresignal) {
-    //info_thread_id=g_thread_new( "PS info", info_thread, NULL);
-  } else {
-    running=0;
-  }
-}
-
 static void twotone_cb(GtkWidget *widget, gpointer data) {
   int state=transmitter->twotone?0:1;
-  //g_idle_add(ext_ps_twotone,(gpointer)(long)state);
   tx_set_twotone(transmitter,state);
   if(state) {
     set_button_text_color(widget,"red");
@@ -338,9 +287,11 @@ static void twotone_cb(GtkWidget *widget, gpointer data) {
     set_button_text_color(widget,"black");
   }
   if(state && transmitter->puresignal) {
-    info_thread_id=g_thread_new( "PS info", info_thread, NULL);
+    running=1;
+    g_timeout_add((guint) 100, info_thread, NULL);
   } else {
     running=0;
+    usleep(20000); // to be sure info_thread stopped
   }
 }
 
@@ -479,6 +430,7 @@ void ps_menu(GtkWidget *parent) {
     if(display) {
       GtkWidget *lbl=gtk_label_new(label);
       entry[i]=gtk_entry_new();
+      gtk_entry_set_max_length(GTK_ENTRY(entry[i]), 20);
       gtk_grid_attach(GTK_GRID(grid),lbl,col,row,1,1);
       col++;
       gtk_grid_attach(GTK_GRID(grid),entry[i],col,row,1,1);
diff --git a/radio.c b/radio.c
index a6d8b5f6748588587837e2a54a834c6147914989..70ed23a0ff2f64d36cbab8451c43fc669cedb565 100644 (file)
--- a/radio.c
+++ b/radio.c
@@ -335,11 +335,7 @@ void reconfigure_radio() {
     }
   }
 
-#ifdef SPLIT_RXTX
-  reconfigure_transmitter(transmitter,rx_height/receivers);
-#else
   reconfigure_transmitter(transmitter,rx_height);
-#endif
 
 }
 
@@ -525,11 +521,7 @@ fprintf(stderr,"title: length=%d\n", (int)strlen(text));
   if(display_sliders) {
     rx_height-=SLIDERS_HEIGHT;
   }
-#ifdef SPLIT_RXTX
-  int tx_height=rx_height/receivers;
-#else
   int tx_height=rx_height;
-#endif
   rx_height=rx_height/receivers;
 
 
@@ -728,11 +720,7 @@ static void rxtx(int state) {
     tx_feedback->samples=0;
 #endif
 
-#ifdef SPLIT_RXTX
-    for(i=0;i<1;i++) {
-#else
     for(i=0;i<receivers;i++) {
-#endif
       SetChannelState(receiver[i]->id,0,i==(receivers-1));
       set_displaying(receiver[i],0);
       if(protocol==NEW_PROTOCOL) {
@@ -769,11 +757,7 @@ static void rxtx(int state) {
 //      gtk_widget_hide(audio_waterfall);
 //    }
 //#endif
-#ifdef SPLIT_RXTX
-    for(i=0;i<1;i++) {
-#else
     for(i=0;i<receivers;i++) {
-#endif
       gtk_fixed_put(GTK_FIXED(fixed),receiver[i]->panel,receiver[i]->x,receiver[i]->y);
       SetChannelState(receiver[i]->id,1,0);
       set_displaying(receiver[i],1);
@@ -849,11 +833,7 @@ void setTune(int state) {
       //schedule_general();
     }
     if(tune) {
-#ifdef SPLIT_RXTX
-        for(i=0;i<1;i++) {
-#else
         for(i=0;i<receivers;i++) {
-#endif
         SetChannelState(receiver[i]->id,0,i==(receivers-1));
         set_displaying(receiver[i],0);
         if(protocol==NEW_PROTOCOL) {
index 4045f831b5b903b1a9917a7e583c4d39ca692d98..de9c3ba58bc2bafde3f39da1feee2d129b76860d 100644 (file)
@@ -425,14 +425,7 @@ static gboolean update_display(gpointer data) {
       }
     } 
 
-#ifdef SPLIT_RXTX
-    // If the second RX is active, we rather want to see its S-meter instead of TX data
-    if (active_receiver == receiver[0]) {
-      meter_update(active_receiver,POWER,transmitter->fwd,transmitter->rev,transmitter->exciter,transmitter->alc);
-    }
-#else
     meter_update(active_receiver,POWER,transmitter->fwd,transmitter->rev,transmitter->exciter,transmitter->alc);
-#endif
 
     return TRUE; // keep going
   }
index 50c98e6e621cdf5b927cd0245236f784b2b12298..85eb58dfed2b126946e1a23058efb6b6ab94368c 100644 (file)
@@ -52,7 +52,6 @@ static gfloat filter_right;
 #include "new_menu.h"
 #include "ext.h"
 #include "sliders.h"
-static gboolean making_active = FALSE;
 
 /* Create a new surface of the appropriate size to store our scribbles */
 static gboolean
@@ -107,7 +106,6 @@ tx_panadapter_button_press_event_cb (GtkWidget      *widget,
     has_moved=FALSE;
     pressed=TRUE;
   }
-  making_active=(active_receiver != receiver[0]);
   return TRUE;
 }
 
@@ -120,18 +118,6 @@ tx_panadapter_button_release_event_cb (GtkWidget      *widget,
   int display_width=gtk_widget_get_allocated_width (tx->panadapter);
   int display_height=gtk_widget_get_allocated_height (tx->panadapter);
 
-#ifdef SPLIT_RXTX
-  // when clicking into the TX window, the first receiver is
-  // selected since the TX window only hides the display of
-  // the first RX
-  if (making_active) {
-    active_receiver=receiver[0];
-    making_active=FALSE;
-    g_idle_add(menu_active_receiver_changed,NULL);
-    g_idle_add(ext_vfo_update,NULL);
-    g_idle_add(sliders_active_receiver_changed,NULL);
-  }
-#endif
   if(pressed) {
     int x=(int)event->x;
     if (event->button == 1) {
@@ -156,21 +142,17 @@ tx_panadapter_motion_notify_event_cb (GtkWidget      *widget,
 {
   int x, y;
   GdkModifierType state;
-  // do not do this upon the first click. Instead, click first, drag later
-  if (!making_active) {
-    gdk_window_get_device_position (event->window,
-                                    event->device,
-                                    &x,
-                                    &y,
-                                    &state);
-    if(((state & GDK_BUTTON1_MASK) == GDK_BUTTON1_MASK) || pressed) {
-      int moved=last_x-x;
-      vfo_move((long long)((float)moved*hz_per_pixel));
-      last_x=x;
-      has_moved=TRUE;
-    }
+  gdk_window_get_device_position (event->window,
+                                  event->device,
+                                  &x,
+                                  &y,
+                                  &state);
+  if(((state & GDK_BUTTON1_MASK) == GDK_BUTTON1_MASK) || pressed) {
+    int moved=last_x-x;
+    vfo_move((long long)((float)moved*hz_per_pixel));
+    last_x=x;
+    has_moved=TRUE;
   }
-
   return TRUE;
 }