From: John Melton - G0ORX/N6LYT Date: Sat, 23 Jul 2016 08:26:54 +0000 (+0000) Subject: added RIT function X-Git-Url: https://git.rkrishnan.org/pf/components/$rel_link?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();