15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 31025687c6679608fe9df918f37011414ffc72b62Hemant Gupta * Copyright (c) 2014 The Android Open Source Project 45738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Copyright (C) 2009-2012 Broadcom Corporation 55738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 65738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 75738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * you may not use this file except in compliance with the License. 85738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * You may obtain a copy of the License at: 95738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * See the License for the specific language governing permissions and 165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * limitations under the License. 175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/ 195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifndef BTIF_COMMON_H 215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTIF_COMMON_H 225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "data_types.h" 245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bt_types.h" 255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_api.h" 265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifndef LOG_TAG 285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#error "LOG_TAG not defined, please add in .c file prior to including bt_common.h" 295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <utils/Log.h> 325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Constants & Macros 355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project********************************************************************************/ 365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define ASSERTC(cond, msg, val) if (!(cond)) { ALOGE( \ 385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project "### ASSERT : %s line %d %s (%d) ###", __FILE__, __LINE__, msg, val);} 395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Calculate start of event enumeration; id is top 8 bits of event */ 415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTIF_SIG_START(id) ((id) << 8) 425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* For upstream the MSB bit is always SET */ 445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTIF_SIG_CB_BIT (0x8000) 455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTIF_SIG_CB_START(id) (((id) << 8) | BTIF_SIG_CB_BIT) 465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* BTIF sub-systems */ 485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTIF_CORE 0 495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTIF_DM 1 505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTIF_HFP 2 515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTIF_AV 3 525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTIF_PAN 4 531025687c6679608fe9df918f37011414ffc72b62Hemant Gupta#define BTIF_HF_CLIENT 5 545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern bt_callbacks_t *bt_hal_cbacks; 565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HAL_CBACK(P_CB, P_CBACK, ...)\ 585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (P_CB && P_CB->P_CBACK) { \ 59e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati BTIF_TRACE_API("HAL %s->%s", #P_CB, #P_CBACK); \ 605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project P_CB->P_CBACK(__VA_ARGS__); \ 615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } \ 625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else { \ 635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ASSERTC(0, "Callback is NULL", 0); \ 645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/** 675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * BTIF events for requests that require context switch to btif task 685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * on downstreams path 695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project */ 705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectenum 715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_CORE_API_START = BTIF_SIG_START(BTIF_CORE), 735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_CORE_STORAGE_NO_ACTION, 745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_CORE_STORAGE_ADAPTER_WRITE, 755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_CORE_STORAGE_ADAPTER_READ, 765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_CORE_STORAGE_ADAPTER_READ_ALL, 775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_CORE_STORAGE_REMOTE_WRITE, 785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_CORE_STORAGE_REMOTE_READ, 795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_CORE_STORAGE_REMOTE_READ_ALL, 805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_CORE_STORAGE_READ_ALL, 815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_CORE_STORAGE_NOTIFY_STATUS, 825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* add here */ 835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_DM_API_START = BTIF_SIG_START(BTIF_DM), 855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_DM_ENABLE_SERVICE, 865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_DM_DISABLE_SERVICE, 875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* add here */ 885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HFP_API_START = BTIF_SIG_START(BTIF_HFP), 905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* add here */ 915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_AV_API_START = BTIF_SIG_START(BTIF_AV), 935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* add here */ 945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}; 955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/** 975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * BTIF events for callbacks that require context switch to btif task 985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * on upstream path - Typically these would be non-BTA events 995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * that are generated by the BTIF layer. 1005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project */ 1015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectenum 1025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_CORE_CB_START = BTIF_SIG_CB_START(BTIF_CORE), 1045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* add here */ 1055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_DM_CB_START = BTIF_SIG_CB_START(BTIF_DM), 1075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_DM_CB_DISCOVERY_STARTED, /* Discovery has started */ 1085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_DM_CB_CREATE_BOND, /* Create bond */ 1095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_DM_CB_REMOVE_BOND, /*Remove bond */ 1105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_DM_CB_HID_REMOTE_NAME, /* Remote name callback for HID device */ 1115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_DM_CB_BOND_STATE_BONDING, 112ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta BTIF_DM_CB_LE_TX_TEST, /* BLE Tx Test command complete callback */ 113ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta BTIF_DM_CB_LE_RX_TEST, /* BLE Rx Test command complete callback */ 114ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta BTIF_DM_CB_LE_TEST_END, /* BLE Test mode end callback */ 1155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HFP_CB_START = BTIF_SIG_CB_START(BTIF_HFP), 1175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HFP_CB_AUDIO_CONNECTING, /* HF AUDIO connect has been sent to BTA successfully */ 1185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_PAN_CB_START = BTIF_SIG_CB_START(BTIF_PAN), 1205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_PAN_CB_DISCONNECTING, /* PAN Disconnect has been sent to BTA successfully */ 1211025687c6679608fe9df918f37011414ffc72b62Hemant Gupta 1221025687c6679608fe9df918f37011414ffc72b62Hemant Gupta BTIF_HF_CLIENT_CLIENT_CB_START = BTIF_SIG_CB_START(BTIF_HF_CLIENT), 1231025687c6679608fe9df918f37011414ffc72b62Hemant Gupta BTIF_HF_CLIENT_CB_AUDIO_CONNECTING, /* AUDIO connect has been sent to BTA successfully */ 1245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}; 1255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Macro definitions for BD ADDR persistence */ 1275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/** 1295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * PROPERTY_BT_BDADDR_PATH 1305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * The property key stores the storage location of Bluetooth Device Address 1315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project */ 1325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifndef PROPERTY_BT_BDADDR_PATH 1335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define PROPERTY_BT_BDADDR_PATH "ro.bt.bdaddr_path" 1345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 1355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/** 1375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * PERSIST_BDADDR_PROPERTY 1385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * If there is no valid bdaddr available from PROPERTY_BT_BDADDR_PATH, 1395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * generating a random BDADDR and keeping it in the PERSIST_BDADDR_DROP. 1405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project */ 1415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifndef PERSIST_BDADDR_PROPERTY 1425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define PERSIST_BDADDR_PROPERTY "persist.service.bdroid.bdaddr" 1435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 1445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define FACTORY_BT_BDADDR_STORAGE_LEN 17 1465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 1495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Type definitions for callback functions 1505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project********************************************************************************/ 1515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef void (tBTIF_CBACK) (UINT16 event, char *p_param); 1535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef void (tBTIF_COPY_CBACK) (UINT16 event, char *p_dest, char *p_src); 1545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 1575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Type definitions and return values 1585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project********************************************************************************/ 1595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* this type handles all btif context switches between BTU and HAL */ 1615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR hdr; 1645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTIF_CBACK* p_cb; /* context switch callback */ 1655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* parameters passed to callback */ 1675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 event; /* message event id */ 1685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project char p_param[0]; /* parameter area needs to be last */ 1695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTIF_CONTEXT_SWITCH_CBACK; 1705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 1735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Functions 1745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project********************************************************************************/ 1755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectbt_status_t btif_transfer_context (tBTIF_CBACK *p_cback, UINT16 event, char* p_params, 1775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project int param_len, tBTIF_COPY_CBACK *p_copy_cback); 1785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjecttBTA_SERVICE_MASK btif_get_enabled_services_mask(void); 1795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectbt_status_t btif_enable_service(tBTA_SERVICE_ID service_id); 1805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectbt_status_t btif_disable_service(tBTA_SERVICE_ID service_id); 1815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectint btif_is_enabled(void); 1825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/** 1845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * BTIF_Events 1855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project */ 1865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid btif_enable_bluetooth_evt(tBTA_STATUS status, BD_ADDR local_bd); 1875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid btif_disable_bluetooth_evt(void); 1885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid btif_adapter_properties_evt(bt_status_t status, uint32_t num_props, bt_property_t *p_props); 1895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid btif_remote_properties_evt(bt_status_t status, bt_bdaddr_t *remote_addr, 1905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project uint32_t num_props, bt_property_t *p_props); 1915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* BTIF_COMMON_H */ 192