15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 35738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Copyright (C) 2003-2012 Broadcom Corporation 45738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 55738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 65738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * you may not use this file except in compliance with the License. 75738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * You may obtain a copy of the License at: 85738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 95738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * See the License for the specific language governing permissions and 155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * limitations under the License. 165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/ 185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * This file contains the GATT client utility function. 225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/ 245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bt_target.h" 265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if defined(BTA_GATT_INCLUDED) && (BTA_GATT_INCLUDED == TRUE) 285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <string.h> 305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "utl.h" 315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "gki.h" 325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_sys.h" 335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_gatts_int.h" 345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bd.h" 355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectstatic const UINT8 base_uuid[LEN_UUID_128] = {0xFB, 0x34, 0x9B, 0x5F, 0x80, 0x00, 0x00, 0x80, 375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; 385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_gatt_convert_uuid16_to_uuid128 425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description Convert a 16 bits UUID to be an standard 128 bits one. 445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns TRUE if two uuid match; FALSE otherwise. 465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectstatic void bta_gatt_convert_uuid16_to_uuid128(UINT8 uuid_128[LEN_UUID_128], UINT16 uuid_16) 495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p = &uuid_128[LEN_UUID_128 - 4]; 515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy (uuid_128, base_uuid, LEN_UUID_128); 535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM(p, uuid_16); 555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_gatts_alloc_srvc_cb 595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description allocate a service control block. 615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns pointer to the control block, or otherwise NULL when failed. 635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectUINT8 bta_gatts_alloc_srvc_cb(tBTA_GATTS_CB *p_cb, UINT8 rcb_idx) 665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i; 685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i = 0; i < BTA_GATTS_MAX_SRVC_NUM; i ++) 705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!p_cb->srvc_cb[i].in_use) 725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_cb->srvc_cb[i].in_use = TRUE; 745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_cb->srvc_cb[i].rcb_idx = rcb_idx; 755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return i; 765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return BTA_GATTS_INVALID_APP; 795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_gatts_find_app_rcb_by_app_if 845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description find the index of the application control block by app ID. 865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns pointer to the control block if success, otherwise NULL 885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjecttBTA_GATTS_RCB *bta_gatts_find_app_rcb_by_app_if(tBTA_GATTS_IF server_if) 915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i; 935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTS_RCB *p_reg; 945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i = 0, p_reg = bta_gatts_cb.rcb; i < BTA_GATTS_MAX_APP_NUM; i ++, p_reg++) 965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_reg->in_use && p_reg->gatt_if == server_if) 985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return p_reg; 995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return NULL; 1015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 1045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_gatts_find_app_rcb_idx_by_app_if 1065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description find the index of the application control block by app ID. 1085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns index of the control block, or BTA_GATTS_INVALID_APP if failed. 1105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 1125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectUINT8 bta_gatts_find_app_rcb_idx_by_app_if(tBTA_GATTS_CB *p_cb, tBTA_GATTS_IF server_if) 1145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i; 1165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i = 0; i < BTA_GATTS_MAX_APP_NUM; i ++) 1185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_cb->rcb[i].in_use && p_cb->rcb[i].gatt_if == server_if) 1205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return i; 1215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return BTA_GATTS_INVALID_APP; 1235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 1255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_gatts_find_srvc_cb_by_srvc_id 1275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description find the service control block by service ID. 1295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns pointer to the rcb. 1315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 1335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjecttBTA_GATTS_SRVC_CB * bta_gatts_find_srvc_cb_by_srvc_id(tBTA_GATTS_CB *p_cb, UINT16 service_id) 1345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i; 136e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_gatts_find_srvc_cb_by_srvc_id service_id=%d", service_id); 1375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i = 0; i < BTA_GATTS_MAX_SRVC_NUM; i ++) 1385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_cb->srvc_cb[i].in_use && 1405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_cb->srvc_cb[i].service_id == service_id) 1415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 142e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_gatts_find_srvc_cb_by_srvc_id found service cb index =%d", i); 1435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return &p_cb->srvc_cb[i]; 1445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return NULL; 1475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 1495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_gatts_find_srvc_cb_by_attr_id 1515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description find the service control block by attribute ID. 1535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns pointer to the rcb. 1555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 1575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjecttBTA_GATTS_SRVC_CB * bta_gatts_find_srvc_cb_by_attr_id(tBTA_GATTS_CB *p_cb, UINT16 attr_id) 1585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i; 1605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i = 0; i < (BTA_GATTS_MAX_SRVC_NUM); i ++) 1625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (/* middle service */ 1645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project (i < (BTA_GATTS_MAX_SRVC_NUM - 1) && 1655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_cb->srvc_cb[i].in_use && 1665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_cb->srvc_cb[i + 1].in_use && 1675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project attr_id >= p_cb->srvc_cb[i].service_id && 1685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project attr_id < p_cb->srvc_cb[i + 1].service_id) || 1695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* last active service */ 1705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project (i < (BTA_GATTS_MAX_SRVC_NUM - 1) && 1715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_cb->srvc_cb[i].in_use && 1725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project !p_cb->srvc_cb[i + 1].in_use && 1735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project attr_id >= p_cb->srvc_cb[i].service_id) || 1745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* last service incb */ 1755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project (i == (BTA_GATTS_MAX_SRVC_NUM - 1) && 1765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project attr_id >= p_cb->srvc_cb[i].service_id) 1775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ) 1785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return &p_cb->srvc_cb[i]; 1805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return NULL; 1835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 1855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_gatts_uuid_compare 1875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description Compare two UUID to see if they are the same. 1895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns TRUE if two uuid match; FALSE otherwise. 1915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 1935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_gatts_uuid_compare(tBT_UUID tar, tBT_UUID src) 1945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 su[LEN_UUID_128], tu[LEN_UUID_128]; 1965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *ps, *pt; 1975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* any of the UUID is unspecified */ 1995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (src.len == 0 || tar.len == 0) 2005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 2015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return TRUE; 2025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 2035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* If both are 16-bit, we can do a simple compare */ 2055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (src.len == 2 && tar.len == 2) 2065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 2075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return src.uu.uuid16 == tar.uu.uuid16; 2085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 2095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* One or both of the UUIDs is 128-bit */ 2115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (src.len == LEN_UUID_16) 2125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 2135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* convert a 16 bits UUID to 128 bits value */ 2145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_gatt_convert_uuid16_to_uuid128(su, src.uu.uuid16); 2155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ps = su; 2165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 2175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 2185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ps = src.uu.uuid128; 2195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (tar.len == LEN_UUID_16) 2215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 2225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* convert a 16 bits UUID to 128 bits value */ 2235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_gatt_convert_uuid16_to_uuid128(tu, tar.uu.uuid16); 2245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pt = tu; 2255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 2265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 2275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pt = tar.uu.uuid128; 2285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return(memcmp(ps, pt, LEN_UUID_128) == 0); 2305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 2315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 236