xref: /openbmc/phosphor-power/cold-redundancy/util.cpp (revision 7354ce62a992703872fc565ebfbeb00ca2c975e3)
1e83604beSCheng C Yang /*
2e83604beSCheng C Yang // Copyright (c) 2019 Intel Corporation
3e83604beSCheng C Yang //
4e83604beSCheng C Yang // Licensed under the Apache License, Version 2.0 (the "License");
5e83604beSCheng C Yang // you may not use this file except in compliance with the License.
6e83604beSCheng C Yang // You may obtain a copy of the License at
7e83604beSCheng C Yang //
8e83604beSCheng C Yang //      http://www.apache.org/licenses/LICENSE-2.0
9e83604beSCheng C Yang //
10e83604beSCheng C Yang // Unless required by applicable law or agreed to in writing, software
11e83604beSCheng C Yang // distributed under the License is distributed on an "AS IS" BASIS,
12e83604beSCheng C Yang // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e83604beSCheng C Yang // See the License for the specific language governing permissions and
14e83604beSCheng C Yang // limitations under the License.
15e83604beSCheng C Yang */
16e83604beSCheng C Yang 
17e83604beSCheng C Yang #include "util.hpp"
18e83604beSCheng C Yang 
19e83604beSCheng C Yang #include "utility.hpp"
20e83604beSCheng C Yang 
21e83604beSCheng C Yang #include <boost/algorithm/string/predicate.hpp>
22e83604beSCheng C Yang #include <phosphor-logging/elog-errors.hpp>
23e83604beSCheng C Yang 
24e83604beSCheng C Yang namespace CR
25e83604beSCheng C Yang {
26e83604beSCheng C Yang 
getPSUEvent(const std::shared_ptr<sdbusplus::asio::connection> & conn,const std::string & psuName,PSUState & state)27e83604beSCheng C Yang void getPSUEvent(const std::shared_ptr<sdbusplus::asio::connection>& conn,
28e83604beSCheng C Yang                  const std::string& psuName, PSUState& state)
29e83604beSCheng C Yang {
30e83604beSCheng C Yang     state = PSUState::normal;
31e83604beSCheng C Yang     bool result = true;
32e83604beSCheng C Yang     // /State/Decorator/PSUx_OperationalStatus
33e83604beSCheng C Yang     std::string pathStr = psuEventPath + psuName + "_OperationalStatus";
34e83604beSCheng C Yang 
35e83604beSCheng C Yang     phosphor::power::util::getProperty<bool>(
36e83604beSCheng C Yang         "xyz.openbmc_project.State.Decorator.OperationalStatus", "functional",
37e83604beSCheng C Yang         pathStr, "xyz.openbmc_project.PSUSensor",
38*7354ce62SPatrick Williams         static_cast<sdbusplus::bus_t&>(*conn), result);
39e83604beSCheng C Yang 
40e83604beSCheng C Yang     if (!result)
41e83604beSCheng C Yang     {
42e83604beSCheng C Yang         state = PSUState::acLost;
43e83604beSCheng C Yang     }
44e83604beSCheng C Yang }
45e83604beSCheng C Yang 
46e83604beSCheng C Yang } // namespace CR
47