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 */ 53 typedef 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 107 typedef 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 149 typedef UINT8 tBTA_GATTC_EVT; 150 151 typedef tGATT_IF tBTA_GATTC_IF; 152 153 typedef 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 */ 165 typedef 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 */ 171 typedef UINT16 tBTA_GATT_SVR_CHAR_CONFIG; 172 173 /* Characteristic Aggregate Format attribute value 174 */ 175 #define BTA_GATT_AGGR_HANDLE_NUM_MAX 10 176 typedef struct 177 { 178 UINT8 num_handle; 179 UINT16 handle_list[BTA_GATT_AGGR_HANDLE_NUM_MAX]; 180 } tBTA_GATT_CHAR_AGGRE; 181 typedef tGATT_VALID_RANGE tBTA_GATT_VALID_RANGE; 182 183 typedef 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 193 typedef 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 */ 204 typedef UINT16 tBTA_GATT_REASON; 205 206 typedef struct 207 { 208 tBTA_GATT_ID id; 209 BOOLEAN is_primary; 210 }tBTA_GATT_SRVC_ID; 211 212 typedef struct 213 { 214 tBTA_GATT_SRVC_ID srvc_id; 215 tBTA_GATT_ID char_id; 216 }tBTA_GATTC_CHAR_ID; 217 218 typedef struct 219 { 220 tBTA_GATTC_CHAR_ID char_id; 221 tBTA_GATT_ID descr_id; 222 }tBTA_GATTC_CHAR_DESCR_ID; 223 224 typedef 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 232 typedef UINT8 tBTA_GATT_ID_TYPE; 233 234 typedef 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 247 typedef 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 260 typedef tGATT_AUTH_REQ tBTA_GATT_AUTH_REQ; 261 262 enum 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 }; 269 typedef UINT8 tBTA_GATTC_ATTR_TYPE; 270 271 272 typedef 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 */ 284 typedef 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 293 typedef 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 299 typedef union 300 { 301 tBTA_GATT_CHAR_AGGRE_VALUE aggre_value; 302 tBTA_GATT_UNFMT unformat; 303 304 }tBTA_GATT_READ_VAL; 305 306 typedef 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 316 typedef 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 325 typedef struct 326 { 327 UINT16 conn_id; 328 tBTA_GATT_STATUS status; 329 }tBTA_GATTC_EXEC_CMPL; 330 331 typedef struct 332 { 333 UINT16 conn_id; 334 tBTA_GATT_STATUS status; 335 }tBTA_GATTC_SEARCH_CMPL; 336 337 typedef struct 338 { 339 UINT16 conn_id; 340 tBTA_GATT_SRVC_ID service_uuid; 341 }tBTA_GATTC_SRVC_RES; 342 343 typedef struct 344 { 345 UINT16 conn_id; 346 tBTA_GATT_STATUS status; 347 UINT16 mtu; 348 }tBTA_GATTC_CFG_MTU; 349 350 typedef 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 360 typedef 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 369 typedef 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 380 typedef struct 381 { 382 UINT16 conn_id; 383 BOOLEAN congested; /* congestion indicator */ 384 }tBTA_GATTC_CONGEST; 385 386 // btla-specific ++ 387 typedef 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 396 typedef struct 397 { 398 tBTA_GATTC_IF client_if; 399 BD_ADDR remote_bda; 400 }tBTA_GATTC_ENC_CMPL_CB; 401 402 typedef 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 */ 422 typedef void (tBTA_GATTC_ENB_CBACK)(tBTA_GATT_STATUS status); 423 424 /* Client callback function */ 425 typedef 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 452 typedef UINT8 tBTA_GATTS_EVT; 453 typedef 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 */ 465 typedef 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 */ 480 typedef 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 */ 488 typedef 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 503 typedef tGATTS_SRV_CHG_CMD tBTA_GATTS_SRV_CHG_CMD; 504 505 typedef tGATTS_SRV_CHG tBTA_GATTS_SRV_CHG; 506 typedef tGATTS_SRV_CHG_REQ tBTA_GATTS_SRV_CHG_REQ; 507 typedef 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 512 typedef UINT8 tBTA_GATT_TRANSPORT; 513 514 /* attribute value */ 515 typedef tGATT_VALUE tBTA_GATT_VALUE; 516 517 /* attribute response data */ 518 typedef 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 523 typedef tGATT_EXEC_FLAG tBTA_GATT_EXEC_FLAG; 524 525 /* read request always based on UUID */ 526 typedef tGATT_READ_REQ tTA_GBATT_READ_REQ; 527 528 /* write request data */ 529 typedef tGATT_WRITE_REQ tBTA_GATT_WRITE_REQ; 530 531 /* callback data for server access request from client */ 532 typedef tGATTS_DATA tBTA_GATTS_REQ_DATA; 533 534 typedef 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 543 typedef 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 553 typedef 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 565 typedef 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 576 typedef struct 577 { 578 tBTA_GATTS_IF server_if; 579 UINT16 service_id; 580 tBTA_GATT_STATUS status; 581 }tBTA_GATTS_SRVC_OPER; 582 583 584 typedef 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 593 typedef struct 594 { 595 UINT16 conn_id; 596 BOOLEAN congested; /* report channel congestion indicator */ 597 }tBTA_GATTS_CONGEST; 598 599 typedef 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 */ 606 typedef 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 */ 622 typedef void (tBTA_GATTS_ENB_CBACK)(tBTA_GATT_STATUS status); 623 624 /* Server callback function */ 625 typedef void (tBTA_GATTS_CBACK)(tBTA_GATTS_EVT event, tBTA_GATTS *p_data); 626 627 /***************************************************************************** 628 ** External Function Declarations 629 *****************************************************************************/ 630 631 #ifdef __cplusplus 632 extern "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 *******************************************************************************/ 651 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 *******************************************************************************/ 666 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 *******************************************************************************/ 680 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 *******************************************************************************/ 696 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 *******************************************************************************/ 713 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 *******************************************************************************/ 726 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 *******************************************************************************/ 744 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 *******************************************************************************/ 764 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 *******************************************************************************/ 789 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 *******************************************************************************/ 812 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 *******************************************************************************/ 834 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 *******************************************************************************/ 857 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 *******************************************************************************/ 880 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 *******************************************************************************/ 898 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 *******************************************************************************/ 914 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 *******************************************************************************/ 933 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 *******************************************************************************/ 954 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 *******************************************************************************/ 972 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 *******************************************************************************/ 987 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 *******************************************************************************/ 1005 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 *******************************************************************************/ 1024 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 *******************************************************************************/ 1043 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 *******************************************************************************/ 1058 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 *******************************************************************************/ 1073 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 *******************************************************************************/ 1090 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 *******************************************************************************/ 1104 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 *******************************************************************************/ 1120 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 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 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 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 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 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 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 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 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 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 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 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 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 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 ** Function BTA_GATTS_Open 1341 ** 1342 ** Description Open a direct open connection or add a background auto connection 1343 ** bd address 1344 ** 1345 ** Parameters server_if: server interface. 1346 ** remote_bda: remote device BD address. 1347 ** is_direct: direct connection or background auto connection 1348 ** 1349 ** Returns void 1350 ** 1351 *******************************************************************************/ 1352 extern void BTA_GATTS_Open(tBTA_GATTS_IF server_if, BD_ADDR remote_bda, 1353 BOOLEAN is_direct, tBTA_GATT_TRANSPORT transport); 1354 1355 1356 /******************************************************************************* 1357 ** 1358 ** Function BTA_GATTS_CancelOpen 1359 ** 1360 ** Description Cancel a direct open connection or remove a background auto connection 1361 ** bd address 1362 ** 1363 ** Parameters server_if: server interface. 1364 ** remote_bda: remote device BD address. 1365 ** is_direct: direct connection or background auto connection 1366 ** 1367 ** Returns void 1368 ** 1369 *******************************************************************************/ 1370 extern void BTA_GATTS_CancelOpen(tBTA_GATTS_IF server_if, BD_ADDR remote_bda, BOOLEAN is_direct); 1371 1372 1373 /******************************************************************************* 1374 ** 1375 ** Function BTA_GATTS_Close 1376 ** 1377 ** Description Close a connection a remote device. 1378 ** 1379 ** Parameters conn_id: connectino ID to be closed. 1380 ** 1381 ** Returns void 1382 ** 1383 *******************************************************************************/ 1384 extern void BTA_GATTS_Close(UINT16 conn_id); 1385 1386 /******************************************************************************* 1387 ** 1388 ** Function BTA_GATTS_Listen 1389 ** 1390 ** Description Start advertisement to listen for connection request for a 1391 ** GATT server 1392 ** 1393 ** Parameters server_if: server interface. 1394 ** start: to start or stop listening for connection 1395 ** remote_bda: remote device BD address, if listen to all device 1396 ** use NULL. 1397 ** 1398 ** Returns void 1399 ** 1400 *******************************************************************************/ 1401 extern void BTA_GATTS_Listen(tBTA_GATTS_IF server_if, BOOLEAN start, 1402 BD_ADDR_PTR target_bda); 1403 1404 1405 #ifdef __cplusplus 1406 1407 } 1408 #endif 1409 1410 1411 #endif /* BTA_GATT_API_H */ 1412