<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
<node>
<!--
This file should exercise as many aspects of the sbus_codegen as
possible. See sbus_codegen_test.c for verification.
-->
<!--
This is an interface, it will get a sbus_interface_meta struct.
Its name will be com_planetexpress_Ship__meta, since no c symbol
is specified.
-->
<interface name="com.planetexpress.Ship">
<!-- A property -->
<property name="Color" type="s" access="read"/>
<!-- A method with two in and one out argument -->
<method name="MoveUniverse">
<!-- This is a boolean arg -->
<arg name="smoothly" type="b" direction="in"/>
<!-- This is an uint32 arg -->
<arg name="speed_factor" type="u" direction="in"/>
<!-- This is a string arg -->
<arg name="where_we_crashed" type="s" direction="out"/>
</method>
<!-- A signal with one argument -->
<signal name="BecameSentient">
<arg name="gender" type="s"/>
</signal>
<!-- A method with a specific c name -->
<method name="Crash">
<arg name="where" type="s" direction="in"/>
</method>
<!-- A method without a type-safe handler -->
<method name="Land">
</method>
</interface>
<!--
Another interface. It's C name will be test_pilot, since we've overridden
the c symbol name.
-->
<interface name="com.planetexpress.Pilot">
<!-- A property -->
<property name="FullName" type="s" access="readwrite"/>
<!-- A simple method -->
<method name="Blink">
<!-- This is an uint32 arg -->
<arg name="duration" type="u" direction="in"/>
<!-- This is a boolean return value -->
<arg name="crashed" type="b" direction="out"/>
</method>
<!-- A method with every type of basic argument, in both directions -->
<method name="Eject">
<arg name="byte" type="y" direction="in"/>
<arg name="boolean" type="b" direction="in"/>
<arg name="int16" type="n" direction="in"/>
<arg name="uint16" type="q" direction="in"/>
<arg name="int32" type="i" direction="in"/>
<arg name="uint32" type="u" direction="in"/>
<arg name="int64" type="x" direction="in"/>
<arg name="uint64" type="t" direction="in"/>
<arg name="double" type="d" direction="in"/>
<arg name="string" type="s" direction="in"/>
<arg name="object_path" type="o" direction="in"/>
<arg name="byte_array" type="ay" direction="in"/>
<arg name="int16_array" type="an" direction="in"/>
<arg name="uint16_array" type="aq" direction="in"/>
<arg name="int32_array" type="ai" direction="in"/>
<arg name="uint32_array" type="au" direction="in"/>
<arg name="int64_array" type="ax" direction="in"/>
<arg name="uint64_array" type="at" direction="in"/>
<arg name="double_array" type="ad" direction="in"/>
<arg name="string_array" type="as" direction="in"/>
<arg name="object_path_array" type="ao" direction="in"/>
<arg name="byte" type="y" direction="out"/>
<arg name="boolean" type="b" direction="out"/>
<arg name="int16" type="n" direction="out"/>
<arg name="uint16" type="q" direction="out"/>
<arg name="int32" type="i" direction="out"/>
<arg name="uint32" type="u" direction="out"/>
<arg name="int64" type="x" direction="out"/>
<arg name="uint64" type="t" direction="out"/>
<arg name="double" type="d" direction="out"/>
<arg name="string" type="s" direction="out"/>
<arg name="object_path" type="o" direction="out"/>
<arg name="byte_array" type="ay" direction="out"/>
<arg name="int16_array" type="an" direction="out"/>
<arg name="uint16_array" type="aq" direction="out"/>
<arg name="int32_array" type="ai" direction="out"/>
<arg name="uint32_array" type="au" direction="out"/>
<arg name="int64_array" type="ax" direction="out"/>
<arg name="uint64_array" type="at" direction="out"/>
<arg name="double_array" type="ad" direction="out"/>
<arg name="string_array" type="as" direction="out"/>
<arg name="object_path_array" type="ao" direction="out"/>
</method>
<!-- Properties with every type of basic argument, so far read only -->
<property name="byte" type="y" access="read"/>
<property name="boolean" type="b" access="read"/>
<property name="int16" type="n" access="read"/>
<property name="uint16" type="q" access="read"/>
<property name="int32" type="i" access="read"/>
<property name="uint32" type="u" access="read"/>
<property name="int64" type="x" access="read"/>
<property name="uint64" type="t" access="read"/>
<property name="double" type="d" access="read"/>
<property name="string" type="s" access="read"/>
<property name="object_path" type="o" access="read"/>
<!-- Special properties to test error codes -->
<property name="null_string" type="s" access="read"/>
<property name="null_path" type="o" access="read"/>
<!-- Property arrays with every type of basic argument except boolean
which we can't do (yet) -->
<property name="byte_array" type="ay" access="read"/>
<property name="int16_array" type="an" access="read"/>
<property name="uint16_array" type="aq" access="read"/>
<property name="int32_array" type="ai" access="read"/>
<property name="uint32_array" type="au" access="read"/>
<property name="int64_array" type="ax" access="read"/>
<property name="uint64_array" type="at" access="read"/>
<property name="double_array" type="ad" access="read"/>
<property name="string_array" type="as" access="read"/>
<property name="object_path_array" type="ao" access="read"/>
</interface>
<!--
Special property types not suitable for group automatic tests.
-->
<interface name="com.planetexpress.Special">
<property name="array_dict_sas" type="a{sas}" access="read"/>
</interface>
</node>