diff --git a/YSFControl.cpp b/YSFControl.cpp index 3b9469e..43ddf1a 100644 --- a/YSFControl.cpp +++ b/YSFControl.cpp @@ -48,6 +48,7 @@ m_rfDest(NULL), m_netSource(NULL), m_netDest(NULL), m_lastFrame(NULL), +m_lastMode(YSF_DT_VOICE_FR_MODE), m_netN(0U), m_rfPayload(), m_netPayload(), @@ -447,6 +448,8 @@ void CYSFControl::writeNetwork() unsigned char ft = fich.getFT(); unsigned char fi = fich.getFI(); + m_lastMode = dt; + // Set the downlink callsign switch (fi) { case YSF_FI_HEADER: @@ -693,6 +696,10 @@ bool CYSFControl::insertSilence(const unsigned char* data, unsigned char n) void CYSFControl::insertSilence(unsigned int count) { + // We can't meaningfully create "silent" data + if (m_lastMode == YSF_DT_DATA_FR_MODE) + return; + LogDebug("YSF, insert %u frames", count); unsigned char n = (m_netN + 1U) % 128U; diff --git a/YSFControl.h b/YSFControl.h index e6d951a..4b7bce2 100644 --- a/YSFControl.h +++ b/YSFControl.h @@ -66,6 +66,7 @@ private: unsigned char* m_netSource; unsigned char* m_netDest; unsigned char* m_lastFrame; + unsigned char m_lastMode; unsigned char m_netN; CYSFPayload m_rfPayload; CYSFPayload m_netPayload;