16ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach/******************************************************************************
26ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *
36ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *  Copyright (C) 2001-2012 Broadcom Corporation
46ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *
56ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *  Licensed under the Apache License, Version 2.0 (the "License");
66ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *  you may not use this file except in compliance with the License.
76ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *  You may obtain a copy of the License at:
86ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *
96ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *  http://www.apache.org/licenses/LICENSE-2.0
106ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *
116ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *  Unless required by applicable law or agreed to in writing, software
126ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *  distributed under the License is distributed on an "AS IS" BASIS,
136ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
146ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *  See the License for the specific language governing permissions and
156ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *  limitations under the License.
166ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *
176ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach ******************************************************************************/
186ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach
196ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach/******************************************************************************
206ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *
216ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *  This file contains internally used PAN definitions
226ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach *
236ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach ******************************************************************************/
246ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach
25e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#ifndef  PAN_INT_H
26e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define  PAN_INT_H
27e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
28e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#include "pan_api.h"
29e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
30e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*
31e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** This role is used to shutdown the profile. Used internally
32e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Applications should call PAN_Deregister to shutdown the profile
33e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
34e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define PAN_ROLE_INACTIVE      0
35e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
36e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Protocols supported by the host internal stack, are registered with SDP */
37e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define PAN_PROTOCOL_IP        0x0800
38e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define PAN_PROTOCOL_ARP       0x0806
39e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
40e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define PAN_PROFILE_VERSION    0x0100   /* Version 1.00 */
41e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
42e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Define the PAN Connection Control Block
43e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
44e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
45e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
46e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define PAN_STATE_IDLE              0
47e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define PAN_STATE_CONN_START        1
48e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define PAN_STATE_CONNECTED         2
49e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8             con_state;
50e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
51e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define PAN_FLAGS_CONN_COMPLETED    0x01
52e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8             con_flags;
53e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
54e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16            handle;
55e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BD_ADDR           rem_bda;
56e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
57e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16            bad_pkts_rcvd;
58e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16            src_uuid;
59e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16            dst_uuid;
60e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16            prv_src_uuid;
61e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16            prv_dst_uuid;
62e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT16            ip_addr_known;
63e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT32            ip_addr;
64e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
65e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tPAN_CONN;
66e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
67e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
68e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*  The main PAN control block
69e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
70e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct
71e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{
72e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8                       role;
73e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8                       active_role;
74e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8                       prv_active_role;
75e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tPAN_CONN                   pcb[MAX_PAN_CONNS];
76e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
77e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tPAN_CONN_STATE_CB          *pan_conn_state_cb;     /* Connection state callback */
78e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tPAN_BRIDGE_REQ_CB          *pan_bridge_req_cb;
79e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tPAN_DATA_IND_CB            *pan_data_ind_cb;
80e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tPAN_DATA_BUF_IND_CB        *pan_data_buf_ind_cb;
81e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tPAN_FILTER_IND_CB          *pan_pfilt_ind_cb;      /* protocol filter indication callback */
82e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tPAN_MFILTER_IND_CB         *pan_mfilt_ind_cb;      /* multicast filter indication callback */
83e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    tPAN_TX_DATA_FLOW_CB        *pan_tx_data_flow_cb;
84e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
85e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    BD_ADDR                     my_bda;                 /* BD Address of this device    */
86e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    char                        *user_service_name;
87e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    char                        *gn_service_name;
88e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    char                        *nap_service_name;
89e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT32                      pan_user_sdp_handle;
90e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT32                      pan_gn_sdp_handle;
91e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT32                      pan_nap_sdp_handle;
92e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8                       num_conns;
93e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach    UINT8                       trace_level;
94e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tPAN_CB;
95e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
96e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
97e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#ifdef __cplusplus
98e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachextern "C" {
99e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif
100e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
101e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Global PAN data
102e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/
103e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#if PAN_DYNAMIC_MEMORY == FALSE
104e448862a47c08eb23185aaed574b39264f5005fcAndre EisenbachPAN_API extern tPAN_CB  pan_cb;
105e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#else
106e448862a47c08eb23185aaed574b39264f5005fcAndre EisenbachPAN_API extern tPAN_CB  *pan_cb_ptr;
107e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define pan_cb (*pan_cb_ptr)
108e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif
109e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
110e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************/
111e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachextern void pan_register_with_bnep (void);
112e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachextern void pan_conn_ind_cb (UINT16 handle,
113e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                             BD_ADDR p_bda,
114e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                             tBT_UUID *remote_uuid,
115e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                             tBT_UUID *local_uuid,
116e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                             BOOLEAN is_role_change);
117e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachextern void pan_connect_state_cb (UINT16 handle, BD_ADDR rem_bda, tBNEP_RESULT result, BOOLEAN is_role_change);
118e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachextern void pan_data_ind_cb (UINT16 handle,
119e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                             UINT8 *src,
120e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                             UINT8 *dst,
121e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                             UINT16 protocol,
122e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                             UINT8 *p_data,
123e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                             UINT16 len,
124e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                             BOOLEAN fw_ext_present);
125e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachextern void pan_data_buf_ind_cb (UINT16 handle,
126e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                 UINT8 *src,
127e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                 UINT8 *dst,
128e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                 UINT16 protocol,
129e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                 BT_HDR *p_buf,
130e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                                 BOOLEAN ext);
131e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachextern void pan_tx_data_flow_cb (UINT16 handle,
132e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                            tBNEP_RESULT  event);
133e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachvoid pan_proto_filt_ind_cb (UINT16 handle,
134e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                            BOOLEAN indication,
135e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                            tBNEP_RESULT result,
136e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                            UINT16 num_filters,
137e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                            UINT8 *p_filters);
138e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachvoid pan_mcast_filt_ind_cb (UINT16 handle,
139e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                            BOOLEAN indication,
140e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                            tBNEP_RESULT result,
141e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                            UINT16 num_filters,
142e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach                            UINT8 *p_filters);
143e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachextern UINT32 pan_register_with_sdp (UINT16 uuid, UINT8 sec_mask, char *p_name, char *p_desc);
144e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachextern tPAN_CONN *pan_allocate_pcb (BD_ADDR p_bda, UINT16 handle);
145e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachextern tPAN_CONN *pan_get_pcb_by_handle (UINT16 handle);
146e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachextern tPAN_CONN *pan_get_pcb_by_addr (BD_ADDR p_bda);
147e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachextern void pan_close_all_connections (void);
148e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachextern void pan_release_pcb (tPAN_CONN *p_pcb);
149e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachextern void pan_dump_status (void);
150e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
151e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/********************************************************************************/
152e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
153e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#ifdef __cplusplus
154e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach}
155e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif
156e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
157e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif
158e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach
159