1 /******************************************************************************
3 * Copyright 2004-2012 Broadcom Corporation
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:
9 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 ******************************************************************************/
19 /******************************************************************************
21 * This is the private interface file for the BTA data gateway.
23 ******************************************************************************/
29 #include "bta/include/bta_api.h"
30 #include "bta/include/bta_pan_api.h"
31 #include "bta/sys/bta_sys.h"
32 #include "osi/include/fixed_queue.h"
33 #include "stack/include/pan_api.h"
34 #include "types/raw_address.h"
36 /*****************************************************************************
38 ****************************************************************************/
42 /* these events are handled by the state machine */
43 BTA_PAN_API_CLOSE_EVT = BTA_SYS_EVT_START(BTA_ID_PAN),
44 BTA_PAN_CI_TX_READY_EVT,
45 BTA_PAN_CI_RX_READY_EVT,
46 BTA_PAN_CI_TX_FLOW_EVT,
47 BTA_PAN_CI_RX_WRITE_EVT,
48 BTA_PAN_CI_RX_WRITEBUF_EVT,
49 BTA_PAN_CONN_OPEN_EVT,
50 BTA_PAN_CONN_CLOSE_EVT,
51 BTA_PAN_BNEP_FLOW_ENABLE_EVT,
52 BTA_PAN_RX_FROM_BNEP_READY_EVT,
54 /* these events are handled outside of the state machine */
55 BTA_PAN_API_ENABLE_EVT,
56 BTA_PAN_API_DISABLE_EVT,
57 BTA_PAN_API_SET_ROLE_EVT,
61 /* state machine states */
62 enum { BTA_PAN_IDLE_ST, BTA_PAN_OPEN_ST, BTA_PAN_CLOSING_ST };
64 /*****************************************************************************
66 ****************************************************************************/
68 /* data type for BTA_PAN_API_ENABLE_EVT */
70 BT_HDR_RIGID hdr; /* Event header */
71 tBTA_PAN_CBACK* p_cback; /* PAN callback function */
72 } tBTA_PAN_API_ENABLE;
74 /* data type for BTA_PAN_API_REG_ROLE_EVT */
76 BT_HDR_RIGID hdr; /* Event header */
77 char user_name[BTA_SERVICE_NAME_LEN + 1]; /* Service name */
78 char nap_name[BTA_SERVICE_NAME_LEN + 1]; /* Service name */
82 } tBTA_PAN_API_SET_ROLE;
84 /* data type for BTA_PAN_API_OPEN_EVT */
86 BT_HDR_RIGID hdr; /* Event header */
87 tBTA_PAN_ROLE local_role; /* local role */
88 tBTA_PAN_ROLE peer_role; /* peer role */
89 RawAddress bd_addr; /* peer bdaddr */
92 /* data type for BTA_PAN_CI_TX_FLOW_EVT */
94 BT_HDR_RIGID hdr; /* Event header */
95 bool enable; /* Flow control setting */
96 } tBTA_PAN_CI_TX_FLOW;
98 /* data type for BTA_PAN_CONN_OPEN_EVT */
100 BT_HDR_RIGID hdr; /* Event header */
105 /* union of all data types */
108 tBTA_PAN_API_ENABLE api_enable;
109 tBTA_PAN_API_SET_ROLE api_set_role;
110 tBTA_PAN_API_OPEN api_open;
111 tBTA_PAN_CI_TX_FLOW ci_tx_flow;
115 /* state machine control block */
117 RawAddress bd_addr; /* peer bdaddr */
119 data_queue; /* Queue of buffers waiting to be passed to application */
120 uint16_t handle; /* BTA PAN/BNEP handle */
121 bool in_use; /* scb in use */
122 tBTA_SEC sec_mask; /* Security mask */
123 bool pan_flow_enable; /* BNEP flow control state */
124 bool app_flow_enable; /* Application flow control state */
125 uint8_t state; /* State machine state */
126 tBTA_PAN_ROLE local_role; /* local role */
127 tBTA_PAN_ROLE peer_role; /* peer role */
128 uint8_t app_id; /* application id for the connection */
132 /* main control block */
134 tBTA_PAN_SCB scb[BTA_PAN_NUM_CONN]; /* state machine control blocks */
135 tBTA_PAN_CBACK* p_cback; /* PAN callback function */
136 uint8_t app_id[3]; /* application id for PAN roles */
137 uint8_t flow_mask; /* Data flow mask */
138 uint8_t q_level; /* queue level set by application for TX data */
151 } tBTA_PAN_DATA_PARAMS;
153 /*****************************************************************************
155 ****************************************************************************/
157 /* PAN control block */
158 extern tBTA_PAN_CB bta_pan_cb;
160 /*****************************************************************************
161 * Function prototypes
162 ****************************************************************************/
163 extern tBTA_PAN_SCB* bta_pan_scb_alloc(void);
164 extern void bta_pan_scb_dealloc(tBTA_PAN_SCB* p_scb);
165 extern uint8_t bta_pan_scb_to_idx(tBTA_PAN_SCB* p_scb);
166 extern tBTA_PAN_SCB* bta_pan_scb_by_handle(uint16_t handle);
167 extern bool bta_pan_hdl_event(BT_HDR_RIGID* p_msg);
169 /* action functions */
170 extern void bta_pan_enable(tBTA_PAN_DATA* p_data);
171 extern void bta_pan_disable(void);
172 extern void bta_pan_set_role(tBTA_PAN_DATA* p_data);
173 extern void bta_pan_open(tBTA_PAN_SCB* p_scb, tBTA_PAN_DATA* p_data);
174 extern void bta_pan_api_close(tBTA_PAN_SCB* p_scb, tBTA_PAN_DATA* p_data);
175 extern void bta_pan_rx_path(tBTA_PAN_SCB* p_scb, tBTA_PAN_DATA* p_data);
176 extern void bta_pan_tx_path(tBTA_PAN_SCB* p_scb, tBTA_PAN_DATA* p_data);
177 extern void bta_pan_tx_flow(tBTA_PAN_SCB* p_scb, tBTA_PAN_DATA* p_data);
178 extern void bta_pan_conn_open(tBTA_PAN_SCB* p_scb, tBTA_PAN_DATA* p_data);
179 extern void bta_pan_conn_close(tBTA_PAN_SCB* p_scb, tBTA_PAN_DATA* p_data);
180 extern void bta_pan_write_buf(tBTA_PAN_SCB* p_scb, tBTA_PAN_DATA* p_data);
181 extern void bta_pan_free_buf(tBTA_PAN_SCB* p_scb, tBTA_PAN_DATA* p_data);
183 #endif /* BTA_PAN_INT_H */