/** * DdsHandler for DDS * $Id$ * $HeadURL$ * $Author$ * Created by Gerlinde Rudolphus, SLTE, 2022-06-09 */ #include "dds_handler.h" #include "nme_dts.h" #include "nme_fts.h" #include #include namespace NmeaManagement { DdsHandler::DdsHandler(int domainId) : m_ddsConnector(std::make_shared(domainId, IDL::PartitionType::Any)) , m_logger(getLogger("DdsHandler")) { DEBUG_LOG(m_logger) << "DdsHandler(" << domainId << ") for partition: " << m_ddsConnector->getDefaultPartition(); } DdsHandler::~DdsHandler() {} bool DdsHandler::init(const QStringList &qosFileList) { if (!m_ddsConnector->init(qosFileList)) { ERROR_LOG(m_logger) << "Error initializing dds connections - aborting"; return false; } // default initialize Publisher and Subscriber m_ddsConnector->initPublisherSubscriber(); m_ddsConnector->enableBatchedWriter(false); // Pacemaker m_pacemaker = std::make_shared(m_ddsConnector); m_ddsDts = NmeaManagement::Interface::Dts::create(m_ddsConnector); m_ddsFts = NmeaManagement::Interface::Fts::create(m_ddsConnector); if (!m_ddsDts->enableBatteryAlarm()) { ERROR_LOG(m_logger) << "Could not initialize NmeaManagement enableBatteryAlarm data topic server"; return false; } if (!m_ddsDts->enableServiceControl()) { ERROR_LOG(m_logger) << "Could not initialize NmeaManagement enableServiceControl data topic server"; return false; } if (!m_ddsDts->enableBatteryState()) { ERROR_LOG(m_logger) << "Could not initialize NmeaManagement enableBatteryState data topic server"; return false; } if (!m_ddsDts->enablePositionExcon()) { ERROR_LOG(m_logger) << "Could not initialize NmeaManagement enablePositionExcon data topic server"; return false; } INFO_LOG(m_logger) << "Dts initialised"; if (!m_ddsFts->enableAll()) { ERROR_LOG(m_logger) << "Could not initialize NmeaManagement enableAll function topic"; return false; } INFO_LOG(m_logger) << "Fts initialised"; // TODO: call at the end of main_handler init: this->pacemaker()->setNewState(Core::RunningState::Running); return true; } } // Namespace PDM