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,38 +148,45 @@ 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) {
unsigned char fi = fich.getFI(); m_lastSQL = fich.getSQL();
if (fi == YSF_FI_TERMINATOR) m_lastSQ = fich.getSQ();
return false;
if (m_sqlEnabled) { if (m_rfState == RS_RF_LISTENING) {
bool sql = fich.getSQL(); unsigned char fi = fich.getFI();
unsigned char value = fich.getSQ(); if (fi == YSF_FI_TERMINATOR)
if (!sql || value != m_sqlValue)
return false; return false;
}
m_rfFrames = 0U; if (m_sqlEnabled) {
m_rfErrs = 0U; if (!m_lastSQL || m_lastSQ != m_sqlValue)
m_rfBits = 1U; return false;
m_rfTimeoutTimer.start(); }
m_rfPayload.reset();
m_rfState = RS_RF_AUDIO;
m_minRSSI = m_rssi; m_rfFrames = 0U;
m_maxRSSI = m_rssi; m_rfErrs = 0U;
m_aveRSSI = m_rssi; m_rfBits = 1U;
m_rssiCount = 1U; m_rfTimeoutTimer.start();
m_rfPayload.reset();
m_rfState = RS_RF_AUDIO;
m_minRSSI = m_rssi;
m_maxRSSI = m_rssi;
m_aveRSSI = m_rssi;
m_rssiCount = 1U;
#if defined(DUMP_YSF) #if defined(DUMP_YSF)
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;