xref: /openbmc/phosphor-bmc-code-mgmt/test/common/exampledevice/example_device.hpp (revision bd5081f0b99a27dde8101576524b2c02a4a580b6)
1 #pragma once
2 
3 #include "common/include/device.hpp"
4 #include "common/include/software_manager.hpp"
5 
6 #include <phosphor-logging/lg2.hpp>
7 #include <sdbusplus/async.hpp>
8 #include <sdbusplus/server.hpp>
9 #include <xyz/openbmc_project/Association/Definitions/server.hpp>
10 #include <xyz/openbmc_project/Software/Update/server.hpp>
11 
12 namespace phosphor::software::example_device
13 {
14 
15 class ExampleCodeUpdater : public phosphor::software::manager::SoftwareManager
16 {
17   public:
18     ExampleCodeUpdater(sdbusplus::async::context& ctx,
19                        long uniqueSuffix = getRandomId());
20 
21     sdbusplus::async::task<bool> initDevice(const std::string& service,
22                                             const std::string& path,
23                                             SoftwareConfig& config) final;
24 
25   private:
26     static long getRandomId();
27 };
28 
29 const std::string exampleName = "ExampleSoftware";
30 
31 const uint32_t exampleVendorIANA = 0x0000a015;
32 const std::string exampleCompatibleHardware = "com.example.CompatibleDevice";
33 
34 const std::string exampleInvObjPath =
35     "/xyz/openbmc_project/inventory/system/board/ExampleBoard/ExampleDevice";
36 
37 class ExampleDevice : public Device
38 {
39   public:
40     using Device::softwarePending;
41     using phosphor::software::device::Device::softwareCurrent;
42 
43     static SoftwareConfig defaultConfig;
44 
45     ExampleDevice(sdbusplus::async::context& ctx,
46                   phosphor::software::manager::SoftwareManager* parent,
47                   const SoftwareConfig& config = defaultConfig);
48 
49     sdbusplus::async::task<bool> updateDevice(const uint8_t* image,
50                                               size_t image_size) override;
51 
52     bool deviceSpecificUpdateFunctionCalled = false;
53 };
54 
55 } // namespace phosphor::software::example_device
56