我正在为Intel Edison编写蓝牙驱动程序。板子软件是最新的可用版本,并且我正在使用基于Eclipse的IDE进行开发。这个Edison版本中的Bluez版本号为5.37。
我正在设计一个系统,需要满足以下要求:
- 扫描附近的蓝牙设备。[X]
- 通过名称和MAC地址检测传感器设备。[X]
- 自动配对和连接传感器设备。[]
最后一项是问题,因为虽然我可以检测到传感器设备,但我无法使用bluez5接口将它们配对。到目前为止,我尝试使用D-BUS接口,但由于我不断收到以下错误消息,所以它不起作用:
在“org.bluez.Manager”接口上具有签名“s”的方法“FindAdapter”不存在
代码如下。请注意:
- DBusConnection *conn -> DBUS_BUS_SYSTEM
- const char *adapter -> "hci0".
代码:
DBusMessage *msg, *reply;
DBusError err;
const char *reply_path;
char *path;
msg = dbus_message_new_method_call("org.bluez", "/","org.bluez.Manager", "FindAdapter");
dbus_message_append_args(msg, DBUS_TYPE_STRING, &adapter,DBUS_TYPE_INVALID);
dbus_error_init(&err);
reply = dbus_connection_send_with_reply_and_block(conn, msg, -1, &err);
dbus_message_unref(msg);
有任何想法吗?