• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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