xref: /openbmc/openpower-occ-control/occ_presence.hpp (revision d7542c83b1acd145e0bbf2c1b6307911dfcebf7a)
1636577f4SEdward A. James #pragma once
2636577f4SEdward A. James 
3636577f4SEdward A. James #include "occ_errors.hpp"
4636577f4SEdward A. James namespace open_power
5636577f4SEdward A. James {
6636577f4SEdward A. James namespace occ
7636577f4SEdward A. James {
8636577f4SEdward A. James 
9636577f4SEdward A. James class Manager;
10636577f4SEdward A. James 
11636577f4SEdward A. James /** @class Presence
12636577f4SEdward A. James  *  @brief Monitors the number of OCCs present
13636577f4SEdward A. James  */
14636577f4SEdward A. James class Presence : public Error
15636577f4SEdward A. James {
16636577f4SEdward A. James   public:
17636577f4SEdward A. James     Presence() = delete;
18636577f4SEdward A. James     Presence(const Presence&) = delete;
19636577f4SEdward A. James     Presence& operator=(const Presence&) = delete;
20636577f4SEdward A. James     Presence(Presence&&) = default;
21636577f4SEdward A. James     Presence& operator=(Presence&&) = default;
22636577f4SEdward A. James 
23636577f4SEdward A. James     /** @brief Constructs the Presence object
24636577f4SEdward A. James      *
25636577f4SEdward A. James      *  @param[in] event    - Reference to sd_event unique_ptr
26636577f4SEdward A. James      *  @param[in] file     - File used by driver to communicate errors
27636577f4SEdward A. James      *  @param[in] mgr      - OCC manager instance
28636577f4SEdward A. James      *  @param[in] callBack - Optional function callback on error condition
29636577f4SEdward A. James      */
Presence(EventPtr & event,const fs::path & file,const Manager & mgr,std::function<void (int)> callBack=nullptr)3094df8c90SGunnar Mills     Presence(EventPtr& event, const fs::path& file, const Manager& mgr,
319789e71fSEddie James              std::function<void(int)> callBack = nullptr) :
32*d7542c83SPatrick Williams         Error(event, file, callBack), manager(mgr)
33636577f4SEdward A. James     {
34636577f4SEdward A. James         // Nothing to do here.
35636577f4SEdward A. James     }
36636577f4SEdward A. James 
37636577f4SEdward A. James   private:
38636577f4SEdward A. James     /** Store the manager instance to enable getting number of OCCs */
39636577f4SEdward A. James     const Manager& manager;
40636577f4SEdward A. James 
41636577f4SEdward A. James     /** @brief When the error event is received, analyzes it
42636577f4SEdward A. James      *         and makes a callback to error handler if the
43636577f4SEdward A. James      *         content denotes an error condition
44636577f4SEdward A. James      */
45636577f4SEdward A. James     void analyzeEvent() override;
46636577f4SEdward A. James };
47636577f4SEdward A. James 
48636577f4SEdward A. James } // namespace occ
49636577f4SEdward A. James } // namespace open_power
50