From 78a26cb67fddfbce31683d963cad458dd6d1d726 Mon Sep 17 00:00:00 2001 From: c vw Date: Thu, 8 Aug 2019 20:12:56 +0200 Subject: [PATCH] antenna routing --- alex.h | 6 ++++++ hpsdrsim.c | 2 +- new_protocol.c | 19 +++++++++++++++++-- old_protocol.c | 10 +++++++--- 4 files changed, 31 insertions(+), 6 deletions(-) diff --git a/alex.h b/alex.h index 6341cac..fffd69f 100644 --- a/alex.h +++ b/alex.h @@ -49,6 +49,12 @@ #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! // diff --git a/hpsdrsim.c b/hpsdrsim.c index 1259e68..d41e1d8 100644 --- a/hpsdrsim.c +++ b/hpsdrsim.c @@ -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"); diff --git a/new_protocol.c b/new_protocol.c index 50b56b7..edbb13d 100644 --- a/new_protocol.c +++ b/new_protocol.c @@ -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; } diff --git a/old_protocol.c b/old_protocol.c index 72aa9e4..b662c7c 100644 --- a/old_protocol.c +++ b/old_protocol.c @@ -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 -- 2.45.2