blob: 3873ac0bae9c0a23ca8f17d982c7b94edd914e86 [file] [log] [blame]
Matt Spinler70849272017-08-22 09:14:40 -05001/**
2 * Copyright © 2017 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 <phosphor-logging/log.hpp>
17#include "runtime_monitor.hpp"
18#include "utility.hpp"
19
20namespace witherspoon
21{
22namespace power
23{
24
25using namespace phosphor::logging;
26
27int RuntimeMonitor::run()
28{
29 device->clearFaults();
30
31 return DeviceMonitor::run();
32}
33
34void RuntimeMonitor::onPowerLost(sdbusplus::message::message& msg)
35{
36 log<level::INFO>("PGOOD failure detected. Checking for faults.");
37
38 try
39 {
40 timer.stop();
41
42 device->onFailure();
43
44 //Note: This application only runs when the system has
45 //power, so it will be killed by systemd sometime shortly
46 //after this power off is issued.
47
48 util::powerOff(bus);
49 }
50 catch (std::exception& e)
51 {
52 //No need to crash
53 log<level::ERR>(e.what());
54 }
55}
56
57}
58}