#pragma once #include "adler_export.h" #include #include #include #include #include #include #include #include namespace AdlerJson { namespace JsonKeys { // root keys inline QString DATA() { return QStringLiteral("data"); } inline QString UUID_() { return QStringLiteral("uuid"); } inline QString TYPE() { return QStringLiteral("type"); } inline QString TYPE_ID() { return QStringLiteral("typeId"); } inline QString TIMESTAMP() { return QStringLiteral("timestamp"); } inline QString VERSION() { return QStringLiteral("version"); } inline QString SENDER() { return QStringLiteral("sender"); } inline QString RECEIVER() { return QStringLiteral("receiver"); } inline QString REFERENCE_UUID() { return QStringLiteral("referenceUuid"); } inline QString AFE() { return QStringLiteral("Afe"); } inline QString PARTY_ID() { return QStringLiteral("partyId"); } inline QString ADLER_VERBUND() { return QStringLiteral("adlerVerbund"); } inline QString SZENAR() { return QStringLiteral("szenar"); } inline QString STATUS() { return QStringLiteral("status"); } // SKD_SAA-EXCON // EX-L15 inline QString JAHR() { return QStringLiteral("jahr"); } inline QString MONAT() { return QStringLiteral("monat"); } inline QString TAG() { return QStringLiteral("tag"); } inline QString STUNDEN() { return QStringLiteral("stunden"); } inline QString MINUTEN() { return QStringLiteral("minuten"); } inline QString SEKUNDEN() { return QStringLiteral("sekunden"); } inline QString ZDS() { return QStringLiteral("zds"); } inline QString ZDM() { return QStringLiteral("zdm"); } inline QString ZVZ() { return QStringLiteral("zvz"); } // Tabelle 2: Auszutauschende fachliche Meldungen inline QString EX_AWES_PLANNING() { return QStringLiteral(" EX-FQ(BA-BB-FK)"); } // Wirkfeldplanung inline QString EX_MANUAL_REPLY() { return QStringLiteral("EX-MQ"); } // Manuelle Quittung inline QString EX_READY_TO_FIRE() { return QStringLiteral("EX-FQ(FB)"); } // Feuerbereit inline QString EX_FIRE() { return QStringLiteral("EX-FQ(FN)"); } // Feuern inline QString EX_FIRED() { return QStringLiteral("EX-FQ(AF)"); } // Abgefeuert inline QString EX_ENFORCEMENT() { return QStringLiteral("EX-FQ(VM)"); } // Vollzugsmeldung inline QString EX_FIRE_HALT() { return QStringLiteral("EX-FH"); } // Feuer HALT / Einstellen inline QString EX_DONT_FIRE() { return QStringLiteral("EX-FQ(nFN)"); } inline QString EX_POSITION_REPORT_FIRE() { return QStringLiteral("EX-SQ(FS)"); } // Stellungsmeldung Feuerstellung inline QString EX_POSITION_REPORT_WEAPON() { return QStringLiteral("EX-SQ(WS)"); } // Stellungsmeldung Waffensystem inline QString EX_POSITION_REPORT_LOADING_PLACE() { return QStringLiteral("EX-SQ(LP)"); } // Stellungsmeldung Ladeplatz inline QString EX_EXPLORATION_RESULTS() { return QStringLiteral("EX-Erkundungsergebnisse"); } // Senden Erkundungsergebnisse inline QString EX_FIRE_FIGHT() { return QStringLiteral("EX-FQ(BA-BB)"); } // Feuerkampf (ohne ADLER Verbund) inline QString EX_POSITION_CHANGED() { return QStringLiteral("EX-Stellungswechsel"); } // Stellungsinformationen (ohne ADLER Verbund) inline QString EX_GUIDING_LINES() { return QStringLiteral("EX-HQ(K)"); } // Fuehrungslinien (Koordinierungsmassnahmen zur Feuerunterstuetzung) inline QString EX_GUIDING_LINES_AND_BOUNDARIES() { return QStringLiteral("EX-HQ(G)"); } // Fuehrungslinien und Grenzen inline QString EX_AQ() { return QStringLiteral("EX-AQ"); } // Freitextmeldung inline QString EX_FLUGBAHNBERECHNUNG() { return QStringLiteral("EX-Flugbahnberechnung"); } // Flugbahnberechnung inline QString EX_FLUGBAHNDATEN() { return QStringLiteral("EX-Flugbahndaten"); } // Flugbahndaten // 3.2 Technische Meldungen // Tabelle 4 inline QString EX_REGISTRATION_REQUEST() { return QStringLiteral("EX-Anmeldung"); } inline QString EX_REGISTRATION_CONFIRMATION() { return QStringLiteral("EX-Anmeldebestaetigung"); } inline QString EX_DEREGISTRATION_REQUEST() { return QStringLiteral("EX-Abmeldung"); } inline QString EX_STATUS() { return QStringLiteral("EX-Status"); } inline QString EX_CONNECTION_TEST_REQUEST() { return QStringLiteral("EX-Verbindungsanfrage"); } inline QString EX_CONNECTION_TEST_REPLY() { return QStringLiteral("EX-Verbindungsantwort"); } inline QString EX_TQ() { return QStringLiteral("EX-TQ"); } // ====================================================================================================== // JsonKeys fuer fachliche Meldungen inline QString FEUERKAMPFREFERENZ() { return QStringLiteral("feuerkampfReferenz"); } inline QString ZIELDATEN() { return QStringLiteral("zieldaten"); } inline QString NUMMER() { return QStringLiteral("nummer"); } inline QString GEOMETRIE() { return QStringLiteral("geometrie"); } inline QString KOORDINATE() { return QStringLiteral("koordinate"); } inline QString KOORDINATEN() { return QStringLiteral("koordinaten"); } inline QString ZIELKOORDINATE() { return QStringLiteral("zielkoordinate"); } inline QString STANDORT() { return QStringLiteral("standort"); } inline QString LATITUDE() { return QStringLiteral("latitude"); } inline QString LONGITUDE() { return QStringLiteral("longitude"); } inline QString HOEHE() { return QStringLiteral("hoehe"); } inline QString MAXGIPFEL() { return QStringLiteral("maxGipfel"); } inline QString RELATIV_KOORDINATE() { return QStringLiteral("relativKoordinate"); } inline QString BREITE_RADIUS() { return QStringLiteral("breiteRadius"); } inline QString RADIUS() { return QStringLiteral("radius"); } inline QString TIEFE() { return QStringLiteral("tiefe"); } inline QString ZIELACHSE() { return QStringLiteral("zielachse"); } inline QString ZOG() { return QStringLiteral("zog"); } inline QString ELEMENTE() { return QStringLiteral("elemente"); } inline QString TYP() { return QStringLiteral("typ"); } inline QString SUB_TYP() { return QStringLiteral("subTyp"); } inline QString ABFEUERUNGSART() { return QStringLiteral("abfeuerungsArt"); } inline QString ART() { return QStringLiteral("art"); } inline QString FORDERUNG() { return QStringLiteral("forderung"); } inline QString DAUER() { return QStringLiteral("dauer"); } inline QString FEUERKOMMANDO() { return QStringLiteral("feuerkommando"); } inline QString VEREIN() { return QStringLiteral("verein"); } inline QString WIRKMITTEL() { return QStringLiteral("wirkmittel"); } inline QString WIRKMITTELRAKETE() { return QStringLiteral("wirkmittelRakete"); } inline QString KENNER() { return QStringLiteral("kenner"); } inline QString AUFTREFFPUNKT() { return QStringLiteral("auftreffpunkt"); } inline QString TREFFPUNKTE() { return QStringLiteral("treffpunkte"); } inline QString FLUGZEIT() { return QStringLiteral("flugzeit"); } inline QString GIPFELHOEHE() { return QStringLiteral("gipfelhoehe"); } inline QString SCHUSSRICHTUNG() { return QStringLiteral("schussrichtung"); } inline QString GESCHOSS() { return QStringLiteral("geschoss"); } inline QString GESCHOSSE() { return QStringLiteral("geschosse"); } inline QString GESCHOSSSORTE() { return QStringLiteral("geschosssorte"); } inline QString LADUNG() { return QStringLiteral("ladung"); } inline QString LADUNGSNUMMER() { return QStringLiteral("ladungsNummer"); } inline QString ZUENDER() { return QStringLiteral("zuender"); } inline QString ZUENDERFUNKTION() { return QStringLiteral("zuenderFunktion"); } inline QString ZUENDER_ZEIT() { return QStringLiteral("zuenderZeit"); } inline QString ANZAHL() { return QStringLiteral("anzahl"); } inline QString INTERVALL() { return QStringLiteral("intervall"); } inline QString FLUGBAHNPUNKT() { return QStringLiteral("flugbahnpunkt"); } inline QString SPRENGHOEHE() { return QStringLiteral("sprenghoehe"); } inline QString ZEIT() { return QStringLiteral("zeit"); } inline QString X_RELATIV() { return QStringLiteral("xRelativ"); } inline QString Y_RELATIV() { return QStringLiteral("yRelativ"); } inline QString Z_RELATIV() { return QStringLiteral("zRelativ"); } inline QString STREUUNG() { return QStringLiteral("streuung"); } inline QString LAENGS_STREUUNG() { return QStringLiteral("laengsstreuung"); } inline QString SEITEN_STREUUNG() { return QStringLiteral("seitenstreuung"); } inline QString LAENGS_STREUUNG_H() { return QStringLiteral("laengsstreuungH"); } inline QString SEITEN_STREUUNG_H() { return QStringLiteral("seitenstreuungH"); } inline QString EINHEIT() { return QStringLiteral("einheit"); } inline QString FEUEREINHEIT() { return QStringLiteral("feuereinheit"); } inline QString MITTELPUNKT() { return QStringLiteral("mittelpunkt"); } inline QString GRUNDRICHTUNG() { return QStringLiteral("grundrichtung"); } inline QString WINKELGRUPPE() { return QStringLiteral("winkelgruppe"); } inline QString LINKS() { return QStringLiteral("links"); } inline QString RECHTS() { return QStringLiteral("rechts"); } inline QString WIRKUNGSBEREICH() { return QStringLiteral("wirkungsbereich"); } inline QString NAME() { return QStringLiteral("name"); } inline QString TRUPPENTEIL() { return QStringLiteral("truppenteil"); } inline QString MELDUNGSNUMMER() { return QStringLiteral("meldungsnummer"); } inline QString AB() { return QStringLiteral("ab"); } inline QString BIS() { return QStringLiteral("bis"); } inline QString LINKERNACHBAR() { return QStringLiteral("linkerNachbar"); } inline QString RECHTERNACHBAR() { return QStringLiteral("rechterNachbar"); } inline QString BESCHREIBUNG() { return QStringLiteral("beschreibung"); } inline QString FREITEXT() { return QStringLiteral("freitext"); } inline QString KATEGORIE() { return QStringLiteral("kategorie"); } inline QString FEUERKAMPF() { return QStringLiteral("feuerkampf"); } inline QString ZPNUMMER() { return QStringLiteral("zpNummer"); } inline QString OI() { return QStringLiteral("oi"); } inline QString R() { return QStringLiteral("r"); } inline QString WAFFENPLAETZE() { return QStringLiteral("waffenplaetze"); } inline QString WAFFENSYSTEM() { return QStringLiteral("waffensystem"); } inline QString STELLUNGEN() { return QStringLiteral("stellungen"); } inline QString TEXTVAL() { return QStringLiteral("text"); } inline QString FEHLERCODE() { return QStringLiteral("fehlercode"); } inline QString FALLWINKEL() { return QStringLiteral("fallwinkel"); } inline QString ERRORTEXT() { return QStringLiteral("error"); } inline QString ANFLUG() { return QStringLiteral("anflug"); } inline QString GPS() { return QStringLiteral("gps"); } inline QString WIRKZEIT() { return QStringLiteral("wirkzeit"); } inline QString ENTLADENSCHUSS() { return QStringLiteral("entladenSchuss"); } inline QString ABFEUERUNGSZEIT() { return QStringLiteral("abfeuerungsZeit"); } } // namespace JsonKeys namespace TelegramIds { static constexpr int EX_REGISTRATION_REQUEST() { return 6007; } // Only sent by SAA (EX-Anmeldung) static constexpr int EX_DEREGISTRATION_REQUEST() { return 6009; } // Sent by EXCON and SAA (EX-Abmeldung) static constexpr int EX_REGISTRATION_CONFIRMATION() { return 6008; } // Only sent by EXCON (EX-Anmeldebestaetigung) static constexpr int EX_CONNECTION_TEST_REQUEST() { return 6011; } // Only sent by SAA (EX-Verbindungsanfrage) static constexpr int EX_CONNECTION_TEST_REPLY() { return 6012; } // Only sent by EXCON (EX-Verbindungsantwort) static constexpr int EX_STATUS() { return 6010; } // Only sent by SAA (EX-Status) // Fachliche Meldungen static constexpr int EX_AWES_PLANNING() { return 1000; } // Only sent by SAA ( EX-FQ(BA-BB-FK) Wirkfeldplanung) static constexpr int EX_MANUAL_REPLY() { return 1001; } // Only sent by EXCON ( Manuelle Quittung) static constexpr int EX_READY_TO_FIRE() { return 1002; } // Only sent by EXCON ( Feuerbereit) static constexpr int EX_FIRE() { return 1003; } // Only sent by SAA ( EX-FQ(FN) Feuern) static constexpr int EX_FIRED() { return 1004; } // Only sent by EXCON ( Abgefeuert) static constexpr int EX_ENFORCEMENT() { return 1005; } // Only sent by EXCON ( Vollzugsmeldung) static constexpr int EX_FIRE_HALT() { return 1006; } // sent by SAA+EXCON ( Feuer HALT / Einstellen) static constexpr int EX_DONT_FIRE() { return 1007; } // sent by SAA (EXCON NICHT FEUERN) static constexpr int EX_POSITION_REPORT_FIRE() { return 2000; } // Only sent by SAA ( Ex-Sq(FS) Stellungsmeldung Feuerstellung) static constexpr int EX_POSITION_REPORT_WEAPON() { return 2001; } // Only sent by SAA ( Ex-SQ(WS) Stellungsmeldung Waffensystem) static constexpr int EX_POSITION_REPORT_LOADING_PLACE() { return 2002; } // sent by SAA+EXCON ( EX-SQ(LP)Stellungsmeldung Ladeplatz) static constexpr int EX_EXPLORATION_RESULTS() { return 5000; } // Only sent by SAA ( Senden Erkundungsergebnisse) static constexpr int EX_FIRE_FIGHT() { return 19; } // Only sent by EXCON ( Feuerkampf (ohne ADLER Verbund)) static constexpr int EX_POSITION_CHANGED() { return 20; } // Only sent by EXCON ( Stellungsinformationen (ohne ADLER Verbund)) static constexpr int EX_GUIDING_LINES() { return 3000; } // Only sent by SAA ( EX-HQ(K) Koordinierungsmassnahmen) static constexpr int EX_GUIDING_LINES_AND_BOUNDARIES() { return 3001; } // Only sent by SAA ( EX-HQ(G)Fuehrungslinien und Grenzen) static constexpr int EX_TQ() { return 6013; } // Only sent by SAA EX-TQ Technische Quittierung static constexpr int EX_AQ() { return 5001; } // Only sent by SAA ( Freitextmeldung) static constexpr int EX_FLUGBAHNBERECHNUNG() { return 4000; } // Only sent by SAA ( Flugbahnberechnung) static constexpr int EX_FLUGBAHNDATEN() { return 4001; } // Only sent by SAA ( Flugbahndaten) } // namespace TelegramIds // EX-L15 Zeitangabe DTG struct SAATELEGRAMS_EXPORT Zeitangabe_DTG { int stunden; int minuten; int sekunden; int tag; int monat; int jahr; QString ZVz; QString ZDS; QString ZDM; }; /** * @brief The SAATelegram struct */ struct SAATELEGRAMS_EXPORT SAATelegram { virtual QJsonObject toJson() = 0; explicit SAATelegram() {} virtual ~SAATelegram() {} public: template QJsonObject toJsonInternal(); }; template <> QJsonObject SAATelegram::toJsonInternal(); /** * @brief The EXTelegramBase struct */ struct SAATELEGRAMS_EXPORT EXTelegramBase : public SAATelegram { QString typeName; int typeId; QString uuid; QString version; QString sender; QString receiver; QString referenceUuid; QString timestamp; EXTelegramBase(const QString &typeName, int typeId) : typeName(typeName) , typeId(typeId) , uuid(QUuid::createUuid().toString(QUuid::WithoutBraces)) { } QJsonObject toJson() override; public: template QJsonObject toJsonInternal(); }; template <> QJsonObject EXTelegramBase::toJsonInternal(); template <> QJsonObject EXTelegramBase::toJsonInternal(); /** * @brief The EXRegistration struct */ struct SAATELEGRAMS_EXPORT EXRegistration : public EXTelegramBase { int partyId; bool adlerVerbund; QString szenar; EXRegistration() : EXTelegramBase(JsonKeys::EX_REGISTRATION_REQUEST(), TelegramIds::EX_REGISTRATION_REQUEST()) { } QJsonObject toJson() override; public: template QJsonObject toJsonInternal(); }; template <> QJsonObject EXRegistration::toJsonInternal(); // /** // * @brief The EXRegistrationConfirmation struct // */ // struct SAATELEGRAMS_EXPORT EXRegistrationConfirmation : public EXTelegramBase // { // //QString Afe; // AdlerJson::AnBestaetigungsdaten anBestaetigungsdaten; // EXRegistrationConfirmation() // : EXTelegramBase(JsonKeys::EX_REGISTRATION_CONFIRMATION(), TelegramIds::EX_REGISTRATION_CONFIRMATION()) // {} // QJsonObject toJson() override; // public: // template // QJsonObject toJsonInternal(); // }; struct SAATELEGRAMS_EXPORT EXDeregistration : EXTelegramBase { int partyId; EXDeregistration() : EXTelegramBase(JsonKeys::EX_DEREGISTRATION_REQUEST(), TelegramIds::EX_DEREGISTRATION_REQUEST()) { } QJsonObject toJson() override; public: template QJsonObject toJsonInternal(); }; template <> QJsonObject EXDeregistration::toJsonInternal(); struct SAATELEGRAMS_EXPORT EXConnectionTestRequest : public EXTelegramBase { EXConnectionTestRequest() : EXTelegramBase(JsonKeys::EX_CONNECTION_TEST_REQUEST(), TelegramIds::EX_CONNECTION_TEST_REQUEST()) { } QJsonObject toJson() override; public: template QJsonObject toJsonInternal(); }; struct SAATELEGRAMS_EXPORT EXConnectionTestReply : public EXTelegramBase { EXConnectionTestReply() : EXTelegramBase(JsonKeys::EX_CONNECTION_TEST_REPLY(), TelegramIds::EX_CONNECTION_TEST_REPLY()) { } QJsonObject toJson() override; public: template QJsonObject toJsonInternal(); }; // EX-L40 Szenarstatus enum class Szenarstatus { Inaktiv, // Es ist keine Szenarausfuehrung aktiv. Geplant, // Das Szenar wird gestartet. Aktiv, // Das Szenar wird ausgefuehrt. Gestoppt, // Das Szenar wurde gestoppt }; QString SAATELEGRAMS_EXPORT szenarstatusToStr(Szenarstatus status); Szenarstatus SAATELEGRAMS_EXPORT strToSzenarstatus(QString status); struct SAATELEGRAMS_EXPORT EXStatus : public EXTelegramBase { Szenarstatus status; EXStatus() : EXTelegramBase(JsonKeys::EX_STATUS(), TelegramIds::EX_STATUS()) { } QJsonObject toJson() override; public: template QJsonObject toJsonInternal(); }; void SAATELEGRAMS_EXPORT statusFromJson(const QJsonObject &data, EXStatus &eXStatus, bool &bOk); ///////////////////////// // Fachliche Meldungen // ///////////////////////// template <> QJsonObject EXStatus::toJsonInternal(); // ====================================================================================================== // fachliche Meldungen // EX-L13 struct SAATELEGRAMS_EXPORT Koordinate { double latitude {0.0}; // -90.0…90.0 double longitude {0.0}; // -180.0…180.0 }; // EX-L14 struct SAATELEGRAMS_EXPORT KoordinateMitHoehe { Koordinate koordinate; // EX-L13 int hoehe {0}; // EX-L5 -399…9999 Meter }; // EX-L6 Abfeuerungsart enum class SAATELEGRAMS_EXPORT Abfeuerungsart { A, // TTF B, // Bereitschaft Melden F, // Feuern Sofort T, // TOT K, // Nach Kommando Feuern }; // EX-L24 HQ(G) Art enum SAATELEGRAMS_EXPORT Art_L24 { AL, // Line of Departure ANL, // Handover Line AO, // Area of Operations ATRZ, // Artillery Target Report Zone BAA, // Biological Attack Area BCA, // Biological Contaminated Area BDRY, // Boundary BHA, // Biological Hazard Area CAA, // Chemical Attack Area CCA, // Chemical Contaminated Area CFL, // Coordinated Fire Line CFZ, // Critical Friendly Zone CHA, // Chemical Hazard Area CP, // Checkpoint CZ, // Censor Zone EA, // Engagement Area EZ, // Engagement Zone FLET, // Forward Line of Enemy Troops FLOT, // Forward Line of Own Troops FOAZI, // Fallout Area Zone I FOAZII, // Fallout Area Zone II IZ, // Inhibit Zone LZ, // Locating Zone MA, // Mined Area NAI, // Named Area of Interest OA, // Objective Area PL, // Phase Line ROTACA, // ROT A Contaminated Area ROTAHA, // ROT A Hazard Area ROTARA, // ROT A Release Area ROUTE, // Movement Route RP, // Release Point SP, // Starting Point TAI, // Target Area of Interest FEBA, // Forward Edge of the Battle Area VZL, // Delay Line MFLD, // Minefield ZOF, // Zone of Fire TAREA, // Target Area PP, // Passage Point AMA, // Artillery Maneuver Area ARA // Artillery Reserved Area }; // EX-L26 Waffensystemtyp const QMap waffensystemtypMap = { {QStringLiteral("Pzh2000"), ProjectDataManagement::L26_EffectingSystemType::Pzh2000}, {QStringLiteral("RRohr"), ProjectDataManagement::L26_EffectingSystemType::RRohr}, {QStringLiteral("Mars"), ProjectDataManagement::L26_EffectingSystemType::Mars}, }; // EX-L27 Waffensystemkenner const QMap waffensystemkennerMap = { {QStringLiteral("A"), ProjectDataManagement::L27_EffectorId::A}, // A {QStringLiteral("B"), ProjectDataManagement::L27_EffectorId::B}, // B {QStringLiteral("C"), ProjectDataManagement::L27_EffectorId::C}, // C {QStringLiteral("D"), ProjectDataManagement::L27_EffectorId::D}, // D {QStringLiteral("E"), ProjectDataManagement::L27_EffectorId::E}, // E {QStringLiteral("F"), ProjectDataManagement::L27_EffectorId::F}, // F {QStringLiteral("G"), ProjectDataManagement::L27_EffectorId::G}, // G {QStringLiteral("H"), ProjectDataManagement::L27_EffectorId::H}, // H {QStringLiteral("I"), ProjectDataManagement::L27_EffectorId::I}, // I {QStringLiteral("J"), ProjectDataManagement::L27_EffectorId::J}, // J {QStringLiteral("K"), ProjectDataManagement::L27_EffectorId::K}, // K {QStringLiteral("L"), ProjectDataManagement::L27_EffectorId::L}, // L {QStringLiteral("M"), ProjectDataManagement::L27_EffectorId::M}, // M {QStringLiteral("N"), ProjectDataManagement::L27_EffectorId::N}, // N {QStringLiteral("O"), ProjectDataManagement::L27_EffectorId::O}, // O {QStringLiteral("P"), ProjectDataManagement::L27_EffectorId::P}, // P {QStringLiteral("Q"), ProjectDataManagement::L27_EffectorId::Q}, // Q {QStringLiteral("R"), ProjectDataManagement::L27_EffectorId::R}, // R {QStringLiteral("S"), ProjectDataManagement::L27_EffectorId::S}, // S {QStringLiteral("T"), ProjectDataManagement::L27_EffectorId::T}, // T {QStringLiteral("U"), ProjectDataManagement::L27_EffectorId::U}, // U {QStringLiteral("V"), ProjectDataManagement::L27_EffectorId::V}, // V {QStringLiteral("W"), ProjectDataManagement::L27_EffectorId::W}, // W {QStringLiteral("X"), ProjectDataManagement::L27_EffectorId::X}, // X {QStringLiteral("Y"), ProjectDataManagement::L27_EffectorId::Y}, // Y {QStringLiteral("Z"), ProjectDataManagement::L27_EffectorId::Z}, // Z {QStringLiteral("B1"), ProjectDataManagement::L27_EffectorId::B1}, // B1 {QStringLiteral("B2"), ProjectDataManagement::L27_EffectorId::B2}, // B2 {QStringLiteral("B3"), ProjectDataManagement::L27_EffectorId::B3}, // B3 {QStringLiteral("B4"), ProjectDataManagement::L27_EffectorId::B4}, // B4 {QStringLiteral("B5"), ProjectDataManagement::L27_EffectorId::B5}, // B5 {QStringLiteral("B6"), ProjectDataManagement::L27_EffectorId::B6}, // B6 {QStringLiteral("B7"), ProjectDataManagement::L27_EffectorId::B7}, // B7 {QStringLiteral("B8"), ProjectDataManagement::L27_EffectorId::B8}, // B8 {QStringLiteral("C1"), ProjectDataManagement::L27_EffectorId::C1}, // C1 {QStringLiteral("C2"), ProjectDataManagement::L27_EffectorId::C2}, // C2 {QStringLiteral("C3"), ProjectDataManagement::L27_EffectorId::C3}, // C3 {QStringLiteral("C4"), ProjectDataManagement::L27_EffectorId::C4}, // C4 {QStringLiteral("C5"), ProjectDataManagement::L27_EffectorId::C5}, // C5 {QStringLiteral("C6"), ProjectDataManagement::L27_EffectorId::C6}, // C6 {QStringLiteral("C7"), ProjectDataManagement::L27_EffectorId::C7}, // C7 {QStringLiteral("C8"), ProjectDataManagement::L27_EffectorId::C8}, // C8 {QStringLiteral("211"), ProjectDataManagement::L27_EffectorId::NO_211}, // 211 Werfer ID {QStringLiteral("212"), ProjectDataManagement::L27_EffectorId::NO_212}, // 212 Werfer ID {QStringLiteral("213"), ProjectDataManagement::L27_EffectorId::NO_213}, // 213 Werfer ID {QStringLiteral("214"), ProjectDataManagement::L27_EffectorId::NO_214}, // 214 Werfer ID {QStringLiteral("215"), ProjectDataManagement::L27_EffectorId::NO_215}, // 215 Werfer ID {QStringLiteral("216"), ProjectDataManagement::L27_EffectorId::NO_216}, // 216 Werfer ID {QStringLiteral("217"), ProjectDataManagement::L27_EffectorId::NO_217}, // 217 Werfer ID {QStringLiteral("218"), ProjectDataManagement::L27_EffectorId::NO_218}, // 218 Werfer ID {QStringLiteral("221"), ProjectDataManagement::L27_EffectorId::NO_221}, // 221 Werfer ID {QStringLiteral("222"), ProjectDataManagement::L27_EffectorId::NO_222}, // 222 Werfer ID {QStringLiteral("223"), ProjectDataManagement::L27_EffectorId::NO_223}, // 223 Werfer ID {QStringLiteral("224"), ProjectDataManagement::L27_EffectorId::NO_224}, // 224 Werfer ID {QStringLiteral("225"), ProjectDataManagement::L27_EffectorId::NO_225}, // 225 Werfer ID {QStringLiteral("226"), ProjectDataManagement::L27_EffectorId::NO_226}, // 226 Werfer ID {QStringLiteral("227"), ProjectDataManagement::L27_EffectorId::NO_227}, // 227 Werfer ID {QStringLiteral("228"), ProjectDataManagement::L27_EffectorId::NO_228}, // 228 Werfer ID {QStringLiteral("311"), ProjectDataManagement::L27_EffectorId::NO_311}, // 311 Werfer ID {QStringLiteral("312"), ProjectDataManagement::L27_EffectorId::NO_312}, // 312 Werfer ID {QStringLiteral("313"), ProjectDataManagement::L27_EffectorId::NO_313}, // 313 Werfer ID {QStringLiteral("314"), ProjectDataManagement::L27_EffectorId::NO_314}, // 314 Werfer ID {QStringLiteral("315"), ProjectDataManagement::L27_EffectorId::NO_315}, // 315 Werfer ID {QStringLiteral("316"), ProjectDataManagement::L27_EffectorId::NO_316}, // 316 Werfer ID {QStringLiteral("317"), ProjectDataManagement::L27_EffectorId::NO_317}, // 317 Werfer ID {QStringLiteral("318"), ProjectDataManagement::L27_EffectorId::NO_318}, // 318 Werfer ID {QStringLiteral("321"), ProjectDataManagement::L27_EffectorId::NO_321}, // 321 Werfer ID {QStringLiteral("322"), ProjectDataManagement::L27_EffectorId::NO_322}, // 322 Werfer ID {QStringLiteral("323"), ProjectDataManagement::L27_EffectorId::NO_323}, // 323 Werfer ID {QStringLiteral("324"), ProjectDataManagement::L27_EffectorId::NO_324}, // 324 Werfer ID {QStringLiteral("325"), ProjectDataManagement::L27_EffectorId::NO_325}, // 325 Werfer ID {QStringLiteral("326"), ProjectDataManagement::L27_EffectorId::NO_326}, // 326 Werfer ID {QStringLiteral("327"), ProjectDataManagement::L27_EffectorId::NO_327}, // 327 Werfer ID {QStringLiteral("328"), ProjectDataManagement::L27_EffectorId::NO_328}, // 328 Werfer ID {QStringLiteral("411"), ProjectDataManagement::L27_EffectorId::NO_411}, // 411 Werfer ID {QStringLiteral("412"), ProjectDataManagement::L27_EffectorId::NO_412}, // 412 Werfer ID {QStringLiteral("413"), ProjectDataManagement::L27_EffectorId::NO_413}, // 413 Werfer ID {QStringLiteral("414"), ProjectDataManagement::L27_EffectorId::NO_414}, // 414 Werfer ID {QStringLiteral("415"), ProjectDataManagement::L27_EffectorId::NO_415}, // 415 Werfer ID {QStringLiteral("416"), ProjectDataManagement::L27_EffectorId::NO_416}, // 416 Werfer ID {QStringLiteral("417"), ProjectDataManagement::L27_EffectorId::NO_417}, // 417 Werfer ID {QStringLiteral("418"), ProjectDataManagement::L27_EffectorId::NO_418}, // 418 Werfer ID {QStringLiteral("421"), ProjectDataManagement::L27_EffectorId::NO_421}, // 421 Werfer ID {QStringLiteral("422"), ProjectDataManagement::L27_EffectorId::NO_422}, // 422 Werfer ID {QStringLiteral("423"), ProjectDataManagement::L27_EffectorId::NO_423}, // 423 Werfer ID {QStringLiteral("424"), ProjectDataManagement::L27_EffectorId::NO_424}, // 424 Werfer ID {QStringLiteral("425"), ProjectDataManagement::L27_EffectorId::NO_425}, // 425 Werfer ID {QStringLiteral("426"), ProjectDataManagement::L27_EffectorId::NO_426}, // 426 Werfer ID {QStringLiteral("427"), ProjectDataManagement::L27_EffectorId::NO_427}, // 427 Werfer ID {QStringLiteral("428"), ProjectDataManagement::L27_EffectorId::NO_428}, // 428 Werfer ID {QStringLiteral("511"), ProjectDataManagement::L27_EffectorId::NO_511}, // 511 Werfer ID {QStringLiteral("512"), ProjectDataManagement::L27_EffectorId::NO_512}, // 512 Werfer ID {QStringLiteral("513"), ProjectDataManagement::L27_EffectorId::NO_513}, // 513 Werfer ID {QStringLiteral("514"), ProjectDataManagement::L27_EffectorId::NO_514}, // 514 Werfer ID {QStringLiteral("515"), ProjectDataManagement::L27_EffectorId::NO_515}, // 515 Werfer ID {QStringLiteral("516"), ProjectDataManagement::L27_EffectorId::NO_516}, // 516 Werfer ID {QStringLiteral("517"), ProjectDataManagement::L27_EffectorId::NO_517}, // 517 Werfer ID {QStringLiteral("518"), ProjectDataManagement::L27_EffectorId::NO_518}, // 518 Werfer ID {QStringLiteral("521"), ProjectDataManagement::L27_EffectorId::NO_521}, // 521 Werfer ID {QStringLiteral("522"), ProjectDataManagement::L27_EffectorId::NO_522}, // 522 Werfer ID {QStringLiteral("523"), ProjectDataManagement::L27_EffectorId::NO_523}, // 523 Werfer ID {QStringLiteral("524"), ProjectDataManagement::L27_EffectorId::NO_524}, // 524 Werfer ID {QStringLiteral("525"), ProjectDataManagement::L27_EffectorId::NO_525}, // 525 Werfer ID {QStringLiteral("526"), ProjectDataManagement::L27_EffectorId::NO_526}, // 526 Werfer ID {QStringLiteral("527"), ProjectDataManagement::L27_EffectorId::NO_527}, // 527 Werfer ID {QStringLiteral("528"), ProjectDataManagement::L27_EffectorId::NO_528} // 528 Werfer ID }; // EX-L32 Fehlerstatus enum SAATELEGRAMS_EXPORT Status_L32 { INV, // Meldung nicht gültig nach JSON-Schema. DAT, // Datenkonsistenzfehler. }; // EX-L40 Szenarstatus // ist bereits definiert // enum class SAATELEGRAMS_EXPORT Szenarstatus // { // Inaktiv, // Es ist keine Szenarausfuehrung aktiv. // Geplant, // Das Szenar wird gestartet. // Aktiv, // Das Szenar wird ausgefuehrt. // Gestoppt, // Das Szenar wurde gestoppt. // }; // EX-L43 Winkelgruppe enum class SAATELEGRAMS_EXPORT Winkelgruppe { Untere = 0, // Untere Winkelgruppe Obere = 1 // Obere Winkelgruppe }; // EX-L44 Flugbahnberechnung Fehlercode enum class SAATELEGRAMS_EXPORT FlugbahnberechnungFehlercode { Ok = 0, // Erfolg MinimaleEntfernung = 1, // Unterhalb der minimalen Entfernung MaximaleEntfernung = 2, // Oberhalb der maximalen Entfernung GeschossKombination = 3, // Ungueltige Geschosskombination Ungueltig = 4, // Ungueltig }; // EX-L45 Anmeldebestätigung Fehlercode enum class SAATELEGRAMS_EXPORT L45_AnmeldebestaetigungFehlercode { Ok = 0, // OK Doppelt = 1, // Doppelte Anmeldung Mehrfach = 2, // Mehrfachanmeldung Belegt = 3 // Belegte Anmeldung }; // EX-L3 Einheit struct SAATELEGRAMS_EXPORT Einheit { QString verein; // EX-L2 int r; ProjectDataManagement::L19_Oi oi; // EX-L19 }; // EX-L8 Geschosse struct SAATELEGRAMS_EXPORT Geschoss { QString geschosssorte; // EX-L9 (table pdm_charge_type) QString ladung; // EX-L10 (table pdm_load_type) QString zuender; // EX-L11 (table pdm_igniter_type) int anzahl{0}; }; // EX-L12 Zieldaten struct SAATELEGRAMS_EXPORT Zieldaten { int nummer{0}; ProjectDataManagement::L4_TargetGeometry geometrie; // EX-L4 KoordinateMitHoehe koordinate; // EX-L14 KoordinateMitHoehe relativKoordinate; // EX-L14 int breiteRadius{0}; int tiefe{0}; int zielachse{0}; int zog{0}; int elemente{0}; QString typ; // EX-L20 (pdm_target_type) QString subTyp; // EX-L21 (pdm_target_subtype) }; // EX-L14 // struct SAATELEGRAMS_EXPORT KoordinateMitHoehe ist weiter oben definiert. // EX-L18 Wirkungsbereich struct SAATELEGRAMS_EXPORT Wirkungsbereich { int grundrichtung; int links; int rechts; }; // EX-L23 Feuereinheit struct SAATELEGRAMS_EXPORT Feuereinheit { QString verein; int r; }; // EX-L29 Erkundungseinheit struct SAATELEGRAMS_EXPORT Erkundungseinheit { QString verein; int r; }; // EX-L30 Erkundungsstellungen struct SAATELEGRAMS_EXPORT Erkundungsstellungen { QVector waffenplaetze; // EX-L14 Wirkungsbereich wirkungsbereich; // EX-L18 }; // EX-L36 Feuerkommando Geschosse struct SAATELEGRAMS_EXPORT FeuerkommandoGeschosse { QString geschosssorte; // EX-L9 (table pdm_charge_type) QString ladung; // EX-L10 (table pdm_load_type) QString zuender; // EX-L11 (table pdm_igniter_type) QString zuenderFunktion; // EX-L41 (table pdm_igniter_function) double zuenderZeit {0.0};// [ms] int anzahl {-1}; int ladungsNummer {-1}; double intervall {0.0}; // [s] }; // EX-L35 Flugbahnpunkt struct SAATELEGRAMS_EXPORT Flugbahnpunkt { double zeit; double xRelativ; double yRelativ; double zRelativ; }; // EX-L37 Flugbahnberechnung Geschosse struct SAATELEGRAMS_EXPORT FlugbahnberechnungGeschosse { QString geschosssorte; // EX_L9 (table pdm_charge_type) QString ladung; // EX-L10 (table pdm_load_type) QString zuender; // EX-L11 (table pdm_igniter_type) QString zuenderFunktion; // EX-L41 (table pdm_igniter_function) }; // EX-L38 Flugbahndaten Geschosse struct SAATELEGRAMS_EXPORT FlugbahndatenGeschosse { QString geschosssorte; // EX_L9 (table pdm_charge_type) QString ladung; // EX-L10 (table pdm_load_type) int ladungsNummer; QString zuender; // EX-L11 (table pdm_igniter_type) QString zuenderFunktion; // EX-L41 (table pdm_igniter_function) double zuenderZeit; }; // EX-L39 Streuungsdaten struct SAATELEGRAMS_EXPORT Streuungsdaten { double laengsstreuung; double seitenstreuung; double laengsstreuungH; double seitenstreuungH; }; // EX-L34 Wirkmittel Feuerkommando struct SAATELEGRAMS_EXPORT WirkmittelFeuerkommando { ProjectDataManagement::L27_EffectorId kenner; // EX-L27 KoordinateMitHoehe auftreffpunkt; // EX-L14 double flugzeit; int gipfelhoehe; double schussrichtung; FeuerkommandoGeschosse geschoss; // EX-L36 QVector flugbahnpunkt; // EX-L35 Streuungsdaten streuung; // EX-L39 }; // EX-L47 Rakete Trefferpunkt struct SAATELEGRAMS_EXPORT Treffpunkt { KoordinateMitHoehe koordinate; // EX-L14 int anzahl {-1}; }; // EX-L49 Wirkmittel Feuerkommando Rakete struct SAATELEGRAMS_EXPORT WirkmittelFeuerkommandoRakete { ProjectDataManagement::L27_EffectorId kenner {ProjectDataManagement::L27_EffectorId_def::get_default()}; // EX-L27 QVector treffpunkte; double flugzeit {0.0}; int gipfelhoehe {0}; double schussrichtung {0.0}; int fallwinkel {0}; ProjectDataManagement::L48_TrajectoryRocket anflug {ProjectDataManagement::L48_TrajectoryRocket_def::get_default()}; FeuerkommandoGeschosse geschoss; ProjectDataManagement::L46_GpsFrequency gps {ProjectDataManagement::L46_GpsFrequency_def::get_default()}; int wirkzeit {-1}; }; // EX-L33 Feuerkommando struct SAATELEGRAMS_EXPORT Feuerkommando { QString verein; // EX-L2 ProjectDataManagement::L26_EffectingSystemType typ; // EX-L26 QVector wirkmittel; // EX-L34 QVector wirkmittelRakete; // EX-L49 }; // ====================================================================================================== // Strukturen und Legenden // EX-Wirkfelddaten struct SAATELEGRAMS_EXPORT Wirkfelddaten { QString feuerkampfReferenz; Zieldaten zieldaten; Abfeuerungsart abfeuerungsArt; ProjectDataManagement::L7_Request forderung; int dauer; Feuerkommando feuerkommando; }; // EX-Feuerkampfdaten struct SAATELEGRAMS_EXPORT Feuerkampfdaten { QString feuerkampfReferenz; // string QString verein; // EX-L2 ProjectDataManagement::L27_EffectorId kenner; // EX-L27 }; // EX-Erkundungsdaten struct SAATELEGRAMS_EXPORT Erkundungsdaten { Erkundungseinheit einheit; // EX-L29 KoordinateMitHoehe ladeplatz; // EX-L14 Erkundungsstellungen stellungen; // EX-L30 }; // EX-Zielmeldedaten struct SAATELEGRAMS_EXPORT Zielmeldedaten { Zieldaten zieldaten; // EX-L12 Abfeuerungsart abfeuerungsArt; // EX-L6 ProjectDataManagement::L7_Request forderung; // EX-L7 int dauer; QVector feuerkommandos; // 1…n feuerkommando M S S EX-L37 }; // EX-Feuerstellungsdaten struct SAATELEGRAMS_EXPORT Feuerstellungsdaten { ProjectDataManagement::L26_EffectingSystemType typ; // EX-L26 ProjectDataManagement::L28_Status status; // EX-L28 Einheit feuereinheit; // EX-L3 KoordinateMitHoehe mittelpunkt; // EX-L14 QVector koordinaten; // EX-L14 QVector geschosse; // EX-L8 Wirkungsbereich wirkungsbereich; // EX-L18 }; // EX-Waffensystemdaten struct SAATELEGRAMS_EXPORT Waffensystemdaten { ProjectDataManagement::L26_EffectingSystemType typ; // EX-L26 ProjectDataManagement::L27_EffectorId kenner; // EX-L27 ProjectDataManagement::L28_Status status; // EX-L28 Einheit einheit; // EX-L3 QVector geschosse; // EX-L8 KoordinateMitHoehe koordinate; // EX-L14 Wirkungsbereich wirkungsbereich; // EX-L18 }; // EX-Ladeplatzdaten struct SAATELEGRAMS_EXPORT Ladeplatzdaten { Einheit einheit; // EX-L3 KoordinateMitHoehe koordinate; // EX-L14 QVector geschosse; // EX-L8 }; // EX-Stellungswechseldaten struct SAATELEGRAMS_EXPORT Stellungswechseldaten { QString verein; // EX-L2 int r; ProjectDataManagement::L19_Oi oi; // EX-L19 }; // EX-Munitionsdaten struct SAATELEGRAMS_EXPORT Munitionsdaten { QString verein; // EX-L2 }; // EX-LpMunitionsdaten struct SAATELEGRAMS_EXPORT LpMunitionsdaten { Einheit einheit; // EX-L3 }; // EX-Koordinierungsdaten struct SAATELEGRAMS_EXPORT Koordinierungsdaten { ProjectDataManagement::L25_KindGuidingLine art; // EX-L25 QString name; int meldungsnummer; QString truppenteil; // EX-L31 Zeitangabe_DTG ab; // EX-L15 Zeitangabe_DTG bis; // EX-L15 QVector koordinaten; // EX-L13 Koordinate mittelpunkt; // EX-L13 int radius; int maxGipfel; // EX-L5 }; // EX-Wirkfelddaten struct SAATELEGRAMS_EXPORT WirkfeldplanungData { QString feuerkampfReferenz; Zieldaten zieldaten; // EX-L12 Abfeuerungsart abfeuerungsArt; // EX-L6 ProjectDataManagement::L7_Request forderung; // EX-L7 int dauer; Feuerkommando feuerkommando; // EX-L33 }; // EX-Fuehrungsdaten struct SAATELEGRAMS_EXPORT Fuehrungsdaten { Art_L24 art; // EX-L24 QString name; int meldungsnummer; Zeitangabe_DTG ab; // EX-L15 Zeitangabe_DTG bis; // EX-L15 QVector koordinaten; // EX-L13 QString linkerNachbar; QString rechterNachbar; }; // EX-Anmeldedaten struct SAATELEGRAMS_EXPORT Anmeldedaten { int partyId; bool adlerVerbund; QString szenar; }; void SAATELEGRAMS_EXPORT anmeldedatenFromJson(const QJsonObject &data, Anmeldedaten &anmeldedaten, bool &bOk); // EX-Anmeldedaten struct SAATELEGRAMS_EXPORT Abmeldedaten { int partyId; }; void SAATELEGRAMS_EXPORT abmeldedatenFromJson(const QJsonObject &data, Abmeldedaten &anmeldedaten, bool &bOk); // EX-TechnischeDaten struct SAATELEGRAMS_EXPORT TechnischeDaten { Status_L32 status; // EX-L32 QString beschreibung; }; // EX-FreitextDaten struct SAATELEGRAMS_EXPORT FreitextDaten { QString text; }; // EX-MQ Manuelle Quittung Daten struct SAATELEGRAMS_EXPORT ManuelleQuittungDaten { QString feuerkampfreferenz; }; // EX-FeuerHaltDaten struct SAATELEGRAMS_EXPORT FeuerHaltDaten { QString verein; // EX-L2 ProjectDataManagement::L27_EffectorId kenner; // EX-L27 ProjectDataManagement::L22_FireHaltCategory kategorie; // EX-L22 QString feuerkampfReferenz; int zpNummer; Koordinate koordinate; // EX-L13 int radius; bool entladenSchuss; }; // EX-AnBestaetigungsdaten struct SAATELEGRAMS_EXPORT AnBestaetigungsdaten { L45_AnmeldebestaetigungFehlercode error; }; // EX-Flugbahnberechnung struct SAATELEGRAMS_EXPORT FlugBerechnungsDaten { KoordinateMitHoehe standort; KoordinateMitHoehe zielkoordinate; ProjectDataManagement::L26_EffectingSystemType waffensystem; FlugbahnberechnungGeschosse geschoss; // EX-L37 int sprenghoehe; Winkelgruppe winkelgruppe; }; // EX-Flugbahndaten struct SAATELEGRAMS_EXPORT Flugbahndaten { FlugbahnberechnungFehlercode fehlercode; // EX-L44 KoordinateMitHoehe zielkoordinate; ProjectDataManagement::L26_EffectingSystemType waffensystem; int flugzeit; int gipfelhoehe; int schussrichtung; int fallwinkel; QVector flugbahnpunkt; // EX-L35 Streuungsdaten streuung; FlugbahndatenGeschosse geschoss; }; // EX-Statusdaten // struct SAATELEGRAMS_EXPORT Statusdaten // { // Szenarstatus status; // EX-L40 // }; // Siehe EXStatus // EX-FQ(BA-BB-FK) Wirkfeldplanung (EX_AWES_PLANNING) void SAATELEGRAMS_EXPORT wirkfeldplanungDataFromJson(const QJsonObject &data, WirkfeldplanungData &wirkfeldplanungData, bool &bOk); struct SAATELEGRAMS_EXPORT ExAwesPlanning : public EXTelegramBase { WirkfeldplanungData wirkfeldplanungData; ExAwesPlanning() : EXTelegramBase(JsonKeys::EX_AWES_PLANNING(), TelegramIds::EX_AWES_PLANNING()) { } QJsonObject toJson() override; public: template QJsonObject toJsonInternal(); }; template <> QJsonObject ExAwesPlanning::toJsonInternal(); // 7.1.4 EX-FQ(FB) Feuerbereit void SAATELEGRAMS_EXPORT feuerkampfdatenFromJson(const QJsonObject &data, Feuerkampfdaten &feuerkampfdaten, bool &bOk); struct SAATELEGRAMS_EXPORT ExFeuerbereit : public EXTelegramBase { Feuerkampfdaten feuerkampfdaten; ExFeuerbereit() : EXTelegramBase(JsonKeys::EX_READY_TO_FIRE(), TelegramIds::EX_READY_TO_FIRE()) { } QJsonObject toJson() override; public: template QJsonObject toJsonInternal(); }; template <> QJsonObject ExFeuerbereit::toJsonInternal(); // 7.1.5 EX-FQ(FN) Feuern struct SAATELEGRAMS_EXPORT ExFeuern : public EXTelegramBase { Feuerkampfdaten feuerkampfdaten; ExFeuern() : EXTelegramBase(JsonKeys::EX_FIRE(), TelegramIds::EX_FIRE()) { } QJsonObject toJson() override; public: template QJsonObject toJsonInternal(); }; template <> QJsonObject ExFeuern::toJsonInternal(); // 7.1.6 EX-FQ(AF) Abgefeuert struct SAATELEGRAMS_EXPORT ExAbgefeuert : public EXTelegramBase { Feuerkampfdaten feuerkampfdaten; ExAbgefeuert() : EXTelegramBase(JsonKeys::EX_FIRED(), TelegramIds::EX_FIRED()) { } QJsonObject toJson() override; public: template QJsonObject toJsonInternal(); }; template <> QJsonObject ExFeuern::toJsonInternal(); // 7.1.7 EX-FQ(VM) Vollzugsmeldung struct SAATELEGRAMS_EXPORT ExVollzugsmeldung : public EXTelegramBase { Feuerkampfdaten feuerkampfdaten; ExVollzugsmeldung() : EXTelegramBase(JsonKeys::EX_ENFORCEMENT(), TelegramIds::EX_ENFORCEMENT()) { } QJsonObject toJson() override; public: template QJsonObject toJsonInternal(); }; template <> QJsonObject ExFeuern::toJsonInternal(); // // 7.1.8 EX-Erkundungsanfrage - Anfrage Erkundungsergebnisse // struct SAATELEGRAMS_EXPORT ExErkundungsanfrage : public EXTelegramBase // { // ExErkundungsanfrage() // : EXTelegramBase(JsonKeys::EX_REQUEST_EXPLORATION_RESULTS(), TelegramIds::EX_REQUEST_EXPLORATION_RESULTS()) // {} // QJsonObject toJson() override; // public: // template // QJsonObject toJsonInternal(); // }; // template<> // QJsonObject ExFeuern::toJsonInternal(); // 7.1.9 EX-Erkundungsergebnisse - Senden Erkundungsergebnisse void SAATELEGRAMS_EXPORT erkundungsdatenFromJson(const QJsonObject &data, Erkundungsdaten &erkundungsdaten, bool &bOk); struct SAATELEGRAMS_EXPORT ExErkundungsergebnisse : public EXTelegramBase { Erkundungsdaten erkundungsdaten; ExErkundungsergebnisse() : EXTelegramBase(JsonKeys::EX_EXPLORATION_RESULTS(), TelegramIds::EX_EXPLORATION_RESULTS()) { } QJsonObject toJson() override; public: template QJsonObject toJsonInternal(); }; template <> QJsonObject ExFeuern::toJsonInternal(); // 7.1.10 EX-FQ(BA-BB) Feuerkampf // Feuerkampf enthaelt keine Feuerkampfsdaten, sondern Zielmeldedaten. void SAATELEGRAMS_EXPORT zielmeldedatenFromJson(const QJsonObject &data, Zielmeldedaten &zielmeldedaten, bool &bOk); struct SAATELEGRAMS_EXPORT ExFeuerkampf : public EXTelegramBase { Zielmeldedaten zielmeldedaten; // EX-Zielmeldedaten ExFeuerkampf() : EXTelegramBase(JsonKeys::EX_FIRE_FIGHT(), TelegramIds::EX_FIRE_FIGHT()) { } QJsonObject toJson() override; public: template QJsonObject toJsonInternal(); }; template <> QJsonObject ExFeuern::toJsonInternal(); // 7.1.11 EX-FH Feuer HALT void SAATELEGRAMS_EXPORT feuerHaltDatenFromJson(const QJsonObject &data, FeuerHaltDaten &feuerHaltDaten, bool &bOk); struct SAATELEGRAMS_EXPORT ExFeuerhalt : public EXTelegramBase { FeuerHaltDaten feuerHaltDaten; // ExFeuerhalt() : EXTelegramBase(JsonKeys::EX_FIRE_HALT(), TelegramIds::EX_FIRE_HALT()) { } QJsonObject toJson() override; public: template QJsonObject toJsonInternal(); }; template <> QJsonObject ExFeuern::toJsonInternal(); // 7.1.12 EX-SQ(FS) Stellungsmeldung Feuerstellung void SAATELEGRAMS_EXPORT feuerstellungsdatenFromJson(const QJsonObject &data, Feuerstellungsdaten &feuerstellungsdaten, bool &bOk); struct SAATELEGRAMS_EXPORT ExFeuerstellungFS : public EXTelegramBase { Feuerstellungsdaten feuerstellungsdaten; // ExFeuerstellungFS() : EXTelegramBase(JsonKeys::EX_POSITION_REPORT_FIRE(), TelegramIds::EX_POSITION_REPORT_FIRE()) { } QJsonObject toJson() override; public: template QJsonObject toJsonInternal(); }; template <> QJsonObject ExFeuerstellungFS::toJsonInternal(); // 7.1.13 EX-SQ(WS) Stellungsmeldung Waffensystem void SAATELEGRAMS_EXPORT waffensystemdatenFromJson(const QJsonObject &data, Waffensystemdaten &waffensystemdaten, bool &bOk); struct SAATELEGRAMS_EXPORT ExFeuerstellungWS : public EXTelegramBase { Waffensystemdaten waffensystemdaten; // ExFeuerstellungWS() : EXTelegramBase(JsonKeys::EX_POSITION_REPORT_WEAPON(), TelegramIds::EX_POSITION_REPORT_WEAPON()) { } QJsonObject toJson() override; public: template QJsonObject toJsonInternal(); }; template <> QJsonObject ExFeuerstellungWS::toJsonInternal(); // 7.1.14 EX-SQ(LP) Stellungsmeldung Ladeplatz void SAATELEGRAMS_EXPORT ladeplatzdatenFromJson(const QJsonObject &data, Ladeplatzdaten &ladeplatzdaten, bool &bOk); struct SAATELEGRAMS_EXPORT ExFeuerstellungLP : public EXTelegramBase { Ladeplatzdaten ladeplatzdaten; // ExFeuerstellungLP() : EXTelegramBase(JsonKeys::EX_POSITION_REPORT_LOADING_PLACE(), TelegramIds::EX_POSITION_REPORT_LOADING_PLACE()) { } QJsonObject toJson() override; public: template QJsonObject toJsonInternal(); }; template <> QJsonObject ExFeuerstellungLP::toJsonInternal(); // 7.1.15 EX-Stellungswechsel void SAATELEGRAMS_EXPORT stellungswechseldatenFromJson(const QJsonObject &data, Stellungswechseldaten &stellungswechseldaten, bool &bOk); struct SAATELEGRAMS_EXPORT ExStellungswechsel : public EXTelegramBase { Stellungswechseldaten stellungswechseldaten; // EX-Stellungswechseldaten ExStellungswechsel() : EXTelegramBase(JsonKeys::EX_POSITION_CHANGED(), TelegramIds::EX_POSITION_CHANGED()) { } QJsonObject toJson() override; public: template QJsonObject toJsonInternal(); }; template <> QJsonObject ExStellungswechsel::toJsonInternal(); // 7.1.16 EX-HQ(K) Koordinierungsmassnahmen void SAATELEGRAMS_EXPORT koordinierungsdatenFromJson(const QJsonObject &data, Koordinierungsdaten &koordinierungsdaten, bool &bOk); struct SAATELEGRAMS_EXPORT ExHqKoordinierungsmassnahmen : public EXTelegramBase { Koordinierungsdaten koordinierungsdaten; // EX-Koordinierungsdaten ExHqKoordinierungsmassnahmen() : EXTelegramBase(JsonKeys::EX_GUIDING_LINES(), TelegramIds::EX_GUIDING_LINES()) { } QJsonObject toJson() override; public: template QJsonObject toJsonInternal(); }; template <> QJsonObject ExHqKoordinierungsmassnahmen::toJsonInternal(); // 7.1.17 EX-HQ(G) Fuehrungslinien und Grenzen void SAATELEGRAMS_EXPORT fuehrungsdatenFromJson(const QJsonObject &data, Fuehrungsdaten &fuehrungsdaten, bool &bOk); struct SAATELEGRAMS_EXPORT ExHqFuehrungslinien : public EXTelegramBase { Fuehrungsdaten fuehrungsdaten; // EX-Fuehrungsdaten ExHqFuehrungslinien() : EXTelegramBase(JsonKeys::EX_GUIDING_LINES_AND_BOUNDARIES(), TelegramIds::EX_GUIDING_LINES_AND_BOUNDARIES()) { } QJsonObject toJson() override; public: template QJsonObject toJsonInternal(); }; template <> QJsonObject ExHqFuehrungslinien::toJsonInternal(); // 7.1.22 EX-TQ Technische Quittierung void SAATELEGRAMS_EXPORT technischeDatenFromJson(const QJsonObject &data, TechnischeDaten &technischeDaten, bool &bOk); struct SAATELEGRAMS_EXPORT ExTqTechnischeQuittung : public EXTelegramBase { TechnischeDaten technischeDaten; // EX-TechnischeDaten ExTqTechnischeQuittung() : EXTelegramBase(JsonKeys::EX_TQ(), TelegramIds::EX_TQ()) { } QJsonObject toJson() override; public: template QJsonObject toJsonInternal(); }; template <> QJsonObject ExTqTechnischeQuittung::toJsonInternal(); // 7.1.23 EX-AQ Freitextmeldung void SAATELEGRAMS_EXPORT FreitextDatenFromJson(const QJsonObject &data, FreitextDaten &freitextDaten, bool &bOk); struct SAATELEGRAMS_EXPORT ExAqFreitextmeldung : public EXTelegramBase { FreitextDaten freitextDaten; // EX-FreitextDaten ExAqFreitextmeldung() : EXTelegramBase(JsonKeys::EX_AQ(), TelegramIds::EX_AQ()) { } QJsonObject toJson() override; public: template QJsonObject toJsonInternal(); }; template <> QJsonObject ExAqFreitextmeldung::toJsonInternal(); // 7.2.1 EX-MQ Manuelle Quittung void SAATELEGRAMS_EXPORT mqManuelleQuittungDatenFromJson(const QJsonObject &data, ManuelleQuittungDaten &manuelleQuittungDaten, bool &bOk); struct SAATELEGRAMS_EXPORT ExMqManuelleQuittung : public EXTelegramBase { ManuelleQuittungDaten mqManuelleQuittungDaten; ExMqManuelleQuittung() : EXTelegramBase(JsonKeys::EX_MANUAL_REPLY(), TelegramIds::EX_MANUAL_REPLY()) { } QJsonObject toJson() override; public: template QJsonObject toJsonInternal(); }; template <> QJsonObject ExMqManuelleQuittung::toJsonInternal(); // 7.2.5 EX-FQ(nFN) Nicht Feuern void SAATELEGRAMS_EXPORT exNichtFeuernFromJson(const QJsonObject &data, Feuerkampfdaten &feuerkampfdaten, bool &bOk); struct SAATELEGRAMS_EXPORT exNichtFeuern : public EXTelegramBase { Feuerkampfdaten feuerkampfdaten; exNichtFeuern() : EXTelegramBase(JsonKeys::EX_DONT_FIRE(), TelegramIds::EX_DONT_FIRE()) { } QJsonObject toJson() override; public: template QJsonObject toJsonInternal(); }; template <> QJsonObject exNichtFeuern::toJsonInternal(); // 7.2.17 EX-Anmeldebestaetigung void SAATELEGRAMS_EXPORT exAnmeldebestaetigungDatenFromJson(const QJsonObject &data, AnBestaetigungsdaten &anBestaetigungsdaten, bool &bOk); struct SAATELEGRAMS_EXPORT ExAnmeldebestaetigung : public EXTelegramBase { AnBestaetigungsdaten anBestaetigungsdaten; ExAnmeldebestaetigung() : EXTelegramBase(JsonKeys::EX_REGISTRATION_CONFIRMATION(), TelegramIds::EX_REGISTRATION_CONFIRMATION()) { } QJsonObject toJson() override; public: template QJsonObject toJsonInternal(); }; template <> QJsonObject ExAnmeldebestaetigung::toJsonInternal(); // 7.2.22 EX-Flugbahnberechnung void SAATELEGRAMS_EXPORT exFlugbahnberechnungDatenFromJson(const QJsonObject &data, FlugBerechnungsDaten &flugBerechnungsDaten, bool &bOk); struct SAATELEGRAMS_EXPORT ExFlugbahnberechnung : public EXTelegramBase { FlugBerechnungsDaten flugbahnberechnungDaten; ExFlugbahnberechnung() : EXTelegramBase(JsonKeys::EX_FLUGBAHNBERECHNUNG(), TelegramIds::EX_FLUGBAHNBERECHNUNG()) { } QJsonObject toJson() override; public: template QJsonObject toJsonInternal(); }; template <> QJsonObject ExFlugbahnberechnung::toJsonInternal(); // 7.2.23 EX-Flugbahndaten void SAATELEGRAMS_EXPORT flugbahndatenFromJson(const QJsonObject &data, Flugbahndaten &flugbahndaten, bool &bOk); struct SAATELEGRAMS_EXPORT ExFlugbahndaten : public EXTelegramBase { Flugbahndaten flugbahndaten; ExFlugbahndaten() : EXTelegramBase(JsonKeys::EX_FLUGBAHNDATEN(), TelegramIds::EX_FLUGBAHNDATEN()) { } QJsonObject toJson() override; public: template QJsonObject toJsonInternal(); }; template <> QJsonObject ExFlugbahndaten::toJsonInternal(); // -------------------------------------------- // Enum-Maps: // -------------------------------------------- // EX-L4 Zielgeometrie const QMap zielgeometrieMap = { {QStringLiteral("P"), ProjectDataManagement::L4_TargetGeometry::Point}, // Punktziel {QStringLiteral("F"), ProjectDataManagement::L4_TargetGeometry::Area}, // Flaechenziel {QStringLiteral("R"), ProjectDataManagement::L4_TargetGeometry::Radial}, // Radialziel {QStringLiteral("L"), ProjectDataManagement::L4_TargetGeometry::Linear} // Linearziel }; // EX-L6 Abfeuerungsart const QMap AbfeuerungsartMap = { {QStringLiteral("A"), Abfeuerungsart::A}, // TTF {QStringLiteral("B"), Abfeuerungsart::B}, // Bereitschaft Melden {QStringLiteral("F"), Abfeuerungsart::F}, // Feuern Sofort {QStringLiteral("T"), Abfeuerungsart::T}, // TOT {QStringLiteral("K"), Abfeuerungsart::K}, // Nach Kommando Feuern }; // EX-L7 Forderung const QMap ForderungMap = { {QStringLiteral("ABR"), ProjectDataManagement::L7_Request::ABR}, // abriegeln {QStringLiteral("BEK"), ProjectDataManagement::L7_Request::BEK}, // bekaempfen {QStringLiteral("BEL"), ProjectDataManagement::L7_Request::BEL}, // beleuchten {QStringLiteral("BLE"), ProjectDataManagement::L7_Request::BLE}, // blenden {QStringLiteral("NIE"), ProjectDataManagement::L7_Request::NIE}, // niederhalten {QStringLiteral("SPE"), ProjectDataManagement::L7_Request::SPE}, // sperren {QStringLiteral("STO"), ProjectDataManagement::L7_Request::STO}, // stoeren {QStringLiteral("UBW"), ProjectDataManagement::L7_Request::UBW}, // ueberwachen {QStringLiteral("VER"), ProjectDataManagement::L7_Request::VER}, // vernichten {QStringLiteral("ZSL"), ProjectDataManagement::L7_Request::ZSL}, // zerschlagen {QStringLiteral("ZER"), ProjectDataManagement::L7_Request::ZER}, // zerstoeren (Infrastruktur) {QStringLiteral("BWL"), ProjectDataManagement::L7_Request::BWL}, // bekaempfen mit wenig letaler Munition {QStringLiteral("MRK"), ProjectDataManagement::L7_Request::MRK}, // markieren {QStringLiteral("WRN"), ProjectDataManagement::L7_Request::WRN}, // warnen {QStringLiteral("BLI"), ProjectDataManagement::L7_Request::BLI}, // blenden IR {QStringLiteral("BEI"), ProjectDataManagement::L7_Request::BEI}, // beleuchten IR {QStringLiteral("BEW"), ProjectDataManagement::L7_Request::BEW}, // beleuchten mit Wirkung {QStringLiteral("BEO"), ProjectDataManagement::L7_Request::BEO}, // beobachten {QStringLiteral("BLW"), ProjectDataManagement::L7_Request::BLW}, // blenden mit Wirkung {QStringLiteral("MBE"), ProjectDataManagement::L7_Request::MBE}, // markieren mit Leucht {QStringLiteral("MBL"), ProjectDataManagement::L7_Request::MBL}, // markieren mit Nebel {QStringLiteral("MIR"), ProjectDataManagement::L7_Request::MIR}, // markieren mit Leucht IR }; // EX-L19 Orts ID const QMap ortsIdMap = { {QStringLiteral("Empty"), ProjectDataManagement::L19_Oi::Empty}, // Orts ID nicht gesetzt {QStringLiteral("F1"), ProjectDataManagement::L19_Oi::F1}, // 1. Feuerstellung {QStringLiteral("F2"), ProjectDataManagement::L19_Oi::F2}, // 2. Feuerstellung {QStringLiteral("F3"), ProjectDataManagement::L19_Oi::F3}, // 3. Feuerstellung {QStringLiteral("F4"), ProjectDataManagement::L19_Oi::F4}, // 4. Feuerstellung {QStringLiteral("F5"), ProjectDataManagement::L19_Oi::F5}, // 5. Feuerstellung {QStringLiteral("F6"), ProjectDataManagement::L19_Oi::F6}, // 6. Feuerstellung {QStringLiteral("F7"), ProjectDataManagement::L19_Oi::F7}, // 7. Feuerstellung {QStringLiteral("F8"), ProjectDataManagement::L19_Oi::F8}, // 8. Feuerstellung {QStringLiteral("F9"), ProjectDataManagement::L19_Oi::F9}, // 9. Feuerstellung {QStringLiteral("L"), ProjectDataManagement::L19_Oi::L} // Ladeplatz }; // EX-20 TargetType -> pdm_target_type // EX-21 TargetSubType -> pdm_target_subtype // EX-L22 Feuer HALT Kategorie const QMap feuerHaltKategorieMap = { {QStringLiteral("A"), ProjectDataManagement::L22_FireHaltCategory::A}, // Feuer HALT Allgemein {QStringLiteral("R"), ProjectDataManagement::L22_FireHaltCategory::R}, // Feuer HALT Referenziert {QStringLiteral("E"), ProjectDataManagement::L22_FireHaltCategory::E}, // Feuer Einstellen {QStringLiteral("C"), ProjectDataManagement::L22_FireHaltCategory::C}, // Aufheben Feuer HALT Allgemein {QStringLiteral("F"), ProjectDataManagement::L22_FireHaltCategory::F}, // Aufheben Feuer HALT Referenziert }; // EX-L24 HQ(G) Art const QMap art_L24Map = { {QStringLiteral("AL"), Art_L24::AL}, // Line of Departure {QStringLiteral("ANL"), Art_L24::ANL}, // Handover Line {QStringLiteral("AO"), Art_L24::AO}, // Area of Operations {QStringLiteral("ATRZ"), Art_L24::ATRZ}, // Artillery Target Report Zone {QStringLiteral("BAA"), Art_L24::BAA}, // Biological Attack Area {QStringLiteral("BCA"), Art_L24::BCA}, // Biological Contaminated Area {QStringLiteral("BDRY"), Art_L24::BDRY}, // Boundary {QStringLiteral("BHA"), Art_L24::BHA}, // Biological Hazard Area {QStringLiteral("CAA"), Art_L24::CAA}, // Chemical Attack Area {QStringLiteral("CCA"), Art_L24::CCA}, // Chemical Contaminated Area {QStringLiteral("CFL"), Art_L24::CFL}, // Coordinated Fire Line {QStringLiteral("CFZ"), Art_L24::CFZ}, // Critical Friendly Zone {QStringLiteral("CHA"), Art_L24::CHA}, // Chemical Hazard Area {QStringLiteral("CP"), Art_L24::CP}, // Checkpoint {QStringLiteral("CZ"), Art_L24::CZ}, // Censor Zone {QStringLiteral("EA"), Art_L24::EA}, // Engagement Area {QStringLiteral("EZ"), Art_L24::EZ}, // Engagement Zone {QStringLiteral("FLET"), Art_L24::FLET}, // Forward Line of Enemy Troops {QStringLiteral("FLOT"), Art_L24::FLOT}, // Forward Line of Own Troops {QStringLiteral("FOAZI"), Art_L24::FOAZI}, // Fallout Area Zone I {QStringLiteral("FOAZII"), Art_L24::FOAZII}, // Fallout Area Zone II {QStringLiteral("IZ"), Art_L24::IZ}, // Inhibit Zone {QStringLiteral("LZ"), Art_L24::LZ}, // Locating Zone {QStringLiteral("MA"), Art_L24::MA}, // Mined Area {QStringLiteral("NAI"), Art_L24::NAI}, // Named Area of Interest {QStringLiteral("OA"), Art_L24::OA}, // Objective Area {QStringLiteral("PL"), Art_L24::PL}, // Phase Line {QStringLiteral("ROTACA"), Art_L24::ROTACA}, // ROT A Contaminated Area {QStringLiteral("ROTAHA"), Art_L24::ROTAHA}, // ROT A Hazard Area {QStringLiteral("ROTARA"), Art_L24::ROTARA}, // ROT A Release Area {QStringLiteral("ROUTE"), Art_L24::ROUTE}, // Movement Route {QStringLiteral("RP"), Art_L24::RP}, // Release Point {QStringLiteral("SP"), Art_L24::SP}, // Starting Point {QStringLiteral("TAI"), Art_L24::TAI}, // Target Area of Interest {QStringLiteral("FEBA"), Art_L24::FEBA}, // Forward Edge of the Battle Area {QStringLiteral("VZL"), Art_L24::VZL}, // Delay Line {QStringLiteral("MFLD"), Art_L24::MFLD}, // Minefield {QStringLiteral("ZOF"), Art_L24::ZOF}, // Zone of Fire {QStringLiteral("TAREA"), Art_L24::TAREA}, // Target Area {QStringLiteral("PP"), Art_L24::PP}, // Passage Point {QStringLiteral("AMA"), Art_L24::AMA}, // Artillery Maneuver Area {QStringLiteral("ARA"), Art_L24::ARA}, // Artillery Reserved Area }; // EX-L25 HQ(K) Art const QMap art_L25Map = { {QStringLiteral("FFA"), ProjectDataManagement::L25_KindGuidingLine::FFA}, {QStringLiteral("NFA"), ProjectDataManagement::L25_KindGuidingLine::NFA}, {QStringLiteral("RFA"), ProjectDataManagement::L25_KindGuidingLine::RFA}, {QStringLiteral("FSCL"), ProjectDataManagement::L25_KindGuidingLine::FSCL}, {QStringLiteral("RFL"), ProjectDataManagement::L25_KindGuidingLine::RFL}, {QStringLiteral("FSSL"), ProjectDataManagement::L25_KindGuidingLine::FSSL}, {QStringLiteral("NFL"), ProjectDataManagement::L25_KindGuidingLine::NFL}, }; // EX-L28 Status const QMap StatusL28Map = { {QStringLiteral("Nicht einsatzbereit"), ProjectDataManagement::L28_Status::NichtEinsatzbereit}, {QStringLiteral("Einsatzbereit"), ProjectDataManagement::L28_Status::Einsatzbereit}}; // EX-L32 Status const QMap StatusL32Map = { {QStringLiteral("INV"), Status_L32::INV}, // Meldung nicht gültig nach JSON-Schema. {QStringLiteral("DAT"), Status_L32::DAT}, // Datenkonsistenzfehler. }; // EX-L40 Szenarstatus const QMap szenarstatusMap = { {QStringLiteral("Inaktiv"), Szenarstatus::Inaktiv}, // Es ist keine Szenarausfuehrung aktiv. {QStringLiteral("Geplant"), Szenarstatus::Geplant}, // Das Szenar wird gestartet. {QStringLiteral("Aktiv"), Szenarstatus::Aktiv}, // Das Szenar wird ausgefuehrt. {QStringLiteral("Gestoppt"), Szenarstatus::Gestoppt}, // Das Szenar wurde gestoppt }; // EX-L43 Winkelgruppe const QMap winkelgruppeMap = { {QStringLiteral("Untere"), Winkelgruppe::Untere}, {QStringLiteral("Obere"), Winkelgruppe::Obere}, }; // EX-L44 Flugbahnberechnung Fehlercode const QMap FehlercodeMap = { {QStringLiteral("ok"), FlugbahnberechnungFehlercode::Ok}, // Erfolg {QStringLiteral("MinimaleEntfernung"), FlugbahnberechnungFehlercode::MinimaleEntfernung}, // Unterhalb der minimalen Entfernung {QStringLiteral("MaximaleEntfernung"), FlugbahnberechnungFehlercode::MaximaleEntfernung}, // Oberhalb der maximalen Entfernung {QStringLiteral("GeschossKombination"), FlugbahnberechnungFehlercode::GeschossKombination}, // Ungueltige Geschosskombination {QStringLiteral("Ungueltig"), FlugbahnberechnungFehlercode::Ungueltig}, // Ungueltig }; // EX-L45 Anmeldebestaetigung Fehlercode const QMap AnmeldebestaetigungFehlercodeMap = { {QStringLiteral("ok"), L45_AnmeldebestaetigungFehlercode::Ok}, {QStringLiteral("doppelt"), L45_AnmeldebestaetigungFehlercode::Doppelt}, {QStringLiteral("mehrfach"), L45_AnmeldebestaetigungFehlercode::Mehrfach}, {QStringLiteral("belegt"), L45_AnmeldebestaetigungFehlercode::Belegt}, }; // EX-L46 GPS Frequenz const QMap GpsFrequencyMap = {{QStringLiteral("L1"), ProjectDataManagement::L46_GpsFrequency::L1}, {QStringLiteral("L1"), ProjectDataManagement::L46_GpsFrequency::L2}}; // EX-L48 Rakete Trajektorie const QMap TrajectoryRocketMap = {{QStringLiteral("Nominal"), ProjectDataManagement::L48_TrajectoryRocket::Nominal}, {QStringLiteral("Vertical"), ProjectDataManagement::L48_TrajectoryRocket::Vertical}}; // EX-Koordinierungsdaten void SAATELEGRAMS_EXPORT koordinierungsdatenFromJson(const QJsonObject &data, Koordinierungsdaten &koordinierungsdaten, bool &bOk); void SAATELEGRAMS_EXPORT koordinierungsdatenToJson(QJsonObject &data, const Koordinierungsdaten &koordinierungsdaten); // 7.1.17 EX-HQ(G) Fuehrungslinien und Grenzen void SAATELEGRAMS_EXPORT fuehrungsdatenFromJson(const QJsonObject &data, Fuehrungsdaten &fuehrungsdaten, bool &bOk); void SAATELEGRAMS_EXPORT fuehrungsdatenToJson(QJsonObject &data, const Fuehrungsdaten &fuehrungsdaten); // EX-FeuerHaltDaten void SAATELEGRAMS_EXPORT feuerHaltDatenFromJson(const QJsonObject &data, FeuerHaltDaten &feuerHaltDaten, bool &bOk); void SAATELEGRAMS_EXPORT feuerHaltDatenToJson(QJsonObject &data, const FeuerHaltDaten &feuerHaltDaten); // EX-L49 Wirkmittel Feuerkommando Rakete void SAATELEGRAMS_EXPORT wirkmittelFeuerkommandoRaketeToJson(QJsonObject &data, const WirkmittelFeuerkommandoRakete &wirkmittelFeuerkommandoRakete); void SAATELEGRAMS_EXPORT wirkmittelFeuerkommandoRaketeFromJson(const QJsonObject &data, WirkmittelFeuerkommandoRakete &wirkmittelFeuerkommandoRakete, bool &bOk); int SAATELEGRAMS_EXPORT getFeuerkommandoRaketeEffectDurationMsec(const QJsonObject &data); } // namespace AdlerJson