NSMBW-Decomp
A decompilation of New Super Mario Bros. Wii
Loading...
Searching...
No Matches
bnep_api.h
1/******************************************************************************
2 *
3 * Copyright (C) 2001-2012 Broadcom Corporation
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at:
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 ******************************************************************************/
18
19/******************************************************************************
20 *
21 * This interface file contains the interface to the Bluetooth Network
22 * Encapsilation Protocol (BNEP).
23 *
24 ******************************************************************************/
25#ifndef BNEP_API_H
26#define BNEP_API_H
27
28#include "l2c_api.h"
29
30/*****************************************************************************
31** Constants
32*****************************************************************************/
33
34/* Define the minimum offset needed in a GKI buffer for
35** sending BNEP packets. Note, we are currently not sending
36** extension headers, but may in the future, so allow
37** space for them
38*/
39#define BNEP_MINIMUM_OFFSET (15 + L2CAP_MIN_OFFSET)
40#define BNEP_INVALID_HANDLE 0xFFFF
41
42/*****************************************************************************
43** Type Definitions
44*****************************************************************************/
45
46/* Define the result codes from BNEP
47*/
48enum
49{
50 BNEP_SUCCESS, /* Success */
51 BNEP_CONN_DISCONNECTED, /* Connection terminated */
52 BNEP_NO_RESOURCES, /* No resources */
53 BNEP_MTU_EXCEDED, /* Attempt to write long data */
54 BNEP_INVALID_OFFSET, /* Insufficient offset in GKI buffer */
55 BNEP_CONN_FAILED, /* Connection failed */
56 BNEP_CONN_FAILED_CFG, /* Connection failed cos of config */
57 BNEP_CONN_FAILED_SRC_UUID, /* Connection failed wrong source UUID */
58 BNEP_CONN_FAILED_DST_UUID, /* Connection failed wrong destination UUID */
59 BNEP_CONN_FAILED_UUID_SIZE, /* Connection failed wrong size UUID */
60 BNEP_Q_SIZE_EXCEEDED, /* Too many buffers to dest */
61 BNEP_TOO_MANY_FILTERS, /* Too many local filters specified */
62 BNEP_SET_FILTER_FAIL, /* Set Filter failed */
63 BNEP_WRONG_HANDLE, /* Wrong handle for the connection */
64 BNEP_WRONG_STATE, /* Connection is in wrong state */
65 BNEP_SECURITY_FAIL, /* Failed because of security */
66 BNEP_IGNORE_CMD, /* To ignore the rcvd command */
67 BNEP_TX_FLOW_ON, /* tx data flow enabled */
68 BNEP_TX_FLOW_OFF /* tx data flow disabled */
69
70}; typedef UINT8 tBNEP_RESULT;
71
72
73/***************************
74** Callback Functions
75****************************/
76
77/* Connection state change callback prototype. Parameters are
78** Connection handle
79** BD Address of remote
80** Connection state change result
81** BNEP_SUCCESS indicates connection is success
82** All values are used to indicate the reason for failure
83** Flag to indicate if it is just a role change
84*/
85typedef void (tBNEP_CONN_STATE_CB) (UINT16 handle,
86 BD_ADDR rem_bda,
87 tBNEP_RESULT result,
88 BOOLEAN is_role_change);
89
90
91
92
93/* Connection indication callback prototype. Parameters are
94** BD Address of remote, remote UUID and local UUID
95** and flag to indicate role change and handle to the connection
96** When BNEP calls this function profile should
97** use BNEP_ConnectResp call to accept or reject the request
98*/
99typedef void (tBNEP_CONNECT_IND_CB) (UINT16 handle,
100 BD_ADDR bd_addr,
101 tBT_UUID *remote_uuid,
102 tBT_UUID *local_uuid,
103 BOOLEAN is_role_change);
104
105
106
107/* Data buffer received indication callback prototype. Parameters are
108** Handle to the connection
109** Source BD/Ethernet Address
110** Dest BD/Ethernet address
111** Protocol
112** Pointer to the buffer
113** Flag to indicate whether extension headers to be forwarded are present
114*/
115typedef void (tBNEP_DATA_BUF_CB) (UINT16 handle,
116 UINT8 *src,
117 UINT8 *dst,
118 UINT16 protocol,
119 BT_HDR *p_buf,
120 BOOLEAN fw_ext_present);
121
122
123/* Data received indication callback prototype. Parameters are
124** Handle to the connection
125** Source BD/Ethernet Address
126** Dest BD/Ethernet address
127** Protocol
128** Pointer to the beginning of the data
129** Length of data
130** Flag to indicate whether extension headers to be forwarded are present
131*/
132typedef void (tBNEP_DATA_IND_CB) (UINT16 handle,
133 UINT8 *src,
134 UINT8 *dst,
135 UINT16 protocol,
136 UINT8 *p_data,
137 UINT16 len,
138 BOOLEAN fw_ext_present);
139
140/* Flow control callback for TX data. Parameters are
141** Handle to the connection
142** Event flow status
143*/
144typedef void (tBNEP_TX_DATA_FLOW_CB) (UINT16 handle,
145 tBNEP_RESULT event);
146
147/* Filters received indication callback prototype. Parameters are
148** Handle to the connection
149** TRUE if the cb is called for indication
150** Ignore this if it is indication, otherwise it is the result
151** for the filter set operation performed by the local
152** device
153** Number of protocol filters present
154** Pointer to the filters start. Filters are present in pairs
155** of start of the range and end of the range.
156** They will be present in big endian order. First
157** two bytes will be starting of the first range and
158** next two bytes will be ending of the range.
159*/
160typedef void (tBNEP_FILTER_IND_CB) (UINT16 handle,
161 BOOLEAN indication,
162 tBNEP_RESULT result,
163 UINT16 num_filters,
164 UINT8 *p_filters);
165
166
167
168/* Multicast Filters received indication callback prototype. Parameters are
169** Handle to the connection
170** TRUE if the cb is called for indication
171** Ignore this if it is indication, otherwise it is the result
172** for the filter set operation performed by the local
173** device
174** Number of multicast filters present
175** Pointer to the filters start. Filters are present in pairs
176** of start of the range and end of the range.
177** First six bytes will be starting of the first range and
178** next six bytes will be ending of the range.
179*/
180typedef void (tBNEP_MFILTER_IND_CB) (UINT16 handle,
181 BOOLEAN indication,
182 tBNEP_RESULT result,
183 UINT16 num_mfilters,
184 UINT8 *p_mfilters);
185
186/* This is the structure used by profile to register with BNEP */
187typedef struct
188{
189 tBNEP_CONNECT_IND_CB *p_conn_ind_cb; /* To indicate the conn request */
190 tBNEP_CONN_STATE_CB *p_conn_state_cb; /* To indicate conn state change */
191 tBNEP_DATA_IND_CB *p_data_ind_cb; /* To pass the data received */
192 tBNEP_DATA_BUF_CB *p_data_buf_cb; /* To pass the data buffer received */
193 tBNEP_TX_DATA_FLOW_CB *p_tx_data_flow_cb; /* data flow callback */
194 tBNEP_FILTER_IND_CB *p_filter_ind_cb; /* To indicate that peer set protocol filters */
195 tBNEP_MFILTER_IND_CB *p_mfilter_ind_cb; /* To indicate that peer set mcast filters */
196
198
199
200
201/* This is the structure used by profile to get the status of BNEP */
202typedef struct
203{
204#define BNEP_STATUS_FAILE 0
205#define BNEP_STATUS_CONNECTED 1
206 UINT8 con_status;
207
208 UINT16 l2cap_cid;
209 BD_ADDR rem_bda;
210 UINT16 rem_mtu_size;
211 UINT16 xmit_q_depth;
212
213 UINT16 sent_num_filters;
214 UINT16 sent_mcast_filters;
215 UINT16 rcvd_num_filters;
216 UINT16 rcvd_mcast_filters;
217 tBT_UUID src_uuid;
218 tBT_UUID dst_uuid;
219
221
222
223
224/*****************************************************************************
225** External Function Declarations
226*****************************************************************************/
227#ifdef __cplusplus
228extern "C" {
229#endif
230
231/*******************************************************************************
232**
233** Function BNEP_Register
234**
235** Description This function is called by the upper layer to register
236** its callbacks with BNEP
237**
238** Parameters: p_reg_info - contains all callback function pointers
239**
240**
241** Returns BNEP_SUCCESS if registered successfully
242** BNEP_FAILURE if connection state callback is missing
243**
244*******************************************************************************/
245BNEP_API extern tBNEP_RESULT BNEP_Register (tBNEP_REGISTER *p_reg_info);
246
247/*******************************************************************************
248**
249** Function BNEP_Deregister
250**
251** Description This function is called by the upper layer to de-register
252** its callbacks.
253**
254** Parameters: void
255**
256**
257** Returns void
258**
259*******************************************************************************/
260BNEP_API extern void BNEP_Deregister (void);
261
262
263/*******************************************************************************
264**
265** Function BNEP_Connect
266**
267** Description This function creates a BNEP connection to a remote
268** device.
269**
270** Parameters: p_rem_addr - BD_ADDR of the peer
271** src_uuid - source uuid for the connection
272** dst_uuid - destination uuid for the connection
273** p_handle - pointer to return the handle for the connection
274**
275** Returns BNEP_SUCCESS if connection started
276** BNEP_NO_RESOURCES if no resources
277**
278*******************************************************************************/
279BNEP_API extern tBNEP_RESULT BNEP_Connect (BD_ADDR p_rem_bda,
280 tBT_UUID *src_uuid,
281 tBT_UUID *dst_uuid,
282 UINT16 *p_handle);
283
284/*******************************************************************************
285**
286** Function BNEP_ConnectResp
287**
288** Description This function is called in responce to connection indication
289**
290**
291** Parameters: handle - handle given in the connection indication
292** resp - responce for the connection indication
293**
294** Returns BNEP_SUCCESS if connection started
295** BNEP_WRONG_HANDLE if the connection is not found
296** BNEP_WRONG_STATE if the responce is not expected
297**
298*******************************************************************************/
299BNEP_API extern tBNEP_RESULT BNEP_ConnectResp (UINT16 handle, tBNEP_RESULT resp);
300
301/*******************************************************************************
302**
303** Function BNEP_Disconnect
304**
305** Description This function is called to close the specified connection.
306**
307** Parameters: handle - handle of the connection
308**
309** Returns BNEP_SUCCESS if connection is disconnected
310** BNEP_WRONG_HANDLE if no connection is not found
311**
312*******************************************************************************/
313BNEP_API extern tBNEP_RESULT BNEP_Disconnect (UINT16 handle);
314
315/*******************************************************************************
316**
317** Function BNEP_WriteBuf
318**
319** Description This function sends data in a GKI buffer on BNEP connection
320**
321** Parameters: handle - handle of the connection to write
322** p_dest_addr - BD_ADDR/Ethernet addr of the destination
323** p_buf - pointer to address of buffer with data
324** protocol - protocol type of the packet
325** p_src_addr - (optional) BD_ADDR/ethernet address of the source
326** (should be NULL if it is local BD Addr)
327** fw_ext_present - forwarded extensions present
328**
329** Returns: BNEP_WRONG_HANDLE - if passed handle is not valid
330** BNEP_MTU_EXCEDED - If the data length is greater than MTU
331** BNEP_IGNORE_CMD - If the packet is filtered out
332** BNEP_Q_SIZE_EXCEEDED - If the Tx Q is full
333** BNEP_SUCCESS - If written successfully
334**
335*******************************************************************************/
336BNEP_API extern tBNEP_RESULT BNEP_WriteBuf (UINT16 handle,
337 UINT8 *p_dest_addr,
338 BT_HDR *p_buf,
339 UINT16 protocol,
340 UINT8 *p_src_addr,
341 BOOLEAN fw_ext_present);
342
343/*******************************************************************************
344**
345** Function BNEP_Write
346**
347** Description This function sends data over a BNEP connection
348**
349** Parameters: handle - handle of the connection to write
350** p_dest_addr - BD_ADDR/Ethernet addr of the destination
351** p_data - pointer to data start
352** protocol - protocol type of the packet
353** p_src_addr - (optional) BD_ADDR/ethernet address of the source
354** (should be NULL if it is local BD Addr)
355** fw_ext_present - forwarded extensions present
356**
357** Returns: BNEP_WRONG_HANDLE - if passed handle is not valid
358** BNEP_MTU_EXCEDED - If the data length is greater than MTU
359** BNEP_IGNORE_CMD - If the packet is filtered out
360** BNEP_Q_SIZE_EXCEEDED - If the Tx Q is full
361** BNEP_NO_RESOURCES - If not able to allocate a buffer
362** BNEP_SUCCESS - If written successfully
363**
364*******************************************************************************/
365BNEP_API extern tBNEP_RESULT BNEP_Write (UINT16 handle,
366 UINT8 *p_dest_addr,
367 UINT8 *p_data,
368 UINT16 len,
369 UINT16 protocol,
370 UINT8 *p_src_addr,
371 BOOLEAN fw_ext_present);
372
373/*******************************************************************************
374**
375** Function BNEP_SetProtocolFilters
376**
377** Description This function sets the protocol filters on peer device
378**
379** Parameters: handle - Handle for the connection
380** num_filters - total number of filter ranges
381** p_start_array - Array of beginings of all protocol ranges
382** p_end_array - Array of ends of all protocol ranges
383**
384** Returns BNEP_WRONG_HANDLE - if the connection handle is not valid
385** BNEP_SET_FILTER_FAIL - if the connection is in wrong state
386** BNEP_TOO_MANY_FILTERS - if too many filters
387** BNEP_SUCCESS - if request sent successfully
388**
389*******************************************************************************/
390BNEP_API extern tBNEP_RESULT BNEP_SetProtocolFilters (UINT16 handle,
391 UINT16 num_filters,
392 UINT16 *p_start_array,
393 UINT16 *p_end_array);
394
395/*******************************************************************************
396**
397** Function BNEP_SetMulticastFilters
398**
399** Description This function sets the filters for multicast addresses for BNEP.
400**
401** Parameters: handle - Handle for the connection
402** num_filters - total number of filter ranges
403** p_start_array - Pointer to sequence of beginings of all
404** multicast address ranges
405** p_end_array - Pointer to sequence of ends of all
406** multicast address ranges
407**
408** Returns BNEP_WRONG_HANDLE - if the connection handle is not valid
409** BNEP_SET_FILTER_FAIL - if the connection is in wrong state
410** BNEP_TOO_MANY_FILTERS - if too many filters
411** BNEP_SUCCESS - if request sent successfully
412**
413*******************************************************************************/
414BNEP_API extern tBNEP_RESULT BNEP_SetMulticastFilters (UINT16 handle,
415 UINT16 num_filters,
416 UINT8 *p_start_array,
417 UINT8 *p_end_array);
418
419/*******************************************************************************
420**
421** Function BNEP_GetMyBdAddr
422**
423** Description This function returns a pointer to the local device BD address.
424** If the BD address has not been read yet, it returns NULL.
425**
426** Returns the BD address
427**
428*******************************************************************************/
429BNEP_API extern UINT8 *BNEP_GetMyBdAddr (void);
430
431/*******************************************************************************
432**
433** Function BNEP_SetTraceLevel
434**
435** Description This function sets the trace level for BNEP. If called with
436** a value of 0xFF, it simply reads the current trace level.
437**
438** Returns the new (current) trace level
439**
440*******************************************************************************/
441BNEP_API extern UINT8 BNEP_SetTraceLevel (UINT8 new_level);
442
443/*******************************************************************************
444**
445** Function BNEP_Init
446**
447** Description This function initializes the BNEP unit. It should be called
448** before accessing any other APIs to initialize the control block
449**
450** Returns void
451**
452*******************************************************************************/
453BNEP_API extern void BNEP_Init (void);
454
455/*******************************************************************************
456**
457** Function BNEP_GetStatus
458**
459** Description This function gets the status information for BNEP connection
460**
461** Returns BNEP_SUCCESS - if the status is available
462** BNEP_NO_RESOURCES - if no structure is passed for output
463** BNEP_WRONG_HANDLE - if the handle is invalid
464** BNEP_WRONG_STATE - if not in connected state
465**
466*******************************************************************************/
467BNEP_API extern tBNEP_RESULT BNEP_GetStatus (UINT16 handle, tBNEP_STATUS *p_status);
468
469
470
471#ifdef __cplusplus
472}
473#endif
474
475
476#endif