使用d-feet查看dbus程序时,系统原有的d-feet程序显示path和interface等信息,但是自己写的程序虽然在d-feet中能够识别,却不显示path和interface等信息。经过调查发现,d-feet调用程序的org.freedesktop.DBus.Introspectable接口(Interface)下的Introspect函数(Method)。实现了这个接口,返回字符串格式的xml,然后d-feet中就能显示了。
返回字符串格式如下:
"<!DOCTYPE node PUBLIC \"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN\" \n"
"\"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\">\n"
"<node>\n"
" <interface name=\"org.freedesktop.DBus.Introspectable\">\n"
" <method name=\"Introspect\">\n"
" <arg name=\"data\" direction=\"out\" type=\"s\"/>\n"
" </method>\n"
" </interface>\n"
" <interface name=\"test.signal.Type\">\n"
" <method name=\"FunctionOne\">\n"
" <arg direction=\"in\" type=\"s\"/>\n"
" </method>\n"
" <method name=\"FunctionTwo\">\n"
" <arg direction=\"in\" type=\"s\"/>\n"
" </method>\n"
" </interface>\n"
"</node>\n"
效果对比图: