Files
qt-migration-legatus/qt6-after/qt6-migrated-legatus/TetraIF/CoPrtCnv/CoPrtCnvHexDumpHelper.cpp
T

413 lines
14 KiB
C++

// **************************************************************************
//
// @RDE_HEADER@
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// Helper to dump the data in hex
// **************************************************************************
#include "CoPrtCnvHexDumpHelper.hpp"
#include "CoPrtCnvRadioTelegram.hpp"
#include <QtCore/QByteArray>
#include <NGLLogger/NGLLoggerBootstrap.h>
static std::string dumpSammeldeaktivierung(const N_CoPrtCnv::CoPrtCnvRadioTelegram *sammelTelegram)
{
const int ANZAHL_POS = 5;
const int SIZE_POS = sammelTelegram->getTelID() == GEF_WF_SAMMELDEAKTIVIERUNG_DUS_MINEN ? 2 : 1;
std::stringstream sstream;
unsigned int cnt = sammelTelegram->getPayloadDataUInt32(ANZAHL_POS, SIZE_POS); // anzahl
for (unsigned int i = 0; i < cnt; ++i)
{
uint16_t telId = sammelTelegram->getPayloadDataUInt32(ANZAHL_POS + SIZE_POS + 2 * i, 2); // add kennung
sstream << telId << " ";
}
return sstream.str();
}
QByteArray telegramId2String(gef_telegramm_id_et telId)
{
const char *str = nullptr;
switch (telId)
{
case GEF_BESTAETIGUNG:
str = "GEF_BESTAETIGUNG";
break;
case GEF_INIT:
str = "GEF_INIT";
break;
case GEF_MANIPULATIONSMELDUNG:
str = "GEF_MANIPULATIONSMELDUNG";
break;
case GEF_UMGEBUNGS_MELDUNG2:
str = "GEF_UMGEBUNGS_MELDUNG2";
break;
case GEF_AUFFORDERUNG_BITE_MELDUNG:
str = "GEF_AUFFORDERUNG_BITE_MELDUNG";
break;
case GEF_BITE_MELDUNG2:
str = "GEF_BITE_MELDUNG2";
break;
case GEF_LIZENSIERUNG_TNE:
str = "GEF_LIZENSIERUNG_TNE";
break;
case GEF_BETRIEBSZUSTAND_AUSSTATTUNG:
str = "GEF_BETRIEBSZUSTAND_AUSSTATTUNG";
break;
case GEF_KONFIGURATION_WIRKMODELL:
str = "GEF_KONFIGURATION_WIRKMODELL";
break;
case GEF_ANFORDERUNG_KONFIGURATIONSDATEN:
str = "GEF_ANFORDERUNG_KONFIGURATIONSDATEN";
break;
case GEF_KONFIGURATIONSMELDUNG:
str = "GEF_KONFIGURATIONSMELDUNG";
break;
case GEF_FEHLERMELDUNG_GFD:
str = "GEF_FEHLERMELDUNG_GFD";
break;
case GEF_WIEDERHERSTELLUNG_FUNKBEREITSCHAFT:
str = "GEF_WIEDERHERSTELLUNG_FUNKBEREITSCHAFT";
break;
case GEF_POSITIONS_MELDUNG:
str = "GEF_POSITIONS_MELDUNG";
break;
case GEF_POSITIONS_MELDUNG_MIT_TEILNEHMER:
str = "GEF_POSITIONS_MELDUNG_MIT_TEILNEHMER";
break;
case GEF_POSITIONS_MELDUNG_LFZ:
str = "GEF_POSITIONS_MELDUNG_LFZ";
break;
case GEF_IPS_POSITIONSDATEN:
str = "GEF_IPS_POSITIONSDATEN";
break;
case GEF_SCHIEDSRICHTERKOMMANDO:
str = "GEF_SCHIEDSRICHTERKOMMANDO";
break;
case GEF_WIRKFELD_EINZELGESCHOSS:
str = "GEF_WIRKFELD_EINZELGESCHOSS";
break;
case GEF_WIRKFELD_FLAECHENDECKENDES_FEUER:
str = "GEF_WIRKFELD_FLAECHENDECKENDES_FEUER";
break;
case GEF_WIRKFELD_FLAECHENDECKENDES_FEUER_STOP:
str = "GEF_WIRKFELD_FLAECHENDECKENDES_FEUER_STOP";
break;
case GEF_WIRKFELD_FLAECHENDECKENDES_FEUER_FORTSETZEN:
str = "GEF_WIRKFELD_FLAECHENDECKENDES_FEUER_FORTSETZEN";
break;
case GEF_WIRKFELD_MINENSPERRE:
str = "GEF_WIRKFELD_MINENSPERRE";
break;
case GEF_WIRKFELD_STATUS_MINENSPERRE:
str = "GEF_WIRKFELD_STATUS_MINENSPERRE";
break;
case GEF_WIRKFELD_A_KAMPFMITTEL:
str = "GEF_WIRKFELD_A_KAMPFMITTEL";
break;
case GEF_WIRKFELD_C_KAMPFMITTEL:
str = "GEF_WIRKFELD_C_KAMPFMITTEL";
break;
case GEF_DEAKTIVIERUNG_WIRKFELD:
str = "GEF_DEAKTIVIERUNG_WIRKFELD";
break;
case GEF_WIRKFELD_AENDERUNG_BEZEICHNER:
str = "GEF_WIRKFELD_AENDERUNG_BEZEICHNER";
break;
case GEF_DEAKTIVIERUNG_EINZELMINE:
str = "GEF_DEAKTIVIERUNG_EINZELMINE";
break;
case GEF_REAKTIVIERUNG_DUS_MINE:
str = "GEF_REAKTIVIERUNG_DUS_MINE";
break;
case GEF_DEFINITION_IED:
str = "GEF_DEFINITION_IED";
break;
case GEF_ZUSTAND_IED:
str = "GEF_ZUSTAND_IED";
break;
case GEF_STATUS_EINZELMINENSIMULATOR:
str = "GEF_STATUS_EINZELMINENSIMULATOR";
break;
case GEF_WIRKFELD_EINZELMINENSIMULATOR:
str = "GEF_WIRKFELD_EINZELMINENSIMULATOR";
break;
case GEF_TREFFER_EREIGNIS_DUS:
str = "GEF_TREFFER_EREIGNIS_DUS";
break;
case GEF_TREFFER_EREIGNIS_WIRKSIMULATION:
str = "GEF_TREFFER_EREIGNIS_WIRKSIMULATION";
break;
case GEF_TREFFER_AUSLOESUNG:
str = "GEF_TREFFER_AUSLOESUNG";
break;
case GEF_SCHIEDSRICHTEREINGRIFF:
str = "GEF_SCHIEDSRICHTEREINGRIFF";
break;
case GEF_SELEKTIVE_AUFMUNITIONIERUNG:
str = "GEF_SELEKTIVE_AUFMUNITIONIERUNG";
break;
case GEF_TREFFER_EREIGNIS_SEKUNDAERWIRKUNG:
str = "GEF_TREFFER_EREIGNIS_SEKUNDAERWIRKUNG";
break;
case GEF_TREFFER_EREIGNIS_DUS_IPS:
str = "GEF_TREFFER_EREIGNIS_DUS_IPS";
break;
case GEF_TREFFER_EREIGNIS_WIRKSIMULATION_IPS:
str = "GEF_TREFFER_EREIGNIS_WIRKSIMULATION_IPS";
break;
case GEF_TAKTISCHER_STATUS:
str = "GEF_TAKTISCHER_STATUS";
break;
case GEF_FUNKTIONSRAUM:
str = "GEF_FUNKTIONSRAUM";
break;
case GEF_EINTRETEN_FUNKTIONSRAUM:
str = "GEF_EINTRETEN_FUNKTIONSRAUM";
break;
case GEF_DEAKTIVIEREN_FUNKTIONSRAUM:
str = "GEF_DEAKTIVIEREN_FUNKTIONSRAUM";
break;
case GEF_DATENVERKEHR_SRT_TDS:
str = "GEF_DATENVERKEHR_SRT_TDS";
break;
case GEF_DATENVERKEHR_TDS_SRT:
str = "GEF_DATENVERKEHR_TDS_SRT";
break;
case GEF_DATENVERKEHR_DMF_TDS:
str = "GEF_DATENVERKEHR_DMF_TDS";
break;
case GEF_DATENVERKEHR_TDS_DMF:
str = "GEF_DATENVERKEHR_TDS_DMF";
break;
case GEF_NACHFORDERUNG_BROADCAST_TELEGRAMME:
str = "GEF_NACHFORDERUNG_BROADCAST_TELEGRAMME";
break;
case GEF_NOP:
str = "GEF_NOP";
break;
case GEF_SONDERSENSORIK_BETRIEBSZUSTAND:
str = "GEF_SONDERSENSORIK_BETRIEBSZUSTAND";
break;
case GEF_SONDERSENSORIK_FAHRSPUR:
str = "GEF_SONDERSENSORIK_FAHRSPUR";
break;
case GEF_SONDERSENSORIK_DATEN:
str = "GEF_SONDERSENSORIK_DATEN";
break;
case GEF_SONDERSENSORIK_MIVANH_VERLEGEDATEN:
str = "GEF_SONDERSENSORIK_MIVANH_VERLEGEDATEN";
break;
case GEF_SONDERSENSORIK_WMIV_VERLEGEDATEN:
str = "GEF_SONDERSENSORIK_WMIV_VERLEGEDATEN";
break;
case GEF_SONDERSENSORIK_MIVANH_VERLEGEPOSITION:
str = "GEF_SONDERSENSORIK_MIVANH_VERLEGEPOSITION";
break;
case GEF_SPRACHAUSWAHL:
str = "GEF_SPRACHAUSWAHL";
break;
case GEF_ALLGEMEINE_NACHRICHT:
str = "GEF_ALLGEMEINE_NACHRICHT";
break;
case GEF_ECHO_ON_OFF:
str = "GEF_ECHO_ON_OFF";
break;
case GEF_ESW_MELDUNG:
str = "GEF_ESW_MELDUNG";
break;
case GEF_WF_SAMMELDEAKTIVIERUNG:
str = "GEF_WF_SAMMELDEAKTIVIERUNG";
break;
case GEF_WF_SAMMELDEAKTIVIERUNG_DUS_MINEN:
str = "GEF_WF_SAMMELDEAKTIVIERUNG_DUS_MINEN";
break;
case GEF_WF_SAMMELDEAKTIVIERUNG_FUNKTIONSRAUM:
str = "GEF_WF_SAMMELDEAKTIVIERUNG_FUNKTIONSRAUM";
break;
case GEF_DATENVERKEHR_GEOP_TDS:
str = "GEF_DATENVERKEHR_GEOP_TDS";
break;
case GEF_DATENVERKEHR_TDS_GEOP:
str = "GEF_DATENVERKEHR_TDS_GEOP";
break;
case GEF_DATENVERKEHR_TGTC_TDS:
str = "GEF_DATENVERKEHR_TGTC_TDS";
break;
case GEF_DATENVERKEHR_TDS_TGTC:
str = "GEF_DATENVERKEHR_TDS_TGTC";
break;
case GEF_GERAETEEREIGNIS:
str = "GEF_GERAETEEREIGNIS";
break;
case GEF_WAFFENZUORDNUNG:
str = "GEF_WAFFENZUORDNUNG";
break;
case GEF_MUNITIONSVORRAT_EINER_ZUGEORDNETEN_WAFFE:
str = "GEF_MUNITIONSVORRAT_EINER_ZUGEORDNETEN_WAFFE";
break;
case GEF_FEUEREREIGNIS_MIT_WAFFENZUORDNUNG:
str = "GEF_FEUEREREIGNIS_MIT_WAFFENZUORDNUNG";
break;
case GEF_AUSLOESUNG_DUS_TREFFER:
str = "GEF_AUSLOESUNG_DUS_TREFFER";
break;
case GEF_ANFORDERUNG_SW_VERSION:
str = "GEF_ANFORDERUNG_SW_VERSION";
break;
case GEF_SW_VERSIONSMELDUNG:
str = "GEF_SW_VERSIONSMELDUNG";
break;
case GEF_TECHNIK_FUNKTIONSRAUM:
str = "GEF_TECHNIK_FUNKTIONSRAUM";
break;
case GEF_TEILNEHMERMODE_SETZEN:
str = "GEF_TEILNEHMERMODE_SETZEN";
break;
case GEF_TEILNEHMERMODE_MELDUNG:
str = "GEF_TEILNEHMERMODE_MELDUNG";
break;
case GEF_TEILNEHMERMODE_ANFORDERN:
str = "GEF_TEILNEHMERMODE_ANFORDERN";
break;
case GEF_TEILNEHMER_KONFIG_ANTWORT:
str = "GEF_TEILNEHMER_KONFIG_ANTWORT";
break;
case GEF_TEILNEHMER_KONFIG_SETZEN:
str = "GEF_TEILNEHMER_KONFIG_SETZEN";
break;
case GEF_TEILNEHMER_KONFIG_ANFORDERN:
str = "GEF_TEILNEHMER_KONFIG_ANFORDERN";
break;
case GEF_SANITAETSDIENST_INSTANDSETZUNG:
str = "GEF_SANITAETSDIENST_INSTANDSETZUNG";
break;
case GEF_SANITAETSDIENST_INSTANDSETZUNG_PVSAN:
str = "GEF_SANITAETSDIENST_INSTANDSETZUNG_PVSAN";
break;
case GEF_BESTANDSMELDUNG_SANITAETSMATERIAL:
str = "GEF_BESTANDSMELDUNG_SANITAETSMATERIAL";
break;
case GEF_GEFECHTSFELDTELEGRAMM:
str = "GEF_GEFECHTSFELDTELEGRAMM";
break;
default:
break;
}
Q_ASSERT(str);
if (!str)
str = "Unknown";
return str + QByteArray(" (") + QByteArray::number(int(telId)) + ")";
}
QString wirkfeldTyp2Str(TrainingAreaBase::TetraIcd::AreaEffectSimulationType wirkfeldTyp)
{
switch (wirkfeldTyp)
{
case TrainingAreaBase::TetraIcd::AreaEffectSimulationType::MineArea:
return QLatin1String("MINENSPERRE");
case TrainingAreaBase::TetraIcd::AreaEffectSimulationType::ExplosionArea:
return QLatin1String("FLAECHENFEUER");
case TrainingAreaBase::TetraIcd::AreaEffectSimulationType::ExplosionSingle:
return QLatin1String("EINZELFEUER");
case TrainingAreaBase::TetraIcd::AreaEffectSimulationType::NContamination:
return QLatin1String("A_KAMPF");
case TrainingAreaBase::TetraIcd::AreaEffectSimulationType::CContamination:
return QLatin1String("C_KAMPF");
case TrainingAreaBase::TetraIcd::AreaEffectSimulationType::FunctionalArea:
return QLatin1String("FUNKTIONS_RAUM");
case TrainingAreaBase::TetraIcd::AreaEffectSimulationType::TechnicalArea:
return QLatin1String("FUNKTIONS_RAUM_TECHNIK");
case TrainingAreaBase::TetraIcd::AreaEffectSimulationType::GasPipeDetonation:
return QLatin1String("GAS_PIPE_DETONATION");
case TrainingAreaBase::TetraIcd::AreaEffectSimulationType::SpecialArea:
return QLatin1String("SPECIAL_AREA");
case TrainingAreaBase::TetraIcd::AreaEffectSimulationType::Unknown:
return QLatin1String("DUS");
case TrainingAreaBase::TetraIcd::AreaEffectSimulationType::DusSingleMineSimulator:
return QLatin1String("DUS_SINGLE_MINE_SIMULATOR");
case TrainingAreaBase::TetraIcd::AreaEffectSimulationType::BeStillWarning:
return QLatin1String("BE_STILL_WARNING");
default:
break;
}
return QStringLiteral("Unknown Wirkfeldtyp <%1>").arg(static_cast<int>(wirkfeldTyp));
}
static inline QString wirkfeldTyp2Str(int typ)
{
return wirkfeldTyp2Str(static_cast<TrainingAreaBase::TetraIcd::AreaEffectSimulationType>(typ));
}
void dumpTelegram(NGL::INGLLogger &m_logger, int id, N_CoPrtCnv::CoPrtCnvRadioTelegram *a_radioTelegram, const char *prefix)
{
if (!m_logger.isDebugEnabled())
return;
if (!prefix)
prefix = "";
const QByteArray commonLog(prefix + QByteArray("BC: ") + QByteArray::number(id) + ", " + telegramId2String(a_radioTelegram->getTelID()));
switch (a_radioTelegram->getTelID())
{
case GEF_DEAKTIVIERUNG_WIRKFELD:
case GEF_WIRKFELD_AENDERUNG_BEZEICHNER:
{
uint8_t wirkfeldTyp = a_radioTelegram->getPayloadDataUInt32(5, 1);
uint16_t wirkfeldKennung = a_radioTelegram->getPayloadDataUInt32(6, 2);
DEBUG_LOG(m_logger) << commonLog << ", type: " << wirkfeldTyp2Str(wirkfeldTyp) << ", kennung: " << wirkfeldKennung;
break;
}
case GEF_DEAKTIVIERUNG_EINZELMINE:
{
uint32_t wirkfeldKennung = a_radioTelegram->getPayloadDataUInt32(9, 2);
uint32_t minenKennung = a_radioTelegram->getPayloadDataUInt32(11, 2);
DEBUG_LOG(m_logger) << commonLog << ", kennung: " << wirkfeldKennung << ", mineId: " << minenKennung;
break;
}
case GEF_WIRKFELD_STATUS_MINENSPERRE:
case GEF_WIRKFELD_A_KAMPFMITTEL:
case GEF_WIRKFELD_MINENSPERRE:
case GEF_WIRKFELD_FLAECHENDECKENDES_FEUER:
case GEF_WIRKFELD_FLAECHENDECKENDES_FEUER_STOP:
case GEF_WIRKFELD_FLAECHENDECKENDES_FEUER_FORTSETZEN:
case GEF_FUNKTIONSRAUM:
case GEF_DEAKTIVIEREN_FUNKTIONSRAUM:
{
uint16_t wirkfeldKennung = a_radioTelegram->getPayloadDataUInt32(5, 2);
DEBUG_LOG(m_logger) << commonLog << ", kennung: " << wirkfeldKennung;
break;
}
case GEF_TECHNIK_FUNKTIONSRAUM:
{
uint16_t funktionsraumkennung = a_radioTelegram->getPayloadDataUInt32(5, 2);
uint8_t funktionsraumtyp = a_radioTelegram->getPayloadDataUInt32(7, 1);
DEBUG_LOG(m_logger) << commonLog << ", kennung: " << funktionsraumkennung << " type: " << int(funktionsraumtyp);
break;
}
case GEF_WF_SAMMELDEAKTIVIERUNG:
case GEF_WF_SAMMELDEAKTIVIERUNG_DUS_MINEN:
case GEF_WF_SAMMELDEAKTIVIERUNG_FUNKTIONSRAUM:
DEBUG_LOG(m_logger) << commonLog << ", Ids: " << dumpSammeldeaktivierung(a_radioTelegram);
break;
case GEF_NOP:
{
uint16_t bcFrom = a_radioTelegram->getPayloadDataUInt32(3, 2);
uint16_t bcTo = a_radioTelegram->getPayloadDataUInt32(5, 2);
DEBUG_LOG(m_logger) << prefix << commonLog << ", from BC " << bcFrom << " to " << bcTo;
break;
}
default:
DEBUG_LOG(m_logger) << commonLog;
break;
}
}