241 lines
12 KiB
C++
241 lines
12 KiB
C++
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#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);
|
|
for (unsigned int i = 0; i < cnt; ++i) {
|
|
uint16_t telId = sammelTelegram->getPayloadDataUInt32(ANZAHL_POS + SIZE_POS + 2 * i, 2);
|
|
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;
|
|
}
|
|
|
|
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");
|
|
}
|
|
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;
|
|
}
|
|
}
|