413 lines
14 KiB
C++
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;
|
|
}
|
|
}
|