1/******************************************************************************
2 *
3 *  Copyright (C) 2004-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 is the public interface file for the Personal Area Networking (PAN)
22 *  subsystem of BTA, Broadcom's Bluetooth application layer for mobile
23 *  phones.
24 *
25 ******************************************************************************/
26#ifndef BTA_PAN_API_H
27#define BTA_PAN_API_H
28
29#include "bta_api.h"
30#include "pan_api.h"
31
32/*****************************************************************************
33**  Constants and data types
34*****************************************************************************/
35#define BTA_PAN_SUCCESS          0
36#define BTA_PAN_FAIL             1
37
38typedef UINT8 tBTA_PAN_STATUS;
39
40
41/* PAN Callback events */
42#define BTA_PAN_ENABLE_EVT       0       /* PAN service is enabled. */
43#define BTA_PAN_SET_ROLE_EVT     1       /* PAN roles registered */
44#define BTA_PAN_OPENING_EVT      2       /* Connection is being opened. */
45#define BTA_PAN_OPEN_EVT         3       /* Connection has been opened. */
46#define BTA_PAN_CLOSE_EVT        4       /* Connection has been closed. */
47
48typedef UINT8 tBTA_PAN_EVT;
49
50
51/* pan roles */
52#define BTA_PAN_ROLE_PANU        PAN_ROLE_CLIENT
53#define BTA_PAN_ROLE_GN          PAN_ROLE_GN_SERVER
54#define BTA_PAN_ROLE_NAP         PAN_ROLE_NAP_SERVER
55
56
57typedef UINT8   tBTA_PAN_ROLE;
58
59/*  information regarding PAN roles */
60typedef struct
61{
62    char *p_srv_name;  /* service name for the PAN role */
63    UINT8 app_id;      /* application id */
64    tBTA_SEC sec_mask; /* security setting for the role */
65
66} tBTA_PAN_ROLE_INFO;
67
68
69/* Event associated with BTA_PAN_SET_ROLE_EVT */
70typedef struct
71{
72    tBTA_PAN_STATUS status;     /* status of set role event */
73    tBTA_PAN_ROLE   role;       /* PAN roles successfully registered */
74} tBTA_PAN_SET_ROLE;
75
76/* Event associated with BTA_PAN_OPENING_EVT */
77typedef struct
78{
79    BD_ADDR         bd_addr;    /* BD address of peer device. */
80    UINT16          handle;     /* Handle associated with this connection. */
81
82} tBTA_PAN_OPENING;
83
84
85/* Event associated with BTA_PAN_OPEN_EVT */
86typedef struct
87{
88    BD_ADDR         bd_addr;    /* BD address of peer device. */
89    UINT16          handle;     /* Handle associated with this connection. */
90    tBTA_PAN_STATUS status;     /* status of open event */
91    tBTA_PAN_ROLE   local_role; /* Local device PAN role for the connection */
92    tBTA_PAN_ROLE   peer_role;  /* Peer device PAN role for the connection */
93
94} tBTA_PAN_OPEN;
95
96/* Event associated with BTA_PAN_CLOSE_EVT */
97typedef struct
98{
99    UINT16          handle;     /* Handle associated with the connection. */
100} tBTA_PAN_CLOSE;
101
102/* Union of all PAN callback structures */
103typedef union
104{
105    tBTA_PAN_SET_ROLE   set_role;   /* set_role event */
106    tBTA_PAN_OPEN       open;       /* Connection has been opened. */
107    tBTA_PAN_OPENING    opening;    /* Connection being opened */
108    tBTA_PAN_CLOSE      close;      /* Connection has been closed. */
109} tBTA_PAN;
110
111/* Number of PAN connections */
112#ifndef BTA_PAN_NUM_CONN
113#define BTA_PAN_NUM_CONN         4
114#endif
115
116/* PAN callback */
117typedef void (tBTA_PAN_CBACK)(tBTA_PAN_EVT event, tBTA_PAN *p_data);
118
119/*****************************************************************************
120**  External Function Declarations
121*****************************************************************************/
122#ifdef __cplusplus
123extern "C"
124{
125#endif
126
127/*******************************************************************************
128**
129** Function         BTA_PanEnable
130**
131** Description      Enable PAN service.  This function must be
132**                  called before any other functions in the PAN API are called.
133**                  When the enable operation is complete the callback function
134**                  will be called with a BTA_PAN_ENABLE_EVT.
135**
136** Returns          void
137**
138*******************************************************************************/
139extern void BTA_PanEnable(tBTA_PAN_CBACK p_cback);
140
141/*******************************************************************************
142**
143** Function         BTA_PanDisable
144**
145** Description      Disable PAN service.
146**
147** Returns          void
148**
149*******************************************************************************/
150extern void BTA_PanDisable(void);
151
152
153/*******************************************************************************
154**
155** Function         BTA_PanSetRole
156**
157** Description      Sets PAN roles. When the enable operation is complete
158**                  the callback function will be called with a BTA_PAN_SET_ROLE_EVT.
159**
160** Returns          void
161**
162*******************************************************************************/
163void BTA_PanSetRole(tBTA_PAN_ROLE role, tBTA_PAN_ROLE_INFO *p_user_info, tBTA_PAN_ROLE_INFO *p_gn_info,
164                    tBTA_PAN_ROLE_INFO *p_nap_info);
165
166
167/*******************************************************************************
168**
169** Function         BTA_PanOpen
170**
171** Description      Opens a connection to a peer device.
172**                  When connection is open callback function is called
173**                  with a BTA_PAN_OPEN_EVT.
174**
175**
176** Returns          void
177**
178*******************************************************************************/
179void BTA_PanOpen(BD_ADDR bd_addr, tBTA_PAN_ROLE    local_role, tBTA_PAN_ROLE  peer_role);
180
181
182
183/*******************************************************************************
184**
185** Function         BTA_PanClose
186**
187** Description      Close a PAN  connection to a peer device.
188**
189**
190** Returns          void
191**
192*******************************************************************************/
193extern void BTA_PanClose(UINT16 handle);
194
195
196#ifdef __cplusplus
197}
198#endif
199
200#endif /* BTA_PAN_API_H */
201