1*f2e94221STao Lin #pragma once 27452a867SVijay Khemka 37452a867SVijay Khemka #include <sdbusplus/bus.hpp> 4b57d7370SPatrick Williams #include <sdbusplus/bus/match.hpp> 57452a867SVijay Khemka 6*f2e94221STao Lin namespace phosphor::virtual_sensor 7*f2e94221STao Lin { 87452a867SVijay Khemka 9*f2e94221STao Lin class VirtualSensor; 1051f898e2SVijay Khemka 117452a867SVijay Khemka class DbusSensor 127452a867SVijay Khemka { 137452a867SVijay Khemka public: 147452a867SVijay Khemka DbusSensor() = delete; 157452a867SVijay Khemka virtual ~DbusSensor() = default; 167452a867SVijay Khemka 177452a867SVijay Khemka /** @brief Constructs DbusSensor 187452a867SVijay Khemka * 197452a867SVijay Khemka * @param[in] bus - Handle to system dbus 207452a867SVijay Khemka * @param[in] path - The Dbus path of sensor 217452a867SVijay Khemka */ 22*f2e94221STao Lin DbusSensor(sdbusplus::bus_t& bus, const std::string& path, 23*f2e94221STao Lin VirtualSensor& virtualSensor); 247452a867SVijay Khemka 25*f2e94221STao Lin /** @brief Get sensor value from local */ 26*f2e94221STao Lin double getSensorValue(); 277452a867SVijay Khemka 287452a867SVijay Khemka private: 297452a867SVijay Khemka /** @brief sdbusplus bus client connection. */ 308e11cccbSPatrick Williams sdbusplus::bus_t& bus; 31*f2e94221STao Lin 327452a867SVijay Khemka /** @brief complete path for sensor */ 331204b433SGeorge Liu std::string path{}; 34*f2e94221STao Lin 357452a867SVijay Khemka /** @brief service name for the sensor daemon */ 361204b433SGeorge Liu std::string servName{}; 37*f2e94221STao Lin 38*f2e94221STao Lin /** @brief point to the VirtualSensor */ 39*f2e94221STao Lin VirtualSensor& virtualSensor; 40*f2e94221STao Lin 4151f898e2SVijay Khemka /** @brief signal for sensor value change */ 42*f2e94221STao Lin sdbusplus::bus::match_t signalPropChange; 43*f2e94221STao Lin 44*f2e94221STao Lin /** @brief signal for sensor interface remove */ 45*f2e94221STao Lin sdbusplus::bus::match_t signalRemove; 46*f2e94221STao Lin 47*f2e94221STao Lin /** @brief Match for this dbus sensor service destroy */ 48*f2e94221STao Lin std::unique_ptr<sdbusplus::bus::match_t> signalNameOwnerChanged; 49*f2e94221STao Lin 50*f2e94221STao Lin /** @brief dbus sensor value */ 51*f2e94221STao Lin double value = std::numeric_limits<double>::quiet_NaN(); 52*f2e94221STao Lin 53*f2e94221STao Lin /** @brief Get sensor value property from D-bus interface */ 54*f2e94221STao Lin void initSensorValue(); 55*f2e94221STao Lin 56*f2e94221STao Lin /** @brief Handle for this dbus sensor NameOwnerChanged */ 57*f2e94221STao Lin void handleDbusSignalNameOwnerChanged(sdbusplus::message_t& msg); 58*f2e94221STao Lin 59*f2e94221STao Lin /** @brief Handle for this dbus sensor PropertyChanged */ 60*f2e94221STao Lin void handleDbusSignalPropChange(sdbusplus::message_t& msg); 61*f2e94221STao Lin 62*f2e94221STao Lin /** @brief Handle for this dbus sensor InterfaceRemove */ 63*f2e94221STao Lin void handleDbusSignalRemove(sdbusplus::message_t& msg); 647452a867SVijay Khemka }; 65*f2e94221STao Lin 66*f2e94221STao Lin } // namespace phosphor::virtual_sensor 67