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