blob: 7f8baa3ff9fdb13c87af550cd82353ef56c64928 [file] [log] [blame]
#pragma once
#include <memory>
#include <vector>
#include <sdbusplus/bus.hpp>
#include "types.hpp"
#include "zone.hpp"
namespace phosphor
{
namespace fan
{
namespace control
{
using ZoneMap = std::map<unsigned int,
std::unique_ptr<Zone>>;
/**
* @class Fan control manager
*/
class Manager
{
public:
Manager() = delete;
Manager(const Manager&) = delete;
Manager(Manager&&) = default;
Manager& operator=(const Manager&) = delete;
Manager& operator=(Manager&&) = delete;
~Manager() = default;
/**
* Constructor
* Creates the Zone objects based on the
* _zoneLayouts data.
*
* @param[in] bus - The dbus object
*/
Manager(sdbusplus::bus::bus& bus);
private:
/**
* The dbus object
*/
sdbusplus::bus::bus& _bus;
/**
* The fan zones in the system
*/
ZoneMap _zones;
/**
* The fan zone layout for the system.
* This is generated data.
*/
static const std::vector<ZoneGroup> _zoneLayouts;
};
}
}
}