From a9d896b9a0d7c65b7c9f8d23b9b0d579eae19eea Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Mon, 17 Dec 2012 21:10:39 +0200 Subject: [PATCH] core: Create distinct setting update functions Create clear setting update functions for pairable, connectable and discoverable. --- src/adapter.c | 43 +++++++++++++++++++++++++------------------ src/adapter.h | 6 +++--- src/mgmt.c | 20 +++----------------- 3 files changed, 31 insertions(+), 38 deletions(-) diff --git a/src/adapter.c b/src/adapter.c index d9601e1ef..a41eb154d 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -358,9 +358,11 @@ static void adapter_set_pairable_timeout(struct btd_adapter *adapter, adapter); } -void btd_adapter_pairable_changed(struct btd_adapter *adapter, - gboolean pairable) +void adapter_update_pairable(struct btd_adapter *adapter, bool pairable) { + if (adapter->pairable == pairable) + return; + adapter->pairable = pairable; store_adapter_info(adapter); @@ -3042,28 +3044,33 @@ void adapter_update_found_devices(struct btd_adapter *adapter, } } -void adapter_mode_changed(struct btd_adapter *adapter, bool connectable, +void adapter_update_connectable(struct btd_adapter *adapter, bool connectable) +{ + struct DBusConnection *conn = btd_get_dbus_connection(); + + if (adapter->connectable == connectable) + return; + + adapter->connectable = connectable; + g_dbus_emit_property_changed(conn, adapter->path, ADAPTER_INTERFACE, + "Connectable"); + + store_adapter_info(adapter); +} + +void adapter_update_discoverable(struct btd_adapter *adapter, bool discoverable) { struct DBusConnection *conn = btd_get_dbus_connection(); - DBG("connectable %u (old %u) discoverable %u (old %u)", - connectable, adapter->connectable, - discoverable, adapter->discoverable); + if (adapter->discoverable == discoverable) + return; - if (connectable != adapter->connectable) { - adapter->connectable = connectable; - g_dbus_emit_property_changed(conn, adapter->path, - ADAPTER_INTERFACE, - "Connectable"); - } + adapter->discoverable = discoverable; + g_dbus_emit_property_changed(conn, adapter->path, ADAPTER_INTERFACE, + "Discoverable"); - if (discoverable != adapter->discoverable) { - adapter->discoverable = discoverable; - g_dbus_emit_property_changed(conn, adapter->path, - ADAPTER_INTERFACE, - "Discoverable"); - } + store_adapter_info(adapter); } struct agent *adapter_get_agent(struct btd_adapter *adapter) diff --git a/src/adapter.h b/src/adapter.h index a192a719b..b998219e1 100644 --- a/src/adapter.h +++ b/src/adapter.h @@ -107,7 +107,8 @@ void adapter_update_found_devices(struct btd_adapter *adapter, uint8_t bdaddr_type, int8_t rssi, bool confirm_name, bool legacy, uint8_t *data, uint8_t data_len); -void adapter_mode_changed(struct btd_adapter *adapter, bool connectable, +void adapter_update_connectable(struct btd_adapter *adapter, bool connectable); +void adapter_update_discoverable(struct btd_adapter *adapter, bool discoverable); int adapter_set_name(struct btd_adapter *adapter, const char *name); void adapter_name_changed(struct btd_adapter *adapter, const char *name); @@ -115,8 +116,7 @@ void adapter_service_insert(struct btd_adapter *adapter, void *rec); void adapter_service_remove(struct btd_adapter *adapter, void *rec); void btd_adapter_class_changed(struct btd_adapter *adapter, uint8_t *new_class); -void btd_adapter_pairable_changed(struct btd_adapter *adapter, - gboolean pairable); +void adapter_update_pairable(struct btd_adapter *adapter, bool pairable); struct agent *adapter_get_agent(struct btd_adapter *adapter); void adapter_add_connection(struct btd_adapter *adapter, diff --git a/src/mgmt.c b/src/mgmt.c index f5b368ddc..f34c555d3 100644 --- a/src/mgmt.c +++ b/src/mgmt.c @@ -328,17 +328,6 @@ static inline int mgmt_low_energy(uint32_t settings) return (settings & MGMT_SETTING_LE) != 0; } -static int mode_changed(uint32_t s1, uint32_t s2) -{ - if (mgmt_connectable(s1) != mgmt_connectable(s2)) - return 1; - - if (mgmt_discoverable(s1) != mgmt_discoverable(s2)) - return 1; - - return 0; -} - static void update_settings(struct btd_adapter *adapter, uint32_t settings) { struct controller_info *info; @@ -350,12 +339,9 @@ static void update_settings(struct btd_adapter *adapter, uint32_t settings) info = &controllers[index]; - if (mode_changed(settings, info->current_settings)) - adapter_mode_changed(adapter, mgmt_connectable(settings), - mgmt_discoverable(settings)); - - if (mgmt_pairable(settings) != mgmt_pairable(info->current_settings)) - btd_adapter_pairable_changed(adapter, mgmt_pairable(settings)); + adapter_update_connectable(adapter, mgmt_connectable(settings)); + adapter_update_discoverable(adapter, mgmt_discoverable(settings)); + adapter_update_pairable(adapter, mgmt_pairable(settings)); if (mgmt_ssp(info->supported_settings) && !mgmt_ssp(settings)) mgmt_set_ssp(index, TRUE); -- 2.47.3