From 0d197b5024eb50788fe1954bc85ea6de88fe1535 Mon Sep 17 00:00:00 2001 From: f4exb Date: Tue, 20 Sep 2016 19:35:51 +0200 Subject: [PATCH] DSD demod: YSF: FICH status display --- plugins/channel/demoddsd/dsddecoder.h | 1 + plugins/channel/demoddsd/dsddemodgui.cpp | 47 ++++++++++++++++++++++++ plugins/channel/demoddsd/dsddemodgui.h | 7 +++- 3 files changed, 54 insertions(+), 1 deletion(-) diff --git a/plugins/channel/demoddsd/dsddecoder.h b/plugins/channel/demoddsd/dsddecoder.h index e3a9366d0..83dbe184a 100644 --- a/plugins/channel/demoddsd/dsddecoder.h +++ b/plugins/channel/demoddsd/dsddecoder.h @@ -65,6 +65,7 @@ public: unsigned char getColorCode() const { return m_decoder.getColorCode(); } const DSDcc::DSDDstar& getDStarDecoder() const { return m_decoder.getDStarDecoder(); } const DSDcc::DSDdPMR& getDPMRDecoder() const { return m_decoder.getDPMRDecoder(); } + const DSDcc::DSDYSF& getYSFDecoder() const { return m_decoder.getYSFDecoder(); } void setAudioGain(float gain) { m_decoder.setAudioGain(gain); } void setBaudRate(int baudRate); diff --git a/plugins/channel/demoddsd/dsddemodgui.cpp b/plugins/channel/demoddsd/dsddemodgui.cpp index f40908fdd..2fb0da76c 100644 --- a/plugins/channel/demoddsd/dsddemodgui.cpp +++ b/plugins/channel/demoddsd/dsddemodgui.cpp @@ -52,6 +52,27 @@ char DSDDemodGUI::m_dpmrFrameTypes[][3] = { "EN", // 8: end frame }; +const char * DSDDemodGUI::m_ysfChannelTypeText[4] = { + "HC", //!< Header Channel + "CC", //!< Communications Channel + "TC", //!< Termination Channel + "TT" //!< Test +}; + +const char * DSDDemodGUI::m_ysfDataTypeText[4] = { + "VD1", //!< Voice/Data type 1 + "DFR", //!< Data Full Rate + "VD2", //!< Voice/Data type 2 + "VFR" //!< Voice Full Rate +}; + +const char * DSDDemodGUI::m_ysfCallModeText[4] = { + "GCQ", //!< Group CQ + "RID", //!< Radio ID + "RES", //!< Reserved + "IND" //!< Individual +}; + DSDDemodGUI* DSDDemodGUI::create(PluginAPI* pluginAPI, DeviceAPI *deviceAPI) { DSDDemodGUI* gui = new DSDDemodGUI(pluginAPI, deviceAPI); @@ -510,6 +531,32 @@ void DSDDemodGUI::formatStatusText() m_dsdDemod->getDecoder().getDPMRDecoder().getCalledId()); m_signalFormat = signalFormatDPMR; break; + case DSDcc::DSDDecoder::DSDSyncYSF: + if (m_dsdDemod->getDecoder().getYSFDecoder().getFICHError() == DSDcc::DSDYSF::FICHNoError) + { + sprintf(m_formatStatusText, "%s ", m_ysfChannelTypeText[(int) m_dsdDemod->getDecoder().getYSFDecoder().getFICH().getFrameInformation()]); + } + else + { + sprintf(m_formatStatusText, "E%d ", (int) m_dsdDemod->getDecoder().getYSFDecoder().getFICHError()); + } + sprintf(&m_formatStatusText[3], "%s %s B%d F%d %c%c ", + m_ysfDataTypeText[(int) m_dsdDemod->getDecoder().getYSFDecoder().getFICH().getDataType()], + m_ysfCallModeText[(int) m_dsdDemod->getDecoder().getYSFDecoder().getFICH().getCallMode()], + m_dsdDemod->getDecoder().getYSFDecoder().getFICH().getBlockTotal(), + m_dsdDemod->getDecoder().getYSFDecoder().getFICH().getFrameTotal(), + (m_dsdDemod->getDecoder().getYSFDecoder().getFICH().isNarrowMode() ? 'N' : 'W'), + (m_dsdDemod->getDecoder().getYSFDecoder().getFICH().isInternetPath() ? 'I' : 'L')); + if (m_dsdDemod->getDecoder().getYSFDecoder().getFICH().isSquelchCodeEnabled()) + { + sprintf(&m_formatStatusText[20], "S%02d", m_dsdDemod->getDecoder().getYSFDecoder().getFICH().getSquelchCode()); + } + else + { + strcpy(&m_formatStatusText[20], "S--"); + } + m_signalFormat = signalFormatYSF; + break; default: m_signalFormat = signalFormatNone; m_formatStatusText[0] = '\0'; diff --git a/plugins/channel/demoddsd/dsddemodgui.h b/plugins/channel/demoddsd/dsddemodgui.h index e16c0d74f..96ef81461 100644 --- a/plugins/channel/demoddsd/dsddemodgui.h +++ b/plugins/channel/demoddsd/dsddemodgui.h @@ -84,7 +84,8 @@ private: signalFormatNone, signalFormatDMR, signalFormatDStar, - signalFormatDPMR + signalFormatDPMR, + signalFormatYSF } SignalFormat; Ui::DSDDemodGUI* ui; @@ -112,6 +113,10 @@ private: int m_tickCount; static char m_dpmrFrameTypes[9][3]; + static const char *m_ysfChannelTypeText[4]; + static const char *m_ysfDataTypeText[4]; + static const char *m_ysfCallModeText[4]; + explicit DSDDemodGUI(PluginAPI* pluginAPI, DeviceAPI *deviceAPI, QWidget* parent = NULL); virtual ~DSDDemodGUI();