NSMBW-Decomp
A decompilation of New Super Mario Bros. Wii
Loading...
Searching...
No Matches
pan_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 file contains the PAN API definitions
22 *
23 ******************************************************************************/
24#ifndef PAN_API_H
25#define PAN_API_H
26
27#include "bnep_api.h"
28
29/*****************************************************************************
30** Constants
31*****************************************************************************/
32
33/* Define the minimum offset needed in a GKI buffer for
34** sending PAN packets. Note, we are currently not sending
35** extension headers, but may in the future, so allow
36** space for them
37*/
38#define PAN_MINIMUM_OFFSET BNEP_MINIMUM_OFFSET
39
40
41/*
42** The handle is passed from BNEP to PAN. The same handle is used
43** between PAN and application as well
44*/
45#define PAN_INVALID_HANDLE BNEP_INVALID_HANDLE
46
47/* Bit map for PAN roles */
48#define PAN_ROLE_CLIENT 0x01 /* PANU role */
49#define PAN_ROLE_GN_SERVER 0x02 /* GN role */
50#define PAN_ROLE_NAP_SERVER 0x04 /* NAP role */
51
52/* Bitmap to indicate the usage of the Data */
53#define PAN_DATA_TO_HOST 0x01
54#define PAN_DATA_TO_LAN 0x02
55
56
57/*****************************************************************************
58** Type Definitions
59*****************************************************************************/
60
61/* Define the result codes from PAN */
62enum
63{
64 PAN_SUCCESS, /* Success */
65 PAN_DISCONNECTED = BNEP_CONN_DISCONNECTED, /* Connection terminated */
66 PAN_CONN_FAILED = BNEP_CONN_FAILED, /* Connection failed */
67 PAN_NO_RESOURCES = BNEP_NO_RESOURCES, /* No resources */
68 PAN_MTU_EXCEDED = BNEP_MTU_EXCEDED, /* Attempt to write long data */
69 PAN_INVALID_OFFSET = BNEP_INVALID_OFFSET, /* Insufficient offset in GKI buffer */
70 PAN_CONN_FAILED_CFG = BNEP_CONN_FAILED_CFG, /* Connection failed cos of config */
71 PAN_INVALID_SRC_ROLE = BNEP_CONN_FAILED_SRC_UUID, /* Connection failed wrong source UUID */
72 PAN_INVALID_DST_ROLE = BNEP_CONN_FAILED_DST_UUID, /* Connection failed wrong destination UUID */
73 PAN_CONN_FAILED_UUID_SIZE = BNEP_CONN_FAILED_UUID_SIZE, /* Connection failed wrong size UUID */
74 PAN_Q_SIZE_EXCEEDED = BNEP_Q_SIZE_EXCEEDED, /* Too many buffers to dest */
75 PAN_TOO_MANY_FILTERS = BNEP_TOO_MANY_FILTERS, /* Too many local filters specified */
76 PAN_SET_FILTER_FAIL = BNEP_SET_FILTER_FAIL, /* Set Filter failed */
77 PAN_WRONG_HANDLE = BNEP_WRONG_HANDLE, /* Wrong handle for the connection */
78 PAN_WRONG_STATE = BNEP_WRONG_STATE, /* Connection is in wrong state */
79 PAN_SECURITY_FAIL = BNEP_SECURITY_FAIL, /* Failed because of security */
80 PAN_IGNORE_CMD = BNEP_IGNORE_CMD, /* To ignore the rcvd command */
81 PAN_TX_FLOW_ON = BNEP_TX_FLOW_ON, /* tx data flow enabled */
82 PAN_TX_FLOW_OFF = BNEP_TX_FLOW_OFF, /* tx data flow disabled */
83 PAN_FAILURE /* Failure */
84
85};
86typedef UINT8 tPAN_RESULT;
87
88
89/*****************************************************************
90** Callback Function Prototypes
91*****************************************************************/
92
93/* This is call back function used to report connection status
94** to the application. The second parameter TRUE means
95** to create the bridge and FALSE means to remove it.
96*/
97typedef void (tPAN_CONN_STATE_CB) (UINT16 handle, BD_ADDR bd_addr, tPAN_RESULT state, BOOLEAN is_role_change,
98 UINT8 src_role, UINT8 dst_role);
99
100
101/* This is call back function used to create bridge for the
102** Connected device. The parameter "state" indicates
103** whether to create the bridge or remove it. TRUE means
104** to create the bridge and FALSE means to remove it.
105*/
106typedef void (tPAN_BRIDGE_REQ_CB) (BD_ADDR bd_addr, BOOLEAN state);
107
108
109/* Data received indication callback prototype. Parameters are
110** Source BD/Ethernet Address
111** Dest BD/Ethernet address
112** Protocol
113** Address of buffer (or data if non-GKI)
114** Length of data (non-GKI)
115** ext is flag to indicate whether it has aby extension headers
116** Flag used to indicate to forward on LAN
117** FALSE - Use it for internal stack
118** TRUE - Send it across the ethernet as well
119*/
120typedef void (tPAN_DATA_IND_CB) (UINT16 handle,
121 BD_ADDR src,
122 BD_ADDR dst,
123 UINT16 protocol,
124 UINT8 *p_data,
125 UINT16 len,
126 BOOLEAN ext,
127 BOOLEAN forward);
128
129
130/* Data buffer received indication callback prototype. Parameters are
131** Source BD/Ethernet Address
132** Dest BD/Ethernet address
133** Protocol
134** pointer to the data buffer
135** ext is flag to indicate whether it has aby extension headers
136** Flag used to indicate to forward on LAN
137** FALSE - Use it for internal stack
138** TRUE - Send it across the ethernet as well
139*/
140typedef void (tPAN_DATA_BUF_IND_CB) (UINT16 handle,
141 BD_ADDR src,
142 BD_ADDR dst,
143 UINT16 protocol,
144 BT_HDR *p_buf,
145 BOOLEAN ext,
146 BOOLEAN forward);
147
148
149/* Flow control callback for TX data. Parameters are
150** Handle to the connection
151** Event flow status
152*/
153typedef void (tPAN_TX_DATA_FLOW_CB) (UINT16 handle,
154 tPAN_RESULT event);
155
156/* Filters received indication callback prototype. Parameters are
157** Handle to the connection
158** TRUE if the cb is called for indication
159** Ignore this if it is indication, otherwise it is the result
160** for the filter set operation performed by the local
161** device
162** Number of protocol filters present
163** Pointer to the filters start. Filters are present in pairs
164** of start of the range and end of the range.
165** They will be present in big endian order. First
166** two bytes will be starting of the first range and
167** next two bytes will be ending of the range.
168*/
169typedef void (tPAN_FILTER_IND_CB) (UINT16 handle,
170 BOOLEAN indication,
171 tBNEP_RESULT result,
172 UINT16 num_filters,
173 UINT8 *p_filters);
174
175
176
177/* Multicast Filters received indication callback prototype. Parameters are
178** Handle to the connection
179** TRUE if the cb is called for indication
180** Ignore this if it is indication, otherwise it is the result
181** for the filter set operation performed by the local
182** device
183** Number of multicast filters present
184** Pointer to the filters start. Filters are present in pairs
185** of start of the range and end of the range.
186** First six bytes will be starting of the first range and
187** next six bytes will be ending of the range.
188*/
189typedef void (tPAN_MFILTER_IND_CB) (UINT16 handle,
190 BOOLEAN indication,
191 tBNEP_RESULT result,
192 UINT16 num_mfilters,
193 UINT8 *p_mfilters);
194
195
196
197
198/* This structure is used to register with PAN profile
199** It is passed as a parameter to PAN_Register call.
200*/
201typedef struct
202{
203 tPAN_CONN_STATE_CB *pan_conn_state_cb; /* Connection state callback */
204 tPAN_BRIDGE_REQ_CB *pan_bridge_req_cb; /* Bridge request callback */
205 tPAN_DATA_IND_CB *pan_data_ind_cb; /* Data indication callback */
206 tPAN_DATA_BUF_IND_CB *pan_data_buf_ind_cb; /* Data buffer indication callback */
207 tPAN_FILTER_IND_CB *pan_pfilt_ind_cb; /* protocol filter indication callback */
208 tPAN_MFILTER_IND_CB *pan_mfilt_ind_cb; /* multicast filter indication callback */
209 tPAN_TX_DATA_FLOW_CB *pan_tx_data_flow_cb; /* data flow callback */
210 char *user_service_name; /* Service name for PANU role */
211 char *gn_service_name; /* Service name for GN role */
212 char *nap_service_name; /* Service name for NAP role */
213
215
216
217/*****************************************************************************
218** External Function Declarations
219*****************************************************************************/
220#ifdef __cplusplus
221extern "C"
222{
223#endif
224
225/*******************************************************************************
226**
227** Function PAN_Register
228**
229** Description This function is called by the application to register
230** its callbacks with PAN profile. The application then
231** should set the PAN role explicitly.
232**
233** Parameters: p_register - contains all callback function pointers
234**
235**
236** Returns none
237**
238*******************************************************************************/
239PAN_API extern void PAN_Register (tPAN_REGISTER *p_register);
240
241
242/*******************************************************************************
243**
244** Function PAN_Deregister
245**
246** Description This function is called by the application to de-register
247** its callbacks with PAN profile. This will make the PAN to
248** become inactive. This will deregister PAN services from SDP
249** and close all active connections
250**
251** Returns none
252**
253*******************************************************************************/
254PAN_API extern void PAN_Deregister (void);
255
256/*******************************************************************************
257**
258** Function PAN_SetRole
259**
260** Description This function is called by the application to set the PAN
261** profile role. This should be called after PAN_Register.
262** This can be called any time to change the PAN role
263**
264** Parameters: role - is bit map of roles to be active
265** PAN_ROLE_CLIENT is for PANU role
266** PAN_ROLE_GN_SERVER is for GN role
267** PAN_ROLE_NAP_SERVER is for NAP role
268** sec_mask - Security mask for different roles
269** It is array of UINT8. The byte represent the
270** security for roles PANU, GN and NAP in order
271** p_user_name - Service name for PANU role
272** p_gn_name - Service name for GN role
273** p_nap_name - Service name for NAP role
274** Can be NULL if user wants it to be default
275**
276** Returns PAN_SUCCESS - if the role is set successfully
277** PAN_FAILURE - if the role is not valid
278**
279*******************************************************************************/
280PAN_API extern tPAN_RESULT PAN_SetRole (UINT8 role,
281 UINT8 *sec_mask,
282 char *p_user_name,
283 char *p_gn_name,
284 char *p_nap_name);
285
286/*******************************************************************************
287**
288** Function PAN_Connect
289**
290** Description This function is called by the application to initiate a
291** connection to the remote device
292**
293** Parameters: rem_bda - BD Addr of the remote device
294** src_role - Role of the local device for the connection
295** dst_role - Role of the remote device for the connection
296** PAN_ROLE_CLIENT is for PANU role
297** PAN_ROLE_GN_SERVER is for GN role
298** PAN_ROLE_NAP_SERVER is for NAP role
299** *handle - Pointer for returning Handle to the connection
300**
301** Returns PAN_SUCCESS - if the connection is initiated successfully
302** PAN_NO_RESOURCES - resources are not sufficent
303** PAN_FAILURE - if the connection cannot be initiated
304** this can be because of the combination of
305** src and dst roles may not be valid or
306** allowed at that point of time
307**
308*******************************************************************************/
309PAN_API extern tPAN_RESULT PAN_Connect (BD_ADDR rem_bda, UINT8 src_role, UINT8 dst_role, UINT16 *handle);
310
311/*******************************************************************************
312**
313** Function PAN_Disconnect
314**
315** Description This is used to disconnect the connection
316**
317** Parameters: handle - handle for the connection
318**
319** Returns PAN_SUCCESS - if the connection is closed successfully
320** PAN_FAILURE - if the connection is not found or
321** there is an error in disconnecting
322**
323*******************************************************************************/
324PAN_API extern tPAN_RESULT PAN_Disconnect (UINT16 handle);
325
326/*******************************************************************************
327**
328** Function PAN_Write
329**
330** Description This sends data over the PAN connections. If this is called
331** on GN or NAP side and the packet is multicast or broadcast
332** it will be sent on all the links. Otherwise the correct link
333** is found based on the destination address and forwarded on it
334** If the return value is not PAN_SUCCESS the application should
335** take care of releasing the message buffer
336**
337** Parameters: dst - MAC or BD Addr of the destination device
338** src - MAC or BD Addr of the source who sent this packet
339** protocol - protocol of the ethernet packet like IP or ARP
340** p_data - pointer to the data
341** len - length of the data
342** ext - to indicate that extension headers present
343**
344** Returns PAN_SUCCESS - if the data is sent successfully
345** PAN_FAILURE - if the connection is not found or
346** there is an error in sending data
347**
348*******************************************************************************/
349PAN_API extern tPAN_RESULT PAN_Write (UINT16 handle,
350 BD_ADDR dst,
351 BD_ADDR src,
352 UINT16 protocol,
353 UINT8 *p_data,
354 UINT16 len,
355 BOOLEAN ext);
356
357/*******************************************************************************
358**
359** Function PAN_WriteBuf
360**
361** Description This sends data over the PAN connections. If this is called
362** on GN or NAP side and the packet is multicast or broadcast
363** it will be sent on all the links. Otherwise the correct link
364** is found based on the destination address and forwarded on it
365** If the return value is not PAN_SUCCESS the application should
366** take care of releasing the message buffer
367**
368** Parameters: dst - MAC or BD Addr of the destination device
369** src - MAC or BD Addr of the source who sent this packet
370** protocol - protocol of the ethernet packet like IP or ARP
371** p_buf - pointer to the data buffer
372** ext - to indicate that extension headers present
373**
374** Returns PAN_SUCCESS - if the data is sent successfully
375** PAN_FAILURE - if the connection is not found or
376** there is an error in sending data
377**
378*******************************************************************************/
379PAN_API extern tPAN_RESULT PAN_WriteBuf (UINT16 handle,
380 BD_ADDR dst,
381 BD_ADDR src,
382 UINT16 protocol,
383 BT_HDR *p_buf,
384 BOOLEAN ext);
385
386/*******************************************************************************
387**
388** Function PAN_SetProtocolFilters
389**
390** Description This function is used to set protocol filters on the peer
391**
392** Parameters: handle - handle for the connection
393** num_filters - number of protocol filter ranges
394** start - array of starting protocol numbers
395** end - array of ending protocol numbers
396**
397**
398** Returns PAN_SUCCESS if protocol filters are set successfully
399** PAN_FAILURE if connection not found or error in setting
400**
401*******************************************************************************/
402PAN_API extern tPAN_RESULT PAN_SetProtocolFilters (UINT16 handle,
403 UINT16 num_filters,
404 UINT16 *p_start_array,
405 UINT16 *p_end_array);
406
407/*******************************************************************************
408**
409** Function PAN_SetMulticastFilters
410**
411** Description This function is used to set multicast filters on the peer
412**
413** Parameters: handle - handle for the connection
414** num_filters - number of multicast filter ranges
415** p_start_array - Pointer to sequence of beginings of all
416** multicast address ranges
417** p_end_array - Pointer to sequence of ends of all
418** multicast address ranges
419**
420**
421** Returns PAN_SUCCESS if multicast filters are set successfully
422** PAN_FAILURE if connection not found or error in setting
423**
424*******************************************************************************/
425PAN_API extern tBNEP_RESULT PAN_SetMulticastFilters (UINT16 handle,
426 UINT16 num_mcast_filters,
427 UINT8 *p_start_array,
428 UINT8 *p_end_array);
429
430/*******************************************************************************
431**
432** Function PAN_SetTraceLevel
433**
434** Description This function sets the trace level for PAN. If called with
435** a value of 0xFF, it simply reads the current trace level.
436**
437** Returns the new (current) trace level
438**
439*******************************************************************************/
440PAN_API extern UINT8 PAN_SetTraceLevel (UINT8 new_level);
441
442/*******************************************************************************
443**
444** Function PAN_Init
445**
446** Description This function initializes the PAN unit. It should be called
447** before accessing any other APIs to initialize the control
448** block.
449**
450** Returns void
451**
452*******************************************************************************/
453PAN_API extern void PAN_Init (void);
454
455#ifdef __cplusplus
456}
457#endif
458
459#endif /* PAN_API_H */