summaryrefslogtreecommitdiffstats
path: root/stack/include/gap_api.h
diff options
context:
space:
mode:
authorGanesh Ganapathi Batta <ganeshg@broadcom.com>2013-02-05 15:22:31 -0800
committerMatthew Xie <mattx@google.com>2013-02-27 18:15:49 -0800
commitead3cde4bac0c3e32cd31f149093f004eef8ceeb (patch)
treef45b52e375e1a80e807dbbc864bb1da603965b0d /stack/include/gap_api.h
parente17bf003d4eefdc8525e55894210e9ee494972b8 (diff)
downloadandroid_system_bt-ead3cde4bac0c3e32cd31f149093f004eef8ceeb.tar.gz
android_system_bt-ead3cde4bac0c3e32cd31f149093f004eef8ceeb.tar.bz2
android_system_bt-ead3cde4bac0c3e32cd31f149093f004eef8ceeb.zip
Initial version of BLE support for Bluedroid
Change-Id: I9825a5cef9be2559c34c2a529b211b7d471147cf
Diffstat (limited to 'stack/include/gap_api.h')
-rw-r--r--stack/include/gap_api.h802
1 files changed, 802 insertions, 0 deletions
diff --git a/stack/include/gap_api.h b/stack/include/gap_api.h
new file mode 100644
index 000000000..05affed7e
--- /dev/null
+++ b/stack/include/gap_api.h
@@ -0,0 +1,802 @@
+/******************************************************************************
+ *
+ * Copyright (C) 2009-2013 Broadcom Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ ******************************************************************************/
+
+#ifndef GAP_API_H
+#define GAP_API_H
+
+#include "profiles_api.h"
+#include "btm_api.h"
+#include "l2c_api.h"
+
+/*****************************************************************************
+** Constants
+*****************************************************************************/
+
+/*** GAP Error and Status Codes ***/
+#define GAP_UNSUPPORTED (GAP_ERR_GRP + 0x01) /* Unsupported call */
+#define GAP_EOINQDB (GAP_ERR_GRP + 0x02) /* End of inquiry database marker */
+#define GAP_ERR_BUSY (GAP_ERR_GRP + 0x03) /* The requested function was busy */
+#define GAP_ERR_NO_CTRL_BLK (GAP_ERR_GRP + 0x04) /* No control blocks available */
+#define GAP_ERR_STARTING_CMD (GAP_ERR_GRP + 0x05) /* Error occurred while initiating the command */
+#define GAP_NO_BDADDR_REC (GAP_ERR_GRP + 0x06) /* No Inquiry DB record for BD_ADDR */
+#define GAP_ERR_ILL_MODE (GAP_ERR_GRP + 0x07) /* An illegal mode parameter was detected */
+#define GAP_ERR_ILL_INQ_TIME (GAP_ERR_GRP + 0x08) /* An illegal time parameter was detected */
+#define GAP_ERR_ILL_PARM (GAP_ERR_GRP + 0x09) /* An illegal parameter was detected */
+#define GAP_ERR_REM_NAME (GAP_ERR_GRP + 0x0a) /* Error starting the remote device name request */
+#define GAP_CMD_INITIATED (GAP_ERR_GRP + 0x0b) /* The GAP command was started (result pending) */
+#define GAP_DEVICE_NOT_UP (GAP_ERR_GRP + 0x0c) /* The device was not up; the request was not executed */
+#define GAP_BAD_BD_ADDR (GAP_ERR_GRP + 0x0d) /* The bd addr passed in was not found or invalid */
+
+#define GAP_ERR_BAD_HANDLE (GAP_ERR_GRP + 0x0e) /* Bad GAP handle */
+#define GAP_ERR_BUF_OFFSET (GAP_ERR_GRP + 0x0f) /* Buffer offset invalid */
+#define GAP_ERR_BAD_STATE (GAP_ERR_GRP + 0x10) /* Connection is in invalid state */
+#define GAP_NO_DATA_AVAIL (GAP_ERR_GRP + 0x11) /* No data available */
+#define GAP_ERR_CONGESTED (GAP_ERR_GRP + 0x12) /* BT stack is congested */
+#define GAP_ERR_SECURITY (GAP_ERR_GRP + 0x13) /* Security failed */
+
+#define GAP_ERR_PROCESSING (GAP_ERR_GRP + 0x14) /* General error processing BTM request */
+#define GAP_ERR_TIMEOUT (GAP_ERR_GRP + 0x15) /* Timeout occurred while processing cmd */
+
+/** GAP Events - definitions of GAP return events ***/
+#define GAP_EVT_INQUIRY_RESULTS 0x0001
+#define GAP_EVT_INQUIRY_COMPLETE 0x0002
+#define GAP_EVT_DISCOVERY_COMPLETE 0x0003
+#define GAP_EVT_REM_NAME_COMPLETE 0x0004
+#define GAP_EVT_FIND_ADDR_COMPLETE 0x0005
+
+#define GAP_EVT_CONN_OPENED 0x0100
+#define GAP_EVT_CONN_CLOSED 0x0101
+#define GAP_EVT_CONN_DATA_AVAIL 0x0102
+#define GAP_EVT_CONN_CONGESTED 0x0103
+#define GAP_EVT_CONN_UNCONGESTED 0x0104
+
+/* Values for 'chan_mode_mask' field */
+/* GAP_ConnOpen() - optional channels to negotiate */
+#define GAP_FCR_CHAN_OPT_BASIC L2CAP_FCR_CHAN_OPT_BASIC
+#define GAP_FCR_CHAN_OPT_ERTM L2CAP_FCR_CHAN_OPT_ERTM
+#define GAP_FCR_CHAN_OPT_STREAM L2CAP_FCR_CHAN_OPT_STREAM
+
+/*** discovery of devices ***/
+#define GAP_INQUIRY_NONE BTM_INQUIRY_NONE
+#define GAP_GENERAL_INQUIRY BTM_GENERAL_INQUIRY
+#define GAP_LIMITED_INQUIRY BTM_LIMITED_INQUIRY
+
+#if BLE_INCLUDED == TRUE
+#define GAP_BLE_INQUIRY_NONE BTM_BLE_INQUIRY_NONE
+#define GAP_BLE_GENERAL_INQUIRY BTM_BLE_GENERAL_INQUIRY
+#define GAP_BLE_LIMITED_INQUIRY BTM_BLE_LIMITED_INQUIRY
+#endif
+
+/*** discoverable modes ***/
+#define GAP_NON_DISCOVERABLE BTM_NON_DISCOVERABLE
+#define GAP_LIMITED_DISCOVERABLE BTM_LIMITED_DISCOVERABLE
+#define GAP_GENERAL_DISCOVERABLE BTM_GENERAL_DISCOVERABLE
+
+/*** Inquiry Filter Condition types (The values are defined in btm_api.h) ***/
+#define GAP_CLR_INQUIRY_FILTER BTM_CLR_INQUIRY_FILTER /* Inquiry Filtering is turned off */
+#define GAP_FILTER_COND_DEVICE_CLASS BTM_FILTER_COND_DEVICE_CLASS /* Filter on device class */
+#define GAP_FILTER_COND_BD_ADDR BTM_FILTER_COND_BD_ADDR /* Filter on device addr */
+
+/*** connectability ***/
+#define GAP_NON_CONNECTABLE BTM_NON_CONNECTABLE
+#define GAP_CONNECTABLE BTM_CONNECTABLE
+
+/*** security features ***/
+#define GAP_DISALLOW_PAIRING 0
+#define GAP_ALLOW_PAIRING 1
+
+/*** class of device settings ***/
+#define GAP_SET_COD_MAJOR_MINOR 0x01
+#define GAP_SET_COD_SERVICE_CLASS 0x02 /* only set the bits in the input */
+#define GAP_CLR_COD_SERVICE_CLASS 0x04
+#define GAP_SET_COD_ALL 0x08 /* take service class as the input (may clear some set bits!!) */
+#define GAP_INIT_COD 0x0a
+
+/*** used in connection variables and functions ***/
+#define GAP_INVALID_HANDLE 0xFFFF
+
+/* This is used to change the criteria for AMP */
+#define GAP_PROTOCOL_ID (UUID_PROTOCOL_UDP)
+
+/* slave preferred parameter, minimum connection interval */
+#ifndef GAP_SL_CONN_INT_MIN
+#define GAP_SL_CONN_INT_MIN 6
+#endif
+/* slave preferred parameter, maximum connection interval */
+#ifndef GAP_SL_CONN_INT_MAX
+#define GAP_SL_CONN_INT_MAX 20
+#endif
+/* slave preferred parameter */
+#ifndef GAP_SL_LATENCY
+#define GAP_SL_LATENCY 2
+#endif
+
+#ifndef GAP_BLE_PRIVACY_RECONN_ADDR_PERM
+#define GAP_BLE_PRIVACY_RECONN_ADDR_PERM (GATT_PERM_READ|GATT_PERM_WRITE)
+#endif
+
+#ifndef GAP_PREFER_CONN_INT_MAX
+#define GAP_PREFER_CONN_INT_MAX BTM_BLE_CONN_INT_MIN
+#endif
+
+#ifndef GAP_PREFER_CONN_INT_MIN
+#define GAP_PREFER_CONN_INT_MIN BTM_BLE_CONN_INT_MIN
+#endif
+
+#ifndef GAP_PREFER_CONN_LATENCY
+#define GAP_PREFER_CONN_LATENCY 0
+#endif
+
+#ifndef GAP_PREFER_CONN_SP_TOUT
+#define GAP_PREFER_CONN_SP_TOUT 2000
+#endif
+
+#if BLE_INCLUDED == TRUE
+#ifndef GAP_TRANSPORT_SUPPORTED
+#define GAP_TRANSPORT_SUPPORTED GATT_TRANSPORT_LE_BR_EDR
+#endif
+#endif
+/*****************************************************************************
+** Type Definitions
+*****************************************************************************/
+/*
+** Callback function for connection services
+*/
+typedef void (tGAP_CONN_CALLBACK) (UINT16 gap_handle, UINT16 event);
+
+/*
+** Define the callback function prototypes. Parameters are specific
+** to each event and are described below
+*/
+typedef void (tGAP_CALLBACK) (UINT16 event, void *p_data);
+
+typedef tBTM_REMOTE_DEV_NAME tGAP_REMOTE_DEV_NAME; /* see btm_api.h */
+typedef tBTM_INQ_PARMS tGAP_INQ_PARMS; /* see btm_api.h */
+typedef tBTM_INQ_RESULTS tGAP_INQ_RESULTS; /* see btm_api.h */
+
+/* Inquiry results structure */
+typedef struct
+{
+ UINT16 status;
+ UINT8 num_results;
+} tGAP_INQ_CMPL;
+
+/* Definition of the GAP_FindAddrByName results structure */
+typedef struct
+{
+ UINT16 status;
+ BD_ADDR bd_addr;
+ tBTM_BD_NAME devname;
+} tGAP_FINDADDR_RESULTS;
+
+/** for GAP_SetDeviceClass() **/
+/* Define Class of Device related values
+ *
+ * >>> changes to this type need to also be made to tHSP_COD in hsp2_int.h
+ */
+typedef struct
+{
+ UINT8 minor;
+ UINT8 major;
+ UINT16 service;
+} tGAP_COD;
+
+/*** Constants and functions for device features ***/
+typedef struct
+{
+ UINT8 lmp_version;
+ UINT16 mfc_name;
+ UINT16 lmp_subversion;
+} tGAP_LMP_VERSION;
+
+typedef struct
+{
+ UINT8 lmp_features[8];
+} tGAP_LMP_FEATURES;
+
+typedef struct
+{
+ UINT16 int_min;
+ UINT16 int_max;
+ UINT16 latency;
+ UINT16 sp_tout;
+}tGAP_BLE_PREF_PARAM;
+
+typedef union
+{
+ tGAP_BLE_PREF_PARAM conn_param;
+ BD_ADDR reconn_bda;
+ UINT16 icon;
+ UINT8 *p_dev_name;
+ UINT8 privacy;
+
+}tGAP_BLE_ATTR_VALUE;
+
+typedef void (tGAP_BLE_DEV_NAME_CBACK)(BOOLEAN status, BD_ADDR addr, UINT16 length, char *p_name);
+
+typedef void (tGAP_BLE_RECONN_ADDR_CBACK)(BOOLEAN status, BD_ADDR addr, BD_ADDR reconn_bda);
+
+/*****************************************************************************
+** External Function Declarations
+*****************************************************************************/
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+/*******************************************************************************
+**
+** Function GAP_SetDiscoverableMode
+**
+** Description This function is called to allow or disallow a service to
+** discovered (Inquiry Scans).
+**
+** Returns BT_PASS (0) if successful,
+** GAP_ERR_ILL_PARM if a bad parameter is detected,
+** GAP_DEVICE_NOT_UP if the device is not active,
+** GAP_ERR_PROCESSING if not enough resources to carry out request
+**
+*******************************************************************************/
+GAP_API extern UINT16 GAP_SetDiscoverableMode (UINT16 mode, UINT16 duration,
+ UINT16 interval);
+
+/*******************************************************************************
+**
+** Function GAP_ReadDiscoverableMode
+**
+** Description This function is called to retrieve the current discoverable
+** mode for the local device.
+**
+** Returns GAP_NON_DISCOVERABLE, GAP_LIMITED_DISCOVERABLE, or
+** GAP_GENERAL_DISCOVERABLE
+**
+*******************************************************************************/
+GAP_API extern UINT16 GAP_ReadDiscoverableMode (UINT16 *duration, UINT16 *interval);
+
+/*******************************************************************************
+**
+** Function GAP_StartInquiry
+**
+** Description This function initiates a single inquiry.
+**
+** Returns BT_PASS (0) if successful,
+** GAP_ERR_ILL_MODE if a bad mode parameter was passed
+** GAP_ERR_ILL_INQ_TIME if a bad interval or duration was passed
+** GAP_ERR_NO_CTRL_BLK if out of control blocks
+** GAP_ERR_ILL_PARM if a bad parameter was detected in BTM
+** GAP_ERR_BUSY if the device already has an iquiry active
+** GAP_DEVICE_NOT_UP if the device is not initialized yet
+** GAP_ERR_PROCESSING if any other BTM error was returned
+**
+*******************************************************************************/
+GAP_API extern UINT16 GAP_StartInquiry (tGAP_INQ_PARMS *p_inq_parms,
+ tGAP_CALLBACK *p_results_cb,
+ tGAP_CALLBACK *p_cmpl_cb);
+
+/*******************************************************************************
+**
+** Function GAP_StartPeriodicInquiry
+**
+** Description This function initiates a periodic inquiry.
+**
+** Returns BT_PASS (0) if successful,
+** GAP_ERR_ILL_MODE if a bad mode parameter was passed
+** GAP_ERR_ILL_INQ_TIME if a bad interval or duration was passed
+** GAP_ERR_NO_CTRL_BLK if out of control blocks
+** GAP_ERR_ILL_PARM if a bad parameter was detected in BTM
+** GAP_ERR_BUSY if the device already has an iquiry active
+** GAP_DEVICE_NOT_UP if the device is not initialized yet
+** GAP_ERR_PROCESSING if any other BTM error was returned
+**
+*******************************************************************************/
+GAP_API extern UINT16 GAP_StartPeriodicInquiry (tGAP_INQ_PARMS *p_inq_parms,
+ UINT16 min_time,
+ UINT16 max_time,
+ tGAP_CALLBACK *p_results_cb);
+
+/*******************************************************************************
+**
+** Function GAP_CancelInquiry
+**
+** Description This function cancels a single inquiry (if in progress)
+**
+** Returns BOOLEAN (TRUE if successful, otherwise FALSE)
+**
+*******************************************************************************/
+GAP_API extern UINT16 GAP_CancelInquiry(void);
+
+/*******************************************************************************
+**
+** Function GAP_CancelPeriodicInquiry
+**
+** Description This function cancels a periodic inquiry (if in progress)
+**
+** Returns BOOLEAN: (TRUE if successful, otherwise FALSE)
+**
+*******************************************************************************/
+GAP_API extern UINT16 GAP_CancelPeriodicInquiry(void);
+
+/*******************************************************************************
+**
+** Function GAP_GetFirstInquiryResult
+**
+** Description This function retrieves the first valid inquiry result.
+**
+** Returns BT_PASS (0) if successful, or a non-zero error code
+** GAP_EOINQDB if no more entries in the database.
+**
+*******************************************************************************/
+GAP_API extern UINT16 GAP_GetFirstInquiryResult(tGAP_INQ_RESULTS *p_results);
+
+/*******************************************************************************
+**
+** Function GAP_GetNextInquiryResult
+**
+** Description This function retrieves the next valid inquiry result.
+**
+** Returns BT_PASS (0) if successful, or a non-zero status code
+** GAP_EOINQDB if no more entries in the database.
+**
+*******************************************************************************/
+GAP_API extern UINT16 GAP_GetNextInquiryResult(tGAP_INQ_RESULTS *p_results);
+
+/*******************************************************************************
+**
+** Function GAP_FindAddrByName
+**
+** Description This function is called to retrieve a device address given
+** a device name. It first looks in the current local inquiry
+** database for the device with the specified name. If not found
+** it initiates a general inquiry. Upon completion, it retrieves
+** the name for each device until a match is found or all devices
+** have been checked. Note: This process can take a while to
+** complete.
+**
+** Returns BT_PASS if the name was immediately available. (BD_ADDR is returned)
+** GAP_CMD_INITIATED if an inquiry has been initiated
+**
+*******************************************************************************/
+GAP_API extern UINT16 GAP_FindAddrByName (BD_NAME devname,
+ tGAP_INQ_PARMS *p_inq_parms,
+ tGAP_CALLBACK *p_addr_cb,
+ BD_ADDR bd_addr);
+
+/*******************************************************************************
+**
+** Function GAP_SetConnectableMode
+**
+** Description This function is called to allow or disallow a
+** connections on the local device.
+**
+** Returns BT_PASS (0) if successful,
+** GAP_ERR_ILL_PARM if a bad parameter is detected,
+** GAP_DEVICE_NOT_UP if the device is not active,
+** GAP_ERR_PROCESSING if not enough resources to carry out request
+**
+*******************************************************************************/
+GAP_API extern UINT16 GAP_SetConnectableMode (UINT16 mode, UINT16 duration,
+ UINT16 interval);
+
+/*******************************************************************************
+**
+** Function GAP_ReadConnectableMode
+**
+** Description This function is called to retrieve the current connectability
+** mode for the local device.
+**
+** Returns GAP_NON_CONNECTABLE, GAP_CONNECTABLE
+**
+*******************************************************************************/
+GAP_API extern UINT16 GAP_ReadConnectableMode (UINT16 *duration, UINT16 *interval);
+
+/*******************************************************************************
+**
+** Function GAP_SetSecurityMode
+**
+** Description Set security mode for the device (Service or Link level)
+**
+** Returns void
+**
+*******************************************************************************/
+GAP_API extern void GAP_SetSecurityMode (UINT8 sec_mode);
+
+/*******************************************************************************
+**
+** Function GAP_SecRegister
+**
+** Description Application calls this function to register for
+** security services.
+**
+** Returns TRUE if registered OK, else FALSE
+**
+*******************************************************************************/
+GAP_API extern BOOLEAN GAP_SecRegister (tBTM_APPL_INFO *p_cb_info);
+
+/*******************************************************************************
+**
+** Function GAP_SetPairableMode
+**
+** Description This function is called to allow or disallow pairing
+** on the local device.
+**
+** Returns BT_PASS (0) if successful, or a non-zero error code
+**
+*******************************************************************************/
+GAP_API extern UINT16 GAP_SetPairableMode (UINT16 mode, BOOLEAN connect_only_paired);
+
+/*******************************************************************************
+**
+** Function GAP_Bond
+**
+** Description This function is called to initiate bonding with peer device
+**
+** Returns tBTM_STATUS - BTM_CMD_STARTED of successfully initiated
+**
+*******************************************************************************/
+GAP_API extern UINT8 GAP_Bond (BD_ADDR bd_addr, UINT8 pin_len, UINT8 *p_pin, UINT32 trusted_mask[]);
+
+/*******************************************************************************
+**
+** Function GAP_PinRsp
+**
+** Description This function is called from UI after Security Manager submitted
+** PIN code request.
+**
+** Returns void
+**
+*******************************************************************************/
+GAP_API extern void GAP_PinRsp (BD_ADDR bd_addr, UINT8 res, UINT8 pin_len,
+ UINT8 *p_pin, UINT32 trusted_mask[]);
+
+/*******************************************************************************
+**
+** Function GAP_AuthorizeRsp
+**
+** Description This function is called from UI after Security Manager submitted
+** an authorization request.
+**
+** Returns void
+**
+*******************************************************************************/
+GAP_API extern void GAP_AuthorizeRsp (BD_ADDR bd_addr, UINT8 res,
+ UINT32 trusted_mask[]);
+
+/*******************************************************************************
+**
+** Function GAP_SetDeviceClass
+**
+** Description This function updates the local Device Class.
+**
+** Returns BT_PASS (0) if successful,
+** GAP_ERR_BUSY if a discovery is already in progress
+** GAP_ERR_ILL_PARM if an illegal parameter was detected
+** GAP_ERR_PROCESSING if any other BTM error has been returned
+**
+*******************************************************************************/
+GAP_API extern UINT16 GAP_SetDeviceClass(tGAP_COD *p_cod, UINT8 cmd);
+
+/*******************************************************************************
+**
+** Function GAP_ReadDeviceClass
+**
+** Description This function reads the current local Device Class setting.
+**
+** Returns BT_PASS
+**
+*******************************************************************************/
+GAP_API extern UINT16 GAP_ReadDeviceClass(tGAP_COD *p_cod);
+
+/*******************************************************************************
+**
+** Function GAP_ReadLocalDeviceInfo
+**
+** Description This function retrieves local device information to the caller.
+** NOTE: Return parameters that are set to NULL are not retrieved.
+**
+** Returns BT_PASS (0) if successful, or a non-zero error code
+**
+*******************************************************************************/
+GAP_API extern UINT16 GAP_ReadLocalDeviceInfo( UINT8 *name, BD_ADDR *addr,
+ tGAP_LMP_VERSION *verinfo,
+ tGAP_LMP_FEATURES *features);
+
+
+/*******************************************************************************
+**
+** Function GAP_GetRemoteDeviceName
+**
+** Description The remote name is retrieved from the specified remote device. If
+** GAP_CMD_INITIATED is returned by the function, the command was
+** successfully sent to the controller. The GAP_EVT_NAME_RESP event
+** is passed in the callback when the remote device name has been retrieved.
+**
+** Returns
+** GAP_CMD_INITIATED if remote search successfully initiated
+** GAP_ERR_BUSY if a remote name request is already in progress,
+** GAP_ERR_NO_CTRL_BLK if out of control blocks (too many commands pending)
+** GAP_BAD_BD_ADDR if the device address is bad,
+** GAP_DEVICE_NOT_UP if the device has not been initialized yet
+** GAP_ERR_PROCESSING if any other BTM error has been returned
+**
+*******************************************************************************/
+GAP_API extern UINT16 GAP_GetRemoteDeviceName (BD_ADDR addr, tGAP_CALLBACK *callback);
+
+/*** Functions for L2CAP connection interface ***/
+/*******************************************************************************
+**
+** Function GAP_ConnOpen
+**
+** Description This function is called to open a generic L2CAP connection.
+**
+** Returns handle of the connection if successful, else GAP_INVALID_HANDLE
+**
+*******************************************************************************/
+GAP_API extern UINT16 GAP_ConnOpen (char *p_serv_name, UINT8 service_id, BOOLEAN is_server,
+ BD_ADDR p_rem_bda, UINT16 psm, tL2CAP_CFG_INFO *p_cfg,
+ UINT16 security, UINT8 chan_mode_mask, tGAP_CONN_CALLBACK *p_cb);
+
+/*******************************************************************************
+**
+** Function GAP_ConnClose
+**
+** Description This function is called to close a connection.
+**
+** Returns BT_PASS - closed OK
+** GAP_ERR_BAD_HANDLE - invalid handle
+**
+*******************************************************************************/
+GAP_API extern UINT16 GAP_ConnClose (UINT16 gap_handle);
+
+/*******************************************************************************
+**
+** Function GAP_ConnReadData
+**
+** Description GKI buffer unaware application will call this function
+** after receiving GAP_EVT_RXDATA event. A data copy is made
+** into the receive buffer parameter.
+**
+** Returns BT_PASS - data read
+** GAP_ERR_BAD_HANDLE - invalid handle
+** GAP_NO_DATA_AVAIL - no data available
+**
+*******************************************************************************/
+GAP_API extern UINT16 GAP_ConnReadData (UINT16 gap_handle, UINT8 *p_data,
+ UINT16 max_len, UINT16 *p_len);
+
+/*******************************************************************************
+**
+** Function GAP_GetRxQueueCnt
+**
+** Description This function return number of bytes on the rx queue.
+**
+** Parameters: handle - Handle returned in the GAP_ConnOpen
+** p_rx_queue_count - Pointer to return queue count in.
+**
+**
+*******************************************************************************/
+GAP_API extern int GAP_GetRxQueueCnt (UINT16 handle, UINT32 *p_rx_queue_count);
+
+/*******************************************************************************
+**
+** Function GAP_ConnBTRead
+**
+** Description GKI buffer aware applications will call this function after
+** receiving an GAP_EVT_RXDATA event to process the incoming
+** data buffer.
+**
+** Returns BT_PASS - data read
+** GAP_ERR_BAD_HANDLE - invalid handle
+** GAP_NO_DATA_AVAIL - no data available
+**
+*******************************************************************************/
+GAP_API extern UINT16 GAP_ConnBTRead (UINT16 gap_handle, BT_HDR **pp_buf);
+
+/*******************************************************************************
+**
+** Function GAP_ConnBTWrite
+**
+** Description GKI buffer aware applications can call this function to write data
+** by passing a pointer to the GKI buffer of data.
+**
+** Returns BT_PASS - data read
+** GAP_ERR_BAD_HANDLE - invalid handle
+** GAP_ERR_BAD_STATE - connection not established
+** GAP_INVALID_BUF_OFFSET - buffer offset is invalid
+*******************************************************************************/
+GAP_API extern UINT16 GAP_ConnBTWrite (UINT16 gap_handle, BT_HDR *p_buf);
+
+/*******************************************************************************
+**
+** Function GAP_ConnWriteData
+**
+** Description GKI buffer unaware application will call this function
+** to send data to the connection. A data copy is made into a GKI
+** buffer.
+**
+** Returns BT_PASS - data read
+** GAP_ERR_BAD_HANDLE - invalid handle
+** GAP_ERR_BAD_STATE - connection not established
+** GAP_CONGESTION - system is congested
+**
+*******************************************************************************/
+GAP_API extern UINT16 GAP_ConnWriteData (UINT16 gap_handle, UINT8 *p_data,
+ UINT16 max_len, UINT16 *p_len);
+
+/*******************************************************************************
+**
+** Function GAP_ConnReconfig
+**
+** Description Applications can call this function to reconfigure the connection.
+**
+** Returns BT_PASS - config process started
+** GAP_ERR_BAD_HANDLE - invalid handle
+**
+*******************************************************************************/
+GAP_API extern UINT16 GAP_ConnReconfig (UINT16 gap_handle, tL2CAP_CFG_INFO *p_cfg);
+
+/*******************************************************************************
+**
+** Function GAP_ConnSetIdleTimeout
+**
+** Description Higher layers call this function to set the idle timeout for
+** a connection, or for all future connections. The "idle timeout"
+** is the amount of time that a connection can remain up with
+** no L2CAP channels on it. A timeout of zero means that the
+** connection will be torn down immediately when the last channel
+** is removed. A timeout of 0xFFFF means no timeout. Values are
+** in seconds.
+**
+** Returns BT_PASS - config process started
+** GAP_ERR_BAD_HANDLE - invalid handle
+**
+*******************************************************************************/
+GAP_API extern UINT16 GAP_ConnSetIdleTimeout (UINT16 gap_handle, UINT16 timeout);
+
+/*******************************************************************************
+**
+** Function GAP_ConnGetRemoteAddr
+**
+** Description This function is called to get the remote BD address
+** of a connection.
+**
+** Returns BT_PASS - closed OK
+** GAP_ERR_BAD_HANDLE - invalid handle
+**
+*******************************************************************************/
+GAP_API extern UINT8 *GAP_ConnGetRemoteAddr (UINT16 gap_handle);
+
+/*******************************************************************************
+**
+** Function GAP_ConnGetRemMtuSize
+**
+** Description Returns the remote device's MTU size.
+**
+** Returns UINT16 - maximum size buffer that can be transmitted to the peer
+**
+*******************************************************************************/
+GAP_API extern UINT16 GAP_ConnGetRemMtuSize (UINT16 gap_handle);
+
+/*******************************************************************************
+**
+** Function GAP_ConnGetL2CAPCid
+**
+** Description Returns the L2CAP channel id
+**
+** Parameters: handle - Handle of the connection
+**
+** Returns UINT16 - The L2CAP channel id
+** 0, if error
+**
+*******************************************************************************/
+GAP_API extern UINT16 GAP_ConnGetL2CAPCid (UINT16 gap_handle);
+
+/*******************************************************************************
+**
+** Function GAP_SetTraceLevel
+**
+** Description This function sets the trace level for GAP. If called with
+** a value of 0xFF, it simply returns the current trace level.
+**
+** Returns The new or current trace level
+**
+*******************************************************************************/
+GAP_API extern UINT8 GAP_SetTraceLevel (UINT8 new_level);
+
+/*******************************************************************************
+**
+** Function GAP_Init
+**
+** Description Initializes the control blocks used by GAP.
+** This routine should not be called except once per
+** stack invocation.
+**
+** Returns Nothing
+**
+*******************************************************************************/
+GAP_API extern void GAP_Init(void);
+
+#if (BLE_INCLUDED == TRUE)
+/*******************************************************************************
+**
+** Function GAP_BleAttrDBUpdate
+**
+** Description update GAP local BLE attribute database.
+**
+** Returns Nothing
+**
+*******************************************************************************/
+GAP_API extern void GAP_BleAttrDBUpdate(UINT16 attr_uuid, tGAP_BLE_ATTR_VALUE *p_value);
+
+
+/*******************************************************************************
+**
+** Function GAP_BleReadPeerPrefConnParams
+**
+** Description Start a process to read a connected peripheral's preferred
+** connection parameters
+**
+** Returns TRUE if read started, else FALSE if GAP is busy
+**
+*******************************************************************************/
+GAP_API extern BOOLEAN GAP_BleReadPeerPrefConnParams (BD_ADDR peer_bda);
+
+/*******************************************************************************
+**
+** Function GAP_BleReadPeerDevName
+**
+** Description Start a process to read a connected peripheral's device name.
+**
+** Returns TRUE if request accepted
+**
+*******************************************************************************/
+GAP_API extern BOOLEAN GAP_BleReadPeerDevName (BD_ADDR peer_bda, tGAP_BLE_DEV_NAME_CBACK *p_cback);
+
+
+/*******************************************************************************
+**
+** Function GAP_BleCancelReadPeerDevName
+**
+** Description Cancel reading a peripheral's device name.
+**
+** Returns TRUE if request accepted
+**
+*******************************************************************************/
+GAP_API extern BOOLEAN GAP_BleCancelReadPeerDevName (BD_ADDR peer_bda);
+
+/*******************************************************************************
+**
+** Function GAP_BleUpdateReconnectAddr
+**
+** Description Start a process to udpate the reconnect address if remote devive
+** has privacy enabled.
+**
+** Returns TRUE if read started, else FALSE if GAP is busy
+**
+*******************************************************************************/
+GAP_API extern BOOLEAN GAP_BleUpdateReconnectAddr (BD_ADDR peer_bda,
+ BD_ADDR reconn_addr,
+ tGAP_BLE_RECONN_ADDR_CBACK *p_cback);
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GAP_API_H */
+