diff --git a/samples/blackmiscdbus/servicetool.cpp b/samples/blackmiscdbus/servicetool.cpp index d88e40fa7..3b0097bc5 100644 --- a/samples/blackmiscdbus/servicetool.cpp +++ b/samples/blackmiscdbus/servicetool.cpp @@ -255,7 +255,8 @@ namespace BlackMiscTest // on the client's side TestServiceInterface testserviceInterface(Testservice::ServiceName, Testservice::ServicePath, connection); - CSpeed speed(200, BlackMisc::PhysicalQuantities::CSpeedUnit::km_h()); + CSpeed speed(200, CSpeedUnit::km_h()); + CSpeed speedNull(0, CSpeedUnit::nullUnit()); CAltitude al(1000, CAltitude::MeanSeaLevel, CLengthUnit::ft()); QTextStream qtin(stdin); QString line; @@ -289,7 +290,8 @@ namespace BlackMiscTest // PQs testserviceInterface.receiveSpeed(speed); qDebug() << "Send speed via interface" << speed; - + testserviceInterface.receiveSpeed(speedNull); + qDebug() << "Send null speed via interface" << speedNull; speed.switchUnit(CSpeedUnit::kts()); testserviceInterface.receiveSpeed(speed); qDebug() << "Send speed via interface" << speed; @@ -367,8 +369,22 @@ namespace BlackMiscTest qDebug() << "Pinged ATC station via interface" << ((station == stationReceived) ? "OK" : "ERROR!") << stationReceived; + CUser pingUser("223344", "Ping Me user"); + CUser userReceived = testserviceInterface.pingUser(pingUser); + qDebug() << "Pinged user via interface" + << ((userReceived == pingUser) ? "OK" : "ERROR!") << userReceived; + CAircraftSituation situation; + CAircraftSituation situationReceived = testserviceInterface.pingSituation(situation); + qDebug() << "Pinged situation via interface" + << ((situation == situationReceived) ? "OK" : "ERROR!") << situationReceived; + + CTransponder transponderReceived = testserviceInterface.pingTransponder(transponder); + qDebug() << "Pinged transponder via interface" + << ((transponderReceived == transponder) ? "OK" : "ERROR!") << transponderReceived; + CAircraft aircraft(callsign, CUser("123456", "Joe Pilot"), situation); + aircraft.setTransponder(transponder); CAircraft aircraftReceived = testserviceInterface.pingAircraft(aircraft); qDebug() << "Pinged aircraft via interface" << ((aircraft == aircraftReceived) ? "OK" : "ERROR!") << aircraftReceived; diff --git a/samples/blackmiscdbus/testservice.cpp b/samples/blackmiscdbus/testservice.cpp index d97821dac..7154fc034 100644 --- a/samples/blackmiscdbus/testservice.cpp +++ b/samples/blackmiscdbus/testservice.cpp @@ -300,6 +300,33 @@ namespace BlackMiscTest return altitude; } + /* + * Ping user + */ + CUser Testservice::pingUser(const CUser &user) + { + qDebug() << "Pid:" << ServiceTool::getPid() << "ping user:" << user; + return user; + } + + /* + * Ping situation + */ + BlackMisc::Aviation::CAircraftSituation Testservice::pingSituation(const BlackMisc::Aviation::CAircraftSituation &situation) + { + qDebug() << "Pid:" << ServiceTool::getPid() << "ping situation:" << situation; + return situation; + } + + /* + * Ping transponder + */ + BlackMisc::Aviation::CTransponder Testservice::pingTransponder(const BlackMisc::Aviation::CTransponder &transponder) + { + qDebug() << "Pid:" << ServiceTool::getPid() << "ping transponder:" << transponder; + return transponder; + } + /* * Ping ATC station */ diff --git a/samples/blackmiscdbus/testservice.h b/samples/blackmiscdbus/testservice.h index 406f48ce0..79179d815 100644 --- a/samples/blackmiscdbus/testservice.h +++ b/samples/blackmiscdbus/testservice.h @@ -100,15 +100,24 @@ namespace BlackMiscTest //! Receive an value map void receiveValueMap(const BlackMisc::CPropertyIndexVariantMap &valueMap) const; - //! Receive speed + //! Ping speed BlackMisc::PhysicalQuantities::CSpeed pingSpeed(const BlackMisc::PhysicalQuantities::CSpeed &speed); - //! Receive altitude + //! Ping altitude BlackMisc::Aviation::CAltitude pingAltitude(const BlackMisc::Aviation::CAltitude &altitude); + //! Ping user + BlackMisc::Network::CUser pingUser(const BlackMisc::Network::CUser &user); + + //! Ping situation + BlackMisc::Aviation::CAircraftSituation pingSituation(const BlackMisc::Aviation::CAircraftSituation &situation); + //! Ping ATC station BlackMisc::Aviation::CAtcStation pingAtcStation(const BlackMisc::Aviation::CAtcStation &station); + //! Ping transponder + BlackMisc::Aviation::CTransponder pingTransponder(const BlackMisc::Aviation::CTransponder &transponder); + //! Ping aircraft BlackMisc::Aviation::CAircraft pingAircraft(const BlackMisc::Aviation::CAircraft &aircraft); diff --git a/samples/blackmiscdbus/testservice_interface.h b/samples/blackmiscdbus/testservice_interface.h index f9f65b4c9..8b6034fe4 100644 --- a/samples/blackmiscdbus/testservice_interface.h +++ b/samples/blackmiscdbus/testservice_interface.h @@ -94,6 +94,27 @@ namespace BlackMiscTest return asyncCallWithArgumentList(QLatin1String("pingAltitude"), argumentList); } + inline QDBusPendingReply pingSituation(BlackMisc::Aviation::CAircraftSituation situation) + { + QList argumentList; + argumentList << QVariant::fromValue(situation); + return asyncCallWithArgumentList(QLatin1String("pingSituation"), argumentList); + } + + inline QDBusPendingReply pingUser(BlackMisc::Network::CUser user) + { + QList argumentList; + argumentList << QVariant::fromValue(user); + return asyncCallWithArgumentList(QLatin1String("pingUser"), argumentList); + } + + inline QDBusPendingReply pingTransponder(BlackMisc::Aviation::CTransponder transponder) + { + QList argumentList; + argumentList << QVariant::fromValue(transponder); + return asyncCallWithArgumentList(QLatin1String("pingTransponder"), argumentList); + } + inline QDBusPendingReply pingAtcStation(BlackMisc::Aviation::CAtcStation station) { QList argumentList; diff --git a/src/blackmisc/aviation/avionicsbase.h b/src/blackmisc/aviation/avionicsbase.h index 305c75b01..8dd7e0476 100644 --- a/src/blackmisc/aviation/avionicsbase.h +++ b/src/blackmisc/aviation/avionicsbase.h @@ -15,7 +15,6 @@ namespace BlackMisc { - namespace Aviation { @@ -29,43 +28,30 @@ namespace BlackMisc public Mixin::CompareByTuple, public Mixin::String { - protected: - QString m_name; //!< name of the unit + public: + //! Name + QString getName() const { return this->m_name; } - //! \brief Constructor + //! Are set values valid? + virtual bool validValues() const { return true; } + + protected: + //! Constructor CAvionicsBase(const QString &name) : m_name(name) {} - //! Destructor - virtual ~CAvionicsBase() = default; + //! Set name + void setName(const QString &name) { this->m_name = name; } - //! \brief Set name - void setName(const QString &name) - { - this->m_name = name; - } - - public: //! \copydoc CValueObject::convertToQString QString convertToQString(bool i18n = false) const { Q_UNUSED(i18n); return ""; } - //! \brief Name - QString getName() const - { - return this->m_name; - } - - //! \brief Are set values valid? - virtual bool validValues() const - { - return true; - } - private: + QString m_name; //!< name of the unit BLACK_ENABLE_TUPLE_CONVERSION(CAvionicsBase) }; - } -} + } // namespace +} // namespace BLACK_DECLARE_TUPLE_CONVERSION(BlackMisc::Aviation::CAvionicsBase, (o.m_name)) diff --git a/src/blackmisc/aviation/comsystem.h b/src/blackmisc/aviation/comsystem.h index 0c9155af6..df7489798 100644 --- a/src/blackmisc/aviation/comsystem.h +++ b/src/blackmisc/aviation/comsystem.h @@ -145,10 +145,8 @@ namespace BlackMisc return isValidCivilAviationFrequency(f) || isValidMilitaryFrequency(f); } - /*! - * Round to channel spacing, set MHz as unit - * \see ChannelSpacing - */ + //! Round to channel spacing, set MHz as unit + //! \see ChannelSpacing static void roundToChannelSpacing(BlackMisc::PhysicalQuantities::CFrequency &frequency, ChannelSpacing channelSpacing); //! Is compareFrequency within channel spacing of setFrequency @@ -161,10 +159,8 @@ namespace BlackMisc private: ChannelSpacing m_channelSpacing = ChannelSpacing25KHz; //!< channel spacing - /*! - * Give me channel spacing in KHz - * \remarks Just a helper method, that is why no CFrequency is returned - */ + //! Give me channel spacing in KHz + //! \remarks Just a helper method, that is why no CFrequency is returned static double channelSpacingToFrequencyKHz(ChannelSpacing channelSpacing); BLACK_ENABLE_TUPLE_CONVERSION(CComSystem) diff --git a/src/blackmisc/aviation/modulator.cpp b/src/blackmisc/aviation/modulator.cpp index dd3819d9e..4065c59c8 100644 --- a/src/blackmisc/aviation/modulator.cpp +++ b/src/blackmisc/aviation/modulator.cpp @@ -23,12 +23,6 @@ namespace BlackMisc namespace Aviation { - template - bool CModulator::isDefaultValue() const - { - return (this->m_frequencyActive == FrequencyNotSet()); - } - template void CModulator::toggleActiveStandby() { @@ -37,66 +31,6 @@ namespace BlackMisc this->m_frequencyStandby = a; } - template - BlackMisc::PhysicalQuantities::CFrequency CModulator::getFrequencyActive() const - { - return this->m_frequencyActive; - } - - template - BlackMisc::PhysicalQuantities::CFrequency CModulator::getFrequencyStandby() const - { - return this->m_frequencyStandby; - } - - template - void CModulator::setFrequencyActive(const BlackMisc::PhysicalQuantities::CFrequency &frequency) - { - this->m_frequencyActive = frequency; - } - - template - void CModulator::setFrequencyStandby(const BlackMisc::PhysicalQuantities::CFrequency &frequency) - { - this->m_frequencyStandby = frequency; - } - - template - qint32 CModulator::getVolumeOutput() const - { - return this->m_volumeOutput; - } - - template - qint32 CModulator::getVolumeInput() const - { - return this->m_volumeInput; - } - - template - void CModulator::setVolumeOutput(qint32 volume) - { - this->m_volumeOutput = volume; - } - - template - void CModulator::setVolumeInput(qint32 volume) - { - this->m_volumeInput = volume; - } - - template - bool CModulator::isEnabled() const - { - return this->m_enabled; - } - - template - void CModulator::setEnabled(bool enable) - { - this->m_enabled = enable; - } - template CVariant CModulator::propertyByIndex(const CPropertyIndex &index) const { @@ -151,14 +85,6 @@ namespace BlackMisc } } - template - CModulator::CModulator() : - CModulator::CValueObject("default") {} - - template - CModulator::CModulator(const QString &name, const BlackMisc::PhysicalQuantities::CFrequency &activeFrequency, const BlackMisc::PhysicalQuantities::CFrequency &standbyFrequency) : - CModulator::CValueObject(name), m_frequencyActive(activeFrequency), m_frequencyStandby(standbyFrequency) {} - template QString CModulator::convertToQString(bool i18n) const { @@ -168,108 +94,6 @@ namespace BlackMisc return s; } - template - void CModulator::setFrequencyActiveKHz(double frequencyKHz) - { - this->m_frequencyActive = BlackMisc::PhysicalQuantities::CFrequency(frequencyKHz, BlackMisc::PhysicalQuantities::CFrequencyUnit::kHz()); - } - - template - void CModulator::setFrequencyStandbyKHz(double frequencyKHz) - { - this->m_frequencyStandby = BlackMisc::PhysicalQuantities::CFrequency(frequencyKHz, BlackMisc::PhysicalQuantities::CFrequencyUnit::kHz()); - } - - - template - void CModulator::setFrequencyActiveMHz(double frequencyMHz) - { - frequencyMHz = Math::CMathUtils::round(frequencyMHz, 3); - this->m_frequencyActive = BlackMisc::PhysicalQuantities::CFrequency(frequencyMHz, BlackMisc::PhysicalQuantities::CFrequencyUnit::MHz()); - } - - template - void CModulator::setFrequencyStandbyMHz(double frequencyMHz) - { - frequencyMHz = Math::CMathUtils::round(frequencyMHz, 3); - this->m_frequencyStandby = BlackMisc::PhysicalQuantities::CFrequency(frequencyMHz, BlackMisc::PhysicalQuantities::CFrequencyUnit::MHz()); - } - - template - const QString &CModulator::NameCom1() - { - static QString n("COM1"); - return n; - } - - template - const QString &CModulator::NameCom2() - { - static QString n("COM2"); - return n; - } - - template - const QString &CModulator::NameCom3() - { - static QString n("COM3"); - return n; - } - - template - const QString &CModulator::NameNav1() - { - static QString n("NAV1"); - return n; - } - - template - const QString &CModulator::NameNav2() - { - static QString n("NAV2"); - return n; - } - - template - const QString &CModulator::NameNav3() - { - static QString n("NAV3"); - return n; - } - - template - const QString &CModulator::NameAdf1() - { - static QString n("ADF1"); - return n; - } - - template - const QString &CModulator::NameAdf2() - { - static QString n("ADF2"); - return n; - } - - template - const BlackMisc::PhysicalQuantities::CFrequency &CModulator::FrequencyNotSet() - { - static BlackMisc::PhysicalQuantities::CFrequency f; - return f; - } - - template - AVIO const *CModulator::derived() const - { - return static_cast(this); - } - - template - AVIO *CModulator::derived() - { - return static_cast(this); - } - // see here for the reason of thess forward instantiations // http://www.parashift.com/c++-faq/separate-template-class-defn-from-decl.html template class CModulator; diff --git a/src/blackmisc/aviation/modulator.h b/src/blackmisc/aviation/modulator.h index 4b004be50..f23cf0d96 100644 --- a/src/blackmisc/aviation/modulator.h +++ b/src/blackmisc/aviation/modulator.h @@ -22,10 +22,6 @@ namespace BlackMisc namespace Aviation { - class CComSystem; - class CNavSystem; - class CAdfSystem; - //! Base class for COM, NAV, Squawk units. template class CModulator : public CValueObject, CAvionicsBase> { @@ -41,126 +37,194 @@ namespace BlackMisc }; //! Default value? - virtual bool isDefaultValue() const; + virtual bool isDefaultValue() const + { + return (this->m_frequencyActive == FrequencyNotSet()); + } //! Toggle active and standby frequencies void toggleActiveStandby(); //! Active frequency - BlackMisc::PhysicalQuantities::CFrequency getFrequencyActive() const; + BlackMisc::PhysicalQuantities::CFrequency getFrequencyActive() const + { + return this->m_frequencyActive; + } //! Standby frequency - BlackMisc::PhysicalQuantities::CFrequency getFrequencyStandby() const; + BlackMisc::PhysicalQuantities::CFrequency getFrequencyStandby() const + { + return this->m_frequencyStandby; + } //! Set active frequency - virtual void setFrequencyActive(const BlackMisc::PhysicalQuantities::CFrequency &frequency); + virtual void setFrequencyActive(const BlackMisc::PhysicalQuantities::CFrequency &frequency) + { + this->m_frequencyActive = frequency; + } //! Set standby frequency - virtual void setFrequencyStandby(const BlackMisc::PhysicalQuantities::CFrequency &frequency); + virtual void setFrequencyStandby(const BlackMisc::PhysicalQuantities::CFrequency &frequency) + { + this->m_frequencyStandby = frequency; + } //! Output volume 0..100 - qint32 getVolumeOutput() const; + int getVolumeOutput() const { return this->m_volumeOutput; } //! Input volume 0..100 - qint32 getVolumeInput() const; + int getVolumeInput() const { return this->m_volumeInput; } //! Output volume 0.100 - void setVolumeOutput(qint32 volume); + void setVolumeOutput(int volume) { this->m_volumeOutput = volume; } //! Input volume 0..100 - void setVolumeInput(qint32 volume); + void setVolumeInput(int volume) { this->m_volumeInput = volume; } //! Enabled? - bool isEnabled() const; + bool isEnabled() const { return this->m_enabled;} //! Enabled? - void setEnabled(bool enable); + void setEnabled(bool enable) { this->m_enabled = enable;} //! \copydoc CValueObject::propertyByIndex - CVariant propertyByIndex(const BlackMisc::CPropertyIndex &index) const; + virtual CVariant propertyByIndex(const BlackMisc::CPropertyIndex &index) const override; //! \copydoc CValueObject::setPropertyByIndex - void setPropertyByIndex(const CVariant &variant, const BlackMisc::CPropertyIndex &index); - - //! \copydoc CValueObject::convertToQString - QString convertToQString(bool i18n = false) const; + virtual void setPropertyByIndex(const CVariant &variant, const BlackMisc::CPropertyIndex &index) override; protected: //! Default constructor - CModulator(); + CModulator() : CModulator::CValueObject("default") {} //! Constructor - CModulator(const QString &name, const BlackMisc::PhysicalQuantities::CFrequency &activeFrequency, const BlackMisc::PhysicalQuantities::CFrequency &standbyFrequency); + CModulator(const QString &name, const BlackMisc::PhysicalQuantities::CFrequency &activeFrequency, const BlackMisc::PhysicalQuantities::CFrequency &standbyFrequency) : + CModulator::CValueObject(name), m_frequencyActive(activeFrequency), m_frequencyStandby(standbyFrequency) {} + + //! \copydoc CValueObject::convertToQString + virtual QString convertToQString(bool i18n = false) const override; //! Set active frequency - void setFrequencyActiveKHz(double frequencyKHz); + void setFrequencyActiveKHz(double frequencyKHz) + { + this->m_frequencyActive = BlackMisc::PhysicalQuantities::CFrequency(frequencyKHz, BlackMisc::PhysicalQuantities::CFrequencyUnit::kHz()); + } //! Set standby frequency - void setFrequencyStandbyKHz(double frequencyKHz); + void setFrequencyStandbyKHz(double frequencyKHz) + { + this->m_frequencyStandby = BlackMisc::PhysicalQuantities::CFrequency(frequencyKHz, BlackMisc::PhysicalQuantities::CFrequencyUnit::kHz()); + } //! Set active frequency - virtual void setFrequencyActiveMHz(double frequencyMHz); + virtual void setFrequencyActiveMHz(double frequencyMHz) + { + frequencyMHz = Math::CMathUtils::round(frequencyMHz, 3); + this->m_frequencyActive = BlackMisc::PhysicalQuantities::CFrequency(frequencyMHz, BlackMisc::PhysicalQuantities::CFrequencyUnit::MHz()); + } //! Set standby frequency - virtual void setFrequencyStandbyMHz(double frequencyMHz); + virtual void setFrequencyStandbyMHz(double frequencyMHz) + { + frequencyMHz = Math::CMathUtils::round(frequencyMHz, 3); + this->m_frequencyStandby = BlackMisc::PhysicalQuantities::CFrequency(frequencyMHz, BlackMisc::PhysicalQuantities::CFrequencyUnit::MHz()); + } //! COM1 - static const QString &NameCom1(); + static const QString &NameCom1() + { + static const QString n("COM1"); + return n; + } //! COM2 - static const QString &NameCom2(); + static const QString &NameCom2() + { + static const QString n("COM2"); + return n; + } //! COM3 - static const QString &NameCom3(); + static const QString &NameCom3() + { + static const QString n("COM3"); + return n; + } //! NAV1 - static const QString &NameNav1(); + static const QString &NameNav1() + { + static const QString n("NAV1"); + return n; + } //! NAV2 - static const QString &NameNav2(); + static const QString &NameNav2() + { + static const QString n("NAV2"); + return n; + } //! NAV3 - static const QString &NameNav3(); + static const QString &NameNav3() + { + static const QString n("NAV3"); + return n; + } //! ADF1 - static const QString &NameAdf1(); + static const QString &NameAdf1() + { + static QString n("ADF1"); + return n; + } //! ADF2 - static const QString &NameAdf2(); + static const QString &NameAdf2() + { + static QString n("ADF2"); + return n; + } //! Frequency not set - static const BlackMisc::PhysicalQuantities::CFrequency &FrequencyNotSet(); + static const BlackMisc::PhysicalQuantities::CFrequency &FrequencyNotSet() + { + static const BlackMisc::PhysicalQuantities::CFrequency f(0, BlackMisc::PhysicalQuantities::CFrequencyUnit::nullUnit()); + return f; + } private: BLACK_ENABLE_TUPLE_CONVERSION(CModulator) BlackMisc::PhysicalQuantities::CFrequency m_frequencyActive; //!< active frequency BlackMisc::PhysicalQuantities::CFrequency m_frequencyStandby; //!< standby frequency - qint32 m_volumeInput = 0; //!< volume input - qint32 m_volumeOutput = 0; //!< volume output + int m_volumeInput = 0; //!< volume input + int m_volumeOutput = 0; //!< volume output bool m_enabled = true; //!< is enabled, used e.g. for mute etc. //! Easy access to derived class (CRTP template parameter) - AVIO const *derived() const; + AVIO const *derived() const { return static_cast(this); } //! Easy access to derived class (CRTP template parameter) - AVIO *derived(); + AVIO *derived() { return static_cast(this); } + + //! \cond PRIVATE + class CComSystem; + class CNavSystem; + class CAdfSystem; + + extern template class BLACKMISC_EXPORT_TEMPLATE CModulator; + extern template class BLACKMISC_EXPORT_TEMPLATE CModulator; + extern template class BLACKMISC_EXPORT_TEMPLATE CModulator; + //! \endcond }; - - //! \cond PRIVATE - extern template class BLACKMISC_EXPORT_TEMPLATE CModulator; - extern template class BLACKMISC_EXPORT_TEMPLATE CModulator; - extern template class BLACKMISC_EXPORT_TEMPLATE CModulator; - //! \endcond - - } -} + } // namespace +} // namespace BLACK_DECLARE_TUPLE_CONVERSION_TEMPLATE(BlackMisc::Aviation::CModulator, ( - o.m_frequencyActive, - o.m_frequencyStandby, - o.m_volumeInput , - o.m_volumeOutput, - o.m_enabled - )) + o.m_frequencyActive, + o.m_frequencyStandby, + o.m_volumeInput , + o.m_volumeOutput, + o.m_enabled)) #endif // guard