Files
qt5-legatus-legacy/Lts/Proxies/TrainingAreaBase/Plugins/Nmea/nmea_handler_tx.cpp
T
2026-08-13 18:33:10 +02:00

266 lines
6.4 KiB
C++
Executable File

/**
* Write XDR telegrams to a directory
* $Id$
* $HeadURL$
* $Author$
* Created by Christian Ehrlicher, SLSE, 2016-04-14
*/
#include "nmea_handler_tx.h"
#include <QJsonDocument>
#include <QJsonObject>
namespace Nmea
{
NmeaHandlerTx::NmeaHandlerTx()
: QObject()
, SendToTab()
, m_udpSocket(nullptr)
, m_nmeaHost(QStringLiteral("localhost"))
, m_nmeaPort(10110)
, m_logger(getLogger("NmeaHandlerTx"))
{
resetSendCounter();
}
TrainingAreaBase::SendToTab::HandleState NmeaHandlerTx::canHandleTelegram(int equipmentNumber, int telegramId) const
{
if(equipmentNumber != 1) // 1 is ComMaster
return HandleState::No;
if (!m_udpSocket)
return HandleState::No;
using namespace TrainingAreaBase::TetraIcd;
if (telegramId == Constraints<SetDevicePowerRequest>::id())
return HandleState::YesConsume;
return HandleState::No;
}
void NmeaHandlerTx::resetSendCounter()
{
m_sendCounter = 1; // start at 1
}
void NmeaHandlerTx::onUdpSocketConnected(QUdpSocket *udpSocket, int nmeaPort, QString nmeaHost)
{
m_udpSocket = udpSocket;
m_nmeaPort = nmeaPort;
m_nmeaHost = nmeaHost;
}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::SetDevicePowerRequest &data)
{
return sendToTx(&data);
}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::UAVPerformMission &data)
{
Q_UNUSED(data);
return false;
}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::Acknowledge &data)
{
Q_UNUSED(data)
return false;
}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::DemandBite &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::Init &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::SetVulnerabilityModel &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::DemandEquipmentConfigurationReport &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::DemandVulnerabilityStateChange &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::LanguageSelection &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::EquipmentMessage &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::EquipmentMessageOC &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::CreateSingleExplosion &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::CreateAreaExplosion &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::CreateMineArea &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::MineAreaSingleMineState &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::CreateNContamination &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::CreateCContamination &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::DeactivateEffectSimulation &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::ModifyAreaEffectSimulationName &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::PauseEffectSimulation &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::ResumeEffectSimulation &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::MineTriggered &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::DusMineReactivation &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::CreateFunctionalArea &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::CreateDusSingleMine &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::ExerciseEnvironmentData &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::ExerciseStateData &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::ParticipantSwVersionsRequest &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::OpaquePayloadDataOut &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::TechnicalArea &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::CesHitInformation &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::CesHitRequest &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::ParticipantMode &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::DemandParticipantMode &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::ParticipantConfiguration &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::DemandParticipantConfiguration &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::ExerciseEquipmentAssignmentComplete &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::Sanitation &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::txData(const TrainingAreaBase::TetraIcd::SelectiveReammunition &data)
{
Q_UNUSED(data)
return false;}
bool NmeaHandlerTx::sendToTx(const TrainingAreaBase::TetraIcd::TrainingAreaTelegram *data)
{
if(data->toJson().value(QStringLiteral("powerType")).toInt() != static_cast<int>(TrainingAreaBase::TetraIcd::PowerMethod::PowerOff))
return false;
if (!m_udpSocket)
return false;
QByteArray shutdownTelegram ("$IIXDR,S,1,,SERVICE_CONTROL_PRESHUTDOWN*79");
qDebug() << shutdownTelegram;
m_udpSocket->writeDatagram(shutdownTelegram, QHostAddress(m_nmeaHost), m_nmeaPort);
return true;
}
} // namespace NmeaTabPlugin