blob: 30669eb3e029d65387a9cd27d5ce0b99297d7b42 [file] [log] [blame]
Matthew Bartha227a162020-08-05 10:51:45 -05001/**
2 * Copyright © 2020 IBM Corporation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16#pragma once
17
18#include <nlohmann/json.hpp>
19#include <sdbusplus/bus.hpp>
20
21namespace phosphor::fan::control::json
22{
23
24using json = nlohmann::json;
25
26/**
27 * @class Manager - Represents the fan control manager's configuration
28 *
29 * A fan control manager configuration is optional, therefore the "manager.json"
30 * file is also optional. The manager configuration is used to populate
31 * fan control's manager parameters which are used in how the application
32 * operates, not in how the fans are controlled.
33 *
34 * When no manager configuration exists, the fan control application starts,
35 * processes any configured events and then begins controlling fans according
36 * to those events.
37 */
38class Manager
39{
40 public:
41 Manager() = delete;
42 Manager(const Manager&) = delete;
43 Manager(Manager&&) = delete;
44 Manager& operator=(const Manager&) = delete;
45 Manager& operator=(Manager&&) = delete;
46 ~Manager() = default;
47
48 /**
49 * Constructor
50 * Parses and populates the fan control manager attributes from a json file
51 *
52 * @param[in] bus - sdbusplus bus object
53 */
54 explicit Manager(sdbusplus::bus::bus& bus);
55
56 /**
57 * @brief Get the configured power on delay(OPTIONAL)
58 *
59 * @return Power on delay in seconds
60 * Configured power on delay in seconds, otherwise 0
61 */
62 unsigned int getPowerOnDelay();
63
64 private:
65 /* JSON file name for manager configuration attributes */
66 static constexpr auto confFileName = "manager.json";
67
68 /* The parsed JSON object */
69 json _jsonObj;
70};
71
72} // namespace phosphor::fan::control::json