15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 35738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Copyright (C) 2001-2012 Broadcom Corporation 45738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 55738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 65738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * you may not use this file except in compliance with the License. 75738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * You may obtain a copy of the License at: 85738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 95738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * See the License for the specific language governing permissions and 155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * limitations under the License. 165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/ 185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * This file contains internally used PAN definitions 225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/ 245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifndef PAN_INT_H 265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define PAN_INT_H 275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "pan_api.h" 295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* 315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** This role is used to shutdown the profile. Used internally 325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Applications should call PAN_Deregister to shutdown the profile 335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define PAN_ROLE_INACTIVE 0 355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Protocols supported by the host internal stack, are registered with SDP */ 375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define PAN_PROTOCOL_IP 0x0800 385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define PAN_PROTOCOL_ARP 0x0806 395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define PAN_PROFILE_VERSION 0x0100 /* Version 1.00 */ 415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define the PAN Connection Control Block 435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define PAN_STATE_IDLE 0 475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define PAN_STATE_CONN_START 1 485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define PAN_STATE_CONNECTED 2 495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 con_state; 505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define PAN_FLAGS_CONN_COMPLETED 0x01 525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 con_flags; 535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 handle; 555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_ADDR rem_bda; 565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 bad_pkts_rcvd; 585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 src_uuid; 595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 dst_uuid; 605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 prv_src_uuid; 615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 prv_dst_uuid; 625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 ip_addr_known; 635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 ip_addr; 645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tPAN_CONN; 665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* The main PAN control block 695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 role; 735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 active_role; 745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 prv_active_role; 755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tPAN_CONN pcb[MAX_PAN_CONNS]; 765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tPAN_CONN_STATE_CB *pan_conn_state_cb; /* Connection state callback */ 785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tPAN_BRIDGE_REQ_CB *pan_bridge_req_cb; 795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tPAN_DATA_IND_CB *pan_data_ind_cb; 805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tPAN_DATA_BUF_IND_CB *pan_data_buf_ind_cb; 815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tPAN_FILTER_IND_CB *pan_pfilt_ind_cb; /* protocol filter indication callback */ 825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tPAN_MFILTER_IND_CB *pan_mfilt_ind_cb; /* multicast filter indication callback */ 835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tPAN_TX_DATA_FLOW_CB *pan_tx_data_flow_cb; 845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_ADDR my_bda; /* BD Address of this device */ 865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project char *user_service_name; 875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project char *gn_service_name; 885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project char *nap_service_name; 895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 pan_user_sdp_handle; 905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 pan_gn_sdp_handle; 915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 pan_nap_sdp_handle; 925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 num_conns; 935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 trace_level; 945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tPAN_CB; 955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifdef __cplusplus 985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern "C" { 995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 1005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Global PAN data 1025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 1035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if PAN_DYNAMIC_MEMORY == FALSE 1045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectPAN_API extern tPAN_CB pan_cb; 1055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#else 1065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectPAN_API extern tPAN_CB *pan_cb_ptr; 1075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define pan_cb (*pan_cb_ptr) 1085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 1095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************/ 1115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void pan_register_with_bnep (void); 1125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void pan_conn_ind_cb (UINT16 handle, 1135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_ADDR p_bda, 1145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBT_UUID *remote_uuid, 1155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBT_UUID *local_uuid, 1165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN is_role_change); 1175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void pan_connect_state_cb (UINT16 handle, BD_ADDR rem_bda, tBNEP_RESULT result, BOOLEAN is_role_change); 1185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void pan_data_ind_cb (UINT16 handle, 1195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *src, 1205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *dst, 1215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 protocol, 1225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_data, 1235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 len, 1245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN fw_ext_present); 1255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void pan_data_buf_ind_cb (UINT16 handle, 1265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *src, 1275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *dst, 1285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 protocol, 1295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p_buf, 1305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN ext); 1315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void pan_tx_data_flow_cb (UINT16 handle, 1325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBNEP_RESULT event); 1335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid pan_proto_filt_ind_cb (UINT16 handle, 1345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN indication, 1355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBNEP_RESULT result, 1365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 num_filters, 1375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_filters); 1385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid pan_mcast_filt_ind_cb (UINT16 handle, 1395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN indication, 1405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBNEP_RESULT result, 1415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 num_filters, 1425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_filters); 1435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern UINT32 pan_register_with_sdp (UINT16 uuid, UINT8 sec_mask, char *p_name, char *p_desc); 1445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern tPAN_CONN *pan_allocate_pcb (BD_ADDR p_bda, UINT16 handle); 1455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern tPAN_CONN *pan_get_pcb_by_handle (UINT16 handle); 1465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern tPAN_CONN *pan_get_pcb_by_addr (BD_ADDR p_bda); 1475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void pan_close_all_connections (void); 1485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void pan_release_pcb (tPAN_CONN *p_pcb); 1495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void pan_dump_status (void); 1505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/********************************************************************************/ 1525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifdef __cplusplus 1545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 1565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 1585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 159