diff options
Diffstat (limited to 'btif/include/btif_hl.h')
-rw-r--r-- | btif/include/btif_hl.h | 420 |
1 files changed, 192 insertions, 228 deletions
diff --git a/btif/include/btif_hl.h b/btif/include/btif_hl.h index cac6eb2..0573082 100644 --- a/btif/include/btif_hl.h +++ b/btif/include/btif_hl.h @@ -1,65 +1,27 @@ -/************************************************************************************ +/****************************************************************************** * * Copyright (C) 2009-2012 Broadcom Corporation * - * This program is the proprietary software of Broadcom Corporation and/or its - * licensors, and may only be used, duplicated, modified or distributed - * pursuant to the terms and conditions of a separate, written license - * agreement executed between you and Broadcom (an "Authorized License"). - * Except as set forth in an Authorized License, Broadcom grants no license - * (express or implied), right to use, or waiver of any kind with respect to - * the Software, and Broadcom expressly reserves all rights in and to the - * Software and all intellectual property rights therein. - * IF YOU HAVE NO AUTHORIZED LICENSE, THEN YOU HAVE NO RIGHT TO USE THIS - * SOFTWARE IN ANY WAY, AND SHOULD IMMEDIATELY NOTIFY BROADCOM AND DISCONTINUE - * ALL USE OF THE SOFTWARE. + * 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: * - * Except as expressly set forth in the Authorized License, + * http://www.apache.org/licenses/LICENSE-2.0 * - * 1. This program, including its structure, sequence and organization, - * constitutes the valuable trade secrets of Broadcom, and you shall - * use all reasonable efforts to protect the confidentiality thereof, - * and to use this information only in connection with your use of - * Broadcom integrated circuit products. + * 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. * - * 2. TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED - * "AS IS" AND WITH ALL FAULTS AND BROADCOM MAKES NO PROMISES, - * REPRESENTATIONS OR WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, - * OR OTHERWISE, WITH RESPECT TO THE SOFTWARE. BROADCOM SPECIFICALLY - * DISCLAIMS ANY AND ALL IMPLIED WARRANTIES OF TITLE, MERCHANTABILITY, - * NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, LACK OF VIRUSES, - * ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR - * CORRESPONDENCE TO DESCRIPTION. YOU ASSUME THE ENTIRE RISK ARISING OUT - * OF USE OR PERFORMANCE OF THE SOFTWARE. - * - * 3. TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT SHALL BROADCOM OR - * ITS LICENSORS BE LIABLE FOR - * (i) CONSEQUENTIAL, INCIDENTAL, SPECIAL, INDIRECT, OR EXEMPLARY - * DAMAGES WHATSOEVER ARISING OUT OF OR IN ANY WAY RELATING TO - * YOUR USE OF OR INABILITY TO USE THE SOFTWARE EVEN IF BROADCOM - * HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES; OR - * (ii) ANY AMOUNT IN EXCESS OF THE AMOUNT ACTUALLY PAID FOR THE - * SOFTWARE ITSELF OR U.S. $1, WHICHEVER IS GREATER. THESE - * LIMITATIONS SHALL APPLY NOTWITHSTANDING ANY FAILURE OF - * ESSENTIAL PURPOSE OF ANY LIMITED REMEDY. - * - ************************************************************************************/ - -/************************************************************************************ - * - * Filename: btif_hl.h - * - * Description: - * - ***********************************************************************************/ + ******************************************************************************/ #ifndef BTIF_HL_H #define BTIF_HL_H -/************************************************************************************ -** Functions -************************************************************************************/ - +/******************************************************************************* +** Constants & Macros +********************************************************************************/ #define BTIF_HL_DATA_TYPE_NONE 0x0000 #define BTIF_HL_DATA_TYPE_PULSE_OXIMETER 0x1004 /* from BT assigned number */ @@ -72,9 +34,74 @@ #define BTIF_HL_CCH_NUM_FILTER_ELEMS 3 #define BTIF_HL_APPLICATION_NAME_LEN 512 - #define BTIF_HL_NV_MAX_APPS 16 + +/******************************************************************************* +** Type definitions and return values +********************************************************************************/ + +typedef enum +{ + BTIF_HL_SOC_STATE_IDLE, + BTIF_HL_SOC_STATE_W4_ADD, + BTIF_HL_SOC_STATE_W4_CONN, + BTIF_HL_SOC_STATE_W4_READ, + BTIF_HL_SOC_STATE_W4_REL +} btif_hl_soc_state_t; + +typedef enum +{ + BTIF_HL_STATE_DISABLED, + BTIF_HL_STATE_DISABLING, + BTIF_HL_STATE_ENABLED, + BTIF_HL_STATE_ENABLING, +} btif_hl_state_t; + +typedef enum +{ + BTIF_HL_CCH_OP_NONE, + BTIF_HL_CCH_OP_MDEP_FILTERING, + BTIF_HL_CCH_OP_MATCHED_CTRL_PSM, + BTIF_HL_CCH_OP_DCH_OPEN, + BTIF_HL_CCH_OP_DCH_RECONNECT, + BTIF_HL_CCH_OP_DCH_ECHO_TEST +} btif_hl_cch_op_t; + +typedef enum +{ + BTIF_HL_PEND_DCH_OP_NONE, + BTIF_HL_PEND_DCH_OP_DELETE_MDL, + BTIF_HL_PEND_DCH_OP_OPEN, + BTIF_HL_PEND_DCH_OP_RECONNECT +} btif_hl_pend_dch_op_t; + +typedef enum +{ + BTIF_HL_DCH_OP_NONE, + BTIF_HL_DCH_OP_DISC +} btif_hl_dch_op_t; + +typedef enum +{ + BTIF_HL_CHAN_CB_STATE_NONE, + BTIF_HL_CHAN_CB_STATE_CONNECTING_PENDING, + BTIF_HL_CHAN_CB_STATE_CONNECTED_PENDING, + + BTIF_HL_CHAN_CB_STATE_DISCONNECTING_PENDING, + BTIF_HL_CHAN_CB_STATE_DISCONNECTED_PENDING, + BTIF_HL_CHAN_CB_STATE_DESTROYED_PENDING, +} btif_hl_chan_cb_state_t; + +enum +{ + BTIF_HL_SEND_CONNECTED_CB, + BTIF_HL_SEND_DISCONNECTED_CB, + BTIF_HL_REG_APP, + BTIF_HL_UNREG_APP, + BTIF_HL_UPDATE_MDL, +}; + typedef struct { UINT8 mdep_cfg_idx; @@ -82,7 +109,6 @@ typedef struct tBTA_HL_MDEP_ID peer_mdep_id; } btif_hl_extra_mdl_cfg_t; - typedef struct { tBTA_HL_MDL_CFG base; @@ -91,123 +117,75 @@ typedef struct typedef struct { - btif_hl_mdl_cfg_t mdl_cfg[BTA_HL_NUM_MDL_CFGS]; -}btif_hl_nv_mdl_data_t; - + btif_hl_mdl_cfg_t mdl_cfg[BTA_HL_NUM_MDL_CFGS]; +} btif_hl_nv_mdl_data_t; typedef struct { - tBTA_HL_SUP_FEATURE sup_feature; - tBTA_HL_DCH_CFG channel_type[BTA_HL_NUM_MDEPS]; - char srv_name[BTA_SERVICE_NAME_LEN +1]; - char srv_desp[BTA_SERVICE_DESP_LEN +1]; - char provider_name[BTA_PROVIDER_NAME_LEN +1]; - char application_name[BTIF_HL_APPLICATION_NAME_LEN +1]; -}btif_hl_nv_app_data_t; - + tBTA_HL_SUP_FEATURE sup_feature; + tBTA_HL_DCH_CFG channel_type[BTA_HL_NUM_MDEPS]; + char srv_name[BTA_SERVICE_NAME_LEN +1]; + char srv_desp[BTA_SERVICE_DESP_LEN +1]; + char provider_name[BTA_PROVIDER_NAME_LEN +1]; + char application_name[BTIF_HL_APPLICATION_NAME_LEN +1]; +} btif_hl_nv_app_data_t; typedef struct { BOOLEAN in_use; UINT16 use_freq; -}btif_hl_nv_app_t; +} btif_hl_nv_app_t; typedef struct { btif_hl_nv_app_t app[BTIF_HL_NV_MAX_APPS]; -}btif_hl_nv_app_cb_t; - - +} btif_hl_nv_app_cb_t; typedef struct { UINT8 app_nv_idx; BOOLEAN active; UINT8 app_idx; - btif_hl_nv_app_data_t app_data; -}btif_hl_app_data_t; + btif_hl_nv_app_data_t app_data; +} btif_hl_app_data_t; typedef struct { - BOOLEAN is_app_read; - btif_hl_nv_app_cb_t app_cb; - BUFFER_Q app_queue; -}btif_hl_nv_cb_t; - -typedef enum -{ - BTIF_HL_SOC_STATE_IDLE, - BTIF_HL_SOC_STATE_W4_ADD, - BTIF_HL_SOC_STATE_W4_CONN, - BTIF_HL_SOC_STATE_W4_READ, - BTIF_HL_SOC_STATE_W4_REL -} btif_hl_soc_state_t; + BOOLEAN is_app_read; + btif_hl_nv_app_cb_t app_cb; + BUFFER_Q app_queue; +} btif_hl_nv_cb_t; typedef struct { - int channel_id; - BD_ADDR bd_addr; - UINT8 mdep_cfg_idx; - int max_s; - int socket_id[2]; - UINT8 app_idx; - UINT8 mcl_idx; - UINT8 mdl_idx; - btif_hl_soc_state_t state; + int channel_id; + BD_ADDR bd_addr; + UINT8 mdep_cfg_idx; + int max_s; + int socket_id[2]; + UINT8 app_idx; + UINT8 mcl_idx; + UINT8 mdl_idx; + btif_hl_soc_state_t state; }btif_hl_soc_cb_t; typedef struct { - UINT16 data_type; - UINT16 max_tx_apdu_size; - UINT16 max_rx_apdu_size; + UINT16 data_type; + UINT16 max_tx_apdu_size; + UINT16 max_rx_apdu_size; } btif_hl_data_type_cfg_t; -typedef enum -{ - BTIF_HL_STATE_DISABLED, - BTIF_HL_STATE_DISABLING, - BTIF_HL_STATE_ENABLED, - BTIF_HL_STATE_ENABLING, - -}btif_hl_state_t; - -typedef enum -{ - BTIF_HL_CCH_OP_NONE, - BTIF_HL_CCH_OP_MDEP_FILTERING, - BTIF_HL_CCH_OP_MATCHED_CTRL_PSM, - BTIF_HL_CCH_OP_DCH_OPEN, - BTIF_HL_CCH_OP_DCH_RECONNECT, - BTIF_HL_CCH_OP_DCH_ECHO_TEST -}btif_hl_cch_op_t; - -typedef enum -{ - BTIF_HL_PEND_DCH_OP_NONE, - BTIF_HL_PEND_DCH_OP_DELETE_MDL, - BTIF_HL_PEND_DCH_OP_OPEN, - BTIF_HL_PEND_DCH_OP_RECONNECT -} btif_hl_pend_dch_op_t; - -typedef enum -{ - BTIF_HL_DCH_OP_NONE, - BTIF_HL_DCH_OP_DISC -} btif_hl_dch_op_t; - - typedef struct { UINT16 data_type; tBTA_HL_MDEP_ROLE peer_mdep_role; } btif_hl_filter_elem_t; - typedef struct { - UINT8 num_elems; - btif_hl_filter_elem_t elem[BTIF_HL_CCH_NUM_FILTER_ELEMS]; + UINT8 num_elems; + btif_hl_filter_elem_t elem[BTIF_HL_CCH_NUM_FILTER_ELEMS]; } btif_hl_cch_filter_t; typedef struct @@ -234,112 +212,93 @@ typedef struct BOOLEAN cong; btif_hl_soc_cb_t *p_scb; int channel_id; -}btif_hl_mdl_cb_t; - -typedef enum -{ - BTIF_HL_CHAN_CB_STATE_NONE, - BTIF_HL_CHAN_CB_STATE_CONNECTING_PENDING, - BTIF_HL_CHAN_CB_STATE_CONNECTED_PENDING, +} btif_hl_mdl_cb_t; - BTIF_HL_CHAN_CB_STATE_DISCONNECTING_PENDING, - BTIF_HL_CHAN_CB_STATE_DISCONNECTED_PENDING, - BTIF_HL_CHAN_CB_STATE_DESTROYED_PENDING, -}btif_hl_chan_cb_state_t; typedef struct { - int channel_id; - int mdep_cfg_idx; - BOOLEAN in_use; - btif_hl_chan_cb_state_t cb_state; - btif_hl_pend_dch_op_t op; - BD_ADDR bd_addr; - BOOLEAN abort_pending; -}btif_hl_pending_chan_cb_t; + int channel_id; + int mdep_cfg_idx; + BOOLEAN in_use; + btif_hl_chan_cb_state_t cb_state; + btif_hl_pend_dch_op_t op; + BD_ADDR bd_addr; + BOOLEAN abort_pending; +} btif_hl_pending_chan_cb_t; typedef struct { - btif_hl_mdl_cb_t mdl[BTA_HL_NUM_MDLS_PER_MCL]; - BOOLEAN in_use; - BOOLEAN is_connected; - UINT16 req_ctrl_psm; - UINT16 ctrl_psm; - UINT16 data_psm; - BD_ADDR bd_addr; - UINT16 cch_mtu; - tBTA_SEC sec_mask; - tBTA_HL_MCL_HANDLE mcl_handle; - btif_hl_pending_chan_cb_t pcb; - BOOLEAN valid_sdp_idx; - UINT8 sdp_idx; - tBTA_HL_SDP sdp; - btif_hl_cch_op_t cch_oper; - BOOLEAN cch_timer_active; - TIMER_LIST_ENT cch_timer; -}btif_hl_mcl_cb_t; + btif_hl_mdl_cb_t mdl[BTA_HL_NUM_MDLS_PER_MCL]; + BOOLEAN in_use; + BOOLEAN is_connected; + UINT16 req_ctrl_psm; + UINT16 ctrl_psm; + UINT16 data_psm; + BD_ADDR bd_addr; + UINT16 cch_mtu; + tBTA_SEC sec_mask; + tBTA_HL_MCL_HANDLE mcl_handle; + btif_hl_pending_chan_cb_t pcb; + BOOLEAN valid_sdp_idx; + UINT8 sdp_idx; + tBTA_HL_SDP sdp; + btif_hl_cch_op_t cch_oper; + BOOLEAN cch_timer_active; + TIMER_LIST_ENT cch_timer; +} btif_hl_mcl_cb_t; typedef struct { - BOOLEAN active; - UINT16 mdl_id; - UINT8 mdep_cfg_idx; - BD_ADDR bd_addr; - int channel_id; + BOOLEAN active; + UINT16 mdl_id; + UINT8 mdep_cfg_idx; + BD_ADDR bd_addr; + int channel_id; } btif_hl_delete_mdl_t; typedef struct { - btif_hl_mcl_cb_t mcb[BTA_HL_NUM_MCLS]; /* application Control Blocks */ - BOOLEAN in_use; /* this CB is in use*/ - BOOLEAN reg_pending; - BOOLEAN is_new_app; - UINT8 app_nv_idx; - UINT8 app_id; - //UINT32 sdp_handle; /* SDP record handle */ - tBTA_HL_SUP_FEATURE sup_feature; - tBTA_HL_DCH_CFG channel_type[BTA_HL_NUM_MDEPS]; - tBTA_HL_SDP_INFO_IND sdp_info_ind; - btif_hl_cch_filter_t filter; - - btif_hl_mdl_cfg_t mdl_cfg[BTA_HL_NUM_MDL_CFGS]; - int mdl_cfg_channel_id[BTA_HL_NUM_MDL_CFGS]; - - btif_hl_delete_mdl_t delete_mdl; - tBTA_HL_DEVICE_TYPE dev_type; - tBTA_HL_APP_HANDLE app_handle; - UINT16 sec_mask; /* Security mask for BTM_SetSecurityLevel() */ - char srv_name[BTA_SERVICE_NAME_LEN +1]; /* service name to be used in the SDP; null terminated*/ - char srv_desp[BTA_SERVICE_DESP_LEN +1]; /* service description to be used in the SDP; null terminated */ - char provider_name[BTA_PROVIDER_NAME_LEN +1]; /* provide name to be used in the SDP; null terminated */ - char application_name[BTIF_HL_APPLICATION_NAME_LEN +1]; /* applicaiton name */ - -}btif_hl_app_cb_t; + btif_hl_mcl_cb_t mcb[BTA_HL_NUM_MCLS]; /* application Control Blocks */ + BOOLEAN in_use; /* this CB is in use*/ + BOOLEAN reg_pending; + BOOLEAN is_new_app; + UINT8 app_nv_idx; + UINT8 app_id; + + tBTA_HL_SUP_FEATURE sup_feature; + tBTA_HL_DCH_CFG channel_type[BTA_HL_NUM_MDEPS]; + tBTA_HL_SDP_INFO_IND sdp_info_ind; + btif_hl_cch_filter_t filter; + + btif_hl_mdl_cfg_t mdl_cfg[BTA_HL_NUM_MDL_CFGS]; + int mdl_cfg_channel_id[BTA_HL_NUM_MDL_CFGS]; + + btif_hl_delete_mdl_t delete_mdl; + tBTA_HL_DEVICE_TYPE dev_type; + tBTA_HL_APP_HANDLE app_handle; + UINT16 sec_mask; /* Security mask for BTM_SetSecurityLevel() */ + char srv_name[BTA_SERVICE_NAME_LEN +1]; /* service name to be used in the SDP; null terminated*/ + char srv_desp[BTA_SERVICE_DESP_LEN +1]; /* service description to be used in the SDP; null terminated */ + char provider_name[BTA_PROVIDER_NAME_LEN +1]; /* provide name to be used in the SDP; null terminated */ + char application_name[BTIF_HL_APPLICATION_NAME_LEN +1]; /* applicaiton name */ +} btif_hl_app_cb_t; + typedef struct { - BOOLEAN in_use; - UINT8 app_idx; -}btif_hl_pending_reg_cb_t; + BOOLEAN in_use; + UINT8 app_idx; +} btif_hl_pending_reg_cb_t; /* BTIF-HL control block */ typedef struct { - btif_hl_app_cb_t acb[BTA_HL_NUM_APPS]; /* HL Control Blocks */ - tBTA_HL_CTRL_CBACK *p_ctrl_cback; /* pointer to control callback function */ - UINT8 next_app_id; - UINT16 next_channel_id; - btif_hl_state_t state; - btif_hl_nv_cb_t ncb; + btif_hl_app_cb_t acb[BTA_HL_NUM_APPS]; /* HL Control Blocks */ + tBTA_HL_CTRL_CBACK *p_ctrl_cback; /* pointer to control callback function */ + UINT8 next_app_id; + UINT16 next_channel_id; + btif_hl_state_t state; + btif_hl_nv_cb_t ncb; } btif_hl_cb_t; - -enum -{ - BTIF_HL_SEND_CONNECTED_CB, - BTIF_HL_SEND_DISCONNECTED_CB, - BTIF_HL_REG_APP, - BTIF_HL_UNREG_APP, - BTIF_HL_UPDATE_MDL, -}; typedef UINT8 btif_hl_evt_t; typedef struct @@ -350,29 +309,29 @@ typedef struct int channel_id; btif_hl_chan_cb_state_t cb_state; int fd; -}btif_hl_send_chan_state_cb_t; +} btif_hl_send_chan_state_cb_t; typedef struct { UINT8 app_idx; -}btif_hl_reg_t; +} btif_hl_reg_t; + typedef btif_hl_reg_t btif_hl_unreg_t; typedef btif_hl_reg_t btif_hl_update_mdl_t; typedef union { btif_hl_send_chan_state_cb_t chan_cb; - btif_hl_reg_t reg; - btif_hl_unreg_t unreg; - btif_hl_update_mdl_t update_mdl; -}btif_hl_evt_cb_t; + btif_hl_reg_t reg; + btif_hl_unreg_t unreg; + btif_hl_update_mdl_t update_mdl; +} btif_hl_evt_cb_t; - -extern btif_hl_cb_t btif_hl_cb; -extern btif_hl_cb_t *p_btif_hl_cb; -extern btif_hl_nv_cb_t *p_ncb; +/******************************************************************************* +** Functions +********************************************************************************/ #define BTIF_HL_GET_CB_PTR() &(btif_hl_cb) #define BTIF_HL_GET_APP_CB_PTR(app_idx) &(btif_hl_cb.acb[(app_idx)]) @@ -381,6 +340,11 @@ extern btif_hl_nv_cb_t *p_ncb; #define BTIF_HL_GET_PCB_PTR(app_idx, mcl_idx) &(btif_hl_cb.acb[app_idx].mcb[mcl_idx].pcb) #define BTIF_HL_GET_MDL_CFG_PTR(app_idx, item_idx) &(btif_hl_cb.acb[(app_idx)].mdl_cfg[(item_idx)]) #define BTIF_HL_GET_MDL_CFG_CHANNEL_ID_PTR(app_idx, item_idx) &(btif_hl_cb.acb[(app_idx)].mdl_cfg_channel_id[(item_idx)]) + +extern btif_hl_cb_t btif_hl_cb; +extern btif_hl_cb_t *p_btif_hl_cb; +extern btif_hl_nv_cb_t *p_ncb; + extern BOOLEAN btif_hl_find_mcl_idx(UINT8 app_idx, BD_ADDR p_bd_addr, UINT8 *p_mcl_idx); extern BOOLEAN btif_hl_find_app_idx(UINT8 app_id, UINT8 *p_app_idx); extern BOOLEAN btif_hl_find_avail_mcl_idx(UINT8 app_idx, UINT8 *p_mcl_idx); |