blob: 264eb257b91485a9f937643276e71c294dee11dd [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#include "manager.hpp"
17
18#include "json_config.hpp"
19#include "json_parser.hpp"
Matthew Barth06764942021-03-04 09:28:40 -060020#include "profile.hpp"
Matthew Bartha227a162020-08-05 10:51:45 -050021
22#include <sdbusplus/bus.hpp>
23
24#include <filesystem>
Matthew Barth06764942021-03-04 09:28:40 -060025#include <vector>
Matthew Bartha227a162020-08-05 10:51:45 -050026
27namespace phosphor::fan::control::json
28{
29
Matthew Barth06764942021-03-04 09:28:40 -060030Manager::Manager(sdbusplus::bus::bus& bus, const sdeventplus::Event& event) :
31 _profiles(getConfig<Profile>(true))
Matthew Bartha227a162020-08-05 10:51:45 -050032{
33 // Manager JSON config file is optional
34 auto confFile =
35 fan::JsonConfig::getConfFile(bus, confAppName, confFileName, true);
36 if (!confFile.empty())
37 {
38 _jsonObj = fan::JsonConfig::load(confFile);
39 }
Matthew Barth06764942021-03-04 09:28:40 -060040
41 // Ensure all configurations use the same set of active profiles
42 // (In case a profile's active state changes during configuration)
43 for (const auto& profile : _profiles)
44 {
45 if (profile.second->isActive())
46 {
47 _activeProfiles.emplace_back(profile.first.first);
48 }
49 }
Matthew Bartha227a162020-08-05 10:51:45 -050050}
51
52unsigned int Manager::getPowerOnDelay()
53{
54 auto powerOnDelay = 0;
55
56 // Parse optional "power_on_delay" from JSON object
57 if (!_jsonObj.empty() && _jsonObj.contains("power_on_delay"))
58 {
59 powerOnDelay = _jsonObj["power_on_delay"].get<unsigned int>();
60 }
61
62 return powerOnDelay;
63}
64
65} // namespace phosphor::fan::control::json