- NGL_ADD_LIBRARY2: 87 CMakeLists.txt konvertiert für Export-Header Generierung - 44 Export-Header Include-Pfade korrigiert (_export.h) - 81 DDS-Stub-Header generiert (*_dtc.h, *_fts.h, *_dts.h, *_ftc.h) - INGLLogger: Duplikat gelöscht, m_logger Member entfernt, variadische Makros - Q_FUNC_INFO Redefinition behoben (Qt6 definiert bereits) - FATAL_LOG Makro hinzugefügt - InfrastructureManagement DDS-Stubs (ism.hpp, ism_enums.hpp, ism_ftc.h) - FilterManagement DDS-Stubs (flt_ftc.h, flt_dts.h) - AreaEffectSimulation DDS-Stubs (aes.hpp, aes_enums.hpp) - SymbolAppearance Klasse vollständig definiert mit content() Methode - BuildingComponentFilter Klasse definiert mit Copy-Konstruktor - Ftc Factory: nullptr Return (abstract class) - AesFilter Klasse in aes.hpp hinzugefügt - Dtc Klasse in ppm.hpp mit participantChanged Signal - AesType Enum: alle 15 At* Werte definiert - AesEffectState_def: EsReceived hinzugefügt - DataModification Enum: eAdded/eModified/eRemoved - function_reply_object.h → core_types.h Include-Pfad (72 Dateien) - Enum-Class-Streaming Template-Operator in INGLLogger.h - ism_mounting_point.h: QImage → QtGui/QImage, QGuiApplication/QScreen - ism_data_plugin_interface.h: QSet Include, Include-Reihenfolge - QRegExp → QRegularExpression in tpm_js_parser.cpp - .underlying() Aufrufe zu direktem Enum-Vergleich korrigiert - Include-Pfade: aes.hpp in symbol_appearance_settings_impl.h und aes_display_filter_impl.h Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
172 lines
4.7 KiB
C++
Executable File
172 lines
4.7 KiB
C++
Executable File
|
|
|
|
|
|
#include "send_to_dds.h"
|
|
|
|
#include <QPointF>
|
|
|
|
#include "main_handler.h"
|
|
|
|
namespace TrainingAreaBaseOC
|
|
{
|
|
|
|
SendToDds::SendToDds(MainHandler *mainHandler)
|
|
: m_dtsTaboc(mainHandler->dds()->dtsTaboc())
|
|
, m_dtsTab(mainHandler->dds()->dtsTab())
|
|
, m_utmCoord(LtsCoordTrans::UtmCoordinate())
|
|
, m_idToSend(1)
|
|
{}
|
|
|
|
void SendToDds::rxData(const OcTelegrams::Display &inData)
|
|
{
|
|
if (0 == inData.multiplexer)
|
|
{
|
|
TrainingAreaBaseOC::ShortMessage outData;
|
|
outData.id(m_idToSend++);
|
|
|
|
outData.textType(static_cast<long>(inData.textType));
|
|
outData.indexVbg(inData.indexVbg);
|
|
outData.indexVba(inData.indexVba);
|
|
outData.timeStamp(QDateTime::currentDateTimeUtc().toMSecsSinceEpoch());
|
|
|
|
m_dtsTaboc->publish(outData);
|
|
}
|
|
else
|
|
{
|
|
TrainingAreaBaseOC::FreeText outData;
|
|
outData.id(m_idToSend++);
|
|
outData.text(inData.text.data());
|
|
outData.timeStamp(QDateTime::currentDateTimeUtc().toMSecsSinceEpoch());
|
|
|
|
m_dtsTaboc->publish(outData);
|
|
}
|
|
}
|
|
|
|
void SendToDds::rxData(const OcTelegrams::TimeSync &inData)
|
|
{
|
|
TrainingAreaBaseOC::TimeSync outData;
|
|
outData.id(1);
|
|
|
|
outData.gpsTime(inData.gpsTimeMsec);
|
|
outData.timezone(inData.timezone);
|
|
|
|
m_dtsTaboc->publish(outData);
|
|
}
|
|
|
|
void SendToDds::rxData(const OcTelegrams::SpecificsExercise &inData)
|
|
{
|
|
m_utmCoord = LtsCoordTrans::UtmCoordinate::fromMgrs(QString::number(inData.zone) +
|
|
QLatin1Char(inData.band) +
|
|
QString::fromLatin1(inData.square) +
|
|
QString::number(inData.northing).rightJustified(7, QLatin1Char('0')) +
|
|
QString::number(inData.easting).rightJustified(7, QLatin1Char('0')));
|
|
|
|
TrainingAreaBaseOC::SpecificsExercise outData;
|
|
outData.id(1);
|
|
|
|
outData.exerciseId(inData.exerciseId);
|
|
outData.zone(inData.zone);
|
|
outData.band(inData.band);
|
|
outData.square(inData.square.data());
|
|
outData.easting(inData.easting);
|
|
outData.northing(inData.northing);
|
|
|
|
m_dtsTaboc->publish(outData);
|
|
}
|
|
|
|
void SendToDds::rxData(const OcTelegrams::SpecificsEquipment &inData)
|
|
{
|
|
TrainingAreaBaseOC::SpecificsEquipment outData;
|
|
outData.id(1);
|
|
|
|
outData.equipmentNumber(inData.equipmentNumber);
|
|
outData.playerType(inData.playerType);
|
|
outData.language(static_cast<ProjectDataManagement::LanguageConfiguration::inner_enum>(inData.language));
|
|
outData.pyrotechnics(inData.pyrotechnics);
|
|
outData.voiceOutput(inData.voiceOutput);
|
|
outData.exerciseBreak(inData.exerciseBreak);
|
|
|
|
m_dtsTaboc->publish(outData);
|
|
}
|
|
|
|
void SendToDds::rxData(const OcTelegrams::TechnicalStateSfm &inData)
|
|
{
|
|
TrainingAreaBaseOC::TechnicalStateSfm outData;
|
|
outData.id(1);
|
|
|
|
outData.sfmConnected(inData.sfmConnected);
|
|
outData.radioAvailable(inData.radioAvailable);
|
|
outData.licensed(inData.licensed);
|
|
outData.timeStamp(inData.gpsTimeMsec);
|
|
outData.batteryTest(inData.batteryTest);
|
|
outData.manipulationEquipment(inData.manipulationEquipment);
|
|
outData.manipulationSfm(inData.manipulationSfm);
|
|
outData.errorCode(inData.errorCode);
|
|
|
|
m_dtsTaboc->publish(outData);
|
|
}
|
|
|
|
void SendToDds::rxData(const OcTelegrams::EnterLeaveAes &inData)
|
|
{
|
|
TrainingAreaBaseOC::EnterLeaveAes outData;
|
|
outData.id(1);
|
|
|
|
outData.aesId(inData.aesId);
|
|
outData.aesEntered(inData.aesEntered);
|
|
outData.abcArea(inData.nbcArea);
|
|
outData.chargeTypeId(inData.chargeTasCode);
|
|
outData.cAreaType(inData.cAreaType);
|
|
|
|
m_dtsTaboc->publish(outData);
|
|
}
|
|
|
|
void SendToDds::rxData(const OcTelegrams::OwnPosition &inData)
|
|
{
|
|
TrainingAreaBaseOC::OwnPosition outData;
|
|
outData.id(1);
|
|
|
|
outData.valid(inData.valid);
|
|
outData.timeStamp(inData.gpsTimeMsec);
|
|
if (inData.valid)
|
|
{
|
|
const QPointF point(m_utmCoord.geographic(inData.easting, inData.northing));
|
|
outData.position(Core::GeoPosition(point.x(), point.y(), 0));
|
|
}
|
|
else
|
|
outData.position(Core::GeoPosition(nan(""), nan(""), 0));
|
|
|
|
m_dtsTaboc->publish(outData);
|
|
}
|
|
|
|
void SendToDds::rxData(const TrainingAreaBase::TetraIcd::OpaquePayloadDataBase &inData)
|
|
{
|
|
switch (inData.payloadType)
|
|
{
|
|
case TrainingAreaBase::TetraIcd::OpaquePayloadDataBase::Type::OC:
|
|
{
|
|
TrainingAreaBase::OcData outData;
|
|
outData.equipmentNumber(1);
|
|
outData.payload(inData.payload);
|
|
|
|
m_dtsTab->publish(outData);
|
|
break;
|
|
}
|
|
case TrainingAreaBase::TetraIcd::OpaquePayloadDataBase::Type::FireSmokeMarker:
|
|
{
|
|
TrainingAreaBase::FireSmokeMarkerData outData;
|
|
outData.equipmentNumber(1);
|
|
outData.payload(inData.payload);
|
|
|
|
m_dtsTab->publish(outData);
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
ERROR_LOG() << "Received unhandled TrainingAreaBase::TetraIcd::OpaquePayloadDataBase::Type " << static_cast<int>(inData.payloadType);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|