blob: 77797240505975c79756306fe9528952df5be010 [file] [log] [blame]
/******************************************************************************
*
* Copyright (C) 2001-2012 Broadcom Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************/
/******************************************************************************
*
* This file contains internally used PAN definitions
*
******************************************************************************/
#ifndef PAN_INT_H
#define PAN_INT_H
#include "pan_api.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
** This role is used to shutdown the profile. Used internally
** Applications should call PAN_Deregister to shutdown the profile
*/
#define PAN_ROLE_INACTIVE 0
/* Protocols supported by the host internal stack, are registered with SDP */
#define PAN_PROTOCOL_IP 0x0800
#define PAN_PROTOCOL_ARP 0x0806
#define PAN_PROFILE_VERSION 0x0100 /* Version 1.00 */
/* Define the PAN Connection Control Block
*/
typedef struct
{
#define PAN_STATE_IDLE 0
#define PAN_STATE_CONN_START 1
#define PAN_STATE_CONNECTED 2
uint8_t con_state;
#define PAN_FLAGS_CONN_COMPLETED 0x01
uint8_t con_flags;
uint16_t handle;
BD_ADDR rem_bda;
uint16_t bad_pkts_rcvd;
uint16_t src_uuid;
uint16_t dst_uuid;
uint16_t prv_src_uuid;
uint16_t prv_dst_uuid;
uint16_t ip_addr_known;
uint32_t ip_addr;
} tPAN_CONN;
/* The main PAN control block
*/
typedef struct
{
uint8_t role;
uint8_t active_role;
uint8_t prv_active_role;
tPAN_CONN pcb[MAX_PAN_CONNS];
tPAN_CONN_STATE_CB *pan_conn_state_cb; /* Connection state callback */
tPAN_BRIDGE_REQ_CB *pan_bridge_req_cb;
tPAN_DATA_IND_CB *pan_data_ind_cb;
tPAN_DATA_BUF_IND_CB *pan_data_buf_ind_cb;
tPAN_FILTER_IND_CB *pan_pfilt_ind_cb; /* protocol filter indication callback */
tPAN_MFILTER_IND_CB *pan_mfilt_ind_cb; /* multicast filter indication callback */
tPAN_TX_DATA_FLOW_CB *pan_tx_data_flow_cb;
char *user_service_name;
char *gn_service_name;
char *nap_service_name;
uint32_t pan_user_sdp_handle;
uint32_t pan_gn_sdp_handle;
uint32_t pan_nap_sdp_handle;
uint8_t num_conns;
uint8_t trace_level;
} tPAN_CB;
/* Global PAN data
*/
extern tPAN_CB pan_cb;
/*******************************************************************************/
extern void pan_register_with_bnep (void);
extern void pan_conn_ind_cb (uint16_t handle,
BD_ADDR p_bda,
tBT_UUID *remote_uuid,
tBT_UUID *local_uuid,
bool is_role_change);
extern void pan_connect_state_cb (uint16_t handle, BD_ADDR rem_bda, tBNEP_RESULT result, bool is_role_change);
extern void pan_data_ind_cb (uint16_t handle,
uint8_t *src,
uint8_t *dst,
uint16_t protocol,
uint8_t *p_data,
uint16_t len,
bool fw_ext_present);
extern void pan_data_buf_ind_cb (uint16_t handle,
uint8_t *src,
uint8_t *dst,
uint16_t protocol,
BT_HDR *p_buf,
bool ext);
extern void pan_tx_data_flow_cb (uint16_t handle,
tBNEP_RESULT event);
void pan_proto_filt_ind_cb (uint16_t handle,
bool indication,
tBNEP_RESULT result,
uint16_t num_filters,
uint8_t *p_filters);
void pan_mcast_filt_ind_cb (uint16_t handle,
bool indication,
tBNEP_RESULT result,
uint16_t num_filters,
uint8_t *p_filters);
extern uint32_t pan_register_with_sdp (uint16_t uuid, uint8_t sec_mask,
const char *p_name, const char *p_desc);
extern tPAN_CONN *pan_allocate_pcb (BD_ADDR p_bda, uint16_t handle);
extern tPAN_CONN *pan_get_pcb_by_handle (uint16_t handle);
extern tPAN_CONN *pan_get_pcb_by_addr (BD_ADDR p_bda);
extern void pan_close_all_connections (void);
extern void pan_release_pcb (tPAN_CONN *p_pcb);
extern void pan_dump_status (void);
/********************************************************************************/
#ifdef __cplusplus
}
#endif
#endif