/** * Send / Receive telegrams to/from Wls * $Id$ * $HeadURL$ * $Author$ * Created by Christian Ehrlicher, SLSE, 2016-09-26 */ #include "main_dispatcher.h" #include "main_handler_tx.h" #include "wls_dispatcher.h" #include "wls_handler_tx.h" #include "tetra_dispatcher.h" #include "tetra_handler_tx.h" #include #include namespace WlsTetra { MainDispatcher::MainDispatcher(TrainingAreaBase::Plugin::DataProvider *pdp, const std::shared_ptr &recvFromTabCb, NGL::Settings *settings) : m_wlsDispatcher(new WlsDispatcher(pdp, recvFromTabCb, settings)) , m_tetraDispatcher(new TetraDispatcher(pdp, recvFromTabCb)) , m_recvFromTabCb(recvFromTabCb) , m_mainHandlerTx(std::make_shared(std::dynamic_pointer_cast(m_wlsDispatcher->sendToTab()), std::dynamic_pointer_cast(m_tetraDispatcher->sendToTab()))) , m_logger(getLogger("MainDispatcher")) { N_CoPrtCnv::CoPrtCnvTelegramConverter::setUse2BytesForSingleFireDiameter( settings->settings()->value(QLatin1String("AES/use2BytesForSingleFireDiameter"), true).toBool()); connect(m_wlsDispatcher, &WlsDispatcher::broadcastTelegramsRequest, m_tetraDispatcher, &TetraDispatcher::onBroadcastTelegramsRequest); connect(m_wlsDispatcher, &WlsDispatcher::wlsTelegramReceived, m_tetraDispatcher, &TetraDispatcher::onWlsTelegramReceived); connect(m_wlsDispatcher, &WlsDispatcher::wlsTelegramSent, m_tetraDispatcher, &TetraDispatcher::onWlsTelegramSent); connect(m_wlsDispatcher, &WlsDispatcher::connectionState, this, &MainDispatcher::connectionState); connect(m_tetraDispatcher, &TetraDispatcher::connectionState, this, &MainDispatcher::connectionState); connect(m_tetraDispatcher, &TetraDispatcher::participantLicenseChange, m_wlsDispatcher, &WlsDispatcher::onParticipantLicenseChange); } MainDispatcher::~MainDispatcher() { m_mainHandlerTx = nullptr; m_recvFromTabCb = nullptr; delete m_wlsDispatcher; delete m_tetraDispatcher; } bool MainDispatcher::init() { return m_wlsDispatcher->init() && m_tetraDispatcher->init(); } std::shared_ptr MainDispatcher::sendToTab() { return m_mainHandlerTx; } bool MainDispatcher::canSendData() const { return m_wlsDispatcher->canSendData() || m_tetraDispatcher->canSendData(); } void MainDispatcher::exerciseChanged() { m_wlsDispatcher->exerciseChanged(); m_tetraDispatcher->exerciseChanged(); } } // namespace WlsTetra