Files
qt5-legatus-legacy/Lts/Proxies/TrainingAreaBase/Plugins/AdlerJson/telegrams.h
T
torstenandCopilot 3028302f7b Qt6 Migration: Merge latest Qt5 devel content and apply migration fixes
- Merged 292 changed files from dlbo snapshot
- Fixed IDL enum collisions (PortType, PdmEventType)
- Fixed Grantlee template for C++11 scoped enums
- Fixed CMake VERSION_GREATER syntax
- Added missing directories (THP, LtsRestClient, etc.)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-09-15 18:20:51 +00:00

1597 lines
65 KiB
C++
Executable File

#pragma once
#include "adler_export.h"
#include <QChar>
#include <QDateTime>
#include <QJsonArray>
#include <QJsonObject>
#include <QString>
#include <QUuid>
#include <QVector>
#include <ProjectDataManagement/pdm_enums.hpp>
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 <typename T> QJsonObject toJsonInternal();
};
template <> QJsonObject SAATelegram::toJsonInternal<SAATelegram>();
/**
* @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 <typename T> QJsonObject toJsonInternal();
};
template <> QJsonObject EXTelegramBase::toJsonInternal<SAATelegram>();
template <> QJsonObject EXTelegramBase::toJsonInternal<EXTelegramBase>();
/**
* @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 <typename T> QJsonObject toJsonInternal();
};
template <> QJsonObject EXRegistration::toJsonInternal<EXRegistration>();
// /**
// * @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<typename T>
// QJsonObject toJsonInternal();
// };
struct SAATELEGRAMS_EXPORT EXDeregistration : EXTelegramBase
{
int partyId;
EXDeregistration()
: EXTelegramBase(JsonKeys::EX_DEREGISTRATION_REQUEST(), TelegramIds::EX_DEREGISTRATION_REQUEST())
{
}
QJsonObject toJson() override;
public:
template <typename T> QJsonObject toJsonInternal();
};
template <> QJsonObject EXDeregistration::toJsonInternal<EXDeregistration>();
struct SAATELEGRAMS_EXPORT EXConnectionTestRequest : public EXTelegramBase
{
EXConnectionTestRequest()
: EXTelegramBase(JsonKeys::EX_CONNECTION_TEST_REQUEST(), TelegramIds::EX_CONNECTION_TEST_REQUEST())
{
}
QJsonObject toJson() override;
public:
template <typename T> 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 <typename T> 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 <typename T> QJsonObject toJsonInternal();
};
void SAATELEGRAMS_EXPORT statusFromJson(const QJsonObject &data, EXStatus &eXStatus, bool &bOk);
/////////////////////////
// Fachliche Meldungen //
/////////////////////////
template <> QJsonObject EXStatus::toJsonInternal<EXStatus>();
// ======================================================================================================
// 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<QString, ProjectDataManagement::L26_EffectingSystemType> waffensystemtypMap = {
{QStringLiteral("Pzh2000"), ProjectDataManagement::L26_EffectingSystemType::Pzh2000},
{QStringLiteral("RRohr"), ProjectDataManagement::L26_EffectingSystemType::RRohr},
{QStringLiteral("Mars"), ProjectDataManagement::L26_EffectingSystemType::Mars},
};
// EX-L27 Waffensystemkenner
const QMap<QString, ProjectDataManagement::L27_EffectorId> 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<KoordinateMitHoehe> 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> 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<Treffpunkt> 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<WirkmittelFeuerkommando> wirkmittel; // EX-L34
QVector<WirkmittelFeuerkommandoRakete> 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<Feuerkommando> 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<KoordinateMitHoehe> koordinaten; // EX-L14
QVector<Geschoss> 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<Geschoss> 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<Geschoss> 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<Koordinate> 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<Koordinate> 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> 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 <typename T> QJsonObject toJsonInternal();
};
template <> QJsonObject ExAwesPlanning::toJsonInternal<ExAwesPlanning>();
// 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 <typename T> QJsonObject toJsonInternal();
};
template <> QJsonObject ExFeuerbereit::toJsonInternal<ExFeuerbereit>();
// 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 <typename T> QJsonObject toJsonInternal();
};
template <> QJsonObject ExFeuern::toJsonInternal<ExFeuern>();
// 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 <typename T> QJsonObject toJsonInternal();
};
template <> QJsonObject ExFeuern::toJsonInternal<ExAbgefeuert>();
// 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 <typename T> QJsonObject toJsonInternal();
};
template <> QJsonObject ExFeuern::toJsonInternal<ExVollzugsmeldung>();
// // 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<typename T>
// QJsonObject toJsonInternal();
// };
// template<>
// QJsonObject ExFeuern::toJsonInternal<ExErkundungsanfrage>();
// 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 <typename T> QJsonObject toJsonInternal();
};
template <> QJsonObject ExFeuern::toJsonInternal<ExErkundungsergebnisse>();
// 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 <typename T> QJsonObject toJsonInternal();
};
template <> QJsonObject ExFeuern::toJsonInternal<ExFeuerkampf>();
// 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 <typename T> QJsonObject toJsonInternal();
};
template <> QJsonObject ExFeuern::toJsonInternal<ExFeuerhalt>();
// 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 <typename T> QJsonObject toJsonInternal();
};
template <> QJsonObject ExFeuerstellungFS::toJsonInternal<ExFeuerstellungFS>();
// 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 <typename T> QJsonObject toJsonInternal();
};
template <> QJsonObject ExFeuerstellungWS::toJsonInternal<ExFeuerstellungWS>();
// 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 <typename T> QJsonObject toJsonInternal();
};
template <> QJsonObject ExFeuerstellungLP::toJsonInternal<ExFeuerstellungLP>();
// 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 <typename T> QJsonObject toJsonInternal();
};
template <> QJsonObject ExStellungswechsel::toJsonInternal<ExStellungswechsel>();
// 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 <typename T> QJsonObject toJsonInternal();
};
template <> QJsonObject ExHqKoordinierungsmassnahmen::toJsonInternal<ExHqKoordinierungsmassnahmen>();
// 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 <typename T> QJsonObject toJsonInternal();
};
template <> QJsonObject ExHqFuehrungslinien::toJsonInternal<ExHqFuehrungslinien>();
// 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 <typename T> QJsonObject toJsonInternal();
};
template <> QJsonObject ExTqTechnischeQuittung::toJsonInternal<ExTqTechnischeQuittung>();
// 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 <typename T> QJsonObject toJsonInternal();
};
template <> QJsonObject ExAqFreitextmeldung::toJsonInternal<ExAqFreitextmeldung>();
// 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 <typename T> QJsonObject toJsonInternal();
};
template <> QJsonObject ExMqManuelleQuittung::toJsonInternal<ExMqManuelleQuittung>();
// 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 <typename T> QJsonObject toJsonInternal();
};
template <> QJsonObject exNichtFeuern::toJsonInternal<exNichtFeuern>();
// 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 <typename T> QJsonObject toJsonInternal();
};
template <> QJsonObject ExAnmeldebestaetigung::toJsonInternal<ExAnmeldebestaetigung>();
// 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 <typename T> QJsonObject toJsonInternal();
};
template <> QJsonObject ExFlugbahnberechnung::toJsonInternal<ExFlugbahnberechnung>();
// 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 <typename T> QJsonObject toJsonInternal();
};
template <> QJsonObject ExFlugbahndaten::toJsonInternal<Flugbahndaten>();
// --------------------------------------------
// Enum-Maps:
// --------------------------------------------
// EX-L4 Zielgeometrie
const QMap<QString, ProjectDataManagement::L4_TargetGeometry> 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<QString, Abfeuerungsart> 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<QString, ProjectDataManagement::L7_Request> 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<QString, ProjectDataManagement::L19_Oi> 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<QString, ProjectDataManagement::L22_FireHaltCategory> 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<QString, Art_L24> 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<QString, ProjectDataManagement::L25_KindGuidingLine> 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<QString, ProjectDataManagement::L28_Status> StatusL28Map = {
{QStringLiteral("Nicht einsatzbereit"), ProjectDataManagement::L28_Status::NichtEinsatzbereit},
{QStringLiteral("Einsatzbereit"), ProjectDataManagement::L28_Status::Einsatzbereit}};
// EX-L32 Status
const QMap<QString, Status_L32> StatusL32Map = {
{QStringLiteral("INV"), Status_L32::INV}, // Meldung nicht gültig nach JSON-Schema.
{QStringLiteral("DAT"), Status_L32::DAT}, // Datenkonsistenzfehler.
};
// EX-L40 Szenarstatus
const QMap<QString, Szenarstatus> 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<QString, Winkelgruppe> winkelgruppeMap = {
{QStringLiteral("Untere"), Winkelgruppe::Untere},
{QStringLiteral("Obere"), Winkelgruppe::Obere},
};
// EX-L44 Flugbahnberechnung Fehlercode
const QMap<QString, FlugbahnberechnungFehlercode> 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<QString, L45_AnmeldebestaetigungFehlercode> 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<QString, ProjectDataManagement::L46_GpsFrequency> GpsFrequencyMap
= {{QStringLiteral("L1"), ProjectDataManagement::L46_GpsFrequency::L1}, {QStringLiteral("L1"), ProjectDataManagement::L46_GpsFrequency::L2}};
// EX-L48 Rakete Trajektorie
const QMap<QString, ProjectDataManagement::L48_TrajectoryRocket> 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