1*6a3f9906SP Arun Kumar Reddy #pragma once 2*6a3f9906SP Arun Kumar Reddy 3*6a3f9906SP Arun Kumar Reddy #include <xyz/openbmc_project/Software/ApplyTime/server.hpp> 4*6a3f9906SP Arun Kumar Reddy #include <xyz/openbmc_project/Software/Update/server.hpp> 5*6a3f9906SP Arun Kumar Reddy 6*6a3f9906SP Arun Kumar Reddy namespace pldm 7*6a3f9906SP Arun Kumar Reddy { 8*6a3f9906SP Arun Kumar Reddy 9*6a3f9906SP Arun Kumar Reddy namespace fw_update 10*6a3f9906SP Arun Kumar Reddy { 11*6a3f9906SP Arun Kumar Reddy 12*6a3f9906SP Arun Kumar Reddy class UpdateManager; 13*6a3f9906SP Arun Kumar Reddy 14*6a3f9906SP Arun Kumar Reddy using UpdateIntf = sdbusplus::server::object_t< 15*6a3f9906SP Arun Kumar Reddy sdbusplus::xyz::openbmc_project::Software::server::Update>; 16*6a3f9906SP Arun Kumar Reddy using ApplyTimeIntf = 17*6a3f9906SP Arun Kumar Reddy sdbusplus::xyz::openbmc_project::Software::server::ApplyTime; 18*6a3f9906SP Arun Kumar Reddy 19*6a3f9906SP Arun Kumar Reddy /** @class Update 20*6a3f9906SP Arun Kumar Reddy * 21*6a3f9906SP Arun Kumar Reddy * Concrete implementation of xyz.openbmc_project.Software.Update D-Bus 22*6a3f9906SP Arun Kumar Reddy * interface 23*6a3f9906SP Arun Kumar Reddy */ 24*6a3f9906SP Arun Kumar Reddy class Update : public UpdateIntf 25*6a3f9906SP Arun Kumar Reddy { 26*6a3f9906SP Arun Kumar Reddy public: 27*6a3f9906SP Arun Kumar Reddy /** @brief Constructor 28*6a3f9906SP Arun Kumar Reddy * 29*6a3f9906SP Arun Kumar Reddy * @param[in] bus - Bus to attach to 30*6a3f9906SP Arun Kumar Reddy * @param[in] objPath - D-Bus object path 31*6a3f9906SP Arun Kumar Reddy * @param[in] updateManager - Reference to FW update manager 32*6a3f9906SP Arun Kumar Reddy */ 33*6a3f9906SP Arun Kumar Reddy Update(sdbusplus::bus::bus& bus, const std::string& path, 34*6a3f9906SP Arun Kumar Reddy UpdateManager* updateManager) : 35*6a3f9906SP Arun Kumar Reddy UpdateIntf(bus, path.c_str()), updateManager(updateManager), 36*6a3f9906SP Arun Kumar Reddy objPath(path) 37*6a3f9906SP Arun Kumar Reddy {} 38*6a3f9906SP Arun Kumar Reddy 39*6a3f9906SP Arun Kumar Reddy virtual sdbusplus::message::object_path startUpdate( 40*6a3f9906SP Arun Kumar Reddy sdbusplus::message::unix_fd image, 41*6a3f9906SP Arun Kumar Reddy ApplyTimeIntf::RequestedApplyTimes applyTime) override; 42*6a3f9906SP Arun Kumar Reddy 43*6a3f9906SP Arun Kumar Reddy ~Update() noexcept override = default; 44*6a3f9906SP Arun Kumar Reddy 45*6a3f9906SP Arun Kumar Reddy private: 46*6a3f9906SP Arun Kumar Reddy UpdateManager* updateManager; 47*6a3f9906SP Arun Kumar Reddy const std::string objPath; 48*6a3f9906SP Arun Kumar Reddy std::stringstream imageStream; 49*6a3f9906SP Arun Kumar Reddy }; 50*6a3f9906SP Arun Kumar Reddy 51*6a3f9906SP Arun Kumar Reddy } // namespace fw_update 52*6a3f9906SP Arun Kumar Reddy 53*6a3f9906SP Arun Kumar Reddy } // namespace pldm 54