Я пишу драйвер bluetooth для Intel Edison. Программное обеспечение для платформ доступно последним, и я разрабатываю IDE на основе Eclipse. Номер версии Bluez в этом выпуске edison составляет 5.37.Как использовать Bluez5 DBUS API в C++ для подключения и подключения новых устройств?
Я проектирование систему, которая должна отвечать следующим требованиям:
- Scan для блютуз устройств поблизости. [X]
- Обнаружение сенсорных устройств на основе имени и MAC-адреса. [X]
- Пара и подключите сенсорные устройства автоматически. []
Последний вопрос - проблема, поскольку я могу обнаружить сенсорные устройства, но я не могу их соединить с помощью интерфейса bluez5. До сих пор я пытался использовать интерфейс D-BUS, но он не работает, так как я получаю следующее сообщение об ошибке:
Метод «FindAdapter» с подписью «с» на интерфейсе «org.bluez.Manager» не существует
Код представлен здесь. Пожалуйста, обратите внимание:
- DBusConnection * сопп -> DBUS_BUS_SYSTEM
- Const символ * адаптер -> "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);
Любые идеи?
Вы можете использовать некоторые более высокоуровневые API-интерфейсы, например Qt5 теперь имеет модуль Bluetooth (который также использует синий цвет под капотом). Может быть, это было бы более простым в использовании. – Venemo