/** * @RDE_HEADER@ * Handler for incoming data from minelayer trialer/thrower and thier lane data * $Id$ * $HeadURL$ * $Author$ * created by Philipp Dassow, SLEA, 2017-04-06 */ #pragma once #include #include #include #if BUILD_RTI #include #include #endif #include #include #include "GFS_map_cont.h" #include "logger.h" namespace GuezMinelayerProcessing { class DdsHandler; class ZSSI_WI_Minenfeld_Interpreter; class HandlerMinelayerData : public QObject #if BUILD_RTI , protected AreaEffectSimulation::Interface::Ftc::MineAreaModifyFromCtaDataReplyHandler #endif { Q_OBJECT public: explicit HandlerMinelayerData(const std::shared_ptr &ddsHandler, QObject *parent = nullptr); ~HandlerMinelayerData(); bool init(); #if BUILD_RTI void onMineAreaModifyFromCtaDataReply(const Core::FunctionReplyObject &replyObject) override final; #endif private slots: void onSpecialSensorDataChanged(const TrainingAreaBase::SpecialSensorData &data, DataModification modType); void onMinelayerTrailerData(const TrainingAreaBase::MinelayerTrailerData &data, DataModification modType); void onMinelayerThrowerData(const TrainingAreaBase::MinelayerThrowerData &data, DataModification modType); void onSendMinefield(const wirkfeld_minensperre_rt &minefield, int fzArt); void onStartMinefieldInterpreter (); private: NGL::INGLLogger &m_logger; template void convertMinelayerDataToXdrData(const TrainingAreaBase::MinelayerTrailerData &inData, T &outData); Core::GeoPosition2D geographicFromRelative(const gps_position_rt &position) const; gps_position_rt relativeFromGeographic(double lon, double lat); int partyIdFromEquipmentNumber(int eqNumber) const; std::shared_ptr m_ddsHandler; std::shared_ptr m_tabDtc; std::shared_ptr m_ppmDtc; #if BUILD_RTI std::shared_ptr m_aesFtc; #endif LtsCoordTrans::UtmCoordinate m_baseCoord; ZSSI_WI_Minenfeld_Interpreter *m_minefieldInterpreter; QTimer *m_minefieldInterpreterTimer; }; } // namespace GuezMinelayerProcessing