#include "common/utils.hpp" #include "softoff.hpp" #include int main() { // Get a default event loop auto event = sdeventplus::Event::get_default(); // Get a handle to system D-Bus. auto& bus = pldm::utils::DBusHandler::getBus(); // Attach the bus to sd_event to service user requests bus.attach_event(event.get(), SD_EVENT_PRIORITY_NORMAL); pldm::SoftPowerOff softPower(bus, event.get()); if (softPower.isError()) { std::cerr << "Host failed to gracefully shutdown, exiting " "pldm-softpoweroff app\n"; return -1; } if (softPower.isCompleted()) { std::cerr << "Host current state is not Running, exiting " "pldm-softpoweroff app\n"; return 0; } // Send the gracefully shutdown request to the host and // wait the host gracefully shutdown. if (softPower.hostSoftOff(event)) { std::cerr << "pldm-softpoweroff:Failure in sending soft off request to " "the host. Exiting pldm-softpoweroff app\n"; return -1; } if (softPower.isTimerExpired() && softPower.isReceiveResponse()) { pldm::utils::reportError( "pldm soft off: Waiting for the host soft off timeout"); std::cerr << "PLDM host soft off: ERROR! Wait for the host soft off timeout." << "Exit the pldm-softpoweroff " << "\n"; return -1; } return 0; }