接收信号流程:
- 调研dbus_bus_register进行注册,注册dbus的进程需要设定一个dbus name用来在总线上标识自己,注册完成后会创建一个DBusConnection,相当于该进程与dbus总线的连接点
- 调用dbus_bus_add_match()添加信号匹配条件,一般是以字符串列表(包含interface和member)的形式添加。告诉dbus总线该进程想要接收信号对应的接口和信号名,当dbus总线接收到对应的信号时就会发送给添加条件的进程。
- 调用dbus_connection_add_filter(conn, function, NULL, NULL)添加接收到消息时的处理函数。当进程接收到dbus总线通知的消息时会进入到该函数,在该函数内可以根据不同接口收到的信号分别进行处理。
发送信号流程:
- 第一步和接收信号流程的第一步一样,需要先进行注册,为dubs连接取名,创建一个发送信号的通道。
- 调用dbus_message_new_signal(obj_path,interface,member)创建要发送的接口名和信号名。
- 调用dbus_message_append_args 设置发送消息的相关参数
- 调用dbus_connection_send(connection,msg) 把消息发送到指定的dubs连接
- 调用dbus_connection_flush(connection) 冲刷dbus连接,此时消息就会发送到dbus总线上。