15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 35738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Copyright (C) 2010-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 is the implementation of the API for GATT module of BTA. 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 "gki.h" 315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_sys.h" 325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_gatt_api.h" 335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_gattc_int.h" 345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/***************************************************************************** 365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Constants 375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*****************************************************************************/ 385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 39e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbachstatic const tBTA_SYS_REG bta_gattc_reg = 405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_gattc_hdl_event, 42e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach BTA_GATTC_Disable 435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}; 445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 45e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach 465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 48e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach** Function BTA_GATTC_Disable 49ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 50e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach** Description This function is called to disable GATTC module 51ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 52e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach** Parameters None. 53ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 54ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Returns None 55ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 56ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta*******************************************************************************/ 57e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbachvoid BTA_GATTC_Disable(void) 58ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta{ 59e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach BT_HDR *p_buf; 60e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach 61e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach if (bta_sys_is_register(BTA_ID_GATTC) == FALSE) 62e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach { 63e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach APPL_TRACE_WARNING0("GATTC Module not enabled/already disabled"); 64e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach return; 65e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach } 66e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) 67e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach { 68e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach p_buf->event = BTA_GATTC_API_DISABLE_EVT; 69e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach bta_sys_sendmsg(p_buf); 70e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach } 71e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach bta_sys_deregister(BTA_ID_GATTC); 72e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach 73ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta} 74ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 75ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************* 76ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTC_AppRegister 785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called to register application callbacks 805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** with BTA GATTC module. 815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters p_app_uuid - applicaiton UUID 835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_client_cb - pointer to the application callback function. 845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None 865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_GATTC_AppRegister(tBT_UUID *p_app_uuid, tBTA_GATTC_CBACK *p_client_cb) 895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_API_REG *p_buf; 915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 92e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach if (bta_sys_is_register(BTA_ID_GATTC) == FALSE) 93e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach { 94e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach GKI_sched_lock(); 95e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach bta_sys_register(BTA_ID_GATTC, &bta_gattc_reg); 96e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach GKI_sched_unlock(); 97e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach } 985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (tBTA_GATTC_API_REG *) GKI_getbuf(sizeof(tBTA_GATTC_API_REG))) != NULL) 1005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.event = BTA_GATTC_API_REG_EVT; 1025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_app_uuid != NULL) 1035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(&p_buf->app_uuid, p_app_uuid, sizeof(tBT_UUID)); 1045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->p_cback = p_client_cb; 1055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 1075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return; 1095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 1125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTC_AppDeregister 1145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called to deregister an application 1165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** from BTA GATTC module. 1175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters client_if - client interface identifier. 1195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None 1215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 1235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_GATTC_AppDeregister(tBTA_GATTC_IF client_if) 1245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_API_DEREG *p_buf; 1265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (tBTA_GATTC_API_DEREG *) GKI_getbuf(sizeof(tBTA_GATTC_API_DEREG))) != NULL) 1285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.event = BTA_GATTC_API_DEREG_EVT; 1305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->client_if = client_if; 1315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 1325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return; 1345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 1375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTC_Open 1395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description Open a direct connection or add a background auto connection 1415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** bd address 1425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters client_if: server interface. 1445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** remote_bda: remote device BD address. 1455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** is_direct: direct connection or background auto connection 1465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 1485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 1505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_GATTC_Open(tBTA_GATTC_IF client_if, BD_ADDR remote_bda, BOOLEAN is_direct) 1515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_API_OPEN *p_buf; 1535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (tBTA_GATTC_API_OPEN *) GKI_getbuf(sizeof(tBTA_GATTC_API_OPEN))) != NULL) 1555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.event = BTA_GATTC_API_OPEN_EVT; 1575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->client_if = client_if; 1595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->is_direct = is_direct; 1605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(p_buf->remote_bda, remote_bda, BD_ADDR_LEN); 1615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 1645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return; 1665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 1695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTC_CancelOpen 1715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description Cancel a direct open connection or remove a background auto connection 1735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** bd address 1745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters client_if: server interface. 1765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** remote_bda: remote device BD address. 1775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** is_direct: direct connection or background auto connection 1785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 1805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 1825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_GATTC_CancelOpen(tBTA_GATTC_IF client_if, BD_ADDR remote_bda, BOOLEAN is_direct) 1835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_API_CANCEL_OPEN *p_buf; 1855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (tBTA_GATTC_API_CANCEL_OPEN *) GKI_getbuf(sizeof(tBTA_GATTC_API_CANCEL_OPEN))) != NULL) 1875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.event = BTA_GATTC_API_CANCEL_OPEN_EVT; 1895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->client_if = client_if; 1915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->is_direct = is_direct; 1925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(p_buf->remote_bda, remote_bda, BD_ADDR_LEN); 1935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 1955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return; 1975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 2005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTC_Close 2025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description Close a connection to a GATT server. 2045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters conn_id: connectino ID to be closed. 2065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 2085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 2105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_GATTC_Close(UINT16 conn_id) 2115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p_buf; 2135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) 2155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 2165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->event = BTA_GATTC_API_CLOSE_EVT; 2175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->layer_specific = conn_id; 2195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 2215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 2225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return; 2235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 2255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 2265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTC_ServiceSearchRequest 2285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called to request a GATT service discovery 2305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** on a GATT server. This function report service search result 2315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** by a callback event, and followed by a service search complete 2325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** event. 2335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters conn_id: connection ID. 2355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_srvc_uuid: a UUID of the service application is interested in. 2365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** If Null, discover for all services. 2375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None 2395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 2415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_GATTC_ServiceSearchRequest (UINT16 conn_id, tBT_UUID *p_srvc_uuid) 2425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_API_SEARCH *p_buf; 2445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 len = sizeof(tBTA_GATTC_API_SEARCH) + sizeof(tBT_UUID); 2455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (tBTA_GATTC_API_SEARCH *) GKI_getbuf(len)) != NULL) 2475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 2485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memset(p_buf, 0, len); 2495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.event = BTA_GATTC_API_SEARCH_EVT; 2515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.layer_specific = conn_id; 2525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_srvc_uuid) 2545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 2556975b4d711142b885af479721cada448952c6b41Andre Eisenbach p_buf->p_srvc_uuid = (tBT_UUID *)(p_buf + 1); 2566975b4d711142b885af479721cada448952c6b41Andre Eisenbach memcpy(p_buf->p_srvc_uuid, p_srvc_uuid, sizeof(tBT_UUID)); 2575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 2586975b4d711142b885af479721cada448952c6b41Andre Eisenbach else 2596975b4d711142b885af479721cada448952c6b41Andre Eisenbach p_buf->p_srvc_uuid = NULL; 2606975b4d711142b885af479721cada448952c6b41Andre Eisenbach 2615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 2625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 2635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return; 2645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 2655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 2685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTC_GetFirstChar 2705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 271ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Description This function is called to find the first characteristic of the 2725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** service on the given server. 2735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters conn_id: connection ID which identify the server. 2755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_srvc_id: the service ID of which the characteristic is belonged to. 2765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_char_uuid_cond: Characteristic UUID, if NULL find the first available 2775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** characteristic. 2785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_char_result: output parameter which will store the GATT 2795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** characteristic ID. 2805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_property: output parameter to carry the characteristic property. 2815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns returns status. 2835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 2855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjecttBTA_GATT_STATUS BTA_GATTC_GetFirstChar (UINT16 conn_id, tBTA_GATT_SRVC_ID *p_srvc_id, 2865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBT_UUID *p_char_uuid_cond, 2875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_CHAR_ID *p_char_result, 2885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATT_CHAR_PROP *p_property) 2895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATT_STATUS status; 2915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!p_srvc_id || !p_char_result) 2935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return BTA_GATT_ILLEGAL_PARAMETER; 2945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((status = bta_gattc_query_cache(conn_id, BTA_GATTC_ATTR_TYPE_CHAR, p_srvc_id, NULL, 2966975b4d711142b885af479721cada448952c6b41Andre Eisenbach p_char_uuid_cond, &p_char_result->char_id, (void *)p_property)) 2975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project == BTA_GATT_OK) 2985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 2995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(&p_char_result->srvc_id, p_srvc_id, sizeof(tBTA_GATT_SRVC_ID)); 3005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 3015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return status; 3035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 3055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 3065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTC_GetNextChar 3085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 309ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Description This function is called to find the next characteristic of the 3105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** service on the given server. 3115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters conn_id: connection ID which identify the server. 3135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_start_char_id: start the characteristic search from the next record 3145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** after the one identified by char_id. 3155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_char_uuid_cond: Characteristic UUID, if NULL find the first available 3165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** characteristic. 3175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_char_result: output parameter which will store the GATT 3185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** characteristic ID. 3195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_property: output parameter to carry the characteristic property. 3205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns returns status. 3225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 3245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjecttBTA_GATT_STATUS BTA_GATTC_GetNextChar (UINT16 conn_id, 3255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_CHAR_ID *p_start_char_id, 3265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBT_UUID *p_char_uuid_cond, 3275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_CHAR_ID *p_char_result, 3285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATT_CHAR_PROP *p_property) 3295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 3305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATT_STATUS status; 3315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!p_start_char_id || !p_char_result) 3335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return BTA_GATT_ILLEGAL_PARAMETER; 3345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((status = bta_gattc_query_cache(conn_id, BTA_GATTC_ATTR_TYPE_CHAR, 3365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project &p_start_char_id->srvc_id, 3375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project &p_start_char_id->char_id, 3385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_char_uuid_cond, 3395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project &p_char_result->char_id, 3406975b4d711142b885af479721cada448952c6b41Andre Eisenbach (void *) p_property)) 3415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project == BTA_GATT_OK) 3425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 3435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(&p_char_result->srvc_id, &p_start_char_id->srvc_id, sizeof(tBTA_GATT_SRVC_ID)); 3445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 3455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return status; 3475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 3485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 3505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTC_GetFirstCharDescr 3525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 353ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Description This function is called to find the first characteristic descriptor of the 354ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** characteristic on the given server. 3555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters conn_id: connection ID which identify the server. 3575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_char_id: the characteristic ID of which the descriptor is belonged to. 3585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_descr_uuid_cond: Characteristic Descr UUID, if NULL find the first available 3595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** characteristic. 3605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_descr_result: output parameter which will store the GATT 3615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** characteristic descriptor ID. 3625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns returns status. 3645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 3665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjecttBTA_GATT_STATUS BTA_GATTC_GetFirstCharDescr (UINT16 conn_id, tBTA_GATTC_CHAR_ID *p_char_id, 3675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBT_UUID *p_descr_uuid_cond, 3685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_CHAR_DESCR_ID *p_descr_result) 3695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 3705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATT_STATUS status; 3715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!p_char_id || !p_descr_result) 3735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return BTA_GATT_ILLEGAL_PARAMETER; 3745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memset(p_descr_result, 0, sizeof(tBTA_GATTC_CHAR_DESCR_ID)); 3765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((status = bta_gattc_query_cache(conn_id, 3785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_GATTC_ATTR_TYPE_CHAR_DESCR, 3795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project &p_char_id->srvc_id, 3805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project &p_char_id->char_id, 3815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_descr_uuid_cond, 3825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project &p_descr_result->char_id.char_id, 3835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project NULL)) 3845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project == BTA_GATT_OK) 3855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 3866975b4d711142b885af479721cada448952c6b41Andre Eisenbach memcpy(&p_descr_result->descr_id, &p_descr_result->char_id.char_id, sizeof(tBTA_GATT_ID)); 3875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(&p_descr_result->char_id, p_char_id, sizeof(tBTA_GATTC_CHAR_ID)); 3885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 3895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return status; 3915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 3935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 3945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTC_GetNextCharDescr 3965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 397ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Description This function is called to find the next characteristic descriptor 398ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** of the characterisctic. 3995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters conn_id: connection ID which identify the server. 4015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_start_descr_id: start the characteristic search from the next record 4025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** after the one identified by p_start_descr_id. 4035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_descr_uuid_cond: Characteristic descriptor UUID, if NULL find 4045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** the first available characteristic descriptor. 4055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_descr_result: output parameter which will store the GATT 4065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** characteristic descriptor ID. 4075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns returns status. 4095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 4115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjecttBTA_GATT_STATUS BTA_GATTC_GetNextCharDescr (UINT16 conn_id, 4125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_CHAR_DESCR_ID *p_start_descr_id, 4135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBT_UUID *p_descr_uuid_cond, 4145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_CHAR_DESCR_ID *p_descr_result) 4155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 4165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATT_STATUS status; 4175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!p_start_descr_id || !p_descr_result) 4195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return BTA_GATT_ILLEGAL_PARAMETER; 4205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memset(p_descr_result, 0, sizeof(tBTA_GATTC_CHAR_DESCR_ID)); 4225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((status = bta_gattc_query_cache(conn_id, BTA_GATTC_ATTR_TYPE_CHAR_DESCR, 4245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project &p_start_descr_id->char_id.srvc_id, 4255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project &p_start_descr_id->char_id.char_id, 4265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_descr_uuid_cond, 4275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project &p_descr_result->char_id.char_id, 4286975b4d711142b885af479721cada448952c6b41Andre Eisenbach (void *)&p_start_descr_id->descr_id)) 4295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project == BTA_GATT_OK) 4305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 4316975b4d711142b885af479721cada448952c6b41Andre Eisenbach memcpy(&p_descr_result->descr_id, &p_descr_result->char_id.char_id, sizeof(tBTA_GATT_ID)); 4325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(&p_descr_result->char_id, p_start_descr_id, sizeof(tBTA_GATTC_CHAR_ID)); 4335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 4345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return status; 4365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 4375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 4405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTC_GetFirstIncludedService 4425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called to find the first included service of the 4445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** service on the given server. 4455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters conn_id: connection ID which identify the server. 4475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_srvc_id: the service ID of which the characteristic is belonged to. 4485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_uuid_cond: Characteristic UUID, if NULL find the first available 4495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** characteristic. 4505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_result: output parameter which will store the GATT ID 4515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** of the included service found. 4525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns returns status. 4545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 4565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjecttBTA_GATT_STATUS BTA_GATTC_GetFirstIncludedService(UINT16 conn_id, tBTA_GATT_SRVC_ID *p_srvc_id, 4575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBT_UUID *p_uuid_cond, tBTA_GATTC_INCL_SVC_ID *p_result) 4585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 4595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATT_STATUS status; 4605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!p_srvc_id || !p_result) 4625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return BTA_GATT_ILLEGAL_PARAMETER; 4635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((status = bta_gattc_query_cache(conn_id, 4655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_GATTC_ATTR_TYPE_INCL_SRVC, 4665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_srvc_id, 4675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project NULL, 4685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_uuid_cond, 4695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project &p_result->incl_svc_id.id, 4706975b4d711142b885af479721cada448952c6b41Andre Eisenbach (void *)&p_result->incl_svc_id.is_primary)) 4715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project == BTA_GATT_OK) 4725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 4735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(&p_result->srvc_id, p_srvc_id, sizeof(tBTA_GATT_SRVC_ID)); 4745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 4755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return status; 4775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 4785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 4795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTC_GetNextIncludedService 4815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called to find the next included service of the 4835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** service on the given server. 4845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters conn_id: connection ID which identify the server. 4865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_start_id: start the search from the next record 4875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** after the one identified by p_start_id. 4885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_uuid_cond: Included service UUID, if NULL find the first available 4895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** included service. 4905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_result: output parameter which will store the GATT ID 4915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** of the included service found. 4925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns returns status. 4945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 4965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjecttBTA_GATT_STATUS BTA_GATTC_GetNextIncludedService(UINT16 conn_id, 4975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_INCL_SVC_ID *p_start_id, 4985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBT_UUID *p_uuid_cond, 4995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_INCL_SVC_ID *p_result) 5005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 5015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATT_STATUS status; 5025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!p_start_id || !p_result) 5045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return BTA_GATT_ILLEGAL_PARAMETER; 5055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((status = bta_gattc_query_cache(conn_id, 5075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_GATTC_ATTR_TYPE_INCL_SRVC, 5085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project &p_start_id->srvc_id, 5095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project &p_start_id->incl_svc_id.id, 5105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_uuid_cond, 5115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project &p_result->incl_svc_id.id, 5126975b4d711142b885af479721cada448952c6b41Andre Eisenbach (void *)&p_result->incl_svc_id.is_primary)) 5135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project == BTA_GATT_OK) 5145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 5155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(&p_result->srvc_id, &p_start_id->srvc_id, sizeof(tBTA_GATT_SRVC_ID)); 5165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 5175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return status; 5195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 5205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 5225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 5235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTC_ReadCharacteristic 5245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 5255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called to read a service's characteristics of 5265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** the given characteritisc ID. 5275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 5285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters conn_id - connectino ID. 5295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_char_id - characteritic ID to read. 5305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 5315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None 5325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 5335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 5345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_GATTC_ReadCharacteristic(UINT16 conn_id, tBTA_GATTC_CHAR_ID *p_char_id, 5355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATT_AUTH_REQ auth_req) 5365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 5375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_API_READ *p_buf; 5385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (tBTA_GATTC_API_READ *) GKI_getbuf(sizeof(tBTA_GATTC_API_READ))) != NULL) 5405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 5415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memset(p_buf, 0, sizeof(tBTA_GATTC_API_READ)); 5425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.event = BTA_GATTC_API_READ_EVT; 5445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.layer_specific = conn_id; 5455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->auth_req = auth_req; 5465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(&p_buf->srvc_id, &p_char_id->srvc_id, sizeof(tBTA_GATT_SRVC_ID)); 5485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(&p_buf->char_id, &p_char_id->char_id, sizeof(tBTA_GATT_ID)); 5496975b4d711142b885af479721cada448952c6b41Andre Eisenbach p_buf->p_descr_type = NULL; 5505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 5525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 5535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return; 5545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 5555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 5575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 5585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTC_ReadCharDescr 5595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 5605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called to read a characteristics descriptor. 5615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 5625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters conn_id - connection ID. 5635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_char_descr_id - characteritic descriptor ID to read. 5645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 5655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None 5665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 5675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 5685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_GATTC_ReadCharDescr (UINT16 conn_id, 5695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_CHAR_DESCR_ID *p_descr_id, 5705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATT_AUTH_REQ auth_req) 5715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 5725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_API_READ *p_buf; 5736975b4d711142b885af479721cada448952c6b41Andre Eisenbach UINT16 len = (UINT16)(sizeof(tBTA_GATT_ID) + sizeof(tBTA_GATTC_API_READ)); 5745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5756975b4d711142b885af479721cada448952c6b41Andre Eisenbach if ((p_buf = (tBTA_GATTC_API_READ *) GKI_getbuf(len)) != NULL) 5765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 5775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memset(p_buf, 0, sizeof(tBTA_GATTC_API_READ)); 5785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.event = BTA_GATTC_API_READ_EVT; 5805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.layer_specific = conn_id; 5815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->auth_req = auth_req; 5825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(&p_buf->srvc_id, &p_descr_id->char_id.srvc_id, sizeof(tBTA_GATT_SRVC_ID)); 5845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(&p_buf->char_id, &p_descr_id->char_id.char_id, sizeof(tBTA_GATT_ID)); 5856975b4d711142b885af479721cada448952c6b41Andre Eisenbach p_buf->p_descr_type = (tBTA_GATT_ID *)(p_buf + 1); 5866975b4d711142b885af479721cada448952c6b41Andre Eisenbach 5876975b4d711142b885af479721cada448952c6b41Andre Eisenbach memcpy(p_buf->p_descr_type, &p_descr_id->descr_id, sizeof(tBTA_GATT_ID)); 5885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 5905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 5915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return; 5925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 5945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 5955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 5965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTC_ReadMultiple 5975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 5985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called to read multiple characteristic or 5995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** characteristic descriptors. 6005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 6015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters conn_id - connectino ID. 6025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_read_multi - pointer to the read multiple parameter. 6035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 6045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None 6055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 6065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 6075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_GATTC_ReadMultiple(UINT16 conn_id, tBTA_GATTC_MULTI *p_read_multi, 6085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATT_AUTH_REQ auth_req) 6095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 6105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_API_READ_MULTI *p_buf; 6115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_ATTR_ID *p_value; 6125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 len = (UINT16)(sizeof(tBTA_GATTC_API_READ_MULTI) + 6135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_read_multi->num_attr * sizeof(tBTA_GATTC_ATTR_ID)); 6145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i; 6155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (tBTA_GATTC_API_READ_MULTI *) GKI_getbuf(len)) != NULL) 6175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 6185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memset(p_buf, 0, len); 6195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.event = BTA_GATTC_API_READ_MULTI_EVT; 6215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.layer_specific = conn_id; 6225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->auth_req = auth_req; 6235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->num_attr = p_read_multi->num_attr; 6255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_buf->num_attr > 0) 6275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 6285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->p_id_list = p_value = (tBTA_GATTC_ATTR_ID *)(p_buf + 1); 6295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i = 0; i < p_buf->num_attr; i ++, p_value ++) 6315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 6325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(p_value, &p_read_multi->id_list[i], sizeof(tBTA_GATTC_ATTR_ID)); 6335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 6345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 6355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 6365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 6375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return; 6385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 6395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 6425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 6435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTC_WriteCharValue 6445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 6455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called to write characteristic value. 6465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 6475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters conn_id - connection ID. 6485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_char_id - characteristic ID to write. 6495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** write_type - type of write. 6505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** len: length of the data to be written. 6515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_value - the value to be written. 6525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 6535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None 6545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 6555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 6565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_GATTC_WriteCharValue ( UINT16 conn_id, 6575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_CHAR_ID *p_char_id, 6585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_WRITE_TYPE write_type, 6595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 len, 6605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_value, 6615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATT_AUTH_REQ auth_req) 6625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 6635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_API_WRITE *p_buf; 6645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (tBTA_GATTC_API_WRITE *) GKI_getbuf((UINT16)(sizeof(tBTA_GATTC_API_WRITE) + len))) != NULL) 6665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 6675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memset(p_buf, 0, sizeof(tBTA_GATTC_API_WRITE) + len); 6685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.event = BTA_GATTC_API_WRITE_EVT; 6705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.layer_specific = conn_id; 6715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->auth_req = auth_req; 6725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(&p_buf->srvc_id, &p_char_id->srvc_id, sizeof(tBTA_GATT_SRVC_ID)); 6745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(&p_buf->char_id, &p_char_id->char_id, sizeof(tBTA_GATT_ID)); 6755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->write_type = write_type; 6775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->len = len; 6785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_value && len > 0) 6805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 6815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->p_value = (UINT8 *)(p_buf + 1); 6825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(p_buf->p_value, p_value, len); 6835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 6845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 6865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 6875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return; 6885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 6895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 6905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 6915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTC_WriteCharDescr 6925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 6935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called to write characteristic descriptor value. 6945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 6955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters conn_id - connection ID 6965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_char_descr_id - characteristic descriptor ID to write. 6975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** write_type - write type. 6985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_value - the value to be written. 6995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 7005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None 7015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 7025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 7035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_GATTC_WriteCharDescr (UINT16 conn_id, 7045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_CHAR_DESCR_ID *p_char_descr_id, 7055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_WRITE_TYPE write_type, 7065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATT_UNFMT *p_data, 7075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATT_AUTH_REQ auth_req) 7085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 7095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_API_WRITE *p_buf; 7106975b4d711142b885af479721cada448952c6b41Andre Eisenbach UINT16 len = sizeof(tBTA_GATTC_API_WRITE) + sizeof(tBTA_GATT_ID); 711ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 712ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if (p_data != NULL) 713ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta len += p_data->len; 7145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (tBTA_GATTC_API_WRITE *) GKI_getbuf(len)) != NULL) 7165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 7175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memset(p_buf, 0, len); 7185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.event = BTA_GATTC_API_WRITE_EVT; 7205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.layer_specific = conn_id; 7215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->auth_req = auth_req; 7225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(&p_buf->srvc_id, &p_char_descr_id->char_id.srvc_id, sizeof(tBTA_GATT_SRVC_ID)); 7245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(&p_buf->char_id, &p_char_descr_id->char_id.char_id, sizeof(tBTA_GATT_ID)); 7256975b4d711142b885af479721cada448952c6b41Andre Eisenbach p_buf->p_descr_type = (tBTA_GATT_ID *)(p_buf + 1); 7266975b4d711142b885af479721cada448952c6b41Andre Eisenbach memcpy(p_buf->p_descr_type, &p_char_descr_id->descr_id, sizeof(tBTA_GATT_ID)); 7275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->write_type = write_type; 7285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_data && p_data->len != 0) 7305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 7316975b4d711142b885af479721cada448952c6b41Andre Eisenbach p_buf->p_value = (UINT8 *)(p_buf->p_descr_type + 1); 7325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->len = p_data->len; 7335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* pack the descr data */ 7345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(p_buf->p_value, p_data->p_value, p_data->len); 7355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 7365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 7385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 7395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return; 7405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 7425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 7435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 7445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTC_PrepareWrite 7455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 7465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called to prepare write a characteristic value. 7475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 7485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters conn_id - connection ID. 7495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_char_id - GATT characteritic ID of the service. 7505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** offset - offset of the write value. 7515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** len: length of the data to be written. 7525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_value - the value to be written. 7535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 7545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None 7555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 7565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 7575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_GATTC_PrepareWrite (UINT16 conn_id, tBTA_GATTC_CHAR_ID *p_char_id, 7585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 offset, UINT16 len, UINT8 *p_value, 7595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATT_AUTH_REQ auth_req) 7605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 7615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_API_WRITE *p_buf; 7625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (tBTA_GATTC_API_WRITE *) GKI_getbuf((UINT16)(sizeof(tBTA_GATTC_API_WRITE) + len))) != NULL) 7645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 7655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memset(p_buf, 0, sizeof(tBTA_GATTC_API_WRITE) + len); 7665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.event = BTA_GATTC_API_WRITE_EVT; 7685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.layer_specific = conn_id; 7695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->auth_req = auth_req; 7705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(&p_buf->srvc_id, &p_char_id->srvc_id, sizeof(tBTA_GATT_SRVC_ID)); 7725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(&p_buf->char_id, &p_char_id->char_id, sizeof(tBTA_GATT_ID)); 7735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->write_type = BTA_GATTC_WRITE_PREPARE; 7755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->offset = offset; 7765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->len = len; 7775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_value && len > 0) 7795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 7805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->p_value = (UINT8 *)(p_buf + 1); 7815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(p_buf->p_value, p_value, len); 7825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 7835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 7855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 7865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return; 7875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 7895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 7905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 7915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTC_ExecuteWrite 7925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 7935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called to execute write a prepare write sequence. 7945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 7955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters conn_id - connection ID. 7965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** is_execute - execute or cancel. 7975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 7985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None 7995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 8005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 8015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_GATTC_ExecuteWrite (UINT16 conn_id, BOOLEAN is_execute) 8025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 8035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_API_EXEC *p_buf; 8045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (tBTA_GATTC_API_EXEC *) GKI_getbuf((UINT16)sizeof(tBTA_GATTC_API_EXEC))) != NULL) 8065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 8075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memset(p_buf, 0, sizeof(tBTA_GATTC_API_EXEC)); 8085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.event = BTA_GATTC_API_EXEC_EVT; 8105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.layer_specific = conn_id; 8115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->is_execute = is_execute; 8135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 8155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 8165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return; 8175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 8195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 8205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 8215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTC_SendIndConfirm 8225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 8235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called to send handle value confirmation. 8245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 8255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters conn_id - connection ID. 8265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_char_id - characteristic ID to confirm. 8275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 8285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None 8295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 8305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 8315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_GATTC_SendIndConfirm (UINT16 conn_id, tBTA_GATTC_CHAR_ID *p_char_id) 8325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 8335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_API_CONFIRM *p_buf; 8345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project APPL_TRACE_API3("BTA_GATTC_SendIndConfirm conn_id=%d service uuid1=0x%x char uuid=0x%x", 836ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta conn_id, p_char_id->srvc_id.id.uuid.uu.uuid16, p_char_id->char_id.uuid.uu.uuid16); 8375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (tBTA_GATTC_API_CONFIRM *) GKI_getbuf(sizeof(tBTA_GATTC_API_CONFIRM))) != NULL) 8395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 8405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memset(p_buf, 0, sizeof(tBTA_GATTC_API_CONFIRM)); 8415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.event = BTA_GATTC_API_CONFIRM_EVT; 8435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.layer_specific = conn_id; 8445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(&p_buf->srvc_id, &p_char_id->srvc_id, sizeof(tBTA_GATT_SRVC_ID)); 8465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(&p_buf->char_id, &p_char_id->char_id, sizeof(tBTA_GATT_ID)); 8475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 8495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 8505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return; 8515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 8535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 8555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 8565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTC_RegisterForNotifications 8575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 8585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called to register for notification of a service. 8595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 8605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters client_if - client interface. 8615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** bda - target GATT server. 8625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_char_id - pointer to GATT characteristic ID. 8635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 8645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns OK if registration succeed, otherwise failed. 8655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 8665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 8675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjecttBTA_GATT_STATUS BTA_GATTC_RegisterForNotifications (tBTA_GATTC_IF client_if, 8685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_ADDR bda, 8695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_CHAR_ID *p_char_id) 8705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 8715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_RCB *p_clreg; 8725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATT_STATUS status = BTA_GATT_ILLEGAL_PARAMETER; 8735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i; 8745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!p_char_id) 8765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 8775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project APPL_TRACE_ERROR0("deregistration failed, unknow char id"); 8785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return status; 8795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 8805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* lock other GKI task */ 8825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project GKI_sched_lock(); 8835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_clreg = bta_gattc_cl_get_regcb(client_if)) != NULL) 8855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 8865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i = 0; i < BTA_GATTC_NOTIF_REG_MAX; i ++) 8875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 888ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if ( p_clreg->notif_reg[i].in_use && 889ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta !memcmp(p_clreg->notif_reg[i].remote_bda, bda, BD_ADDR_LEN) && 890ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta bta_gattc_charid_compare(&p_clreg->notif_reg[i].char_id, p_char_id)) 8915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 892ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta APPL_TRACE_WARNING0("notification already registered"); 8935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project status = BTA_GATT_OK; 8945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 8955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 8965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 897ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if (status != BTA_GATT_OK) 8985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 899ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta for (i = 0; i < BTA_GATTC_NOTIF_REG_MAX; i ++) 900ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta { 901ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if (!p_clreg->notif_reg[i].in_use) 902ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta { 903ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta memset((void *)&p_clreg->notif_reg[i], 0, sizeof(tBTA_GATTC_NOTIF_REG)); 904ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 905ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta p_clreg->notif_reg[i].in_use = TRUE; 906ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta memcpy(p_clreg->notif_reg[i].remote_bda, bda, BD_ADDR_LEN); 907ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 908ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta p_clreg->notif_reg[i].char_id.srvc_id.is_primary = p_char_id->srvc_id.is_primary; 909ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta bta_gattc_cpygattid(&p_clreg->notif_reg[i].char_id.srvc_id.id, &p_char_id->srvc_id.id); 910ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta bta_gattc_cpygattid(&p_clreg->notif_reg[i].char_id.char_id, &p_char_id->char_id); 911ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 912ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta status = BTA_GATT_OK; 913ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta break; 914ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta } 915ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta } 916ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if (i == BTA_GATTC_NOTIF_REG_MAX) 917ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta { 918ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta status = BTA_GATT_NO_RESOURCES; 919ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta APPL_TRACE_ERROR0("Max Notification Reached, registration failed."); 920ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta } 9215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 9225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 9235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 9245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 9255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project APPL_TRACE_ERROR1("Client_if: %d Not Registered", client_if); 9265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 9275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project GKI_sched_unlock(); 9295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return status; 9315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 9325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 9345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 9355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTC_DeregisterForNotifications 9365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 9375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called to de-register for notification of a service. 9385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 9395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters client_if - client interface. 9405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** bda - target GATT server. 9415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_char_id - pointer to GATT characteristic ID. 9425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 9435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns OK if deregistration succeed, otherwise failed. 9445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 9455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 9465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjecttBTA_GATT_STATUS BTA_GATTC_DeregisterForNotifications (tBTA_GATTC_IF client_if, 9475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_ADDR bda, 9485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_CHAR_ID *p_char_id) 9495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 9505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTC_RCB *p_clreg; 9515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATT_STATUS status = BTA_GATT_ILLEGAL_PARAMETER; 9525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i; 9535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!p_char_id) 9555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 9565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project APPL_TRACE_ERROR0("deregistration failed, unknow char id"); 9575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return status; 9585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 9595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* lock other GKI task */ 9615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project GKI_sched_lock(); 9625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_clreg = bta_gattc_cl_get_regcb(client_if)) != NULL) 9645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 9655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i = 0; i < BTA_GATTC_NOTIF_REG_MAX; i ++) 9665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 9675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_clreg->notif_reg[i].in_use && 9685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project !memcmp(p_clreg->notif_reg[i].remote_bda, bda, BD_ADDR_LEN) && 969ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta bta_gattc_charid_compare(&p_clreg->notif_reg[i].char_id, p_char_id)) 9705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 9715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project APPL_TRACE_DEBUG0("Deregistered."); 9725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memset(&p_clreg->notif_reg[i], 0, sizeof(tBTA_GATTC_NOTIF_REG)); 9735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project status = BTA_GATT_OK; 9745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 9755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 9765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 9775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (i == BTA_GATTC_NOTIF_REG_MAX) 9785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 9795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project status = BTA_GATT_ERROR; 9805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project APPL_TRACE_ERROR0("registration not found"); 9825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 9835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 9845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 9855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 9865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project APPL_TRACE_ERROR1("Client_if: %d Not Registered", client_if); 9875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 9885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project GKI_sched_unlock(); 9905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return status; 9925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 9935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 994ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************* 995ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 996ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Function BTA_GATTC_Refresh 997ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 998ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Description Refresh the server cache of the remote device 999ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 1000ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Parameters remote_bda: remote device BD address. 1001ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 1002ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Returns void 1003ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 1004ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta*******************************************************************************/ 1005ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battavoid BTA_GATTC_Refresh(BD_ADDR remote_bda) 1006ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta{ 1007ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta tBTA_GATTC_API_OPEN *p_buf; 1008ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 1009ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if ((p_buf = (tBTA_GATTC_API_OPEN *) GKI_getbuf(sizeof(tBTA_GATTC_API_OPEN))) != NULL) 1010ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta { 1011ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta p_buf->hdr.event = BTA_GATTC_API_REFRESH_EVT; 1012ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 1013ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta memcpy(p_buf->remote_bda, remote_bda, BD_ADDR_LEN); 1014ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 1015ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 1016ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta bta_sys_sendmsg(p_buf); 1017ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta } 1018ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta return; 1019ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta} 10205c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach 10215c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach/******************************************************************************* 10225c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach** 10235c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach** Function BTA_GATTC_Listen 10245c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach** 10255c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach** Description Start advertisement to listen for connection request for a GATT 10265c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach** client application. 10275c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach** 10285c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach** Parameters client_if: server interface. 10295c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach** start: to start or stop listening for connection 10305c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach** remote_bda: remote device BD address, if listen to all device 10315c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach** use NULL. 10325c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach** 10335c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach** Returns void 10345c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach** 10355c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach*******************************************************************************/ 10365c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbachvoid BTA_GATTC_Listen(tBTA_GATTC_IF client_if, BOOLEAN start, BD_ADDR_PTR target_bda) 10375c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach{ 10385c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach tBTA_GATTC_API_LISTEN *p_buf; 10395c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach 10405c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach if ((p_buf = (tBTA_GATTC_API_LISTEN *) GKI_getbuf((UINT16)(sizeof(tBTA_GATTC_API_LISTEN) + BD_ADDR_LEN))) != NULL) 10415c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach { 10425c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach p_buf->hdr.event = BTA_GATTC_API_LISTEN_EVT; 10435c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach 10445c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach p_buf->client_if = client_if; 10455c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach p_buf->start = start; 10465c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach if (target_bda) 10475c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach { 10485c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach p_buf->remote_bda = (UINT8*)(p_buf + 1); 10495c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach memcpy(p_buf->remote_bda, target_bda, BD_ADDR_LEN); 10505c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach } 10515c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach else 10525c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach p_buf->remote_bda = NULL; 10535c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach 10545c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach bta_sys_sendmsg(p_buf); 10555c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach } 10565c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach return; 10575c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach} 10585c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach 1059a4611ac05f07360785adcff8640da01a3894e4c5Andre Eisenbach/******************************************************************************* 1060a4611ac05f07360785adcff8640da01a3894e4c5Andre Eisenbach** 1061a4611ac05f07360785adcff8640da01a3894e4c5Andre Eisenbach** Function BTA_GATTC_Broadcast 1062a4611ac05f07360785adcff8640da01a3894e4c5Andre Eisenbach** 1063a4611ac05f07360785adcff8640da01a3894e4c5Andre Eisenbach** Description Start broadcasting (non-connectable advertisements) 1064a4611ac05f07360785adcff8640da01a3894e4c5Andre Eisenbach** 1065a4611ac05f07360785adcff8640da01a3894e4c5Andre Eisenbach** Parameters client_if: client interface. 1066a4611ac05f07360785adcff8640da01a3894e4c5Andre Eisenbach** start: to start or stop listening for connection 1067a4611ac05f07360785adcff8640da01a3894e4c5Andre Eisenbach** 1068a4611ac05f07360785adcff8640da01a3894e4c5Andre Eisenbach** Returns void 1069a4611ac05f07360785adcff8640da01a3894e4c5Andre Eisenbach** 1070a4611ac05f07360785adcff8640da01a3894e4c5Andre Eisenbach*******************************************************************************/ 1071a4611ac05f07360785adcff8640da01a3894e4c5Andre Eisenbachvoid BTA_GATTC_Broadcast(tBTA_GATTC_IF client_if, BOOLEAN start) 1072a4611ac05f07360785adcff8640da01a3894e4c5Andre Eisenbach{ 1073a4611ac05f07360785adcff8640da01a3894e4c5Andre Eisenbach tBTA_GATTC_API_LISTEN *p_buf; 1074a4611ac05f07360785adcff8640da01a3894e4c5Andre Eisenbach 1075a4611ac05f07360785adcff8640da01a3894e4c5Andre Eisenbach if ((p_buf = (tBTA_GATTC_API_LISTEN *) GKI_getbuf((UINT16)(sizeof(tBTA_GATTC_API_LISTEN) + BD_ADDR_LEN))) != NULL) 1076a4611ac05f07360785adcff8640da01a3894e4c5Andre Eisenbach { 1077a4611ac05f07360785adcff8640da01a3894e4c5Andre Eisenbach p_buf->hdr.event = BTA_GATTC_API_BROADCAST_EVT; 1078a4611ac05f07360785adcff8640da01a3894e4c5Andre Eisenbach p_buf->client_if = client_if; 1079a4611ac05f07360785adcff8640da01a3894e4c5Andre Eisenbach p_buf->start = start; 1080a4611ac05f07360785adcff8640da01a3894e4c5Andre Eisenbach bta_sys_sendmsg(p_buf); 1081a4611ac05f07360785adcff8640da01a3894e4c5Andre Eisenbach } 1082a4611ac05f07360785adcff8640da01a3894e4c5Andre Eisenbach return; 1083a4611ac05f07360785adcff8640da01a3894e4c5Andre Eisenbach} 1084a4611ac05f07360785adcff8640da01a3894e4c5Andre Eisenbach 10855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* BTA_GATT_INCLUDED */ 1086ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 1087