xref: /openbmc/pldm/fw-update/update.hpp (revision 11085f1bd8bc53d7ed142116d18c91ab67c29668)
16a3f9906SP Arun Kumar Reddy #pragma once
26a3f9906SP Arun Kumar Reddy 
36a3f9906SP Arun Kumar Reddy #include <xyz/openbmc_project/Software/ApplyTime/server.hpp>
4*11085f1bSRajeev Ranjan #include <xyz/openbmc_project/Software/MultipartUpdate/server.hpp>
56a3f9906SP Arun Kumar Reddy #include <xyz/openbmc_project/Software/Update/server.hpp>
66a3f9906SP Arun Kumar Reddy 
76a3f9906SP Arun Kumar Reddy namespace pldm
86a3f9906SP Arun Kumar Reddy {
96a3f9906SP Arun Kumar Reddy 
106a3f9906SP Arun Kumar Reddy namespace fw_update
116a3f9906SP Arun Kumar Reddy {
126a3f9906SP Arun Kumar Reddy 
136a3f9906SP Arun Kumar Reddy class UpdateManager;
146a3f9906SP Arun Kumar Reddy 
156a3f9906SP Arun Kumar Reddy using UpdateIntf = sdbusplus::server::object_t<
16*11085f1bSRajeev Ranjan     sdbusplus::xyz::openbmc_project::Software::server::Update,
17*11085f1bSRajeev Ranjan     sdbusplus::xyz::openbmc_project::Software::server::MultipartUpdate>;
186a3f9906SP Arun Kumar Reddy using ApplyTimeIntf =
196a3f9906SP Arun Kumar Reddy     sdbusplus::xyz::openbmc_project::Software::server::ApplyTime;
206a3f9906SP Arun Kumar Reddy 
216a3f9906SP Arun Kumar Reddy /** @class Update
226a3f9906SP Arun Kumar Reddy  *
236a3f9906SP Arun Kumar Reddy  *  Concrete implementation of xyz.openbmc_project.Software.Update D-Bus
246a3f9906SP Arun Kumar Reddy  *  interface
256a3f9906SP Arun Kumar Reddy  */
266a3f9906SP Arun Kumar Reddy class Update : public UpdateIntf
276a3f9906SP Arun Kumar Reddy {
286a3f9906SP Arun Kumar Reddy   public:
296a3f9906SP Arun Kumar Reddy     /** @brief Constructor
306a3f9906SP Arun Kumar Reddy      *
316a3f9906SP Arun Kumar Reddy      *  @param[in] bus - Bus to attach to
326a3f9906SP Arun Kumar Reddy      *  @param[in] objPath - D-Bus object path
336a3f9906SP Arun Kumar Reddy      *  @param[in] updateManager - Reference to FW update manager
346a3f9906SP Arun Kumar Reddy      */
Update(sdbusplus::bus_t & bus,const std::string & path,UpdateManager * updateManager)3577435baaSPatrick Williams     Update(sdbusplus::bus_t& bus, const std::string& path,
366a3f9906SP Arun Kumar Reddy            UpdateManager* updateManager) :
376a3f9906SP Arun Kumar Reddy         UpdateIntf(bus, path.c_str()), updateManager(updateManager),
386a3f9906SP Arun Kumar Reddy         objPath(path)
396a3f9906SP Arun Kumar Reddy     {}
406a3f9906SP Arun Kumar Reddy 
416a3f9906SP Arun Kumar Reddy     virtual sdbusplus::message::object_path startUpdate(
426a3f9906SP Arun Kumar Reddy         sdbusplus::message::unix_fd image,
436a3f9906SP Arun Kumar Reddy         ApplyTimeIntf::RequestedApplyTimes applyTime) override;
446a3f9906SP Arun Kumar Reddy 
456a3f9906SP Arun Kumar Reddy     ~Update() noexcept override = default;
466a3f9906SP Arun Kumar Reddy 
476a3f9906SP Arun Kumar Reddy   private:
486a3f9906SP Arun Kumar Reddy     UpdateManager* updateManager;
496a3f9906SP Arun Kumar Reddy     const std::string objPath;
506a3f9906SP Arun Kumar Reddy     std::stringstream imageStream;
516a3f9906SP Arun Kumar Reddy };
526a3f9906SP Arun Kumar Reddy 
536a3f9906SP Arun Kumar Reddy } // namespace fw_update
546a3f9906SP Arun Kumar Reddy 
556a3f9906SP Arun Kumar Reddy } // namespace pldm
56