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