From 2d48800d900f80f9c9beabe4cfe49065217be3a7 Mon Sep 17 00:00:00 2001 From: f4exb Date: Thu, 11 Aug 2016 01:09:17 +0200 Subject: [PATCH] DSD demod: use more detailed frame status instead of just synchronization indicator --- plugins/channel/demoddsd/dsddemodgui.cpp | 18 ++++++++++++------ plugins/channel/demoddsd/dsddemodgui.h | 2 ++ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/plugins/channel/demoddsd/dsddemodgui.cpp b/plugins/channel/demoddsd/dsddemodgui.cpp index 6ca21eb54..4c463945d 100644 --- a/plugins/channel/demoddsd/dsddemodgui.cpp +++ b/plugins/channel/demoddsd/dsddemodgui.cpp @@ -40,6 +40,15 @@ unsigned int DSDDemodBaudRates::m_rates[] = {2400, 4800}; unsigned int DSDDemodBaudRates::m_nb_rates = 2; unsigned int DSDDemodBaudRates::m_defaultRateIndex = 1; // 4800 bauds +char DSDDemodGUI::m_frameTypes[][3] = { + "--", // no frame sync + "HD", // header frame + "PY", // payload super frame not categorized yet + "VO", // voice super frame + "D1", // data type 1 super frame + "D2", // data type 2 super frame + "EN", // end frame +}; DSDDemodGUI* DSDDemodGUI::create(PluginAPI* pluginAPI, DeviceAPI *deviceAPI) { @@ -440,12 +449,9 @@ void DSDDemodGUI::formatStatusText() m_signalFormat = signalFormatDStar; break; case DSDcc::DSDDecoder::DSDSyncDPMR: - if (m_signalFormat != signalFormatDPMR) - { - memcpy(&m_formatStatusText, " CC: ", 6); - } - sprintf(&m_formatStatusText[6], "%04d", m_dsdDemod->getDecoder().getDPMRDecoder().getColorCode()); - m_formatStatusText[0] = (m_dsdDemod->getDecoder().getDPMRDecoder().hasSync() ? 'S' : '-'); + sprintf(m_formatStatusText, "%s CC: %04d", + m_frameTypes[(int) m_dsdDemod->getDecoder().getDPMRDecoder().getFrameType()], + m_dsdDemod->getDecoder().getDPMRDecoder().getColorCode()); m_signalFormat = signalFormatDPMR; break; default: diff --git a/plugins/channel/demoddsd/dsddemodgui.h b/plugins/channel/demoddsd/dsddemodgui.h index 6bb644ec3..b22d37792 100644 --- a/plugins/channel/demoddsd/dsddemodgui.h +++ b/plugins/channel/demoddsd/dsddemodgui.h @@ -101,6 +101,8 @@ private: MovingAverage m_channelPowerDbAvg; int m_tickCount; + static char m_frameTypes[7][3]; + explicit DSDDemodGUI(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent = NULL); virtual ~DSDDemodGUI();