/** * Handle incoming ETS Tetra Telegrams and convert them to dds data topics * $Id$ * $HeadURL$ * $Author$ * Created by Christian Ehrlicher, SLSE, 2016-04-14 */ #pragma once #include #include "recv_from_tab.h" #include "dds_handler.h" #include "pdm_handler.h" #include "ism_handler.h" #include "logger.h" class QTimer; namespace TrainingAreaBase { class AesStateHandler; class RecvFromDdsAes; class MainHandler; class PositionHandler; class SendToDds : public QObject, public RecvFromTab { Q_OBJECT public: explicit SendToDds(MainHandler *mainHandler); void rxData(const TetraIcd::ManipulationReport &inData) override; void rxData(const TetraIcd::EquipmentOperationalState &inData) override; void rxData(const TetraIcd::EquipmentConfigurationReport &inData) override; void rxData(const TetraIcd::CtaDataError &inData) override; void rxData(const TetraIcd::PositionReport &inData) override; void rxData(const TetraIcd::PositionReportWithMountedEquipments &inData) override; void rxData(const TetraIcd::MineTriggered &inData) override; void rxData(const TetraIcd::DefinitionIed &inData) override; void rxData(const TetraIcd::StateIed &inData) override; void rxData(const TetraIcd::DusSingleMineState &inData) override; void rxData(const TetraIcd::StateChangeDirect &inData) override; void rxData(const TetraIcd::StateChangeIndirect &inData) override; void rxData(const TetraIcd::OperatorAction &inData) override; void rxData(const TetraIcd::StateChange &inData) override; void rxData(const TetraIcd::FunctionalAreaEntry &inData) override; void rxData(const TetraIcd::SpecialSensorData &inData) override; void rxData(const TetraIcd::MinelayerTrailerData &inData) override; void rxData(const TetraIcd::MinelayerThrowerData &inData) override; void rxData(const TetraIcd::MinelayerTrailerPosition &inData) override; void rxData(const TetraIcd::BiteReport &inData) override; void rxData(const TetraIcd::EquipmentEvent &inData) override; void rxData(const TetraIcd::EquipmentGearAssignment &inData) override; void rxData(const TetraIcd::EquipmentGearChargeState &inData) override; void rxData(const TetraIcd::EquipmentGearEvent &inData) override; void rxData(const TetraIcd::ParticipantSwVersions &inData) override; void rxData(const TetraIcd::EquipmentMessageOC &inData) override; void rxData(const TetraIcd::OpaquePayloadDataIn &inData) override; void rxData(const TetraIcd::ParticipantModeReport &inData) override; void rxData(const TetraIcd::ParticipantConfigurationReport & inData) override; void rxData(const TetraIcd::EmergencyCall &inData) override; void rxData(const TetraIcd::SanitationRepair &inData) override; void rxData(const TetraIcd::SanitaryMaterialStockReport &inData) override; void rxData(const TetraIcd::Sanitation &inData) override; void rxData(const TetraIcd::ApacheLaserDesignation &inData) override; void rxData(const TetraIcd::SelectiveReammunition &inData) override { Q_UNUSED(inData); return; } void rxData(const TetraIcd::BatteryInfo &inData) override; void rxData(const TetraIcd::BatteryAlarm &inData) override; void rxData(const TetraIcd::ServiceControl &inData) override; void rxData(const TetraIcd::RestoreRadioReadiness &inData) override; void rxData(const TetraIcd::UAVRadioLinkConnectionStatus &inData) override; void rxData(const TetraIcd::UAVStatus &inData) override; void rxData(const TetraIcd::UAVMissionStatus &inData) override; private: template bool setPosition(T &data, const TetraIcd::AbsolutePosition &geoPos, const TetraIcd::RelativePosition &relPos, const TetraIcd::OpsPosition &opsPos, const qint64 timeStamp = 0) const; template bool assignStateChangeBase(const S &inData, T &outData); template bool setPosition2d(T &data, const TetraIcd::RelativePosition &relPos) const; template void ctasErrorPosition(const S &data); template void checkTimeStamp(const S &data); QHash m_uniqueId2EquipmentNumber; std::shared_ptr ism() const; std::shared_ptr pdm() const; template void publish(const T &data); void onEmergencyCallTimerTimeout(int issi); void onPvSanUniqueIdMapping(int uniqueId, int equipNo, qint64 sampleTime); private: MainHandler *m_mainHandler; std::shared_ptr m_dtsTab; const std::shared_ptr m_aesStateHandler; const std::shared_ptr m_aesHandler; std::shared_ptr m_posHandler; QMap m_emergencyCallTimer; LOGGER_T m_logger; }; } // namespace TrainingAreaBase