Every where, bluetooth-frwk checks the adapter state before doing an action.
Adapter state is retrieved from parsing dbus message from 'GetManagedObjects' method.
This is only needed to get adapter path from dbus message.
As adapter path is always '/org/bluez/hci0' using Bluez5, define it improves performance.
For example, it fixes a bug in Modello UI when getting default adapter with
bonded devices.
Change-Id: I19e86c0ac269b60773ac3b3e3f62d802ebd40013
Signed-off-by: Corentin Lecouvey <corentin.lecouvey@open.eurogiciel.org>
dbus_message_iter_next(&value_iter);
}
- BT_DBG("There is no adapter");
-
return NULL;
}
DBusGProxy *_bt_get_adapter_proxy(DBusGConnection *conn)
{
DBusGProxy *adapter_proxy = NULL;
- char adapter_path[BT_ADAPTER_OBJECT_PATH_MAX] = { 0 };
retv_if(conn == NULL, NULL);
- if (_bt_get_adapter_path(conn, adapter_path) < 0) {
- BT_DBG("Could not get adapter path\n");
- return NULL;
- }
-
adapter_proxy = dbus_g_proxy_new_for_name(conn, BT_BLUEZ_NAME,
- adapter_path, BT_PROPERTIES_INTERFACE);
+ BT_BLUEZ_HCI_PATH, BT_PROPERTIES_INTERFACE);
return adapter_proxy;
}
GValue powered_v = { 0 };
GError *err = NULL;
- BT_DBG("+");
-
proxy = _bt_get_adapter_proxy(conn);
retv_if(proxy == NULL, FALSE);
powered = (gboolean)g_value_get_boolean(&powered_v);
BT_DBG("powered = %d", powered);
- BT_DBG("-");
return powered;
}
#define BT_EVENT_FREEDESKTOP "org.freedesktop.DBus"
#define BT_FREEDESKTOP_PATH "/org/freedesktop/DBus"
-#define BT_EVENT_MANAGER "org.bluez.Manager"
#define BT_MANAGER_PATH "/"
#define BT_MANAGER_INTERFACE "org.freedesktop.DBus.ObjectManager"
#define BT_ADAPTER_INTERFACE "org.bluez.Adapter1"
#define BT_DEVICE_INTERFACE "org.bluez.Device1"
#define BT_PROPERTIES_INTERFACE "org.freedesktop.DBus.Properties"
+#define BT_BLUEZ_HCI_PATH "/org/bluez/hci0"
#define BT_BLUEZ_NAME "org.bluez"
#define BT_DBUS_NAME "org.projectx.bt"
{
DBusGProxy *manager_proxy;
DBusGProxy *proxy;
- char *adapter_path = NULL;
-
- g_type_init();
if (system_conn == NULL) {
system_conn = dbus_g_bus_get(DBUS_BUS_SYSTEM, NULL);
manager_proxy = _bt_get_manager_proxy();
retv_if(manager_proxy == NULL, NULL);
- adapter_path = _bt_get_adapter_path();
- retv_if(adapter_path == NULL, NULL);
-
proxy = dbus_g_proxy_new_for_name(system_conn, BT_BLUEZ_NAME,
- adapter_path, BT_ADAPTER_INTERFACE);
-
- g_free(adapter_path);
+ BT_BLUEZ_HCI_PATH, BT_ADAPTER_INTERFACE);
retv_if(proxy == NULL, NULL);
{
DBusGProxy *manager_proxy;
DBusGProxy *proxy;
- char *adapter_path = NULL;
g_type_init();
manager_proxy = _bt_get_manager_proxy();
retv_if(manager_proxy == NULL, NULL);
- adapter_path = _bt_get_adapter_path();
- retv_if(adapter_path == NULL, NULL);
-
proxy = dbus_g_proxy_new_for_name(system_conn, BT_BLUEZ_NAME,
- adapter_path, BT_PROPERTIES_INTERFACE);
-
- g_free(adapter_path);
+ BT_BLUEZ_HCI_PATH, BT_PROPERTIES_INTERFACE);
retv_if(proxy == NULL, NULL);
#define BT_BLUEZ_NAME "org.bluez"
#define BT_BLUEZ_PATH "/org/bluez"
+#define BT_BLUEZ_HCI_PATH "/org/bluez/hci0"
#define BT_BLUEZ_HCI_DEV_PATH "/org/bluez/hci0/dev"
#define BT_AGENT_NAME "org.bluez.frwk_agent"
#define BT_AGENT_PATH "/org/bluez/agent/frwk_agent"