| /****************************************************************************** | |
| * | |
| * 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 | |
| ** | |
| *******************************************************************************/ | |
| 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 | |
| ** | |
| *******************************************************************************/ | |
| 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 | |
| ** | |
| *******************************************************************************/ | |
| 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 | |
| ** | |
| *******************************************************************************/ | |
| 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 | |
| ** | |
| *******************************************************************************/ | |
| 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 | |
| ** | |
| *******************************************************************************/ | |
| 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 | |
| ** | |
| *******************************************************************************/ | |
| 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 | |
| ** | |
| *******************************************************************************/ | |
| 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 | |
| ** | |
| *******************************************************************************/ | |
| extern tBNEP_RESULT BNEP_SetMulticastFilters (UINT16 handle, | |
| UINT16 num_filters, | |
| UINT8 *p_start_array, | |
| UINT8 *p_end_array); | |
| /******************************************************************************* | |
| ** | |
| ** 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 | |
| ** | |
| *******************************************************************************/ | |
| 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 | |
| ** | |
| *******************************************************************************/ | |
| 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 | |
| ** | |
| *******************************************************************************/ | |
| extern tBNEP_RESULT BNEP_GetStatus (UINT16 handle, tBNEP_STATUS *p_status); | |
| #ifdef __cplusplus | |
| } | |
| #endif | |
| #endif |