266 lines
6.4 KiB
C++
Executable File
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
|
|
|
|
|