Fix DSQ processing.

This commit is contained in:
Jonathan Naylor
2017-08-14 12:12:32 +01:00
parent 3749b8d9f4
commit bd8f15cf5d
2 changed files with 32 additions and 21 deletions

View File

@@ -54,6 +54,8 @@ m_netSource(NULL),
m_netDest(NULL), m_netDest(NULL),
m_lastFrame(NULL), m_lastFrame(NULL),
m_lastFrameValid(false), m_lastFrameValid(false),
m_lastSQL(false),
m_lastSQ(0U),
m_lastMode(YSF_DT_VOICE_FR_MODE), m_lastMode(YSF_DT_VOICE_FR_MODE),
m_lastMR(YSF_MR_NOT_BUSY), m_lastMR(YSF_MR_NOT_BUSY),
m_netN(0U), m_netN(0U),
@@ -146,16 +148,17 @@ bool CYSFControl::writeModem(unsigned char *data, unsigned int len)
CYSFFICH fich; CYSFFICH fich;
bool valid = fich.decode(data + 2U); bool valid = fich.decode(data + 2U);
if (valid && m_rfState == RS_RF_LISTENING) { if (valid) {
m_lastSQL = fich.getSQL();
m_lastSQ = fich.getSQ();
if (m_rfState == RS_RF_LISTENING) {
unsigned char fi = fich.getFI(); unsigned char fi = fich.getFI();
if (fi == YSF_FI_TERMINATOR) if (fi == YSF_FI_TERMINATOR)
return false; return false;
if (m_sqlEnabled) { if (m_sqlEnabled) {
bool sql = fich.getSQL(); if (!m_lastSQL || m_lastSQ != m_sqlValue)
unsigned char value = fich.getSQ();
if (!sql || value != m_sqlValue)
return false; return false;
} }
@@ -174,10 +177,16 @@ bool CYSFControl::writeModem(unsigned char *data, unsigned int len)
openFile(); openFile();
#endif #endif
} }
}
if (m_rfState != RS_RF_AUDIO) if (m_rfState != RS_RF_AUDIO)
return false; return false;
if (m_sqlEnabled) {
if (!m_lastSQL || m_lastSQ != m_sqlValue)
return false;
}
if (valid) if (valid)
m_lastMR = fich.getMR(); m_lastMR = fich.getMR();

View File

@@ -75,6 +75,8 @@ private:
unsigned char* m_netDest; unsigned char* m_netDest;
unsigned char* m_lastFrame; unsigned char* m_lastFrame;
bool m_lastFrameValid; bool m_lastFrameValid;
bool m_lastSQL;
unsigned char m_lastSQ;
unsigned char m_lastMode; unsigned char m_lastMode;
unsigned char m_lastMR; unsigned char m_lastMR;
unsigned char m_netN; unsigned char m_netN;