]> git.rkrishnan.org Git - pihpsdr.git/commitdiff
added RIT function
authorJohn Melton - G0ORX/N6LYT <john.d.melton@googlemail.com>
Sat, 23 Jul 2016 08:26:54 +0000 (08:26 +0000)
committerJohn Melton - G0ORX/N6LYT <john.d.melton@googlemail.com>
Sat, 23 Jul 2016 08:26:54 +0000 (08:26 +0000)
gpio.c
new_protocol.c
old_protocol.c
pihpsdr
radio.c
radio.h
release/pihpsdr.tar
release/pihpsdr/pihpsdr
vfo.c

diff --git a/gpio.c b/gpio.c
index 9d6986506c253926bcff5a08600cf4be3ca4cbe9..c6257f8ee09ebbe0b46cc7d8ee052dd06a4294ef 100644 (file)
--- a/gpio.c
+++ b/gpio.c
@@ -510,7 +510,7 @@ fprintf(stderr,"encoder_init\n");
     }
     gpioSetAlertFunc(AGC_ENCODER_A, agcEncoderPulse);
     gpioSetAlertFunc(AGC_ENCODER_B, agcEncoderPulse);
-    rfEncoderPos=0;
+    agcEncoderPos=0;
   }
 
 
@@ -715,10 +715,17 @@ int lock_get_state() {
 static int vfo_encoder_changed(void *data) {
   if(!locked) {
     int pos=*(int*)data;
-    BANDSTACK_ENTRY* entry=bandstack_entry_get_current();
-    //entry->frequencyA=entry->frequencyA+(pos*step);
-    //setFrequency(entry->frequencyA);
-    setFrequency(entry->frequencyA+ddsOffset+(pos*step));
+
+    if(function) {
+      //RIT
+      rit-=pos;
+      if(rit>1000) rit=1000;
+      if(rit<-1000) rit=-1000;
+    } else {
+      // VFO
+      BANDSTACK_ENTRY* entry=bandstack_entry_get_current();
+      setFrequency(entry->frequencyA+ddsOffset+(pos*step));
+    }
     vfo_update(NULL);
   }
   free(data);
index 474646db39b6bb6b742f3013155321a430d3eba3..9ef56e1838c0b10f0d8eeed4ec85732e3e518fbe 100644 (file)
@@ -253,7 +253,7 @@ fprintf(stderr,"new_protocol_high_priority: run=%d tx=%d drive=%d\n", run, tx, d
 
     buffer[4]=run|(tx<<1);
 
-    long rxFrequency=ddsFrequency;
+    long rxFrequency=ddsFrequency+(long long)rit;
     if(mode==modeCWU) {
       rxFrequency-=cw_keyer_sidetone_frequency;
     } else if(mode==modeCWL) {
index 1cbc794d946eec6376bd98d3afad9badd84c1c64..ae4b570484104059eec68647bebfb436af9a813f 100644 (file)
@@ -823,7 +823,7 @@ void ozy_send_buffer() {
       break;
     case 2: // rx frequency
       output_buffer[C0]=0x04;
-      long long rxFrequency=ddsFrequency;
+      long long rxFrequency=ddsFrequency+(long long)rit;
       if(mode==modeCWU) {
         rxFrequency-=(long long)cw_keyer_sidetone_frequency;
       } else if(mode==modeCWL) {
diff --git a/pihpsdr b/pihpsdr
index b36aabf9a074c6f9df52d0a1d12d2cc724841cb4..39edd73bfbfdb139a815be23c1a67934585317c4 100755 (executable)
Binary files a/pihpsdr and b/pihpsdr differ
diff --git a/radio.c b/radio.c
index a4996e83b1e55fb4f3fc0b89461eb20f47f32b52..f3434f4a773861fdc86dbe6e4ef311708afe9adf 100644 (file)
--- a/radio.c
+++ b/radio.c
@@ -121,6 +121,8 @@ int locked=0;
 
 int step=100;
 
+int rit=0;
+
 int lt2208Dither = 0;
 int lt2208Random = 0;
 int attenuation = 0; // 0dB
diff --git a/radio.h b/radio.h
index f5d5353cfbcfc3c3464a2f083da2699ccd1f6182..dd2e597f99c18e8ed5144c209afc2d5b2cfd731e 100644 (file)
--- a/radio.h
+++ b/radio.h
@@ -128,6 +128,7 @@ int adc[2];
 int locked;
 
 extern int step;
+extern int rit;
 
 extern int lt2208Dither;
 extern int lt2208Random;
index 35199c2d7f49858b31e90b6805acc1720a1bc4b0..b7d73392074faec1a45536bd47d9ceb36d43c144 100644 (file)
Binary files a/release/pihpsdr.tar and b/release/pihpsdr.tar differ
index c08afbedb9d312e962e65e8b00dfb05c05a9232d..a0fbcba6a213835a0bf06718b1831d1c5d2b35aa 100755 (executable)
Binary files a/release/pihpsdr/pihpsdr and b/release/pihpsdr/pihpsdr differ
diff --git a/vfo.c b/vfo.c
index 729cb65d9249aaea929815c602778c600aaf0675..c08f030af1f16f779b88be6101a582bc621f29af 100644 (file)
--- a/vfo.c
+++ b/vfo.c
@@ -111,6 +111,36 @@ void vfo_move_to(int hz) {
   }
 }
 
+static gboolean
+vfo_scroll_event_cb (GtkWidget      *widget,
+               GdkEventScroll *event,
+               gpointer        data)
+{
+  int i;
+  if(event->direction==GDK_SCROLL_UP) {
+    i=1;
+  } else {
+    i=-1;
+  }
+  if(event->x>(my_width/2)) {
+    if(event->x>((my_width/4)*3)) {
+      // rit
+      rit+=i;
+      if(rit>10000) {
+        rit=1000;
+      }
+      if(rit<-1000) {
+        rit=-1000;
+      }
+    } else {
+      // step
+    }
+  } else {
+    // frequency
+  }
+  vfo_update(NULL);
+}
+
 
 static gboolean vfo_configure_event_cb (GtkWidget         *widget,
             GdkEventConfigure *event,
@@ -187,31 +217,42 @@ int vfo_update(void *data) {
         cairo_move_to(cr, 5, 15);  
         cairo_show_text(cr, text);
 
+        long long f=entry->frequencyA+ddsOffset;
+        char sf[32];
+        sprintf(sf,"%0lld.%06lld MHz",f/(long long)1000000,f%(long long)1000000);
         cairo_set_font_size(cr, 28);
         if(isTransmitting()) {
             cairo_set_source_rgb(cr, 1, 0, 0);
         } else {
             cairo_set_source_rgb(cr, 0, 1, 0);
         }
-
-        long long f=entry->frequencyA+ddsOffset;
-        char sf[32];
-        //sprintf(sf,"%0lld.%06lld MHz",entry->frequencyA/(long long)1000000,entry->frequencyA%(long long)1000000);
-        sprintf(sf,"%0lld.%06lld MHz",f/(long long)1000000,f%(long long)1000000);
         cairo_move_to(cr, 5, 38);  
         cairo_show_text(cr, sf);
 
-        cairo_set_source_rgb(cr, 0, 1, 0);
         cairo_set_font_size(cr, 12);
 
-        cairo_move_to(cr, (my_width/2)+40, 30);  
-        //cairo_show_text(cr, getFrequencyInfo(entry->frequencyA));
-        cairo_show_text(cr, getFrequencyInfo(f));
+        if(rit==0) {
+            cairo_set_source_rgb(cr, 0.5, 0.5, 0.5);
+        } else {
+            cairo_set_source_rgb(cr, 0, 1, 0);
+        }
+        sprintf(sf,"RIT: %d Hz",rit);
+        cairo_move_to(cr, (my_width/4)*3, 38);  
+        cairo_show_text(cr, sf);
+
+        cairo_set_source_rgb(cr, 0, 1, 0);
 
-        sprintf(sf,"Step %dHz",step);
-        cairo_move_to(cr, (my_width/2)+40, 15);  
+        int s=0;
+        while(steps[s]!=step && steps[s]!=0) {
+          s++;
+        }
+        sprintf(sf,"Step %s",step_labels[s]);
+        cairo_move_to(cr, my_width/2, 15);  
         cairo_show_text(cr, sf);
 
+        cairo_move_to(cr, (my_width/4)*3, 15);  
+        cairo_show_text(cr, getFrequencyInfo(f));
+
         if(locked) {
             cairo_set_source_rgb(cr, 1, 0, 0);
             cairo_move_to(cr, 10, 50);  
@@ -354,8 +395,11 @@ fprintf(stderr,"vfo_init: width=%d height=%d\n", width, height);
   /* Event signals */
   g_signal_connect (vfo, "button-press-event",
             G_CALLBACK (vfo_press_event_cb), NULL);
+  g_signal_connect(vfo,"scroll_event",
+            G_CALLBACK(vfo_scroll_event_cb),NULL);
   gtk_widget_set_events (vfo, gtk_widget_get_events (vfo)
-                     | GDK_BUTTON_PRESS_MASK);
+                     | GDK_BUTTON_PRESS_MASK
+                     | GDK_SCROLL_MASK);
 
 fprintf(stderr,"vfo_init: set Frequency,Mode,Filter\n");
   BAND *band=band_get_current_band();