diff --git a/src/monitor/NodeStatusWnd.h b/src/monitor/NodeStatusWnd.h index a4bcf317..fc61a804 100644 --- a/src/monitor/NodeStatusWnd.h +++ b/src/monitor/NodeStatusWnd.h @@ -41,7 +41,7 @@ using namespace finalcut; // --------------------------------------------------------------------------- #define NODE_STATUS_WIDTH 28 -#define NODE_STATUS_HEIGHT 7 +#define NODE_STATUS_HEIGHT 8 // --------------------------------------------------------------------------- // Class Declaration @@ -99,6 +99,8 @@ private: uint8_t m_channelId; uint32_t m_channelNo; + FLabel m_modeStr{this}; + FLabel m_channelNoLabel{"Ch. No.: ", this}; FLabel m_chanNo{this}; @@ -109,6 +111,8 @@ private: FLabel m_lastTGLabel{"Last TG: ", this}; FLabel m_lastTG{this}; + FLabel m_lastSrcLabel{"Last Src: ", this}; + FLabel m_lastSrc{this}; /// /// @@ -138,13 +142,13 @@ private: FDialog::draw(); if (m_failed) { - setColor(FColor::LightGray, FColor::Red3); + setColor(FColor::LightGray, FColor::LightRed); } else if (m_control) { setColor(FColor::LightGray, FColor::Purple1); } else if (m_tx) { - setColor(FColor::LightGray, FColor::Green1); + setColor(FColor::LightGray, FColor::LightGreen); } else { setColor(FColor::LightGray, FColor::Black); @@ -158,6 +162,10 @@ private: /// void initControls() { + m_modeStr.setGeometry(FPoint(22, 1), FSize(4, 1)); + m_modeStr.setAlignment(Align::Right); + m_modeStr.setEmphasis(); + // channel number { m_channelNoLabel.setGeometry(FPoint(2, 1), FSize(10, 1)); @@ -179,11 +187,19 @@ private: // last TG { - m_lastTGLabel.setGeometry(FPoint(2, 4), FSize(10, 1)); + m_lastTGLabel.setGeometry(FPoint(2, 4), FSize(11, 1)); - m_lastTG.setGeometry(FPoint(11, 4), FSize(8, 1)); + m_lastTG.setGeometry(FPoint(13, 4), FSize(8, 1)); m_lastTG.setText("None"); } + + // last source + { + m_lastSrcLabel.setGeometry(FPoint(2, 5), FSize(11, 1)); + + m_lastSrc.setGeometry(FPoint(13, 5), FSize(8, 1)); + m_lastSrc.setText("None"); + } } /// @@ -260,6 +276,19 @@ private: } else { try { + uint8_t mode = rsp["state"].get(); + switch (mode) { + case modem::STATE_DMR: + m_modeStr.setText("DMR"); + break; + case modem::STATE_P25: + m_modeStr.setText("P25"); + break; + case modem::STATE_NXDN: + m_modeStr.setText("NXDN"); + break; + } + // get remote node state if (rsp["dmrTSCCEnable"].is() && rsp["p25CtrlEnable"].is() && rsp["nxdnCtrlEnable"].is()) { @@ -332,6 +361,20 @@ private: else { ::LogWarning(LOG_HOST, "%s:%u, does not report last TG information"); } + + // report last known transmitted source ID + if (rsp["lastSrcId"].is()) { + uint32_t lastSrcId = rsp["lastSrcId"].get(); + if (lastSrcId == 0) { + m_lastSrc.setText("None"); + } + else { + m_lastSrc.setText(__INT_STR(lastSrcId)); + } + } + else { + ::LogWarning(LOG_HOST, "%s:%u, does not report last source information"); + } } catch (std::exception&) { ::LogWarning(LOG_HOST, "%s:%u, failed to properly handle status");