1 #pragma once
2 
3 #include <memory>
4 #include <vector>
5 #include <sdbusplus/bus.hpp>
6 #include "types.hpp"
7 #include "zone.hpp"
8 
9 namespace phosphor
10 {
11 namespace fan
12 {
13 namespace control
14 {
15 
16 using ZoneMap = std::map<unsigned int,
17                          std::unique_ptr<Zone>>;
18 
19 /**
20  * @class Fan control manager
21  */
22 class Manager
23 {
24     public:
25 
26         Manager() = delete;
27         Manager(const Manager&) = delete;
28         Manager(Manager&&) = default;
29         Manager& operator=(const Manager&) = delete;
30         Manager& operator=(Manager&&) = delete;
31         ~Manager() = default;
32 
33         /**
34          * Constructor
35          * Creates the Zone objects based on the
36          * _zoneLayouts data.
37          *
38          * @param[in] bus - The dbus object
39          */
40         Manager(sdbusplus::bus::bus& bus);
41 
42     private:
43 
44         /**
45          * The dbus object
46          */
47         sdbusplus::bus::bus& _bus;
48 
49         /**
50          * The fan zones in the system
51          */
52         ZoneMap _zones;
53 
54         /**
55          * The fan zone layout for the system.
56          * This is generated data.
57          */
58         static const std::vector<ZoneGroup> _zoneLayouts;
59 };
60 
61 
62 }
63 }
64 }
65