From 3d3a6c6a86be991b96453128d1194af1809a1042 Mon Sep 17 00:00:00 2001 From: Tom Early Date: Thu, 8 Jul 2021 11:49:10 -0700 Subject: [PATCH] RF Level is now an expert parameter for mmdvmmodem --- QnetModem.cpp | 7 ++++--- QnetModem.h | 4 ++-- defaults | 3 ++- qnconfig | 8 ++++++-- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/QnetModem.cpp b/QnetModem.cpp index cab54b0..8adf848 100644 --- a/QnetModem.cpp +++ b/QnetModem.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019,2020 by Thomas A. Early N7TAE + * Copyright (C) 2019-2021 by Thomas A. Early N7TAE * * CQnetModem is inspired by {Modem,MMDVMHost}.cpp in * Jonathan Naylor's brilliant MMDVMHost that is... @@ -44,7 +44,7 @@ #include "QnetModem.h" #include "QnetConfigure.h" -#define MODEM_VERSION "QnetModem-608" +#define MODEM_VERSION "QnetModem-708" #define MAX_RESPONSES 30 const unsigned char FRAME_START = 0xE0U; @@ -179,7 +179,7 @@ bool CQnetModem::SetFrequency() frame.length = 12U; else { - frame.frequency.level = 255U; + frame.frequency.level = (unsigned char)RF_LEVEL; frame.frequency.ps = __builtin_bswap32(htonl(pocsagFrequency)); frame.length = 17U; @@ -892,6 +892,7 @@ bool CQnetModem::ReadConfig(const char *cfgFile) cfg.GetValue(modem_path+"_tx_delay", type, TX_DELAY, 0, 1000); cfg.GetValue(modem_path+"_rx_level", type, RX_LEVEL, 0, 255); cfg.GetValue(modem_path+"_tx_level", type, TX_LEVEL, 0, 255); + cfg.GetValue(modem_path+"_rf_level", type, RF_LEVEL, 0, 255); cfg.GetValue(modem_path+"_packet_wait", type, PACKET_WAIT, 18, 30); packet_wait = 1.0E-3 * double(PACKET_WAIT); diff --git a/QnetModem.h b/QnetModem.h index 158de4e..de41536 100644 --- a/QnetModem.h +++ b/QnetModem.h @@ -141,7 +141,7 @@ using SMODEM = struct mmodem_tag unsigned char zero; // should be zero; uint32_t rx; // receive frequency uint32_t tx; // transmitter frequency - unsigned char level; // rf level for pocsag? + unsigned char level; // rf level uint32_t ps; // pocsag frequency, default 433000000U } frequency; struct @@ -225,7 +225,7 @@ private: char RPTR_MOD; std::string MODEM_DEVICE, RPTR; double TX_FREQUENCY, RX_FREQUENCY, TX_OFFSET, RX_OFFSET, packet_wait; - int TX_DELAY, RX_LEVEL, TX_LEVEL, PACKET_WAIT; + int TX_DELAY, RX_LEVEL, TX_LEVEL, RF_LEVEL, PACKET_WAIT; bool DUPLEX, RX_INVERT, TX_INVERT, PTT_INVERT, LOG_QSO, LOG_DEBUG; // parameters diff --git a/defaults b/defaults index ca004f3..a0118c8 100644 --- a/defaults +++ b/defaults @@ -1,5 +1,5 @@ # -# Copyright (c) 2019-2020 by Thomas A. Early N7TAE +# Copyright (c) 2019-2021 by Thomas A. Early N7TAE # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -133,6 +133,7 @@ mmdvmmodem_ptt_invert=false # push-to-talk gate mmdvmmodem_tx_delay=100 # delay in milliseconds mmdvmmodem_rx_level=128 # range is 0-255 mmdvmmodem_tx_level=128 # range is 0-255 +mmdvmmodem_rf_level=255 # range is 0-255 ########################################################################################################################## # diff --git a/qnconfig b/qnconfig index 977e010..2c7d0a9 100755 --- a/qnconfig +++ b/qnconfig @@ -474,6 +474,7 @@ ModuleMenu () { echo -n "td : Transmit delay (in msec) for tx/rx switch = "; EvaluateVar {${mod},mmdvmmodem}_tx_delay echo -n "tl : Transmit level (0-255) = "; EvaluateVar {${mod},mmdvmmodem}_tx_level echo -n "rl : Receive level (0-255) = "; EvaluateVar {${mod},mmdvmmodem}_rx_level + echo -n "lv : RF level (0-255) = "; EvaluateVar {${mod},mmdvmmodem}_rf_level fi fi echo "xx : Delete this module" @@ -501,6 +502,7 @@ ModuleMenu () { elif [[ "$key" == ip* ]]; then eval ${mod}_internal_ip="$value" elif [[ "$key" == it* ]]; then SetBooleanValue ${mod}_tx_invert "$value" elif [[ "$key" == lp* ]]; then eval ${mod}_local_port="$value" + elif [[ "$key" == lv* ]]; then eval ${mod}_rf_level="$value" elif [[ "$key" == of* ]]; then eval ${mod}_offset="$value" elif [[ "$key" == pi* ]]; then SetBooleanValue ${mod}_ptt_invert="$value" elif [[ "$key" == po* ]]; then eval ${mod}_power="$value" @@ -523,7 +525,7 @@ ModuleMenu () { elif [[ "$key" == tx* ]]; then eval ${mod}_tx_frequency="$value" elif [[ "$key" == xx* ]]; then unset ${mod}_{link_at_start,callsign,{,rx_,tx_}frequency,offset,range,agl} - unset ${mod}_{inactivity,packet_wait,acknowledge,ack_delay,power,squelch,serial_number,rf_o{n,ff},{r,t}x_level} + unset ${mod}_{inactivity,packet_wait,acknowledge,ack_delay,power,squelch,serial_number,rf_o{n,ff},{rx,tx,rf}_level} unset ${mod}_{duplex,tx_delay,rqst_count,{tx,rx,ptt}_invert,device,internal_ip,target_ip,{gateway,local}_port} unset ${mod}_{tx_offset,rx_offset,auto_link,ap_mode} unset ${mod} @@ -546,6 +548,7 @@ ModuleMenu () { elif [[ "$value" == it* ]]; then unset ${mod}_tx_invert elif [[ "$value" == lp* ]]; then unset ${mod}_local_port elif [[ "$value" == ls* ]]; then unset ${mod}_link_at_start + elif [[ "$value" == lv* ]]; then unset ${mod}_rf_level elif [[ "$value" == of* ]]; then unset ${mod}_offset elif [[ "$value" == pi* ]]; then unset ${mod}_ppt_invert elif [[ "$value" == po* ]]; then unset ${mod}_power @@ -642,6 +645,7 @@ WriteCFGFile () { q=${p}_duplex; [ -z ${!q+x} ] || echo "${q}=${!q}" >> $outFile q=${p}_rx_level; [ -z ${!q+x} ] || echo "${q}=${!q}" >> $outFile q=${p}_tx_level; [ -z ${!q+x} ] || echo "${q}=${!q}" >> $outFile + q=${p}_rf_level; [ -z ${!q+x} ] || echo "${q}=${!q}" >> $outFile q=${p}_tx_invert; [ -z ${!q+x} ] || echo "${q}=${!q}" >> $outFile q=${p}_rx_invert; [ -z ${!q+x} ] || echo "${q}=${!q}" >> $outFile q=${p}_ptt_invert; [ -z ${!q+x} ] || echo "${q}=${!q}" >> $outFile @@ -738,7 +742,7 @@ while [[ "$ans" != q* ]] do clear echo - echo " QnConfig Main Menu V#210420" + echo " QnConfig Main Menu V#210708" echo echo -n "a : Module A - "; if [ -z $module_a ]; then echo ""; else echo "${module_a^^}"; fi echo -n "b : Module B - "; if [ -z $module_b ]; then echo ""; else echo "${module_b^^}"; fi