| #include "config.h" |
| |
| #include "occ_events.hpp" |
| #include "occ_manager.hpp" |
| #include "utils.hpp" |
| |
| #ifdef POWER10 |
| #include "powermode.hpp" |
| #endif |
| |
| #include <org/open_power/OCC/Device/error.hpp> |
| #include <phosphor-logging/elog-errors.hpp> |
| #include <phosphor-logging/elog.hpp> |
| #include <phosphor-logging/log.hpp> |
| #include <xyz/openbmc_project/Common/error.hpp> |
| |
| using namespace phosphor::logging; |
| |
| using namespace sdbusplus::org::open_power::OCC::Device::Error; |
| using InternalFailure = |
| sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure; |
| |
| int main(int /*argc*/, char** /*argv[]*/) |
| { |
| auto& bus = open_power::occ::utils::getBus(); |
| |
| // Need sd_event to watch for OCC device errors |
| sd_event* event = nullptr; |
| auto r = sd_event_default(&event); |
| if (r < 0) |
| { |
| log<level::ERR>("Error creating a default sd_event handler"); |
| return r; |
| } |
| open_power::occ::EventPtr eventP{event}; |
| event = nullptr; |
| |
| // Attach the bus to sd_event to service user requests |
| bus.attach_event(eventP.get(), SD_EVENT_PRIORITY_NORMAL); |
| |
| // Add object manager interfaces (for mapper) |
| sdbusplus::server::manager_t objManager(bus, OCC_CONTROL_ROOT); |
| #ifdef READ_OCC_SENSORS |
| sdbusplus::server::manager_t objManagerXyz(bus, OCC_SENSORS_ROOT); |
| #endif |
| #ifdef POWER10 |
| sdbusplus::server::manager_t objManagerXyzControl( |
| bus, "/xyz/openbmc_project/control"); |
| #endif |
| sdbusplus::server::manager_t objManagerXyzInventory( |
| bus, "/xyz/openbmc_project/inventory"); |
| open_power::occ::Manager mgr(eventP); |
| |
| // Claim the bus since all the house keeping is done now |
| bus.request_name(OCC_CONTROL_BUSNAME); |
| |
| // Wait for requests |
| sd_event_loop(eventP.get()); |
| |
| return 0; |
| } |