From: John Melton - G0ORX/N6LYT Date: Sat, 6 Aug 2016 10:00:42 +0000 (+0000) Subject: Updated meter to display PSK signal level when in PSK mode. X-Git-Url: https://git.rkrishnan.org/vdrive/%22file:/FOOURL?a=commitdiff_plain;h=eb6747f4f60022350e0c22e2250acdde9b0e7193;p=pihpsdr.git Updated meter to display PSK signal level when in PSK mode. --- diff --git a/main.c b/main.c index 8758d4d..d62f286 100644 --- a/main.c +++ b/main.c @@ -54,9 +54,7 @@ #include "radio.h" #include "wdsp_init.h" #include "version.h" -#ifdef FREEDV #include "mode.h" -#endif #ifdef PSK #include "psk.h" #include "psk_waterfall.h" @@ -143,8 +141,13 @@ gint update(gpointer data) { } if(!isTransmitting()) { - double m=GetRXAMeter(CHANNEL_RX0, smeter); - meter_update(SMETER,m,0.0,0.0,0.0); + if(mode==modePSK) { + double m=(double)psk_get_signal_level(); + meter_update(PSKMETER,m,0.0,0.0,0.0); + } else { + double m=GetRXAMeter(CHANNEL_RX0, smeter); + meter_update(SMETER,m,0.0,0.0,0.0); + } } else { double alc=GetTXAMeter(CHANNEL_TX, alc); diff --git a/meter.c b/meter.c index 5718eab..4cd5f77 100644 --- a/meter.c +++ b/meter.c @@ -27,10 +27,13 @@ #include "wdsp.h" #include "radio.h" #include "version.h" -#ifdef FREEDV #include "mode.h" +#ifdef FREEDV #include "freedv.h" #endif +#ifdef PSK +#include "psk.h" +#endif static GtkWidget *parent_window; @@ -316,8 +319,39 @@ void meter_update(int meter_type,double value,double reverse,double exciter,doub cairo_show_text(cr, sf); } #endif + break; +#ifdef PSK + case PSKMETER: + { + int i; + offset=5.0; + cairo_set_line_width(cr, 1.0); + cairo_set_source_rgb(cr, 1, 1, 1); + for(i=0;i<11;i++) { + cairo_move_to(cr,offset+(double)(i*20),(double)meter_height-10); + if((i%2)==0) { + cairo_line_to(cr,offset+(double)(i*20),(double)(meter_height-20)); + cairo_move_to(cr,offset+(double)(i*20),(double)meter_height); + sprintf(sf,"%d",i*10); + cairo_show_text(cr, sf); + } else { + cairo_line_to(cr,offset+(double)(i*20),(double)(meter_height-15)); + } + } + cairo_stroke(cr); + + cairo_set_source_rgb(cr, 0, 1, 0); + cairo_rectangle(cr, offset+0.0, (double)(meter_height-40), value*2, 20.0); + cairo_fill(cr); + cairo_set_source_rgb(cr, 0, 1, 0); + cairo_set_font_size(cr, 16); + sprintf(sf,"Level: %d",(int)value); + cairo_move_to(cr, 210, 45); + cairo_show_text(cr, sf); + } break; +#endif case POWER: // value is Watts cairo_select_font_face(cr, "Arial", diff --git a/meter.h b/meter.h index d78ddc6..d02adcf 100644 --- a/meter.h +++ b/meter.h @@ -19,6 +19,9 @@ #define SMETER 0 #define POWER 1 +#ifdef PSK +#define PSKMETER 2 +#endif GtkWidget* meter_init(int width,int height,GtkWidget *parent); diff --git a/pihpsdr b/pihpsdr index ffbec55..ab3d1a4 100755 Binary files a/pihpsdr and b/pihpsdr differ diff --git a/psk.c b/psk.c index 25a076a..557d268 100644 --- a/psk.c +++ b/psk.c @@ -65,9 +65,16 @@ static void add_text(char *text, int length) { } current_text_offset=0; } - //if(text[i]!=0x0D && text[i]!=0x0A) { - if(text[i]>0x1F) { - text_label[current_text_line][current_text_offset++]=text[i]; + if(text[i]==0x08 || text[i]==0x7F) { + if(current_text_offset>0) { + current_text_offset--; + } + } else { + if(text[i]!=0x0D && text[i]!=0x0A) { + if(text[i]>0x1F) { + text_label[current_text_line][current_text_offset++]=text[i]; + } + } } text_label[current_text_line][current_text_offset]=0x00; } diff --git a/release/pihpsdr.tar b/release/pihpsdr.tar index df843af..ab7968e 100644 Binary files a/release/pihpsdr.tar and b/release/pihpsdr.tar differ diff --git a/release/pihpsdr/pihpsdr b/release/pihpsdr/pihpsdr index ffbec55..ab3d1a4 100755 Binary files a/release/pihpsdr/pihpsdr and b/release/pihpsdr/pihpsdr differ