diff options
author | Andre Eisenbach <andre@broadcom.com> | 2013-08-05 09:19:16 -0700 |
---|---|---|
committer | Matthew Xie <mattx@google.com> | 2013-08-07 00:09:46 -0700 |
commit | 5a7f857d3f4ac5d1282bc32b8119dcc5b5ea39a7 (patch) | |
tree | 87c377019e24173f78ab5fcc433174e60fa12dcd /stack/sdp | |
parent | 4420e41159663c904fd55fbb7dd4816129467fb5 (diff) | |
download | bluedroid-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.c | 22 |
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)) |