1 #include "dbus_sensor_object.hpp"
2 
3 #include <boost/asio.hpp>
4 #include <sdbusplus/asio/connection.hpp>
5 #include <sdbusplus/asio/object_server.hpp>
6 #include <sdbusplus/bus.hpp>
7 
8 namespace stubs
9 {
10 
11 DbusSensorObject::DbusSensorObject(
12     boost::asio::io_context& ioc,
13     const std::shared_ptr<sdbusplus::asio::connection>& bus,
14     const std::shared_ptr<sdbusplus::asio::object_server>& objServer) :
15     ioc(ioc),
16     bus(bus), objServer(objServer)
17 {
18     sensorIface = objServer->add_interface(path(), interface());
19 
20     sensorIface->register_property_r(property.value(), double{},
21                                      sdbusplus::vtable::property_::emits_change,
22                                      [this](const auto&) { return value; });
23 
24     sensorIface->initialize();
25 }
26 
27 DbusSensorObject::~DbusSensorObject()
28 {
29     objServer->remove_interface(sensorIface);
30 }
31 
32 void DbusSensorObject::setValue(double v)
33 {
34     value = v;
35 
36     sensorIface->signal_property(property.value());
37 }
38 
39 double DbusSensorObject::getValue() const
40 {
41     return value;
42 }
43 
44 const char* DbusSensorObject::path()
45 {
46     return "/telemetry/ut/DbusSensorObject";
47 }
48 
49 const char* DbusSensorObject::interface()
50 {
51     return "xyz.openbmc_project.Sensor.Value";
52 }
53 
54 const char* DbusSensorObject::Properties::value()
55 {
56     return "Value";
57 }
58 
59 } // namespace stubs
60