]> git.rkrishnan.org Git - pihpsdr.git/commitdiff
antenna routing
authorc vw <dl1ycf@darc.de>
Thu, 8 Aug 2019 18:12:56 +0000 (20:12 +0200)
committerc vw <dl1ycf@darc.de>
Thu, 8 Aug 2019 18:12:56 +0000 (20:12 +0200)
alex.h
hpsdrsim.c
new_protocol.c
old_protocol.c

diff --git a/alex.h b/alex.h
index 6341cac30cfdf2f585b0f73b4d2f5196d5bcd07a..fffd69fac80883ba831bb5b61e93e9e964f5784a 100644 (file)
--- a/alex.h
+++ b/alex.h
 #define ALEX_TX_ANTENNA_3      0x04000000              // route TX to ANT3
 
 //
+// Anan-7000 in contrast to ANAN-8000 has the TX relays in series (not parallel)
+//
+#define ANAN7000_TX_ANTENNA_1   0x00000000             // K8 off, K11 off, K14 off
+#define ANAN7000_TX_ANTENNA_2   0x03000000             // K8 on,  K11 on,  K14 off
+#define ANAN7000_TX_ANTENNA_3   0x05000000             // K8 on,  K11 off, K14 on
+
 // Note: DO NOT SET attenuator bits on ANAN-7000/8000
 //       since ALEX0(14) is used for a different purpose!
 //
index 1259e68b978cc21e8f6dae19af68bd049b6c5475..d41e1d883eecfa060c83e703bb8d7a6e9b364a90 100644 (file)
@@ -928,7 +928,7 @@ void process_ep2(uint8_t *frame)
           chk_data(frame[1],txdrive,"TX DRIVE");
           chk_data(frame[2] & 0x3F,hermes_config,"HERMES CONFIG");
           chk_data(frame[2] & 0x40, alex_manual,"ALEX manual HPF/LPF");
-          chk_data(frame[2] & 0x70, vna     ,"VNA mode");
+          chk_data(frame[2] & 0x80, vna     ,"VNA mode");
           chk_data(frame[3] & 0x1F,alex_hpf,"ALEX HPF");
           chk_data(frame[3] & 0x20,alex_bypass,"ALEX Bypass HPFs");
           chk_data(frame[3] & 0x40,lna6m,"ALEX 6m LNA");
index 50b56b702a2e005149f951f7b8ea88bfa9cfa09f..edbb13dfd80e4f3c5b84d17dc745f9faad7f406a 100644 (file)
@@ -1002,6 +1002,7 @@ static void new_protocol_high_priority() {
     } else {
       i=receiver[0]->alex_antenna;
     }
+    if (device == NEW_DEVICE_ORION2) device +=100;  // Only valid for ANAN-7000 not ANAN-8000!
     switch(i) {
       case 0:  // ANT 1
         alex0|=ALEX_TX_ANTENNA_1;
@@ -1012,13 +1013,27 @@ static void new_protocol_high_priority() {
       case 2:  // ANT 3
         alex0|=ALEX_TX_ANTENNA_3;
         break;
+      case 100: //ANT 1 on ANAN-7000
+        alex0|=ANAN7000_TX_ANTENNA_1;
+        break;
+      case 101: //ANT 1 on ANAN-7000
+        alex0|=ANAN7000_TX_ANTENNA_2;
+        break;
+      case 102: //ANT 1 on ANAN-7000
+        alex0|=ANAN7000_TX_ANTENNA_3;
+        break;
       default:
-       // this should not happen in TX case. Out of paranoia,
+       // If RXing, this means EXT1 etc. is activated, but
+       // we should not arrive here in TX case. Out of paranoia,
         // connect ANT1 in this case
        if (isTransmitting()) {
          fprintf(stderr,"WARNING: illegal TX antenna chosen, using ANT1\n");
          transmitter->alex_antenna=0;
-          alex0|=ALEX_TX_ANTENNA_1;
+         if (device == NEW_DEVICE_ORION2) {
+            alex0|=ANAN7000_TX_ANTENNA_1;
+         } else {
+            alex0|=ALEX_TX_ANTENNA_1;
+         }
        }
        break;
     }
index 72aa9e409caf2d81834211309986946f4a402e5c..b662c7cbf0559636e247ea17a883fefcb9c497aa 100644 (file)
@@ -1146,14 +1146,18 @@ void ozy_send_buffer() {
       case 3:  // EXT1 (RX2_IN)
         output_buffer[C3]|=0xC0;
         break;
-      case 4:  // EXT2 (RX1_IN)
+      case 4:  // EXT2 (RX1_IN)  (activates ByPass on ANAN-7000)
         output_buffer[C3]|=0xA0;
         break;
       case 5:  // XVTR
         output_buffer[C3]|=0xE0;
         break;
-      case 7:  // RX Bypass In
-        output_buffer[C3]|=0x80;
+      case 7:  // Bypass
+       if (device == DEVICE_ORION2) {
+          output_buffer[C3]|=0x20;    // works on ANAN-7000
+       } else {
+          output_buffer[C3]|=0x80;    // meant to work on ANAN-100/200 with Rev.24 PA board
+        }
        break;
       default:
        // RX1_ANT, RX1_OUT bits remain zero