From ff7a9fdd4e234caa2f621a32f05c7c7a687c5d73 Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Fri, 1 Mar 2019 08:00:20 +0000 Subject: [PATCH] Simplify the state change. --- SerialPort.cpp | 131 +++++++++---------------------------------------- 1 file changed, 24 insertions(+), 107 deletions(-) diff --git a/SerialPort.cpp b/SerialPort.cpp index 19301d76..99fa62e0 100644 --- a/SerialPort.cpp +++ b/SerialPort.cpp @@ -385,157 +385,74 @@ void CSerialPort::setMode(MMDVM_STATE modemState) switch (modemState) { case STATE_DMR: DEBUG1("Mode set to DMR"); - dstarRX.reset(); - ysfRX.reset(); - p25RX.reset(); - nxdnRX.reset(); - cwIdTX.reset(); break; case STATE_DSTAR: DEBUG1("Mode set to D-Star"); - dmrIdleRX.reset(); - dmrDMORX.reset(); - dmrRX.reset(); - ysfRX.reset(); - p25RX.reset(); - nxdnRX.reset(); - cwIdTX.reset(); break; case STATE_YSF: DEBUG1("Mode set to System Fusion"); - dmrIdleRX.reset(); - dmrDMORX.reset(); - dmrRX.reset(); - dstarRX.reset(); - p25RX.reset(); - nxdnRX.reset(); - cwIdTX.reset(); break; case STATE_P25: DEBUG1("Mode set to P25"); - dmrIdleRX.reset(); - dmrDMORX.reset(); - dmrRX.reset(); - dstarRX.reset(); - ysfRX.reset(); - nxdnRX.reset(); - cwIdTX.reset(); break; case STATE_NXDN: DEBUG1("Mode set to NXDN"); - dmrIdleRX.reset(); - dmrDMORX.reset(); - dmrRX.reset(); - dstarRX.reset(); - ysfRX.reset(); - p25RX.reset(); - cwIdTX.reset(); break; case STATE_POCSAG: DEBUG1("Mode set to POCSAG"); - dmrIdleRX.reset(); - dmrDMORX.reset(); - dmrRX.reset(); - dstarRX.reset(); - ysfRX.reset(); - p25RX.reset(); - nxdnRX.reset(); - cwIdTX.reset(); break; case STATE_DSTARCAL: DEBUG1("Mode set to D-Star Calibrate"); - dmrIdleRX.reset(); - dmrDMORX.reset(); - dmrRX.reset(); - dstarRX.reset(); - ysfRX.reset(); - p25RX.reset(); - nxdnRX.reset(); - cwIdTX.reset(); break; case STATE_DMRCAL: DEBUG1("Mode set to DMR Calibrate"); - dmrIdleRX.reset(); - dmrDMORX.reset(); - dmrRX.reset(); - dstarRX.reset(); - ysfRX.reset(); - p25RX.reset(); - nxdnRX.reset(); - cwIdTX.reset(); break; case STATE_RSSICAL: DEBUG1("Mode set to RSSI Calibrate"); - dmrIdleRX.reset(); - dmrDMORX.reset(); - dmrRX.reset(); - dstarRX.reset(); - ysfRX.reset(); - p25RX.reset(); - nxdnRX.reset(); - cwIdTX.reset(); break; case STATE_LFCAL: DEBUG1("Mode set to 80 Hz Calibrate"); - dmrIdleRX.reset(); - dmrDMORX.reset(); - dmrRX.reset(); - dstarRX.reset(); - ysfRX.reset(); - p25RX.reset(); - nxdnRX.reset(); - cwIdTX.reset(); break; case STATE_DMRCAL1K: DEBUG1("Mode set to DMR BS 1031 Hz Calibrate"); - dmrIdleRX.reset(); - dmrDMORX.reset(); - dmrRX.reset(); - dstarRX.reset(); - ysfRX.reset(); - p25RX.reset(); - nxdnRX.reset(); - cwIdTX.reset(); break; case STATE_P25CAL1K: DEBUG1("Mode set to P25 1011 Hz Calibrate"); - dmrIdleRX.reset(); - dmrDMORX.reset(); - dmrRX.reset(); - dstarRX.reset(); - ysfRX.reset(); - p25RX.reset(); - nxdnRX.reset(); - cwIdTX.reset(); break; case STATE_DMRDMO1K: DEBUG1("Mode set to DMR MS 1031 Hz Calibrate"); - dmrIdleRX.reset(); - dmrDMORX.reset(); - dmrRX.reset(); - dstarRX.reset(); - ysfRX.reset(); - p25RX.reset(); - nxdnRX.reset(); - cwIdTX.reset(); break; case STATE_NXDNCAL1K: DEBUG1("Mode set to NXDN 1031 Hz Calibrate"); - dmrIdleRX.reset(); - dmrDMORX.reset(); - dmrRX.reset(); - dstarRX.reset(); - ysfRX.reset(); - p25RX.reset(); - nxdnRX.reset(); - cwIdTX.reset(); break; - default: + case STATE_POCSAGCAL: + DEBUG1("Mode set to POCSAG Calibrate"); + break; + default: // STATE_IDLE DEBUG1("Mode set to Idle"); - // STATE_IDLE break; } + if (modemState != STATE_DSTAR) + dstarRX.reset(); + + if (modemState != STATE_DMR) { + dmrIdleRX.reset(); + dmrDMORX.reset(); + dmrRX.reset(); + } + + if (modemState != STATE_YSF) + ysfRX.reset(); + + if (modemState != STATE_P25) + p25RX.reset(); + + if (modemState != STATE_NXDN) + nxdnRX.reset(); + + cwIdTX.reset(); + m_modemState = modemState; io.setMode();