/** * Handler for one meteo data unit * Manages the connection to a MDU and sends data via DDS as soon as they have been changed * $Id$ * $HeadURL$ * $Author$ * Created by hjl, SLSE, 2016-09-27 */ #include "InfrastructureManagement/ism_dtc.h" #include "logger.h" #include #include #pragma once namespace MeteoDataManagement { class MainHandler; class TcpWeatherStation; class HandlerMeteoDataUnits; class HandlerMeteoDataUnit : public QObject { Q_OBJECT public: explicit HandlerMeteoDataUnit(MainHandler *mainHandler, const InfrastructureManagement::InstrumentationAsset &asset, QObject *parent = nullptr); ~HandlerMeteoDataUnit(); private: bool init(); protected Q_SLOTS: /** * Signaled from weatherstartion class if data were changed * @param[in] id weatherstation id (== assetId for meteoDataUnit) * @param[in] pressure pressure in hPa * @param[in] temperature temperature in °C * @param[in] humidity humidity in % relative humidity * @param[in] direction wind FROM direction in degree (north=0°, east=90°, south= 180°, west=270°) * @param[in] speed speed in m/s */ void onMeteoDataChanged(int id, float pressure, float temperature, float humidity, float direction, float speed, bool climateOk, bool windOk); protected Q_SLOTS: void onPublishData(); private: MainHandler *m_mainHandler; ///< Pointer to MDM DDS handler InfrastructureManagement::InstrumentationAsset m_asset; ///< meteo unit data asset TcpWeatherStation *m_tcpWS; ///< Pointer to tcp based meteo data unit MeteoDataManagement::MeteoData m_lastMeteoData; ///< last received meteo data MeteoDataManagement::MeteoData m_newMeteoData; ///< new received meteo data NGL::INGLLogger &m_logger; ///< Interface to the Logging-Facility }; } // namespace MeteoDataManagement