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 "chassis.hpp"
18 
19 #include "system.hpp"
20 
21 namespace phosphor::power::regulators
22 {
23 
24 void Chassis::addToIDMap(IDMap& idMap)
25 {
26     // Add devices and their rails to the map
27     for (std::unique_ptr<Device>& device : devices)
28     {
29         device->addToIDMap(idMap);
30     }
31 }
32 
33 void Chassis::clearCache()
34 {
35     // Clear any cached data in each device
36     for (std::unique_ptr<Device>& device : devices)
37     {
38         device->clearCache();
39     }
40 }
41 
42 void Chassis::closeDevices(Services& services)
43 {
44     // Log debug message in journal
45     services.getJournal().logDebug("Closing devices in chassis " +
46                                    std::to_string(number));
47 
48     // Close devices
49     for (std::unique_ptr<Device>& device : devices)
50     {
51         device->close(services);
52     }
53 }
54 
55 void Chassis::configure(Services& services, System& system)
56 {
57     // Log info message in journal; important for verifying success of boot
58     services.getJournal().logInfo("Configuring chassis " +
59                                   std::to_string(number));
60 
61     // Configure devices
62     for (std::unique_ptr<Device>& device : devices)
63     {
64         device->configure(services, system, *this);
65     }
66 }
67 
68 void Chassis::monitorSensors(Services& services, System& system)
69 {
70     // Monitor sensors in each device
71     for (std::unique_ptr<Device>& device : devices)
72     {
73         device->monitorSensors(services, system, *this);
74     }
75 }
76 
77 } // namespace phosphor::power::regulators
78