xref: /openbmc/sdbusplus/tools/sdbusplus/templates/signal.prototype.hpp.mako (revision 8aea1d814330427a3668b48c347f1703c214748e)
1<%
2    def parameters(defaultValue=False):
3        return ",\n            ".\
4            join([ parameter(p, defaultValue) for p in signal.properties ])
5
6    def parameter(p, defaultValue=False):
7        r = "%s %s" % (p.cppTypeParam(interface.name), p.camelCase)
8        if defaultValue:
9            r += p.default_value(interface.name)
10        return r
11
12    def parameters_as_list():
13        return ", ".join([ p.camelCase for p in signal.properties ])
14
15    def parameters_types_as_list():
16        return ", ".join([ p.cppTypeParam(interface.name, full=True)
17                for p in signal.properties ])
18%>
19###
20### Emit 'header'
21###
22    % if ptype == 'header':
23        /** @brief Send signal '${signal.name}'
24         *
25         *  ${ signal.description.strip() }
26    % if len(signal.properties) != 0:
27         *
28        % for p in signal.properties:
29         *  @param[in] ${p.camelCase} - ${p.description.strip()}
30        % endfor
31    % endif
32         */
33        void ${ signal.camelCase }(
34            ${ parameters(True) });
35###
36### Emit 'callback-cpp'
37###
38    % elif ptype == 'callback-cpp':
39void ${interface.classname}::${ signal.camelCase }(
40            ${ parameters() })
41{
42    auto& i = _${interface.joinedName("_", "interface")};
43    auto m = i.new_signal("${ signal.name }");
44
45    m.append(${ parameters_as_list() });
46    m.signal_send();
47}
48
49namespace details
50{
51namespace ${interface.classname}
52{
53static const auto _signal_${ signal.CamelCase } =
54        utility::tuple_to_array(message::types::type_id<
55                ${ parameters_types_as_list() }>());
56}
57}
58    % endif
59