mirror of
https://github.com/g4klx/MMDVMHost
synced 2025-12-23 16:55:52 +08:00
Detect DAC overflows.
This commit is contained in:
26
Modem.cpp
26
Modem.cpp
@@ -197,18 +197,10 @@ void CModem::clock(unsigned int ms)
|
|||||||
LogError("No reply from the modem for some time, resetting it");
|
LogError("No reply from the modem for some time, resetting it");
|
||||||
m_error = true;
|
m_error = true;
|
||||||
close();
|
close();
|
||||||
#if defined(_WIN32) || defined(_WIN64)
|
|
||||||
::Sleep(2000UL); // 2s
|
CThread::sleep(2000U); // 2s
|
||||||
#else
|
while (!open())
|
||||||
::sleep(2UL); // 2s
|
CThread::sleep(5000U); // 5s
|
||||||
#endif
|
|
||||||
while (!open()) {
|
|
||||||
#if defined(_WIN32) || defined(_WIN64)
|
|
||||||
::Sleep(5000UL); // 5s
|
|
||||||
#else
|
|
||||||
::sleep(5UL); // 5s
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
RESP_TYPE_MMDVM type = getResponse();
|
RESP_TYPE_MMDVM type = getResponse();
|
||||||
@@ -376,6 +368,10 @@ void CModem::clock(unsigned int ms)
|
|||||||
|
|
||||||
m_lockout = (m_buffer[5U] & 0x10U) == 0x10U;
|
m_lockout = (m_buffer[5U] & 0x10U) == 0x10U;
|
||||||
|
|
||||||
|
bool dacOverflow = (m_buffer[5U] & 0x20U) == 0x20U;
|
||||||
|
if (dacOverflow)
|
||||||
|
LogError("MMDVM DAC levels have overflowed");
|
||||||
|
|
||||||
m_dstarSpace = m_buffer[6U];
|
m_dstarSpace = m_buffer[6U];
|
||||||
m_dmrSpace1 = m_buffer[7U];
|
m_dmrSpace1 = m_buffer[7U];
|
||||||
m_dmrSpace2 = m_buffer[8U];
|
m_dmrSpace2 = m_buffer[8U];
|
||||||
@@ -698,11 +694,7 @@ bool CModem::writeYSFData(const unsigned char* data, unsigned int length)
|
|||||||
|
|
||||||
bool CModem::readVersion()
|
bool CModem::readVersion()
|
||||||
{
|
{
|
||||||
#if defined(_WIN32) || defined(_WIN64)
|
CThread::sleep(2000U); // 2s
|
||||||
::Sleep(2000UL); // 2s
|
|
||||||
#else
|
|
||||||
::sleep(2); // 2s
|
|
||||||
#endif
|
|
||||||
|
|
||||||
for (unsigned int i = 0U; i < 6U; i++) {
|
for (unsigned int i = 0U; i < 6U; i++) {
|
||||||
unsigned char buffer[3U];
|
unsigned char buffer[3U];
|
||||||
|
|||||||
@@ -362,6 +362,8 @@ void CYSFControl::writeNetwork()
|
|||||||
|
|
||||||
m_networkWatchdog.start();
|
m_networkWatchdog.start();
|
||||||
|
|
||||||
|
bool gateway = ::memcmp(data + 4U, "GATEWAY ", YSF_CALLSIGN_LENGTH) == 0;
|
||||||
|
|
||||||
if (!m_netTimeoutTimer.isRunning()) {
|
if (!m_netTimeoutTimer.isRunning()) {
|
||||||
if (::memcmp(data + 14U, " ", YSF_CALLSIGN_LENGTH) != 0)
|
if (::memcmp(data + 14U, " ", YSF_CALLSIGN_LENGTH) != 0)
|
||||||
::memcpy(m_netSource, data + 14U, YSF_CALLSIGN_LENGTH);
|
::memcpy(m_netSource, data + 14U, YSF_CALLSIGN_LENGTH);
|
||||||
@@ -403,7 +405,7 @@ void CYSFControl::writeNetwork()
|
|||||||
|
|
||||||
m_netFrames++;
|
m_netFrames++;
|
||||||
|
|
||||||
bool end = data[34U] == 0x01U;
|
bool end = (data[34U] & 0x01U) == 0x01U;
|
||||||
|
|
||||||
data[33U] = end ? TAG_EOT : TAG_DATA;
|
data[33U] = end ? TAG_EOT : TAG_DATA;
|
||||||
data[34U] = 0x00U;
|
data[34U] = 0x00U;
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ void CYSFNetwork::clock(unsigned int ms)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool end = buffer[34U] == 0x01U;
|
bool end = (buffer[34U] & 0x01U) == 0x01U;
|
||||||
if (end)
|
if (end)
|
||||||
::memset(m_tag, ' ', YSF_CALLSIGN_LENGTH);
|
::memset(m_tag, ' ', YSF_CALLSIGN_LENGTH);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user