From 1dc46d56c2c709abde9163845b27a17093739571 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Fri, 4 Jan 2013 13:48:01 -0800 Subject: [PATCH] core: Move code around to place it logical together --- src/adapter.c | 186 +++++++++++++++++++++++++------------------------- 1 file changed, 93 insertions(+), 93 deletions(-) diff --git a/src/adapter.c b/src/adapter.c index 58ebaf610..a91a302c2 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -766,99 +766,6 @@ struct btd_device *adapter_find_device(struct btd_adapter *adapter, return device; } -static uint8_t get_uuid_mask(uuid_t *uuid) -{ - if (uuid->type != SDP_UUID16) - return 0; - - switch (uuid->value.uuid16) { - case DIALUP_NET_SVCLASS_ID: - case CIP_SVCLASS_ID: - return 0x42; /* Telephony & Networking */ - case IRMC_SYNC_SVCLASS_ID: - case OBEX_OBJPUSH_SVCLASS_ID: - case OBEX_FILETRANS_SVCLASS_ID: - case IRMC_SYNC_CMD_SVCLASS_ID: - case PBAP_PSE_SVCLASS_ID: - return 0x10; /* Object Transfer */ - case HEADSET_SVCLASS_ID: - case HANDSFREE_SVCLASS_ID: - return 0x20; /* Audio */ - case CORDLESS_TELEPHONY_SVCLASS_ID: - case INTERCOM_SVCLASS_ID: - case FAX_SVCLASS_ID: - case SAP_SVCLASS_ID: - /* - * Setting the telephony bit for the handsfree audio gateway - * role is not required by the HFP specification, but the - * Nokia 616 carkit is just plain broken! It will refuse - * pairing without this bit set. - */ - case HANDSFREE_AGW_SVCLASS_ID: - return 0x40; /* Telephony */ - case AUDIO_SOURCE_SVCLASS_ID: - case VIDEO_SOURCE_SVCLASS_ID: - return 0x08; /* Capturing */ - case AUDIO_SINK_SVCLASS_ID: - case VIDEO_SINK_SVCLASS_ID: - return 0x04; /* Rendering */ - case PANU_SVCLASS_ID: - case NAP_SVCLASS_ID: - case GN_SVCLASS_ID: - return 0x02; /* Networking */ - default: - return 0; - } -} - -static int uuid_cmp(const void *a, const void *b) -{ - const sdp_record_t *rec = a; - const uuid_t *uuid = b; - - return sdp_uuid_cmp(&rec->svclass, uuid); -} - -void adapter_service_insert(struct btd_adapter *adapter, void *r) -{ - sdp_record_t *rec = r; - sdp_list_t *browse_list = NULL; - uuid_t browse_uuid; - gboolean new_uuid; - - DBG("%s", adapter->path); - - /* skip record without a browse group */ - if (sdp_get_browse_groups(rec, &browse_list) < 0) - return; - - sdp_uuid16_create(&browse_uuid, PUBLIC_BROWSE_GROUP); - - /* skip record without public browse group */ - if (!sdp_list_find(browse_list, &browse_uuid, sdp_uuid_cmp)) - goto done; - - if (sdp_list_find(adapter->services, &rec->svclass, uuid_cmp) == NULL) - new_uuid = TRUE; - else - new_uuid = FALSE; - - adapter->services = sdp_list_insert_sorted(adapter->services, rec, - record_sort); - - if (new_uuid) { - uint8_t svc_hint = get_uuid_mask(&rec->svclass); - mgmt_add_uuid(adapter->dev_id, &rec->svclass, svc_hint); - } - - if (adapter->initialized) - g_dbus_emit_property_changed(btd_get_dbus_connection(), - adapter->path, ADAPTER_INTERFACE, "UUIDs"); - -done: - sdp_list_free(browse_list, free); -} - static void remove_uuid_complete(uint8_t status, uint16_t length, const void *param, void *user_data) { @@ -978,6 +885,99 @@ static int clear_uuids(struct btd_adapter *adapter) return -EIO; } +static uint8_t get_uuid_mask(uuid_t *uuid) +{ + if (uuid->type != SDP_UUID16) + return 0; + + switch (uuid->value.uuid16) { + case DIALUP_NET_SVCLASS_ID: + case CIP_SVCLASS_ID: + return 0x42; /* Telephony & Networking */ + case IRMC_SYNC_SVCLASS_ID: + case OBEX_OBJPUSH_SVCLASS_ID: + case OBEX_FILETRANS_SVCLASS_ID: + case IRMC_SYNC_CMD_SVCLASS_ID: + case PBAP_PSE_SVCLASS_ID: + return 0x10; /* Object Transfer */ + case HEADSET_SVCLASS_ID: + case HANDSFREE_SVCLASS_ID: + return 0x20; /* Audio */ + case CORDLESS_TELEPHONY_SVCLASS_ID: + case INTERCOM_SVCLASS_ID: + case FAX_SVCLASS_ID: + case SAP_SVCLASS_ID: + /* + * Setting the telephony bit for the handsfree audio gateway + * role is not required by the HFP specification, but the + * Nokia 616 carkit is just plain broken! It will refuse + * pairing without this bit set. + */ + case HANDSFREE_AGW_SVCLASS_ID: + return 0x40; /* Telephony */ + case AUDIO_SOURCE_SVCLASS_ID: + case VIDEO_SOURCE_SVCLASS_ID: + return 0x08; /* Capturing */ + case AUDIO_SINK_SVCLASS_ID: + case VIDEO_SINK_SVCLASS_ID: + return 0x04; /* Rendering */ + case PANU_SVCLASS_ID: + case NAP_SVCLASS_ID: + case GN_SVCLASS_ID: + return 0x02; /* Networking */ + default: + return 0; + } +} + +static int uuid_cmp(const void *a, const void *b) +{ + const sdp_record_t *rec = a; + const uuid_t *uuid = b; + + return sdp_uuid_cmp(&rec->svclass, uuid); +} + +void adapter_service_insert(struct btd_adapter *adapter, void *r) +{ + sdp_record_t *rec = r; + sdp_list_t *browse_list = NULL; + uuid_t browse_uuid; + gboolean new_uuid; + + DBG("%s", adapter->path); + + /* skip record without a browse group */ + if (sdp_get_browse_groups(rec, &browse_list) < 0) + return; + + sdp_uuid16_create(&browse_uuid, PUBLIC_BROWSE_GROUP); + + /* skip record without public browse group */ + if (!sdp_list_find(browse_list, &browse_uuid, sdp_uuid_cmp)) + goto done; + + if (sdp_list_find(adapter->services, &rec->svclass, uuid_cmp) == NULL) + new_uuid = TRUE; + else + new_uuid = FALSE; + + adapter->services = sdp_list_insert_sorted(adapter->services, rec, + record_sort); + + if (new_uuid) { + uint8_t svc_hint = get_uuid_mask(&rec->svclass); + mgmt_add_uuid(adapter->dev_id, &rec->svclass, svc_hint); + } + + if (adapter->initialized) + g_dbus_emit_property_changed(btd_get_dbus_connection(), + adapter->path, ADAPTER_INTERFACE, "UUIDs"); + +done: + sdp_list_free(browse_list, free); +} + void adapter_service_remove(struct btd_adapter *adapter, void *r) { sdp_record_t *rec = r; -- 2.47.3