#pragma once #include "libpldm/platform.h" #include "libpldm/pldm.h" #include "terminus.hpp" #include "terminus_manager.hpp" namespace pldm { namespace platform_mc { /** * @brief PlatformManager * * PlatformManager class manages the actions outlined in the platform spec. */ class PlatformManager { public: PlatformManager() = delete; PlatformManager(const PlatformManager&) = delete; PlatformManager(PlatformManager&&) = delete; PlatformManager& operator=(const PlatformManager&) = delete; PlatformManager& operator=(PlatformManager&&) = delete; ~PlatformManager() = default; explicit PlatformManager(TerminusManager& terminusManager, TerminiMapper& termini) : terminusManager(terminusManager), termini(termini) {} /** @brief Initialize terminus which supports PLDM Type 2 * * @return coroutine return_value - PLDM completion code */ exec::task initTerminus(); private: /** reference of TerminusManager for sending PLDM request to terminus*/ TerminusManager& terminusManager; /** @brief Managed termini list */ TerminiMapper& termini; }; } // namespace platform_mc } // namespace pldm