在嵌入式系统中使用dbus主要有两个方面的用途:
1:进程间通信
2:实现client/server模式;
2也是1的具体表现形式;
包括dbus自带的例子,都是采用dbus对数据的封装,实现client/server模式的,
缺点有二:
1 一个API要定义一个xml接口描述
2 数据封装非常复杂,非常不利于以后接口的扩展;
为了客服上面的缺点,提高可扩展性和效率,可以这样做:
如果一个应用分为client,server两端的话,要高效率的实现client/server之间
的通信,可以采用如下方式:
第一步:定义一个通用的API xml 接口描述,暂命令为dbus_general.xml
<?xml version="1.0" encoding="UTF-8" ?>
<node name="/org/freedesktop/DBus/General_api">
<interface name="org.freedesktop.DBus.general_api">
<method name="client_request">
<annotation name="org.freedesktop.DBus.GLib.CSymbol" value="__client_request_cb"/>
<arg type="i" name="action_id" direction="in" /> //这个地方就是不同API的ID
<arg type="i" name="input_int" direction="in" /> //这个参数可以用,也可以不用
<arg type="ay" name="input_garray" direction="in" /> //这个Garray用来从client传递数据,包括复杂的数据结构到server
<arg type="i" name="outut_int" direction="out" /> //这个可以用,也可以不用