/** * @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 #include #include #include #include #include "GFS_map_cont.h" #include "logger.h" namespace GuezMinelayerProcessing { class DdsHandler; class ZSSI_WI_Minenfeld_Interpreter; class HandlerMinelayerData : public QObject , protected AreaEffectSimulation::Interface::Ftc::MineAreaModifyFromCtaDataReplyHandler { Q_OBJECT public: explicit HandlerMinelayerData(const std::shared_ptr &ddsHandler, QObject *parent = nullptr); ~HandlerMinelayerData(); bool init(); void onMineAreaModifyFromCtaDataReply(const Core::FunctionReplyObject &replyObject) override final; 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: 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; std::shared_ptr m_aesFtc; LtsCoordTrans::UtmCoordinate m_baseCoord; ZSSI_WI_Minenfeld_Interpreter *m_minefieldInterpreter; QTimer *m_minefieldInterpreterTimer; NGL::INGLLogger &m_logger; }; } // namespace GuezMinelayerProcessing