#pragma once #include #include #include "ppm_handler.h" #include "aes_handler.h" #include "pdm_handler.h" #include "logger.h" // Forward: namespace LtsCoordTrans { struct UtmCoordinate; } namespace AdlerJson { enum class ScenarioStatus // Szenarstatus { NONE , INACTIVE , // Inaktiv PLANNED , // Geplant ACTIVE , // Aktiv STOPPED // Gestoppt }; QString statusToStr(ScenarioStatus status); ScenarioStatus strToStatus(QString status); /** * @brief Convert (relative) Flugbahnpunkt to EXCON coordinate system * @param fbPos Flugbahnpunkt to be converted. * @param transformMatrix QTransform to be applied (most likely rotation). * @param utmLaunch launch coordinate for debugging purpose * @param logger to be used. * @return Coordinate transformed (rotated) in EXCON coordinate system. */ static Core::RelativePositionRelativeTime convertFlugbahnpunkt(const Flugbahnpunkt &fbPos, const QTransform &transformMatrix, const LtsCoordTrans::UtmCoordinate &utmLaunch, LOGGER_T logger); class JsonDispatcher; class SAAInterface : public QObject , protected AreaEffectSimulation::Interface::Ftc::TrajectoryAdlerModifyReplyHandler { Q_OBJECT public: SAAInterface(int wsId, int partyId, const QString& saaName, const QString& szenarName, bool isVerbund, QObject *parent = nullptr); bool init(std::shared_ptr ppmHandler, std::shared_ptr pdmHandler, std::shared_ptr aesHandler, std::shared_ptr dtsTab); int getWsId(){ return m_wsId; }; void setWsId(int wsId){ m_wsId = wsId;}; int getPartyId(){ return m_partyId; }; void setPartyId(int partyId){ m_partyId = partyId; }; QString getSAAName(){ return m_saaName; }; //QString getSAAName(){ return QStringLiteral("SAA.GUEZ.DE"); }; void setSaaName(const QString& saaName){ m_saaName = saaName; }; //void setSaaName(const QString& saaName){ Q_UNUSED(saaName); m_saaName = QStringLiteral("SAA@GUEZ.de"); }; QString getSzenarName() {return m_szenarName; } void setSzenarName(const QString &szenarName) { m_szenarName = szenarName; } Szenarstatus getStatus(){ return m_status; }; void setStatus(Szenarstatus status); void setIsVerbund(bool isVerbund) { m_isVerbund = isVerbund; } bool getIsVerbund(){ return m_isVerbund; } void setIsAlive(bool isAlive) { m_isAlive = isAlive; } bool getIsAlive(){ return m_isAlive; } //parse functions that trigger other services void parseFlugbahndaten(const Flugbahndaten &flugbahndaten, int aesItemId, int exposionId, const Core::GeoPosition &positionLaunch); template void rxData (const T &data ); private: void onTrajectoryAdlerModifyReply(const Core::FunctionReplyObject &reply) override; int m_wsId; int m_partyId; QString m_saaName; QString m_szenarName; Szenarstatus m_status; bool m_isVerbund; bool m_isAlive=false; //int m_currentRandomNumber{0}; //DDS std::shared_ptr m_ppmHandler; std::shared_ptr m_pdmHandler; std::shared_ptr m_aesHandler; std::shared_ptr m_ftcAes; std::shared_ptr m_dtsTab; }; }