17d24ee8eSMatt Spinler #pragma once
27d24ee8eSMatt Spinler #include <org/open_power/Sensor/Aggregation/History/Average/server.hpp>
37d24ee8eSMatt Spinler 
4d1bc4cecSBrandon Wyman #include <functional>
5d1bc4cecSBrandon Wyman 
6ab093328SLei YU namespace phosphor
77d24ee8eSMatt Spinler {
87d24ee8eSMatt Spinler namespace power
97d24ee8eSMatt Spinler {
107d24ee8eSMatt Spinler namespace history
117d24ee8eSMatt Spinler {
127d24ee8eSMatt Spinler 
137d24ee8eSMatt Spinler template <typename T>
14*7354ce62SPatrick Williams using ServerObject = typename sdbusplus::server::object_t<T>;
157d24ee8eSMatt Spinler 
16f0f02b9aSMatt Spinler using AverageInterface =
17f0f02b9aSMatt Spinler     sdbusplus::org::open_power::Sensor::Aggregation::History::server::Average;
187d24ee8eSMatt Spinler 
197d24ee8eSMatt Spinler /**
207d24ee8eSMatt Spinler  * @class Average
217d24ee8eSMatt Spinler  *
227d24ee8eSMatt Spinler  * Implements Sensor.Aggregation.History.Average
237d24ee8eSMatt Spinler  *
247d24ee8eSMatt Spinler  * This includes a property that is an array of timestamp/average tuples
257d24ee8eSMatt Spinler  * and a property to specify the scale.
267d24ee8eSMatt Spinler  */
277d24ee8eSMatt Spinler class Average : public ServerObject<AverageInterface>
287d24ee8eSMatt Spinler {
297d24ee8eSMatt Spinler   public:
307d24ee8eSMatt Spinler     static constexpr auto name = "average";
317d24ee8eSMatt Spinler 
327d24ee8eSMatt Spinler     Average() = delete;
337d24ee8eSMatt Spinler     Average(const Average&) = delete;
347d24ee8eSMatt Spinler     Average& operator=(const Average&) = delete;
357d24ee8eSMatt Spinler     Average(Average&&) = delete;
367d24ee8eSMatt Spinler     Average& operator=(Average&&) = delete;
377d24ee8eSMatt Spinler     ~Average() = default;
387d24ee8eSMatt Spinler 
397d24ee8eSMatt Spinler     /**
407d24ee8eSMatt Spinler      * @brief Constructor
417d24ee8eSMatt Spinler      *
427d24ee8eSMatt Spinler      * @param[in] bus - D-Bus object
437d24ee8eSMatt Spinler      * @param[in] objectPath - the D-Bus object path
447d24ee8eSMatt Spinler      */
Average(sdbusplus::bus_t & bus,const std::string & objectPath)45*7354ce62SPatrick Williams     Average(sdbusplus::bus_t& bus, const std::string& objectPath) :
467d24ee8eSMatt Spinler         ServerObject<AverageInterface>(bus, objectPath.c_str())
477d24ee8eSMatt Spinler     {
487d24ee8eSMatt Spinler         unit(Average::Unit::Watts);
497d24ee8eSMatt Spinler         scale(0);
507d24ee8eSMatt Spinler     }
517d24ee8eSMatt Spinler };
527d24ee8eSMatt Spinler 
53f0f02b9aSMatt Spinler } // namespace history
54f0f02b9aSMatt Spinler } // namespace power
55ab093328SLei YU } // namespace phosphor
56