From: John Melton - G0ORX/N6LYT <john.d.melton@googlemail.com>
Date: Sat, 23 Jul 2016 08:26:54 +0000 (+0000)
Subject: added RIT function
X-Git-Url: https://git.rkrishnan.org/uri/simplejson/(%5B%5E?a=commitdiff_plain;h=4af787ce2133ccc73f15fe264dd9eca32b5bb8b1;p=pihpsdr.git

added RIT function
---

diff --git a/gpio.c b/gpio.c
index 9d69865..c6257f8 100644
--- 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);
diff --git a/new_protocol.c b/new_protocol.c
index 474646d..9ef56e1 100644
--- a/new_protocol.c
+++ b/new_protocol.c
@@ -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) {
diff --git a/old_protocol.c b/old_protocol.c
index 1cbc794..ae4b570 100644
--- a/old_protocol.c
+++ b/old_protocol.c
@@ -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 b36aabf..39edd73 100755
Binary files a/pihpsdr and b/pihpsdr differ
diff --git a/radio.c b/radio.c
index a4996e8..f3434f4 100644
--- 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 f5d5353..dd2e597 100644
--- 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;
diff --git a/release/pihpsdr.tar b/release/pihpsdr.tar
index 35199c2..b7d7339 100644
Binary files a/release/pihpsdr.tar and b/release/pihpsdr.tar differ
diff --git a/release/pihpsdr/pihpsdr b/release/pihpsdr/pihpsdr
index c08afbe..a0fbcba 100755
Binary files a/release/pihpsdr/pihpsdr and b/release/pihpsdr/pihpsdr differ
diff --git a/vfo.c b/vfo.c
index 729cb65..c08f030 100644
--- 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();