The Android Open Source Project | 5738f83 | 2012-12-12 16:00:35 -0800 | [diff] [blame] | 1 | /****************************************************************************** |
| 2 | * |
| 3 | * Copyright (C) 2002-2012 Broadcom Corporation |
| 4 | * |
| 5 | * Licensed under the Apache License, Version 2.0 (the "License"); |
| 6 | * you may not use this file except in compliance with the License. |
| 7 | * You may obtain a copy of the License at: |
| 8 | * |
| 9 | * http://www.apache.org/licenses/LICENSE-2.0 |
| 10 | * |
| 11 | * Unless required by applicable law or agreed to in writing, software |
| 12 | * distributed under the License is distributed on an "AS IS" BASIS, |
| 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 14 | * See the License for the specific language governing permissions and |
| 15 | * limitations under the License. |
| 16 | * |
| 17 | ******************************************************************************/ |
| 18 | |
| 19 | /****************************************************************************** |
| 20 | * |
| 21 | * This is the interface file for the bte application task |
| 22 | * |
| 23 | ******************************************************************************/ |
| 24 | |
| 25 | #ifndef BTE_APPL_H |
| 26 | #define BTE_APPL_H |
| 27 | |
| 28 | #include "btm_int.h" |
| 29 | #include "bta_api.h" |
| 30 | #include "bta_sys.h" |
| 31 | #include "bte.h" |
| 32 | |
| 33 | /* Maximum length for serial port device name */ |
| 34 | #ifndef BTE_APPL_MAX_USERIAL_DEV_NAME |
| 35 | #define BTE_APPL_MAX_USERIAL_DEV_NAME (256) |
| 36 | #endif |
| 37 | #ifndef BTAPP_AHF_API_SUPPORT |
| 38 | #define BTAPP_AHF_API_SUPPORT FALSE |
| 39 | #endif |
| 40 | |
| 41 | /* BTA APP_IDs */ |
| 42 | #define UI_DM_ID 1 |
| 43 | #define UI_PRM_ID 20 |
| 44 | /* this defines the enabled BTA modules. client may not be defined as those are enabled at run time. |
| 45 | * they are defined for completeness. please check with bta_sys.h for new modules. |
| 46 | * BTA_ID_DM serves as flag for BTA_EnableBluetooth() |
| 47 | * BTA_ID_RES can be used to fs ID in bte_appl. |
| 48 | */ |
| 49 | |
| 50 | #define BTAPP_NUM_ID_BLOCKS ((BTA_ID_MAX/32)+1) /* number of 32 bit required to store one bit per |
| 51 | btapp id */ |
| 52 | |
| 53 | #define BTAPP_APPL_MAIL_EVENT(x) (x<<8) /* define bte_appl task mail box event. LSB contains |
| 54 | BTA_ID_xxx (see bta_sys.h) */ |
| 55 | #define BTAPP_APPL_MAIL_EVT 0xff00 /* high byte contains bitmap of application module event */ |
| 56 | |
| 57 | /* helper macro to copy BTA callack data y into message buffer x, for event data structure z */ |
| 58 | #define MEMCPY_APPL_MSG(x, y, z) memcpy( (void *)(((UINT8 *)x)+sizeof(BT_HDR)), (void *)y, sizeof(z) ) |
| 59 | |
| 60 | /* Event masks for BTE_APPL_TASK */ |
| 61 | #define BTE_APPL_STARTUP_EVT EVENT_MASK(APPL_EVT_0) /* Bluetooth has started */ |
| 62 | #define BTE_APPL_SHUTDOWN_EVT EVENT_MASK(APPL_EVT_1) /* Bluetooth is shutting down */ |
| 63 | #define BTE_APPL_SOCKET_RX_EVT EVENT_MASK(APPL_EVT_2) /* Socket data ready to be read */ |
| 64 | #define BTE_APPL_DBUS_RX_EVT EVENT_MASK(APPL_EVT_3) /* DBUS message ready to be read */ |
| 65 | #define BTE_APPL_BTA_ENABLE_EVT EVENT_MASK(APPL_EVT_4) /* BTA Enabled event */ |
| 66 | |
| 67 | |
| 68 | /* Application configuration */ |
| 69 | #define BTE_APPL_PATCHRAM_PATH_MAXLEN 128 |
| 70 | #define BTE_APPL_CONTACTS_DB_PATH 256 |
| 71 | |
| 72 | typedef struct { |
Ganesh Ganapathi Batta | ead3cde | 2013-02-05 15:22:31 -0800 | [diff] [blame] | 73 | #if ((BLE_INCLUDED == TRUE) && (SMP_INCLUDED == TRUE)) |
| 74 | UINT8 ble_auth_req; |
| 75 | UINT8 ble_io_cap; |
| 76 | UINT8 ble_init_key; |
| 77 | UINT8 ble_resp_key; |
| 78 | UINT8 ble_max_key_size; |
The Android Open Source Project | 5738f83 | 2012-12-12 16:00:35 -0800 | [diff] [blame] | 79 | #endif |
| 80 | } tBTE_APPL_CFG; |
| 81 | |
| 82 | extern tBTE_APPL_CFG bte_appl_cfg; |
| 83 | |
| 84 | typedef struct { |
| 85 | pthread_mutex_t mutex; /* mutex to protect below signal condition */ |
| 86 | pthread_cond_t cond; /* signal event */ |
| 87 | } tBTAPP_SEMAPHORE; |
| 88 | |
| 89 | /* helper functions to handle pthread conditions event from outside GKI */ |
| 90 | extern void bte_create_semaphore( tBTAPP_SEMAPHORE * p_sema ); |
| 91 | extern void bte_wait_semaphore( tBTAPP_SEMAPHORE * p_sema, unsigned msecs_to ); |
| 92 | extern void bte_signal_semaphore( tBTAPP_SEMAPHORE * p_sema ); |
| 93 | extern void bte_destroy_semaphore( tBTAPP_SEMAPHORE * p_sema ); |
| 94 | |
| 95 | /* global application control block storing global application states and variables */ |
| 96 | typedef struct tBTE_APPL_CB_tag { |
| 97 | sigset_t signal_handler_set; /* signal handler set used by signal handler thread */ |
| 98 | #if ( TRUE == BTE_RESET_BAUD_ON_BT_DISABLE ) |
| 99 | tBTAPP_SEMAPHORE shutdown_semaphore; /* used to sync with terminate handler initated ops */ |
| 100 | #endif |
| 101 | BOOLEAN amp_enabled; /* TRUE if AMP is in use */ |
| 102 | } tBTE_APPL_CB; |
| 103 | |
| 104 | extern tBTE_APPL_CB bte_appl_cb; |
| 105 | |
| 106 | /* Exports the application task */ |
| 107 | extern void BTE_appl_task(UINT32 params); |
| 108 | extern int BTAPP_enable_bta( const UINT32 bta_module_state[BTAPP_NUM_ID_BLOCKS], int includingFM ); |
| 109 | extern int BTAPP_disable_bta( const UINT32 bta_module_state[BTAPP_NUM_ID_BLOCKS], int includingFM ); |
| 110 | |
| 111 | extern UINT8 appl_trace_level; |
| 112 | #define BT_PCM_CLK_IDX 1 |
| 113 | #ifndef BT_PCM_DEF_CLK |
| 114 | #define BT_PCM_DEF_CLK 4 /* defaults to 2048khz PCM clk */ |
| 115 | #endif |
| 116 | #define BT_PCM_SYNC_MS_ROLE_IDX 3 |
| 117 | #define BT_PCM_CLK_MS_ROLE_IDX 4 |
| 118 | #ifndef BT_PCM_DEF_ROLE |
| 119 | #define BT_PCM_DEF_ROLE 0x00 /* assume slave as default */ |
| 120 | #endif |
| 121 | |
| 122 | /* helper macros to set, clear and get current BTA module id in a 32bit ARRAY!! */ |
| 123 | /* set bit id to 1 in UINT32 a[] NO RANGE CHECK!*/ |
| 124 | #define BTAPP_SET_BTA_MOD(id, a) { a[id/32] |= (UINT32)(1<<(id % 32)); } |
| 125 | |
| 126 | /* set bit id to 0 (cleared) in UINT32 a[] NO RANGE CHECK */ |
| 127 | #define BTAPP_CLEAR_BTA_MOD(id, a) { a[id/32] &= (UINT32)!(1<<(id % 32)); } |
| 128 | |
| 129 | /* tests if bit id is 1 in UINT32 a[] NO RANGE CHECK */ |
| 130 | #define BTAPP_BTA_MOD_IS_SET(id, a) (a[id/32] & (UINT32)(1<<(id % 32))) |
| 131 | |
| 132 | /* update this list either via btld.txt or directly here by adding the new profiles as per bta_sys.h. |
| 133 | * each xxx_LISTx may only contain 32 bits */ |
| 134 | #ifndef BTAPP_BTA_MODULES_LIST0 |
| 135 | #define BTAPP_BTA_MODULES_LIST0 (\ |
| 136 | ( 1<<BTA_ID_DM ) | \ |
| 137 | ( 1<<BTA_ID_DG ) | \ |
| 138 | ( 1<<BTA_ID_AG ) | \ |
| 139 | ( 1<<BTA_ID_OPC )| \ |
| 140 | ( 1<<BTA_ID_OPS )| \ |
| 141 | ( 1<<BTA_ID_FTS )| \ |
| 142 | ( 1<<BTA_ID_PAN )| \ |
| 143 | ( 1<<BTA_ID_PR ) | \ |
| 144 | ( 1<<BTA_ID_SC) | \ |
| 145 | ( 1<<BTA_ID_AV ) | \ |
| 146 | ( 1<<BTA_ID_HH ) | \ |
| 147 | ( 1<<BTA_ID_PBS) | \ |
| 148 | ( 1<<BTA_ID_FMTX)| \ |
| 149 | ( 1<<BTA_ID_JV) | \ |
| 150 | ( 1<<BTA_ID_MSE) \ |
| 151 | ) |
| 152 | #endif |
| 153 | |
| 154 | #define BTAPP_LIST1_BLOCK 32 /* next 32 bit block */ |
| 155 | #ifndef BTAPP_BTA_MODULES_LIST1 |
| 156 | #define BTAPP_BTA_MODULES_LIST1 (\ |
| 157 | ( 1<<(BTA_ID_MAX-BTAPP_LIST1_BLOCK) ) | \ |
| 158 | ( 1<<(BTA_ID_MSE-BTAPP_LIST1_BLOCK) ) | \ |
| 159 | 0 \ |
| 160 | ) |
| 161 | #endif |
| 162 | /* for future GPS etc support. goes int LIST1 above */ |
| 163 | #if 0 |
| 164 | ( 1<<(BTA_ID_SSR-BTAPP_LIST1_BLOCK) ) \ |
| 165 | ( 1<<(BTA_ID_MSE-BTAPP_LIST1_BLOCK) ) \ |
| 166 | ( 1<<(BTA_ID_MCE-BTAPP_LIST1_BLOCK) ) |
| 167 | #endif |
| 168 | |
| 169 | /* used application init default in bte_main.c, bte_appl_cfg */ |
| 170 | #ifndef BTAPP_DEFAULT_MODULES |
| 171 | #if (1==BTAPP_NUM_ID_BLOCKS) |
| 172 | #define BTAPP_DEFAULT_MODULES {BTAPP_BTA_MODULES_LIST0} /* max 32 modules IDs */ |
| 173 | #elif (2==BTAPP_NUM_ID_BLOCKS) |
| 174 | #define BTAPP_DEFAULT_MODULES {BTAPP_BTA_MODULES_LIST0, BTAPP_BTA_MODULES_LIST1} /* 64 module IDs max */ |
| 175 | #else |
| 176 | #error "Define more BTAPP_BTA_MODULES_LISTx" |
| 177 | #endif |
| 178 | #endif |
| 179 | |
| 180 | #endif /* BTE_APPL_H */ |