1 #pragma once
2 
3 #include <sdbusplus/bus.hpp>
4 #include <sdbusplus/server/object.hpp>
5 #include <xyz/openbmc_project/Condition/HostFirmware/server.hpp>
6 
7 #include <iostream>
8 
9 namespace phosphor
10 {
11 namespace condition
12 {
13 
14 using HostIntf = sdbusplus::server::object::object<
15     sdbusplus::xyz::openbmc_project::Condition::server::HostFirmware>;
16 
17 class Host : public HostIntf
18 {
19   public:
20     Host() = delete;
21     Host(const Host&) = delete;
22     Host& operator=(const Host&) = delete;
23     Host(Host&&) = delete;
24     Host& operator=(Host&&) = delete;
25     virtual ~Host() = default;
26 
27     Host(sdbusplus::bus::bus& bus, const std::string& path,
28          const std::string& hostId) :
29         HostIntf(bus, path.c_str()),
30         lineName("host" + hostId)
31     {
32         scanGpioPin();
33     };
34 
35     /** @brief Override reads to CurrentFirmwareCondition */
36     FirmwareCondition currentFirmwareCondition() const override;
37 
38   private:
39     std::string lineName;
40     bool isActHigh;
41 
42     /*
43      * Scan gpio pin to detect the name and active state
44      */
45     void scanGpioPin();
46 };
47 } // namespace condition
48 } // namespace phosphor
49