diff --git a/YSF2DMR/Version.h b/YSF2DMR/Version.h index 01edde1..64e6bc6 100644 --- a/YSF2DMR/Version.h +++ b/YSF2DMR/Version.h @@ -20,6 +20,6 @@ #if !defined(VERSION_H) #define VERSION_H -const char* VERSION = "20180905"; +const char* VERSION = "20180923"; #endif diff --git a/YSF2DMR/YSF2DMR.cpp b/YSF2DMR/YSF2DMR.cpp index 4f75370..3d3326e 100644 --- a/YSF2DMR/YSF2DMR.cpp +++ b/YSF2DMR/YSF2DMR.cpp @@ -144,7 +144,8 @@ m_xlxConnected(false), m_xlxReflectors(NULL), m_xlxrefl(0U), m_remoteGateway(false), -m_hangTime(1000U) +m_hangTime(1000U), +m_firstSync(false) { m_ysfFrame = new unsigned char[200U]; m_dmrFrame = new unsigned char[50U]; @@ -774,6 +775,14 @@ int CYSF2DMR::run() networkWatchdog.start(); if(DataType == DT_TERMINATOR_WITH_LC) { + if (m_dmrFrames == 0U) { + m_dmrNetwork->reset(2U); + networkWatchdog.stop(); + m_dmrinfo = false; + m_firstSync = false; + break; + } + LogMessage("DMR received end of voice transmission, %.1f seconds", float(m_dmrFrames) / 16.667F); if (SrcId == 4000) @@ -784,6 +793,7 @@ int CYSF2DMR::run() networkWatchdog.stop(); m_dmrFrames = 0U; m_dmrinfo = false; + m_firstSync = false; } if((DataType == DT_VOICE_LC_HEADER) && (DataType != m_dmrLastDT)) { @@ -828,7 +838,10 @@ int CYSF2DMR::run() m_dmrFrames = 0U; } - if(DataType == DT_VOICE_SYNC || DataType == DT_VOICE) { + if(DataType == DT_VOICE_SYNC) + m_firstSync = true; + + if((DataType == DT_VOICE_SYNC || DataType == DT_VOICE) && m_firstSync) { unsigned char dmr_frame[50]; tx_dmrdata.getData(dmr_frame); @@ -845,8 +858,8 @@ int CYSF2DMR::run() m_netDst = (netflco == FLCO_GROUP ? "TG " : "") + m_lookup->findCS(DstId); - LogMessage("DMR audio received from %s to %s", m_netSrc.c_str(), m_netDst.c_str()); - + LogMessage("DMR audio late entry received from %s to %s", m_netSrc.c_str(), m_netDst.c_str()); + if (m_lookup->exists(SrcId) && (m_APRS != NULL)) { int lat, lon, resp; resp = m_APRS->findCall(m_netSrc, &lat, &lon); diff --git a/YSF2DMR/YSF2DMR.h b/YSF2DMR/YSF2DMR.h index 0a3db21..a645e9e 100644 --- a/YSF2DMR/YSF2DMR.h +++ b/YSF2DMR/YSF2DMR.h @@ -106,6 +106,7 @@ private: unsigned int m_xlxrefl; bool m_remoteGateway; unsigned int m_hangTime; + bool m_firstSync; bool createDMRNetwork(); void createGPS();