/** * IsmHandler for WirelessLocationSystem * $Id$ * $HeadURL$ * $Author$ * Created by Christian Ehrlicher, SLSE, 2016-04-14 */ #include "aes_handler.h" #include #include namespace ApHlaJson { /** * @brief * @author Niklas Schmidt * @details Receives AesModifyRequests from HLA and publish them with Ftc for Aes * HLA -> Excon * @param parent */ AesHandler::AesHandler(QObject *parent) : QObject(parent) , m_requestHelper(new LtsUtils::RequestHelper(this)) , m_logger(getLogger("AesHandler")) {} bool AesHandler::init(MainDispatcher* mainDispatcher) { m_ftcAes = AreaEffectSimulation::Interface::Ftc::create(mainDispatcher->ddsHandler()->ddsConnector()); m_dtcPpm = ParticipantManagement::Interface::Dtc::create(mainDispatcher->ddsHandler()->ddsConnector()); if (!m_ftcAes) return false; if (!m_ftcAes->enableAirSupportImpactModify()) { ERROR_LOG(m_logger) << "Can not enableAirSupportImpactModify "; return false; } return true; } bool AesHandler::sendAesModifyRequest(const QJsonObject &data) { int equipmentNumber = data[QStringLiteral("header")].toObject()[QStringLiteral("equipmentNumber")].toInt(); AreaEffectSimulation::AirSupportImpactModifyRequest request; request.chargeTypeId(data[QStringLiteral("chargeTypeId")].toInt()); request.externalId(data[QStringLiteral("eventId")].toInt()); request.name(data[QStringLiteral("name")].toString().toStdString()); request.impactPosition(Core::GeoPosition2D(data[QStringLiteral("impactPosition")].toObject()[QStringLiteral("lon")].toDouble(), data[QStringLiteral("impactPosition")].toObject()[QStringLiteral("lat")].toDouble())); request.flightTime(0); qint64 requestedTime = static_cast(data[QStringLiteral("header")].toObject()[QStringLiteral("timeStamp")].toDouble()); if (requestedTime < QDateTime::currentMSecsSinceEpoch()) requestedTime = QDateTime::currentMSecsSinceEpoch() + 500; request.effectStart(requestedTime); QJsonDocument doc(data); if (equipmentNumber) request.participantId(m_dtcPpm->participantIdByEquipmentNumber(equipmentNumber)); m_requestHelper->startSingleRequest([this, request]() { return m_ftcAes->airSupportImpactModifyRequest(request, this); }); return true; } void AesHandler::onAirSupportImpactModifyReply(const Core::FunctionReplyObject &reply) { m_requestHelper->requestReply(reply); } } // namespace ApHlaJson