summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBruna Moreira <bruna.moreira@openbossa.org>2010-11-11 15:51:57 -0300
committerJohan Hedberg <johan.hedberg@nokia.com>2010-11-11 23:05:59 +0200
commit55354dc434c4e1b478d93fba094f92d03066f652 (patch)
tree48c1344e0ea390b10f0815148ca930802fcab649 /src
parente412b1b304254ac38b959f2bdc9b03c3a99c9380 (diff)
downloadbluez-55354dc434c4e1b478d93fba094f92d03066f652.tar.gz
Refactor adapter_update_found_devices() function
The common code from adapter_update_found_devices() was moved to update_found_devices().
Diffstat (limited to 'src')
-rw-r--r--src/adapter.c51
1 files changed, 32 insertions, 19 deletions
diff --git a/src/adapter.c b/src/adapter.c
index 2f3c6ab24..1f39bccee 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -3109,10 +3109,9 @@ void adapter_emit_device_found(struct btd_adapter *adapter,
g_strfreev(uuids);
}
-void adapter_update_found_devices(struct btd_adapter *adapter, bdaddr_t *bdaddr,
- int8_t rssi, uint32_t class, const char *name,
- const char *alias, gboolean legacy,
- name_status_t name_status, uint8_t *eir_data)
+static struct remote_dev_info *get_found_dev(struct btd_adapter *adapter,
+ const bdaddr_t *bdaddr,
+ gboolean *new_dev)
{
struct remote_dev_info *dev, match;
@@ -3122,30 +3121,44 @@ void adapter_update_found_devices(struct btd_adapter *adapter, bdaddr_t *bdaddr,
dev = adapter_search_found_devices(adapter, &match);
if (dev) {
+ *new_dev = FALSE;
/* Out of range list update */
adapter->oor_devices = g_slist_remove(adapter->oor_devices,
dev);
+ } else {
+ *new_dev = TRUE;
+ dev = g_new0(struct remote_dev_info, 1);
+ bacpy(&dev->bdaddr, bdaddr);
+ adapter->found_devices = g_slist_prepend(adapter->found_devices,
+ dev);
+ }
- if (rssi == dev->rssi)
- return;
+ return dev;
+}
- goto done;
- }
+void adapter_update_found_devices(struct btd_adapter *adapter, bdaddr_t *bdaddr,
+ int8_t rssi, uint32_t class, const char *name,
+ const char *alias, gboolean legacy,
+ name_status_t name_status, uint8_t *eir_data)
+{
+ struct remote_dev_info *dev;
+ gboolean new_dev;
- dev = g_new0(struct remote_dev_info, 1);
+ dev = get_found_dev(adapter, bdaddr, &new_dev);
- bacpy(&dev->bdaddr, bdaddr);
- dev->class = class;
- if (name)
- dev->name = g_strdup(name);
- if (alias)
- dev->alias = g_strdup(alias);
- dev->legacy = legacy;
- dev->name_status = name_status;
+ if (new_dev) {
+ if (name)
+ dev->name = g_strdup(name);
- adapter->found_devices = g_slist_prepend(adapter->found_devices, dev);
+ if (alias)
+ dev->alias = g_strdup(alias);
+
+ dev->class = class;
+ dev->legacy = legacy;
+ dev->name_status = name_status;
+ } else if (dev->rssi == rssi)
+ return;
-done:
dev->rssi = rssi;
adapter->found_devices = g_slist_sort(adapter->found_devices,