#include "dbusconnector.h" #include #include #include #include #include #include DBusConnector::DBusConnector(QObject *parent) : QObject(parent) { //dbus-send --system --dest=org.bluez --print-reply / org.bluez.Manager.ListAdapters //dbus-send --system --dest=org.bluez --print-reply $path org.bluez.Adapter.GetProperties //dbus-send --system --dest=org.bluez --print-reply $devpath org.bluez.Device.GetProperties //dbus-send --system --dest=org.bluez --print-reply $devpath org.bluez.Input.Connect QDBusConnection session = QDBusConnection::sessionBus(); findPebble(); } bool DBusConnector::findPebble() { QDBusConnection system = QDBusConnection::systemBus(); QDBusReply> ListAdaptersReply = system.call(QDBusMessage::createMethodCall("org.bluez", "/", "org.bluez.Manager", "ListAdapters")); if (not ListAdaptersReply.isValid()) { qWarning() << ListAdaptersReply.error().message(); return false; } QList adapters = ListAdaptersReply.value(); if (adapters.isEmpty()) { qWarning() << "No BT adapters found"; return false; } QDBusReply AdapterPropertiesReply = system.call(QDBusMessage::createMethodCall("org.bluez", adapters[0].path(), "org.bluez.Adapter", "GetProperties")); if (not AdapterPropertiesReply.isValid()) { qWarning() << AdapterPropertiesReply.error().message(); return false; } QList devices; AdapterPropertiesReply.value()["Devices"].value() >> devices; QString name; QString address; foreach (QDBusObjectPath path, devices) { QDBusReply DevicePropertiesReply = system.call(QDBusMessage::createMethodCall("org.bluez", path.path(), "org.bluez.Device", "GetProperties")); if (not DevicePropertiesReply.isValid()) { qWarning() << DevicePropertiesReply.error().message(); continue; } const QVariantMap &dict = DevicePropertiesReply.value(); QString tmp = dict["Name"].toString(); qDebug() << "Found BT device:" << tmp; if (tmp.startsWith("Pebble")) { name = tmp; address = dict["Address"].toString(); qDebug() << "Found Pebble:" << name << address; } } if (name.isEmpty() or address.isEmpty()) return false; pebbleName = name; pebbleAddress = address; return true; }