/****************************************************************************** * * Copyright (C) 2009-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 is the public interface file for the HeaLth device profile (HL) * subsystem of BTA, Broadcom's Bluetooth application layer for mobile * phones. * ******************************************************************************/ #ifndef BTA_HL_API_H #define BTA_HL_API_H #include "bta_api.h" #include "btm_api.h" #include "mca_api.h" /***************************************************************************** ** Constants and data types *****************************************************************************/ /* Extra Debug Code */ #ifndef BTA_HL_DEBUG #define BTA_HL_DEBUG TRUE #endif #ifndef BTA_HL_NUM_APPS #define BTA_HL_NUM_APPS 12 #endif #ifndef BTA_HL_NUM_MDEPS #define BTA_HL_NUM_MDEPS 13 #endif #ifndef BTA_HL_NUM_MCLS #define BTA_HL_NUM_MCLS 7 #endif #ifndef BTA_HL_NUM_MDLS_PER_MDEP #define BTA_HL_NUM_MDLS_PER_MDEP 4 #endif #ifndef BTA_HL_NUM_MDLS_PER_MCL #define BTA_HL_NUM_MDLS_PER_MCL 10 #endif #ifndef BTA_HL_NUM_DATA_TYPES #define BTA_HL_NUM_DATA_TYPES 5 /* maximum number of data types can be supported per MDEP ID */ #endif #define BTA_HL_MCAP_RSP_TOUT 2 /* 2 seconds */ #ifndef BTA_HL_CCH_NUM_FILTER_ELEMS #define BTA_HL_CCH_NUM_FILTER_ELEMS 3 #endif #ifndef BTA_HL_NUM_SDP_CBACKS #define BTA_HL_NUM_SDP_CBACKS 7 #endif #ifndef BTA_HL_NUM_SDP_RECS #define BTA_HL_NUM_SDP_RECS 5 #endif #ifndef BTA_HL_NUM_SDP_MDEPS #define BTA_HL_NUM_SDP_MDEPS 12 #endif #ifndef BTA_HL_NUM_SVC_ELEMS #define BTA_HL_NUM_SVC_ELEMS 2 #endif #ifndef BTA_HL_NUM_PROTO_ELEMS #define BTA_HL_NUM_PROTO_ELEMS 2 #endif #define BTA_HL_VERSION_01_00 0x0100 #define BTA_HL_NUM_ADD_PROTO_LISTS 1 #define BTA_HL_NUM_ADD_PROTO_ELEMS 2 #define BTA_HL_MDEP_SEQ_SIZE 20 #define BTA_HL_VAL_ARRY_SIZE 320 #ifndef BTA_HL_NUM_MDL_CFGS #define BTA_HL_NUM_MDL_CFGS 16 /* numer of MDL cfg saved in the persistent memory*/ #endif #define BTA_HL_NUM_TIMERS 7 #define BTA_HL_CCH_RSP_TOUT 2000 #define BTA_HL_LRG_POOL_ID GKI_POOL_ID_7 #define BTA_HL_MAX_TIME 255 #define BTA_HL_MIN_TIME 1 #define BTA_HL_INVALID_APP_HANDLE 0xFF #define BTA_HL_INVALID_MCL_HANDLE 0xFF #define BTA_HL_INVALID_MDL_HANDLE 0xFFFF #define BTA_HL_STATUS_OK 0 #define BTA_HL_STATUS_FAIL 1 /* Used to pass all other errors */ #define BTA_HL_STATUS_ABORTED 2 #define BTA_HL_STATUS_NO_RESOURCE 3 #define BTA_HL_STATUS_LAST_ITEM 4 #define BTA_HL_STATUS_DUPLICATE_APP_ID 5 #define BTA_HL_STATUS_INVALID_APP_HANDLE 6 #define BTA_HL_STATUS_INVALID_MCL_HANDLE 7 #define BTA_HL_STATUS_MCAP_REG_FAIL 8 #define BTA_HL_STATUS_MDEP_CO_FAIL 9 #define BTA_HL_STATUS_ECHO_CO_FAIL 10 #define BTA_HL_STATUS_MDL_CFG_CO_FAIL 11 #define BTA_HL_STATUS_SDP_NO_RESOURCE 12 #define BTA_HL_STATUS_SDP_FAIL 13 #define BTA_HL_STATUS_NO_CCH 14 #define BTA_HL_STATUS_NO_MCL 15 #define BTA_HL_STATUS_NO_FIRST_RELIABLE 17 #define BTA_HL_STATUS_INVALID_DCH_CFG 18 #define BTA_HL_STATUS_INVALID_MDL_HANDLE 19 #define BTA_HL_STATUS_INVALID_BD_ADDR 20 #define BTA_HL_STATUS_INVALID_RECONNECT_CFG 21 #define BTA_HL_STATUS_ECHO_TEST_BUSY 22 #define BTA_HL_STATUS_INVALID_LOCAL_MDEP_ID 23 #define BTA_HL_STATUS_INVALID_MDL_ID 24 #define BTA_HL_STATUS_NO_MDL_ID_FOUND 25 #define BTA_HL_STATUS_DCH_BUSY 26 /* DCH is congested*/ #define BTA_HL_STATUS_INVALID_CTRL_PSM 27 #define BTA_HL_STATUS_DUPLICATE_CCH_OPEN 28 typedef UINT8 tBTA_HL_STATUS; typedef tMCA_HANDLE tBTA_HL_APP_HANDLE; typedef tMCA_CL tBTA_HL_MCL_HANDLE; typedef tMCA_DL tBTA_HL_MDL_HANDLE; enum { BTA_HL_DEVICE_TYPE_SINK, BTA_HL_DEVICE_TYPE_SOURCE, BTA_HL_DEVICE_TYPE_DUAL }; typedef UINT8 tBTA_HL_DEVICE_TYPE; #define BTA_HL_SDP_IEEE_11073_20601 0x01 #define BTA_HL_MCAP_SUP_RECONNECT_MASK_INIT 2 /* 0x02 */ #define BTA_HL_MCAP_SUP_RECONNECT_MASK_ACCEPT 4 /* 0x04 */ #define BTA_HL_MCAP_SUP_CSP_MASK_SYNC_SLAVE 0 /* 0x08 */ #define BTA_HL_MCAP_SUP_CSP_MASK_SYNC_MASTER 0 /* 0x10 */ #define BTA_HL_MCAP_SUP_PROC_MASK (BTA_HL_MCAP_SUP_RECONNECT_MASK_INIT | \ BTA_HL_MCAP_SUP_RECONNECT_MASK_ACCEPT | \ BTA_HL_MCAP_SUP_CSP_MASK_SYNC_SLAVE | \ BTA_HL_MCAP_SUP_CSP_MASK_SYNC_MASTER) #define BTA_HL_MDEP_ROLE_SOURCE 0x00 #define BTA_HL_MDEP_ROLE_SINK 0x01 typedef UINT8 tBTA_HL_MDEP_ROLE; #define BTA_HL_MDEP_ROLE_MASK_SOURCE 0x01 /* bit mask */ #define BTA_HL_MDEP_ROLE_MASK_SINK 0x02 typedef UINT8 tBTA_HL_MDEP_ROLE_MASK; #define BTA_HL_ECHO_TEST_MDEP_ID 0 #define BTA_HL_ECHO_TEST_MDEP_CFG_IDX 0 #define BTA_HL_INVALID_MDEP_ID 0xFF typedef tMCA_DEP tBTA_HL_MDEP_ID; /* 0 is for echo test, 0x01-0x7F availave for use, 0x80-0xFF reserved*/ #define BTA_HL_DELETE_ALL_MDL_IDS 0xFFFF #define BTA_HL_MAX_MDL_VAL 0xFEFF typedef UINT16 tBTA_HL_MDL_ID; /* 0x0000 reserved, 0x0001-0xFEFF dynamic range, 0xFF00-0xFFFE reserved, 0xFFFF indicates all MDLs*/ #define BTA_HL_MDEP_DESP_LEN 35 #define BTA_HL_DCH_MODE_RELIABLE 0 #define BTA_HL_DCH_MODE_STREAMING 1 typedef UINT8 tBTA_HL_DCH_MODE; #define BTA_HL_DCH_CFG_NO_PREF 0 #define BTA_HL_DCH_CFG_RELIABLE 1 #define BTA_HL_DCH_CFG_STREAMING 2 #define BTA_HL_DCH_CFG_UNKNOWN 0xFF typedef UINT8 tBTA_HL_DCH_CFG; /* The Default DCH CFG for the echo test when the device is a Source */ #define BTA_HL_DEFAULT_ECHO_TEST_SRC_DCH_CFG BTA_HL_DCH_CFG_RELIABLE #define BTA_HL_DCH_CREATE_RSP_SUCCESS 0 #define BTA_HL_DCH_CREATE_RSP_CFG_REJ 1 typedef UINT8 tBTA_HL_DCH_CREATE_RSP; #define BTA_HL_MCAP_SUP_PROC_RECONNECT_INIT 0x02 #define BTA_HL_MCAP_SUP_PROC_RECONNECT_APT 0x04 #define BTA_HL_MCAP_SUP_PROC_CSP_SLAVE 0x08 #define BTA_HL_MCAP_SUP_PROC_CSP_MASTER 0x10 typedef UINT8 tBTA_HL_SUP_PROC_MASK; typedef struct { UINT16 max_rx_apdu_size; /* local rcv MTU */ UINT16 max_tx_apdu_size; /* maximum TX APDU size*/ } tBTA_HL_ECHO_CFG; typedef struct { UINT16 data_type; UINT16 max_rx_apdu_size; /* local rcv MTU */ UINT16 max_tx_apdu_size; /* maximum TX APDU size*/ char desp[BTA_HL_MDEP_DESP_LEN+1]; } tBTA_HL_MDEP_DATA_TYPE_CFG; typedef struct { tBTA_HL_MDEP_ROLE mdep_role; UINT8 num_of_mdep_data_types; tBTA_HL_MDEP_DATA_TYPE_CFG data_cfg[BTA_HL_NUM_DATA_TYPES]; } tBTA_HL_MDEP_CFG; typedef struct { tBTA_HL_MDEP_ID mdep_id; /* MDEP ID 0x01-0x7F */ tBTA_HL_MDEP_CFG mdep_cfg; UINT8 ori_app_id; } tBTA_HL_MDEP; typedef struct { tBTA_HL_MDEP mdep[BTA_HL_NUM_MDEPS]; tBTA_HL_ECHO_CFG echo_cfg; tBTA_HL_MDEP_ROLE_MASK app_role_mask; BOOLEAN advertize_source_sdp; UINT8 num_of_mdeps; } tBTA_HL_SUP_FEATURE; typedef struct { BOOLEAN delete_req_pending; tBTA_HL_MDL_ID mdl_id; tBTA_HL_MCL_HANDLE mcl_handle; } tBTA_HL_DELETE_MDL; typedef struct { UINT8 time; UINT16 mtu; tBTA_HL_MDL_ID mdl_id; tBTA_HL_MDEP_ID local_mdep_id; tBTA_HL_MDEP_ROLE local_mdep_role; BOOLEAN active; /* true if this item is in use */ tBTA_HL_DCH_MODE dch_mode; UINT8 fcs; BD_ADDR peer_bd_addr; } tBTA_HL_MDL_CFG; /* Maximum number of supported feature list items (list_elem in tSDP_SUP_FEATURE_ELEM) */ #define BTA_HL_NUM_SUP_FEATURE_ELEMS 13 #define BTA_HL_SUP_FEATURE_SDP_BUF_SIZE 512 /* This structure is used to add supported feature lists and find supported feature elements */ typedef struct { UINT8 mdep_id; UINT16 data_type; tBTA_HL_MDEP_ROLE mdep_role; char *p_mdep_desp; } tBTA_HL_SUP_FEATURE_ELEM; typedef struct { UINT16 num_elems; tBTA_HL_SUP_FEATURE_ELEM list_elem[BTA_HL_NUM_SUP_FEATURE_ELEMS]; } tBTA_HL_SUP_FEATURE_LIST_ELEM; typedef struct { tBTA_HL_DEVICE_TYPE dev_type; /* sink, source or dual roles */ tBTA_SEC sec_mask; /* security mask for accepting conenction*/ const char *p_srv_name; /* service name to be used in the SDP; null terminated*/ const char *p_srv_desp; /* service description to be used in the SDP; null terminated */ const char *p_provider_name; /* provide name to be used in the SDP; null terminated */ } tBTA_HL_REG_PARAM; typedef struct { UINT16 ctrl_psm; BD_ADDR bd_addr; /* Address of peer device */ tBTA_SEC sec_mask; /* security mask for initiating connection*/ } tBTA_HL_CCH_OPEN_PARAM; typedef struct { UINT16 ctrl_psm; tBTA_HL_MDEP_ID local_mdep_id; /* local MDEP ID */ tBTA_HL_MDEP_ID peer_mdep_id; /* peer mdep id */ tBTA_HL_DCH_CFG local_cfg; tBTA_SEC sec_mask; /* security mask for initiating connection*/ } tBTA_HL_DCH_OPEN_PARAM; typedef struct { UINT16 ctrl_psm; tBTA_HL_MDL_ID mdl_id; } tBTA_HL_DCH_RECONNECT_PARAM; typedef struct { UINT16 ctrl_psm; UINT16 pkt_size; tBTA_HL_DCH_CFG local_cfg; } tBTA_HL_DCH_ECHO_TEST_PARAM; typedef struct { UINT16 buf_size; UINT8 p_buf; /* buffer pointer */ } tBTA_HL_DCH_BUF_INFO; typedef struct { tBTA_HL_MDEP_ID local_mdep_id; /* local MDEP ID */ tBTA_HL_MDL_ID mdl_id; tBTA_HL_DCH_CREATE_RSP rsp_code; tBTA_HL_DCH_CFG cfg_rsp; } tBTA_HL_DCH_CREATE_RSP_PARAM; typedef struct { UINT16 data_type; UINT8 mdep_id; tBTA_HL_MDEP_ROLE mdep_role; char mdep_desp[BTA_HL_MDEP_DESP_LEN+1]; }tBTA_HL_SDP_MDEP_CFG; typedef struct { UINT16 ctrl_psm; UINT16 data_psm; UINT8 mcap_sup_proc; UINT8 num_mdeps; /* number of mdep elements from SDP*/ char srv_name[BTA_SERVICE_NAME_LEN+1]; char srv_desp[BTA_SERVICE_DESP_LEN+1]; char provider_name[BTA_PROVIDER_NAME_LEN+1]; tBTA_HL_SDP_MDEP_CFG mdep_cfg[BTA_HL_NUM_SDP_MDEPS]; } tBTA_HL_SDP_REC; typedef struct { UINT8 num_recs; tBTA_HL_SDP_REC sdp_rec[BTA_HL_NUM_SDP_RECS]; } tBTA_HL_SDP; /* HL control callback function events */ enum { BTA_HL_CTRL_ENABLE_CFM_EVT = 0, BTA_HL_CTRL_DISABLE_CFM_EVT }; typedef UINT8 tBTA_HL_CTRL_EVT; /* Structure associated with BTA_HL_ENABLE_EVT BTA_HL_DISABLE_EVT */ typedef struct { tBTA_HL_STATUS status; } tBTA_HL_CTRL_ENABLE_DISABLE; typedef union { tBTA_HL_CTRL_ENABLE_DISABLE enable_cfm; tBTA_HL_CTRL_ENABLE_DISABLE disable_cfm; } tBTA_HL_CTRL; /* HL instance callback function events */ enum { BTA_HL_REGISTER_CFM_EVT =0, BTA_HL_DEREGISTER_CFM_EVT, BTA_HL_CCH_OPEN_IND_EVT, BTA_HL_CCH_OPEN_CFM_EVT, BTA_HL_CCH_CLOSE_IND_EVT, BTA_HL_CCH_CLOSE_CFM_EVT, BTA_HL_DCH_CREATE_IND_EVT, BTA_HL_DCH_OPEN_IND_EVT, BTA_HL_DCH_OPEN_CFM_EVT, BTA_HL_DCH_CLOSE_IND_EVT, BTA_HL_DCH_CLOSE_CFM_EVT, BTA_HL_DCH_RECONNECT_IND_EVT, BTA_HL_DCH_RECONNECT_CFM_EVT, BTA_HL_DCH_ABORT_IND_EVT, BTA_HL_DCH_ABORT_CFM_EVT, BTA_HL_DELETE_MDL_IND_EVT, BTA_HL_DELETE_MDL_CFM_EVT, BTA_HL_DCH_SEND_DATA_CFM_EVT, BTA_HL_DCH_RCV_DATA_IND_EVT, BTA_HL_CONG_CHG_IND_EVT, BTA_HL_DCH_ECHO_TEST_CFM_EVT, BTA_HL_SDP_QUERY_CFM_EVT, BTA_HL_SDP_INFO_IND_EVT }; typedef UINT8 tBTA_HL_EVT; typedef struct { tBTA_HL_STATUS status; /* start status */ UINT8 app_id; tBTA_HL_APP_HANDLE app_handle; } tBTA_HL_REGISTER_CFM; typedef struct { tBTA_HL_STATUS status; /* start status */ UINT8 app_id; tBTA_HL_APP_HANDLE app_handle; } tBTA_HL_DEREGISTER_CFM; typedef struct { BOOLEAN intentional; tBTA_HL_MCL_HANDLE mcl_handle; tBTA_HL_APP_HANDLE app_handle; } tBTA_HL_CCH_CLOSE_IND; typedef struct { tBTA_HL_MCL_HANDLE mcl_handle; tBTA_HL_APP_HANDLE app_handle; } tBTA_HL_MCL_IND; typedef struct { tBTA_HL_STATUS status; /* connection status */ tBTA_HL_MCL_HANDLE mcl_handle; tBTA_HL_APP_HANDLE app_handle; } tBTA_HL_MCL_CFM; typedef struct { tBTA_HL_MCL_HANDLE mcl_handle; tBTA_HL_APP_HANDLE app_handle; BD_ADDR bd_addr; /* address of peer device */ } tBTA_HL_CCH_OPEN_IND; typedef struct { tBTA_HL_STATUS status; /* connection status */ UINT8 app_id; tBTA_HL_MCL_HANDLE mcl_handle; tBTA_HL_APP_HANDLE app_handle; BD_ADDR bd_addr; /* address of peer device */ } tBTA_HL_CCH_OPEN_CFM; typedef struct { tBTA_HL_MCL_HANDLE mcl_handle; tBTA_HL_APP_HANDLE app_handle; tBTA_HL_MDEP_ID local_mdep_id; tBTA_HL_MDL_ID mdl_id; /* MCAP data link ID for this data channel conenction */ tBTA_HL_DCH_CFG cfg; /* dch cfg requested by the peer device */ BD_ADDR bd_addr; /* address of peer device */ } tBTA_HL_DCH_CREATE_IND; typedef struct { tBTA_HL_MDL_HANDLE mdl_handle; tBTA_HL_MCL_HANDLE mcl_handle; tBTA_HL_APP_HANDLE app_handle; tBTA_HL_MDEP_ID local_mdep_id; tBTA_HL_MDL_ID mdl_id; /* MCAP data link ID for this data channel conenction */ tBTA_HL_DCH_MODE dch_mode; /* data channel mode - reliable or streaming*/ BOOLEAN first_reliable; /* whether this is the first reliable data channel */ UINT16 mtu; } tBTA_HL_DCH_OPEN_IND; typedef struct { tBTA_HL_STATUS status; /* connection status */ tBTA_HL_MDL_HANDLE mdl_handle; tBTA_HL_MCL_HANDLE mcl_handle; tBTA_HL_APP_HANDLE app_handle; tBTA_HL_MDEP_ID local_mdep_id; tBTA_HL_MDL_ID mdl_id; /* MCAP data link ID for this data channel conenction */ tBTA_HL_DCH_MODE dch_mode; /* data channel mode - reliable or streaming*/ BOOLEAN first_reliable; /* whether this is the first reliable data channel */ UINT16 mtu; } tBTA_HL_DCH_OPEN_CFM; typedef struct { BOOLEAN intentional; tBTA_HL_MDL_HANDLE mdl_handle; tBTA_HL_MCL_HANDLE mcl_handle; tBTA_HL_APP_HANDLE app_handle; } tBTA_HL_DCH_CLOSE_IND; typedef struct { tBTA_HL_MDL_HANDLE mdl_handle; tBTA_HL_MCL_HANDLE mcl_handle; tBTA_HL_APP_HANDLE app_handle; } tBTA_HL_MDL_IND; typedef struct { tBTA_HL_STATUS status; tBTA_HL_MDL_HANDLE mdl_handle; tBTA_HL_MCL_HANDLE mcl_handle; tBTA_HL_APP_HANDLE app_handle; } tBTA_HL_MDL_CFM; typedef struct { tBTA_HL_MCL_HANDLE mcl_handle; tBTA_HL_APP_HANDLE app_handle; tBTA_HL_MDL_ID mdl_id; } tBTA_HL_DELETE_MDL_IND; typedef struct { tBTA_HL_STATUS status; tBTA_HL_MCL_HANDLE mcl_handle; tBTA_HL_APP_HANDLE app_handle; tBTA_HL_MDL_ID mdl_id; } tBTA_HL_DELETE_MDL_CFM; typedef struct { tBTA_HL_MDL_HANDLE mdl_handle; tBTA_HL_MCL_HANDLE mcl_handle; tBTA_HL_APP_HANDLE app_handle; BOOLEAN cong; } tBTA_HL_DCH_CONG_IND; typedef struct { tBTA_HL_APP_HANDLE app_handle; UINT16 ctrl_psm; UINT16 data_psm; UINT8 data_x_spec; UINT8 mcap_sup_procs; } tBTA_HL_SDP_INFO_IND; typedef struct { tBTA_HL_STATUS status; UINT8 app_id; tBTA_HL_APP_HANDLE app_handle; BD_ADDR bd_addr; tBTA_HL_SDP *p_sdp; } tBTA_HL_SDP_QUERY_CFM; typedef union { tBTA_HL_REGISTER_CFM reg_cfm; tBTA_HL_DEREGISTER_CFM dereg_cfm; tBTA_HL_CCH_OPEN_IND cch_open_ind; tBTA_HL_CCH_OPEN_CFM cch_open_cfm; tBTA_HL_CCH_CLOSE_IND cch_close_ind; tBTA_HL_MCL_CFM cch_close_cfm; tBTA_HL_DCH_CREATE_IND dch_create_ind; tBTA_HL_DCH_OPEN_IND dch_open_ind; tBTA_HL_DCH_OPEN_CFM dch_open_cfm; tBTA_HL_DCH_CLOSE_IND dch_close_ind; tBTA_HL_MDL_CFM dch_close_cfm; tBTA_HL_DCH_OPEN_IND dch_reconnect_ind; tBTA_HL_DCH_OPEN_CFM dch_reconnect_cfm; tBTA_HL_MCL_IND dch_abort_ind; tBTA_HL_MCL_CFM dch_abort_cfm; tBTA_HL_DELETE_MDL_IND delete_mdl_ind; tBTA_HL_DELETE_MDL_CFM delete_mdl_cfm; tBTA_HL_MDL_CFM dch_send_data_cfm; tBTA_HL_MDL_IND dch_rcv_data_ind; tBTA_HL_DCH_CONG_IND dch_cong_ind; tBTA_HL_MCL_CFM echo_test_cfm; tBTA_HL_SDP_QUERY_CFM sdp_query_cfm; tBTA_HL_SDP_INFO_IND sdp_info_ind; } tBTA_HL; /* HL callback functions */ typedef void tBTA_HL_CTRL_CBACK(tBTA_HL_CTRL_EVT event, tBTA_HL_CTRL *p_data); typedef void tBTA_HL_CBACK(tBTA_HL_EVT event, tBTA_HL *p_data); /***************************************************************************** ** External Function Declarations *****************************************************************************/ #ifdef __cplusplus extern "C" { #endif /************************** ** API Functions ***************************/ /******************************************************************************* ** ** Function BTA_HlEnable ** ** Description Enable the HL subsystems. This function must be ** called before any other functions in the HL API are called. ** When the enable operation is completed the callback function ** will be called with an BTA_HL_CTRL_ENABLE_CFM_EVT event. ** ** Parameters p_cback - HL event call back function ** ** Returns void ** *******************************************************************************/ BTA_API extern void BTA_HlEnable(tBTA_HL_CTRL_CBACK *p_ctrl_cback); /******************************************************************************* ** ** Function BTA_HlDisable ** ** Description Disable the HL subsystem. ** ** Returns void ** *******************************************************************************/ BTA_API extern void BTA_HlDisable(void); /******************************************************************************* ** ** Function BTA_HlUpdate ** ** Description Register an HDP application ** ** Parameters app_id - Application ID ** p_reg_param - non-platform related parameters for the ** HDP application ** p_cback - HL event callback fucntion ** ** Returns void ** *******************************************************************************/ BTA_API extern void BTA_HlUpdate(UINT8 app_id, tBTA_HL_REG_PARAM *p_reg_param, BOOLEAN is_register, tBTA_HL_CBACK *p_cback); /******************************************************************************* ** ** Function BTA_HlRegister ** ** Description Register a HDP application ** ** ** Parameters app_id - hdp application ID ** p_reg_param - non-platform related parameters for the ** HDP application ** p_cback - HL event callback fucntion ** ** Returns void ** *******************************************************************************/ BTA_API extern void BTA_HlRegister(UINT8 app_id, tBTA_HL_REG_PARAM *p_reg_param, tBTA_HL_CBACK *p_cback); /******************************************************************************* ** ** Function BTA_HlDeregister ** ** Description Deregister an HDP application ** ** Parameters app_handle - Application handle ** ** Returns void ** *******************************************************************************/ BTA_API extern void BTA_HlDeregister(UINT8 app_id,tBTA_HL_APP_HANDLE app_handle); /******************************************************************************* ** ** Function BTA_HlCchOpen ** ** Description Open a Control channel connection with the specified BD address ** and the control PSM value is used to select which ** HDP insatnce should be used in case the peer device support ** multiple HDP instances. ** ** ** Parameters app_handle - Application Handle ** p_open_param - parameters for opening a control channel ** ** Returns void ** ** Note: If the control PSM value is zero then the first HDP ** instance is used for the control channel setup *******************************************************************************/ BTA_API extern void BTA_HlCchOpen(UINT8 app_id, tBTA_HL_APP_HANDLE app_handle, tBTA_HL_CCH_OPEN_PARAM *p_open_param); /******************************************************************************* ** ** Function BTA_HlCchClose ** ** Description Close a Control channel connection with the specified MCL ** handle ** ** Parameters mcl_handle - MCL handle ** ** Returns void ** *******************************************************************************/ BTA_API extern void BTA_HlCchClose(tBTA_HL_MCL_HANDLE mcl_handle); /******************************************************************************* ** ** Function BTA_HlDchOpen ** ** Description Open a data channel connection with the specified DCH parameters ** ** Parameters mcl_handle - MCL handle ** p_open_param - parameters for opening a data channel ** ** Returns void ** *******************************************************************************/ BTA_API extern void BTA_HlDchOpen(tBTA_HL_MCL_HANDLE mcl_handle, tBTA_HL_DCH_OPEN_PARAM *p_open_param); /******************************************************************************* ** ** Function BTA_HlDchReconnect ** ** Description Reconnect a data channel with the specified MDL_ID ** ** Parameters mcl_handle - MCL handle *8 p_recon_param - parameters for reconnecting a data channel ** ** Returns void ** *******************************************************************************/ BTA_API extern void BTA_HlDchReconnect(tBTA_HL_MCL_HANDLE mcl_handle, tBTA_HL_DCH_RECONNECT_PARAM *p_recon_param); /******************************************************************************* ** ** Function BTA_HlDchClose ** ** Description Close a data channel with the specified MDL handle ** ** Parameters mdl_handle - MDL handle ** ** Returns void ** *******************************************************************************/ BTA_API extern void BTA_HlDchClose(tBTA_HL_MDL_HANDLE mdl_handle); /******************************************************************************* ** ** Function BTA_HlDchAbort ** ** Description Abort the current data channel setup with the specified MCL ** handle ** ** Parameters mcl_handle - MCL handle ** ** ** Returns void ** *******************************************************************************/ BTA_API extern void BTA_HlDchAbort(tBTA_HL_MCL_HANDLE mcl_handle); /******************************************************************************* ** ** Function BTA_HlSendData ** ** Description Send an APDU to the peer device ** ** Parameters mdl_handle - MDL handle ** pkt_size - size of the data packet to be sent ** ** Returns void ** *******************************************************************************/ BTA_API extern void BTA_HlSendData(tBTA_HL_MDL_HANDLE mdl_handle, UINT16 pkt_size); /******************************************************************************* ** ** Function BTA_HlDeleteMdl ** ** Description Delete the specified MDL_ID within the specified MCL handle ** ** Parameters mcl_handle - MCL handle ** mdl_id - MDL ID ** ** Returns void ** ** note: If mdl_id = 0xFFFF then this means to delete all MDLs ** and this value can only be used with DeleteMdl request only ** not other requests ** *******************************************************************************/ BTA_API extern void BTA_HlDeleteMdl(tBTA_HL_MCL_HANDLE mcl_handle, tBTA_HL_MDL_ID mdl_id ); /******************************************************************************* ** ** Function BTA_HlDchEchoTest ** ** Description Initiate an echo test with the specified MCL handle ** ** Parameters mcl_handle - MCL handle *8 p_echo_test_param - parameters for echo testing ** ** Returns void ** *******************************************************************************/ BTA_API extern void BTA_HlDchEchoTest( tBTA_HL_MCL_HANDLE mcl_handle, tBTA_HL_DCH_ECHO_TEST_PARAM *p_echo_test_param); /******************************************************************************* ** ** Function BTA_HlSdpQuery ** ** Description SDP query request for the specified BD address ** ** Parameters app_id app_handle - application handle ** bd_addr - BD address ** ** Returns void ** *******************************************************************************/ BTA_API extern void BTA_HlSdpQuery(UINT8 app_id,tBTA_HL_APP_HANDLE app_handle, BD_ADDR bd_addr); /******************************************************************************* ** ** Function BTA_HlDchCreateMdlRsp ** ** Description Set the Response and configuration values for the Create MDL ** request ** ** Parameters mcl_handle - MCL handle ** p_rsp_param - parameters specified whether the request should ** be accepted or not and if it should be accepted ** then it also specified the configuration response ** value ** ** Returns void ** *******************************************************************************/ BTA_API extern void BTA_HlDchCreateRsp(tBTA_HL_MCL_HANDLE mcl_handle, tBTA_HL_DCH_CREATE_RSP_PARAM *p_rsp_param); #ifdef __cplusplus } #endif #endif /* BTA_HL_API_H */