xref: /openbmc/phosphor-fan-presence/presence/tach_detect.cpp (revision 27cc39f1f98c6fe0352ff01effb189ab1dead055)
1  /**
2   * Copyright © 2017 IBM Corporation
3   *
4   * Licensed under the Apache License, Version 2.0 (the "License");
5   * you may not use this file except in compliance with the License.
6   * You may obtain a copy of the License at
7   *
8   *     http://www.apache.org/licenses/LICENSE-2.0
9   *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  #include "config.h"
17  #ifdef PRESENCE_USE_JSON
18  #include "json_config.hpp"
19  #include "json_parser.hpp"
20  #else
21  #include "generated.hpp"
22  #endif
23  #include <sdeventplus/event.hpp>
24  #include <sdeventplus/source/signal.hpp>
25  #include <stdplus/signal.hpp>
26  
27  #include <functional>
28  
29  int main(void)
30  {
31      using namespace phosphor::fan;
32  
33      auto bus = sdbusplus::bus::new_default();
34      auto event = sdeventplus::Event::get_default();
35      bus.attach_event(event.get(), SD_EVENT_PRIORITY_NORMAL);
36  
37  #ifdef PRESENCE_USE_JSON
38  
39      presence::JsonConfig config(bus);
40  
41      // jsonConfig will call config::start when
42      // the conf file is available.
43      phosphor::fan::JsonConfig jsonConfig{
44          std::bind(&presence::JsonConfig::start, &config)};
45  
46      stdplus::signal::block(SIGHUP);
47      sdeventplus::source::Signal signal(
48          event, SIGHUP,
49          std::bind(&presence::JsonConfig::sighupHandler, &config,
50                    std::placeholders::_1, std::placeholders::_2));
51  #else
52      for (auto& p : presence::ConfigPolicy::get())
53      {
54          p->monitor();
55      }
56  #endif
57  
58      return event.loop();
59  }
60