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