From a8bea8c7aa5aaa02fc9d6650ee7fbe51b882c2b4 Mon Sep 17 00:00:00 2001
From: John Melton G0ORX <john.d.melton@googlemail.com>
Date: Mon, 16 Dec 2019 21:11:21 +0000
Subject: [PATCH] Fixed Analog/Digital Meter switch. Fixed S-Meter readings for
 SoapySDR

---
 meter.c      | 11 ++++++++++-
 meter_menu.c |  4 +---
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/meter.c b/meter.c
index 3dd0858..c060e6c 100644
--- a/meter.c
+++ b/meter.c
@@ -217,7 +217,6 @@ void meter_update(RECEIVER *rx,int meter_type,double value,double reverse,double
   double offset;
   cairo_t *cr;
   cr = cairo_create (meter_surface);
-
 if(analog_meter) {
   cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);
   cairo_paint (cr);
@@ -228,6 +227,11 @@ if(analog_meter) {
     case SMETER:
       {
       double level=value+(double)adc_attenuation[rx->adc];
+#ifdef SOAPYSDR
+      if(protocol==SOAPYSDR_PROTOCOL) {
+       level-=rx->rf_gain;
+      }
+#endif
       if (filter_board == CHARLY25) {
 	// preamp/dither encodes the preamp level
         if (rx->preamp) level -= 18.0;
@@ -543,6 +547,11 @@ if(analog_meter) {
       text_location=10;
       offset=5.0;
       double level=value+(double)adc_attenuation[rx->adc];
+#ifdef SOAPYSDR
+      if(protocol==SOAPYSDR_PROTOCOL) {
+       level-=rx->rf_gain;
+      }
+#endif
       if (filter_board == CHARLY25) {
 	// preamp/dither encodes the preamp level
         if (rx->preamp) level -= 18.0;
diff --git a/meter_menu.c b/meter_menu.c
index 9b11768..7552e39 100644
--- a/meter_menu.c
+++ b/meter_menu.c
@@ -63,9 +63,7 @@ static void alc_meter_select_cb (GtkToggleButton *widget, gpointer        data)
 }
 
 static void analog_cb(GtkToggleButton *widget, gpointer data) {
-  if(gtk_toggle_button_get_active(widget)) {
-    analog_meter=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
-  }
+  analog_meter=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 }
 
 
-- 
2.45.2