| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391 |
- /******************************************************************************
- *
- * 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 "sdpdefs.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 */
- #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
- /*** 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)
- #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
- /*****************************************************************************
- ** 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);
- /* Definition of the GAP_FindAddrByName results structure */
- typedef struct {
- UINT16 status;
- BD_ADDR bd_addr;
- tBTM_BD_NAME devname;
- } tGAP_FINDADDR_RESULTS;
- 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 addr_resolution;
- } tGAP_BLE_ATTR_VALUE;
- typedef void (tGAP_BLE_CMPL_CBACK)(BOOLEAN status, BD_ADDR addr, UINT16 length, char *p_name);
- /*****************************************************************************
- ** External Function Declarations
- *****************************************************************************/
- /*** 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
- **
- *******************************************************************************/
- 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,
- tL2CAP_ERTM_INFO *ertm_info,
- 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
- **
- *******************************************************************************/
- 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
- **
- *******************************************************************************/
- 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.
- **
- **
- *******************************************************************************/
- 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
- **
- *******************************************************************************/
- 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
- *******************************************************************************/
- 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
- **
- *******************************************************************************/
- 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
- **
- *******************************************************************************/
- 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
- **
- *******************************************************************************/
- 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
- **
- *******************************************************************************/
- 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
- **
- *******************************************************************************/
- 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
- **
- *******************************************************************************/
- 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
- **
- *******************************************************************************/
- 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
- **
- *******************************************************************************/
- extern void GAP_Init(void);
- #if (BLE_INCLUDED == TRUE)
- /*******************************************************************************
- **
- ** Function GAP_BleAttrDBUpdate
- **
- ** Description update GAP local BLE attribute database.
- **
- ** Returns Nothing
- **
- *******************************************************************************/
- 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
- **
- *******************************************************************************/
- 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
- **
- *******************************************************************************/
- extern BOOLEAN GAP_BleReadPeerDevName (BD_ADDR peer_bda, tGAP_BLE_CMPL_CBACK *p_cback);
- /*******************************************************************************
- **
- ** Function GAP_BleReadPeerAddressResolutionCap
- **
- ** Description Start a process to read peer address resolution capability
- **
- ** Returns TRUE if request accepted
- **
- *******************************************************************************/
- extern BOOLEAN GAP_BleReadPeerAddressResolutionCap (BD_ADDR peer_bda,
- tGAP_BLE_CMPL_CBACK *p_cback);
- /*******************************************************************************
- **
- ** Function GAP_BleCancelReadPeerDevName
- **
- ** Description Cancel reading a peripheral's device name.
- **
- ** Returns TRUE if request accepted
- **
- *******************************************************************************/
- extern BOOLEAN GAP_BleCancelReadPeerDevName (BD_ADDR peer_bda);
- #endif
- #endif /* GAP_API_H */
|