]> git.rkrishnan.org Git - pihpsdr.git/commitdiff
Updated meter to display PSK signal level when in PSK mode.
authorJohn Melton - G0ORX/N6LYT <john.d.melton@googlemail.com>
Sat, 6 Aug 2016 10:00:42 +0000 (10:00 +0000)
committerJohn Melton - G0ORX/N6LYT <john.d.melton@googlemail.com>
Sat, 6 Aug 2016 10:00:42 +0000 (10:00 +0000)
main.c
meter.c
meter.h
pihpsdr
psk.c
release/pihpsdr.tar
release/pihpsdr/pihpsdr

diff --git a/main.c b/main.c
index 8758d4d30dddfa6f3e92120e459070e1ff7fd358..d62f28606e78d52da3d7c05a816586a5dbbd2bbb 100644 (file)
--- 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 5718eab3b149c95107b231022ff25c126cf3cb93..4cd5f776c6e0bf4bd51bd57bf9c9e0d019247036 100644 (file)
--- a/meter.c
+++ b/meter.c
 #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 d78ddc6220026154bd1581b0c8e1f27be07ccd31..d02adcf1dd262007dea9ad484e86a529a8d2dce6 100644 (file)
--- 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 ffbec55080275601bd6ecca86f1957557f723313..ab3d1a48e3a9b3b4f88fe509a5a8dfe037d15c88 100755 (executable)
Binary files a/pihpsdr and b/pihpsdr differ
diff --git a/psk.c b/psk.c
index 25a076ac6f994070e73019c26e5797b53a5e805c..557d268761a38210a0faeb318cfff96635e0d03c 100644 (file)
--- 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;
   }
index df843af9a7ba1c00d630fae2401dd7b046950e4a..ab7968ebc1ceaf8e0e7717af6d81a0f9ea8a1055 100644 (file)
Binary files a/release/pihpsdr.tar and b/release/pihpsdr.tar differ
index ffbec55080275601bd6ecca86f1957557f723313..ab3d1a48e3a9b3b4f88fe509a5a8dfe037d15c88 100755 (executable)
Binary files a/release/pihpsdr/pihpsdr and b/release/pihpsdr/pihpsdr differ