blob: 4e0223645fa324d1daf4644c965efae17144a5d0 [file] [log] [blame]
The Android Open Source Project5738f832012-12-12 16:00:35 -08001/******************************************************************************
2 *
3 * Copyright (C) 2001-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 file contains internally used PAN definitions
22 *
23 ******************************************************************************/
24
25#ifndef PAN_INT_H
26#define PAN_INT_H
27
28#include "pan_api.h"
29
30/*
31** This role is used to shutdown the profile. Used internally
32** Applications should call PAN_Deregister to shutdown the profile
33*/
34#define PAN_ROLE_INACTIVE 0
35
36/* Protocols supported by the host internal stack, are registered with SDP */
37#define PAN_PROTOCOL_IP 0x0800
38#define PAN_PROTOCOL_ARP 0x0806
39
40#define PAN_PROFILE_VERSION 0x0100 /* Version 1.00 */
41
42/* Define the PAN Connection Control Block
43*/
44typedef struct
45{
46#define PAN_STATE_IDLE 0
47#define PAN_STATE_CONN_START 1
48#define PAN_STATE_CONNECTED 2
49 UINT8 con_state;
50
51#define PAN_FLAGS_CONN_COMPLETED 0x01
52 UINT8 con_flags;
53
54 UINT16 handle;
55 BD_ADDR rem_bda;
56
57 UINT16 bad_pkts_rcvd;
58 UINT16 src_uuid;
59 UINT16 dst_uuid;
60 UINT16 prv_src_uuid;
61 UINT16 prv_dst_uuid;
62 UINT16 ip_addr_known;
63 UINT32 ip_addr;
64
65} tPAN_CONN;
66
67
68/* The main PAN control block
69*/
70typedef struct
71{
72 UINT8 role;
73 UINT8 active_role;
74 UINT8 prv_active_role;
75 tPAN_CONN pcb[MAX_PAN_CONNS];
76
77 tPAN_CONN_STATE_CB *pan_conn_state_cb; /* Connection state callback */
78 tPAN_BRIDGE_REQ_CB *pan_bridge_req_cb;
79 tPAN_DATA_IND_CB *pan_data_ind_cb;
80 tPAN_DATA_BUF_IND_CB *pan_data_buf_ind_cb;
81 tPAN_FILTER_IND_CB *pan_pfilt_ind_cb; /* protocol filter indication callback */
82 tPAN_MFILTER_IND_CB *pan_mfilt_ind_cb; /* multicast filter indication callback */
83 tPAN_TX_DATA_FLOW_CB *pan_tx_data_flow_cb;
84
85 BD_ADDR my_bda; /* BD Address of this device */
86 char *user_service_name;
87 char *gn_service_name;
88 char *nap_service_name;
89 UINT32 pan_user_sdp_handle;
90 UINT32 pan_gn_sdp_handle;
91 UINT32 pan_nap_sdp_handle;
92 UINT8 num_conns;
93 UINT8 trace_level;
94} tPAN_CB;
95
96
97#ifdef __cplusplus
98extern "C" {
99#endif
100
101/* Global PAN data
102*/
103#if PAN_DYNAMIC_MEMORY == FALSE
104PAN_API extern tPAN_CB pan_cb;
105#else
106PAN_API extern tPAN_CB *pan_cb_ptr;
107#define pan_cb (*pan_cb_ptr)
108#endif
109
110/*******************************************************************************/
111extern void pan_register_with_bnep (void);
112extern void pan_conn_ind_cb (UINT16 handle,
113 BD_ADDR p_bda,
114 tBT_UUID *remote_uuid,
115 tBT_UUID *local_uuid,
116 BOOLEAN is_role_change);
117extern void pan_connect_state_cb (UINT16 handle, BD_ADDR rem_bda, tBNEP_RESULT result, BOOLEAN is_role_change);
118extern void pan_data_ind_cb (UINT16 handle,
119 UINT8 *src,
120 UINT8 *dst,
121 UINT16 protocol,
122 UINT8 *p_data,
123 UINT16 len,
124 BOOLEAN fw_ext_present);
125extern void pan_data_buf_ind_cb (UINT16 handle,
126 UINT8 *src,
127 UINT8 *dst,
128 UINT16 protocol,
129 BT_HDR *p_buf,
130 BOOLEAN ext);
131extern void pan_tx_data_flow_cb (UINT16 handle,
132 tBNEP_RESULT event);
133void pan_proto_filt_ind_cb (UINT16 handle,
134 BOOLEAN indication,
135 tBNEP_RESULT result,
136 UINT16 num_filters,
137 UINT8 *p_filters);
138void pan_mcast_filt_ind_cb (UINT16 handle,
139 BOOLEAN indication,
140 tBNEP_RESULT result,
141 UINT16 num_filters,
142 UINT8 *p_filters);
143extern UINT32 pan_register_with_sdp (UINT16 uuid, UINT8 sec_mask, char *p_name, char *p_desc);
144extern tPAN_CONN *pan_allocate_pcb (BD_ADDR p_bda, UINT16 handle);
145extern tPAN_CONN *pan_get_pcb_by_handle (UINT16 handle);
146extern tPAN_CONN *pan_get_pcb_by_addr (BD_ADDR p_bda);
147extern void pan_close_all_connections (void);
148extern void pan_release_pcb (tPAN_CONN *p_pcb);
149extern void pan_dump_status (void);
150
151/********************************************************************************/
152
153#ifdef __cplusplus
154}
155#endif
156
157#endif
158