1*6c7fed4cSGilbert Chen #pragma once 2*6c7fed4cSGilbert Chen 3*6c7fed4cSGilbert Chen #include "libpldm/platform.h" 4*6c7fed4cSGilbert Chen #include "libpldm/pldm.h" 5*6c7fed4cSGilbert Chen 6*6c7fed4cSGilbert Chen #include "terminus.hpp" 7*6c7fed4cSGilbert Chen #include "terminus_manager.hpp" 8*6c7fed4cSGilbert Chen 9*6c7fed4cSGilbert Chen namespace pldm 10*6c7fed4cSGilbert Chen { 11*6c7fed4cSGilbert Chen 12*6c7fed4cSGilbert Chen namespace platform_mc 13*6c7fed4cSGilbert Chen { 14*6c7fed4cSGilbert Chen 15*6c7fed4cSGilbert Chen /** 16*6c7fed4cSGilbert Chen * @brief PlatformManager 17*6c7fed4cSGilbert Chen * 18*6c7fed4cSGilbert Chen * PlatformManager class manages the actions outlined in the platform spec. 19*6c7fed4cSGilbert Chen */ 20*6c7fed4cSGilbert Chen class PlatformManager 21*6c7fed4cSGilbert Chen { 22*6c7fed4cSGilbert Chen public: 23*6c7fed4cSGilbert Chen PlatformManager() = delete; 24*6c7fed4cSGilbert Chen PlatformManager(const PlatformManager&) = delete; 25*6c7fed4cSGilbert Chen PlatformManager(PlatformManager&&) = delete; 26*6c7fed4cSGilbert Chen PlatformManager& operator=(const PlatformManager&) = delete; 27*6c7fed4cSGilbert Chen PlatformManager& operator=(PlatformManager&&) = delete; 28*6c7fed4cSGilbert Chen ~PlatformManager() = default; 29*6c7fed4cSGilbert Chen PlatformManager(TerminusManager & terminusManager,TerminiMapper & termini)30*6c7fed4cSGilbert Chen explicit PlatformManager(TerminusManager& terminusManager, 31*6c7fed4cSGilbert Chen TerminiMapper& termini) : 32*6c7fed4cSGilbert Chen terminusManager(terminusManager), 33*6c7fed4cSGilbert Chen termini(termini) 34*6c7fed4cSGilbert Chen {} 35*6c7fed4cSGilbert Chen 36*6c7fed4cSGilbert Chen /** @brief Initialize terminus which supports PLDM Type 2 37*6c7fed4cSGilbert Chen * 38*6c7fed4cSGilbert Chen * @return coroutine return_value - PLDM completion code 39*6c7fed4cSGilbert Chen */ 40*6c7fed4cSGilbert Chen exec::task<int> initTerminus(); 41*6c7fed4cSGilbert Chen 42*6c7fed4cSGilbert Chen private: 43*6c7fed4cSGilbert Chen /** reference of TerminusManager for sending PLDM request to terminus*/ 44*6c7fed4cSGilbert Chen TerminusManager& terminusManager; 45*6c7fed4cSGilbert Chen 46*6c7fed4cSGilbert Chen /** @brief Managed termini list */ 47*6c7fed4cSGilbert Chen TerminiMapper& termini; 48*6c7fed4cSGilbert Chen }; 49*6c7fed4cSGilbert Chen } // namespace platform_mc 50*6c7fed4cSGilbert Chen } // namespace pldm 51