summaryrefslogtreecommitdiffstats
path: root/stack/include/bnep_api.h
diff options
context:
space:
mode:
Diffstat (limited to 'stack/include/bnep_api.h')
-rw-r--r--stack/include/bnep_api.h476
1 files changed, 476 insertions, 0 deletions
diff --git a/stack/include/bnep_api.h b/stack/include/bnep_api.h
new file mode 100644
index 0000000..b2bc0fd
--- /dev/null
+++ b/stack/include/bnep_api.h
@@ -0,0 +1,476 @@
+/******************************************************************************
+ *
+ * Copyright (C) 2001-2012 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.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * This interface file contains the interface to the Bluetooth Network
+ * Encapsilation Protocol (BNEP).
+ *
+ ******************************************************************************/
+#ifndef BNEP_API_H
+#define BNEP_API_H
+
+#include "l2c_api.h"
+
+/*****************************************************************************
+** Constants
+*****************************************************************************/
+
+/* Define the minimum offset needed in a GKI buffer for
+** sending BNEP packets. Note, we are currently not sending
+** extension headers, but may in the future, so allow
+** space for them
+*/
+#define BNEP_MINIMUM_OFFSET (15 + L2CAP_MIN_OFFSET)
+#define BNEP_INVALID_HANDLE 0xFFFF
+
+/*****************************************************************************
+** Type Definitions
+*****************************************************************************/
+
+/* Define the result codes from BNEP
+*/
+enum
+{
+ BNEP_SUCCESS, /* Success */
+ BNEP_CONN_DISCONNECTED, /* Connection terminated */
+ BNEP_NO_RESOURCES, /* No resources */
+ BNEP_MTU_EXCEDED, /* Attempt to write long data */
+ BNEP_INVALID_OFFSET, /* Insufficient offset in GKI buffer */
+ BNEP_CONN_FAILED, /* Connection failed */
+ BNEP_CONN_FAILED_CFG, /* Connection failed cos of config */
+ BNEP_CONN_FAILED_SRC_UUID, /* Connection failed wrong source UUID */
+ BNEP_CONN_FAILED_DST_UUID, /* Connection failed wrong destination UUID */
+ BNEP_CONN_FAILED_UUID_SIZE, /* Connection failed wrong size UUID */
+ BNEP_Q_SIZE_EXCEEDED, /* Too many buffers to dest */
+ BNEP_TOO_MANY_FILTERS, /* Too many local filters specified */
+ BNEP_SET_FILTER_FAIL, /* Set Filter failed */
+ BNEP_WRONG_HANDLE, /* Wrong handle for the connection */
+ BNEP_WRONG_STATE, /* Connection is in wrong state */
+ BNEP_SECURITY_FAIL, /* Failed because of security */
+ BNEP_IGNORE_CMD, /* To ignore the rcvd command */
+ BNEP_TX_FLOW_ON, /* tx data flow enabled */
+ BNEP_TX_FLOW_OFF /* tx data flow disabled */
+
+}; typedef UINT8 tBNEP_RESULT;
+
+
+/***************************
+** Callback Functions
+****************************/
+
+/* Connection state change callback prototype. Parameters are
+** Connection handle
+** BD Address of remote
+** Connection state change result
+** BNEP_SUCCESS indicates connection is success
+** All values are used to indicate the reason for failure
+** Flag to indicate if it is just a role change
+*/
+typedef void (tBNEP_CONN_STATE_CB) (UINT16 handle,
+ BD_ADDR rem_bda,
+ tBNEP_RESULT result,
+ BOOLEAN is_role_change);
+
+
+
+
+/* Connection indication callback prototype. Parameters are
+** BD Address of remote, remote UUID and local UUID
+** and flag to indicate role change and handle to the connection
+** When BNEP calls this function profile should
+** use BNEP_ConnectResp call to accept or reject the request
+*/
+typedef void (tBNEP_CONNECT_IND_CB) (UINT16 handle,
+ BD_ADDR bd_addr,
+ tBT_UUID *remote_uuid,
+ tBT_UUID *local_uuid,
+ BOOLEAN is_role_change);
+
+
+
+/* Data buffer received indication callback prototype. Parameters are
+** Handle to the connection
+** Source BD/Ethernet Address
+** Dest BD/Ethernet address
+** Protocol
+** Pointer to the buffer
+** Flag to indicate whether extension headers to be forwarded are present
+*/
+typedef void (tBNEP_DATA_BUF_CB) (UINT16 handle,
+ UINT8 *src,
+ UINT8 *dst,
+ UINT16 protocol,
+ BT_HDR *p_buf,
+ BOOLEAN fw_ext_present);
+
+
+/* Data received indication callback prototype. Parameters are
+** Handle to the connection
+** Source BD/Ethernet Address
+** Dest BD/Ethernet address
+** Protocol
+** Pointer to the beginning of the data
+** Length of data
+** Flag to indicate whether extension headers to be forwarded are present
+*/
+typedef void (tBNEP_DATA_IND_CB) (UINT16 handle,
+ UINT8 *src,
+ UINT8 *dst,
+ UINT16 protocol,
+ UINT8 *p_data,
+ UINT16 len,
+ BOOLEAN fw_ext_present);
+
+/* Flow control callback for TX data. Parameters are
+** Handle to the connection
+** Event flow status
+*/
+typedef void (tBNEP_TX_DATA_FLOW_CB) (UINT16 handle,
+ tBNEP_RESULT event);
+
+/* Filters received indication callback prototype. Parameters are
+** Handle to the connection
+** TRUE if the cb is called for indication
+** Ignore this if it is indication, otherwise it is the result
+** for the filter set operation performed by the local
+** device
+** Number of protocol filters present
+** Pointer to the filters start. Filters are present in pairs
+** of start of the range and end of the range.
+** They will be present in big endian order. First
+** two bytes will be starting of the first range and
+** next two bytes will be ending of the range.
+*/
+typedef void (tBNEP_FILTER_IND_CB) (UINT16 handle,
+ BOOLEAN indication,
+ tBNEP_RESULT result,
+ UINT16 num_filters,
+ UINT8 *p_filters);
+
+
+
+/* Multicast Filters received indication callback prototype. Parameters are
+** Handle to the connection
+** TRUE if the cb is called for indication
+** Ignore this if it is indication, otherwise it is the result
+** for the filter set operation performed by the local
+** device
+** Number of multicast filters present
+** Pointer to the filters start. Filters are present in pairs
+** of start of the range and end of the range.
+** First six bytes will be starting of the first range and
+** next six bytes will be ending of the range.
+*/
+typedef void (tBNEP_MFILTER_IND_CB) (UINT16 handle,
+ BOOLEAN indication,
+ tBNEP_RESULT result,
+ UINT16 num_mfilters,
+ UINT8 *p_mfilters);
+
+/* This is the structure used by profile to register with BNEP */
+typedef struct
+{
+ tBNEP_CONNECT_IND_CB *p_conn_ind_cb; /* To indicate the conn request */
+ tBNEP_CONN_STATE_CB *p_conn_state_cb; /* To indicate conn state change */
+ tBNEP_DATA_IND_CB *p_data_ind_cb; /* To pass the data received */
+ tBNEP_DATA_BUF_CB *p_data_buf_cb; /* To pass the data buffer received */
+ tBNEP_TX_DATA_FLOW_CB *p_tx_data_flow_cb; /* data flow callback */
+ tBNEP_FILTER_IND_CB *p_filter_ind_cb; /* To indicate that peer set protocol filters */
+ tBNEP_MFILTER_IND_CB *p_mfilter_ind_cb; /* To indicate that peer set mcast filters */
+
+} tBNEP_REGISTER;
+
+
+
+/* This is the structure used by profile to get the status of BNEP */
+typedef struct
+{
+#define BNEP_STATUS_FAILE 0
+#define BNEP_STATUS_CONNECTED 1
+ UINT8 con_status;
+
+ UINT16 l2cap_cid;
+ BD_ADDR rem_bda;
+ UINT16 rem_mtu_size;
+ UINT16 xmit_q_depth;
+
+ UINT16 sent_num_filters;
+ UINT16 sent_mcast_filters;
+ UINT16 rcvd_num_filters;
+ UINT16 rcvd_mcast_filters;
+ tBT_UUID src_uuid;
+ tBT_UUID dst_uuid;
+
+} tBNEP_STATUS;
+
+
+
+/*****************************************************************************
+** External Function Declarations
+*****************************************************************************/
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*******************************************************************************
+**
+** Function BNEP_Register
+**
+** Description This function is called by the upper layer to register
+** its callbacks with BNEP
+**
+** Parameters: p_reg_info - contains all callback function pointers
+**
+**
+** Returns BNEP_SUCCESS if registered successfully
+** BNEP_FAILURE if connection state callback is missing
+**
+*******************************************************************************/
+BNEP_API extern tBNEP_RESULT BNEP_Register (tBNEP_REGISTER *p_reg_info);
+
+/*******************************************************************************
+**
+** Function BNEP_Deregister
+**
+** Description This function is called by the upper layer to de-register
+** its callbacks.
+**
+** Parameters: void
+**
+**
+** Returns void
+**
+*******************************************************************************/
+BNEP_API extern void BNEP_Deregister (void);
+
+
+/*******************************************************************************
+**
+** Function BNEP_Connect
+**
+** Description This function creates a BNEP connection to a remote
+** device.
+**
+** Parameters: p_rem_addr - BD_ADDR of the peer
+** src_uuid - source uuid for the connection
+** dst_uuid - destination uuid for the connection
+** p_handle - pointer to return the handle for the connection
+**
+** Returns BNEP_SUCCESS if connection started
+** BNEP_NO_RESOURCES if no resources
+**
+*******************************************************************************/
+BNEP_API extern tBNEP_RESULT BNEP_Connect (BD_ADDR p_rem_bda,
+ tBT_UUID *src_uuid,
+ tBT_UUID *dst_uuid,
+ UINT16 *p_handle);
+
+/*******************************************************************************
+**
+** Function BNEP_ConnectResp
+**
+** Description This function is called in responce to connection indication
+**
+**
+** Parameters: handle - handle given in the connection indication
+** resp - responce for the connection indication
+**
+** Returns BNEP_SUCCESS if connection started
+** BNEP_WRONG_HANDLE if the connection is not found
+** BNEP_WRONG_STATE if the responce is not expected
+**
+*******************************************************************************/
+BNEP_API extern tBNEP_RESULT BNEP_ConnectResp (UINT16 handle, tBNEP_RESULT resp);
+
+/*******************************************************************************
+**
+** Function BNEP_Disconnect
+**
+** Description This function is called to close the specified connection.
+**
+** Parameters: handle - handle of the connection
+**
+** Returns BNEP_SUCCESS if connection is disconnected
+** BNEP_WRONG_HANDLE if no connection is not found
+**
+*******************************************************************************/
+BNEP_API extern tBNEP_RESULT BNEP_Disconnect (UINT16 handle);
+
+/*******************************************************************************
+**
+** Function BNEP_WriteBuf
+**
+** Description This function sends data in a GKI buffer on BNEP connection
+**
+** Parameters: handle - handle of the connection to write
+** p_dest_addr - BD_ADDR/Ethernet addr of the destination
+** p_buf - pointer to address of buffer with data
+** protocol - protocol type of the packet
+** p_src_addr - (optional) BD_ADDR/ethernet address of the source
+** (should be NULL if it is local BD Addr)
+** fw_ext_present - forwarded extensions present
+**
+** Returns: BNEP_WRONG_HANDLE - if passed handle is not valid
+** BNEP_MTU_EXCEDED - If the data length is greater than MTU
+** BNEP_IGNORE_CMD - If the packet is filtered out
+** BNEP_Q_SIZE_EXCEEDED - If the Tx Q is full
+** BNEP_SUCCESS - If written successfully
+**
+*******************************************************************************/
+BNEP_API extern tBNEP_RESULT BNEP_WriteBuf (UINT16 handle,
+ UINT8 *p_dest_addr,
+ BT_HDR *p_buf,
+ UINT16 protocol,
+ UINT8 *p_src_addr,
+ BOOLEAN fw_ext_present);
+
+/*******************************************************************************
+**
+** Function BNEP_Write
+**
+** Description This function sends data over a BNEP connection
+**
+** Parameters: handle - handle of the connection to write
+** p_dest_addr - BD_ADDR/Ethernet addr of the destination
+** p_data - pointer to data start
+** protocol - protocol type of the packet
+** p_src_addr - (optional) BD_ADDR/ethernet address of the source
+** (should be NULL if it is local BD Addr)
+** fw_ext_present - forwarded extensions present
+**
+** Returns: BNEP_WRONG_HANDLE - if passed handle is not valid
+** BNEP_MTU_EXCEDED - If the data length is greater than MTU
+** BNEP_IGNORE_CMD - If the packet is filtered out
+** BNEP_Q_SIZE_EXCEEDED - If the Tx Q is full
+** BNEP_NO_RESOURCES - If not able to allocate a buffer
+** BNEP_SUCCESS - If written successfully
+**
+*******************************************************************************/
+BNEP_API extern tBNEP_RESULT BNEP_Write (UINT16 handle,
+ UINT8 *p_dest_addr,
+ UINT8 *p_data,
+ UINT16 len,
+ UINT16 protocol,
+ UINT8 *p_src_addr,
+ BOOLEAN fw_ext_present);
+
+/*******************************************************************************
+**
+** Function BNEP_SetProtocolFilters
+**
+** Description This function sets the protocol filters on peer device
+**
+** Parameters: handle - Handle for the connection
+** num_filters - total number of filter ranges
+** p_start_array - Array of beginings of all protocol ranges
+** p_end_array - Array of ends of all protocol ranges
+**
+** Returns BNEP_WRONG_HANDLE - if the connection handle is not valid
+** BNEP_SET_FILTER_FAIL - if the connection is in wrong state
+** BNEP_TOO_MANY_FILTERS - if too many filters
+** BNEP_SUCCESS - if request sent successfully
+**
+*******************************************************************************/
+BNEP_API extern tBNEP_RESULT BNEP_SetProtocolFilters (UINT16 handle,
+ UINT16 num_filters,
+ UINT16 *p_start_array,
+ UINT16 *p_end_array);
+
+/*******************************************************************************
+**
+** Function BNEP_SetMulticastFilters
+**
+** Description This function sets the filters for multicast addresses for BNEP.
+**
+** Parameters: handle - Handle for the connection
+** num_filters - total number of filter ranges
+** p_start_array - Pointer to sequence of beginings of all
+** multicast address ranges
+** p_end_array - Pointer to sequence of ends of all
+** multicast address ranges
+**
+** Returns BNEP_WRONG_HANDLE - if the connection handle is not valid
+** BNEP_SET_FILTER_FAIL - if the connection is in wrong state
+** BNEP_TOO_MANY_FILTERS - if too many filters
+** BNEP_SUCCESS - if request sent successfully
+**
+*******************************************************************************/
+BNEP_API extern tBNEP_RESULT BNEP_SetMulticastFilters (UINT16 handle,
+ UINT16 num_filters,
+ UINT8 *p_start_array,
+ UINT8 *p_end_array);
+
+/*******************************************************************************
+**
+** Function BNEP_GetMyBdAddr
+**
+** Description This function returns a pointer to the local device BD address.
+** If the BD address has not been read yet, it returns NULL.
+**
+** Returns the BD address
+**
+*******************************************************************************/
+BNEP_API extern UINT8 *BNEP_GetMyBdAddr (void);
+
+/*******************************************************************************
+**
+** Function BNEP_SetTraceLevel
+**
+** Description This function sets the trace level for BNEP. If called with
+** a value of 0xFF, it simply reads the current trace level.
+**
+** Returns the new (current) trace level
+**
+*******************************************************************************/
+BNEP_API extern UINT8 BNEP_SetTraceLevel (UINT8 new_level);
+
+/*******************************************************************************
+**
+** Function BNEP_Init
+**
+** Description This function initializes the BNEP unit. It should be called
+** before accessing any other APIs to initialize the control block
+**
+** Returns void
+**
+*******************************************************************************/
+BNEP_API extern void BNEP_Init (void);
+
+/*******************************************************************************
+**
+** Function BNEP_GetStatus
+**
+** Description This function gets the status information for BNEP connection
+**
+** Returns BNEP_SUCCESS - if the status is available
+** BNEP_NO_RESOURCES - if no structure is passed for output
+** BNEP_WRONG_HANDLE - if the handle is invalid
+** BNEP_WRONG_STATE - if not in connected state
+**
+*******************************************************************************/
+BNEP_API extern tBNEP_RESULT BNEP_GetStatus (UINT16 handle, tBNEP_STATUS *p_status);
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif