blob: bd753116d7fb1f8e0c1f6e639b9c63a90b5da1e1 [file] [log] [blame]
The Android Open Source Project5738f832012-12-12 16:00:35 -08001/******************************************************************************
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 private interface file for the BTA data gateway.
22 *
23 ******************************************************************************/
24#ifndef BTA_PAN_INT_H
25#define BTA_PAN_INT_H
26
27#include "bta_sys.h"
28#include "bta_pan_api.h"
29
30/*****************************************************************************
31** Constants
32*****************************************************************************/
33
34
35
36
37/* PAN events */
38enum
39{
40 /* these events are handled by the state machine */
41 BTA_PAN_API_CLOSE_EVT = BTA_SYS_EVT_START(BTA_ID_PAN),
42 BTA_PAN_CI_TX_READY_EVT,
43 BTA_PAN_CI_RX_READY_EVT,
44 BTA_PAN_CI_TX_FLOW_EVT,
45 BTA_PAN_CI_RX_WRITE_EVT,
46 BTA_PAN_CI_RX_WRITEBUF_EVT,
47 BTA_PAN_CONN_OPEN_EVT,
48 BTA_PAN_CONN_CLOSE_EVT,
49 BTA_PAN_BNEP_FLOW_ENABLE_EVT,
50 BTA_PAN_RX_FROM_BNEP_READY_EVT,
51
52 /* these events are handled outside of the state machine */
53 BTA_PAN_API_ENABLE_EVT,
54 BTA_PAN_API_DISABLE_EVT,
55 BTA_PAN_API_SET_ROLE_EVT,
56 BTA_PAN_API_OPEN_EVT
57};
58
Nitin Shivpure36f43cc2013-08-29 21:28:59 +053059/* state machine states */
60enum
61{
62 BTA_PAN_IDLE_ST,
63 BTA_PAN_OPEN_ST,
64 BTA_PAN_CLOSING_ST
65};
66
The Android Open Source Project5738f832012-12-12 16:00:35 -080067
68
69
70/*****************************************************************************
71** Data types
72*****************************************************************************/
73
74/* data type for BTA_PAN_API_ENABLE_EVT */
75typedef struct
76{
77 BT_HDR hdr; /* Event header */
78 tBTA_PAN_CBACK *p_cback; /* PAN callback function */
79} tBTA_PAN_API_ENABLE;
80
81/* data type for BTA_PAN_API_REG_ROLE_EVT */
82typedef struct
83{
84 BT_HDR hdr; /* Event header */
85 char user_name[BTA_SERVICE_NAME_LEN+1]; /* Service name */
86 char gn_name[BTA_SERVICE_NAME_LEN+1]; /* Service name */
87 char nap_name[BTA_SERVICE_NAME_LEN+1]; /* Service name */
88 tBTA_PAN_ROLE role;
89 UINT8 user_app_id;
90 UINT8 gn_app_id;
91 UINT8 nap_app_id;
92 tBTA_SEC user_sec_mask; /* Security mask */
93 tBTA_SEC gn_sec_mask; /* Security mask */
94 tBTA_SEC nap_sec_mask; /* Security mask */
95
96
97} tBTA_PAN_API_SET_ROLE;
98
99/* data type for BTA_PAN_API_OPEN_EVT */
100typedef struct
101{
102 BT_HDR hdr; /* Event header */
103 tBTA_PAN_ROLE local_role; /* local role */
104 tBTA_PAN_ROLE peer_role; /* peer role */
105 BD_ADDR bd_addr; /* peer bdaddr */
106} tBTA_PAN_API_OPEN;
107
108/* data type for BTA_PAN_CI_TX_FLOW_EVT */
109typedef struct
110{
111 BT_HDR hdr; /* Event header */
112 BOOLEAN enable; /* Flow control setting */
113} tBTA_PAN_CI_TX_FLOW;
114
115/* data type for BTA_PAN_CONN_OPEN_EVT */
116typedef struct
117{
118 BT_HDR hdr; /* Event header */
119 tPAN_RESULT result;
120
121} tBTA_PAN_CONN;
122
123
124
125
126/* union of all data types */
127typedef union
128{
129 BT_HDR hdr;
130 tBTA_PAN_API_ENABLE api_enable;
131 tBTA_PAN_API_SET_ROLE api_set_role;
132 tBTA_PAN_API_OPEN api_open;
133 tBTA_PAN_CI_TX_FLOW ci_tx_flow;
134 tBTA_PAN_CONN conn;
135} tBTA_PAN_DATA;
136
137/* state machine control block */
138typedef struct
139{
140 BD_ADDR bd_addr; /* peer bdaddr */
141 BUFFER_Q data_queue; /* Queue of buffers waiting to be passed to application */
142 UINT16 handle; /* BTA PAN/BNEP handle */
143 BOOLEAN in_use; /* scb in use */
144 tBTA_SEC sec_mask; /* Security mask */
145 BOOLEAN pan_flow_enable;/* BNEP flow control state */
146 BOOLEAN app_flow_enable;/* Application flow control state */
147 UINT8 state; /* State machine state */
148 tBTA_PAN_ROLE local_role; /* local role */
149 tBTA_PAN_ROLE peer_role; /* peer role */
150 UINT8 app_id; /* application id for the connection */
151
152} tBTA_PAN_SCB;
153
154
155
156/* main control block */
157typedef struct
158{
159 tBTA_PAN_SCB scb[BTA_PAN_NUM_CONN]; /* state machine control blocks */
160 tBTA_PAN_CBACK *p_cback; /* PAN callback function */
161 UINT8 app_id[3]; /* application id for PAN roles */
162 UINT8 flow_mask; /* Data flow mask */
163 UINT8 q_level; /* queue level set by application for TX data */
164
165} tBTA_PAN_CB;
166
167
168/* pan data param */
169typedef struct
170{
171 BT_HDR hdr;
172 BD_ADDR src;
173 BD_ADDR dst;
174 UINT16 protocol;
175 BOOLEAN ext;
176 BOOLEAN forward;
177
178} tBTA_PAN_DATA_PARAMS;
179
180
181/*****************************************************************************
182** Global data
183*****************************************************************************/
184
185/* PAN control block */
186
187#if BTA_DYNAMIC_MEMORY == FALSE
188extern tBTA_PAN_CB bta_pan_cb;
189#else
190extern tBTA_PAN_CB *bta_pan_cb_ptr;
191#define bta_pan_cb (*bta_pan_cb_ptr)
192#endif
193
194/*****************************************************************************
195** Function prototypes
196*****************************************************************************/
197extern tBTA_PAN_SCB *bta_pan_scb_alloc(void);
198extern void bta_pan_scb_dealloc(tBTA_PAN_SCB *p_scb);
199extern UINT8 bta_pan_scb_to_idx(tBTA_PAN_SCB *p_scb);
200extern tBTA_PAN_SCB *bta_pan_scb_by_handle(UINT16 handle);
201extern BOOLEAN bta_pan_hdl_event(BT_HDR *p_msg);
202
203/* action functions */
204extern void bta_pan_enable(tBTA_PAN_DATA *p_data);
205extern void bta_pan_disable(void);
206extern void bta_pan_set_role(tBTA_PAN_DATA *p_data);
207extern void bta_pan_open(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
208extern void bta_pan_api_close(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
209extern void bta_pan_set_shutdown(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
210extern void bta_pan_rx_path(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
211extern void bta_pan_tx_path(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
212extern void bta_pan_tx_flow(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
213extern void bta_pan_conn_open(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
214extern void bta_pan_conn_close(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
215extern void bta_pan_writebuf(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
216extern void bta_pan_write_buf(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
217extern void bta_pan_free_buf(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
218
219
220#endif /* BTA_PAN_INT_H */