]> git.rkrishnan.org Git - pihpsdr.git/commitdiff
small corrections
authorc vw <dl1ycf@darc.de>
Fri, 18 Oct 2019 07:32:14 +0000 (09:32 +0200)
committerc vw <dl1ycf@darc.de>
Fri, 18 Oct 2019 07:32:14 +0000 (09:32 +0200)
new_protocol.c
newhpsdrsim.c
tx_panadapter.c

index 62035e53ba7dd65517c1464bd5916c6a71a23d03..c7e56fe05fe7fcef1a76ca5be5a5b2b53b7d7896 100644 (file)
@@ -2013,7 +2013,7 @@ void* new_protocol_timer_thread(void* arg) {
       case 4:
       case 6:
        new_protocol_high_priority();           // every 100 msec
-       new_protocol_transmit_specific();       // every 200 msec
+       new_protocol_receive_specific();        // every 200 msec
         break;
       case 8:
        new_protocol_high_priority();           // every 100 msec
index dd96968465450fb95fee2c0509cd917d42677cd8..4c76ae3452ef326d779abf91286d0b188384d58d 100644 (file)
@@ -1,5 +1,6 @@
 #include <stdlib.h>
 #include <stdio.h>
+#include <stdint.h>
 #include <pthread.h>
 #include <sys/socket.h>
 #include <errno.h>
@@ -124,142 +125,143 @@ int new_protocol_running() {
 }
 
 void new_protocol_general_packet(unsigned char *buffer) {
-  static unsigned long gp_seqnum=0;
+  static unsigned long seqnum=0;
   unsigned long seqold;
   int rc;
 
-  seqold = gp_seqnum;
-  gp_seqnum = (buffer[0] >> 24) + (buffer[1] << 16) + (buffer[2] << 8) + buffer[3];
-  if (gp_seqnum != 0 && gp_seqnum != seqold+1 ) {
-    fprintf(stderr,"GP: SEQ ERROR, old=%lu new=%lu\n", seqold, gp_seqnum);
+  seqold = seqnum;
+  seqnum = (buffer[0] >> 24) + (buffer[1] << 16) + (buffer[2] << 8) + buffer[3];
+  if (seqnum != 0 && seqnum != seqold+1 ) {
+    fprintf(stderr,"GP: SEQ ERROR, old=%lu new=%lu\n", seqold, seqnum);
   }
+  fprintf(stderr,"GP seq=%ld\n", (long) seqnum);
 
   rc=(buffer[5] << 8) + buffer[6];
   if (rc == 0) rc=1025;
-  if (rc != ddc_port) {
+  if (rc != ddc_port || !run) {
     ddc_port=rc;
     fprintf(stderr,"GP: RX specific rcv        port is  %4d\n", rc);
   }
   rc=(buffer[7] << 8) + buffer[8];
   if (rc == 0) rc=1026;
-  if (rc != duc_port) {
+  if (rc != duc_port || !run) {
     duc_port=rc;
     fprintf(stderr,"GP: TX specific rcv        port is  %4d\n", rc);
   }
   rc=(buffer[9] << 8) + buffer[10];
   if (rc == 0) rc=1027;
-  if (rc != hp_port) {
+  if (rc != hp_port || !run) {
     hp_port=rc;
     fprintf(stderr,"GP: HighPrio Port rcv      port is  %4d\n", rc);
   }
   rc=(buffer[11] << 8) + buffer[12];
   if (rc == 0) rc=1025;
-  if (rc != shp_port) {
+  if (rc != shp_port || !run) {
     shp_port=rc;
     fprintf(stderr,"GP: HighPrio Port snd      port is  %4d\n", rc);
   }
   rc=(buffer[13] << 8) + buffer[14];
   if (rc == 0) rc=1028;
-  if (rc != audio_port) {
+  if (rc != audio_port || !run) {
     audio_port=rc;
     fprintf(stderr,"GP: Audio rcv              port is  %4d\n", rc);
   }
   rc=(buffer[15] << 8) + buffer[16];
   if (rc == 0) rc=1029;
-  if (rc != duc0_port) {
+  if (rc != duc0_port || !run) {
     duc0_port=rc;
     fprintf(stderr,"GP: TX data rcv base       port is  %4d\n", rc);
   }
   rc=(buffer[17] << 8) + buffer[18];
   if (rc == 0) rc=1035;
-  if (rc != ddc0_port) {
+  if (rc != ddc0_port || !run) {
     ddc0_port=rc;
     fprintf(stderr,"GP: RX data snd base       port is  %4d\n", rc);
   }
   rc=(buffer[19] << 8) + buffer[20];
   if (rc == 0) rc=1026;
-  if (rc != mic_port) {
+  if (rc != mic_port || !run) {
     mic_port=rc;
     fprintf(stderr,"GP: Microphone data snd    port is  %4d\n", rc);
   }
   rc=(buffer[21] << 8) + buffer[22];
   if (rc == 0) rc=1027;
-  if (rc != wide_port) {
+  if (rc != wide_port || !run) {
     wide_port=rc;
     fprintf(stderr,"GP: Wideband data snd       port is  %4d\n", rc);
   }
   rc=buffer[23]; 
-  if (rc != wide_enable) {
+  if (rc != wide_enable || !run) {
     wide_enable = rc;
     fprintf(stderr,"GP: Wideband Enable Flag is %d\n", rc);
   }
   rc=(buffer[24] << 8) + buffer[25]; if (rc == 0) rc=512;
-  if (rc != wide_len) {
+  if (rc != wide_len || !run) {
     wide_len=rc;
     fprintf(stderr,"GP: WideBand Length is %d\n", rc);
   }
   rc=buffer[26]; if (rc == 0) rc=16;
-  if (rc != wide_size) {
+  if (rc != wide_size || !run) {
     wide_size=rc;
     fprintf(stderr,"GP: Wideband sample size is %d\n", rc);
   }
   rc=buffer[27];
-  if (rc != wide_rate) {
+  if (rc != wide_rate || !run) {
     wide_rate=rc;
     fprintf(stderr,"GP: Wideband sample rate is %d\n", rc);
   }
   rc=buffer[28];
-  if (rc != wide_ppf) {
+  if (rc != wide_ppf || !run) {
     wide_ppf = rc;
     fprintf(stderr,"GP: Wideband PPF is %d\n", rc);
   }
   rc = (buffer[29] << 8) + buffer[30];
-  if (rc != port_mm) {
+  if (rc != port_mm || !run) {
     port_mm=rc;
     fprintf(stderr,"MemMapped Registers rcv port is %d\n", rc);
   }
   rc = (buffer[31] << 8) + buffer[32];
-  if (rc != port_smm) {
+  if (rc != port_smm || !run) {
     port_smm=rc;
     fprintf(stderr,"MemMapped Registers snd port is %d\n", rc);
   }
   rc = (buffer[33] << 8) + buffer[34];
-  if (rc != pwm_min) {
+  if (rc != pwm_min || !run) {
     pwm_min=rc;
     fprintf(stderr,"GP: PWM Min value is %d\n", rc);
   }
   rc = (buffer[35] << 8) + buffer[36];
-  if (rc != pwm_max) {
+  if (rc != pwm_max || !run) {
     pwm_max=rc;
     fprintf(stderr,"GP: PWM Max value is %d\n", rc);
   }
   rc=buffer[37];
-  if (rc != bits) {
+  if (rc != bits || !run) {
     bits=rc;
     fprintf(stderr,"GP: ModeBits=x%02x\n", rc);
   }
   rc=buffer[38];
-  if (rc != hwtim) {
+  if (rc != hwtim || !run) {
     hwtim=rc;
     fprintf(stderr,"GP: Hardware Watchdog enabled=%d\n", rc);
   }
 
   iqform = buffer[39];                         if (iqform == 0) iqform=3;
-  if (iqform != 3) fprintf(stderr,"GP: Wrong IQ Format requested: %d\n",iqform);
+  if (iqform != 3 || !run) fprintf(stderr,"GP: Wrong IQ Format requested: %d\n",iqform);
 
   rc = (buffer[58] & 0x01);
-  if (rc != pa_enable) {
+  if (rc != pa_enable || !run) {
     pa_enable=rc;
     fprintf(stderr,"GP: PA enabled=%d\n", rc);
   }
 
   rc=buffer[59] & 0x01;
-  if (rc != alex0_enable) {
+  if (rc != alex0_enable || !run) {
     alex0_enable=rc;
     fprintf(stderr,"GP: ALEX0 register enable=%d\n", rc);
   }
   rc=(buffer[59] & 0x02) >> 1;
-  if (rc != alex1_enable) {
+  if (rc != alex1_enable || !run) {
     alex1_enable=rc;
     fprintf(stderr,"GP: ALEX1 register enable=%d\n", rc);
   }
@@ -276,13 +278,13 @@ void new_protocol_general_packet(unsigned char *buffer) {
   //
   // init state arrays to zero for the first time
   //
-  memset(adcdither, 0, 8*sizeof(int));
-  memset(adcrandom, 0, 8*sizeof(int));
-  memset(ddcenable, 0, NUMRECEIVERS*sizeof(int));
-  memset(adcmap, 0, NUMRECEIVERS*sizeof(int));
-  memset(syncddc, 0, NUMRECEIVERS*sizeof(int));
+  memset(adcdither, -1, 8*sizeof(int));
+  memset(adcrandom, -1, 8*sizeof(int));
+  memset(ddcenable, -1, NUMRECEIVERS*sizeof(int));
+  memset(adcmap, -1, NUMRECEIVERS*sizeof(int));
+  memset(syncddc, -1, NUMRECEIVERS*sizeof(int));
 
-  memset(rxfreq, 0, NUMRECEIVERS*sizeof(unsigned long));
+  memset(rxfreq, -1, NUMRECEIVERS*sizeof(unsigned long));
   memset(alex0, 0, 32*sizeof(int));
   memset(alex1, 0, 32*sizeof(int));
   }
@@ -609,6 +611,8 @@ void *highprio_thread(void *data) {
           pthread_join(tx_thread_id, NULL);
           pthread_join(mic_thread_id, NULL);
           pthread_join(audio_thread_id, NULL);
+          highprio_thread_id=0;
+          return NULL;
        }
      }
      rc=(buffer[4] >> 1) & 0x01;
index e9690f720943dc5f5e664b6de98351b31b191270..eab95bd366cd057bd6cf2e9a58bf13cfdec9ce21 100644 (file)
@@ -139,16 +139,22 @@ tx_panadapter_motion_notify_event_cb (GtkWidget      *widget,
 {
   int x, y;
   GdkModifierType state;
-  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;
+  //
+  // DL1YCF: if !pressed, we may come from the destruction
+  //         of a menu, and should not move the VFO
+  //
+  if (pressed) {
+    gdk_window_get_device_position (event->window,
+                                    event->device,
+                                    &x,
+                                    &y,
+                                    &state);
+    if(state & GDK_BUTTON1_MASK) {
+      int moved=last_x-x;
+      vfo_move((long long)((float)moved*hz_per_pixel));
+      last_x=x;
+      has_moved=TRUE;
+    }
   }
 
   return TRUE;
@@ -199,11 +205,13 @@ void tx_panadapter_update(TRANSMITTER *tx) {
   cairo_paint (cr);
 
   // filter
-  cairo_set_source_rgb (cr, 0.25, 0.25, 0.25);
-  filter_left=(double)display_width/2.0+((double)tx->filter_low/hz_per_pixel);
-  filter_right=(double)display_width/2.0+((double)tx->filter_high/hz_per_pixel);
-  cairo_rectangle(cr, filter_left, 0.0, filter_right-filter_left, (double)display_height);
-  cairo_fill(cr);
+  if (vfo[id].mode != modeCWU && vfo[id].mode != modeCWL) {
+    cairo_set_source_rgb (cr, 0.25, 0.25, 0.25);
+    filter_left=(double)display_width/2.0+((double)tx->filter_low/hz_per_pixel);
+    filter_right=(double)display_width/2.0+((double)tx->filter_high/hz_per_pixel);
+    cairo_rectangle(cr, filter_left, 0.0, filter_right-filter_left, (double)display_height);
+    cairo_fill(cr);
+  }
 
   // plot the levels 0, -20, 40, ... dBm (green line with label)
   // also plot gray lines at -10, -30, -50, ... dBm (without label)
@@ -242,6 +250,17 @@ void tx_panadapter_update(TRANSMITTER *tx) {
   long long half=24000LL; //(long long)(tx->output_rate/2);
   long long frequency;
   frequency=vfo[id].frequency+vfo[id].offset;
+  double vfofreq=(double)display_width * 0.5;
+  if (!cw_is_on_vfo_freq) {
+    if(vfo[id].mode==modeCWU) {
+      frequency+=(long long)cw_keyer_sidetone_frequency;
+      vfofreq -=  (double) cw_keyer_sidetone_frequency/hz_per_pixel;
+    } else if(vfo[id].mode==modeCWL) {
+      frequency-=(long long)cw_keyer_sidetone_frequency;
+      vfofreq +=  (double) cw_keyer_sidetone_frequency/hz_per_pixel;
+    }
+  }
+
   divisor=5000LL;
   for(i=0;i<display_width;i++) {
     f = frequency - half + (long) (hz_per_pixel * i);
@@ -291,11 +310,12 @@ void tx_panadapter_update(TRANSMITTER *tx) {
   }
             
   // cursor
+  
   cairo_set_source_rgb (cr, 1.0, 0.0, 0.0);
   cairo_set_line_width(cr, 1.0);
 //fprintf(stderr,"cursor: x=%f\n",(double)(display_width/2.0)+(vfo[tx->id].offset/hz_per_pixel));
-  cairo_move_to(cr,(double)(display_width/2.0)+(vfo[id].offset/hz_per_pixel),0.0);
-  cairo_line_to(cr,(double)(display_width/2.0)+(vfo[id].offset/hz_per_pixel),(double)display_height);
+  cairo_move_to(cr,vfofreq+(vfo[id].offset/hz_per_pixel),0.0);
+  cairo_line_to(cr,vfofreq+(vfo[id].offset/hz_per_pixel),(double)display_height);
   cairo_stroke(cr);
 
   // signal