blob: 048eedb58e811229a31779e15356a595060099b0 [file] [log] [blame]
<%
def parameters(defaultValue=False):
return ",\n ".\
join([ parameter(p, defaultValue) for p in signal.properties ])
def parameter(p, defaultValue=False):
r = "%s %s" % (p.cppTypeParam(interface.name), p.camelCase)
if defaultValue:
r += default_value(p)
return r
def parameters_as_list(pre="", post=""):
return ", ".join([ "%s%s%s" % (pre, p.camelCase, post)
for p in signal.properties ])
def parameters_types_as_list():
return ", ".join([ p.cppTypeMessage(interface.name)
for p in signal.properties ])
def default_value(p):
if p.defaultValue != None:
return " = " + str(p.defaultValue)
else:
return ""
def interface_name():
return interface.name.split('.').pop()
%>
###
### Emit 'header'
###
% if ptype == 'header':
/** @brief Send signal '${signal.name}'
*
* ${ signal.description.strip() }
% if len(signal.properties) != 0:
*
% for p in signal.properties:
* @param[in] ${p.camelCase} - ${p.description.strip()}
% endfor
% endif
*/
void ${ signal.camelCase }(
${ parameters(True) });
###
### Emit 'vtable'
###
% elif ptype == 'vtable':
vtable::signal("${signal.name}",
details::${interface_name()}::_signal_${signal.CamelCase }
.data()),
###
### Emit 'callback-cpp'
###
% elif ptype == 'callback-cpp':
void ${interface_name()}::${ signal.camelCase }(
${ parameters() })
{
using sdbusplus::server::binding::details::convertForMessage;
auto& i = _${"_".join(interface.name.split('.'))}_interface;
auto m = i.new_signal("${ signal.name }");
m.append(${ parameters_as_list(pre="convertForMessage(", post=")") });
m.signal_send();
}
namespace details
{
namespace ${interface_name()}
{
static const auto _signal_${ signal.CamelCase } =
% if len(signal.properties) == 0:
utility::tuple_to_array(std::make_tuple('\0'));
% else:
utility::tuple_to_array(message::types::type_id<
${ parameters_types_as_list() }>());
% endif
}
}
% elif ptype == 'callback-hpp-includes':
% for i in interface.enum_includes(signal.properties):
#include <${i}>
% endfor
% endif