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 
38 typedef 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 
48 typedef 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 
57 typedef UINT8   tBTA_PAN_ROLE;
58 
59 /*  information regarding PAN roles */
60 typedef 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 */
70 typedef 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 */
77 typedef 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 */
86 typedef 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 */
97 typedef struct
98 {
99     UINT16          handle;     /* Handle associated with the connection. */
100 } tBTA_PAN_CLOSE;
101 
102 /* Union of all PAN callback structures */
103 typedef 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 */
117 typedef void (tBTA_PAN_CBACK)(tBTA_PAN_EVT event, tBTA_PAN *p_data);
118 
119 /*****************************************************************************
120 **  External Function Declarations
121 *****************************************************************************/
122 #ifdef __cplusplus
123 extern "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 *******************************************************************************/
139 extern 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 *******************************************************************************/
150 extern 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 *******************************************************************************/
163 void 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 *******************************************************************************/
179 void 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 *******************************************************************************/
193 extern void BTA_PanClose(UINT16 handle);
194 
195 
196 #ifdef __cplusplus
197 }
198 #endif
199 
200 #endif /* BTA_PAN_API_H */
201