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 server 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_gatts_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 395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectstatic const tBTA_SYS_REG bta_gatts_reg = 405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_gatts_hdl_event, 42e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach BTA_GATTS_Disable 435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}; 445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 47e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach** Function BTA_GATTS_Disable 48ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 49e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach** Description This function is called to disable GATTS module 50ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 51e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach** Parameters None. 52ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 53ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** Returns None 54ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 55ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta*******************************************************************************/ 56e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbachvoid BTA_GATTS_Disable(void) 57ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta{ 58e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach BT_HDR *p_buf; 59e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach 60e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach if (bta_sys_is_register(BTA_ID_GATTS) == FALSE) 61e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach { 62e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_WARNING("GATTS Module not enabled/already disabled"); 63e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach return; 64e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach } 65e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach 66e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) 67e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach { 68e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach p_buf->event = BTA_GATTS_API_DISABLE_EVT; 69e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach bta_sys_sendmsg(p_buf); 70e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach } 71e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach bta_sys_deregister(BTA_ID_GATTS); 72e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach 73ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta} 74ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 75ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************* 76ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta** 775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTS_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 GATTS module. 815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters p_app_uuid - applicaiton UUID 835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_cback - 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_GATTS_AppRegister(tBT_UUID *p_app_uuid, tBTA_GATTS_CBACK *p_cback) 895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTS_API_REG *p_buf; 915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* register with BTA system manager */ 9382d0a118de082b95cc41b63de8fcd79c9f1f0831Sharvil Nanavati if (bta_sys_is_register(BTA_ID_GATTS) == FALSE) 9482d0a118de082b95cc41b63de8fcd79c9f1f0831Sharvil Nanavati { 955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_register(BTA_ID_GATTS, &bta_gatts_reg); 965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (tBTA_GATTS_API_REG *) GKI_getbuf(sizeof(tBTA_GATTS_API_REG))) != NULL) 995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.event = BTA_GATTS_API_REG_EVT; 1015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 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_cback; 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/******************************************************************************* 1145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTS_AppDeregister 1165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description De-register with GATT Server. 1185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters app_id: applicatino ID. 1205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 1225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 1245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_GATTS_AppDeregister(tBTA_GATTS_IF server_if) 1255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTS_API_DEREG *p_buf; 1275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (tBTA_GATTS_API_DEREG *) GKI_getbuf(sizeof(tBTA_GATTS_API_DEREG))) != NULL) 1295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.event = BTA_GATTS_API_DEREG_EVT; 1315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->server_if = server_if; 1325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 1345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return; 1365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 1395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTS_CreateService 1415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description Create a service. When service creation is done, a callback 1435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** event BTA_GATTS_CREATE_SRVC_EVT is called to report status 1445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** and service ID to the profile. The service ID obtained in 1455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** the callback function needs to be used when adding included 1465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** service and characteristics/descriptors into the service. 1475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters app_id: Profile ID this service is belonged to. 1495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_service_uuid: service UUID. 1505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** inst: instance ID number of this service. 1515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** num_handle: numble of handle requessted for this service. 1525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** is_primary: is this service a primary one or not. 1535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 1555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 1575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_GATTS_CreateService(tBTA_GATTS_IF server_if, tBT_UUID *p_service_uuid, UINT8 inst, 1585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 num_handle, BOOLEAN is_primary) 1595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTS_API_CREATE_SRVC *p_buf; 1615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (tBTA_GATTS_API_CREATE_SRVC *) GKI_getbuf(sizeof(tBTA_GATTS_API_CREATE_SRVC))) != NULL) 1635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.event = BTA_GATTS_API_CREATE_SRVC_EVT; 1655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->server_if = server_if; 1675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->inst = inst; 1685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(&p_buf->service_uuid, p_service_uuid, sizeof(tBT_UUID)); 1695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->num_handle = num_handle; 1705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->is_pri = is_primary; 1715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 1735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return; 1755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 1775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTS_AddIncludeService 1795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called to add an included service. After included 1815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** service is included, a callback event BTA_GATTS_ADD_INCL_SRVC_EVT 1825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** is reported the included service ID. 1835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters service_id: service ID to which this included service is to 1855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** be added. 1865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** included_service_id: the service ID to be included. 1875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 1895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 1915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_GATTS_AddIncludeService(UINT16 service_id, UINT16 included_service_id) 1925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTS_API_ADD_INCL_SRVC *p_buf; 1945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = 1965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project (tBTA_GATTS_API_ADD_INCL_SRVC *) GKI_getbuf(sizeof(tBTA_GATTS_API_ADD_INCL_SRVC))) 1975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project != NULL) 1985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.event = BTA_GATTS_API_ADD_INCL_SRVC_EVT; 2005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.layer_specific = service_id; 2025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->included_service_id = included_service_id; 2035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 2055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 2065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return; 2075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 2095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 2105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTS_AddCharacteristic 2125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called to add a characteristic into a service. 2145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters service_id: service ID to which this included service is to 2165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** be added. 2175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_char_uuid : Characteristic UUID. 2185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** perm : Characteristic value declaration attribute permission. 2195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** property : Characteristic Properties 2205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None 2225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 2245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_GATTS_AddCharacteristic (UINT16 service_id, tBT_UUID *p_char_uuid, 2255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATT_PERM perm, tBTA_GATT_CHAR_PROP property) 2265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTS_API_ADD_CHAR *p_buf; 2285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (tBTA_GATTS_API_ADD_CHAR *) GKI_getbuf(sizeof(tBTA_GATTS_API_ADD_CHAR))) != NULL) 2305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 2315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memset(p_buf, 0, sizeof(tBTA_GATTS_API_ADD_CHAR)); 2325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.event = BTA_GATTS_API_ADD_CHAR_EVT; 2345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.layer_specific = service_id; 2355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->perm = perm; 2365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->property = property; 2375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_char_uuid) 2395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 2405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(&p_buf->char_uuid, p_char_uuid, sizeof(tBT_UUID)); 2415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 2425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 2435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 2445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return; 2455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 2465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 2485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTS_AddCharDescriptor 2505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called to add characteristic descriptor. When 2525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** it's done, a callback event BTA_GATTS_ADD_DESCR_EVT is called 2535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** to report the status and an ID number for this descriptor. 2545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters service_id: service ID to which this charatceristic descriptor is to 2565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** be added. 2575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** perm: descriptor access permission. 2585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_descr_uuid: descriptor UUID. 2595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns returns status. 2615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 2635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_GATTS_AddCharDescriptor (UINT16 service_id, 2645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATT_PERM perm, 2655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBT_UUID * p_descr_uuid) 2665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTS_API_ADD_DESCR *p_buf; 2685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 len = sizeof(tBTA_GATTS_API_ADD_DESCR); 2695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (tBTA_GATTS_API_ADD_DESCR *) GKI_getbuf(len)) != NULL) 2725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 2735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memset(p_buf, 0, len); 2745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.event = BTA_GATTS_API_ADD_DESCR_EVT; 2765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.layer_specific = service_id; 2775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->perm = perm; 2785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_descr_uuid) 2805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 2815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(&p_buf->descr_uuid, p_descr_uuid, sizeof(tBT_UUID)); 2825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 2835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 2845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 2855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return; 2865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 2885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 2905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTS_DeleteService 2925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called to delete a service. When this is done, 2945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** a callback event BTA_GATTS_DELETE_EVT is report with the status. 2955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters service_id: service_id to be deleted. 2975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns returns none. 2995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 3015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_GATTS_DeleteService(UINT16 service_id) 3025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 3035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p_buf; 3045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) 3065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 3075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->event = BTA_GATTS_API_DEL_SRVC_EVT; 3085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->layer_specific = service_id; 3105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 3125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 3135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return; 3145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 3165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 3185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTS_StartService 3205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called to start a service. 3225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters service_id: the service ID to be started. 3245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** sup_transport: supported trasnport. 3255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None. 3275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 3295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_GATTS_StartService(UINT16 service_id, tBTA_GATT_TRANSPORT sup_transport) 3305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 3315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTS_API_START *p_buf; 3325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (tBTA_GATTS_API_START *) GKI_getbuf(sizeof(tBTA_GATTS_API_START))) != NULL) 3345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 3355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.event = BTA_GATTS_API_START_SRVC_EVT; 3365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.layer_specific = service_id; 3385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->transport = sup_transport; 3395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 3415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 3425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return; 3435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 3445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 3465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTS_StopService 3485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called to stop a service. 3505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters service_id - service to be topped. 3525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None 3545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 3565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_GATTS_StopService(UINT16 service_id) 3575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 3585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p_buf; 3595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) 3615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 3625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->event = BTA_GATTS_API_STOP_SRVC_EVT; 3635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->layer_specific = service_id; 3655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 3675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 3685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return; 3695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 3705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 3725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTS_HandleValueIndication 3745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called to read a characteristics descriptor. 3765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters bda - remote device bd address to indicate. 3785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** attr_id - attribute ID to indicate. 3795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** data_len - indicate data length. 3805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_data: data to indicate. 3815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** need_confirm - if this indication expects a confirmation or not. 3825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None 3845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 3865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_GATTS_HandleValueIndication (UINT16 conn_id, UINT16 attr_id, UINT16 data_len, 3875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_data, BOOLEAN need_confirm) 3885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 3895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTS_API_INDICATION *p_buf; 3905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 len = sizeof(tBTA_GATTS_API_INDICATION); 3915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (tBTA_GATTS_API_INDICATION *) GKI_getbuf(len)) != NULL) 3935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 3945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memset(p_buf, 0, len); 3955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.event = BTA_GATTS_API_INDICATION_EVT; 3975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.layer_specific = conn_id; 3985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->attr_id = attr_id; 3995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->need_confirm = need_confirm; 4005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (data_len > 0 && p_data != NULL) 4025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 4035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->len = data_len; 4045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(p_buf->value, p_data, data_len); 4055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 4075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 4085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 4095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return; 4105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 4125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 4135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTS_SendRsp 4155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called to send a response to a request. 4175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters conn_id - connection identifier. 4195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** trans_id - transaction ID. 4205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** status - response status 4215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_msg - response data. 4225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None 4245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 4265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_GATTS_SendRsp (UINT16 conn_id, UINT32 trans_id, 4275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATT_STATUS status, tBTA_GATTS_RSP *p_msg) 4285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 4295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTS_API_RSP *p_buf; 4305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 len = sizeof(tBTA_GATTS_API_RSP) + sizeof(tBTA_GATTS_RSP); 4315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (tBTA_GATTS_API_RSP *) GKI_getbuf(len)) != NULL) 4335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 4345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memset(p_buf, 0, len); 4355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.event = BTA_GATTS_API_RSP_EVT; 4375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.layer_specific = conn_id; 4385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->trans_id = trans_id; 4395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->status = status; 4405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_msg != NULL) 4425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 4435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->p_rsp = (tBTA_GATTS_RSP *)(p_buf + 1); 4445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(p_buf->p_rsp, p_msg, sizeof(tBTA_GATTS_RSP)); 4455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 4465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 4485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 4495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return; 4505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 4525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 4565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTS_Open 4585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description Open a direct open connection or add a background auto connection 4605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** bd address 4615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters server_if: server interface. 4635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** remote_bda: remote device BD address. 4645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** is_direct: direct connection or background auto connection 4658fe58875ce67c6e1099e7ba2339dcd2b979491b0Ganesh Ganapathi Batta** transport : Transport on which GATT connection to be opened (BR/EDR or LE) 4665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 4685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 4708fe58875ce67c6e1099e7ba2339dcd2b979491b0Ganesh Ganapathi Battavoid BTA_GATTS_Open(tBTA_GATTS_IF server_if, BD_ADDR remote_bda, BOOLEAN is_direct, 4718fe58875ce67c6e1099e7ba2339dcd2b979491b0Ganesh Ganapathi Batta tBTA_GATT_TRANSPORT transport) 4725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 4735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTS_API_OPEN *p_buf; 4745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (tBTA_GATTS_API_OPEN *) GKI_getbuf(sizeof(tBTA_GATTS_API_OPEN))) != NULL) 4765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 4775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.event = BTA_GATTS_API_OPEN_EVT; 4785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->server_if = server_if; 4795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->is_direct = is_direct; 4808fe58875ce67c6e1099e7ba2339dcd2b979491b0Ganesh Ganapathi Batta p_buf->transport = transport; 4815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(p_buf->remote_bda, remote_bda, BD_ADDR_LEN); 4825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 4845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 4855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return; 4865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 4875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 4905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTS_CancelOpen 4925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description Cancel a direct open connection or remove a background auto connection 4945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** bd address 4955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters server_if: server interface. 4975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** remote_bda: remote device BD address. 4985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** is_direct: direct connection or background auto connection 4995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 5005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 5015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 5025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 5035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_GATTS_CancelOpen(tBTA_GATTS_IF server_if, BD_ADDR remote_bda, BOOLEAN is_direct) 5045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 5055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTS_API_CANCEL_OPEN *p_buf; 5065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (tBTA_GATTS_API_CANCEL_OPEN *) GKI_getbuf(sizeof(tBTA_GATTS_API_CANCEL_OPEN))) != NULL) 5085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 5095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.event = BTA_GATTS_API_CANCEL_OPEN_EVT; 5105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->server_if = server_if; 5115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->is_direct = is_direct; 5125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(p_buf->remote_bda, remote_bda, BD_ADDR_LEN); 5135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 5145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 5155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return; 5165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 5175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 5195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 5205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_GATTS_Close 5215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 5225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description Close a connection a remote device. 5235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 5245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters conn_id: connectino ID to be closed. 5255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 5265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 5275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 5285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 5295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_GATTS_Close(UINT16 conn_id) 5305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 5315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p_buf; 5325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) 5345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 5355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->event = BTA_GATTS_API_CLOSE_EVT; 5365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->layer_specific = conn_id; 5375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 5385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 5395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return; 5405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 5425c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach/******************************************************************************* 5435c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach** 5445c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach** Function BTA_GATTS_Listen 5455c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach** 5465c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach** Description Start advertisement to listen for connection request for a 5475c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach** GATT server 5485c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach** 5495c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach** Parameters server_if: server interface. 5505c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach** start: to start or stop listening for connection 5515c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach** remote_bda: remote device BD address, if listen to all device 5525c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach** use NULL. 5535c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach** 5545c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach** Returns void 5555c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach** 5565c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach*******************************************************************************/ 5575c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbachvoid BTA_GATTS_Listen(tBTA_GATTS_IF server_if, BOOLEAN start, BD_ADDR_PTR target_bda) 5585c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach{ 5595c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach tBTA_GATTS_API_LISTEN *p_buf; 5605c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach 5615c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach if ((p_buf = (tBTA_GATTS_API_LISTEN *) GKI_getbuf((UINT16)(sizeof(tBTA_GATTS_API_LISTEN) + BD_ADDR_LEN))) != NULL) 5625c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach { 5635c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach p_buf->hdr.event = BTA_GATTS_API_LISTEN_EVT; 5645c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach 5655c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach p_buf->server_if = server_if; 5665c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach p_buf->start = start; 5675c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach 5685c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach if (target_bda) 5695c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach { 5705c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach p_buf->remote_bda = (UINT8*)(p_buf + 1); 5715c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach memcpy(p_buf->remote_bda, target_bda, BD_ADDR_LEN); 5725c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach } 5735c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach else 5745c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach p_buf->remote_bda = NULL; 5755c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach 5765c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach bta_sys_sendmsg(p_buf); 5775c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach } 5785c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach return; 5795c44e45473e5fc2fa89411ab1add7dbfc979f1f8Andre Eisenbach} 5805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* BTA_GATT_INCLUDED */ 582