From a257ea41e9370d616df3663b82ef10e20b72e904 Mon Sep 17 00:00:00 2001 From: John Melton - G0ORX/N6LYT Date: Fri, 22 Jul 2016 13:33:32 +0000 Subject: [PATCH] changed Makefile to get GIT version and date for build info. Changed VFO to display radio connection info. Changed Meter to display verison info --- Makefile | 10 ++++++++-- main.c | 4 ++-- menu.c | 15 +++++++++++++-- meter.c | 43 ++++++++++++++++++++++++++----------------- new_protocol.c | 7 +++++-- old_protocol.c | 37 ++++++++++++++++++++++++------------- panadapter.c | 16 ++++++++++++---- radio.c | 8 ++++++-- radio.h | 3 ++- splash.c | 2 +- toolbar.c | 1 - version.c | 4 ++-- version.h | 2 +- vfo.c | 39 +++++++++++++++++++++++++++++++++------ 14 files changed, 135 insertions(+), 56 deletions(-) diff --git a/Makefile b/Makefile index 89d6d22..1be41a4 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,12 @@ +# Get git commit version and date +GIT_VERSION := $(shell git --no-pager describe --tags --always --dirty) +GIT_DATE := $(firstword $(shell git --no-pager show --date=short --format="%ai" --name-only)) + UNAME_N=raspberrypi #UNAME_N=odroid #UNAME_N=up -#UNAME_N=other +#UNAME_N=pine64 +#UNAME_N=x86 CC=gcc LINK=gcc @@ -64,7 +69,8 @@ else gpio.o endif -OPTIONS=-g -D $(UNAME_N) $(LIMESDR_OPTIONS) $(FREEDV_OPTIONS) -O3 +OPTIONS=-g -D $(UNAME_N) $(LIMESDR_OPTIONS) $(FREEDV_OPTIONS) -D GIT_DATE='"$(GIT_DATE)"' -D GIT_VERSION='"$(GIT_VERSION)"' -O3 + GTKINCLUDES=`pkg-config --cflags gtk+-3.0` GTKLIBS=`pkg-config --libs gtk+-3.0` diff --git a/main.c b/main.c index d25a44e..15a0edf 100644 --- a/main.c +++ b/main.c @@ -232,8 +232,8 @@ static gint save_cb(gpointer data) { } static void start_cb(GtkWidget *widget, gpointer data) { -fprintf(stderr,"start_cb\n"); selected_device=(int)data; +fprintf(stderr,"start_cb: %d\n",selected_device); start=1; gtk_widget_destroy(discovery_dialog); } @@ -685,7 +685,7 @@ main (int argc, { gtk_init (&argc, &argv); - fprintf(stderr,"Build: %s %s\n",build_date,build_time); + fprintf(stderr,"Build: %s %s\n",build_date,build_version); uname(&unameData); fprintf(stderr,"sysname: %s\n",unameData.sysname); diff --git a/menu.c b/menu.c index 4282b59..43e5f5c 100644 --- a/menu.c +++ b/menu.c @@ -31,8 +31,11 @@ #include "audio.h" #include "band.h" +#include "bandstack.h" #include "channel.h" #include "discovered.h" +#include "filter.h" +#include "mode.h" #include "new_protocol.h" #include "radio.h" #include "toolbar.h" @@ -100,6 +103,12 @@ static void cw_keyer_sidetone_level_value_changed_cb(GtkWidget *widget, gpointer static void cw_keyer_sidetone_frequency_value_changed_cb(GtkWidget *widget, gpointer data) { cw_keyer_sidetone_frequency=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget)); + if(mode==modeCWL || mode==modeCWU) { + BANDSTACK_ENTRY *entry=bandstack_entry_get_current(); + FILTER* band_filters=filters[entry->mode]; + FILTER* band_filter=&band_filters[entry->filter]; + setFilter(band_filter->low,band_filter->high); + } cw_changed(); } @@ -199,7 +208,7 @@ static void apollo_cb(GtkWidget *widget, gpointer data) { filter_board_changed(); } } - +/* static void apollo_tuner_cb(GtkWidget *widget, gpointer data) { apollo_tuner=apollo_tuner==1?0:1; if(protocol==NEW_PROTOCOL) { @@ -213,6 +222,7 @@ static void pa_cb(GtkWidget *widget, gpointer data) { pa_changed(); } } +*/ static void rx_dither_cb(GtkWidget *widget, gpointer data) { rx_dither=rx_dither==1?0:1; @@ -613,6 +623,7 @@ static gboolean menu_pressed_event_cb (GtkWidget *widget, g_signal_connect(alex_b,"toggled",G_CALLBACK(alex_cb),apollo_b); g_signal_connect(apollo_b,"toggled",G_CALLBACK(apollo_cb),alex_b); +/* GtkWidget *apollo_tuner_b=gtk_check_button_new_with_label("Auto Tuner"); //gtk_widget_override_font(apollo_tuner_b, pango_font_description_from_string("Arial 18")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (apollo_tuner_b), apollo_tuner); @@ -626,7 +637,7 @@ static gboolean menu_pressed_event_cb (GtkWidget *widget, gtk_widget_show(pa_b); gtk_grid_attach(GTK_GRID(general_grid),pa_b,2,5,1,1); g_signal_connect(pa_b,"toggled",G_CALLBACK(pa_cb),NULL); - + */ } GtkWidget *sample_rate_label=gtk_label_new("Sample Rate:"); diff --git a/meter.c b/meter.c index c2b6676..d94b288 100644 --- a/meter.c +++ b/meter.c @@ -26,6 +26,7 @@ #include "meter.h" #include "wdsp.h" #include "radio.h" +#include "version.h" #ifdef FREEDV #include "mode.h" #include "freedv.h" @@ -191,6 +192,7 @@ fprintf(stderr,"meter_init: width=%d height=%d\n",width,height); void meter_update(int meter_type,double value,double reverse,double exciter,double alc) { + char text[128]; char sf[32]; int text_location; double offset; @@ -201,6 +203,13 @@ void meter_update(int meter_type,double value,double reverse,double exciter,doub cairo_set_source_rgb (cr, 0, 0, 0); cairo_paint (cr); + + sprintf(text,"Version: %s %s", build_date, build_version); + cairo_set_source_rgb(cr, 0.5, 0.5, 0.5); + cairo_set_font_size(cr, 12); + cairo_move_to(cr, 5, 15); + cairo_show_text(cr, text); + if(last_meter_type!=meter_type) { last_meter_type=meter_type; max_count=0; @@ -228,11 +237,11 @@ void meter_update(int meter_type,double value,double reverse,double exciter,doub cairo_set_line_width(cr, 1.0); cairo_set_source_rgb(cr, 1, 1, 1); for(i=0;i<54;i++) { - cairo_move_to(cr,offset+(double)(i*db),(double)meter_height-20); + cairo_move_to(cr,offset+(double)(i*db),(double)meter_height-10); if(i%18==0) { - cairo_line_to(cr,offset+(double)(i*db),(double)(meter_height-30)); + cairo_line_to(cr,offset+(double)(i*db),(double)(meter_height-20)); } else if(i%6==0) { - cairo_line_to(cr,offset+(double)(i*db),(double)(meter_height-25)); + cairo_line_to(cr,offset+(double)(i*db),(double)(meter_height-15)); } } cairo_stroke(cr); @@ -244,14 +253,14 @@ void meter_update(int meter_type,double value,double reverse,double exciter,doub cairo_show_text(cr, "6"); cairo_set_source_rgb(cr, 1, 0, 0); - cairo_move_to(cr,offset+(double)(54*db),(double)meter_height-20); - cairo_line_to(cr,offset+(double)(54*db),(double)(meter_height-30)); - cairo_move_to(cr,offset+(double)(74*db),(double)meter_height-20); - cairo_line_to(cr,offset+(double)(74*db),(double)(meter_height-30)); - cairo_move_to(cr,offset+(double)(94*db),(double)meter_height-20); - cairo_line_to(cr,offset+(double)(94*db),(double)(meter_height-30)); - cairo_move_to(cr,offset+(double)(114*db),(double)meter_height-20); - cairo_line_to(cr,offset+(double)(114*db),(double)(meter_height-30)); + cairo_move_to(cr,offset+(double)(54*db),(double)meter_height-10); + cairo_line_to(cr,offset+(double)(54*db),(double)(meter_height-20)); + cairo_move_to(cr,offset+(double)(74*db),(double)meter_height-10); + cairo_line_to(cr,offset+(double)(74*db),(double)(meter_height-20)); + cairo_move_to(cr,offset+(double)(94*db),(double)meter_height-10); + cairo_line_to(cr,offset+(double)(94*db),(double)(meter_height-20)); + cairo_move_to(cr,offset+(double)(114*db),(double)meter_height-10); + cairo_line_to(cr,offset+(double)(114*db),(double)(meter_height-20)); cairo_stroke(cr); cairo_move_to(cr, offset+(double)(54*db)-3.0, (double)meter_height); @@ -264,7 +273,7 @@ void meter_update(int meter_type,double value,double reverse,double exciter,doub cairo_show_text(cr, "+60"); cairo_set_source_rgb(cr, 0, 1, 0); - cairo_rectangle(cr, offset+0.0, (double)(meter_height-50), (double)((level+127.0)*db), 20.0); + cairo_rectangle(cr, offset+0.0, (double)(meter_height-40), (double)((level+127.0)*db), 20.0); cairo_fill(cr); if(level>max_level || max_count==10) { @@ -274,8 +283,8 @@ void meter_update(int meter_type,double value,double reverse,double exciter,doub if(max_level!=0) { cairo_set_source_rgb(cr, 1, 1, 0); - cairo_move_to(cr,offset+(double)((max_level+127.0)*db),(double)meter_height-30); - cairo_line_to(cr,offset+(double)((max_level+127.0)*db),(double)(meter_height-50)); + cairo_move_to(cr,offset+(double)((max_level+127.0)*db),(double)meter_height-20); + cairo_line_to(cr,offset+(double)((max_level+127.0)*db),(double)(meter_height-40)); } @@ -321,7 +330,7 @@ void meter_update(int meter_type,double value,double reverse,double exciter,doub max_count++; sprintf(sf,"FWD: %d W",(int)max_level); - cairo_move_to(cr, 10, 25); + cairo_move_to(cr, 10, 35); cairo_show_text(cr, sf); double swr=(value+reverse)/(value-reverse); @@ -331,11 +340,11 @@ void meter_update(int meter_type,double value,double reverse,double exciter,doub cairo_set_font_size(cr, 18); sprintf(sf,"SWR: %1.1f:1",swr); - cairo_move_to(cr, 10, 45); + cairo_move_to(cr, 10, 55); cairo_show_text(cr, sf); sprintf(sf,"ALC: %2.1f dB",alc); - cairo_move_to(cr, meter_width/2, 45); + cairo_move_to(cr, meter_width/2, 35); cairo_show_text(cr, sf); /* diff --git a/new_protocol.c b/new_protocol.c index b2c5c96..fe96007 100644 --- a/new_protocol.c +++ b/new_protocol.c @@ -168,6 +168,7 @@ void filter_board_changed() { schedule_general(); } +/* void pa_changed() { schedule_general(); } @@ -175,6 +176,7 @@ void pa_changed() { void tuner_changed() { schedule_general(); } +*/ void cw_changed() { } @@ -219,8 +221,9 @@ fprintf(stderr,"new_protocol_general: receiver=%d\n", receiver); // use defaults apart from buffer[37]=0x08; // phase word (not frequency) - buffer[58]=pa; // enable PA 0x01 - if((filter_board==APOLLO) && tune && apollo_tuner) { + //buffer[58]=pa; // enable PA 0x01 + buffer[58]=0x01; // enable PA 0x01 + if((filter_board==APOLLO) && tune) { buffer[58]|=0x02; } diff --git a/old_protocol.c b/old_protocol.c index 23e3a9c..3780582 100644 --- a/old_protocol.c +++ b/old_protocol.c @@ -407,6 +407,15 @@ static void process_ozy_input_buffer(char *buffer) { dash=(control_in[0]&0x02)==0x02; dot=(control_in[0]&0x04)==0x04; +if(last_ptt!=ptt) { + fprintf(stderr,"ptt=%d\n",ptt); +} +if(last_dot!=dot) { + fprintf(stderr,"dot=%d\n",dot); +} +if(last_dash!=dash) { + fprintf(stderr,"dash=%d\n",dash); +} if(last_ptt!=ptt) { g_idle_add(ptt_update,(gpointer)ptt); } @@ -804,26 +813,28 @@ void ozy_send_buffer() { } } break; - case 1: // rx frequency - output_buffer[C0]=0x04; - output_buffer[C1]=ddsFrequency>>24; - output_buffer[C2]=ddsFrequency>>16; - output_buffer[C3]=ddsFrequency>>8; - output_buffer[C4]=ddsFrequency; - break; - case 2: // tx frequency + case 1: // tx frequency output_buffer[C0]=0x02; - long txFrequency=ddsFrequency; + long long txFrequency=ddsFrequency; +/* if(mode==modeCWU) { - txFrequency+=cw_keyer_sidetone_frequency; + txFrequency=ddsFrequency+(long long)cw_keyer_sidetone_frequency; } else if(mode==modeCWL) { - txFrequency-=cw_keyer_sidetone_frequency; + txFrequency=ddsFrequency-(long long)cw_keyer_sidetone_frequency; } +*/ output_buffer[C1]=txFrequency>>24; output_buffer[C2]=txFrequency>>16; output_buffer[C3]=txFrequency>>8; output_buffer[C4]=txFrequency; break; + case 2: // rx frequency + output_buffer[C0]=0x04; + output_buffer[C1]=ddsFrequency>>24; + output_buffer[C2]=ddsFrequency>>16; + output_buffer[C3]=ddsFrequency>>8; + output_buffer[C4]=ddsFrequency; + break; case 3: { float d=(float)drive; @@ -843,9 +854,9 @@ void ozy_send_buffer() { output_buffer[C2]|=0x02; } if(filter_board==APOLLO) { - output_buffer[C2]|=0x2C; // board, filter ,tuner + output_buffer[C2]|=0x2C; } - if((filter_board==APOLLO) && tune && apollo_tuner) { + if((filter_board==APOLLO) && tune) { output_buffer[C2]|=0x10; } output_buffer[C3]=0x00; diff --git a/panadapter.c b/panadapter.c index 3b26efd..4898006 100644 --- a/panadapter.c +++ b/panadapter.c @@ -251,9 +251,17 @@ void panadapter_update(float *data,int tx) { cairo_stroke(cr); // plot frequency markers - long divisor=20000; long f; + long divisor=20000; long half=(long)getSampleRate()/2L; + long frequency=getFrequency(); +/* + if(mode==modeCWU) { + frequency=frequency+cw_keyer_sidetone_frequency; + } else if(mode==modeCWL) { + frequency=frequency-cw_keyer_sidetone_frequency; + } +*/ switch(sample_rate) { case 48000: divisor=5000L; @@ -278,7 +286,7 @@ void panadapter_update(float *data,int tx) { break; } for(i=0;i 0) { if ((f % divisor) < (long) hz_per_pixel) { cairo_set_source_rgb (cr, 0, 1, 1); @@ -304,8 +312,8 @@ void panadapter_update(float *data,int tx) { cairo_stroke(cr); // band edges - long min_display=getFrequency()-half; - long max_display=getFrequency()+half; + long min_display=frequency-half; + long max_display=frequency+half; BAND_LIMITS* bandLimits=getBandLimits(min_display,max_display); if(bandLimits!=NULL) { cairo_set_source_rgb (cr, 1, 0, 0); diff --git a/radio.c b/radio.c index c013e53..a4996e8 100644 --- a/radio.c +++ b/radio.c @@ -58,8 +58,8 @@ int tx_out_of_band=0; int sample_rate=48000; int filter_board=ALEX; -int pa=PA_ENABLED; -int apollo_tuner=0; +//int pa=PA_ENABLED; +//int apollo_tuner=0; int updates_per_second=10; @@ -397,10 +397,12 @@ void radioRestoreState() { if(value) sample_rate=atoi(value); value=getProperty("filter_board"); if(value) filter_board=atoi(value); +/* value=getProperty("apollo_tuner"); if(value) apollo_tuner=atoi(value); value=getProperty("pa"); if(value) pa=atoi(value); +*/ value=getProperty("updates_per_second"); if(value) updates_per_second=atoi(value); value=getProperty("display_panadapter"); @@ -537,10 +539,12 @@ void radioSaveState() { setProperty("sample_rate",value); sprintf(value,"%d",filter_board); setProperty("filter_board",value); +/* sprintf(value,"%d",apollo_tuner); setProperty("apollo_tuner",value); sprintf(value,"%d",pa); setProperty("pa",value); +*/ sprintf(value,"%d",updates_per_second); setProperty("updates_per_second",value); sprintf(value,"%d",display_panadapter); diff --git a/radio.h b/radio.h index fd17af9..f5d5353 100644 --- a/radio.h +++ b/radio.h @@ -46,11 +46,12 @@ extern char property_path[]; #define ALEX 1 #define APOLLO 2 +/* #define PA_DISABLED 0 #define PA_ENABLED 1 #define APOLLO_TUNER 1 - +*/ #define KEYER_STRAIGHT 0 #define KEYER_MODE_A 1 #define KEYER_MODE_B 2 diff --git a/splash.c b/splash.c index 4e8085f..c395989 100644 --- a/splash.c +++ b/splash.c @@ -70,7 +70,7 @@ void splash_show(char* image_name,int width,int height,int full_screen) G_CALLBACK (splash_configure_event_cb), NULL); char build[64]; - sprintf(build,"build: %s %s",build_date, build_time); + sprintf(build,"build: %s %s",build_date, build_version); GtkWidget *pi_label=gtk_label_new("pihpsdr by John Melton g0orx/n6lyt"); gtk_label_set_justify(GTK_LABEL(pi_label),GTK_JUSTIFY_LEFT); diff --git a/toolbar.c b/toolbar.c index d377ae3..e57fba1 100644 --- a/toolbar.c +++ b/toolbar.c @@ -991,7 +991,6 @@ fprintf(stderr,"mox_cb\n"); } int ptt_update(void *data) { -fprintf(stderr,"ptt_update\n"); int ptt=(int)data; if((mode==modeCWL || mode==modeCWU) && cw_keyer_internal==1) { // just ignore it diff --git a/version.c b/version.c index c3bd1b1..54d090c 100644 --- a/version.c +++ b/version.c @@ -17,6 +17,6 @@ * */ -char build_date[]=__DATE__; -char build_time[]=__TIME__; +char build_date[]=GIT_DATE; +char build_version[]=GIT_VERSION; diff --git a/version.h b/version.h index a250627..6507867 100644 --- a/version.h +++ b/version.h @@ -17,6 +17,6 @@ * */ +extern char build_version[]; extern char build_date[]; -extern char build_time[]; diff --git a/vfo.c b/vfo.c index eb987d0..729cb65 100644 --- a/vfo.c +++ b/vfo.c @@ -25,6 +25,12 @@ #include #include #include +#include +#include +#include +#include +#include +#include #include "main.h" #include "agc.h" @@ -40,9 +46,7 @@ #include "toolbar.h" #include "wdsp.h" #include "wdsp_init.h" -#ifdef LIMESDR #include "discovered.h" -#endif static GtkWidget *parent_window; static int my_width; @@ -146,6 +150,7 @@ static gboolean vfo_draw_cb (GtkWidget *widget, } int vfo_update(void *data) { + DISCOVERED *d=&discovered[selected_device]; BANDSTACK_ENTRY* entry=bandstack_entry_get_current(); FILTER* band_filters=filters[entry->mode]; FILTER* band_filter=&band_filters[entry->filter]; @@ -158,9 +163,31 @@ int vfo_update(void *data) { cairo_select_font_face(cr, "Arial", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD); - //cairo_set_font_size(cr, 36); - cairo_set_font_size(cr, 28); + char text[128]; + switch(d->protocol) { + case ORIGINAL_PROTOCOL: + case NEW_PROTOCOL: + sprintf(text,"%s (%s %d.%d) %s", + d->name, + d->protocol==ORIGINAL_PROTOCOL?"old":"new", + d->software_version/10, + d->software_version%10, + inet_ntoa(d->info.network.address.sin_addr)); + break; +#ifdef LIMESDR + case LIMESDR_PROTOCOL: + sprintf(text,"%s\n", + d->name); + break; +#endif + } + cairo_set_source_rgb(cr, 0.5, 0.5, 0.5); + cairo_set_font_size(cr, 12); + cairo_move_to(cr, 5, 15); + cairo_show_text(cr, text); + + cairo_set_font_size(cr, 28); if(isTransmitting()) { cairo_set_source_rgb(cr, 1, 0, 0); } else { @@ -168,13 +195,13 @@ int vfo_update(void *data) { } 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, 30); + 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); -- 2.45.2