From 700e364265d61049ea478bbdb14c48ab2fd9f7ac Mon Sep 17 00:00:00 2001 From: Bryan Biedenkapp Date: Sat, 17 Apr 2021 17:29:08 +0000 Subject: [PATCH] deprecate old per-level transmit during cal (never really worked); implement P25 80hz cal; --- host/calibrate/HostCal.cpp | 644 ++++++++++++++++--------------------- modem/Modem.h | 14 +- 2 files changed, 281 insertions(+), 377 deletions(-) diff --git a/host/calibrate/HostCal.cpp b/host/calibrate/HostCal.cpp index 313ec7e9..5f206202 100644 --- a/host/calibrate/HostCal.cpp +++ b/host/calibrate/HostCal.cpp @@ -55,7 +55,8 @@ using namespace modem; #define DMR_CAL_STR "[Tx] DMR 1200 Hz Tone Mode (2.75Khz Deviation)" #define P25_CAL_STR "[Tx] P25 1200 Hz Tone Mode (2.83Khz Deviation)" -#define LF_CAL_STR "[Tx] DMR Low Frequency Mode (80 Hz square wave)" +#define DMR_LF_CAL_STR "[Tx] DMR Low Frequency Mode (80 Hz square wave)" +#define P25_LF_CAL_STR "[Tx] P25 Low Frequency Mode (80 Hz square wave)" #define DMR_CAL_1K_STR "[Tx] DMR BS 1031 Hz Test Pattern (TS2 CC1 ID1 TG9)" #define DMR_DMO_CAL_1K_STR "[Tx] DMR MS 1031 Hz Test Pattern (TS2 CC1 ID1 TG9)" #define P25_CAL_1K_STR "[Tx] P25 1011 Hz Test Pattern (NAC293 ID1 TG1)" @@ -65,15 +66,6 @@ using namespace modem; #define P25_FEC_1K_STR "[Rx] P25 1011 Hz Test Pattern (NAC293 ID1 TG1)" #define RSSI_CAL_STR "RSSI Calibration Mode" -#define DMR_SYM_LA_TST_STR "[Tx] DMR Symbol Test (Level A [+3])" -#define P25_SYM_LA_TST_STR "[Tx] P25 Symbol Test (Level A [+3])" -#define DMR_SYM_LB_TST_STR "[Tx] DMR Symbol Test (Level B [+1])" -#define P25_SYM_LB_TST_STR "[Tx] P25 Symbol Test (Level B [+1])" -#define DMR_SYM_LC_TST_STR "[Tx] DMR Symbol Test (Level C [-1])" -#define P25_SYM_LC_TST_STR "[Tx] P25 Symbol Test (Level C [-1])" -#define DMR_SYM_LD_TST_STR "[Tx] DMR Symbol Test (Level D [-3])" -#define P25_SYM_LD_TST_STR "[Tx] P25 Symbol Test (Level D [-3])" - // Voice LC MS Header, CC: 1, srcID: 1, dstID: TG9 const uint8_t VH_DMO1K[] = { 0x00U, 0x20U, 0x08U, 0x08U, 0x02U, 0x38U, 0x15U, 0x00U, 0x2CU, 0xA0U, 0x14U, @@ -292,7 +284,7 @@ int HostCal::run() } displayHelp(); - + m_rxInvert = modemConf["rxInvert"].as(false); m_txInvert = modemConf["txInvert"].as(false); m_pttInvert = modemConf["pttInvert"].as(false); @@ -321,357 +313,282 @@ int HostCal::run() int c = m_console.getChar(); switch (c) { /** Level Adjustment Commands */ - case 'I': - { - m_txInvert = !m_txInvert; - LogMessage(LOG_CAL, " - TX Invert: %s", m_txInvert ? "On" : "Off"); - writeConfig(); - } - break; - case 'i': - { - m_rxInvert = !m_rxInvert; - LogMessage(LOG_CAL, " - RX Invert: %s", m_rxInvert ? "On" : "Off"); - writeConfig(); - } - break; - case 'p': - { - m_pttInvert = !m_pttInvert; - LogMessage(LOG_CAL, " - PTT Invert: %s", m_pttInvert ? "On" : "Off"); - writeConfig(); - } - break; - case 'd': - { - m_dcBlocker = !m_dcBlocker; - LogMessage(LOG_CAL, " - DC Blocker: %s", m_dcBlocker ? "On" : "Off"); - writeConfig(); - } - break; - case 'D': - { - m_debug = !m_debug; - LogMessage(LOG_CAL, " - Modem Debug: %s", m_debug ? "On" : "Off"); - writeConfig(); - } - break; - case 'R': - setRXLevel(1); - break; - case 'r': - setRXLevel(-1); - break; - case 'T': - setTXLevel(1); - break; - case 't': - setTXLevel(-1); - break; - case 'c': - setRXDCOffset(-1); - break; - case 'C': - setRXDCOffset(1); - break; - case 'o': - setTXDCOffset(-1); - break; - case 'O': - setTXDCOffset(1); - break; - - case '-': - setDMRSymLevel3Adj(-1); - break; - case '=': - setDMRSymLevel3Adj(1); - break; - case '_': - setDMRSymLevel1Adj(-1); - break; - case '+': - setDMRSymLevel1Adj(1); - break; - - case '[': - setP25SymLevel3Adj(-1); - break; - case ']': - setP25SymLevel3Adj(1); - break; - case '{': - setP25SymLevel1Adj(-1); - break; - case '}': - setP25SymLevel1Adj(1); - break; - - case '1': - { - m_duplex = true; - m_dmrEnabled = false; - m_dmrRx1K = false; - m_p25Enabled = false; - m_p25Rx1K = false; - - if (m_mode == STATE_DMR_CAL) { - m_modeStr = DMR_SYM_LA_TST_STR; - - LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); - writeConfig(STATE_DMR_LEVELA); - } - else if (m_mode == STATE_P25_CAL) { - m_modeStr = P25_SYM_LA_TST_STR; - - LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); - writeConfig(STATE_P25_LEVELA); - } - } - break; - case '2': - { - m_duplex = true; - m_dmrEnabled = false; - m_dmrRx1K = false; - m_p25Enabled = false; - m_p25Rx1K = false; - - if (m_mode == STATE_DMR_CAL) { - m_modeStr = DMR_SYM_LB_TST_STR; - - LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); - writeConfig(STATE_DMR_LEVELB); - } - else if (m_mode == STATE_P25_CAL) { - m_modeStr = P25_SYM_LB_TST_STR; - - LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); - writeConfig(STATE_P25_LEVELB); - } - } - break; - case '3': - { - m_duplex = true; - m_dmrEnabled = false; - m_dmrRx1K = false; - m_p25Enabled = false; - m_p25Rx1K = false; - - if (m_mode == STATE_DMR_CAL) { - m_modeStr = DMR_SYM_LC_TST_STR; - - LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); - writeConfig(STATE_DMR_LEVELC); - } - else if (m_mode == STATE_P25_CAL) { - m_modeStr = P25_SYM_LC_TST_STR; - - LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); - writeConfig(STATE_P25_LEVELC); - } - } - break; - case '4': - { - m_duplex = true; - m_dmrEnabled = false; - m_dmrRx1K = false; - m_p25Enabled = false; - m_p25Rx1K = false; - - if (m_mode == STATE_DMR_CAL) { - m_modeStr = DMR_SYM_LD_TST_STR; - - LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); - writeConfig(STATE_DMR_LEVELD); - } - else if (m_mode == STATE_P25_CAL) { - m_modeStr = P25_SYM_LD_TST_STR; - - LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); - writeConfig(STATE_P25_LEVELD); - } - } - break; + case 'I': + { + m_txInvert = !m_txInvert; + LogMessage(LOG_CAL, " - TX Invert: %s", m_txInvert ? "On" : "Off"); + writeConfig(); + } + break; + case 'i': + { + m_rxInvert = !m_rxInvert; + LogMessage(LOG_CAL, " - RX Invert: %s", m_rxInvert ? "On" : "Off"); + writeConfig(); + } + break; + case 'p': + { + m_pttInvert = !m_pttInvert; + LogMessage(LOG_CAL, " - PTT Invert: %s", m_pttInvert ? "On" : "Off"); + writeConfig(); + } + break; + case 'd': + { + m_dcBlocker = !m_dcBlocker; + LogMessage(LOG_CAL, " - DC Blocker: %s", m_dcBlocker ? "On" : "Off"); + writeConfig(); + } + break; + case 'D': + { + m_debug = !m_debug; + LogMessage(LOG_CAL, " - Modem Debug: %s", m_debug ? "On" : "Off"); + writeConfig(); + } + break; + case 'R': + setRXLevel(1); + break; + case 'r': + setRXLevel(-1); + break; + case 'T': + setTXLevel(1); + break; + case 't': + setTXLevel(-1); + break; + case 'c': + setRXDCOffset(-1); + break; + case 'C': + setRXDCOffset(1); + break; + case 'o': + setTXDCOffset(-1); + break; + case 'O': + setTXDCOffset(1); + break; + + case '-': + setDMRSymLevel3Adj(-1); + break; + case '=': + setDMRSymLevel3Adj(1); + break; + case '_': + setDMRSymLevel1Adj(-1); + break; + case '+': + setDMRSymLevel1Adj(1); + break; + + case '[': + setP25SymLevel3Adj(-1); + break; + case ']': + setP25SymLevel3Adj(1); + break; + case '{': + setP25SymLevel1Adj(-1); + break; + case '}': + setP25SymLevel1Adj(1); + break; /** Mode Commands */ - case 'Z': - { - m_mode = STATE_DMR_CAL; - m_modeStr = DMR_CAL_STR; - m_duplex = true; - m_dmrEnabled = false; - m_dmrRx1K = false; - m_p25Enabled = false; - m_p25Rx1K = false; - - LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); - writeConfig(); - } - break; - case 'z': - { - m_mode = STATE_P25_CAL; - m_modeStr = P25_CAL_STR; - m_duplex = true; - m_dmrEnabled = false; - m_dmrRx1K = false; - m_p25Enabled = false; - m_p25Rx1K = false; - - LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); - writeConfig(); - } - break; - case 'l': - { - m_mode = STATE_LF_CAL; - m_modeStr = LF_CAL_STR; - m_duplex = true; - m_dmrEnabled = false; - m_dmrRx1K = false; - m_p25Enabled = false; - m_p25Rx1K = false; - - LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); - writeConfig(); - } - break; - case 'M': - { - m_mode = STATE_DMR_CAL_1K; - m_modeStr = DMR_CAL_1K_STR; - m_duplex = true; - m_dmrEnabled = false; - m_dmrRx1K = false; - m_p25Enabled = false; - m_p25Rx1K = false; - - LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); - writeConfig(); - } - break; - case 'm': - { - m_mode = STATE_DMR_DMO_CAL_1K; - m_modeStr = DMR_DMO_CAL_1K_STR; - m_duplex = true; - m_dmrEnabled = false; - m_dmrRx1K = false; - m_p25Enabled = false; - m_p25Rx1K = false; - - LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); - writeConfig(); - } - break; - case 'P': - { - m_mode = STATE_P25_CAL_1K; - m_modeStr = P25_CAL_1K_STR; - m_duplex = true; - m_dmrEnabled = false; - m_dmrRx1K = false; - m_p25Enabled = false; - m_p25Rx1K = false; - - LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); - writeConfig(); - } - break; - case 'B': - case 'J': - { - m_mode = STATE_DMR; - if (c == 'J') { - m_modeStr = DMR_FEC_1K_STR; - m_dmrRx1K = true; - } - else { - m_modeStr = DMR_FEC_STR; - m_dmrRx1K = false; - } - m_duplex = false; - m_dmrEnabled = true; - m_p25Enabled = false; - - LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); - writeConfig(); - } - break; - case 'b': - case 'j': - { - m_mode = STATE_P25; - if (c == 'j') { - m_modeStr = P25_FEC_1K_STR; - m_p25Rx1K = true; - } - else { - m_modeStr = P25_FEC_STR; - m_p25Rx1K = false; - } - m_duplex = false; - m_dmrEnabled = false; - m_p25Enabled = true; - - LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); - writeConfig(); - } - break; - case 'x': - { - m_mode = STATE_RSSI_CAL; - m_modeStr = RSSI_CAL_STR; - m_duplex = true; - m_dmrEnabled = false; - m_dmrRx1K = false; - m_p25Enabled = false; - m_p25Rx1K = false; - - LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); - writeConfig(); - } - break; - - /** General Commands */ - case ' ': - setTransmit(); - break; - case '`': - printStatus(); - break; - case 'V': - getHostVersion(); - break; - case 'v': - m_modem->getFirmwareVersion(); - break; - case 'H': - case 'h': - displayHelp(); - break; - case 'S': - case 's': - { - yaml::Serialize(m_conf, m_confFile.c_str(), yaml::SerializeConfig(4, 64, false, false)); - LogMessage(LOG_CAL, " - Saved configuration to %s", m_confFile.c_str()); - } - break; - case 'Q': - case 'q': - end = true; - break; - - case 13: - case 10: - case -1: - break; - default: - LogError(LOG_CAL, "Unknown command - %c (H/h for help)", c); - break; + case 'Z': + { + m_mode = STATE_DMR_CAL; + m_modeStr = DMR_CAL_STR; + m_duplex = true; + m_dmrEnabled = false; + m_dmrRx1K = false; + m_p25Enabled = false; + m_p25Rx1K = false; + + LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); + writeConfig(); + } + break; + case 'z': + { + m_mode = STATE_P25_CAL; + m_modeStr = P25_CAL_STR; + m_duplex = true; + m_dmrEnabled = false; + m_dmrRx1K = false; + m_p25Enabled = false; + m_p25Rx1K = false; + + LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); + writeConfig(); + } + break; + case 'L': + { + m_mode = STATE_DMR_LF_CAL; + m_modeStr = DMR_LF_CAL_STR; + m_duplex = true; + m_dmrEnabled = false; + m_dmrRx1K = false; + m_p25Enabled = false; + m_p25Rx1K = false; + + LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); + writeConfig(); + } + break; + case 'l': + { + m_mode = STATE_P25_LF_CAL; + m_modeStr = P25_LF_CAL_STR; + m_duplex = true; + m_dmrEnabled = false; + m_dmrRx1K = false; + m_p25Enabled = false; + m_p25Rx1K = false; + + LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); + writeConfig(); + } + break; + case 'M': + { + m_mode = STATE_DMR_CAL_1K; + m_modeStr = DMR_CAL_1K_STR; + m_duplex = true; + m_dmrEnabled = false; + m_dmrRx1K = false; + m_p25Enabled = false; + m_p25Rx1K = false; + + LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); + writeConfig(); + } + break; + case 'm': + { + m_mode = STATE_DMR_DMO_CAL_1K; + m_modeStr = DMR_DMO_CAL_1K_STR; + m_duplex = true; + m_dmrEnabled = false; + m_dmrRx1K = false; + m_p25Enabled = false; + m_p25Rx1K = false; + + LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); + writeConfig(); + } + break; + case 'P': + { + m_mode = STATE_P25_CAL_1K; + m_modeStr = P25_CAL_1K_STR; + m_duplex = true; + m_dmrEnabled = false; + m_dmrRx1K = false; + m_p25Enabled = false; + m_p25Rx1K = false; + + LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); + writeConfig(); + } + break; + case 'B': + case 'J': + { + m_mode = STATE_DMR; + if (c == 'J') { + m_modeStr = DMR_FEC_1K_STR; + m_dmrRx1K = true; + } + else { + m_modeStr = DMR_FEC_STR; + m_dmrRx1K = false; + } + m_duplex = false; + m_dmrEnabled = true; + m_p25Enabled = false; + + LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); + writeConfig(); + } + break; + case 'b': + case 'j': + { + m_mode = STATE_P25; + if (c == 'j') { + m_modeStr = P25_FEC_1K_STR; + m_p25Rx1K = true; + } + else { + m_modeStr = P25_FEC_STR; + m_p25Rx1K = false; + } + m_duplex = false; + m_dmrEnabled = false; + m_p25Enabled = true; + + LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); + writeConfig(); + } + break; + case 'x': + { + m_mode = STATE_RSSI_CAL; + m_modeStr = RSSI_CAL_STR; + m_duplex = true; + m_dmrEnabled = false; + m_dmrRx1K = false; + m_p25Enabled = false; + m_p25Rx1K = false; + + LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); + writeConfig(); + } + break; + + /** General Commands */ + case ' ': + setTransmit(); + break; + case '`': + printStatus(); + break; + case 'V': + getHostVersion(); + break; + case 'v': + m_modem->getFirmwareVersion(); + break; + case 'H': + case 'h': + displayHelp(); + break; + case 'S': + case 's': + { + yaml::Serialize(m_conf, m_confFile.c_str(), yaml::SerializeConfig(4, 64, false, false)); + LogMessage(LOG_CAL, " - Saved configuration to %s", m_confFile.c_str()); + } + break; + case 'Q': + case 'q': + end = true; + break; + + case 13: + case 10: + case -1: + break; + default: + LogError(LOG_CAL, "Unknown command - %c (H/h for help)", c); + break; } m_modem->clock(0U); @@ -865,7 +782,8 @@ void HostCal::displayHelp() LogMessage(LOG_CAL, "Mode Commands:"); LogMessage(LOG_CAL, " Z %s", DMR_CAL_STR); LogMessage(LOG_CAL, " z %s", P25_CAL_STR); - LogMessage(LOG_CAL, " l %s", LF_CAL_STR); + LogMessage(LOG_CAL, " L %s", DMR_LF_CAL_STR); + LogMessage(LOG_CAL, " l %s", P25_LF_CAL_STR); LogMessage(LOG_CAL, " M %s", DMR_CAL_1K_STR); LogMessage(LOG_CAL, " m %s", DMR_DMO_CAL_1K_STR); LogMessage(LOG_CAL, " P %s", P25_CAL_1K_STR); @@ -879,10 +797,6 @@ void HostCal::displayHelp() LogMessage(LOG_CAL, " _/+ Increase/Decrease DMR +/- 1 Symbol Level"); LogMessage(LOG_CAL, " [/] Increase/Decrease P25 +/- 3 Symbol Level"); LogMessage(LOG_CAL, " {/} Increase/Decrease P25 +/- 1 Symbol Level"); - LogMessage(LOG_CAL, " 1 Transmit DMR/P25 +3 Symbols Only"); - LogMessage(LOG_CAL, " 2 Transmit DMR/P25 +1 Symbols Only"); - LogMessage(LOG_CAL, " 3 Transmit DMR/P25 -1 Symbols Only"); - LogMessage(LOG_CAL, " 4 Transmit DMR/P25 +1 Symbols Only"); } /// diff --git a/modem/Modem.h b/modem/Modem.h index 313ff4f7..9eca5b85 100644 --- a/modem/Modem.h +++ b/modem/Modem.h @@ -78,23 +78,13 @@ namespace modem // CW STATE_CW = 10U, - // Symbol Tests - STATE_DMR_LEVELA = 70U, - STATE_DMR_LEVELB = 71U, - STATE_DMR_LEVELC = 72U, - STATE_DMR_LEVELD = 73U, - STATE_P25_LEVELA = 74U, - STATE_P25_LEVELB = 75U, - STATE_P25_LEVELC = 77U, - STATE_P25_LEVELD = 78U, - // Calibration States + STATE_P25_LF_CAL = 91U, STATE_P25_CAL_1K = 92U, STATE_DMR_DMO_CAL_1K = 93U, STATE_DMR_CAL_1K = 94U, - - STATE_LF_CAL = 95U, + STATE_DMR_LF_CAL = 95U, STATE_RSSI_CAL = 96U,