Change the handling of the mode LEDs.

This commit is contained in:
Jonathan Naylor 2020-08-31 16:06:59 +01:00
parent fb85505433
commit 632ddda68b
3 changed files with 30 additions and 16 deletions

38
IO.cpp
View File

@ -220,7 +220,7 @@ void CIO::start()
m_started = true; m_started = true;
setMode(); setMode(STATE_IDLE);
} }
void CIO::process() void CIO::process()
@ -232,8 +232,7 @@ void CIO::process()
if (m_modemState == STATE_DSTAR || m_modemState == STATE_DMR || m_modemState == STATE_YSF || m_modemState == STATE_P25 || m_modemState == STATE_NXDN || m_modemState == STATE_POCSAG) { if (m_modemState == STATE_DSTAR || m_modemState == STATE_DMR || m_modemState == STATE_YSF || m_modemState == STATE_P25 || m_modemState == STATE_NXDN || m_modemState == STATE_POCSAG) {
if (m_modemState == STATE_DMR && m_tx) if (m_modemState == STATE_DMR && m_tx)
dmrTX.setStart(false); dmrTX.setStart(false);
m_modemState = STATE_IDLE; setMode(STATE_IDLE);
setMode();
} }
m_watchdog = 0U; m_watchdog = 0U;
@ -516,17 +515,34 @@ void CIO::setADCDetection(bool detect)
m_detect = detect; m_detect = detect;
} }
void CIO::setMode() void CIO::setMode(MMDVM_STATE state)
{ {
if (state == m_modemState)
return;
#if defined(MODE_LEDS) #if defined(MODE_LEDS)
setDStarInt(m_modemState == STATE_DSTAR); switch (m_modemState) {
setDMRInt(m_modemState == STATE_DMR); case STATE_DSTAR: setDStarInt(false); break;
setYSFInt(m_modemState == STATE_YSF); case STATE_DMR: setDMRInt(false); break;
setP25Int(m_modemState == STATE_P25); case STATE_YSF: setYSFInt(false); break;
setNXDNInt(m_modemState == STATE_NXDN); case STATE_P25: setP25Int(false); break;
setPOCSAGInt(m_modemState == STATE_POCSAG); case STATE_NXDN: setNXDNInt(false); break;
setFMInt(m_modemState == STATE_FM); case STATE_POCSAG: setPOCSAGInt(false); break;
case STATE_FM: setFMInt(false); break;
}
switch (state) {
case STATE_DSTAR: setDStarInt(true); break;
case STATE_DMR: setDMRInt(true); break;
case STATE_YSF: setYSFInt(true); break;
case STATE_P25: setP25Int(true); break;
case STATE_NXDN: setNXDNInt(true); break;
case STATE_POCSAG: setPOCSAGInt(true); break;
case STATE_FM: setFMInt(true); break;
}
#endif #endif
m_modemState = state;
} }
void CIO::setParameters(bool rxInvert, bool txInvert, bool pttInvert, uint8_t rxLevel, uint8_t cwIdTXLevel, uint8_t dstarTXLevel, uint8_t dmrTXLevel, uint8_t ysfTXLevel, uint8_t p25TXLevel, uint8_t nxdnTXLevel, uint8_t pocsagTXLevel, uint8_t fmTXLevel, int16_t txDCOffset, int16_t rxDCOffset, bool useCOSAsLockout) void CIO::setParameters(bool rxInvert, bool txInvert, bool pttInvert, uint8_t rxLevel, uint8_t cwIdTXLevel, uint8_t dstarTXLevel, uint8_t dmrTXLevel, uint8_t ysfTXLevel, uint8_t p25TXLevel, uint8_t nxdnTXLevel, uint8_t pocsagTXLevel, uint8_t fmTXLevel, int16_t txDCOffset, int16_t rxDCOffset, bool useCOSAsLockout)

2
IO.h
View File

@ -38,7 +38,7 @@ public:
void setDecode(bool dcd); void setDecode(bool dcd);
void setADCDetection(bool detect); void setADCDetection(bool detect);
void setMode(); void setMode(MMDVM_STATE state);
void interrupt(); void interrupt();

View File

@ -103,7 +103,7 @@ const uint8_t MMDVM_DEBUG5 = 0xF5U;
#define HW_TYPE "MMDVM" #define HW_TYPE "MMDVM"
#endif #endif
#define DESCRIPTION "20200714 (D-Star/DMR/System Fusion/P25/NXDN/POCSAG/FM)" #define DESCRIPTION "20200831 (D-Star/DMR/System Fusion/P25/NXDN/POCSAG/FM)"
#if defined(GITVERSION) #if defined(GITVERSION)
#define concat(h, a, b, c) h " " a " " b " GitID #" c "" #define concat(h, a, b, c) h " " a " " b " GitID #" c ""
@ -568,9 +568,7 @@ void CSerialPort::setMode(MMDVM_STATE modemState)
cwIdTX.reset(); cwIdTX.reset();
m_modemState = modemState; io.setMode(modemState);
io.setMode();
} }
void CSerialPort::start() void CSerialPort::start()