summaryrefslogtreecommitdiff
path: root/stack/sdp
diff options
context:
space:
mode:
authorAndre Eisenbach <andre@broadcom.com>2013-08-05 09:19:16 -0700
committerMatthew Xie <mattx@google.com>2013-08-07 00:09:46 -0700
commit5a7f857d3f4ac5d1282bc32b8119dcc5b5ea39a7 (patch)
tree87c377019e24173f78ab5fcc433174e60fa12dcd /stack/sdp
parent4420e41159663c904fd55fbb7dd4816129467fb5 (diff)
downloadbluedroid-5a7f857d3f4ac5d1282bc32b8119dcc5b5ea39a7.tar.gz
Support for 128-bit UUID service discovery
Support the discovery of custom 128-bit UUIDs. This is mainly needed for GATT service discovery to find custom services. Bug: 10116729 Change-Id: I8669111dfb8806f5632b7ea8ad02f0e38dded66f
Diffstat (limited to 'stack/sdp')
-rw-r--r--stack/sdp/sdp_api.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/stack/sdp/sdp_api.c b/stack/sdp/sdp_api.c
index 4899aa8..9ad959a 100644
--- a/stack/sdp/sdp_api.c
+++ b/stack/sdp/sdp_api.c
@@ -351,12 +351,22 @@ BOOLEAN SDP_FindServiceUUIDInRec(tSDP_DISC_REC *p_rec, tBT_UUID * p_uuid)
{
if (SDP_DISC_ATTR_TYPE(p_sattr->attr_len_type) == UUID_DESC_TYPE)
{
- /* only support 16 bits UUID for now */
- if (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == 2)
+ if (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == LEN_UUID_16)
{
- p_uuid->len = 2;
+ p_uuid->len = LEN_UUID_16;
p_uuid->uu.uuid16 = p_sattr->attr_value.v.u16;
}
+ else if (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == LEN_UUID_128)
+ {
+ p_uuid->len = LEN_UUID_128;
+ memcpy(p_uuid->uu.uuid128, p_sattr->attr_value.v.array, LEN_UUID_128);
+ }
+ else if (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == LEN_UUID_32)
+ {
+ p_uuid->len = LEN_UUID_32;
+ p_uuid->uu.uuid32 = p_sattr->attr_value.v.u32;
+ }
+
return(TRUE);
}
@@ -548,12 +558,6 @@ tSDP_DISC_REC *SDP_FindServiceInDb (tSDP_DISCOVERY_DB *p_db, UINT16 service_uuid
else if (p_attr->attr_id == ATTR_ID_SERVICE_ID)
{
if ((SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) == UUID_DESC_TYPE)
- && (SDP_DISC_ATTR_LEN(p_attr->attr_len_type) == 2))
- {
- printf("SDP_FindServiceInDb - p_attr value = 0x%x serviceuuid= 0x%x \r\n", p_attr->attr_value.v.u16, service_uuid);
- }
-
- if ((SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) == UUID_DESC_TYPE)
&& (SDP_DISC_ATTR_LEN(p_attr->attr_len_type) == 2)
/* find a specific UUID or anyone */
&& ((p_attr->attr_value.v.u16 == service_uuid) || service_uuid == 0))