diff --git a/src/blackmisc/aviotransponder.cpp b/src/blackmisc/aviotransponder.cpp index fd9e263f1..5e1f854c3 100644 --- a/src/blackmisc/aviotransponder.cpp +++ b/src/blackmisc/aviotransponder.cpp @@ -84,6 +84,53 @@ namespace BlackMisc return m; } + /* + * Mode as readable string + */ + void CTransponder::setModeAsString(const QString &m) + { + if (m == "Ident") + { + this->setTransponderMode(StateIdent); + } + else if (m == "Standby") + { + this->setTransponderMode(StateStandby); + } + else if (m == "Mode C") + { + this->setTransponderMode(ModeC); + } + else if (m == "Mode S") + { + this->setTransponderMode(ModeS); + } + else if (m == "Mil.Mode 1") + { + this->setTransponderMode(ModeMil1); + } + else if (m == "Mil.Mode 2") + { + this->setTransponderMode(ModeMil2); + } + else if (m == "Mil.Mode 3") + { + this->setTransponderMode(ModeMil3); + } + else if (m == "Mil.Mode 4") + { + this->setTransponderMode(ModeMil4); + } + else if (m == "Mil.Mode 5") + { + this->setTransponderMode(ModeMil5); + } + else + { + throw std::range_error("Illegal Transponder Mode"); + } + } + /* * Formatted transponder code */ diff --git a/src/blackmisc/aviotransponder.h b/src/blackmisc/aviotransponder.h index ef66f4a02..ccff84aa3 100644 --- a/src/blackmisc/aviotransponder.h +++ b/src/blackmisc/aviotransponder.h @@ -139,7 +139,20 @@ namespace BlackMisc * \param transponderCode * \param transponderMode */ - CTransponder(const QString &name, const QString &transponderCode, TransponderMode transponderMode) : + CTransponder(const QString &name, qint32 transponderCode, QString transponderMode) : + CAvionicsBase(name), m_transponderCode(transponderCode), m_transponderMode(StateStandby) + { + this->setModeAsString(transponderMode); + this->validate(true); + } + + /*! + * \brief Constructor + * \param name + * \param transponderCode + * \param transponderMode + */ + CTransponder(const QString &name, QString transponderCode, TransponderMode transponderMode) : CAvionicsBase(name), m_transponderCode(0), m_transponderMode(transponderMode) { bool ok = false; @@ -148,6 +161,22 @@ namespace BlackMisc this->validate(true); } + /*! + * \brief Constructor + * \param name + * \param transponderCode + * \param transponderMode + */ + CTransponder(const QString &name, QString transponderCode, QString transponderMode) : + CAvionicsBase(name), m_transponderCode(0), m_transponderMode(StateStandby) + { + bool ok = false; + this->m_transponderCode = transponderCode.toUInt(&ok); + if (!ok) this->m_transponderCode = -1; // will cause assert / exception + this->setModeAsString(transponderMode); + this->validate(true); + } + /*! * \brief QVariant, required for DBus QVariant lists * \return @@ -160,13 +189,20 @@ namespace BlackMisc /*! * \brief Transponder mode as string * \return - * \throws std::range_erros */ QString getModeAsString() const; + /*! + * \brief Transponder mode as string + * \param mode + * \throws std::range_error + */ + void setModeAsString(const QString &mode); + /*! * \brief Transponder mode * \return + * \throws std::range_error */ TransponderMode getTransponderMode() const {