1 #pragma once
2 
3 namespace phosphor::power::psu
4 {
5 /**
6  * @class PowerSupply
7  * Represents a PMBus power supply device.
8  */
9 class PowerSupply
10 {
11   public:
12     PowerSupply();
13     PowerSupply(const PowerSupply&) = delete;
14     PowerSupply(PowerSupply&&) = delete;
15     PowerSupply& operator=(const PowerSupply&) = delete;
16     PowerSupply& operator=(PowerSupply&&) = delete;
17     ~PowerSupply() = default;
18 
19     /**
20      * Power supply specific function to analyze for faults/errors.
21      *
22      * Various PMBus status bits will be checked for fault conditions.
23      * If a certain fault bits are on, the appropriate error will be
24      * committed.
25      */
26     void analyze()
27     {
28     }
29 
30     /**
31      * Write PMBus CLEAR_FAULTS
32      *
33      * This function will be called in various situations in order to clear
34      * any fault status bits that may have been set, in order to start over
35      * with a clean state. Presence changes and power state changes will
36      * want to clear any faults logged.
37      */
38     void clearFaults()
39     {
40     }
41 
42     /**
43      * @brief Adds properties to the inventory.
44      *
45      * Reads the values from the device and writes them to the
46      * associated power supply D-Bus inventory object.
47      *
48      * This needs to be done on startup, and each time the presence
49      * state changes.
50      *
51      * Properties added:
52      * - Serial Number
53      * - Part Number
54      * - CCIN (Customer Card Identification Number) - added as the Model
55      * - Firmware version
56      */
57     void updateInventory()
58     {
59     }
60 
61   private:
62     /** @brief True if a fault has already been found and not cleared */
63     bool faultFound = false;
64 };
65 
66 } // namespace phosphor::power::psu
67