- 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>
1597 lines
65 KiB
C++
Executable File
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
|