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