mirror of
https://github.com/g4klx/MMDVMHost
synced 2025-12-22 16:25:45 +08:00
Log buffer overflows from the modem and handle master reboots cleanly.
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,6 +1,7 @@
|
||||
Debug
|
||||
Release
|
||||
x64
|
||||
*.opendb
|
||||
*.bak
|
||||
*.obj
|
||||
*~
|
||||
|
||||
@@ -263,10 +263,19 @@ void CHomebrewDMRIPSC::clock(unsigned int ms)
|
||||
m_rxData.addData(&len, 1U);
|
||||
m_rxData.addData(m_buffer, len);
|
||||
} else if (::memcmp(m_buffer, "MSTNAK", 6U) == 0) {
|
||||
LogError("Login to the master has failed");
|
||||
m_status = DISCONNECTED; // XXX
|
||||
m_timeoutTimer.stop();
|
||||
m_retryTimer.stop();
|
||||
if (m_status == RUNNING) {
|
||||
LogWarning("The master is restarting, logging back in");
|
||||
m_status = WAITING_LOGIN;
|
||||
m_timeoutTimer.start();
|
||||
m_retryTimer.start();
|
||||
m_pingTimer.stop();
|
||||
} else {
|
||||
LogError("Login to the master has failed");
|
||||
m_status = DISCONNECTED;
|
||||
m_timeoutTimer.stop();
|
||||
m_retryTimer.stop();
|
||||
m_pingTimer.stop();
|
||||
}
|
||||
} else if (::memcmp(m_buffer, "RPTACK", 6U) == 0) {
|
||||
switch (m_status) {
|
||||
case WAITING_LOGIN:
|
||||
|
||||
@@ -320,6 +320,14 @@ void CModem::clock(unsigned int ms)
|
||||
if (adcOverflow)
|
||||
LogWarning("MMDVM ADC levels have overflowed");
|
||||
|
||||
bool rxOverflow = (m_buffer[5U] & 0x04U) == 0x04U;
|
||||
if (rxOverflow)
|
||||
LogWarning("RX buffer has overflowed");
|
||||
|
||||
bool txOverflow = (m_buffer[5U] & 0x08U) == 0x08U;
|
||||
if (txOverflow)
|
||||
LogWarning("TX buffer has overflowed");
|
||||
|
||||
m_dstarSpace = m_buffer[6U];
|
||||
m_dmrSpace1 = m_buffer[7U];
|
||||
m_dmrSpace2 = m_buffer[8U];
|
||||
|
||||
Reference in New Issue
Block a user