xref: /openbmc/phosphor-pid-control/ipmi/main_ipmi.cpp (revision 46a755fce8dc0bdd9c0c5ea09d55d3e5494f335f)
1 // SPDX-License-Identifier: Apache-2.0
2 // SPDX-FileCopyrightText: Copyright 2017 Google Inc
3 
4 #include "dbus_mode.hpp"
5 #include "manualcmds.hpp"
6 
7 #include <ipmid/iana.hpp>
8 #include <ipmid/oemopenbmc.hpp>
9 #include <ipmid/oemrouter.hpp>
10 
11 #include <cstdio>
12 #include <functional>
13 #include <memory>
14 
15 namespace pid_control::ipmi
16 {
17 
18 ZoneControlIpmiHandler handler(std::make_unique<DbusZoneControl>());
19 
20 } // namespace pid_control::ipmi
21 
22 void setupGlobalOemFanControl() __attribute__((constructor));
23 
setupGlobalOemFanControl()24 void setupGlobalOemFanControl()
25 {
26     oem::Router* router = oem::mutableRouter();
27 
28     std::fprintf(
29         stderr,
30         "Registering OEM:[%#08X], Cmd:[%#04X] for Manual Zone Control\n",
31         oem::obmcOemNumber, oem::Cmd::fanManualCmd);
32 
33     router->registerHandler(
34         oem::obmcOemNumber, oem::Cmd::fanManualCmd,
35         std::bind_front(pid_control::ipmi::manualModeControl,
36                         &pid_control::ipmi::handler));
37 }
38