/** * Write XDR telegrams to a directory * $Id$ * $HeadURL$ * $Author$ * Created by Christian Ehrlicher, SLSE, 2016-04-14 */ #include "nmea_handler_tx.h" #include #include 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::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(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