xref: /openbmc/phosphor-fan-presence/presence/templates/generated.hpp.mako (revision e5ae01fd079b041e743a22bf5d567b51172e3cc9)
1## This file is a template, the comment below is emitted into the generated file
2/* This is an auto generated file. Do not edit. */
3#pragma once
4
5#include <array>
6#include <memory>
7#include <optional>
8#include <string>
9#include "anyof.hpp"
10#include "fallback.hpp"
11#include "fan.hpp"
12#include "gpio.hpp"
13#include "tach.hpp"
14
15using namespace std::string_literals;
16
17namespace phosphor
18{
19namespace fan
20{
21namespace presence
22{
23
24struct ConfigPolicy;
25
26struct ConfigSensors
27{
28    using Sensors = std::array<std::unique_ptr<PresenceSensor>, ${len(sensors)}>;
29
30    static auto& get()
31    {
32        static const Sensors sensors =
33        {
34% for s in sensors:
35            ${s.construct(loader, indent=indent +3)},
36% endfor
37        };
38        return sensors;
39    }
40};
41
42struct ConfigFans
43{
44    using Fans = std::array<Fan, ${len(fans)}>;
45
46    static auto& get()
47    {
48        static const Fans fans =
49        {
50            {
51% for f in fans:
52                Fans::value_type{
53                    "${f.name}"s,
54                    "${f.path}"s,
55                    std::nullopt
56                },
57% endfor
58            }
59        };
60        return fans;
61    }
62};
63
64struct ConfigPolicy
65{
66    using Policies = std::array<std::unique_ptr<RedundancyPolicy>, ${len(policies)}>;
67
68    static auto& get()
69    {
70        static const Policies policies =
71        {
72% for p in policies:
73            ${p.construct(loader, indent=indent +3)},
74% endfor
75        };
76        return policies;
77    }
78};
79} // namespace presence
80} // namespace fan
81} // namespace phosphor
82