| /** |
| * Copyright © 2017 IBM Corporation |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| #include <phosphor-logging/log.hpp> |
| #include "config.h" |
| #include "runtime_monitor.hpp" |
| #include "utility.hpp" |
| |
| namespace witherspoon |
| { |
| namespace power |
| { |
| |
| using namespace phosphor::logging; |
| |
| int RuntimeMonitor::run() |
| { |
| #ifdef UCD90160_DEVICE_ACCESS |
| return DeviceMonitor::run(); |
| #else |
| return EXIT_SUCCESS; |
| #endif |
| } |
| |
| void RuntimeMonitor::onPowerLost(sdbusplus::message::message& msg) |
| { |
| log<level::INFO>("PGOOD failure detected. Checking for faults."); |
| |
| try |
| { |
| timer.stop(); |
| |
| #ifdef UCD90160_DEVICE_ACCESS |
| device->onFailure(); |
| #endif |
| //Note: This application only runs when the system has |
| //power, so it will be killed by systemd sometime shortly |
| //after this power off is issued. |
| |
| util::powerOff(bus); |
| } |
| catch (std::exception& e) |
| { |
| //No need to crash |
| log<level::ERR>(e.what()); |
| } |
| } |
| |
| } |
| } |