• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 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 */
38 enum
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 
59 
60 
61 
62 /*****************************************************************************
63 **  Data types
64 *****************************************************************************/
65 
66 /* data type for BTA_PAN_API_ENABLE_EVT */
67 typedef struct
68 {
69     BT_HDR              hdr;                        /* Event header */
70     tBTA_PAN_CBACK     *p_cback;                    /* PAN callback function */
71 } tBTA_PAN_API_ENABLE;
72 
73 /* data type for BTA_PAN_API_REG_ROLE_EVT */
74 typedef struct
75 {
76     BT_HDR              hdr;                             /* Event header */
77     char                user_name[BTA_SERVICE_NAME_LEN+1];   /* Service name */
78     char                gn_name[BTA_SERVICE_NAME_LEN+1];     /* Service name */
79     char                nap_name[BTA_SERVICE_NAME_LEN+1];    /* Service name */
80     tBTA_PAN_ROLE       role;
81     UINT8               user_app_id;
82     UINT8               gn_app_id;
83     UINT8               nap_app_id;
84     tBTA_SEC            user_sec_mask;                   /* Security mask */
85     tBTA_SEC            gn_sec_mask;                     /* Security mask */
86     tBTA_SEC            nap_sec_mask;                    /* Security mask */
87 
88 
89 } tBTA_PAN_API_SET_ROLE;
90 
91 /* data type for BTA_PAN_API_OPEN_EVT */
92 typedef struct
93 {
94     BT_HDR              hdr;                        /* Event header */
95     tBTA_PAN_ROLE        local_role;                 /* local role */
96     tBTA_PAN_ROLE        peer_role;                  /* peer role */
97     BD_ADDR             bd_addr;                    /* peer bdaddr */
98 } tBTA_PAN_API_OPEN;
99 
100 /* data type for BTA_PAN_CI_TX_FLOW_EVT */
101 typedef struct
102 {
103     BT_HDR          hdr;                    /* Event header */
104     BOOLEAN         enable;                 /* Flow control setting */
105 } tBTA_PAN_CI_TX_FLOW;
106 
107 /* data type for BTA_PAN_CONN_OPEN_EVT */
108 typedef struct
109 {
110     BT_HDR          hdr;        /* Event header */
111     tPAN_RESULT     result;
112 
113 } tBTA_PAN_CONN;
114 
115 
116 
117 
118 /* union of all data types */
119 typedef union
120 {
121     BT_HDR                   hdr;
122     tBTA_PAN_API_ENABLE      api_enable;
123     tBTA_PAN_API_SET_ROLE    api_set_role;
124     tBTA_PAN_API_OPEN        api_open;
125     tBTA_PAN_CI_TX_FLOW      ci_tx_flow;
126     tBTA_PAN_CONN            conn;
127 } tBTA_PAN_DATA;
128 
129 /* state machine control block */
130 typedef struct
131 {
132     BD_ADDR                 bd_addr;        /* peer bdaddr */
133     BUFFER_Q                data_queue;     /* Queue of buffers waiting to be passed to application */
134     UINT16                  handle;         /* BTA PAN/BNEP handle */
135     BOOLEAN                 in_use;         /* scb in use */
136     tBTA_SEC                sec_mask;       /* Security mask */
137     BOOLEAN                 pan_flow_enable;/* BNEP flow control state */
138     BOOLEAN                 app_flow_enable;/* Application flow control state */
139     UINT8                   state;          /* State machine state */
140     tBTA_PAN_ROLE            local_role;     /* local role */
141     tBTA_PAN_ROLE            peer_role;      /* peer role */
142     UINT8                    app_id;         /* application id for the connection */
143 
144 } tBTA_PAN_SCB;
145 
146 
147 
148 /* main control block */
149 typedef struct
150 {
151     tBTA_PAN_SCB    scb[BTA_PAN_NUM_CONN];          /* state machine control blocks */
152     tBTA_PAN_CBACK *p_cback;                        /* PAN callback function */
153     UINT8            app_id[3];                      /* application id for PAN roles */
154     UINT8           flow_mask;                      /* Data flow mask */
155     UINT8           q_level;                        /* queue level set by application for TX data */
156 
157 } tBTA_PAN_CB;
158 
159 
160 /* pan data param */
161 typedef struct
162 {
163     BT_HDR  hdr;
164     BD_ADDR src;
165     BD_ADDR dst;
166     UINT16  protocol;
167     BOOLEAN ext;
168     BOOLEAN forward;
169 
170 } tBTA_PAN_DATA_PARAMS;
171 
172 
173 /*****************************************************************************
174 **  Global data
175 *****************************************************************************/
176 
177 /* PAN control block */
178 
179 #if BTA_DYNAMIC_MEMORY == FALSE
180 extern tBTA_PAN_CB  bta_pan_cb;
181 #else
182 extern tBTA_PAN_CB *bta_pan_cb_ptr;
183 #define bta_pan_cb (*bta_pan_cb_ptr)
184 #endif
185 
186 /*****************************************************************************
187 **  Function prototypes
188 *****************************************************************************/
189 extern tBTA_PAN_SCB *bta_pan_scb_alloc(void);
190 extern void bta_pan_scb_dealloc(tBTA_PAN_SCB *p_scb);
191 extern UINT8 bta_pan_scb_to_idx(tBTA_PAN_SCB *p_scb);
192 extern tBTA_PAN_SCB *bta_pan_scb_by_handle(UINT16 handle);
193 extern BOOLEAN bta_pan_hdl_event(BT_HDR *p_msg);
194 
195 /* action functions */
196 extern void bta_pan_enable(tBTA_PAN_DATA *p_data);
197 extern void bta_pan_disable(void);
198 extern void bta_pan_set_role(tBTA_PAN_DATA *p_data);
199 extern void bta_pan_open(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
200 extern void bta_pan_api_close(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
201 extern void bta_pan_set_shutdown(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
202 extern void bta_pan_rx_path(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
203 extern void bta_pan_tx_path(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
204 extern void bta_pan_tx_flow(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
205 extern void bta_pan_conn_open(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
206 extern void bta_pan_conn_close(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
207 extern void bta_pan_writebuf(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
208 extern void bta_pan_write_buf(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
209 extern void bta_pan_free_buf(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
210 
211 
212 #endif /* BTA_PAN_INT_H */
213