deprecate old per-level transmit during cal (never really worked); implement P25 80hz cal;

pull/1/head
Bryan Biedenkapp 5 years ago
parent 09df9a0241
commit 700e364265

@ -55,7 +55,8 @@ using namespace modem;
#define DMR_CAL_STR "[Tx] DMR 1200 Hz Tone Mode (2.75Khz Deviation)" #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 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_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 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)" #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 P25_FEC_1K_STR "[Rx] P25 1011 Hz Test Pattern (NAC293 ID1 TG1)"
#define RSSI_CAL_STR "RSSI Calibration Mode" #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 // Voice LC MS Header, CC: 1, srcID: 1, dstID: TG9
const uint8_t VH_DMO1K[] = { const uint8_t VH_DMO1K[] = {
0x00U, 0x20U, 0x08U, 0x08U, 0x02U, 0x38U, 0x15U, 0x00U, 0x2CU, 0xA0U, 0x14U, 0x00U, 0x20U, 0x08U, 0x08U, 0x02U, 0x38U, 0x15U, 0x00U, 0x2CU, 0xA0U, 0x14U,
@ -321,357 +313,282 @@ int HostCal::run()
int c = m_console.getChar(); int c = m_console.getChar();
switch (c) { switch (c) {
/** Level Adjustment Commands */ /** Level Adjustment Commands */
case 'I': case 'I':
{ {
m_txInvert = !m_txInvert; m_txInvert = !m_txInvert;
LogMessage(LOG_CAL, " - TX Invert: %s", m_txInvert ? "On" : "Off"); LogMessage(LOG_CAL, " - TX Invert: %s", m_txInvert ? "On" : "Off");
writeConfig(); writeConfig();
} }
break; break;
case 'i': case 'i':
{ {
m_rxInvert = !m_rxInvert; m_rxInvert = !m_rxInvert;
LogMessage(LOG_CAL, " - RX Invert: %s", m_rxInvert ? "On" : "Off"); LogMessage(LOG_CAL, " - RX Invert: %s", m_rxInvert ? "On" : "Off");
writeConfig(); writeConfig();
} }
break; break;
case 'p': case 'p':
{ {
m_pttInvert = !m_pttInvert; m_pttInvert = !m_pttInvert;
LogMessage(LOG_CAL, " - PTT Invert: %s", m_pttInvert ? "On" : "Off"); LogMessage(LOG_CAL, " - PTT Invert: %s", m_pttInvert ? "On" : "Off");
writeConfig(); writeConfig();
} }
break; break;
case 'd': case 'd':
{ {
m_dcBlocker = !m_dcBlocker; m_dcBlocker = !m_dcBlocker;
LogMessage(LOG_CAL, " - DC Blocker: %s", m_dcBlocker ? "On" : "Off"); LogMessage(LOG_CAL, " - DC Blocker: %s", m_dcBlocker ? "On" : "Off");
writeConfig(); writeConfig();
} }
break; break;
case 'D': case 'D':
{ {
m_debug = !m_debug; m_debug = !m_debug;
LogMessage(LOG_CAL, " - Modem Debug: %s", m_debug ? "On" : "Off"); LogMessage(LOG_CAL, " - Modem Debug: %s", m_debug ? "On" : "Off");
writeConfig(); writeConfig();
} }
break; break;
case 'R': case 'R':
setRXLevel(1); setRXLevel(1);
break; break;
case 'r': case 'r':
setRXLevel(-1); setRXLevel(-1);
break; break;
case 'T': case 'T':
setTXLevel(1); setTXLevel(1);
break; break;
case 't': case 't':
setTXLevel(-1); setTXLevel(-1);
break; break;
case 'c': case 'c':
setRXDCOffset(-1); setRXDCOffset(-1);
break; break;
case 'C': case 'C':
setRXDCOffset(1); setRXDCOffset(1);
break; break;
case 'o': case 'o':
setTXDCOffset(-1); setTXDCOffset(-1);
break; break;
case 'O': case 'O':
setTXDCOffset(1); setTXDCOffset(1);
break; break;
case '-': case '-':
setDMRSymLevel3Adj(-1); setDMRSymLevel3Adj(-1);
break; break;
case '=': case '=':
setDMRSymLevel3Adj(1); setDMRSymLevel3Adj(1);
break; break;
case '_': case '_':
setDMRSymLevel1Adj(-1); setDMRSymLevel1Adj(-1);
break; break;
case '+': case '+':
setDMRSymLevel1Adj(1); setDMRSymLevel1Adj(1);
break; break;
case '[': case '[':
setP25SymLevel3Adj(-1); setP25SymLevel3Adj(-1);
break; break;
case ']': case ']':
setP25SymLevel3Adj(1); setP25SymLevel3Adj(1);
break; break;
case '{': case '{':
setP25SymLevel1Adj(-1); setP25SymLevel1Adj(-1);
break; break;
case '}': case '}':
setP25SymLevel1Adj(1); setP25SymLevel1Adj(1);
break; 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;
/** Mode Commands */ /** Mode Commands */
case 'Z': case 'Z':
{ {
m_mode = STATE_DMR_CAL; m_mode = STATE_DMR_CAL;
m_modeStr = DMR_CAL_STR; m_modeStr = DMR_CAL_STR;
m_duplex = true; m_duplex = true;
m_dmrEnabled = false; m_dmrEnabled = false;
m_dmrRx1K = false; m_dmrRx1K = false;
m_p25Enabled = false; m_p25Enabled = false;
m_p25Rx1K = false; m_p25Rx1K = false;
LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); LogMessage(LOG_CAL, " - %s", m_modeStr.c_str());
writeConfig(); writeConfig();
} }
break; break;
case 'z': case 'z':
{ {
m_mode = STATE_P25_CAL; m_mode = STATE_P25_CAL;
m_modeStr = P25_CAL_STR; m_modeStr = P25_CAL_STR;
m_duplex = true; m_duplex = true;
m_dmrEnabled = false; m_dmrEnabled = false;
m_dmrRx1K = false; m_dmrRx1K = false;
m_p25Enabled = false; m_p25Enabled = false;
m_p25Rx1K = false; m_p25Rx1K = false;
LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); LogMessage(LOG_CAL, " - %s", m_modeStr.c_str());
writeConfig(); writeConfig();
} }
break; break;
case 'l': case 'L':
{ {
m_mode = STATE_LF_CAL; m_mode = STATE_DMR_LF_CAL;
m_modeStr = LF_CAL_STR; m_modeStr = DMR_LF_CAL_STR;
m_duplex = true; m_duplex = true;
m_dmrEnabled = false; m_dmrEnabled = false;
m_dmrRx1K = false; m_dmrRx1K = false;
m_p25Enabled = false; m_p25Enabled = false;
m_p25Rx1K = false; m_p25Rx1K = false;
LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); LogMessage(LOG_CAL, " - %s", m_modeStr.c_str());
writeConfig(); writeConfig();
} }
break; break;
case 'M': case 'l':
{ {
m_mode = STATE_DMR_CAL_1K; m_mode = STATE_P25_LF_CAL;
m_modeStr = DMR_CAL_1K_STR; m_modeStr = P25_LF_CAL_STR;
m_duplex = true; m_duplex = true;
m_dmrEnabled = false; m_dmrEnabled = false;
m_dmrRx1K = false; m_dmrRx1K = false;
m_p25Enabled = false; m_p25Enabled = false;
m_p25Rx1K = false; m_p25Rx1K = false;
LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); LogMessage(LOG_CAL, " - %s", m_modeStr.c_str());
writeConfig(); writeConfig();
} }
break; break;
case 'm': case 'M':
{ {
m_mode = STATE_DMR_DMO_CAL_1K; m_mode = STATE_DMR_CAL_1K;
m_modeStr = DMR_DMO_CAL_1K_STR; m_modeStr = DMR_CAL_1K_STR;
m_duplex = true; m_duplex = true;
m_dmrEnabled = false; m_dmrEnabled = false;
m_dmrRx1K = false; m_dmrRx1K = false;
m_p25Enabled = false; m_p25Enabled = false;
m_p25Rx1K = false; m_p25Rx1K = false;
LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); LogMessage(LOG_CAL, " - %s", m_modeStr.c_str());
writeConfig(); writeConfig();
} }
break; break;
case 'P': case 'm':
{ {
m_mode = STATE_P25_CAL_1K; m_mode = STATE_DMR_DMO_CAL_1K;
m_modeStr = P25_CAL_1K_STR; m_modeStr = DMR_DMO_CAL_1K_STR;
m_duplex = true; m_duplex = true;
m_dmrEnabled = false; m_dmrEnabled = false;
m_dmrRx1K = false; m_dmrRx1K = false;
m_p25Enabled = false; m_p25Enabled = false;
m_p25Rx1K = false; m_p25Rx1K = false;
LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); LogMessage(LOG_CAL, " - %s", m_modeStr.c_str());
writeConfig(); writeConfig();
} }
break; break;
case 'B': case 'P':
case 'J': {
{ m_mode = STATE_P25_CAL_1K;
m_mode = STATE_DMR; m_modeStr = P25_CAL_1K_STR;
if (c == 'J') { m_duplex = true;
m_modeStr = DMR_FEC_1K_STR; m_dmrEnabled = false;
m_dmrRx1K = true; m_dmrRx1K = false;
} m_p25Enabled = false;
else { m_p25Rx1K = false;
m_modeStr = DMR_FEC_STR;
m_dmrRx1K = false; LogMessage(LOG_CAL, " - %s", m_modeStr.c_str());
} writeConfig();
m_duplex = false; }
m_dmrEnabled = true; break;
m_p25Enabled = false; case 'B':
case 'J':
LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); {
writeConfig(); m_mode = STATE_DMR;
} if (c == 'J') {
break; m_modeStr = DMR_FEC_1K_STR;
case 'b': m_dmrRx1K = true;
case 'j': }
{ else {
m_mode = STATE_P25; m_modeStr = DMR_FEC_STR;
if (c == 'j') { m_dmrRx1K = false;
m_modeStr = P25_FEC_1K_STR; }
m_p25Rx1K = true; m_duplex = false;
} m_dmrEnabled = true;
else { m_p25Enabled = false;
m_modeStr = P25_FEC_STR;
m_p25Rx1K = false; LogMessage(LOG_CAL, " - %s", m_modeStr.c_str());
} writeConfig();
m_duplex = false; }
m_dmrEnabled = false; break;
m_p25Enabled = true; case 'b':
case 'j':
LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); {
writeConfig(); m_mode = STATE_P25;
} if (c == 'j') {
break; m_modeStr = P25_FEC_1K_STR;
case 'x': m_p25Rx1K = true;
{ }
m_mode = STATE_RSSI_CAL; else {
m_modeStr = RSSI_CAL_STR; m_modeStr = P25_FEC_STR;
m_duplex = true; m_p25Rx1K = false;
m_dmrEnabled = false; }
m_dmrRx1K = false; m_duplex = false;
m_p25Enabled = false; m_dmrEnabled = false;
m_p25Rx1K = false; m_p25Enabled = true;
LogMessage(LOG_CAL, " - %s", m_modeStr.c_str()); LogMessage(LOG_CAL, " - %s", m_modeStr.c_str());
writeConfig(); writeConfig();
} }
break; break;
case 'x':
/** General Commands */ {
case ' ': m_mode = STATE_RSSI_CAL;
setTransmit(); m_modeStr = RSSI_CAL_STR;
break; m_duplex = true;
case '`': m_dmrEnabled = false;
printStatus(); m_dmrRx1K = false;
break; m_p25Enabled = false;
case 'V': m_p25Rx1K = false;
getHostVersion();
break; LogMessage(LOG_CAL, " - %s", m_modeStr.c_str());
case 'v': writeConfig();
m_modem->getFirmwareVersion(); }
break; break;
case 'H':
case 'h': /** General Commands */
displayHelp(); case ' ':
break; setTransmit();
case 'S': break;
case 's': case '`':
{ printStatus();
yaml::Serialize(m_conf, m_confFile.c_str(), yaml::SerializeConfig(4, 64, false, false)); break;
LogMessage(LOG_CAL, " - Saved configuration to %s", m_confFile.c_str()); case 'V':
} getHostVersion();
break; break;
case 'Q': case 'v':
case 'q': m_modem->getFirmwareVersion();
end = true; break;
break; case 'H':
case 'h':
case 13: displayHelp();
case 10: break;
case -1: case 'S':
break; case 's':
default: {
LogError(LOG_CAL, "Unknown command - %c (H/h for help)", c); yaml::Serialize(m_conf, m_confFile.c_str(), yaml::SerializeConfig(4, 64, false, false));
break; 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); m_modem->clock(0U);
@ -865,7 +782,8 @@ void HostCal::displayHelp()
LogMessage(LOG_CAL, "Mode Commands:"); LogMessage(LOG_CAL, "Mode Commands:");
LogMessage(LOG_CAL, " Z %s", DMR_CAL_STR); LogMessage(LOG_CAL, " Z %s", DMR_CAL_STR);
LogMessage(LOG_CAL, " z %s", P25_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_CAL_1K_STR);
LogMessage(LOG_CAL, " m %s", DMR_DMO_CAL_1K_STR); LogMessage(LOG_CAL, " m %s", DMR_DMO_CAL_1K_STR);
LogMessage(LOG_CAL, " P %s", P25_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 DMR +/- 1 Symbol Level");
LogMessage(LOG_CAL, " [/] Increase/Decrease P25 +/- 3 Symbol Level"); LogMessage(LOG_CAL, " [/] Increase/Decrease P25 +/- 3 Symbol Level");
LogMessage(LOG_CAL, " {/} Increase/Decrease P25 +/- 1 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");
} }
/// <summary> /// <summary>

@ -78,23 +78,13 @@ namespace modem
// CW // CW
STATE_CW = 10U, 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 // Calibration States
STATE_P25_LF_CAL = 91U,
STATE_P25_CAL_1K = 92U, STATE_P25_CAL_1K = 92U,
STATE_DMR_DMO_CAL_1K = 93U, STATE_DMR_DMO_CAL_1K = 93U,
STATE_DMR_CAL_1K = 94U, STATE_DMR_CAL_1K = 94U,
STATE_DMR_LF_CAL = 95U,
STATE_LF_CAL = 95U,
STATE_RSSI_CAL = 96U, STATE_RSSI_CAL = 96U,

Loading…
Cancel
Save

Powered by TurnKey Linux.