/** * Handler for player data * $Id$ * $HeadURL$ * $Author$ * Created by hjl, SLSE, 2017-02-20 */ #include #include "main_handler.h" #include "handler_tab_data.h" #include "handler_order.h" #include "handler_operating_condition.h" #include "esc_convert_from_tab.h" #include "settings.h" namespace EffectShowClient { //============================================================================= HandlerTabData::HandlerTabData(MainHandler *mainHandler, QObject *parent) : QObject(parent) , m_mainHandler(mainHandler) , m_logger(getLogger("HandlerTabData")) { } // end of ctor() //============================================================================= HandlerTabData::~HandlerTabData() { } // end of dtor() //============================================================================= bool HandlerTabData::init() { DEBUG_LOG(m_logger) << "Begin HandlerTabData"; auto dtcTab = m_mainHandler->dds()->dtcTab(); connect(dtcTab.get(), &TrainingAreaBase::Interface::Dtc::fireSmokeMarkerDataChanged, this, &HandlerTabData::onFireSmokeMarkerDataChanged); // Get current data for all Fire Smoke Marker { auto cb = [this](const TrainingAreaBase::FireSmokeMarkerData & fireSmokeMarker) { onFireSmokeMarkerDataChanged(fireSmokeMarker, DataModification::eAdded); }; if (!dtcTab->fireSmokeMarkerDatas(cb)) return false; } DEBUG_LOG(m_logger) << "End HandlerTabData"; return true; } // end of init() //============================================================================= void HandlerTabData::orderConfirmation(const ConvertToTab::OrderConfirmation_t &orderConfirmation) { DEBUG_LOG(m_logger) << "Trigger Sending of Order Confirmation "; TrainingAreaBase::SendFireSmokeMarkerDataRequest out; out.payload(ConvertToTab::convertOrderConfirmation(orderConfirmation)); m_mainHandler->dds()->ftcTab()->sendFireSmokeMarkerDataRequest(out, this); } //============================================================================= void HandlerTabData::vehicleStatus(const ConvertToTab::VehicleStatus_t &vehicleStatus) { DEBUG_LOG(m_logger) << "Trigger Sending of Vehicle Status "; TrainingAreaBase::SendFireSmokeMarkerDataRequest out; out.payload(ConvertToTab::convertVehicleStatus(vehicleStatus)); m_mainHandler->dds()->ftcTab()->sendFireSmokeMarkerDataRequest(out, this); } //============================================================================= void HandlerTabData::onSendFireSmokeMarkerDataReply(const Core::FunctionReplyObject &reply) { if (reply.error()) ERROR_LOG(m_logger) << "Fire Smoke Marker Data could not be send: " << reply.str(); else DEBUG_LOG(m_logger) << "Fire Smoke Marker Data send successfully to TAB!"; } //----------------------------------------------------------------------------- void HandlerTabData::onFireSmokeMarkerDataChanged(const TrainingAreaBase::FireSmokeMarkerData &data, DataModification modType) { if (modType == DataModification::eRemoved) return; DEBUG_LOG(m_logger) << "Got Fire Smoke Marker " << data.sampleTime(); switch (ConvertFromTab::isTelegram(data)) { case ConvertFromTab::RxTelegram_e::EffectShowOrder: { DEBUG_LOG(m_logger) << "Got Effect Show Order"; m_mainHandler->handlerOrder()->createOrder(ConvertFromTab::convertEffectShowOrder(data)); break; } case ConvertFromTab::RxTelegram_e::RelocationOrder: { DEBUG_LOG(m_logger) << "Got Relocation order "; m_mainHandler->handlerOrder()->createOrder(ConvertFromTab::convertRelocationOrder(data)); break; } case ConvertFromTab::RxTelegram_e::EffectShowStop: { DEBUG_LOG(m_logger) << "Got Effect Show Stop "; emit effectShowStopped(ConvertFromTab::convertEffectShowStop(data)); break; } case ConvertFromTab::RxTelegram_e::EffectShowContinue: { DEBUG_LOG(m_logger) << "Got Effect Show Continue "; emit effectShowContinued(ConvertFromTab::convertEffectShowContinue(data)); break; } case ConvertFromTab::RxTelegram_e::OrderRetract: { DEBUG_LOG(m_logger) << "Got Order Retract "; m_mainHandler->handlerOrder()->removeOrder(ConvertFromTab::convertOrderRetract(data)); break; } case ConvertFromTab::RxTelegram_e::StatusRequest: { DEBUG_LOG(m_logger) << "Got Status Request " ; if (ConvertFromTab::convertStatusRequest(data)) { m_mainHandler->handlerOperatingCondition()->sendStatus(); } break; } case ConvertFromTab::RxTelegram_e::MeteoData: { DEBUG_LOG(m_logger) << "Got Meteo Data "; if (!m_mainHandler->dds()->dts()->publish(ConvertFromTab::convertMeteoData(data))) ERROR_LOG(m_logger) << "Error publishing MeteoNearVehicle to dds"; break; } case ConvertFromTab::RxTelegram_e::unknown: break; } } //----------------------------------------------------------------------------- } // namespace EffectShowClient