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 */ 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 59/* state machine states */ 60enum 61{ 62 BTA_PAN_IDLE_ST, 63 BTA_PAN_OPEN_ST, 64 BTA_PAN_CLOSING_ST 65}; 66 67 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 */ 221