1ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************
2ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta *
3ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta *  Copyright (C) 2009-2013 Broadcom Corporation
4ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta *
5ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta *  Licensed under the Apache License, Version 2.0 (the "License");
6ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta *  you may not use this file except in compliance with the License.
7ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta *  You may obtain a copy of the License at:
8ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta *
9ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta *  http://www.apache.org/licenses/LICENSE-2.0
10ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta *
11ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta *  Unless required by applicable law or agreed to in writing, software
12ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta *  distributed under the License is distributed on an "AS IS" BASIS,
13ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta *  See the License for the specific language governing permissions and
15ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta *  limitations under the License.
16ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta *
17ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta ******************************************************************************/
18ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
19ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#ifndef GAP_API_H
20ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define GAP_API_H
21ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
228372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz#include "btm_api.h"
238372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz#include "l2c_api.h"
24911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#include "profiles_api.h"
258372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz
26ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/*****************************************************************************
27ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *  Constants
28ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ****************************************************************************/
298372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz/*** GAP Error and Status Codes ***/
309ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Unsupported call */
31911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_UNSUPPORTED (GAP_ERR_GRP + 0x01)
329ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* End of inquiry database marker */
33911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_EOINQDB (GAP_ERR_GRP + 0x02)
349ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* The requested function was busy */
35911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_ERR_BUSY (GAP_ERR_GRP + 0x03)
369ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* No control blocks available */
379ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson#define GAP_ERR_NO_CTRL_BLK (GAP_ERR_GRP + 0x04)
389ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Error occurred while initiating the command */
399ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson#define GAP_ERR_STARTING_CMD (GAP_ERR_GRP + 0x05)
409ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* No Inquiry DB record for BD_ADDR */
41911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_NO_BDADDR_REC (GAP_ERR_GRP + 0x06)
429ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* An illegal mode parameter was detected */
43911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_ERR_ILL_MODE (GAP_ERR_GRP + 0x07)
449ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* An illegal time parameter was detected */
459ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson#define GAP_ERR_ILL_INQ_TIME (GAP_ERR_GRP + 0x08)
469ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* An illegal parameter was detected */
47911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_ERR_ILL_PARM (GAP_ERR_GRP + 0x09)
489ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Error starting the remote device name request */
49911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_ERR_REM_NAME (GAP_ERR_GRP + 0x0a)
509ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* The GAP command was started (result pending) */
51911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_CMD_INITIATED (GAP_ERR_GRP + 0x0b)
529ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* The device was not up; the request was not executed */
53911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_DEVICE_NOT_UP (GAP_ERR_GRP + 0x0c)
549ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* The bd addr passed in was not found or invalid */
55911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_BAD_BD_ADDR (GAP_ERR_GRP + 0x0d)
569ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson
579ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Bad GAP handle */
58911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_ERR_BAD_HANDLE (GAP_ERR_GRP + 0x0e)
599ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Buffer offset invalid */
60911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_ERR_BUF_OFFSET (GAP_ERR_GRP + 0x0f)
619ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Connection is in invalid state */
62911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_ERR_BAD_STATE (GAP_ERR_GRP + 0x10)
639ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* No data available */
64911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_NO_DATA_AVAIL (GAP_ERR_GRP + 0x11)
659ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* BT stack is congested */
66911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_ERR_CONGESTED (GAP_ERR_GRP + 0x12)
679ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Security failed */
68911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_ERR_SECURITY (GAP_ERR_GRP + 0x13)
699ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson
709ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* General error processing BTM request */
71911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_ERR_PROCESSING (GAP_ERR_GRP + 0x14)
729ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Timeout occurred while processing cmd */
73911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_ERR_TIMEOUT (GAP_ERR_GRP + 0x15)
74911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_EVT_CONN_OPENED 0x0100
75911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_EVT_CONN_CLOSED 0x0101
76911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_EVT_CONN_DATA_AVAIL 0x0102
77911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_EVT_CONN_CONGESTED 0x0103
78911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_EVT_CONN_UNCONGESTED 0x0104
79911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_EVT_TX_EMPTY 0x0105
804e972d8c24ecfb808757ef5c81eb3877ebc93027Srinu Jella
818372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz/* Values for 'chan_mode_mask' field */
828372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz/* GAP_ConnOpen() - optional channels to negotiate */
83911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_FCR_CHAN_OPT_BASIC L2CAP_FCR_CHAN_OPT_BASIC
84911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_FCR_CHAN_OPT_ERTM L2CAP_FCR_CHAN_OPT_ERTM
85911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_FCR_CHAN_OPT_STREAM L2CAP_FCR_CHAN_OPT_STREAM
868372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz/*** used in connection variables and functions ***/
87911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_INVALID_HANDLE 0xFFFF
888372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz
899ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* This is used to change the criteria for AMP */
90911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_PROTOCOL_ID (UUID_PROTOCOL_UDP)
918372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz
92911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#ifndef GAP_PREFER_CONN_INT_MAX
93911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_PREFER_CONN_INT_MAX BTM_BLE_CONN_INT_MIN
94ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#endif
95ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
96911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#ifndef GAP_PREFER_CONN_INT_MIN
97911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_PREFER_CONN_INT_MIN BTM_BLE_CONN_INT_MIN
98ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#endif
99ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
100911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#ifndef GAP_PREFER_CONN_LATENCY
101911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_PREFER_CONN_LATENCY 0
102ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#endif
103ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
104911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#ifndef GAP_PREFER_CONN_SP_TOUT
105911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define GAP_PREFER_CONN_SP_TOUT 2000
106ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#endif
107ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
108ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/*****************************************************************************
109ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *  Type Definitions
110ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ****************************************************************************/
1118372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz/*
112ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Callback function for connection services
1138372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz*/
114911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsontypedef void(tGAP_CONN_CALLBACK)(uint16_t gap_handle, uint16_t event);
1158372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz
1168372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz/*
117ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Define the callback function prototypes.  Parameters are specific
118ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * to each event and are described below
1198372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz*/
120911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsontypedef void(tGAP_CALLBACK)(uint16_t event, void* p_data);
1218372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz
1228372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz/* Definition of the GAP_FindAddrByName results structure */
123911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsontypedef struct {
124911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  uint16_t status;
1259e030fde05352ec4385d7baf6cc2af89e95e039cJakub Pawlowski  RawAddress bd_addr;
126911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  tBTM_BD_NAME devname;
1278372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz} tGAP_FINDADDR_RESULTS;
128ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
129911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsontypedef struct {
130911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  uint16_t int_min;
131911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  uint16_t int_max;
132911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  uint16_t latency;
133911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  uint16_t sp_tout;
134911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson} tGAP_BLE_PREF_PARAM;
135ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
136911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsontypedef union {
137911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  tGAP_BLE_PREF_PARAM conn_param;
1389e030fde05352ec4385d7baf6cc2af89e95e039cJakub Pawlowski  RawAddress reconn_bda;
139911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  uint16_t icon;
140911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  uint8_t* p_dev_name;
141911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  uint8_t addr_resolution;
142ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
143911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson} tGAP_BLE_ATTR_VALUE;
144ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
1459e030fde05352ec4385d7baf6cc2af89e95e039cJakub Pawlowskitypedef void(tGAP_BLE_CMPL_CBACK)(bool status, const RawAddress& addr,
146c2276b06572ab6fc1f900fbb1f41087e77d47e2aJakub Pawlowski                                  uint16_t length, char* p_name);
147ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
148ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/*****************************************************************************
149ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *  External Function Declarations
150ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ****************************************************************************/
151ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
1528372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz/*** Functions for L2CAP connection interface ***/
1538372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz
1548372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz/*******************************************************************************
155ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
156ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Function         GAP_ConnOpen
157ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
158ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Description      This function is called to open a generic L2CAP connection.
159ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
1609ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * Returns          handle of the connection if successful, else
1619ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson *                  GAP_INVALID_HANDLE
162ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
163ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ******************************************************************************/
164911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern uint16_t GAP_ConnOpen(const char* p_serv_name, uint8_t service_id,
1659e030fde05352ec4385d7baf6cc2af89e95e039cJakub Pawlowski                             bool is_server, const RawAddress* p_rem_bda,
166c2276b06572ab6fc1f900fbb1f41087e77d47e2aJakub Pawlowski                             uint16_t psm, tL2CAP_CFG_INFO* p_cfg,
167911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                             tL2CAP_ERTM_INFO* ertm_info, uint16_t security,
168911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                             uint8_t chan_mode_mask, tGAP_CONN_CALLBACK* p_cb,
169911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                             tBT_TRANSPORT transport);
1708372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz
1718372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz/*******************************************************************************
172ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
173ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Function         GAP_ConnClose
174ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
175ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Description      This function is called to close a connection.
176ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
177ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Returns          BT_PASS             - closed OK
178ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *                  GAP_ERR_BAD_HANDLE  - invalid handle
179ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
180ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ******************************************************************************/
181911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern uint16_t GAP_ConnClose(uint16_t gap_handle);
1828372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz
1838372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz/*******************************************************************************
184ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
185ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Function         GAP_ConnReadData
186ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
187ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Description      GKI buffer unaware application will call this function
188ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *                  after receiving GAP_EVT_RXDATA event. A data copy is made
189ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *                  into the receive buffer parameter.
190ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
191ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Returns          BT_PASS             - data read
192ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *                  GAP_ERR_BAD_HANDLE  - invalid handle
193ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *                  GAP_NO_DATA_AVAIL   - no data available
194ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
195ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ******************************************************************************/
196911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern uint16_t GAP_ConnReadData(uint16_t gap_handle, uint8_t* p_data,
197911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                 uint16_t max_len, uint16_t* p_len);
1988372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz
1998372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz/*******************************************************************************
200ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
201ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Function         GAP_GetRxQueueCnt
202ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
203ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Description      This function return number of bytes on the rx queue.
204ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
205ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Parameters:      handle     - Handle returned in the GAP_ConnOpen
206ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *                  p_rx_queue_count - Pointer to return queue count in.
207ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
208ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
209ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ******************************************************************************/
210911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern int GAP_GetRxQueueCnt(uint16_t handle, uint32_t* p_rx_queue_count);
2118372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz
2128372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz/*******************************************************************************
213ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
214ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Function         GAP_ConnBTRead
215ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
216ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Description      GKI buffer aware applications will call this function after
217ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *                  receiving an GAP_EVT_RXDATA event to process the incoming
218ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *                  data buffer.
219ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
220ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Returns          BT_PASS             - data read
221ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *                  GAP_ERR_BAD_HANDLE  - invalid handle
222ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *                  GAP_NO_DATA_AVAIL   - no data available
223ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
224ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ******************************************************************************/
225911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern uint16_t GAP_ConnBTRead(uint16_t gap_handle, BT_HDR** pp_buf);
2268372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz
2278372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz/*******************************************************************************
228ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
229ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Function         GAP_ConnWriteData
230ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
231ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Description      GKI buffer unaware application will call this function
2329ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson *                  to send data to the connection. A data copy is made into a
2339ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson *                  GKI buffer.
234ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
235ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Returns          BT_PASS                 - data read
236ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *                  GAP_ERR_BAD_HANDLE      - invalid handle
237ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *                  GAP_ERR_BAD_STATE       - connection not established
238ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *                  GAP_CONGESTION          - system is congested
239ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
240ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ******************************************************************************/
241911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern uint16_t GAP_ConnWriteData(uint16_t gap_handle, uint8_t* p_data,
242911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                  uint16_t max_len, uint16_t* p_len);
2438372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz
2448372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz/*******************************************************************************
245ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
246ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Function         GAP_ConnReconfig
247ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
2489ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * Description      Applications can call this function to reconfigure the
2499ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson *                  connection.
250ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
251ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Returns          BT_PASS                 - config process started
252ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *                  GAP_ERR_BAD_HANDLE      - invalid handle
253ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
254ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ******************************************************************************/
255911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern uint16_t GAP_ConnReconfig(uint16_t gap_handle, tL2CAP_CFG_INFO* p_cfg);
2568372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz
2578372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz/*******************************************************************************
258ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
259ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Function         GAP_ConnSetIdleTimeout
260ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
261ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Description      Higher layers call this function to set the idle timeout for
2629ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson *                  a connection, or for all future connections. The "idle
2639ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson *                  timeout" is the amount of time that a connection can remain
2649ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson *                  up with no L2CAP channels on it. A timeout of zero means
2659ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson *                  that the connection will be torn down immediately when the
2669ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson *                  last channel is removed. A timeout of 0xFFFF means no
2679ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson *                  timeout. Values are in seconds.
268ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
269ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Returns          BT_PASS                 - config process started
270ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *                  GAP_ERR_BAD_HANDLE      - invalid handle
271ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
272ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ******************************************************************************/
273911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern uint16_t GAP_ConnSetIdleTimeout(uint16_t gap_handle, uint16_t timeout);
2748372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz
2758372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz/*******************************************************************************
276ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
277ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Function         GAP_ConnGetRemoteAddr
278ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
279ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Description      This function is called to get the remote BD address
280ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *                  of a connection.
281ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
282ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Returns          BT_PASS             - closed OK
283ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *                  GAP_ERR_BAD_HANDLE  - invalid handle
284ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
285ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ******************************************************************************/
2869e030fde05352ec4385d7baf6cc2af89e95e039cJakub Pawlowskiextern const RawAddress* GAP_ConnGetRemoteAddr(uint16_t gap_handle);
2878372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz
2888372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz/*******************************************************************************
289ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
290ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Function         GAP_ConnGetRemMtuSize
291ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
292ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Description      Returns the remote device's MTU size.
293ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
2949ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * Returns          uint16_t - maximum size buffer that can be transmitted to
2959ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson *                             the peer
296ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
297ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ******************************************************************************/
298911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern uint16_t GAP_ConnGetRemMtuSize(uint16_t gap_handle);
2998372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz
3008372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz/*******************************************************************************
301ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
302ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Function         GAP_ConnGetL2CAPCid
303ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
304ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Description      Returns the L2CAP channel id
305ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
306ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Parameters:      handle      - Handle of the connection
307ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
308ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Returns          uint16_t    - The L2CAP channel id
309ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *                  0, if error
310ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
311ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ******************************************************************************/
312911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern uint16_t GAP_ConnGetL2CAPCid(uint16_t gap_handle);
3138372aa5fa535ee4f09c09981b6125b54ace31fe2Kim Schulz
314ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/*******************************************************************************
315ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
316ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Function         GAP_Init
317ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
318ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Description      Initializes the control blocks used by GAP.
319ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *                  This routine should not be called except once per
320ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *                      stack invocation.
321ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
322ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Returns          Nothing
323ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
324ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ******************************************************************************/
32524933b5b1a06274c47133debac5251a97128a267June R. Tate-Gansextern void GAP_Init(void);
326ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
327ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/*******************************************************************************
328ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
329ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Function         GAP_BleAttrDBUpdate
330ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
331ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Description      update GAP local BLE attribute database.
332ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
333ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Returns          Nothing
334ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
335ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ******************************************************************************/
336911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void GAP_BleAttrDBUpdate(uint16_t attr_uuid,
337911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                tGAP_BLE_ATTR_VALUE* p_value);
338ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
339ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/*******************************************************************************
340ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
341ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Function         GAP_BleReadPeerPrefConnParams
342ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
343ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Description      Start a process to read a connected peripheral's preferred
344ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *                  connection parameters
345ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
346ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Returns          true if read started, else false if GAP is busy
347ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
348ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ******************************************************************************/
3499e030fde05352ec4385d7baf6cc2af89e95e039cJakub Pawlowskiextern bool GAP_BleReadPeerPrefConnParams(const RawAddress& peer_bda);
350ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
351ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/*******************************************************************************
352ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
353ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Function         GAP_BleReadPeerDevName
354ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
3559ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * Description      Start a process to read a connected peripheral's device
3569ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson *                  name.
357ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
358ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Returns          true if request accepted
359ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
360ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ******************************************************************************/
3619e030fde05352ec4385d7baf6cc2af89e95e039cJakub Pawlowskiextern bool GAP_BleReadPeerDevName(const RawAddress& peer_bda,
362911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                   tGAP_BLE_CMPL_CBACK* p_cback);
363ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
364ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/*******************************************************************************
365ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
366ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Function         GAP_BleReadPeerAddressResolutionCap
367ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
368ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Description      Start a process to read peer address resolution capability
369ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
370ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Returns          true if request accepted
371ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
372ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ******************************************************************************/
3739e030fde05352ec4385d7baf6cc2af89e95e039cJakub Pawlowskiextern bool GAP_BleReadPeerAddressResolutionCap(const RawAddress& peer_bda,
374911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                                tGAP_BLE_CMPL_CBACK* p_cback);
375ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
376ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/*******************************************************************************
377ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
378ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Function         GAP_BleCancelReadPeerDevName
379ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
380ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Description      Cancel reading a peripheral's device name.
381ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
382ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Returns          true if request accepted
383ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *
384ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ******************************************************************************/
3859e030fde05352ec4385d7baf6cc2af89e95e039cJakub Pawlowskiextern bool GAP_BleCancelReadPeerDevName(const RawAddress& peer_bda);
386444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji
387911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#endif /* GAP_API_H */
388