diff --git a/DMRSlot.cpp b/DMRSlot.cpp index 314a320..ad12181 100644 --- a/DMRSlot.cpp +++ b/DMRSlot.cpp @@ -43,7 +43,7 @@ unsigned char CDMRSlot::m_id2 = 0U; CDMRSlot::CDMRSlot(unsigned int slotNo, unsigned int timeout) : m_slotNo(slotNo), m_radioQueue(1000U), -m_networkQueue(100U), +m_networkQueue(1000U), m_state(SS_LISTENING), m_embeddedLC(), m_lc(NULL), @@ -349,8 +349,10 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData) if (m_state != SS_RELAYING_NETWORK) { CFullLC fullLC; m_lc = fullLC.decode(data + 2U, DT_VOICE_LC_HEADER); - if (m_lc == NULL) + if (m_lc == NULL) { + LogMessage("DMR Slot %u, bad LC received, substituting", m_slotNo); m_lc = new CLC(dmrData.getFLCO(), dmrData.getSrcId(), dmrData.getDstId()); + } // Regenerate the LC fullLC.encode(*m_lc, data + 2U, DT_VOICE_LC_HEADER); @@ -510,6 +512,8 @@ void CDMRSlot::clock(unsigned int ms) m_playoutTimer.clock(ms); if (m_playoutTimer.isRunning() && m_playoutTimer.hasExpired()) { + m_playoutTimer.stop(); + while (!m_networkQueue.isEmpty()) { unsigned char len = 0U; m_networkQueue.getData(&len, 1U); @@ -550,11 +554,17 @@ void CDMRSlot::writeRadioQueue(const unsigned char *data) void CDMRSlot::writeNetworkQueue(const unsigned char *data) { // If the timeout has expired, send nothing - if (!m_timeoutTimer.isRunning() || !m_timeoutTimer.hasExpired()) { + if (m_timeoutTimer.isRunning() && m_timeoutTimer.hasExpired()) + return; + + if (m_playoutTimer.isRunning() && !m_playoutTimer.hasExpired()) { unsigned char len = DMR_FRAME_LENGTH_BYTES + 2U; m_networkQueue.addData(&len, 1U); - m_networkQueue.addData(data, len); + } else { + unsigned char len = DMR_FRAME_LENGTH_BYTES + 2U; + m_radioQueue.addData(&len, 1U); + m_radioQueue.addData(data, len); } } diff --git a/MMDVMHost.vcxproj b/MMDVMHost.vcxproj index 0eecefa..112968c 100644 --- a/MMDVMHost.vcxproj +++ b/MMDVMHost.vcxproj @@ -183,6 +183,7 @@ + diff --git a/MMDVMHost.vcxproj.filters b/MMDVMHost.vcxproj.filters index 3a21235..99cb55a 100644 --- a/MMDVMHost.vcxproj.filters +++ b/MMDVMHost.vcxproj.filters @@ -128,6 +128,9 @@ Header Files + + Header Files + diff --git a/Version.h b/Version.h index 0ea15c9..4d921f5 100644 --- a/Version.h +++ b/Version.h @@ -19,6 +19,6 @@ #if !defined(VERSION_H) #define VERSION_H -const char* VERSION = "20160113"; +const char* VERSION = "20160114"; #endif