1 
2 #pragma once
3 #include "button_factory.hpp"
4 #include "button_interface.hpp"
5 #include "common.hpp"
6 #include "config.hpp"
7 #include "gpio.hpp"
8 #include "xyz/openbmc_project/Chassis/Buttons/Button/server.hpp"
9 #include "xyz/openbmc_project/Chassis/Common/error.hpp"
10 
11 #include <unistd.h>
12 
13 #include <phosphor-logging/elog-errors.hpp>
14 #include <phosphor-logging/lg2.hpp>
15 
16 static constexpr std::string_view DEBUG_SELECTOR_BUTTON =
17     "DEBUG_SELECTOR_BUTTON";
18 
19 class DebugHostSelector final :
20     public sdbusplus::server::object_t<
21         sdbusplus::xyz::openbmc_project::Chassis::Buttons::server::Button>,
22     public ButtonIface
23 
24 {
25   public:
DebugHostSelector(sdbusplus::bus_t & bus,const char * path,EventPtr & event,ButtonConfig & buttonCfg)26     DebugHostSelector(sdbusplus::bus_t& bus, const char* path, EventPtr& event,
27                       ButtonConfig& buttonCfg) :
28         sdbusplus::server::object_t<
29             sdbusplus::xyz::openbmc_project::Chassis::Buttons::server::Button>(
30             bus, path, action::defer_emit),
31         ButtonIface(bus, event, buttonCfg)
32     {
33         init();
34         emit_object_added();
35     }
36 
~DebugHostSelector()37     ~DebugHostSelector()
38     {
39         deInit();
40     }
41 
42     void simPress() override;
43     void simRelease() override;
44     void simLongPress() override;
45     void handleEvent(sd_event_source* es, int fd, uint32_t revents) override;
46 
getFormFactorName()47     static constexpr std::string_view getFormFactorName()
48     {
49         return DEBUG_SELECTOR_BUTTON;
50     }
51 
getDbusObjectPath()52     static const char* getDbusObjectPath()
53     {
54         return DBG_HS_DBUS_OBJECT_NAME;
55     }
56 };
57