1/****************************************************************************** 2 * 3 * Copyright (C) 2003-2013 Broadcom Corporation 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at: 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 ******************************************************************************/ 18 19/****************************************************************************** 20 * 21 * This is the public interface file for BTA GATT. 22 * 23 ******************************************************************************/ 24 25#ifndef BTA_GATT_API_H 26#define BTA_GATT_API_H 27 28#include "bta_api.h" 29#include "gatt_api.h" 30 31#ifndef BTA_GATT_INCLUDED 32#warning BTA_GATT_INCLUDED not defined 33#define BTA_GATT_INCLUDED FALSE 34#endif 35 36#if ((BLE_INCLUDED == FALSE) && (BTA_GATT_INCLUDED == TRUE)) 37#undef BTA_GATT_INCLUDED 38#define BTA_GATT_INCLUDED FALSE 39#endif 40 41 42#ifndef BTA_GATT_DEBUG 43#define BTA_GATT_DEBUG FALSE 44#endif 45 46/***************************************************************************** 47** Constants and data types 48*****************************************************************************/ 49/************************** 50** Common Definitions 51***************************/ 52/* GATT ID */ 53typedef struct 54{ 55 tBT_UUID uuid; /* uuid of the attribute */ 56 UINT8 inst_id; /* instance ID */ 57} __attribute__((packed)) tBTA_GATT_ID; 58 59/* Success code and error codes */ 60#define BTA_GATT_OK GATT_SUCCESS 61#define BTA_GATT_INVALID_HANDLE GATT_INVALID_HANDLE /* 0x0001 */ 62#define BTA_GATT_READ_NOT_PERMIT GATT_READ_NOT_PERMIT /* 0x0002 */ 63#define BTA_GATT_WRITE_NOT_PERMIT GATT_WRITE_NOT_PERMIT /* 0x0003 */ 64#define BTA_GATT_INVALID_PDU GATT_INVALID_PDU /* 0x0004 */ 65#define BTA_GATT_INSUF_AUTHENTICATION GATT_INSUF_AUTHENTICATION /* 0x0005 */ 66#define BTA_GATT_REQ_NOT_SUPPORTED GATT_REQ_NOT_SUPPORTED /* 0x0006 */ 67#define BTA_GATT_INVALID_OFFSET GATT_INVALID_OFFSET /* 0x0007 */ 68#define BTA_GATT_INSUF_AUTHORIZATION GATT_INSUF_AUTHORIZATION /* 0x0008 */ 69#define BTA_GATT_PREPARE_Q_FULL GATT_PREPARE_Q_FULL /* 0x0009 */ 70#define BTA_GATT_NOT_FOUND GATT_NOT_FOUND /* 0x000a */ 71#define BTA_GATT_NOT_LONG GATT_NOT_LONG /* 0x000b */ 72#define BTA_GATT_INSUF_KEY_SIZE GATT_INSUF_KEY_SIZE /* 0x000c */ 73#define BTA_GATT_INVALID_ATTR_LEN GATT_INVALID_ATTR_LEN /* 0x000d */ 74#define BTA_GATT_ERR_UNLIKELY GATT_ERR_UNLIKELY /* 0x000e */ 75#define BTA_GATT_INSUF_ENCRYPTION GATT_INSUF_ENCRYPTION /* 0x000f */ 76#define BTA_GATT_UNSUPPORT_GRP_TYPE GATT_UNSUPPORT_GRP_TYPE /* 0x0010 */ 77#define BTA_GATT_INSUF_RESOURCE GATT_INSUF_RESOURCE /* 0x0011 */ 78 79 80#define BTA_GATT_NO_RESOURCES GATT_NO_RESOURCES /* 0x80 */ 81#define BTA_GATT_INTERNAL_ERROR GATT_INTERNAL_ERROR /* 0x81 */ 82#define BTA_GATT_WRONG_STATE GATT_WRONG_STATE /* 0x82 */ 83#define BTA_GATT_DB_FULL GATT_DB_FULL /* 0x83 */ 84#define BTA_GATT_BUSY GATT_BUSY /* 0x84 */ 85#define BTA_GATT_ERROR GATT_ERROR /* 0x85 */ 86#define BTA_GATT_CMD_STARTED GATT_CMD_STARTED /* 0x86 */ 87#define BTA_GATT_ILLEGAL_PARAMETER GATT_ILLEGAL_PARAMETER /* 0x87 */ 88#define BTA_GATT_PENDING GATT_PENDING /* 0x88 */ 89#define BTA_GATT_AUTH_FAIL GATT_AUTH_FAIL /* 0x89 */ 90#define BTA_GATT_MORE GATT_MORE /* 0x8a */ 91#define BTA_GATT_INVALID_CFG GATT_INVALID_CFG /* 0x8b */ 92#define BTA_GATT_SERVICE_STARTED GATT_SERVICE_STARTED /* 0x8c */ 93#define BTA_GATT_ENCRYPED_MITM GATT_ENCRYPED_MITM /* GATT_SUCCESS */ 94#define BTA_GATT_ENCRYPED_NO_MITM GATT_ENCRYPED_NO_MITM /* 0x8d */ 95#define BTA_GATT_NOT_ENCRYPTED GATT_NOT_ENCRYPTED /* 0x8e */ 96#define BTA_GATT_CONGESTED GATT_CONGESTED /* 0x8f */ 97 98#define BTA_GATT_DUP_REG 0x90 /* 0x90 */ 99#define BTA_GATT_ALREADY_OPEN 0x91 /* 0x91 */ 100#define BTA_GATT_CANCEL 0x92 /* 0x92 */ 101 102 /* 0xE0 ~ 0xFC reserved for future use */ 103#define BTA_GATT_CCC_CFG_ERR GATT_CCC_CFG_ERR /* 0xFD Client Characteristic Configuration Descriptor Improperly Configured */ 104#define BTA_GATT_PRC_IN_PROGRESS GATT_PRC_IN_PROGRESS /* 0xFE Procedure Already in progress */ 105#define BTA_GATT_OUT_OF_RANGE GATT_OUT_OF_RANGE /* 0xFFAttribute value out of range */ 106 107typedef UINT8 tBTA_GATT_STATUS; 108 109#define BTA_GATT_INVALID_CONN_ID GATT_INVALID_CONN_ID 110 111 112/* Client callback function events */ 113#define BTA_GATTC_REG_EVT 0 /* GATT client is registered. */ 114#define BTA_GATTC_DEREG_EVT 1 /* GATT client deregistered event */ 115#define BTA_GATTC_OPEN_EVT 2 /* GATTC open request status event */ 116#define BTA_GATTC_READ_CHAR_EVT 3 /* GATT read characteristic event */ 117#define BTA_GATTC_WRITE_CHAR_EVT 4 /* GATT write characteristic or char descriptor event */ 118#define BTA_GATTC_CLOSE_EVT 5 /* GATTC close request status event */ 119#define BTA_GATTC_SEARCH_CMPL_EVT 6 /* GATT discovery complete event */ 120#define BTA_GATTC_SEARCH_RES_EVT 7 /* GATT discovery result event */ 121#define BTA_GATTC_READ_DESCR_EVT 8 /* GATT read characterisitc descriptor event */ 122#define BTA_GATTC_WRITE_DESCR_EVT 9 /* GATT write characteristic descriptor event */ 123#define BTA_GATTC_NOTIF_EVT 10 /* GATT attribute notification event */ 124#define BTA_GATTC_PREP_WRITE_EVT 11 /* GATT prepare write event */ 125#define BTA_GATTC_EXEC_EVT 12 /* execute write complete event */ 126#define BTA_GATTC_ACL_EVT 13 /* ACL up event */ 127#define BTA_GATTC_CANCEL_OPEN_EVT 14 /* cancel open event */ 128#define BTA_GATTC_SRVC_CHG_EVT 15 /* service change event */ 129#define BTA_GATTC_LISTEN_EVT 16 /* listen event */ 130#define BTA_GATTC_ENC_CMPL_CB_EVT 17 /* encryption complete callback event */ 131#define BTA_GATTC_CFG_MTU_EVT 18 /* configure MTU complete event */ 132#define BTA_GATTC_ADV_DATA_EVT 19 /* ADV data event */ 133#define BTA_GATTC_MULT_ADV_ENB_EVT 20 /* Enable Multi ADV event */ 134#define BTA_GATTC_MULT_ADV_UPD_EVT 21 /* Update parameter event */ 135#define BTA_GATTC_MULT_ADV_DATA_EVT 22 /* Multi ADV data event */ 136#define BTA_GATTC_MULT_ADV_DIS_EVT 23 /* Disable Multi ADV event */ 137#define BTA_GATTC_CONGEST_EVT 24 /* Congestion event */ 138#define BTA_GATTC_BTH_SCAN_ENB_EVT 25 /* Enable batch scan event */ 139#define BTA_GATTC_BTH_SCAN_CFG_EVT 26 /* Config storage event */ 140#define BTA_GATTC_BTH_SCAN_RD_EVT 27 /* Batch scan reports read event */ 141#define BTA_GATTC_BTH_SCAN_THR_EVT 28 /* Batch scan threshold event */ 142#define BTA_GATTC_BTH_SCAN_PARAM_EVT 29 /* Batch scan param event */ 143#define BTA_GATTC_BTH_SCAN_DIS_EVT 30 /* Disable batch scan event */ 144#define BTA_GATTC_SCAN_FLT_CFG_EVT 31 /* Scan filter config event */ 145#define BTA_GATTC_SCAN_FLT_PARAM_EVT 32 /* Param filter event */ 146#define BTA_GATTC_SCAN_FLT_STATUS_EVT 33 /* Filter status event */ 147#define BTA_GATTC_ADV_VSC_EVT 34 /* ADV VSC event */ 148 149typedef UINT8 tBTA_GATTC_EVT; 150 151typedef tGATT_IF tBTA_GATTC_IF; 152 153typedef struct 154{ 155 UINT16 unit; /* as UUIUD defined by SIG */ 156 UINT16 descr; /* as UUID as defined by SIG */ 157 tGATT_FORMAT format; 158 INT8 exp; 159 UINT8 name_spc; /* The name space of the description */ 160}tBTA_GATT_CHAR_PRES; 161 162#define BTA_GATT_CLT_CONFIG_NONE GATT_CLT_CONFIG_NONE /* 0x0000 */ 163#define BTA_GATT_CLT_CONFIG_NOTIFICATION GATT_CLT_CONFIG_NOTIFICATION /* 0x0001 */ 164#define BTA_GATT_CLT_CONFIG_INDICATION GATT_CLT_CONFIG_INDICATION /* 0x0002 */ 165typedef UINT16 tBTA_GATT_CLT_CHAR_CONFIG; 166 167/* characteristic descriptor: server configuration value 168*/ 169#define BTA_GATT_SVR_CONFIG_NONE GATT_SVR_CONFIG_NONE /* 0x0000 */ 170#define BTA_GATT_SVR_CONFIG_BROADCAST GATT_SVR_CONFIG_BROADCAST /* 0x0001 */ 171typedef UINT16 tBTA_GATT_SVR_CHAR_CONFIG; 172 173/* Characteristic Aggregate Format attribute value 174*/ 175#define BTA_GATT_AGGR_HANDLE_NUM_MAX 10 176typedef struct 177{ 178 UINT8 num_handle; 179 UINT16 handle_list[BTA_GATT_AGGR_HANDLE_NUM_MAX]; 180} tBTA_GATT_CHAR_AGGRE; 181typedef tGATT_VALID_RANGE tBTA_GATT_VALID_RANGE; 182 183typedef struct 184{ 185 UINT16 len; 186 UINT8 *p_value; 187}tBTA_GATT_UNFMT; 188 189#define BTA_GATT_MAX_ATTR_LEN GATT_MAX_ATTR_LEN 190 191#define BTA_GATTC_TYPE_WRITE GATT_WRITE 192#define BTA_GATTC_TYPE_WRITE_NO_RSP GATT_WRITE_NO_RSP 193typedef UINT8 tBTA_GATTC_WRITE_TYPE; 194 195#define BTA_GATT_CONN_UNKNOWN 0 196#define BTA_GATT_CONN_L2C_FAILURE GATT_CONN_L2C_FAILURE /* general l2cap resource failure */ 197#define BTA_GATT_CONN_TIMEOUT GATT_CONN_TIMEOUT /* 0x08 connection timeout */ 198#define BTA_GATT_CONN_TERMINATE_PEER_USER GATT_CONN_TERMINATE_PEER_USER /* 0x13 connection terminate by peer user */ 199#define BTA_GATT_CONN_TERMINATE_LOCAL_HOST GATT_CONN_TERMINATE_LOCAL_HOST/* 0x16 connectionterminated by local host */ 200#define BTA_GATT_CONN_FAIL_ESTABLISH GATT_CONN_FAIL_ESTABLISH /* 0x03E connection fail to establish */ 201#define BTA_GATT_CONN_LMP_TIMEOUT GATT_CONN_LMP_TIMEOUT /* 0x22 connection fail for LMP response tout */ 202#define BTA_GATT_CONN_CANCEL GATT_CONN_CANCEL /* 0x0100 L2CAP connection cancelled */ 203#define BTA_GATT_CONN_NONE 0x0101 /* 0x0101 no connection to cancel */ 204typedef UINT16 tBTA_GATT_REASON; 205 206typedef struct 207{ 208 tBTA_GATT_ID id; 209 BOOLEAN is_primary; 210}tBTA_GATT_SRVC_ID; 211 212typedef struct 213{ 214 tBTA_GATT_SRVC_ID srvc_id; 215 tBTA_GATT_ID char_id; 216}tBTA_GATTC_CHAR_ID; 217 218typedef struct 219{ 220 tBTA_GATTC_CHAR_ID char_id; 221 tBTA_GATT_ID descr_id; 222}tBTA_GATTC_CHAR_DESCR_ID; 223 224typedef struct 225{ 226 tBTA_GATT_SRVC_ID srvc_id; 227 tBTA_GATT_SRVC_ID incl_svc_id; 228}tBTA_GATTC_INCL_SVC_ID; 229 230#define BTA_GATT_TYPE_CHAR 0 231#define BTA_GATT_TYPE_CHAR_DESCR 1 232typedef UINT8 tBTA_GATT_ID_TYPE; 233 234typedef struct 235{ 236 tBTA_GATT_ID_TYPE id_type; 237 union 238 { 239 tBTA_GATTC_CHAR_ID char_id; 240 tBTA_GATTC_CHAR_DESCR_ID char_descr_id; 241 242 } id_value; 243}tBTA_GATTC_ATTR_ID; 244 245#define BTA_GATTC_MULTI_MAX GATT_MAX_READ_MULTI_HANDLES 246 247typedef struct 248{ 249 UINT8 num_attr; 250 tBTA_GATTC_ATTR_ID id_list[BTA_GATTC_MULTI_MAX]; 251 252}tBTA_GATTC_MULTI; 253 254#define BTA_GATT_AUTH_REQ_NONE GATT_AUTH_REQ_NONE 255#define BTA_GATT_AUTH_REQ_NO_MITM GATT_AUTH_REQ_NO_MITM /* unauthenticated encryption */ 256#define BTA_GATT_AUTH_REQ_MITM GATT_AUTH_REQ_MITM /* authenticated encryption */ 257#define BTA_GATT_AUTH_REQ_SIGNED_NO_MITM GATT_AUTH_REQ_SIGNED_NO_MITM 258#define BTA_GATT_AUTH_REQ_SIGNED_MITM GATT_AUTH_REQ_SIGNED_MITM 259 260typedef tGATT_AUTH_REQ tBTA_GATT_AUTH_REQ; 261 262enum 263{ 264 BTA_GATTC_ATTR_TYPE_INCL_SRVC, 265 BTA_GATTC_ATTR_TYPE_CHAR, 266 BTA_GATTC_ATTR_TYPE_CHAR_DESCR, 267 BTA_GATTC_ATTR_TYPE_SRVC 268}; 269typedef UINT8 tBTA_GATTC_ATTR_TYPE; 270 271 272typedef struct 273{ 274 tBT_UUID uuid; 275 UINT16 s_handle; 276 UINT16 e_handle; /* used for service only */ 277 UINT8 attr_type; 278 UINT8 id; 279 UINT8 prop; /* used when attribute type is characteristic */ 280 BOOLEAN is_primary; /* used when attribute type is service */ 281}tBTA_GATTC_NV_ATTR; 282 283/* callback data structure */ 284typedef struct 285{ 286 tBTA_GATT_STATUS status; 287 tBTA_GATTC_IF client_if; 288// btla-specific ++ 289 tBT_UUID app_uuid; 290// btla-specific -- 291}tBTA_GATTC_REG; 292 293typedef struct 294{ 295 UINT8 num_pres_fmt; /* number of presentation format aggregated*/ 296 tBTA_GATTC_CHAR_DESCR_ID pre_format[BTA_GATTC_MULTI_MAX]; 297}tBTA_GATT_CHAR_AGGRE_VALUE; 298 299typedef union 300{ 301 tBTA_GATT_CHAR_AGGRE_VALUE aggre_value; 302 tBTA_GATT_UNFMT unformat; 303 304}tBTA_GATT_READ_VAL; 305 306typedef struct 307{ 308 UINT16 conn_id; 309 tBTA_GATT_STATUS status; 310 tBTA_GATT_SRVC_ID srvc_id; 311 tBTA_GATT_ID char_id; 312 tBTA_GATT_ID descr_type; 313 tBTA_GATT_READ_VAL *p_value; 314}tBTA_GATTC_READ; 315 316typedef struct 317{ 318 UINT16 conn_id; 319 tBTA_GATT_STATUS status; 320 tBTA_GATT_SRVC_ID srvc_id; 321 tBTA_GATT_ID char_id; 322 tBTA_GATT_ID descr_type; 323}tBTA_GATTC_WRITE; 324 325typedef struct 326{ 327 UINT16 conn_id; 328 tBTA_GATT_STATUS status; 329}tBTA_GATTC_EXEC_CMPL; 330 331typedef struct 332{ 333 UINT16 conn_id; 334 tBTA_GATT_STATUS status; 335}tBTA_GATTC_SEARCH_CMPL; 336 337typedef struct 338{ 339 UINT16 conn_id; 340 tBTA_GATT_SRVC_ID service_uuid; 341}tBTA_GATTC_SRVC_RES; 342 343typedef struct 344{ 345 UINT16 conn_id; 346 tBTA_GATT_STATUS status; 347 UINT16 mtu; 348}tBTA_GATTC_CFG_MTU; 349 350typedef struct 351{ 352 tBTA_GATT_STATUS status; 353 UINT16 conn_id; 354 tBTA_GATTC_IF client_if; 355 BD_ADDR remote_bda; 356 tBTA_TRANSPORT transport; 357 UINT16 mtu; 358}tBTA_GATTC_OPEN; 359 360typedef struct 361{ 362 tBTA_GATT_STATUS status; 363 UINT16 conn_id; 364 tBTA_GATTC_IF client_if; 365 BD_ADDR remote_bda; 366 tBTA_GATT_REASON reason; /* disconnect reason code, not useful when connect event is reported */ 367}tBTA_GATTC_CLOSE; 368 369typedef struct 370{ 371 UINT16 conn_id; 372 BD_ADDR bda; 373 tBTA_GATTC_CHAR_ID char_id; 374 tBTA_GATT_ID descr_type; 375 UINT16 len; 376 UINT8 value[BTA_GATT_MAX_ATTR_LEN]; 377 BOOLEAN is_notify; 378}tBTA_GATTC_NOTIFY; 379 380typedef struct 381{ 382 UINT16 conn_id; 383 BOOLEAN congested; /* congestion indicator */ 384}tBTA_GATTC_CONGEST; 385 386// btla-specific ++ 387typedef struct 388{ 389 tBTA_GATT_STATUS status; 390 tBTA_GATTC_IF client_if; 391 UINT16 conn_id; 392 BD_ADDR remote_bda; 393}tBTA_GATTC_OPEN_CLOSE; 394// btla-specific -- 395 396typedef struct 397{ 398 tBTA_GATTC_IF client_if; 399 BD_ADDR remote_bda; 400}tBTA_GATTC_ENC_CMPL_CB; 401 402typedef union 403{ 404 tBTA_GATT_STATUS status; 405 406 tBTA_GATTC_SEARCH_CMPL search_cmpl; /* discovery complete */ 407 tBTA_GATTC_SRVC_RES srvc_res; /* discovery result */ 408 tBTA_GATTC_REG reg_oper; /* registration data */ 409 tBTA_GATTC_OPEN open; 410 tBTA_GATTC_CLOSE close; 411 tBTA_GATTC_READ read; /* read attribute/descriptor data */ 412 tBTA_GATTC_WRITE write; /* write complete data */ 413 tBTA_GATTC_EXEC_CMPL exec_cmpl; /* execute complete */ 414 tBTA_GATTC_NOTIFY notify; /* notification/indication event data */ 415 tBTA_GATTC_ENC_CMPL_CB enc_cmpl; 416 BD_ADDR remote_bda; /* service change event */ 417 tBTA_GATTC_CFG_MTU cfg_mtu; /* configure MTU operation */ 418 tBTA_GATTC_CONGEST congest; 419} tBTA_GATTC; 420 421/* GATTC enable callback function */ 422typedef void (tBTA_GATTC_ENB_CBACK)(tBTA_GATT_STATUS status); 423 424/* Client callback function */ 425typedef void (tBTA_GATTC_CBACK)(tBTA_GATTC_EVT event, tBTA_GATTC *p_data); 426 427 428/* GATT Server Data Structure */ 429/* Server callback function events */ 430#define BTA_GATTS_REG_EVT 0 431#define BTA_GATTS_READ_EVT GATTS_REQ_TYPE_READ /* 1 */ 432#define BTA_GATTS_WRITE_EVT GATTS_REQ_TYPE_WRITE /* 2 */ 433#define BTA_GATTS_EXEC_WRITE_EVT GATTS_REQ_TYPE_WRITE_EXEC /* 3 */ 434#define BTA_GATTS_MTU_EVT GATTS_REQ_TYPE_MTU /* 4 */ 435#define BTA_GATTS_CONF_EVT GATTS_REQ_TYPE_CONF /* 5 */ 436#define BTA_GATTS_DEREG_EVT 6 437#define BTA_GATTS_CREATE_EVT 7 438#define BTA_GATTS_ADD_INCL_SRVC_EVT 8 439#define BTA_GATTS_ADD_CHAR_EVT 9 440#define BTA_GATTS_ADD_CHAR_DESCR_EVT 10 441#define BTA_GATTS_DELELTE_EVT 11 442#define BTA_GATTS_START_EVT 12 443#define BTA_GATTS_STOP_EVT 13 444#define BTA_GATTS_CONNECT_EVT 14 445#define BTA_GATTS_DISCONNECT_EVT 15 446#define BTA_GATTS_OPEN_EVT 16 447#define BTA_GATTS_CANCEL_OPEN_EVT 17 448#define BTA_GATTS_CLOSE_EVT 18 449#define BTA_GATTS_LISTEN_EVT 19 450#define BTA_GATTS_CONGEST_EVT 20 451 452typedef UINT8 tBTA_GATTS_EVT; 453typedef tGATT_IF tBTA_GATTS_IF; 454 455/* Attribute permissions 456*/ 457#define BTA_GATT_PERM_READ GATT_PERM_READ /* bit 0 - 0x0001 */ 458#define BTA_GATT_PERM_READ_ENCRYPTED GATT_PERM_READ_ENCRYPTED /* bit 1 - 0x0002 */ 459#define BTA_GATT_PERM_READ_ENC_MITM GATT_PERM_READ_ENC_MITM /* bit 2 - 0x0004 */ 460#define BTA_GATT_PERM_WRITE GATT_PERM_WRITE /* bit 4 - 0x0010 */ 461#define BTA_GATT_PERM_WRITE_ENCRYPTED GATT_PERM_WRITE_ENCRYPTED /* bit 5 - 0x0020 */ 462#define BTA_GATT_PERM_WRITE_ENC_MITM GATT_PERM_WRITE_ENC_MITM /* bit 6 - 0x0040 */ 463#define BTA_GATT_PERM_WRITE_SIGNED GATT_PERM_WRITE_SIGNED /* bit 7 - 0x0080 */ 464#define BTA_GATT_PERM_WRITE_SIGNED_MITM GATT_PERM_WRITE_SIGNED_MITM /* bit 8 - 0x0100 */ 465typedef UINT16 tBTA_GATT_PERM; 466 467#define BTA_GATTS_INVALID_APP 0xff 468 469#define BTA_GATTS_INVALID_IF 0 470 471/* definition of characteristic properties */ 472#define BTA_GATT_CHAR_PROP_BIT_BROADCAST GATT_CHAR_PROP_BIT_BROADCAST /* 0x01 */ 473#define BTA_GATT_CHAR_PROP_BIT_READ GATT_CHAR_PROP_BIT_READ /* 0x02 */ 474#define BTA_GATT_CHAR_PROP_BIT_WRITE_NR GATT_CHAR_PROP_BIT_WRITE_NR /* 0x04 */ 475#define BTA_GATT_CHAR_PROP_BIT_WRITE GATT_CHAR_PROP_BIT_WRITE /* 0x08 */ 476#define BTA_GATT_CHAR_PROP_BIT_NOTIFY GATT_CHAR_PROP_BIT_NOTIFY /* 0x10 */ 477#define BTA_GATT_CHAR_PROP_BIT_INDICATE GATT_CHAR_PROP_BIT_INDICATE /* 0x20 */ 478#define BTA_GATT_CHAR_PROP_BIT_AUTH GATT_CHAR_PROP_BIT_AUTH /* 0x40 */ 479#define BTA_GATT_CHAR_PROP_BIT_EXT_PROP GATT_CHAR_PROP_BIT_EXT_PROP /* 0x80 */ 480typedef UINT8 tBTA_GATT_CHAR_PROP; 481 482#ifndef BTA_GATTC_CHAR_DESCR_MAX 483#define BTA_GATTC_CHAR_DESCR_MAX 7 484#endif 485 486/*********************** NV callback Data Definitions ********************** 487*/ 488typedef struct 489{ 490 tBT_UUID app_uuid128; 491 tBT_UUID svc_uuid; 492 UINT16 svc_inst; 493 UINT16 s_handle; 494 UINT16 e_handle; 495 BOOLEAN is_primary; /* primary service or secondary */ 496} tBTA_GATTS_HNDL_RANGE; 497 498#define BTA_GATTS_SRV_CHG_CMD_ADD_CLIENT GATTS_SRV_CHG_CMD_ADD_CLIENT 499#define BTA_GATTS_SRV_CHG_CMD_UPDATE_CLIENT GATTS_SRV_CHG_CMD_UPDATE_CLIENT 500#define BTA_GATTS_SRV_CHG_CMD_REMOVE_CLIENT GATTS_SRV_CHG_CMD_REMOVE_CLIENT 501#define BTA_GATTS_SRV_CHG_CMD_READ_NUM_CLENTS GATTS_SRV_CHG_CMD_READ_NUM_CLENTS 502#define BTA_GATTS_SRV_CHG_CMD_READ_CLENT GATTS_SRV_CHG_CMD_READ_CLENT 503typedef tGATTS_SRV_CHG_CMD tBTA_GATTS_SRV_CHG_CMD; 504 505typedef tGATTS_SRV_CHG tBTA_GATTS_SRV_CHG; 506typedef tGATTS_SRV_CHG_REQ tBTA_GATTS_SRV_CHG_REQ; 507typedef tGATTS_SRV_CHG_RSP tBTA_GATTS_SRV_CHG_RSP; 508 509#define BTA_GATT_TRANSPORT_LE GATT_TRANSPORT_LE 510#define BTA_GATT_TRANSPORT_BR_EDR GATT_TRANSPORT_BR_EDR 511#define BTA_GATT_TRANSPORT_LE_BR_EDR GATT_TRANSPORT_LE_BR_EDR 512typedef UINT8 tBTA_GATT_TRANSPORT; 513 514/* attribute value */ 515typedef tGATT_VALUE tBTA_GATT_VALUE; 516 517/* attribute response data */ 518typedef tGATTS_RSP tBTA_GATTS_RSP; 519 520/* attribute request data from the client */ 521#define BTA_GATT_PREP_WRITE_CANCEL 0x00 522#define BTA_GATT_PREP_WRITE_EXEC 0x01 523typedef tGATT_EXEC_FLAG tBTA_GATT_EXEC_FLAG; 524 525/* read request always based on UUID */ 526typedef tGATT_READ_REQ tTA_GBATT_READ_REQ; 527 528/* write request data */ 529typedef tGATT_WRITE_REQ tBTA_GATT_WRITE_REQ; 530 531/* callback data for server access request from client */ 532typedef tGATTS_DATA tBTA_GATTS_REQ_DATA; 533 534typedef struct 535{ 536 tBTA_GATT_STATUS status; 537 BD_ADDR remote_bda; 538 UINT32 trans_id; 539 UINT16 conn_id; 540 tBTA_GATTS_REQ_DATA *p_data; 541}tBTA_GATTS_REQ; 542 543typedef struct 544{ 545 tBTA_GATTS_IF server_if; 546 tBTA_GATT_STATUS status; 547// btla-specific ++ 548 tBT_UUID uuid; 549// btla-specific -- 550}tBTA_GATTS_REG_OPER; 551 552 553typedef struct 554{ 555 tBTA_GATTS_IF server_if; 556 UINT16 service_id; 557// btla-specific ++ 558 UINT16 svc_instance; 559 BOOLEAN is_primary; 560 tBTA_GATT_STATUS status; 561 tBT_UUID uuid; 562// btla-specific -- 563}tBTA_GATTS_CREATE; 564 565typedef struct 566{ 567 tBTA_GATTS_IF server_if; 568 UINT16 service_id; 569 UINT16 attr_id; 570 tBTA_GATT_STATUS status; 571// btla-specific ++ 572 tBT_UUID char_uuid; 573// btla-specific -- 574}tBTA_GATTS_ADD_RESULT; 575 576typedef struct 577{ 578 tBTA_GATTS_IF server_if; 579 UINT16 service_id; 580 tBTA_GATT_STATUS status; 581}tBTA_GATTS_SRVC_OPER; 582 583 584typedef struct 585{ 586 tBTA_GATTS_IF server_if; 587 BD_ADDR remote_bda; 588 UINT16 conn_id; 589 tBTA_GATT_REASON reason; /* report disconnect reason */ 590 tBTA_GATT_TRANSPORT transport; 591}tBTA_GATTS_CONN; 592 593typedef struct 594{ 595 UINT16 conn_id; 596 BOOLEAN congested; /* report channel congestion indicator */ 597}tBTA_GATTS_CONGEST; 598 599typedef struct 600{ 601 UINT16 conn_id; /* connection ID */ 602 tBTA_GATT_STATUS status; /* notification/indication status */ 603}tBTA_GATTS_CONF; 604 605/* GATTS callback data */ 606typedef union 607{ 608 tBTA_GATTS_REG_OPER reg_oper; 609 tBTA_GATTS_CREATE create; 610 tBTA_GATTS_SRVC_OPER srvc_oper; 611 tBTA_GATT_STATUS status; /* BTA_GATTS_LISTEN_EVT */ 612 tBTA_GATTS_ADD_RESULT add_result; /* add included service: BTA_GATTS_ADD_INCL_SRVC_EVT 613 add char : BTA_GATTS_ADD_CHAR_EVT 614 add char descriptor: BTA_GATTS_ADD_CHAR_DESCR_EVT */ 615 tBTA_GATTS_REQ req_data; 616 tBTA_GATTS_CONN conn; /* BTA_GATTS_CONN_EVT */ 617 tBTA_GATTS_CONGEST congest; /* BTA_GATTS_CONGEST_EVT callback data */ 618 tBTA_GATTS_CONF confirm; /* BTA_GATTS_CONF_EVT callback data */ 619}tBTA_GATTS; 620 621/* GATTS enable callback function */ 622typedef void (tBTA_GATTS_ENB_CBACK)(tBTA_GATT_STATUS status); 623 624/* Server callback function */ 625typedef void (tBTA_GATTS_CBACK)(tBTA_GATTS_EVT event, tBTA_GATTS *p_data); 626 627/***************************************************************************** 628** External Function Declarations 629*****************************************************************************/ 630 631#ifdef __cplusplus 632extern "C" 633{ 634#endif 635 636/************************** 637** Client Functions 638***************************/ 639 640/******************************************************************************* 641** 642** Function BTA_GATTC_Disable 643** 644** Description This function is called to disable the GATTC module 645** 646** Parameters None. 647** 648** Returns None 649** 650*******************************************************************************/ 651BTA_API extern void BTA_GATTC_Disable(void); 652 653/******************************************************************************* 654** 655** Function BTA_GATTC_AppRegister 656** 657** Description This function is called to register application callbacks 658** with BTA GATTC module. 659** 660** Parameters p_app_uuid - applicaiton UUID 661** p_client_cb - pointer to the application callback function. 662** 663** Returns None 664** 665*******************************************************************************/ 666BTA_API extern void BTA_GATTC_AppRegister(tBT_UUID *p_app_uuid, tBTA_GATTC_CBACK *p_client_cb); 667 668/******************************************************************************* 669** 670** Function BTA_GATTC_AppDeregister 671** 672** Description This function is called to deregister an application 673** from BTA GATTC module. 674** 675** Parameters client_if - client interface identifier. 676** 677** Returns None 678** 679*******************************************************************************/ 680BTA_API extern void BTA_GATTC_AppDeregister (tBTA_GATTC_IF client_if); 681 682/******************************************************************************* 683** 684** Function BTA_GATTC_Open 685** 686** Description Open a direct connection or add a background auto connection 687** bd address 688** 689** Parameters client_if: server interface. 690** remote_bda: remote device BD address. 691** is_direct: direct connection or background auto connection 692** 693** Returns void 694** 695*******************************************************************************/ 696BTA_API extern void BTA_GATTC_Open(tBTA_GATTC_IF client_if, BD_ADDR remote_bda, 697 BOOLEAN is_direct, tBTA_GATT_TRANSPORT transport); 698 699/******************************************************************************* 700** 701** Function BTA_GATTC_CancelOpen 702** 703** Description Open a direct connection or add a background auto connection 704** bd address 705** 706** Parameters client_if: server interface. 707** remote_bda: remote device BD address. 708** is_direct: direct connection or background auto connection 709** 710** Returns void 711** 712*******************************************************************************/ 713BTA_API extern void BTA_GATTC_CancelOpen(tBTA_GATTC_IF client_if, BD_ADDR remote_bda, BOOLEAN is_direct); 714 715/******************************************************************************* 716** 717** Function BTA_GATTC_Close 718** 719** Description Close a connection to a GATT server. 720** 721** Parameters conn_id: connectino ID to be closed. 722** 723** Returns void 724** 725*******************************************************************************/ 726BTA_API extern void BTA_GATTC_Close(UINT16 conn_id); 727 728/******************************************************************************* 729** 730** Function BTA_GATTC_ServiceSearchRequest 731** 732** Description This function is called to request a GATT service discovery 733** on a GATT server. This function report service search result 734** by a callback event, and followed by a service search complete 735** event. 736** 737** Parameters conn_id: connection ID. 738** p_srvc_uuid: a UUID of the service application is interested in. 739** If Null, discover for all services. 740** 741** Returns None 742** 743*******************************************************************************/ 744BTA_API extern void BTA_GATTC_ServiceSearchRequest(UINT16 conn_id, tBT_UUID *p_srvc_uuid); 745 746/******************************************************************************* 747** 748** Function BTA_GATTC_GetFirstChar 749** 750** Description This function is called to find the first charatceristic of the 751** service on the given server. 752** 753** Parameters conn_id: connection ID which identify the server. 754** p_srvc_id: the service ID of which the characteristic is belonged to. 755** p_char_uuid_cond: Characteristic UUID, if NULL find the first available 756** characteristic. 757** p_char_result: output parameter which will store the GATT 758** characteristic ID. 759** p_property: output parameter to carry the characteristic property. 760** 761** Returns returns status. 762** 763*******************************************************************************/ 764BTA_API extern tBTA_GATT_STATUS BTA_GATTC_GetFirstChar (UINT16 conn_id, 765 tBTA_GATT_SRVC_ID *p_srvc_id, 766 tBT_UUID *p_char_uuid_cond, 767 tBTA_GATTC_CHAR_ID *p_char_result, 768 tBTA_GATT_CHAR_PROP *p_property); 769 770/******************************************************************************* 771** 772** Function BTA_GATTC_GetNextChar 773** 774** Description This function is called to find the next charatceristic of the 775** service on the given server. 776** 777** Parameters conn_id: connection ID which identify the server. 778** p_start_char_id: start the characteristic search from the next record 779** after the one identified by char_id. 780** p_char_uuid_cond: Characteristic UUID, if NULL find the first available 781** characteristic. 782** p_char_result: output parameter which will store the GATT 783** characteristic ID. 784** p_property: output parameter, characteristic property. 785** 786** Returns returns status. 787** 788*******************************************************************************/ 789BTA_API extern tBTA_GATT_STATUS BTA_GATTC_GetNextChar (UINT16 conn_id, 790 tBTA_GATTC_CHAR_ID *p_start_char_id, 791 tBT_UUID *p_char_uuid_cond, 792 tBTA_GATTC_CHAR_ID *p_char_result, 793 tBTA_GATT_CHAR_PROP *p_property); 794 795/******************************************************************************* 796** 797** Function BTA_GATTC_GetFirstCharDescr 798** 799** Description This function is called to find the first charatceristic descriptor of the 800** charatceristic on the given server. 801** 802** Parameters conn_id: connection ID which identify the server. 803** p_char_id: the characteristic ID of which the descriptor is belonged to. 804** p_descr_uuid_cond: Characteristic Descr UUID, if NULL find the first available 805** characteristic. 806** p_descr_result: output parameter which will store the GATT 807** characteristic descriptor ID. 808** 809** Returns returns status. 810** 811*******************************************************************************/ 812BTA_API extern tBTA_GATT_STATUS BTA_GATTC_GetFirstCharDescr (UINT16 conn_id, tBTA_GATTC_CHAR_ID *p_char_id, 813 tBT_UUID *p_descr_uuid_cond, 814 tBTA_GATTC_CHAR_DESCR_ID *p_descr_result); 815 816/******************************************************************************* 817** 818** Function BTA_GATTC_GetNextCharDescr 819** 820** Description This function is called to find the next charatceristic of the 821** service on the given server. 822** 823** Parameters conn_id: connection ID which identify the server. 824** p_start_descr_id: start the characteristic search from the next record 825** after the one identified by p_start_descr_id. 826** p_descr_uuid_cond: Characteristic descriptor UUID, if NULL find 827** the first available characteristic descriptor. 828** p_descr_result: output parameter which will store the GATT 829** characteristic descriptor ID. 830** 831** Returns returns status. 832** 833*******************************************************************************/ 834BTA_API extern tBTA_GATT_STATUS BTA_GATTC_GetNextCharDescr (UINT16 conn_id, 835 tBTA_GATTC_CHAR_DESCR_ID *p_start_descr_id, 836 tBT_UUID *p_descr_uuid_cond, 837 tBTA_GATTC_CHAR_DESCR_ID *p_descr_result); 838 839 840/******************************************************************************* 841** 842** Function BTA_GATTC_GetFirstIncludedService 843** 844** Description This function is called to find the first included service of the 845** service on the given server. 846** 847** Parameters conn_id: connection ID which identify the server. 848** p_srvc_id: the service ID of which the included service is belonged to. 849** p_uuid_cond: include service UUID, if NULL find the first available 850** included service. 851** p_result: output parameter which will store the GATT ID 852** of the included service found. 853** 854** Returns returns status. 855** 856*******************************************************************************/ 857BTA_API extern tBTA_GATT_STATUS BTA_GATTC_GetFirstIncludedService(UINT16 conn_id, 858 tBTA_GATT_SRVC_ID *p_srvc_id, 859 tBT_UUID *p_uuid_cond, 860 tBTA_GATTC_INCL_SVC_ID *p_result); 861 862/******************************************************************************* 863** 864** Function BTA_GATTC_GetNextIncludedService 865** 866** Description This function is called to find the next included service of the 867** service on the given server. 868** 869** Parameters conn_id: connection ID which identify the server. 870** p_start_id: start the search from the next record 871** after the one identified by p_start_id. 872** p_uuid_cond: Included service UUID, if NULL find the first available 873** included service. 874** p_result: output parameter which will store the GATT ID 875** of the included service found. 876** 877** Returns returns status. 878** 879*******************************************************************************/ 880BTA_API extern tBTA_GATT_STATUS BTA_GATTC_GetNextIncludedService(UINT16 conn_id, 881 tBTA_GATTC_INCL_SVC_ID *p_start_id, 882 tBT_UUID *p_uuid_cond, 883 tBTA_GATTC_INCL_SVC_ID *p_result); 884 885/******************************************************************************* 886** 887** Function BTA_GATTC_ReadCharacteristic 888** 889** Description This function is called to read a service's characteristics of 890** the given characteritisc ID. 891** 892** Parameters conn_id - connectino ID. 893** p_char_id - characteritic ID to read. 894** 895** Returns None 896** 897*******************************************************************************/ 898BTA_API extern void BTA_GATTC_ReadCharacteristic (UINT16 conn_id, 899 tBTA_GATTC_CHAR_ID *p_char_id, 900 tBTA_GATT_AUTH_REQ auth_req); 901 902/******************************************************************************* 903** 904** Function BTA_GATTC_ReadCharDescr 905** 906** Description This function is called to read a characteristics descriptor. 907** 908** Parameters conn_id - connection ID. 909** p_char_descr_id - characteritic descriptor ID to read. 910** 911** Returns None 912** 913*******************************************************************************/ 914BTA_API extern void BTA_GATTC_ReadCharDescr (UINT16 conn_id, 915 tBTA_GATTC_CHAR_DESCR_ID *p_char_descr_id, 916 tBTA_GATT_AUTH_REQ auth_req); 917 918/******************************************************************************* 919** 920** Function BTA_GATTC_WriteCharValue 921** 922** Description This function is called to write characteristic value. 923** 924** Parameters conn_id - connection ID. 925** p_char_id - characteristic ID to write. 926** write_type - type of write. 927** len: length of the data to be written. 928** p_value - the value to be written. 929** 930** Returns None 931** 932*******************************************************************************/ 933BTA_API extern void BTA_GATTC_WriteCharValue (UINT16 conn_id, 934 tBTA_GATTC_CHAR_ID *p_char_id, 935 tBTA_GATTC_WRITE_TYPE write_type, 936 UINT16 len, 937 UINT8 *p_value, 938 tBTA_GATT_AUTH_REQ auth_req); 939 940/******************************************************************************* 941** 942** Function BTA_GATTC_WriteCharDescr 943** 944** Description This function is called to write characteristic descriptor value. 945** 946** Parameters conn_id - connection ID 947** p_char_descr_id - characteristic descriptor ID to write. 948** write_type - type of write. 949** p_value - the value to be written. 950** 951** Returns None 952** 953*******************************************************************************/ 954BTA_API extern void BTA_GATTC_WriteCharDescr (UINT16 conn_id, 955 tBTA_GATTC_CHAR_DESCR_ID *p_char_descr_id, 956 tBTA_GATTC_WRITE_TYPE write_type, 957 tBTA_GATT_UNFMT *p_data, 958 tBTA_GATT_AUTH_REQ auth_req); 959 960/******************************************************************************* 961** 962** Function BTA_GATTC_SendIndConfirm 963** 964** Description This function is called to send handle value confirmation. 965** 966** Parameters conn_id - connection ID. 967** p_char_id - characteristic ID to confrim. 968** 969** Returns None 970** 971*******************************************************************************/ 972BTA_API extern void BTA_GATTC_SendIndConfirm (UINT16 conn_id, tBTA_GATTC_CHAR_ID *p_char_id); 973 974/******************************************************************************* 975** 976** Function BTA_GATTC_RegisterForNotifications 977** 978** Description This function is called to register for notification of a service. 979** 980** Parameters client_if - client interface. 981** remote_bda - target GATT server. 982** p_char_id - pointer to GATT characteristic ID. 983** 984** Returns OK if registration succeed, otherwise failed. 985** 986*******************************************************************************/ 987BTA_API extern tBTA_GATT_STATUS BTA_GATTC_RegisterForNotifications (tBTA_GATTC_IF client_if, 988 BD_ADDR remote_bda, 989 tBTA_GATTC_CHAR_ID *p_char_id); 990 991 992/******************************************************************************* 993** 994** Function BTA_GATTC_DeregisterForNotifications 995** 996** Description This function is called to de-register for notification of a servbice. 997** 998** Parameters client_if - client interface. 999** remote_bda - target GATT server. 1000** p_char_id - pointer to a GATT characteristic ID. 1001** 1002** Returns OK if deregistration succeed, otherwise failed. 1003** 1004*******************************************************************************/ 1005BTA_API extern tBTA_GATT_STATUS BTA_GATTC_DeregisterForNotifications (tBTA_GATTC_IF client_if, 1006 BD_ADDR remote_bda, 1007 tBTA_GATTC_CHAR_ID *p_char_id); 1008 1009/******************************************************************************* 1010** 1011** Function BTA_GATTC_PrepareWrite 1012** 1013** Description This function is called to prepare write a characteristic value. 1014** 1015** Parameters conn_id - connection ID. 1016** p_char_id - GATT characteritic ID of the service. 1017** offset - offset of the write value. 1018** len: length of the data to be written. 1019** p_value - the value to be written. 1020** 1021** Returns None 1022** 1023*******************************************************************************/ 1024BTA_API extern void BTA_GATTC_PrepareWrite (UINT16 conn_id, 1025 tBTA_GATTC_CHAR_ID *p_char_id, 1026 UINT16 offset, 1027 UINT16 len, 1028 UINT8 *p_value, 1029 tBTA_GATT_AUTH_REQ auth_req); 1030 1031/******************************************************************************* 1032** 1033** Function BTA_GATTC_ExecuteWrite 1034** 1035** Description This function is called to execute write a prepare write sequence. 1036** 1037** Parameters conn_id - connection ID. 1038** is_execute - execute or cancel. 1039** 1040** Returns None 1041** 1042*******************************************************************************/ 1043BTA_API extern void BTA_GATTC_ExecuteWrite (UINT16 conn_id, BOOLEAN is_execute); 1044 1045/******************************************************************************* 1046** 1047** Function BTA_GATTC_ReadMultiple 1048** 1049** Description This function is called to read multiple characteristic or 1050** characteristic descriptors. 1051** 1052** Parameters conn_id - connectino ID. 1053** p_read_multi - read multiple parameters. 1054** 1055** Returns None 1056** 1057*******************************************************************************/ 1058BTA_API extern void BTA_GATTC_ReadMultiple(UINT16 conn_id, tBTA_GATTC_MULTI *p_read_multi, 1059 tBTA_GATT_AUTH_REQ auth_req); 1060 1061 1062/******************************************************************************* 1063** 1064** Function BTA_GATTC_Refresh 1065** 1066** Description Refresh the server cache of the remote device 1067** 1068** Parameters remote_bda: remote device BD address. 1069** 1070** Returns void 1071** 1072*******************************************************************************/ 1073BTA_API extern void BTA_GATTC_Refresh(BD_ADDR remote_bda); 1074 1075 1076/******************************************************************************* 1077** 1078** Function BTA_GATTC_Listen 1079** 1080** Description Start advertisement to listen for connection request. 1081** 1082** Parameters client_if: server interface. 1083** start: to start or stop listening for connection 1084** remote_bda: remote device BD address, if listen to all device 1085** use NULL. 1086** 1087** Returns void 1088** 1089*******************************************************************************/ 1090BTA_API extern void BTA_GATTC_Listen(tBTA_GATTC_IF client_if, BOOLEAN start, BD_ADDR_PTR target_bda); 1091 1092/******************************************************************************* 1093** 1094** Function BTA_GATTC_Broadcast 1095** 1096** Description Start broadcasting (non-connectable advertisements) 1097** 1098** Parameters client_if: client interface. 1099** start: to start or stop listening for connection 1100** 1101** Returns void 1102** 1103*******************************************************************************/ 1104BTA_API extern void BTA_GATTC_Broadcast(tBTA_GATTC_IF client_if, BOOLEAN start); 1105 1106 1107/******************************************************************************* 1108** 1109** Function BTA_GATTC_ConfigureMTU 1110** 1111** Description Configure the MTU size in the GATT channel. This can be done 1112** only once per connection. 1113** 1114** Parameters conn_id: connection ID. 1115** mtu: desired MTU size to use. 1116** 1117** Returns void 1118** 1119*******************************************************************************/ 1120BTA_API extern void BTA_GATTC_ConfigureMTU (UINT16 conn_id, UINT16 mtu); 1121 1122/******************************************************************************* 1123** BTA GATT Server API 1124********************************************************************************/ 1125 1126/******************************************************************************* 1127** 1128** Function BTA_GATTS_Init 1129** 1130** Description This function is called to initalize GATTS module 1131** 1132** Parameters None 1133** 1134** Returns None 1135** 1136*******************************************************************************/ 1137 BTA_API extern void BTA_GATTS_Init(); 1138 1139/******************************************************************************* 1140** 1141** Function BTA_GATTS_Disable 1142** 1143** Description This function is called to disable GATTS module 1144** 1145** Parameters None. 1146** 1147** Returns None 1148** 1149*******************************************************************************/ 1150 BTA_API extern void BTA_GATTS_Disable(void); 1151 1152/******************************************************************************* 1153** 1154** Function BTA_GATTS_AppRegister 1155** 1156** Description This function is called to register application callbacks 1157** with BTA GATTS module. 1158** 1159** Parameters p_app_uuid - applicaiton UUID 1160** p_cback - pointer to the application callback function. 1161** 1162** Returns None 1163** 1164*******************************************************************************/ 1165 BTA_API extern void BTA_GATTS_AppRegister(tBT_UUID *p_app_uuid, tBTA_GATTS_CBACK *p_cback); 1166 1167 1168/******************************************************************************* 1169** 1170** Function BTA_GATTS_AppDeregister 1171** 1172** Description De-register with BTA GATT Server. 1173** 1174** Parameters server_if: server interface 1175** 1176** Returns void 1177** 1178*******************************************************************************/ 1179 BTA_API extern void BTA_GATTS_AppDeregister(tBTA_GATTS_IF server_if); 1180 1181/******************************************************************************* 1182** 1183** Function BTA_GATTS_CreateService 1184** 1185** Description Create a service. When service creation is done, a callback 1186** event BTA_GATTS_CREATE_SRVC_EVT is called to report status 1187** and service ID to the profile. The service ID obtained in 1188** the callback function needs to be used when adding included 1189** service and characteristics/descriptors into the service. 1190** 1191** Parameters server_if: server interface. 1192** p_service_uuid: service UUID. 1193** inst: instance ID number of this service. 1194** num_handle: numble of handle requessted for this service. 1195** is_primary: is this service a primary one or not. 1196** 1197** Returns void 1198** 1199*******************************************************************************/ 1200 BTA_API extern void BTA_GATTS_CreateService(tBTA_GATTS_IF server_if, tBT_UUID *p_service_uuid, 1201 UINT8 inst, UINT16 num_handle, BOOLEAN is_primary); 1202 1203/******************************************************************************* 1204** 1205** Function BTA_GATTS_AddIncludeService 1206** 1207** Description This function is called to add an included service. After included 1208** service is included, a callback event BTA_GATTS_ADD_INCL_SRVC_EVT 1209** is reported the included service ID. 1210** 1211** Parameters service_id: service ID to which this included service is to 1212** be added. 1213** included_service_id: the service ID to be included. 1214** 1215** Returns void 1216** 1217*******************************************************************************/ 1218 BTA_API extern void BTA_GATTS_AddIncludeService(UINT16 service_id, UINT16 included_service_id); 1219 1220/******************************************************************************* 1221** 1222** Function BTA_GATTS_AddCharacteristic 1223** 1224** Description This function is called to add a characteristic into a service. 1225** 1226** Parameters service_id: service ID to which this included service is to 1227** be added. 1228** p_char_uuid : Characteristic UUID. 1229** perm : Characteristic value declaration attribute permission. 1230** property : Characteristic Properties 1231** 1232** Returns None 1233** 1234*******************************************************************************/ 1235 BTA_API extern void BTA_GATTS_AddCharacteristic (UINT16 service_id, tBT_UUID *p_char_uuid, 1236 tBTA_GATT_PERM perm, tBTA_GATT_CHAR_PROP property); 1237 1238/******************************************************************************* 1239** 1240** Function BTA_GATTS_AddCharDescriptor 1241** 1242** Description This function is called to add characteristic descriptor. When 1243** it's done, a callback event BTA_GATTS_ADD_DESCR_EVT is called 1244** to report the status and an ID number for this descriptor. 1245** 1246** Parameters service_id: service ID to which this charatceristic descriptor is to 1247** be added. 1248** perm: descriptor access permission. 1249** p_descr_uuid: descriptor UUID. 1250** p_descr_params: descriptor value if it's read only descriptor. 1251** 1252** Returns returns status. 1253** 1254*******************************************************************************/ 1255 BTA_API extern void BTA_GATTS_AddCharDescriptor (UINT16 service_id, 1256 tBTA_GATT_PERM perm, 1257 tBT_UUID * p_descr_uuid); 1258 1259/******************************************************************************* 1260** 1261** Function BTA_GATTS_DeleteService 1262** 1263** Description This function is called to delete a service. When this is done, 1264** a callback event BTA_GATTS_DELETE_EVT is report with the status. 1265** 1266** Parameters service_id: service_id to be deleted. 1267** 1268** Returns returns none. 1269** 1270*******************************************************************************/ 1271 BTA_API extern void BTA_GATTS_DeleteService(UINT16 service_id); 1272 1273/******************************************************************************* 1274** 1275** Function BTA_GATTS_StartService 1276** 1277** Description This function is called to start a service. 1278** 1279** Parameters service_id: the service ID to be started. 1280** sup_transport: supported trasnport. 1281** 1282** Returns None. 1283** 1284*******************************************************************************/ 1285 BTA_API extern void BTA_GATTS_StartService(UINT16 service_id, tBTA_GATT_TRANSPORT sup_transport); 1286 1287/******************************************************************************* 1288** 1289** Function BTA_GATTS_StopService 1290** 1291** Description This function is called to stop a service. 1292** 1293** Parameters service_id - service to be topped. 1294** 1295** Returns None 1296** 1297*******************************************************************************/ 1298 BTA_API extern void BTA_GATTS_StopService(UINT16 service_id); 1299 1300/******************************************************************************* 1301** 1302** Function BTA_GATTS_HandleValueIndication 1303** 1304** Description This function is called to read a characteristics descriptor. 1305** 1306** Parameters conn_id - connection identifier. 1307** attr_id - attribute ID to indicate. 1308** data_len - indicate data length. 1309** p_data: data to indicate. 1310** need_confirm - if this indication expects a confirmation or not. 1311** 1312** Returns None 1313** 1314*******************************************************************************/ 1315 BTA_API extern void BTA_GATTS_HandleValueIndication (UINT16 conn_id, UINT16 attr_id, 1316 UINT16 data_len, 1317 UINT8 *p_data, 1318 BOOLEAN need_confirm); 1319 1320/******************************************************************************* 1321** 1322** Function BTA_GATTS_SendRsp 1323** 1324** Description This function is called to send a response to a request. 1325** 1326** Parameters conn_id - connection identifier. 1327** trans_id - transaction ID. 1328** status - response status 1329** p_msg - response data. 1330** 1331** Returns None 1332** 1333*******************************************************************************/ 1334 BTA_API extern void BTA_GATTS_SendRsp (UINT16 conn_id, UINT32 trans_id, 1335 tBTA_GATT_STATUS status, tBTA_GATTS_RSP *p_msg); 1336 1337 1338 1339 1340/******************************************************************************* 1341** 1342** Function BTA_GATTS_Open 1343** 1344** Description Open a direct open connection or add a background auto connection 1345** bd address 1346** 1347** Parameters server_if: server interface. 1348** remote_bda: remote device BD address. 1349** is_direct: direct connection or background auto connection 1350** 1351** Returns void 1352** 1353*******************************************************************************/ 1354 BTA_API extern void BTA_GATTS_Open(tBTA_GATTS_IF server_if, BD_ADDR remote_bda, 1355 BOOLEAN is_direct, tBTA_GATT_TRANSPORT transport); 1356 1357 1358/******************************************************************************* 1359** 1360** Function BTA_GATTS_CancelOpen 1361** 1362** Description Cancel a direct open connection or remove a background auto connection 1363** bd address 1364** 1365** Parameters server_if: server interface. 1366** remote_bda: remote device BD address. 1367** is_direct: direct connection or background auto connection 1368** 1369** Returns void 1370** 1371*******************************************************************************/ 1372 BTA_API extern void BTA_GATTS_CancelOpen(tBTA_GATTS_IF server_if, BD_ADDR remote_bda, BOOLEAN is_direct); 1373 1374 1375/******************************************************************************* 1376** 1377** Function BTA_GATTS_Close 1378** 1379** Description Close a connection a remote device. 1380** 1381** Parameters conn_id: connectino ID to be closed. 1382** 1383** Returns void 1384** 1385*******************************************************************************/ 1386 BTA_API extern void BTA_GATTS_Close(UINT16 conn_id); 1387 1388/******************************************************************************* 1389** 1390** Function BTA_GATTS_Listen 1391** 1392** Description Start advertisement to listen for connection request for a 1393** GATT server 1394** 1395** Parameters server_if: server interface. 1396** start: to start or stop listening for connection 1397** remote_bda: remote device BD address, if listen to all device 1398** use NULL. 1399** 1400** Returns void 1401** 1402*******************************************************************************/ 1403 BTA_API extern void BTA_GATTS_Listen(tBTA_GATTS_IF server_if, BOOLEAN start, 1404 BD_ADDR_PTR target_bda); 1405 1406 1407#ifdef __cplusplus 1408 1409} 1410#endif 1411 1412 1413#endif /* BTA_GATT_API_H */ 1414 1415