1 #pragma once 2 3 #include <sdbusplus/bus.hpp> 4 #include <xyz/openbmc_project/Logging/Entry/server.hpp> 5 6 namespace phosphor 7 { 8 namespace state 9 { 10 namespace manager 11 { 12 namespace utils 13 { 14 15 /** @brief Tell systemd to generate d-bus events 16 * 17 * @param[in] bus - The Dbus bus object 18 * 19 * @return void, will throw exception on failure 20 */ 21 void subscribeToSystemdSignals(sdbusplus::bus_t& bus); 22 23 /** @brief Get service name from object path and interface 24 * 25 * @param[in] bus - The Dbus bus object 26 * @param[in] path - The Dbus object path 27 * @param[in] interface - The Dbus interface 28 * 29 * @return The name of the service 30 */ 31 std::string getService(sdbusplus::bus_t& bus, std::string path, 32 std::string interface); 33 34 /** @brief Get the value of input property 35 * 36 * @param[in] bus - The Dbus bus object 37 * @param[in] path - The Dbus object path 38 * @param[in] interface - The Dbus interface 39 * @param[in] property - The property name to get 40 * 41 * @return The value of the property 42 */ 43 std::string getProperty(sdbusplus::bus_t& bus, const std::string& path, 44 const std::string& interface, 45 const std::string& propertyName); 46 47 /** @brief Set the value of property 48 * 49 * @param[in] bus - The Dbus bus object 50 * @param[in] path - The Dbus object path 51 * @param[in] interface - The Dbus interface 52 * @param[in] property - The property name to set 53 * @param[in] value - The value of property 54 */ 55 void setProperty(sdbusplus::bus_t& bus, const std::string& path, 56 const std::string& interface, const std::string& property, 57 const std::string& value); 58 59 /** @brief Return the value of the input GPIO 60 * 61 * @param[in] gpioName - The name of the GPIO to read 62 * 63 * * @return The value of the gpio (0 or 1) or -1 on error 64 */ 65 int getGpioValue(const std::string& gpioName); 66 67 /** @brief Create an error log 68 * 69 * @param[in] bus - The Dbus bus object 70 * @param[in] errorMsg - The error message 71 * @param[in] errLevel - The error level 72 * parampin] additionalData - Optional extra data to add to the log 73 */ 74 void createError( 75 sdbusplus::bus_t& bus, const std::string& errorMsg, 76 sdbusplus::server::xyz::openbmc_project::logging::Entry::Level errLevel, 77 std::map<std::string, std::string> additionalData = {}); 78 79 /** @brief Call phosphor-dump-manager to create BMC user dump 80 * 81 * @param[in] bus - The Dbus bus object 82 */ 83 void createBmcDump(sdbusplus::bus_t& bus); 84 85 /** @brief Attempt to locate the obmc-chassis-lost-power@ file 86 * to indicate that an AC loss occurred. 87 * 88 * @param[in] chassisId - the chassis instance 89 */ 90 bool checkACLoss(size_t& chassisId); 91 92 /** @brief Determine if the BMC is at its Ready state 93 * 94 * @param[in] bus - The Dbus bus object 95 */ 96 bool isBmcReady(sdbusplus::bus_t& bus); 97 98 /** @brief Wait BMC to enter ready state or timeout reached. 99 * 100 * @param[in] bus - The Dbus bus object 101 * @param[in] timeout - Timeout in second 102 */ 103 bool waitBmcReady(sdbusplus::bus_t& bus, std::chrono::seconds timeout); 104 105 } // namespace utils 106 } // namespace manager 107 } // namespace state 108 } // namespace phosphor 109