1 #pragma once
2 #include <functional>
3 #include <org/open_power/Sensor/Aggregation/History/Average/server.hpp>
4 
5 namespace witherspoon
6 {
7 namespace power
8 {
9 namespace history
10 {
11 
12 template <typename T>
13 using ServerObject = typename sdbusplus::server::object::object<T>;
14 
15 using AverageInterface =
16     sdbusplus::org::open_power::Sensor::Aggregation::History::server::Average;
17 
18 /**
19  * @class Average
20  *
21  * Implements Sensor.Aggregation.History.Average
22  *
23  * This includes a property that is an array of timestamp/average tuples
24  * and a property to specify the scale.
25  */
26 class Average : public ServerObject<AverageInterface>
27 {
28   public:
29     static constexpr auto name = "average";
30 
31     Average() = delete;
32     Average(const Average&) = delete;
33     Average& operator=(const Average&) = delete;
34     Average(Average&&) = delete;
35     Average& operator=(Average&&) = delete;
36     ~Average() = default;
37 
38     /**
39      * @brief Constructor
40      *
41      * @param[in] bus - D-Bus object
42      * @param[in] objectPath - the D-Bus object path
43      */
44     Average(sdbusplus::bus::bus& bus, const std::string& objectPath) :
45         ServerObject<AverageInterface>(bus, objectPath.c_str())
46     {
47         unit(Average::Unit::Watts);
48         scale(0);
49     }
50 };
51 
52 } // namespace history
53 } // namespace power
54 } // namespace witherspoon
55