1*6272a393SAlexander Hansen #pragma once 2*6272a393SAlexander Hansen 3*6272a393SAlexander Hansen #include <sdbusplus/bus.hpp> 4*6272a393SAlexander Hansen #include <sdbusplus/bus/match.hpp> 5*6272a393SAlexander Hansen 6*6272a393SAlexander Hansen namespace phosphor::virtual_sensor 7*6272a393SAlexander Hansen { 8*6272a393SAlexander Hansen 9*6272a393SAlexander Hansen class VirtualSensor; 10*6272a393SAlexander Hansen 11*6272a393SAlexander Hansen class DbusSensor 12*6272a393SAlexander Hansen { 13*6272a393SAlexander Hansen public: 14*6272a393SAlexander Hansen DbusSensor() = delete; 15*6272a393SAlexander Hansen virtual ~DbusSensor() = default; 16*6272a393SAlexander Hansen 17*6272a393SAlexander Hansen /** @brief Constructs DbusSensor 18*6272a393SAlexander Hansen * 19*6272a393SAlexander Hansen * @param[in] bus - Handle to system dbus 20*6272a393SAlexander Hansen * @param[in] path - The Dbus path of sensor 21*6272a393SAlexander Hansen */ 22*6272a393SAlexander Hansen DbusSensor(sdbusplus::bus_t& bus, const std::string& path, 23*6272a393SAlexander Hansen VirtualSensor& virtualSensor); 24*6272a393SAlexander Hansen 25*6272a393SAlexander Hansen /** @brief Get sensor value from local */ 26*6272a393SAlexander Hansen double getSensorValue(); 27*6272a393SAlexander Hansen 28*6272a393SAlexander Hansen private: 29*6272a393SAlexander Hansen /** @brief sdbusplus bus client connection. */ 30*6272a393SAlexander Hansen sdbusplus::bus_t& bus; 31*6272a393SAlexander Hansen 32*6272a393SAlexander Hansen /** @brief complete path for sensor */ 33*6272a393SAlexander Hansen std::string path{}; 34*6272a393SAlexander Hansen 35*6272a393SAlexander Hansen /** @brief service name for the sensor daemon */ 36*6272a393SAlexander Hansen std::string servName{}; 37*6272a393SAlexander Hansen 38*6272a393SAlexander Hansen /** @brief point to the VirtualSensor */ 39*6272a393SAlexander Hansen VirtualSensor& virtualSensor; 40*6272a393SAlexander Hansen 41*6272a393SAlexander Hansen /** @brief signal for sensor value change */ 42*6272a393SAlexander Hansen sdbusplus::bus::match_t signalPropChange; 43*6272a393SAlexander Hansen 44*6272a393SAlexander Hansen /** @brief signal for sensor interface remove */ 45*6272a393SAlexander Hansen sdbusplus::bus::match_t signalRemove; 46*6272a393SAlexander Hansen 47*6272a393SAlexander Hansen /** @brief Match for this dbus sensor service destroy */ 48*6272a393SAlexander Hansen std::unique_ptr<sdbusplus::bus::match_t> signalNameOwnerChanged; 49*6272a393SAlexander Hansen 50*6272a393SAlexander Hansen /** @brief dbus sensor value */ 51*6272a393SAlexander Hansen double value = std::numeric_limits<double>::quiet_NaN(); 52*6272a393SAlexander Hansen 53*6272a393SAlexander Hansen /** @brief Get sensor value property from D-bus interface */ 54*6272a393SAlexander Hansen void initSensorValue(); 55*6272a393SAlexander Hansen 56*6272a393SAlexander Hansen /** @brief Handle for this dbus sensor NameOwnerChanged */ 57*6272a393SAlexander Hansen void handleDbusSignalNameOwnerChanged(sdbusplus::message_t& msg); 58*6272a393SAlexander Hansen 59*6272a393SAlexander Hansen /** @brief Handle for this dbus sensor PropertyChanged */ 60*6272a393SAlexander Hansen void handleDbusSignalPropChange(sdbusplus::message_t& msg); 61*6272a393SAlexander Hansen 62*6272a393SAlexander Hansen /** @brief Handle for this dbus sensor InterfaceRemove */ 63*6272a393SAlexander Hansen void handleDbusSignalRemove(sdbusplus::message_t& msg); 64*6272a393SAlexander Hansen }; 65*6272a393SAlexander Hansen 66*6272a393SAlexander Hansen } // namespace phosphor::virtual_sensor 67