From 0137c3e02eebbdd371e745adcdbc2c89ac0f9ebf Mon Sep 17 00:00:00 2001
From: c vw <dl1ycf@darc.de>
Date: Mon, 19 Nov 2018 15:12:33 +0100
Subject: [PATCH] Adapted to latest STEMlab software

---
 discovered.h    |  2 ++
 old_discovery.c |  4 ++++
 old_protocol.c  |  4 ++--
 radio_menu.c    | 10 ++--------
 receiver.c      |  1 +
 rx_menu.c       |  1 +
 transmitter.c   |  2 +-
 7 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/discovered.h b/discovered.h
index 1458e2c..e7d18fc 100644
--- a/discovered.h
+++ b/discovered.h
@@ -36,6 +36,8 @@
 #define DEVICE_HERMES_LITE 6
 // 8000DLE uses 10 as the device type in old protocol
 #define DEVICE_ORION2 10 
+// Newer STEMlab hpsdr emulators use 100 instead of 1
+#define DEVICE_STEMLAB 100
 
 #ifdef USBOZY
 #define DEVICE_OZY 7
diff --git a/old_discovery.c b/old_discovery.c
index a2cf009..620a28b 100644
--- a/old_discovery.c
+++ b/old_discovery.c
@@ -189,6 +189,10 @@ fprintf(stderr,"discover_receive_thread\n");
                         case DEVICE_ORION2:
                             strcpy(discovered[devices].name,"Orion 2");
                             break;
+			case DEVICE_STEMLAB:
+			    // In most respects similar to HERMES, but this indicates TCP capability
+                            strcpy(discovered[devices].name,"STEMlab");
+                            break;
                         default:
                             strcpy(discovered[devices].name,"Unknown");
                             break;
diff --git a/old_protocol.c b/old_protocol.c
index 0ac2e79..4a40492 100644
--- a/old_protocol.c
+++ b/old_protocol.c
@@ -637,13 +637,13 @@ static void process_ozy_input_buffer(unsigned char  *buffer) {
               }
               break;
             case 2:
-              if(device==DEVICE_HERMES)  {
+              if(device==DEVICE_HERMES || device==DEVICE_STEMLAB)  {
                 left_sample_double_rx=left_sample_double;
                 right_sample_double_rx=right_sample_double;
               }
               break;
             case 3:
-              if(device==DEVICE_HERMES)  {
+              if(device==DEVICE_HERMES || device==DEVICE_STEMLAB)  {
                 left_sample_double_tx=left_sample_double;
                 right_sample_double_tx=right_sample_double;
                 add_ps_iq_samples(transmitter, left_sample_double_tx,right_sample_double_tx,left_sample_double_rx,right_sample_double_rx);
diff --git a/radio_menu.c b/radio_menu.c
index be2658a..2213e40 100644
--- a/radio_menu.c
+++ b/radio_menu.c
@@ -118,11 +118,6 @@ static void load_filters(void) {
     }
   }
   att_type_changed();
-  if (filter_board == CHARLY25) {
-    if (use_tcp_b) gtk_widget_show(use_tcp_b);
-  } else {
-    if (use_tcp_b) gtk_widget_hide(use_tcp_b);
-  }
 }
 
 static void none_cb(GtkWidget *widget, gpointer data) {
@@ -390,7 +385,8 @@ void radio_menu(GtkWidget *parent) {
     g_signal_connect(apollo_b, "toggled", G_CALLBACK(apollo_cb), NULL);
     g_signal_connect(charly25_b, "toggled", G_CALLBACK(charly25_cb), NULL);
 
-    if (protocol == ORIGINAL_PROTOCOL) {
+    if (protocol == ORIGINAL_PROTOCOL && device==DEVICE_STEMLAB) {
+      // Currently, STEMlab supports TCP switching, but RADIOBERRY might do this as well
       use_tcp_b = gtk_check_button_new_with_label("Use TCP not UDP");
       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(use_tcp_b), use_tcp==1);
       gtk_grid_attach(GTK_GRID(grid), use_tcp_b, x, 6, 1, 1);
@@ -475,7 +471,5 @@ void radio_menu(GtkWidget *parent) {
   sub_menu=dialog;
 
   gtk_widget_show_all(dialog);
-  // Only show this buttion if the C25 filter board is selected
-  if (filter_board != CHARLY25) gtk_widget_hide(use_tcp_b);
 
 }
diff --git a/receiver.c b/receiver.c
index 2817602..3db664d 100644
--- a/receiver.c
+++ b/receiver.c
@@ -848,6 +848,7 @@ fprintf(stderr,"create_receiver: id=%d buffer_size=%d fft_size=%d pixels=%d fps=
             case DEVICE_METIS:
             case DEVICE_HERMES:
             case DEVICE_HERMES_LITE:			
+	    case DEVICE_STEMLAB:
               rx->adc=0;
               break;
             default:
diff --git a/rx_menu.c b/rx_menu.c
index 528284a..129f954 100644
--- a/rx_menu.c
+++ b/rx_menu.c
@@ -296,6 +296,7 @@ void rx_menu(GtkWidget *parent) {
           break;
         case DEVICE_HERMES:
         case DEVICE_HERMES_LITE:
+	case DEVICE_STEMLAB:
           n_adc=1;
           break;
         default: 
diff --git a/transmitter.c b/transmitter.c
index b4c17c9..41ba392 100644
--- a/transmitter.c
+++ b/transmitter.c
@@ -329,7 +329,7 @@ static gboolean update_display(gpointer data) {
     double constant1=3.3;
     double constant2=0.095;
 
-	if(protocol==ORIGINAL_PROTOCOL) {
+    if(protocol==ORIGINAL_PROTOCOL) {
       switch(device) {
         case DEVICE_METIS:
           constant1=3.3;
-- 
2.45.2