xref: /openbmc/pldm/fw-update/update.hpp (revision 6a3f9906a774644a8f0ca2978a81b769e948206f)
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