1 /****************************************************************************** 2 * 3 * Copyright (C) 2009-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 #ifndef GAP_API_H 20 #define GAP_API_H 21 22 #include "profiles_api.h" 23 #include "btm_api.h" 24 #include "l2c_api.h" 25 26 /***************************************************************************** 27 ** Constants 28 *****************************************************************************/ 29 30 /*** GAP Error and Status Codes ***/ 31 #define GAP_UNSUPPORTED (GAP_ERR_GRP + 0x01) /* Unsupported call */ 32 #define GAP_EOINQDB (GAP_ERR_GRP + 0x02) /* End of inquiry database marker */ 33 #define GAP_ERR_BUSY (GAP_ERR_GRP + 0x03) /* The requested function was busy */ 34 #define GAP_ERR_NO_CTRL_BLK (GAP_ERR_GRP + 0x04) /* No control blocks available */ 35 #define GAP_ERR_STARTING_CMD (GAP_ERR_GRP + 0x05) /* Error occurred while initiating the command */ 36 #define GAP_NO_BDADDR_REC (GAP_ERR_GRP + 0x06) /* No Inquiry DB record for BD_ADDR */ 37 #define GAP_ERR_ILL_MODE (GAP_ERR_GRP + 0x07) /* An illegal mode parameter was detected */ 38 #define GAP_ERR_ILL_INQ_TIME (GAP_ERR_GRP + 0x08) /* An illegal time parameter was detected */ 39 #define GAP_ERR_ILL_PARM (GAP_ERR_GRP + 0x09) /* An illegal parameter was detected */ 40 #define GAP_ERR_REM_NAME (GAP_ERR_GRP + 0x0a) /* Error starting the remote device name request */ 41 #define GAP_CMD_INITIATED (GAP_ERR_GRP + 0x0b) /* The GAP command was started (result pending) */ 42 #define GAP_DEVICE_NOT_UP (GAP_ERR_GRP + 0x0c) /* The device was not up; the request was not executed */ 43 #define GAP_BAD_BD_ADDR (GAP_ERR_GRP + 0x0d) /* The bd addr passed in was not found or invalid */ 44 45 #define GAP_ERR_BAD_HANDLE (GAP_ERR_GRP + 0x0e) /* Bad GAP handle */ 46 #define GAP_ERR_BUF_OFFSET (GAP_ERR_GRP + 0x0f) /* Buffer offset invalid */ 47 #define GAP_ERR_BAD_STATE (GAP_ERR_GRP + 0x10) /* Connection is in invalid state */ 48 #define GAP_NO_DATA_AVAIL (GAP_ERR_GRP + 0x11) /* No data available */ 49 #define GAP_ERR_CONGESTED (GAP_ERR_GRP + 0x12) /* BT stack is congested */ 50 #define GAP_ERR_SECURITY (GAP_ERR_GRP + 0x13) /* Security failed */ 51 52 #define GAP_ERR_PROCESSING (GAP_ERR_GRP + 0x14) /* General error processing BTM request */ 53 #define GAP_ERR_TIMEOUT (GAP_ERR_GRP + 0x15) /* Timeout occurred while processing cmd */ 54 55 /** GAP Events - definitions of GAP return events ***/ 56 #define GAP_EVT_INQUIRY_RESULTS 0x0001 57 #define GAP_EVT_INQUIRY_COMPLETE 0x0002 58 #define GAP_EVT_DISCOVERY_COMPLETE 0x0003 59 #define GAP_EVT_REM_NAME_COMPLETE 0x0004 60 #define GAP_EVT_FIND_ADDR_COMPLETE 0x0005 61 62 #define GAP_EVT_CONN_OPENED 0x0100 63 #define GAP_EVT_CONN_CLOSED 0x0101 64 #define GAP_EVT_CONN_DATA_AVAIL 0x0102 65 #define GAP_EVT_CONN_CONGESTED 0x0103 66 #define GAP_EVT_CONN_UNCONGESTED 0x0104 67 68 /* Values for 'chan_mode_mask' field */ 69 /* GAP_ConnOpen() - optional channels to negotiate */ 70 #define GAP_FCR_CHAN_OPT_BASIC L2CAP_FCR_CHAN_OPT_BASIC 71 #define GAP_FCR_CHAN_OPT_ERTM L2CAP_FCR_CHAN_OPT_ERTM 72 #define GAP_FCR_CHAN_OPT_STREAM L2CAP_FCR_CHAN_OPT_STREAM 73 74 /*** discovery of devices ***/ 75 #define GAP_INQUIRY_NONE BTM_INQUIRY_NONE 76 #define GAP_GENERAL_INQUIRY BTM_GENERAL_INQUIRY 77 #define GAP_LIMITED_INQUIRY BTM_LIMITED_INQUIRY 78 79 #if BLE_INCLUDED == TRUE 80 #define GAP_BLE_INQUIRY_NONE BTM_BLE_INQUIRY_NONE 81 #define GAP_BLE_GENERAL_INQUIRY BTM_BLE_GENERAL_INQUIRY 82 #define GAP_BLE_LIMITED_INQUIRY BTM_BLE_LIMITED_INQUIRY 83 #endif 84 85 /*** discoverable modes ***/ 86 #define GAP_NON_DISCOVERABLE BTM_NON_DISCOVERABLE 87 #define GAP_LIMITED_DISCOVERABLE BTM_LIMITED_DISCOVERABLE 88 #define GAP_GENERAL_DISCOVERABLE BTM_GENERAL_DISCOVERABLE 89 90 /*** Inquiry Filter Condition types (The values are defined in btm_api.h) ***/ 91 #define GAP_CLR_INQUIRY_FILTER BTM_CLR_INQUIRY_FILTER /* Inquiry Filtering is turned off */ 92 #define GAP_FILTER_COND_DEVICE_CLASS BTM_FILTER_COND_DEVICE_CLASS /* Filter on device class */ 93 #define GAP_FILTER_COND_BD_ADDR BTM_FILTER_COND_BD_ADDR /* Filter on device addr */ 94 95 /*** connectability ***/ 96 #define GAP_NON_CONNECTABLE BTM_NON_CONNECTABLE 97 #define GAP_CONNECTABLE BTM_CONNECTABLE 98 99 /*** security features ***/ 100 #define GAP_DISALLOW_PAIRING 0 101 #define GAP_ALLOW_PAIRING 1 102 103 /*** class of device settings ***/ 104 #define GAP_SET_COD_MAJOR_MINOR 0x01 105 #define GAP_SET_COD_SERVICE_CLASS 0x02 /* only set the bits in the input */ 106 #define GAP_CLR_COD_SERVICE_CLASS 0x04 107 #define GAP_SET_COD_ALL 0x08 /* take service class as the input (may clear some set bits!!) */ 108 #define GAP_INIT_COD 0x0a 109 110 /*** used in connection variables and functions ***/ 111 #define GAP_INVALID_HANDLE 0xFFFF 112 113 /* This is used to change the criteria for AMP */ 114 #define GAP_PROTOCOL_ID (UUID_PROTOCOL_UDP) 115 116 /* slave preferred parameter, minimum connection interval */ 117 #ifndef GAP_SL_CONN_INT_MIN 118 #define GAP_SL_CONN_INT_MIN 6 119 #endif 120 /* slave preferred parameter, maximum connection interval */ 121 #ifndef GAP_SL_CONN_INT_MAX 122 #define GAP_SL_CONN_INT_MAX 20 123 #endif 124 /* slave preferred parameter */ 125 #ifndef GAP_SL_LATENCY 126 #define GAP_SL_LATENCY 2 127 #endif 128 129 #ifndef GAP_BLE_PRIVACY_RECONN_ADDR_PERM 130 #define GAP_BLE_PRIVACY_RECONN_ADDR_PERM (GATT_PERM_READ|GATT_PERM_WRITE) 131 #endif 132 133 #ifndef GAP_PREFER_CONN_INT_MAX 134 #define GAP_PREFER_CONN_INT_MAX BTM_BLE_CONN_INT_MIN 135 #endif 136 137 #ifndef GAP_PREFER_CONN_INT_MIN 138 #define GAP_PREFER_CONN_INT_MIN BTM_BLE_CONN_INT_MIN 139 #endif 140 141 #ifndef GAP_PREFER_CONN_LATENCY 142 #define GAP_PREFER_CONN_LATENCY 0 143 #endif 144 145 #ifndef GAP_PREFER_CONN_SP_TOUT 146 #define GAP_PREFER_CONN_SP_TOUT 2000 147 #endif 148 149 /***************************************************************************** 150 ** Type Definitions 151 *****************************************************************************/ 152 /* 153 ** Callback function for connection services 154 */ 155 typedef void (tGAP_CONN_CALLBACK) (UINT16 gap_handle, UINT16 event); 156 157 /* 158 ** Define the callback function prototypes. Parameters are specific 159 ** to each event and are described below 160 */ 161 typedef void (tGAP_CALLBACK) (UINT16 event, void *p_data); 162 163 typedef tBTM_REMOTE_DEV_NAME tGAP_REMOTE_DEV_NAME; /* see btm_api.h */ 164 typedef tBTM_INQ_PARMS tGAP_INQ_PARMS; /* see btm_api.h */ 165 typedef tBTM_INQ_RESULTS tGAP_INQ_RESULTS; /* see btm_api.h */ 166 167 /* Inquiry results structure */ 168 typedef struct 169 { 170 UINT16 status; 171 UINT8 num_results; 172 } tGAP_INQ_CMPL; 173 174 /* Definition of the GAP_FindAddrByName results structure */ 175 typedef struct 176 { 177 UINT16 status; 178 BD_ADDR bd_addr; 179 tBTM_BD_NAME devname; 180 } tGAP_FINDADDR_RESULTS; 181 182 /** for GAP_SetDeviceClass() **/ 183 /* Define Class of Device related values 184 * 185 * >>> changes to this type need to also be made to tHSP_COD in hsp2_int.h 186 */ 187 typedef struct 188 { 189 UINT8 minor; 190 UINT8 major; 191 UINT16 service; 192 } tGAP_COD; 193 194 /*** Constants and functions for device features ***/ 195 typedef struct 196 { 197 UINT8 lmp_version; 198 UINT16 mfc_name; 199 UINT16 lmp_subversion; 200 } tGAP_LMP_VERSION; 201 202 typedef struct 203 { 204 UINT8 lmp_features[8]; 205 } tGAP_LMP_FEATURES; 206 207 typedef struct 208 { 209 UINT16 int_min; 210 UINT16 int_max; 211 UINT16 latency; 212 UINT16 sp_tout; 213 }tGAP_BLE_PREF_PARAM; 214 215 typedef union 216 { 217 tGAP_BLE_PREF_PARAM conn_param; 218 BD_ADDR reconn_bda; 219 UINT16 icon; 220 UINT8 *p_dev_name; 221 UINT8 privacy; 222 223 }tGAP_BLE_ATTR_VALUE; 224 225 typedef void (tGAP_BLE_DEV_NAME_CBACK)(BOOLEAN status, BD_ADDR addr, UINT16 length, char *p_name); 226 227 typedef void (tGAP_BLE_RECONN_ADDR_CBACK)(BOOLEAN status, BD_ADDR addr, BD_ADDR reconn_bda); 228 229 /***************************************************************************** 230 ** External Function Declarations 231 *****************************************************************************/ 232 #ifdef __cplusplus 233 extern "C" 234 { 235 #endif 236 237 /******************************************************************************* 238 ** 239 ** Function GAP_SetDiscoverableMode 240 ** 241 ** Description This function is called to allow or disallow a service to 242 ** discovered (Inquiry Scans). 243 ** 244 ** Returns BT_PASS (0) if successful, 245 ** GAP_ERR_ILL_PARM if a bad parameter is detected, 246 ** GAP_DEVICE_NOT_UP if the device is not active, 247 ** GAP_ERR_PROCESSING if not enough resources to carry out request 248 ** 249 *******************************************************************************/ 250 GAP_API extern UINT16 GAP_SetDiscoverableMode (UINT16 mode, UINT16 duration, 251 UINT16 interval); 252 253 /******************************************************************************* 254 ** 255 ** Function GAP_ReadDiscoverableMode 256 ** 257 ** Description This function is called to retrieve the current discoverable 258 ** mode for the local device. 259 ** 260 ** Returns GAP_NON_DISCOVERABLE, GAP_LIMITED_DISCOVERABLE, or 261 ** GAP_GENERAL_DISCOVERABLE 262 ** 263 *******************************************************************************/ 264 GAP_API extern UINT16 GAP_ReadDiscoverableMode (UINT16 *duration, UINT16 *interval); 265 266 /******************************************************************************* 267 ** 268 ** Function GAP_StartInquiry 269 ** 270 ** Description This function initiates a single inquiry. 271 ** 272 ** Returns BT_PASS (0) if successful, 273 ** GAP_ERR_ILL_MODE if a bad mode parameter was passed 274 ** GAP_ERR_ILL_INQ_TIME if a bad interval or duration was passed 275 ** GAP_ERR_NO_CTRL_BLK if out of control blocks 276 ** GAP_ERR_ILL_PARM if a bad parameter was detected in BTM 277 ** GAP_ERR_BUSY if the device already has an iquiry active 278 ** GAP_DEVICE_NOT_UP if the device is not initialized yet 279 ** GAP_ERR_PROCESSING if any other BTM error was returned 280 ** 281 *******************************************************************************/ 282 GAP_API extern UINT16 GAP_StartInquiry (tGAP_INQ_PARMS *p_inq_parms, 283 tGAP_CALLBACK *p_results_cb, 284 tGAP_CALLBACK *p_cmpl_cb); 285 286 /******************************************************************************* 287 ** 288 ** Function GAP_StartPeriodicInquiry 289 ** 290 ** Description This function initiates a periodic inquiry. 291 ** 292 ** Returns BT_PASS (0) if successful, 293 ** GAP_ERR_ILL_MODE if a bad mode parameter was passed 294 ** GAP_ERR_ILL_INQ_TIME if a bad interval or duration was passed 295 ** GAP_ERR_NO_CTRL_BLK if out of control blocks 296 ** GAP_ERR_ILL_PARM if a bad parameter was detected in BTM 297 ** GAP_ERR_BUSY if the device already has an iquiry active 298 ** GAP_DEVICE_NOT_UP if the device is not initialized yet 299 ** GAP_ERR_PROCESSING if any other BTM error was returned 300 ** 301 *******************************************************************************/ 302 GAP_API extern UINT16 GAP_StartPeriodicInquiry (tGAP_INQ_PARMS *p_inq_parms, 303 UINT16 min_time, 304 UINT16 max_time, 305 tGAP_CALLBACK *p_results_cb); 306 307 /******************************************************************************* 308 ** 309 ** Function GAP_CancelInquiry 310 ** 311 ** Description This function cancels a single inquiry (if in progress) 312 ** 313 ** Returns BOOLEAN (TRUE if successful, otherwise FALSE) 314 ** 315 *******************************************************************************/ 316 GAP_API extern UINT16 GAP_CancelInquiry(void); 317 318 /******************************************************************************* 319 ** 320 ** Function GAP_CancelPeriodicInquiry 321 ** 322 ** Description This function cancels a periodic inquiry (if in progress) 323 ** 324 ** Returns BOOLEAN: (TRUE if successful, otherwise FALSE) 325 ** 326 *******************************************************************************/ 327 GAP_API extern UINT16 GAP_CancelPeriodicInquiry(void); 328 329 /******************************************************************************* 330 ** 331 ** Function GAP_GetFirstInquiryResult 332 ** 333 ** Description This function retrieves the first valid inquiry result. 334 ** 335 ** Returns BT_PASS (0) if successful, or a non-zero error code 336 ** GAP_EOINQDB if no more entries in the database. 337 ** 338 *******************************************************************************/ 339 GAP_API extern UINT16 GAP_GetFirstInquiryResult(tGAP_INQ_RESULTS *p_results); 340 341 /******************************************************************************* 342 ** 343 ** Function GAP_GetNextInquiryResult 344 ** 345 ** Description This function retrieves the next valid inquiry result. 346 ** 347 ** Returns BT_PASS (0) if successful, or a non-zero status code 348 ** GAP_EOINQDB if no more entries in the database. 349 ** 350 *******************************************************************************/ 351 GAP_API extern UINT16 GAP_GetNextInquiryResult(tGAP_INQ_RESULTS *p_results); 352 353 /******************************************************************************* 354 ** 355 ** Function GAP_FindAddrByName 356 ** 357 ** Description This function is called to retrieve a device address given 358 ** a device name. It first looks in the current local inquiry 359 ** database for the device with the specified name. If not found 360 ** it initiates a general inquiry. Upon completion, it retrieves 361 ** the name for each device until a match is found or all devices 362 ** have been checked. Note: This process can take a while to 363 ** complete. 364 ** 365 ** Returns BT_PASS if the name was immediately available. (BD_ADDR is returned) 366 ** GAP_CMD_INITIATED if an inquiry has been initiated 367 ** 368 *******************************************************************************/ 369 GAP_API extern UINT16 GAP_FindAddrByName (BD_NAME devname, 370 tGAP_INQ_PARMS *p_inq_parms, 371 tGAP_CALLBACK *p_addr_cb, 372 BD_ADDR bd_addr); 373 374 /******************************************************************************* 375 ** 376 ** Function GAP_SetConnectableMode 377 ** 378 ** Description This function is called to allow or disallow a 379 ** connections on the local device. 380 ** 381 ** Returns BT_PASS (0) if successful, 382 ** GAP_ERR_ILL_PARM if a bad parameter is detected, 383 ** GAP_DEVICE_NOT_UP if the device is not active, 384 ** GAP_ERR_PROCESSING if not enough resources to carry out request 385 ** 386 *******************************************************************************/ 387 GAP_API extern UINT16 GAP_SetConnectableMode (UINT16 mode, UINT16 duration, 388 UINT16 interval); 389 390 /******************************************************************************* 391 ** 392 ** Function GAP_ReadConnectableMode 393 ** 394 ** Description This function is called to retrieve the current connectability 395 ** mode for the local device. 396 ** 397 ** Returns GAP_NON_CONNECTABLE, GAP_CONNECTABLE 398 ** 399 *******************************************************************************/ 400 GAP_API extern UINT16 GAP_ReadConnectableMode (UINT16 *duration, UINT16 *interval); 401 402 /******************************************************************************* 403 ** 404 ** Function GAP_SetSecurityMode 405 ** 406 ** Description Set security mode for the device (Service or Link level) 407 ** 408 ** Returns void 409 ** 410 *******************************************************************************/ 411 GAP_API extern void GAP_SetSecurityMode (UINT8 sec_mode); 412 413 /******************************************************************************* 414 ** 415 ** Function GAP_SecRegister 416 ** 417 ** Description Application calls this function to register for 418 ** security services. 419 ** 420 ** Returns TRUE if registered OK, else FALSE 421 ** 422 *******************************************************************************/ 423 GAP_API extern BOOLEAN GAP_SecRegister (tBTM_APPL_INFO *p_cb_info); 424 425 /******************************************************************************* 426 ** 427 ** Function GAP_SetPairableMode 428 ** 429 ** Description This function is called to allow or disallow pairing 430 ** on the local device. 431 ** 432 ** Returns BT_PASS (0) if successful, or a non-zero error code 433 ** 434 *******************************************************************************/ 435 GAP_API extern UINT16 GAP_SetPairableMode (UINT16 mode, BOOLEAN connect_only_paired); 436 437 /******************************************************************************* 438 ** 439 ** Function GAP_Bond 440 ** 441 ** Description This function is called to initiate bonding with peer device 442 ** 443 ** Parameters: bd_addr - Address of the device to bond 444 ** pin_len - length in bytes of the PIN Code 445 ** p_pin - pointer to array with the PIN Code 446 ** trusted_mask - bitwise OR of trusted services (array of UINT32) 447 ** 448 ** Returns tBTM_STATUS - BTM_CMD_STARTED of successfully initiated 449 ** 450 *******************************************************************************/ 451 GAP_API extern UINT8 GAP_Bond (BD_ADDR bd_addr, UINT8 pin_len, 452 UINT8 *p_pin, UINT32 trusted_mask[]); 453 454 /******************************************************************************* 455 ** 456 ** Function GAP_PinRsp 457 ** 458 ** Description This function is called from UI after Security Manager submitted 459 ** PIN code request. 460 ** 461 ** Returns void 462 ** 463 *******************************************************************************/ 464 GAP_API extern void GAP_PinRsp (BD_ADDR bd_addr, UINT8 res, UINT8 pin_len, 465 UINT8 *p_pin, UINT32 trusted_mask[]); 466 467 /******************************************************************************* 468 ** 469 ** Function GAP_AuthorizeRsp 470 ** 471 ** Description This function is called from UI after Security Manager submitted 472 ** an authorization request. 473 ** 474 ** Returns void 475 ** 476 *******************************************************************************/ 477 GAP_API extern void GAP_AuthorizeRsp (BD_ADDR bd_addr, UINT8 res, 478 UINT32 trusted_mask[]); 479 480 /******************************************************************************* 481 ** 482 ** Function GAP_SetDeviceClass 483 ** 484 ** Description This function updates the local Device Class. 485 ** 486 ** Returns BT_PASS (0) if successful, 487 ** GAP_ERR_BUSY if a discovery is already in progress 488 ** GAP_ERR_ILL_PARM if an illegal parameter was detected 489 ** GAP_ERR_PROCESSING if any other BTM error has been returned 490 ** 491 *******************************************************************************/ 492 GAP_API extern UINT16 GAP_SetDeviceClass(tGAP_COD *p_cod, UINT8 cmd); 493 494 /******************************************************************************* 495 ** 496 ** Function GAP_ReadDeviceClass 497 ** 498 ** Description This function reads the current local Device Class setting. 499 ** 500 ** Returns BT_PASS 501 ** 502 *******************************************************************************/ 503 GAP_API extern UINT16 GAP_ReadDeviceClass(tGAP_COD *p_cod); 504 505 /******************************************************************************* 506 ** 507 ** Function GAP_ReadLocalDeviceInfo 508 ** 509 ** Description This function retrieves local device information to the caller. 510 ** NOTE: Return parameters that are set to NULL are not retrieved. 511 ** 512 ** Returns BT_PASS (0) if successful, or a non-zero error code 513 ** 514 *******************************************************************************/ 515 GAP_API extern UINT16 GAP_ReadLocalDeviceInfo( UINT8 *name, BD_ADDR *addr, 516 tGAP_LMP_VERSION *verinfo, 517 tGAP_LMP_FEATURES *features); 518 519 520 /******************************************************************************* 521 ** 522 ** Function GAP_GetRemoteDeviceName 523 ** 524 ** Description The remote name is retrieved from the specified remote device. If 525 ** GAP_CMD_INITIATED is returned by the function, the command was 526 ** successfully sent to the controller. The GAP_EVT_NAME_RESP event 527 ** is passed in the callback when the remote device name has been retrieved. 528 ** 529 ** Returns 530 ** GAP_CMD_INITIATED if remote search successfully initiated 531 ** GAP_ERR_BUSY if a remote name request is already in progress, 532 ** GAP_ERR_NO_CTRL_BLK if out of control blocks (too many commands pending) 533 ** GAP_BAD_BD_ADDR if the device address is bad, 534 ** GAP_DEVICE_NOT_UP if the device has not been initialized yet 535 ** GAP_ERR_PROCESSING if any other BTM error has been returned 536 ** 537 *******************************************************************************/ 538 GAP_API extern UINT16 GAP_GetRemoteDeviceName (BD_ADDR addr, tGAP_CALLBACK *callback); 539 540 /*** Functions for L2CAP connection interface ***/ 541 /******************************************************************************* 542 ** 543 ** Function GAP_ConnOpen 544 ** 545 ** Description This function is called to open a generic L2CAP connection. 546 ** 547 ** Returns handle of the connection if successful, else GAP_INVALID_HANDLE 548 ** 549 *******************************************************************************/ 550 GAP_API extern UINT16 GAP_ConnOpen (char *p_serv_name, UINT8 service_id, BOOLEAN is_server, 551 BD_ADDR p_rem_bda, UINT16 psm, tL2CAP_CFG_INFO *p_cfg, 552 UINT16 security, UINT8 chan_mode_mask, tGAP_CONN_CALLBACK *p_cb); 553 554 /******************************************************************************* 555 ** 556 ** Function GAP_ConnClose 557 ** 558 ** Description This function is called to close a connection. 559 ** 560 ** Returns BT_PASS - closed OK 561 ** GAP_ERR_BAD_HANDLE - invalid handle 562 ** 563 *******************************************************************************/ 564 GAP_API extern UINT16 GAP_ConnClose (UINT16 gap_handle); 565 566 /******************************************************************************* 567 ** 568 ** Function GAP_ConnReadData 569 ** 570 ** Description GKI buffer unaware application will call this function 571 ** after receiving GAP_EVT_RXDATA event. A data copy is made 572 ** into the receive buffer parameter. 573 ** 574 ** Returns BT_PASS - data read 575 ** GAP_ERR_BAD_HANDLE - invalid handle 576 ** GAP_NO_DATA_AVAIL - no data available 577 ** 578 *******************************************************************************/ 579 GAP_API extern UINT16 GAP_ConnReadData (UINT16 gap_handle, UINT8 *p_data, 580 UINT16 max_len, UINT16 *p_len); 581 582 /******************************************************************************* 583 ** 584 ** Function GAP_GetRxQueueCnt 585 ** 586 ** Description This function return number of bytes on the rx queue. 587 ** 588 ** Parameters: handle - Handle returned in the GAP_ConnOpen 589 ** p_rx_queue_count - Pointer to return queue count in. 590 ** 591 ** 592 *******************************************************************************/ 593 GAP_API extern int GAP_GetRxQueueCnt (UINT16 handle, UINT32 *p_rx_queue_count); 594 595 /******************************************************************************* 596 ** 597 ** Function GAP_ConnBTRead 598 ** 599 ** Description GKI buffer aware applications will call this function after 600 ** receiving an GAP_EVT_RXDATA event to process the incoming 601 ** data buffer. 602 ** 603 ** Returns BT_PASS - data read 604 ** GAP_ERR_BAD_HANDLE - invalid handle 605 ** GAP_NO_DATA_AVAIL - no data available 606 ** 607 *******************************************************************************/ 608 GAP_API extern UINT16 GAP_ConnBTRead (UINT16 gap_handle, BT_HDR **pp_buf); 609 610 /******************************************************************************* 611 ** 612 ** Function GAP_ConnBTWrite 613 ** 614 ** Description GKI buffer aware applications can call this function to write data 615 ** by passing a pointer to the GKI buffer of data. 616 ** 617 ** Returns BT_PASS - data read 618 ** GAP_ERR_BAD_HANDLE - invalid handle 619 ** GAP_ERR_BAD_STATE - connection not established 620 ** GAP_INVALID_BUF_OFFSET - buffer offset is invalid 621 *******************************************************************************/ 622 GAP_API extern UINT16 GAP_ConnBTWrite (UINT16 gap_handle, BT_HDR *p_buf); 623 624 /******************************************************************************* 625 ** 626 ** Function GAP_ConnWriteData 627 ** 628 ** Description GKI buffer unaware application will call this function 629 ** to send data to the connection. A data copy is made into a GKI 630 ** buffer. 631 ** 632 ** Returns BT_PASS - data read 633 ** GAP_ERR_BAD_HANDLE - invalid handle 634 ** GAP_ERR_BAD_STATE - connection not established 635 ** GAP_CONGESTION - system is congested 636 ** 637 *******************************************************************************/ 638 GAP_API extern UINT16 GAP_ConnWriteData (UINT16 gap_handle, UINT8 *p_data, 639 UINT16 max_len, UINT16 *p_len); 640 641 /******************************************************************************* 642 ** 643 ** Function GAP_ConnReconfig 644 ** 645 ** Description Applications can call this function to reconfigure the connection. 646 ** 647 ** Returns BT_PASS - config process started 648 ** GAP_ERR_BAD_HANDLE - invalid handle 649 ** 650 *******************************************************************************/ 651 GAP_API extern UINT16 GAP_ConnReconfig (UINT16 gap_handle, tL2CAP_CFG_INFO *p_cfg); 652 653 /******************************************************************************* 654 ** 655 ** Function GAP_ConnSetIdleTimeout 656 ** 657 ** Description Higher layers call this function to set the idle timeout for 658 ** a connection, or for all future connections. The "idle timeout" 659 ** is the amount of time that a connection can remain up with 660 ** no L2CAP channels on it. A timeout of zero means that the 661 ** connection will be torn down immediately when the last channel 662 ** is removed. A timeout of 0xFFFF means no timeout. Values are 663 ** in seconds. 664 ** 665 ** Returns BT_PASS - config process started 666 ** GAP_ERR_BAD_HANDLE - invalid handle 667 ** 668 *******************************************************************************/ 669 GAP_API extern UINT16 GAP_ConnSetIdleTimeout (UINT16 gap_handle, UINT16 timeout); 670 671 /******************************************************************************* 672 ** 673 ** Function GAP_ConnGetRemoteAddr 674 ** 675 ** Description This function is called to get the remote BD address 676 ** of a connection. 677 ** 678 ** Returns BT_PASS - closed OK 679 ** GAP_ERR_BAD_HANDLE - invalid handle 680 ** 681 *******************************************************************************/ 682 GAP_API extern UINT8 *GAP_ConnGetRemoteAddr (UINT16 gap_handle); 683 684 /******************************************************************************* 685 ** 686 ** Function GAP_ConnGetRemMtuSize 687 ** 688 ** Description Returns the remote device's MTU size. 689 ** 690 ** Returns UINT16 - maximum size buffer that can be transmitted to the peer 691 ** 692 *******************************************************************************/ 693 GAP_API extern UINT16 GAP_ConnGetRemMtuSize (UINT16 gap_handle); 694 695 /******************************************************************************* 696 ** 697 ** Function GAP_ConnGetL2CAPCid 698 ** 699 ** Description Returns the L2CAP channel id 700 ** 701 ** Parameters: handle - Handle of the connection 702 ** 703 ** Returns UINT16 - The L2CAP channel id 704 ** 0, if error 705 ** 706 *******************************************************************************/ 707 GAP_API extern UINT16 GAP_ConnGetL2CAPCid (UINT16 gap_handle); 708 709 /******************************************************************************* 710 ** 711 ** Function GAP_SetTraceLevel 712 ** 713 ** Description This function sets the trace level for GAP. If called with 714 ** a value of 0xFF, it simply returns the current trace level. 715 ** 716 ** Returns The new or current trace level 717 ** 718 *******************************************************************************/ 719 GAP_API extern UINT8 GAP_SetTraceLevel (UINT8 new_level); 720 721 /******************************************************************************* 722 ** 723 ** Function GAP_Init 724 ** 725 ** Description Initializes the control blocks used by GAP. 726 ** This routine should not be called except once per 727 ** stack invocation. 728 ** 729 ** Returns Nothing 730 ** 731 *******************************************************************************/ 732 GAP_API extern void GAP_Init(void); 733 734 #if (BLE_INCLUDED == TRUE) 735 /******************************************************************************* 736 ** 737 ** Function GAP_BleAttrDBUpdate 738 ** 739 ** Description update GAP local BLE attribute database. 740 ** 741 ** Returns Nothing 742 ** 743 *******************************************************************************/ 744 GAP_API extern void GAP_BleAttrDBUpdate(UINT16 attr_uuid, tGAP_BLE_ATTR_VALUE *p_value); 745 746 747 /******************************************************************************* 748 ** 749 ** Function GAP_BleReadPeerPrefConnParams 750 ** 751 ** Description Start a process to read a connected peripheral's preferred 752 ** connection parameters 753 ** 754 ** Returns TRUE if read started, else FALSE if GAP is busy 755 ** 756 *******************************************************************************/ 757 GAP_API extern BOOLEAN GAP_BleReadPeerPrefConnParams (BD_ADDR peer_bda); 758 759 /******************************************************************************* 760 ** 761 ** Function GAP_BleReadPeerDevName 762 ** 763 ** Description Start a process to read a connected peripheral's device name. 764 ** 765 ** Returns TRUE if request accepted 766 ** 767 *******************************************************************************/ 768 GAP_API extern BOOLEAN GAP_BleReadPeerDevName (BD_ADDR peer_bda, tGAP_BLE_DEV_NAME_CBACK *p_cback); 769 770 771 /******************************************************************************* 772 ** 773 ** Function GAP_BleCancelReadPeerDevName 774 ** 775 ** Description Cancel reading a peripheral's device name. 776 ** 777 ** Returns TRUE if request accepted 778 ** 779 *******************************************************************************/ 780 GAP_API extern BOOLEAN GAP_BleCancelReadPeerDevName (BD_ADDR peer_bda); 781 782 /******************************************************************************* 783 ** 784 ** Function GAP_BleUpdateReconnectAddr 785 ** 786 ** Description Start a process to udpate the reconnect address if remote devive 787 ** has privacy enabled. 788 ** 789 ** Returns TRUE if read started, else FALSE if GAP is busy 790 ** 791 *******************************************************************************/ 792 GAP_API extern BOOLEAN GAP_BleUpdateReconnectAddr (BD_ADDR peer_bda, 793 BD_ADDR reconn_addr, 794 tGAP_BLE_RECONN_ADDR_CBACK *p_cback); 795 796 #endif 797 798 #ifdef __cplusplus 799 } 800 #endif 801 802 #endif /* GAP_API_H */ 803 804