Adds NmeaManagement tests, fixes codegen includes and Qt6 SerialPort CMake target.
366 lines
11 KiB
C++
Executable File
366 lines
11 KiB
C++
Executable File
#include "tln_utils.h"
|
|
#include "ProjectDataManagement/pdm_translation.h"
|
|
|
|
#include <QtCore/QHash>
|
|
#include <QtCore/QCoreApplication>
|
|
|
|
|
|
namespace Timeline
|
|
{
|
|
|
|
QString eventTypeString(EventType eventType)
|
|
{
|
|
switch (eventType)
|
|
{
|
|
case EventType::Hit:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_Hit);
|
|
|
|
case EventType::WeaponAssignment:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_WeaponAssignment);
|
|
|
|
case EventType::BiteMessage:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_BiteMessage);
|
|
|
|
case EventType::FireEvent:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_FireEvent);
|
|
|
|
case EventType::HitBuilding:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_HitBuilding);
|
|
|
|
case EventType::Manipulation:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_Manipulation);
|
|
|
|
case EventType::CameraVideo:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_CameraVideo);
|
|
|
|
case EventType::RadioCnr:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_RadioCnr);
|
|
|
|
case EventType::RadioTvc:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_RadioTvc);
|
|
|
|
case EventType::HitEffectSimulation:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_HitEffectSimulation);
|
|
|
|
case EventType::HitMine:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_HitMine);
|
|
|
|
case EventType::HitN:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_HitN);
|
|
|
|
case EventType::HitC:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_HitC);
|
|
|
|
case EventType::EnterDangerArea:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_EnterDangerArea);
|
|
|
|
case EventType::LeaveDangerArea:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_LeaveDangerArea);
|
|
|
|
case EventType::EnterMineArea:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_EnterMineArea);
|
|
|
|
case EventType::LeaveMineArea:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_LeaveMineArea);
|
|
|
|
case EventType::CrossBorderline:
|
|
return QCoreApplication::translate("EventType", "CrossBorderline");
|
|
|
|
case EventType::EnterFunctionalArea:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_EnterFunctionalArea);
|
|
|
|
case EventType::LeaveFunctionalArea:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_LeaveFunctionalArea);
|
|
|
|
case EventType::EnterNuclear:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_EnterNuclear);
|
|
|
|
case EventType::LeaveNuclear:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_LeaveNuclear);
|
|
|
|
case EventType::HitB:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_HitB);
|
|
|
|
case EventType::FriendlyFire:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_FriendlyFire);
|
|
|
|
case EventType::HitGasPipe:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_HitGasPipe);
|
|
|
|
case EventType::MineArea:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_MineArea);
|
|
|
|
case EventType::NContamination:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_NContamination);
|
|
|
|
case EventType::BCContamination:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_BCContamination);
|
|
|
|
case EventType::DangerArea:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_DangerArea);
|
|
|
|
case EventType::FunctionalArea:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_FunctionalArea);
|
|
|
|
case EventType::MineCorridor:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_MineCorridor);
|
|
|
|
case EventType::Borderline:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_Borderline);
|
|
|
|
case EventType::TechnicalArea:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_TechnicalArea);
|
|
|
|
case EventType::GasPipe:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_GasPipe);
|
|
|
|
case EventType::Sanitation:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_Sanitation);
|
|
|
|
case EventType::EquipmentErrorReport:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_EquipmentErrorReport);
|
|
|
|
case EventType::EmergencyCall:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_EmergencyCall);
|
|
|
|
case EventType::Marker:
|
|
return QCoreApplication::translate("EventType", "Marker");
|
|
|
|
case EventType::Block:
|
|
return QCoreApplication::translate("EventType", "Block");
|
|
|
|
case EventType::Unknown:
|
|
default:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::PdmEventType::EventType_Unknown);
|
|
}
|
|
Q_UNREACHABLE();
|
|
}
|
|
|
|
EventType toEventType(int eventType)
|
|
{
|
|
switch (eventType)
|
|
{
|
|
case EventType::Hit:
|
|
return EventType::Hit;
|
|
|
|
case EventType::WeaponAssignment:
|
|
return EventType::WeaponAssignment;
|
|
|
|
case EventType::BiteMessage:
|
|
return EventType::BiteMessage;
|
|
|
|
case EventType::FireEvent:
|
|
return EventType::FireEvent;
|
|
|
|
case EventType::HitBuilding:
|
|
return EventType::HitBuilding;
|
|
|
|
case EventType::Manipulation:
|
|
return EventType::Manipulation;
|
|
|
|
case EventType::CameraVideo:
|
|
return EventType::CameraVideo;
|
|
|
|
case EventType::RadioCnr:
|
|
return EventType::RadioCnr;
|
|
|
|
case EventType::RadioTvc:
|
|
return EventType::RadioTvc;
|
|
|
|
case EventType::HitEffectSimulation:
|
|
return EventType::HitEffectSimulation;
|
|
|
|
case EventType::HitMine:
|
|
return EventType::HitMine;
|
|
|
|
case EventType::HitN:
|
|
return EventType::HitN;
|
|
|
|
case EventType::HitC:
|
|
return EventType::HitC;
|
|
|
|
case EventType::EnterDangerArea:
|
|
return EventType::EnterDangerArea;
|
|
|
|
case EventType::LeaveDangerArea:
|
|
return EventType::LeaveDangerArea;
|
|
|
|
case EventType::EnterMineArea:
|
|
return EventType::EnterMineArea;
|
|
|
|
case EventType::LeaveMineArea:
|
|
return EventType::LeaveMineArea;
|
|
|
|
case ProjectDataManagement::PdmEventType::EventType_CrossLocalBorderline:
|
|
case ProjectDataManagement::PdmEventType::EventType_CrossGlobalBorderline:
|
|
return EventType::CrossBorderline;
|
|
|
|
case EventType::EnterFunctionalArea:
|
|
return EventType::EnterFunctionalArea;
|
|
|
|
case EventType::LeaveFunctionalArea:
|
|
return EventType::LeaveFunctionalArea;
|
|
|
|
case EventType::EnterNuclear:
|
|
return EventType::EnterNuclear;
|
|
|
|
case EventType::LeaveNuclear:
|
|
return EventType::LeaveNuclear;
|
|
|
|
case EventType::HitB:
|
|
return EventType::HitB;
|
|
|
|
case EventType::FriendlyFire:
|
|
return EventType::FriendlyFire;
|
|
|
|
case EventType::HitGasPipe:
|
|
return EventType::HitGasPipe;
|
|
|
|
case EventType::MineArea:
|
|
return EventType::MineArea;
|
|
|
|
case EventType::NContamination:
|
|
return EventType::NContamination;
|
|
|
|
case EventType::BCContamination:
|
|
return EventType::BCContamination;
|
|
|
|
case EventType::DangerArea:
|
|
return EventType::DangerArea;
|
|
|
|
case EventType::FunctionalArea:
|
|
return EventType::FunctionalArea;
|
|
|
|
case EventType::MineCorridor:
|
|
return EventType::MineCorridor;
|
|
|
|
case EventType::Borderline:
|
|
return EventType::Borderline;
|
|
|
|
case EventType::TechnicalArea:
|
|
return EventType::TechnicalArea;
|
|
|
|
case EventType::GasPipe:
|
|
return EventType::GasPipe;
|
|
|
|
case EventType::Sanitation:
|
|
return EventType::Sanitation;
|
|
|
|
case EventType::EquipmentErrorReport:
|
|
return EventType::EquipmentErrorReport;
|
|
|
|
case EventType::EmergencyCall:
|
|
return EventType::EmergencyCall;
|
|
|
|
case EventType::Marker:
|
|
return EventType::Marker;
|
|
|
|
default:
|
|
return EventType::Unknown;
|
|
}
|
|
}
|
|
|
|
int eventTypeCategory(EventType eventType)
|
|
{
|
|
switch (eventType)
|
|
{
|
|
case EventType::Unknown:
|
|
case EventType::Marker:
|
|
case EventType::Block:
|
|
return 0;
|
|
case EventType::WeaponAssignment:
|
|
case EventType::BiteMessage:
|
|
case EventType::FriendlyFire:
|
|
case EventType::Manipulation:
|
|
case EventType::CrossBorderline:
|
|
return 1;
|
|
case EventType::FireEvent:
|
|
case EventType::Hit:
|
|
case EventType::HitBuilding:
|
|
case EventType::HitEffectSimulation:
|
|
case EventType::HitMine:
|
|
case EventType::HitN:
|
|
case EventType::HitB:
|
|
case EventType::HitC:
|
|
case EventType::HitGasPipe:
|
|
return 2;
|
|
case EventType::EnterDangerArea:
|
|
case EventType::LeaveDangerArea:
|
|
case EventType::EnterMineArea:
|
|
case EventType::LeaveMineArea:
|
|
case EventType::EnterFunctionalArea:
|
|
case EventType::LeaveFunctionalArea:
|
|
case EventType::EnterNuclear:
|
|
case EventType::LeaveNuclear:
|
|
case EventType::Sanitation:
|
|
return 3;
|
|
case EventType::CameraVideo:
|
|
case EventType::RadioCnr:
|
|
case EventType::RadioTvc:
|
|
return 5;
|
|
case EventType::MineArea:
|
|
case EventType::NContamination:
|
|
case EventType::BCContamination:
|
|
case EventType::DangerArea:
|
|
case EventType::FunctionalArea:
|
|
case EventType::MineCorridor:
|
|
case EventType::Borderline:
|
|
case EventType::GasPipe:
|
|
return 6;
|
|
case EventType::TechnicalArea:
|
|
case EventType::EquipmentErrorReport:
|
|
case EventType::EmergencyCall:
|
|
return 0;
|
|
}
|
|
Q_UNREACHABLE();
|
|
return 0;
|
|
}
|
|
|
|
EventTypes filterEventTypes()
|
|
{
|
|
static const EventTypes eventTypes = {
|
|
EventType::BiteMessage,
|
|
EventType::CameraVideo,
|
|
EventType::CrossBorderline,
|
|
EventType::FireEvent,
|
|
EventType::Hit,
|
|
EventType::HitBuilding,
|
|
EventType::HitEffectSimulation,
|
|
EventType::Manipulation,
|
|
EventType::Marker,
|
|
EventType::RadioCnr,
|
|
EventType::RadioTvc,
|
|
EventType::WeaponAssignment
|
|
};
|
|
return eventTypes;
|
|
}
|
|
|
|
bool isAudioEvent(EventType eventType)
|
|
{
|
|
return eventType == EventType::RadioCnr || eventType == EventType::RadioTvc;
|
|
}
|
|
|
|
bool isVideoEvent(EventType eventType)
|
|
{
|
|
return eventType == EventType::CameraVideo;
|
|
}
|
|
|
|
bool isAudioVideoEvent(EventType eventType)
|
|
{
|
|
return isAudioEvent(eventType) || isVideoEvent(eventType);
|
|
}
|
|
|
|
bool isHitEvent(EventType eventType)
|
|
{
|
|
return eventType == EventType::Hit || eventType == EventType::HitB || eventType == EventType::HitBuilding ||
|
|
eventType == EventType::HitC || eventType == EventType::HitGasPipe || eventType == EventType::HitEffectSimulation ||
|
|
eventType == EventType::HitMine || eventType == EventType::HitN;
|
|
}
|
|
|
|
bool isParticipantEvent(EventType eventType)
|
|
{
|
|
return (!isAudioVideoEvent(eventType) && eventType != EventType::HitBuilding);
|
|
}
|
|
|
|
}
|