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