1 /**
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 
17 #include "system.hpp"
18 
19 namespace phosphor::power::regulators
20 {
21 
buildIDMap()22 void System::buildIDMap()
23 {
24     // Add rules to the map
25     for (std::unique_ptr<Rule>& rule : rules)
26     {
27         idMap.addRule(*rule);
28     }
29 
30     // Add devices and rails in each chassis to the map
31     for (std::unique_ptr<Chassis>& oneChassis : chassis)
32     {
33         oneChassis->addToIDMap(idMap);
34     }
35 }
36 
clearCache()37 void System::clearCache()
38 {
39     // Clear any cached data in each chassis
40     for (std::unique_ptr<Chassis>& oneChassis : chassis)
41     {
42         oneChassis->clearCache();
43     }
44 }
45 
clearErrorHistory()46 void System::clearErrorHistory()
47 {
48     // Clear error history in each chassis
49     for (std::unique_ptr<Chassis>& oneChassis : chassis)
50     {
51         oneChassis->clearErrorHistory();
52     }
53 }
54 
closeDevices(Services & services)55 void System::closeDevices(Services& services)
56 {
57     // Close devices in each chassis
58     for (std::unique_ptr<Chassis>& oneChassis : chassis)
59     {
60         oneChassis->closeDevices(services);
61     }
62 }
63 
configure(Services & services)64 void System::configure(Services& services)
65 {
66     // Configure devices in each chassis
67     for (std::unique_ptr<Chassis>& oneChassis : chassis)
68     {
69         oneChassis->configure(services, *this);
70     }
71 }
72 
detectPhaseFaults(Services & services)73 void System::detectPhaseFaults(Services& services)
74 {
75     // Detect phase faults in regulator devices in each chassis
76     for (std::unique_ptr<Chassis>& oneChassis : chassis)
77     {
78         oneChassis->detectPhaseFaults(services, *this);
79     }
80 }
81 
monitorSensors(Services & services)82 void System::monitorSensors(Services& services)
83 {
84     // Monitor sensors in each chassis
85     for (std::unique_ptr<Chassis>& oneChassis : chassis)
86     {
87         oneChassis->monitorSensors(services, *this);
88     }
89 }
90 
91 } // namespace phosphor::power::regulators
92