bta_gatts_int.h revision 8af480e24549ba51a3f6858d9d9af504715e0bea
15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 35738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Copyright (C) 2003-2012 Broadcom Corporation 45738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 55738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 65738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * you may not use this file except in compliance with the License. 75738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * You may obtain a copy of the License at: 85738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 95738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * See the License for the specific language governing permissions and 155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * limitations under the License. 165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/ 185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * This is the private file for the BTA GATT server. 225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/ 245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifndef BTA_GATTS_INT_H 255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTA_GATTS_INT_H 265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bt_target.h" 285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_sys.h" 295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_gatt_api.h" 305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "gatt_api.h" 315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32258c2538e3b62a8cdb403f2730c45d721e5292b4Pavlin Radoslavov#include "bt_common.h" 335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/***************************************************************************** 358af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Constants and data types 368af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ****************************************************************************/ 375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectenum 385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_GATTS_API_REG_EVT = BTA_SYS_EVT_START(BTA_ID_GATTS), 405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_GATTS_INT_START_IF_EVT, 415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_GATTS_API_DEREG_EVT, 425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_GATTS_API_INDICATION_EVT, 435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_GATTS_API_DEL_SRVC_EVT, 455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_GATTS_API_STOP_SRVC_EVT, 465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_GATTS_API_RSP_EVT, 475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_GATTS_API_OPEN_EVT, 485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_GATTS_API_CANCEL_OPEN_EVT, 49ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta BTA_GATTS_API_CLOSE_EVT, 50e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbach BTA_GATTS_API_DISABLE_EVT 515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}; 52e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssentypedef uint16_t tBTA_GATTS_INT_EVT; 535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* max number of application allowed on device */ 555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTA_GATTS_MAX_APP_NUM GATT_MAX_SR_PROFILES 565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* max number of services allowed in the device */ 585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTA_GATTS_MAX_SRVC_NUM GATT_MAX_SR_PROFILES 595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* internal strucutre for GATTC register API */ 615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR hdr; 645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBT_UUID app_uuid; 655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTS_CBACK *p_cback; 665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}tBTA_GATTS_API_REG; 675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR hdr; 715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTS_IF server_if; 725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}tBTA_GATTS_INT_START_IF; 735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef tBTA_GATTS_INT_START_IF tBTA_GATTS_API_DEREG; 755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR hdr; 795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTS_IF server_if; 80a641b6fa2a25e1b5382945d13c4fa49d36084a78Jakub Pawlowski btgatt_db_element_t *service; 81d19e0785e662e640191a075eda07acce61c2aedaMarie Janssen uint16_t count; 82a641b6fa2a25e1b5382945d13c4fa49d36084a78Jakub Pawlowski} tBTA_GATTS_API_ADD_SERVICE; 835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR hdr; 87e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssen uint16_t attr_id; 88e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssen uint16_t len; 89e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssen bool need_confirm; 90e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssen uint8_t value[BTA_GATT_MAX_ATTR_LEN]; 915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}tBTA_GATTS_API_INDICATION; 925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR hdr; 96e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssen uint32_t trans_id; 975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATT_STATUS status; 985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTS_RSP *p_rsp; 995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}tBTA_GATTS_API_RSP; 1005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR hdr; 1045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATT_TRANSPORT transport; 1055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}tBTA_GATTS_API_START; 1065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1107fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta BT_HDR hdr; 1117fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta BD_ADDR remote_bda; 1127fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta tBTA_GATTS_IF server_if; 113e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssen bool is_direct; 1147fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta tBTA_GATT_TRANSPORT transport; 1157fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta 1165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}tBTA_GATTS_API_OPEN; 1175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef tBTA_GATTS_API_OPEN tBTA_GATTS_API_CANCEL_OPEN; 1195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef union 1215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR hdr; 1235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTS_API_REG api_reg; 1245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTS_API_DEREG api_dereg; 125a641b6fa2a25e1b5382945d13c4fa49d36084a78Jakub Pawlowski tBTA_GATTS_API_ADD_SERVICE api_add_service; 1265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTS_API_INDICATION api_indicate; 1275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTS_API_RSP api_rsp; 1285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTS_API_OPEN api_open; 1295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTS_API_CANCEL_OPEN api_cancel_open; 1305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTS_INT_START_IF int_start_if; 1325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTA_GATTS_DATA; 1335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* application registration control block */ 1355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 137e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssen bool in_use; 1385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBT_UUID app_uuid; 1395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTS_CBACK *p_cback; 140ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta tBTA_GATTS_IF gatt_if; 1415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}tBTA_GATTS_RCB; 1425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* service registration control block */ 1445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBT_UUID service_uuid; /* service UUID */ 147a641b6fa2a25e1b5382945d13c4fa49d36084a78Jakub Pawlowski uint16_t service_id; /* service start handle */ 148e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssen uint8_t rcb_idx; 149e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssen uint8_t idx; /* self index of serviec CB */ 150e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssen bool in_use; 1515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}tBTA_GATTS_SRVC_CB; 1525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* GATT server control block */ 1555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 157e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssen bool enabled; 1585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTS_RCB rcb[BTA_GATTS_MAX_APP_NUM]; 1595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_GATTS_SRVC_CB srvc_cb[BTA_GATTS_MAX_SRVC_NUM]; 1605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}tBTA_GATTS_CB; 1615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/***************************************************************************** 1658af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Global data 1668af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ****************************************************************************/ 1675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* GATTC control block */ 1695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern tBTA_GATTS_CB bta_gatts_cb; 1705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/***************************************************************************** 1728af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function prototypes 1738af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ****************************************************************************/ 174e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssenextern bool bta_gatts_hdl_event(BT_HDR *p_msg); 1755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 176e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbachextern void bta_gatts_api_disable(tBTA_GATTS_CB *p_cb); 177e1202caae4920139ea0cfed5c51f5f76b2dc8bc4Andre Eisenbachextern void bta_gatts_api_enable(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_data); 1785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_gatts_register(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg); 1795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_gatts_start_if(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg); 1805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_gatts_deregister(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg); 1815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_gatts_delete_service(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p_msg); 1825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_gatts_stop_service(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p_msg); 1835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_gatts_send_rsp(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg); 1855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_gatts_indicate_handle (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg); 1865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_gatts_open (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg); 1895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_gatts_cancel_open (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg); 1905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_gatts_close (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg); 1915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 192e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssenextern bool bta_gatts_uuid_compare(tBT_UUID tar, tBT_UUID src); 1935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern tBTA_GATTS_RCB *bta_gatts_find_app_rcb_by_app_if(tBTA_GATTS_IF server_if); 194e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssenextern uint8_t bta_gatts_find_app_rcb_idx_by_app_if(tBTA_GATTS_CB *p_cb, tBTA_GATTS_IF server_if); 195e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssenextern uint8_t bta_gatts_alloc_srvc_cb(tBTA_GATTS_CB *p_cb, uint8_t rcb_idx); 196e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssenextern tBTA_GATTS_SRVC_CB * bta_gatts_find_srvc_cb_by_srvc_id(tBTA_GATTS_CB *p_cb, uint16_t service_id); 197e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssenextern tBTA_GATTS_SRVC_CB * bta_gatts_find_srvc_cb_by_attr_id(tBTA_GATTS_CB *p_cb, uint16_t attr_id); 1985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* BTA_GATTS_INT_H */ 2015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 202