/****************************************************************************** * * Copyright (C) 2003-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 private interface file for the BTA system manager. * ******************************************************************************/ #ifndef BTA_SYS_INT_H #define BTA_SYS_INT_H #include "ptim.h" /***************************************************************************** ** Constants and data types *****************************************************************************/ /***************************************************************************** ** state table *****************************************************************************/ /* SYS HW state */ enum { BTA_SYS_HW_OFF, BTA_SYS_HW_STARTING, BTA_SYS_HW_ON, BTA_SYS_HW_STOPPING }; typedef UINT8 tBTA_SYS_HW_STATE; /* Collision callback */ #define MAX_COLLISION_REG 5 typedef struct { UINT8 id[MAX_COLLISION_REG]; tBTA_SYS_CONN_CBACK *p_coll_cback[MAX_COLLISION_REG]; } tBTA_SYS_COLLISION; /* system manager control block */ typedef struct { tBTA_SYS_REG *reg[BTA_ID_MAX]; /* registration structures */ BOOLEAN is_reg[BTA_ID_MAX]; /* registration structures */ tPTIM_CB ptim_cb; /* protocol timer list */ BOOLEAN timers_disabled; /* TRUE if sys timers disabled */ UINT8 task_id; /* GKI task id */ tBTA_SYS_HW_STATE state; tBTA_SYS_HW_CBACK *sys_hw_cback[BTA_SYS_MAX_HW_MODULES]; /* enable callback for each HW modules */ UINT32 sys_hw_module_active; /* bitmask of all active modules */ UINT16 sys_features; /* Bitmask of sys features */ tBTA_SYS_CONN_CBACK *prm_cb; /* role management callback registered by DM */ tBTA_SYS_CONN_CBACK *ppm_cb; /* low power management callback registered by DM */ tBTA_SYS_CONN_CBACK *p_policy_cb; /* link policy change callback registered by DM */ tBTA_SYS_CONN_CBACK *p_sco_cb; /* SCO connection change callback registered by AV */ tBTA_SYS_CONN_CBACK *p_role_cb; /* role change callback registered by AV */ tBTA_SYS_COLLISION colli_reg; /* collision handling module */ #if ( BTM_EIR_SERVER_INCLUDED == TRUE )&&(BTA_EIR_CANNED_UUID_LIST != TRUE) tBTA_SYS_EIR_CBACK *eir_cb; /* add/remove UUID into EIR */ #endif #if (BTM_SSR_INCLUDED == TRUE) tBTA_SYS_SSR_CFG_CBACK *p_ssr_cb; #endif } tBTA_SYS_CB; /***************************************************************************** ** Global variables *****************************************************************************/ /* system manager control block */ #if BTA_DYNAMIC_MEMORY == FALSE extern tBTA_SYS_CB bta_sys_cb; #else extern tBTA_SYS_CB *bta_sys_cb_ptr; #define bta_sys_cb (*bta_sys_cb_ptr) #endif /* system manager configuration structure */ extern tBTA_SYS_CFG *p_bta_sys_cfg; /* functions used for BTA SYS HW state machine */ void bta_sys_hw_btm_cback( tBTM_DEV_STATUS status ); void bta_sys_hw_error(tBTA_SYS_HW_MSG *p_sys_hw_msg); void bta_sys_hw_api_enable( tBTA_SYS_HW_MSG *p_sys_hw_msg ); void bta_sys_hw_api_disable(tBTA_SYS_HW_MSG *p_sys_hw_msg); void bta_sys_hw_evt_enabled(tBTA_SYS_HW_MSG *p_sys_hw_msg); void bta_sys_hw_evt_disabled(tBTA_SYS_HW_MSG *p_sys_hw_msg); void bta_sys_hw_evt_stack_enabled(tBTA_SYS_HW_MSG *p_sys_hw_msg); BOOLEAN bta_sys_sm_execute(BT_HDR *p_msg); #endif /* BTA_SYS_INT_H */