1 /****************************************************************************** 2 * 3 * Copyright (C) 1999-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 file contains the Bluetooth Manager (BTM) API function external 22 * definitions. 23 * 24 ******************************************************************************/ 25 #ifndef BTM_BLE_API_H 26 #define BTM_BLE_API_H 27 28 #include "btm_api.h" 29 #include "gki.h" 30 #include <hardware/bt_common_types.h> 31 32 #define CHNL_MAP_LEN 5 33 typedef UINT8 tBTM_BLE_CHNL_MAP[CHNL_MAP_LEN]; 34 35 /* 0x00-0x04 only used for set advertising parameter command */ 36 #define BTM_BLE_CONNECT_EVT 0x00 /* 0x00-0x04 only used for set advertising 37 parameter command */ 38 #define BTM_BLE_CONNECT_DIR_EVT 0x01 /* Connectable directed advertising */ 39 #define BTM_BLE_DISCOVER_EVT 0x02 /* Scannable undirected advertising */ 40 #define BTM_BLE_NON_CONNECT_EVT 0x03 /* Non connectable undirected advertising */ 41 #define BTM_BLE_CONNECT_LO_DUTY_DIR_EVT 0x04 /* Connectable low duty 42 cycle directed advertising */ 43 /* 0x00 - 0x05 can be received on adv event type */ 44 #define BTM_BLE_SCAN_RSP_EVT 0x04 45 #define BTM_BLE_SCAN_REQ_EVT 0x05 46 #define BTM_BLE_UNKNOWN_EVT 0xff 47 48 #define BTM_BLE_UNKNOWN_EVT 0xff 49 50 typedef UINT8 tBTM_BLE_EVT; 51 typedef UINT8 tBTM_BLE_CONN_MODE; 52 53 typedef UINT32 tBTM_BLE_REF_VALUE; 54 55 #define BTM_BLE_SCAN_MODE_PASS 0 56 #define BTM_BLE_SCAN_MODE_ACTI 1 57 #define BTM_BLE_SCAN_MODE_NONE 0xff 58 typedef UINT8 tBLE_SCAN_MODE; 59 60 #define BTM_BLE_BATCH_SCAN_MODE_DISABLE 0 61 #define BTM_BLE_BATCH_SCAN_MODE_PASS 1 62 #define BTM_BLE_BATCH_SCAN_MODE_ACTI 2 63 #define BTM_BLE_BATCH_SCAN_MODE_PASS_ACTI 3 64 65 typedef UINT8 tBTM_BLE_BATCH_SCAN_MODE; 66 67 /* advertising channel map */ 68 #define BTM_BLE_ADV_CHNL_37 (0x01 << 0) 69 #define BTM_BLE_ADV_CHNL_38 (0x01 << 1) 70 #define BTM_BLE_ADV_CHNL_39 (0x01 << 2) 71 typedef UINT8 tBTM_BLE_ADV_CHNL_MAP; 72 73 /*d efault advertising channel map */ 74 #ifndef BTM_BLE_DEFAULT_ADV_CHNL_MAP 75 #define BTM_BLE_DEFAULT_ADV_CHNL_MAP (BTM_BLE_ADV_CHNL_37| BTM_BLE_ADV_CHNL_38| BTM_BLE_ADV_CHNL_39) 76 #endif 77 78 /* advertising filter policy */ 79 #define AP_SCAN_CONN_ALL 0x00 /* default */ 80 #define AP_SCAN_WL_CONN_ALL 0x01 81 #define AP_SCAN_ALL_CONN_WL 0x02 82 #define AP_SCAN_CONN_WL 0x03 83 #define AP_SCAN_CONN_POLICY_MAX 0x04 84 typedef UINT8 tBTM_BLE_AFP; 85 86 /* default advertising filter policy */ 87 #ifndef BTM_BLE_DEFAULT_AFP 88 #define BTM_BLE_DEFAULT_AFP AP_SCAN_CONN_ALL 89 #endif 90 91 /* scanning filter policy */ 92 #define SP_ADV_ALL 0x00 /* 0: accept adv packet from all, directed adv pkt not directed */ 93 /* to local device is ignored */ 94 #define SP_ADV_WL 0x01 /* 1: accept adv packet from device in white list, directed adv */ 95 /* packet not directed to local device is ignored */ 96 #define SP_ADV_ALL_RPA_DIR_ADV 0x02 /* 2: accept adv packet from all, directed adv pkt */ 97 /* not directed to me is ignored except direct adv with RPA */ 98 #define SP_ADV_WL_RPA_DIR_ADV 0x03 /* 3: accept adv packet from device in white list, directed */ 99 /* adv pkt not directed to me is ignored except direct adv */ 100 /* with RPA */ 101 typedef UINT8 tBTM_BLE_SFP; 102 103 #ifndef BTM_BLE_DEFAULT_SFP 104 #define BTM_BLE_DEFAULT_SFP SP_ADV_ALL 105 #endif 106 107 /* adv parameter boundary values */ 108 #define BTM_BLE_ADV_INT_MIN 0x0020 109 #define BTM_BLE_ADV_INT_MAX 0x4000 110 111 /* Full scan boundary values */ 112 #define BTM_BLE_ADV_SCAN_FULL_MIN 0x00 113 #define BTM_BLE_ADV_SCAN_FULL_MAX 0x64 114 115 /* Partial scan boundary values */ 116 #define BTM_BLE_ADV_SCAN_TRUNC_MIN BTM_BLE_ADV_SCAN_FULL_MIN 117 #define BTM_BLE_ADV_SCAN_TRUNC_MAX BTM_BLE_ADV_SCAN_FULL_MAX 118 119 /* Threshold values */ 120 #define BTM_BLE_ADV_SCAN_THR_MIN BTM_BLE_ADV_SCAN_FULL_MIN 121 #define BTM_BLE_ADV_SCAN_THR_MAX BTM_BLE_ADV_SCAN_FULL_MAX 122 123 /* connection parameter boundary values */ 124 #define BTM_BLE_SCAN_INT_MIN 0x0004 125 #define BTM_BLE_SCAN_INT_MAX 0x4000 126 #define BTM_BLE_SCAN_WIN_MIN 0x0004 127 #define BTM_BLE_SCAN_WIN_MAX 0x4000 128 #define BTM_BLE_EXT_SCAN_INT_MAX 0x00FFFFFF 129 #define BTM_BLE_EXT_SCAN_WIN_MAX 0xFFFF 130 #define BTM_BLE_CONN_INT_MIN 0x0006 131 #define BTM_BLE_CONN_INT_MAX 0x0C80 132 #define BTM_BLE_CONN_LATENCY_MAX 500 133 #define BTM_BLE_CONN_SUP_TOUT_MIN 0x000A 134 #define BTM_BLE_CONN_SUP_TOUT_MAX 0x0C80 135 #define BTM_BLE_CONN_PARAM_UNDEF 0xffff /* use this value when a specific value not to be overwritten */ 136 #define BTM_BLE_SCAN_PARAM_UNDEF 0xffffffff 137 138 /* default connection parameters if not configured, use GAP recommend value for auto/selective connection */ 139 /* default scan interval */ 140 #ifndef BTM_BLE_SCAN_FAST_INT 141 #define BTM_BLE_SCAN_FAST_INT 96 /* 30 ~ 60 ms (use 60) = 96 *0.625 */ 142 #endif 143 /* default scan window for background connection, applicable for auto connection or selective conenction */ 144 #ifndef BTM_BLE_SCAN_FAST_WIN 145 #define BTM_BLE_SCAN_FAST_WIN 48 /* 30 ms = 48 *0.625 */ 146 #endif 147 148 /* default scan paramter used in reduced power cycle (background scanning) */ 149 #ifndef BTM_BLE_SCAN_SLOW_INT_1 150 #define BTM_BLE_SCAN_SLOW_INT_1 2048 /* 1.28 s = 2048 *0.625 */ 151 #endif 152 #ifndef BTM_BLE_SCAN_SLOW_WIN_1 153 #define BTM_BLE_SCAN_SLOW_WIN_1 48 /* 30 ms = 48 *0.625 */ 154 #endif 155 156 /* default scan paramter used in reduced power cycle (background scanning) */ 157 #ifndef BTM_BLE_SCAN_SLOW_INT_2 158 #define BTM_BLE_SCAN_SLOW_INT_2 4096 /* 2.56 s = 4096 *0.625 */ 159 #endif 160 #ifndef BTM_BLE_SCAN_SLOW_WIN_2 161 #define BTM_BLE_SCAN_SLOW_WIN_2 36 /* 22.5 ms = 36 *0.625 */ 162 #endif 163 164 /* default connection interval min */ 165 #ifndef BTM_BLE_CONN_INT_MIN_DEF 166 #define BTM_BLE_CONN_INT_MIN_DEF 24 /* recommended min: 30ms = 24 * 1.25 */ 167 #endif 168 169 /* default connectino interval max */ 170 #ifndef BTM_BLE_CONN_INT_MAX_DEF 171 #define BTM_BLE_CONN_INT_MAX_DEF 40 /* recommended max: 50 ms = 56 * 1.25 */ 172 #endif 173 174 /* default slave latency */ 175 #ifndef BTM_BLE_CONN_SLAVE_LATENCY_DEF 176 #define BTM_BLE_CONN_SLAVE_LATENCY_DEF 0 /* 0 */ 177 #endif 178 179 /* default supervision timeout */ 180 #ifndef BTM_BLE_CONN_TIMEOUT_DEF 181 #define BTM_BLE_CONN_TIMEOUT_DEF 2000 182 #endif 183 184 /* minimum acceptable connection interval */ 185 #ifndef BTM_BLE_CONN_INT_MIN_LIMIT 186 #define BTM_BLE_CONN_INT_MIN_LIMIT 0x0009 187 #endif 188 189 #define BTM_BLE_DIR_CONN_FALLBACK_UNDIR 1 190 #define BTM_BLE_DIR_CONN_FALLBACK_NO_ADV 2 191 192 #ifndef BTM_BLE_DIR_CONN_FALLBACK 193 #define BTM_BLE_DIR_CONN_FALLBACK BTM_BLE_DIR_CONN_FALLBACK_UNDIR 194 #endif 195 196 #define BTM_CMAC_TLEN_SIZE 8 /* 64 bits */ 197 #define BTM_BLE_AUTH_SIGN_LEN 12 /* BLE data signature length 8 Bytes + 4 bytes counter*/ 198 typedef UINT8 BLE_SIGNATURE[BTM_BLE_AUTH_SIGN_LEN]; /* Device address */ 199 200 #ifndef BTM_BLE_HOST_SUPPORT 201 #define BTM_BLE_HOST_SUPPORT 0x01 202 #endif 203 204 #ifndef BTM_BLE_SIMULTANEOUS_HOST 205 #define BTM_BLE_SIMULTANEOUS_HOST 0x01 206 #endif 207 208 /* Appearance Values Reported with BTM_BLE_AD_TYPE_APPEARANCE */ 209 #define BTM_BLE_APPEARANCE_UKNOWN 0x0000 210 #define BTM_BLE_APPEARANCE_GENERIC_PHONE 0x0040 211 #define BTM_BLE_APPEARANCE_GENERIC_COMPUTER 0x0080 212 #define BTM_BLE_APPEARANCE_GENERIC_WATCH 0x00C0 213 #define BTM_BLE_APPEARANCE_SPORTS_WATCH 0x00C1 214 #define BTM_BLE_APPEARANCE_GENERIC_CLOCK 0x0100 215 #define BTM_BLE_APPEARANCE_GENERIC_DISPLAY 0x0140 216 #define BTM_BLE_APPEARANCE_GENERIC_REMOTE 0x0180 217 #define BTM_BLE_APPEARANCE_GENERIC_EYEGLASSES 0x01C0 218 #define BTM_BLE_APPEARANCE_GENERIC_TAG 0x0200 219 #define BTM_BLE_APPEARANCE_GENERIC_KEYRING 0x0240 220 #define BTM_BLE_APPEARANCE_GENERIC_MEDIA_PLAYER 0x0280 221 #define BTM_BLE_APPEARANCE_GENERIC_BARCODE_SCANNER 0x02C0 222 #define BTM_BLE_APPEARANCE_GENERIC_THERMOMETER 0x0300 223 #define BTM_BLE_APPEARANCE_THERMOMETER_EAR 0x0301 224 #define BTM_BLE_APPEARANCE_GENERIC_HEART_RATE 0x0340 225 #define BTM_BLE_APPEARANCE_HEART_RATE_BELT 0x0341 226 #define BTM_BLE_APPEARANCE_GENERIC_BLOOD_PRESSURE 0x0380 227 #define BTM_BLE_APPEARANCE_BLOOD_PRESSURE_ARM 0x0381 228 #define BTM_BLE_APPEARANCE_BLOOD_PRESSURE_WRIST 0x0382 229 #define BTM_BLE_APPEARANCE_GENERIC_HID 0x03C0 230 #define BTM_BLE_APPEARANCE_HID_KEYBOARD 0x03C1 231 #define BTM_BLE_APPEARANCE_HID_MOUSE 0x03C2 232 #define BTM_BLE_APPEARANCE_HID_JOYSTICK 0x03C3 233 #define BTM_BLE_APPEARANCE_HID_GAMEPAD 0x03C4 234 #define BTM_BLE_APPEARANCE_HID_DIGITIZER_TABLET 0x03C5 235 #define BTM_BLE_APPEARANCE_HID_CARD_READER 0x03C6 236 #define BTM_BLE_APPEARANCE_HID_DIGITAL_PEN 0x03C7 237 #define BTM_BLE_APPEARANCE_HID_BARCODE_SCANNER 0x03C8 238 #define BTM_BLE_APPEARANCE_GENERIC_GLUCOSE 0x0400 239 #define BTM_BLE_APPEARANCE_GENERIC_WALKING 0x0440 240 #define BTM_BLE_APPEARANCE_WALKING_IN_SHOE 0x0441 241 #define BTM_BLE_APPEARANCE_WALKING_ON_SHOE 0x0442 242 #define BTM_BLE_APPEARANCE_WALKING_ON_HIP 0x0443 243 #define BTM_BLE_APPEARANCE_GENERIC_CYCLING 0x0480 244 #define BTM_BLE_APPEARANCE_CYCLING_COMPUTER 0x0481 245 #define BTM_BLE_APPEARANCE_CYCLING_SPEED 0x0482 246 #define BTM_BLE_APPEARANCE_CYCLING_CADENCE 0x0483 247 #define BTM_BLE_APPEARANCE_CYCLING_POWER 0x0484 248 #define BTM_BLE_APPEARANCE_CYCLING_SPEED_CADENCE 0x0485 249 #define BTM_BLE_APPEARANCE_GENERIC_PULSE_OXIMETER 0x0C40 250 #define BTM_BLE_APPEARANCE_PULSE_OXIMETER_FINGERTIP 0x0C41 251 #define BTM_BLE_APPEARANCE_PULSE_OXIMETER_WRIST 0x0C42 252 #define BTM_BLE_APPEARANCE_GENERIC_WEIGHT 0x0C80 253 #define BTM_BLE_APPEARANCE_GENERIC_OUTDOOR_SPORTS 0x1440 254 #define BTM_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION 0x1441 255 #define BTM_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_AND_NAV 0x1442 256 #define BTM_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_POD 0x1443 257 #define BTM_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_POD_AND_NAV 0x1444 258 259 260 /* Structure returned with Rand/Encrypt complete callback */ 261 typedef struct 262 { 263 UINT8 status; 264 UINT8 param_len; 265 UINT16 opcode; 266 UINT8 param_buf[BT_OCTET16_LEN]; 267 } tBTM_RAND_ENC; 268 269 /* General callback function for notifying an application that a synchronous 270 ** BTM function is complete. The pointer contains the address of any returned data. 271 */ 272 typedef void (tBTM_RAND_ENC_CB) (tBTM_RAND_ENC *p1); 273 274 #define BTM_BLE_FILTER_TARGET_SCANNER 0x01 275 #define BTM_BLE_FILTER_TARGET_ADVR 0x00 276 277 #define BTM_BLE_POLICY_BLACK_ALL 0x00 /* relevant to both */ 278 #define BTM_BLE_POLICY_ALLOW_SCAN 0x01 /* relevant to advertiser */ 279 #define BTM_BLE_POLICY_ALLOW_CONN 0x02 /* relevant to advertiser */ 280 #define BTM_BLE_POLICY_WHITE_ALL 0x03 /* relevant to both */ 281 282 /* ADV data flag bit definition used for BTM_BLE_AD_TYPE_FLAG */ 283 #define BTM_BLE_LIMIT_DISC_FLAG (0x01 << 0) 284 #define BTM_BLE_GEN_DISC_FLAG (0x01 << 1) 285 #define BTM_BLE_BREDR_NOT_SPT (0x01 << 2) 286 /* 4.1 spec adv flag for simultaneous BR/EDR+LE connection support */ 287 #define BTM_BLE_DMT_CONTROLLER_SPT (0x01 << 3) 288 #define BTM_BLE_DMT_HOST_SPT (0x01 << 4) 289 #define BTM_BLE_NON_LIMIT_DISC_FLAG (0x00 ) /* lowest bit unset */ 290 #define BTM_BLE_ADV_FLAG_MASK (BTM_BLE_LIMIT_DISC_FLAG | BTM_BLE_BREDR_NOT_SPT | BTM_BLE_GEN_DISC_FLAG) 291 #define BTM_BLE_LIMIT_DISC_MASK (BTM_BLE_LIMIT_DISC_FLAG ) 292 293 #define BTM_BLE_AD_BIT_DEV_NAME (0x00000001 << 0) 294 #define BTM_BLE_AD_BIT_FLAGS (0x00000001 << 1) 295 #define BTM_BLE_AD_BIT_MANU (0x00000001 << 2) 296 #define BTM_BLE_AD_BIT_TX_PWR (0x00000001 << 3) 297 #define BTM_BLE_AD_BIT_INT_RANGE (0x00000001 << 5) 298 #define BTM_BLE_AD_BIT_SERVICE (0x00000001 << 6) 299 #define BTM_BLE_AD_BIT_SERVICE_SOL (0x00000001 << 7) 300 #define BTM_BLE_AD_BIT_SERVICE_DATA (0x00000001 << 8) 301 #define BTM_BLE_AD_BIT_SIGN_DATA (0x00000001 << 9) 302 #define BTM_BLE_AD_BIT_SERVICE_128SOL (0x00000001 << 10) 303 #define BTM_BLE_AD_BIT_APPEARANCE (0x00000001 << 11) 304 #define BTM_BLE_AD_BIT_PUBLIC_ADDR (0x00000001 << 12) 305 #define BTM_BLE_AD_BIT_RANDOM_ADDR (0x00000001 << 13) 306 #define BTM_BLE_AD_BIT_SERVICE_32 (0x00000001 << 4) 307 #define BTM_BLE_AD_BIT_SERVICE_32SOL (0x00000001 << 14) 308 #define BTM_BLE_AD_BIT_PROPRIETARY (0x00000001 << 15) 309 #define BTM_BLE_AD_BIT_SERVICE_128 (0x00000001 << 16) /*128-bit Service UUIDs*/ 310 311 typedef UINT32 tBTM_BLE_AD_MASK; 312 313 #define BTM_BLE_AD_TYPE_FLAG HCI_EIR_FLAGS_TYPE /* 0x01 */ 314 #define BTM_BLE_AD_TYPE_16SRV_PART HCI_EIR_MORE_16BITS_UUID_TYPE /* 0x02 */ 315 #define BTM_BLE_AD_TYPE_16SRV_CMPL HCI_EIR_COMPLETE_16BITS_UUID_TYPE /* 0x03 */ 316 #define BTM_BLE_AD_TYPE_32SRV_PART HCI_EIR_MORE_32BITS_UUID_TYPE /* 0x04 */ 317 #define BTM_BLE_AD_TYPE_32SRV_CMPL HCI_EIR_COMPLETE_32BITS_UUID_TYPE /* 0x05 */ 318 #define BTM_BLE_AD_TYPE_128SRV_PART HCI_EIR_MORE_128BITS_UUID_TYPE /* 0x06 */ 319 #define BTM_BLE_AD_TYPE_128SRV_CMPL HCI_EIR_COMPLETE_128BITS_UUID_TYPE /* 0x07 */ 320 #define BTM_BLE_AD_TYPE_NAME_SHORT HCI_EIR_SHORTENED_LOCAL_NAME_TYPE /* 0x08 */ 321 #define BTM_BLE_AD_TYPE_NAME_CMPL HCI_EIR_COMPLETE_LOCAL_NAME_TYPE /* 0x09 */ 322 #define BTM_BLE_AD_TYPE_TX_PWR HCI_EIR_TX_POWER_LEVEL_TYPE /* 0x0A */ 323 #define BTM_BLE_AD_TYPE_DEV_CLASS 0x0D 324 #define BTM_BLE_AD_TYPE_SM_TK 0x10 325 #define BTM_BLE_AD_TYPE_SM_OOB_FLAG 0x11 326 #define BTM_BLE_AD_TYPE_INT_RANGE 0x12 327 #define BTM_BLE_AD_TYPE_SOL_SRV_UUID 0x14 328 #define BTM_BLE_AD_TYPE_128SOL_SRV_UUID 0x15 329 #define BTM_BLE_AD_TYPE_SERVICE_DATA 0x16 330 #define BTM_BLE_AD_TYPE_PUBLIC_TARGET 0x17 331 #define BTM_BLE_AD_TYPE_RANDOM_TARGET 0x18 332 #define BTM_BLE_AD_TYPE_APPEARANCE 0x19 333 #define BTM_BLE_AD_TYPE_ADV_INT 0x1a 334 #define BTM_BLE_AD_TYPE_32SOL_SRV_UUID 0x1b 335 #define BTM_BLE_AD_TYPE_32SERVICE_DATA 0x1c 336 #define BTM_BLE_AD_TYPE_128SERVICE_DATA 0x1d 337 338 #define BTM_BLE_AD_TYPE_MANU HCI_EIR_MANUFACTURER_SPECIFIC_TYPE /* 0xff */ 339 typedef UINT8 tBTM_BLE_AD_TYPE; 340 341 /* Security settings used with L2CAP LE COC */ 342 #define BTM_SEC_LE_LINK_ENCRYPTED 0x01 343 #define BTM_SEC_LE_LINK_PAIRED_WITHOUT_MITM 0x02 344 #define BTM_SEC_LE_LINK_PAIRED_WITH_MITM 0x04 345 346 /* Min/max Preferred number of payload octets that the local Controller 347 should include in a single Link Layer Data Channel PDU. */ 348 #define BTM_BLE_DATA_SIZE_MAX 0x00fb 349 #define BTM_BLE_DATA_SIZE_MIN 0x001b 350 351 /* Preferred maximum number of microseconds that the local Controller 352 should use to transmit a single Link Layer Data Channel PDU. */ 353 #define BTM_BLE_DATA_TX_TIME_MIN 0x0148 354 #define BTM_BLE_DATA_TX_TIME_MAX 0x0848 355 356 /* adv tx power level */ 357 #define BTM_BLE_ADV_TX_POWER_MIN 0 /* minimum tx power */ 358 #define BTM_BLE_ADV_TX_POWER_LOW 1 /* low tx power */ 359 #define BTM_BLE_ADV_TX_POWER_MID 2 /* middle tx power */ 360 #define BTM_BLE_ADV_TX_POWER_UPPER 3 /* upper tx power */ 361 #define BTM_BLE_ADV_TX_POWER_MAX 4 /* maximum tx power */ 362 typedef UINT8 tBTM_BLE_ADV_TX_POWER; 363 364 /* adv tx power in dBm */ 365 typedef struct 366 { 367 UINT8 adv_inst_max; /* max adv instance supported in controller */ 368 UINT8 rpa_offloading; 369 UINT16 tot_scan_results_strg; 370 UINT8 max_irk_list_sz; 371 UINT8 filter_support; 372 UINT8 max_filter; 373 UINT8 energy_support; 374 BOOLEAN values_read; 375 UINT16 version_supported; 376 UINT16 total_trackable_advertisers; 377 UINT8 extended_scan_support; 378 UINT8 debug_logging_supported; 379 }tBTM_BLE_VSC_CB; 380 381 /* slave preferred connection interval range */ 382 typedef struct 383 { 384 UINT16 low; 385 UINT16 hi; 386 387 }tBTM_BLE_INT_RANGE; 388 389 /* Service tag supported in the device */ 390 typedef struct 391 { 392 UINT8 num_service; 393 BOOLEAN list_cmpl; 394 UINT16 *p_uuid; 395 }tBTM_BLE_SERVICE; 396 397 /* 32 bits Service supported in the device */ 398 typedef struct 399 { 400 UINT8 num_service; 401 BOOLEAN list_cmpl; 402 UINT32 *p_uuid; 403 }tBTM_BLE_32SERVICE; 404 405 /* 128 bits Service supported in the device */ 406 typedef struct 407 { 408 BOOLEAN list_cmpl; 409 UINT8 uuid128[MAX_UUID_SIZE]; 410 }tBTM_BLE_128SERVICE; 411 412 typedef struct 413 { 414 UINT8 len; 415 UINT8 *p_val; 416 }tBTM_BLE_MANU; 417 418 419 typedef struct 420 { 421 tBT_UUID service_uuid; 422 UINT8 len; 423 UINT8 *p_val; 424 }tBTM_BLE_SERVICE_DATA; 425 426 typedef struct 427 { 428 UINT8 adv_type; 429 UINT8 len; 430 UINT8 *p_val; /* number of len byte */ 431 }tBTM_BLE_PROP_ELEM; 432 433 typedef struct 434 { 435 UINT8 num_elem; 436 tBTM_BLE_PROP_ELEM *p_elem; 437 }tBTM_BLE_PROPRIETARY; 438 439 typedef struct 440 { 441 tBTM_BLE_INT_RANGE int_range; /* slave prefered conn interval range */ 442 tBTM_BLE_MANU *p_manu; /* manufactuer data */ 443 tBTM_BLE_SERVICE *p_services; /* services */ 444 tBTM_BLE_128SERVICE *p_services_128b; /* 128 bits service */ 445 tBTM_BLE_32SERVICE *p_service_32b; /* 32 bits Service UUID */ 446 tBTM_BLE_SERVICE *p_sol_services; /* 16 bits services Solicitation UUIDs */ 447 tBTM_BLE_32SERVICE *p_sol_service_32b; /* List of 32 bit Service Solicitation UUIDs */ 448 tBTM_BLE_128SERVICE *p_sol_service_128b; /* List of 128 bit Service Solicitation UUIDs */ 449 tBTM_BLE_PROPRIETARY *p_proprietary; 450 tBTM_BLE_SERVICE_DATA *p_service_data; /* service data */ 451 UINT16 appearance; 452 UINT8 flag; 453 UINT8 tx_power; 454 }tBTM_BLE_ADV_DATA; 455 456 #ifndef BTM_BLE_MULTI_ADV_MAX 457 #define BTM_BLE_MULTI_ADV_MAX 16 /* controller returned adv_inst_max should be less 458 than this number */ 459 #endif 460 461 #define BTM_BLE_MULTI_ADV_INVALID 0 462 463 #define BTM_BLE_MULTI_ADV_ENB_EVT 1 464 #define BTM_BLE_MULTI_ADV_DISABLE_EVT 2 465 #define BTM_BLE_MULTI_ADV_PARAM_EVT 3 466 #define BTM_BLE_MULTI_ADV_DATA_EVT 4 467 typedef UINT8 tBTM_BLE_MULTI_ADV_EVT; 468 469 #define BTM_BLE_MULTI_ADV_DEFAULT_STD 0 470 471 typedef struct 472 { 473 UINT16 adv_int_min; 474 UINT16 adv_int_max; 475 UINT8 adv_type; 476 tBTM_BLE_ADV_CHNL_MAP channel_map; 477 tBTM_BLE_AFP adv_filter_policy; 478 tBTM_BLE_ADV_TX_POWER tx_power; 479 }tBTM_BLE_ADV_PARAMS; 480 481 typedef struct 482 { 483 UINT8 *p_sub_code; /* dynamic array to store sub code */ 484 UINT8 *p_inst_id; /* dynamic array to store instance id */ 485 UINT8 pending_idx; 486 UINT8 next_idx; 487 }tBTM_BLE_MULTI_ADV_OPQ; 488 489 typedef void (tBTM_BLE_MULTI_ADV_CBACK)(tBTM_BLE_MULTI_ADV_EVT evt, UINT8 inst_id, 490 void *p_ref, tBTM_STATUS status); 491 492 typedef struct 493 { 494 UINT8 inst_id; 495 BOOLEAN in_use; 496 UINT8 adv_evt; 497 BD_ADDR rpa; 498 TIMER_LIST_ENT raddr_timer_ent; 499 tBTM_BLE_MULTI_ADV_CBACK *p_cback; 500 void *p_ref; 501 UINT8 index; 502 }tBTM_BLE_MULTI_ADV_INST; 503 504 typedef struct 505 { 506 UINT8 inst_index_queue[BTM_BLE_MULTI_ADV_MAX]; 507 int front; 508 int rear; 509 }tBTM_BLE_MULTI_ADV_INST_IDX_Q; 510 511 typedef struct 512 { 513 tBTM_BLE_MULTI_ADV_INST *p_adv_inst; /* dynamic array to store adv instance */ 514 tBTM_BLE_MULTI_ADV_OPQ op_q; 515 }tBTM_BLE_MULTI_ADV_CB; 516 517 typedef UINT8 tGATT_IF; 518 519 typedef void (tBTM_BLE_SCAN_THRESHOLD_CBACK)(tBTM_BLE_REF_VALUE ref_value); 520 typedef void (tBTM_BLE_SCAN_REP_CBACK)(tBTM_BLE_REF_VALUE ref_value, UINT8 report_format, 521 UINT8 num_records, UINT16 total_len, 522 UINT8* p_rep_data, UINT8 status); 523 typedef void (tBTM_BLE_SCAN_SETUP_CBACK)(UINT8 evt, tBTM_BLE_REF_VALUE ref_value, UINT8 status); 524 525 #ifndef BTM_BLE_BATCH_SCAN_MAX 526 #define BTM_BLE_BATCH_SCAN_MAX 5 527 #endif 528 529 #ifndef BTM_BLE_BATCH_REP_MAIN_Q_SIZE 530 #define BTM_BLE_BATCH_REP_MAIN_Q_SIZE 2 531 #endif 532 533 typedef enum 534 { 535 BTM_BLE_SCAN_INVALID_STATE=0, 536 BTM_BLE_SCAN_ENABLE_CALLED=1, 537 BTM_BLE_SCAN_ENABLED_STATE=2, 538 BTM_BLE_SCAN_DISABLE_CALLED=3, 539 BTM_BLE_SCAN_DISABLED_STATE=4 540 }tBTM_BLE_BATCH_SCAN_STATE; 541 542 enum 543 { 544 BTM_BLE_DISCARD_OLD_ITEMS, 545 BTM_BLE_DISCARD_LOWER_RSSI_ITEMS 546 }; 547 typedef UINT8 tBTM_BLE_DISCARD_RULE; 548 549 typedef struct 550 { 551 UINT8 sub_code[BTM_BLE_BATCH_SCAN_MAX]; 552 tBTM_BLE_BATCH_SCAN_STATE cur_state[BTM_BLE_BATCH_SCAN_MAX]; 553 tBTM_BLE_REF_VALUE ref_value[BTM_BLE_BATCH_SCAN_MAX]; 554 UINT8 pending_idx; 555 UINT8 next_idx; 556 }tBTM_BLE_BATCH_SCAN_OPQ; 557 558 typedef struct 559 { 560 UINT8 rep_mode[BTM_BLE_BATCH_REP_MAIN_Q_SIZE]; 561 tBTM_BLE_REF_VALUE ref_value[BTM_BLE_BATCH_REP_MAIN_Q_SIZE]; 562 UINT8 num_records[BTM_BLE_BATCH_REP_MAIN_Q_SIZE]; 563 UINT16 data_len[BTM_BLE_BATCH_REP_MAIN_Q_SIZE]; 564 UINT8 *p_data[BTM_BLE_BATCH_REP_MAIN_Q_SIZE]; 565 UINT8 pending_idx; 566 UINT8 next_idx; 567 }tBTM_BLE_BATCH_SCAN_REP_Q; 568 569 typedef struct 570 { 571 tBTM_BLE_BATCH_SCAN_STATE cur_state; 572 tBTM_BLE_BATCH_SCAN_MODE scan_mode; 573 UINT32 scan_interval; 574 UINT32 scan_window; 575 tBLE_ADDR_TYPE addr_type; 576 tBTM_BLE_DISCARD_RULE discard_rule; 577 tBTM_BLE_BATCH_SCAN_OPQ op_q; 578 tBTM_BLE_BATCH_SCAN_REP_Q main_rep_q; 579 tBTM_BLE_SCAN_SETUP_CBACK *p_setup_cback; 580 tBTM_BLE_SCAN_THRESHOLD_CBACK *p_thres_cback; 581 tBTM_BLE_SCAN_REP_CBACK *p_scan_rep_cback; 582 tBTM_BLE_REF_VALUE ref_value; 583 }tBTM_BLE_BATCH_SCAN_CB; 584 585 /* filter selection bit index */ 586 #define BTM_BLE_PF_ADDR_FILTER 0 587 #define BTM_BLE_PF_SRVC_DATA 1 588 #define BTM_BLE_PF_SRVC_UUID 2 589 #define BTM_BLE_PF_SRVC_SOL_UUID 3 590 #define BTM_BLE_PF_LOCAL_NAME 4 591 #define BTM_BLE_PF_MANU_DATA 5 592 #define BTM_BLE_PF_SRVC_DATA_PATTERN 6 593 #define BTM_BLE_PF_TYPE_ALL 7 /* when passed in payload filter type all, only clear action is applicable */ 594 #define BTM_BLE_PF_TYPE_MAX 8 595 596 /* max number of filter spot for different filter type */ 597 #ifndef BTM_BLE_MAX_UUID_FILTER 598 #define BTM_BLE_MAX_UUID_FILTER 8 599 #endif 600 #ifndef BTM_BLE_MAX_ADDR_FILTER 601 #define BTM_BLE_MAX_ADDR_FILTER 8 602 #endif 603 #ifndef BTM_BLE_PF_STR_COND_MAX 604 #define BTM_BLE_PF_STR_COND_MAX 4 /* apply to manu data , or local name */ 605 #endif 606 #ifndef BTM_BLE_PF_STR_LEN_MAX 607 #define BTM_BLE_PF_STR_LEN_MAX 29 /* match for first 29 bytes */ 608 #endif 609 610 typedef UINT8 tBTM_BLE_PF_COND_TYPE; 611 612 #define BTM_BLE_PF_LOGIC_OR 0 613 #define BTM_BLE_PF_LOGIC_AND 1 614 typedef UINT8 tBTM_BLE_PF_LOGIC_TYPE; 615 616 #define BTM_BLE_PF_ENABLE 1 617 #define BTM_BLE_PF_CONFIG 2 618 typedef UINT8 tBTM_BLE_PF_ACTION; 619 620 typedef UINT8 tBTM_BLE_PF_FILT_INDEX; 621 622 typedef UINT8 tBTM_BLE_PF_AVBL_SPACE; 623 624 #define BTM_BLE_PF_BRDCAST_ADDR_FILT 1 625 #define BTM_BLE_PF_SERV_DATA_CHG_FILT 2 626 #define BTM_BLE_PF_SERV_UUID 4 627 #define BTM_BLE_PF_SERV_SOLC_UUID 8 628 #define BTM_BLE_PF_LOC_NAME_CHECK 16 629 #define BTM_BLE_PF_MANUF_NAME_CHECK 32 630 #define BTM_BLE_PF_SERV_DATA_CHECK 64 631 typedef UINT16 tBTM_BLE_PF_FEAT_SEL; 632 633 #define BTM_BLE_PF_LIST_LOGIC_OR 1 634 #define BTM_BLE_PF_LIST_LOGIC_AND 2 635 typedef UINT16 tBTM_BLE_PF_LIST_LOGIC_TYPE; 636 637 #define BTM_BLE_PF_FILT_LOGIC_OR 0 638 #define BTM_BLE_PF_FILT_LOGIC_AND 1 639 typedef UINT16 tBTM_BLE_PF_FILT_LOGIC_TYPE; 640 641 typedef UINT8 tBTM_BLE_PF_RSSI_THRESHOLD; 642 typedef UINT8 tBTM_BLE_PF_DELIVERY_MODE; 643 typedef UINT16 tBTM_BLE_PF_TIMEOUT; 644 typedef UINT8 tBTM_BLE_PF_TIMEOUT_CNT; 645 typedef UINT16 tBTM_BLE_PF_ADV_TRACK_ENTRIES; 646 647 typedef struct 648 { 649 tBTM_BLE_PF_FEAT_SEL feat_seln; 650 tBTM_BLE_PF_LIST_LOGIC_TYPE logic_type; 651 tBTM_BLE_PF_FILT_LOGIC_TYPE filt_logic_type; 652 tBTM_BLE_PF_RSSI_THRESHOLD rssi_high_thres; 653 tBTM_BLE_PF_RSSI_THRESHOLD rssi_low_thres; 654 tBTM_BLE_PF_DELIVERY_MODE dely_mode; 655 tBTM_BLE_PF_TIMEOUT found_timeout; 656 tBTM_BLE_PF_TIMEOUT lost_timeout; 657 tBTM_BLE_PF_TIMEOUT_CNT found_timeout_cnt; 658 tBTM_BLE_PF_ADV_TRACK_ENTRIES num_of_tracking_entries; 659 }tBTM_BLE_PF_FILT_PARAMS; 660 661 enum 662 { 663 BTM_BLE_SCAN_COND_ADD, 664 BTM_BLE_SCAN_COND_DELETE, 665 BTM_BLE_SCAN_COND_CLEAR = 2 666 }; 667 typedef UINT8 tBTM_BLE_SCAN_COND_OP; 668 669 enum 670 { 671 BTM_BLE_FILT_ENABLE_DISABLE = 1, 672 BTM_BLE_FILT_CFG = 2, 673 BTM_BLE_FILT_ADV_PARAM = 3 674 }; 675 676 typedef UINT8 tBTM_BLE_FILT_CB_EVT; 677 678 /* BLE adv payload filtering config complete callback */ 679 typedef void (tBTM_BLE_PF_CFG_CBACK)(tBTM_BLE_PF_ACTION action, tBTM_BLE_SCAN_COND_OP cfg_op, 680 tBTM_BLE_PF_AVBL_SPACE avbl_space, tBTM_STATUS status, 681 tBTM_BLE_REF_VALUE ref_value); 682 683 typedef void (tBTM_BLE_PF_CMPL_CBACK) (tBTM_BLE_PF_CFG_CBACK); 684 685 /* BLE adv payload filtering status setup complete callback */ 686 typedef void (tBTM_BLE_PF_STATUS_CBACK) (UINT8 action, tBTM_STATUS status, 687 tBTM_BLE_REF_VALUE ref_value); 688 689 /* BLE adv payload filtering param setup complete callback */ 690 typedef void (tBTM_BLE_PF_PARAM_CBACK) (tBTM_BLE_PF_ACTION action_type, 691 tBTM_BLE_PF_AVBL_SPACE avbl_space, 692 tBTM_BLE_REF_VALUE ref_value, tBTM_STATUS status); 693 694 typedef union 695 { 696 UINT16 uuid16_mask; 697 UINT32 uuid32_mask; 698 UINT8 uuid128_mask[LEN_UUID_128]; 699 }tBTM_BLE_PF_COND_MASK; 700 701 typedef struct 702 { 703 tBLE_BD_ADDR *p_target_addr; /* target address, if NULL, generic UUID filter */ 704 tBT_UUID uuid; /* UUID condition */ 705 tBTM_BLE_PF_LOGIC_TYPE cond_logic; /* AND/OR */ 706 tBTM_BLE_PF_COND_MASK *p_uuid_mask; /* UUID mask */ 707 }tBTM_BLE_PF_UUID_COND; 708 709 typedef struct 710 { 711 UINT8 data_len; /* <= 20 bytes */ 712 UINT8 *p_data; 713 }tBTM_BLE_PF_LOCAL_NAME_COND; 714 715 typedef struct 716 { 717 UINT16 company_id; /* company ID */ 718 UINT8 data_len; /* <= 20 bytes */ 719 UINT8 *p_pattern; 720 UINT16 company_id_mask; /* UUID value mask */ 721 UINT8 *p_pattern_mask; /* Manufacturer data matching mask, 722 same length as data pattern, 723 set to all 0xff, match exact data */ 724 }tBTM_BLE_PF_MANU_COND; 725 726 typedef struct 727 { 728 UINT16 uuid; /* service ID */ 729 UINT8 data_len; /* <= 20 bytes */ 730 UINT8 *p_pattern; 731 UINT8 *p_pattern_mask; /* Service data matching mask, same length as data pattern, 732 set to all 0xff, match exact data */ 733 }tBTM_BLE_PF_SRVC_PATTERN_COND; 734 735 736 typedef union 737 { 738 tBLE_BD_ADDR target_addr; 739 tBTM_BLE_PF_LOCAL_NAME_COND local_name; /* lcoal name filtering */ 740 tBTM_BLE_PF_MANU_COND manu_data; /* manufactuer data filtering */ 741 tBTM_BLE_PF_UUID_COND srvc_uuid; /* service UUID filtering */ 742 tBTM_BLE_PF_UUID_COND solicitate_uuid; /* solicitated service UUID filtering */ 743 tBTM_BLE_PF_SRVC_PATTERN_COND srvc_data; /* service data pattern */ 744 }tBTM_BLE_PF_COND_PARAM; 745 746 typedef struct 747 { 748 UINT8 action_ocf[BTM_BLE_PF_TYPE_MAX]; 749 tBTM_BLE_REF_VALUE ref_value[BTM_BLE_PF_TYPE_MAX]; 750 tBTM_BLE_PF_PARAM_CBACK *p_filt_param_cback[BTM_BLE_PF_TYPE_MAX]; 751 tBTM_BLE_PF_CFG_CBACK *p_scan_cfg_cback[BTM_BLE_PF_TYPE_MAX]; 752 UINT8 cb_evt[BTM_BLE_PF_TYPE_MAX]; 753 UINT8 pending_idx; 754 UINT8 next_idx; 755 }tBTM_BLE_ADV_FILTER_ADV_OPQ; 756 757 #define BTM_BLE_MAX_FILTER_COUNTER (BTM_BLE_MAX_ADDR_FILTER + 1) /* per device filter + one generic filter indexed by 0 */ 758 759 #ifndef BTM_CS_IRK_LIST_MAX 760 #define BTM_CS_IRK_LIST_MAX 0x20 761 #endif 762 763 typedef struct 764 { 765 BOOLEAN in_use; 766 BD_ADDR bd_addr; 767 UINT8 pf_counter[BTM_BLE_PF_TYPE_MAX]; /* number of filter indexed by tBTM_BLE_PF_COND_TYPE */ 768 }tBTM_BLE_PF_COUNT; 769 770 typedef struct 771 { 772 BOOLEAN enable; 773 UINT8 op_type; 774 tBTM_BLE_PF_COUNT *p_addr_filter_count; /* per BDA filter array */ 775 tBLE_BD_ADDR cur_filter_target; 776 tBTM_BLE_PF_STATUS_CBACK *p_filt_stat_cback; 777 tBTM_BLE_ADV_FILTER_ADV_OPQ op_q; 778 }tBTM_BLE_ADV_FILTER_CB; 779 780 /* Sub codes */ 781 #define BTM_BLE_META_PF_ENABLE 0x00 782 #define BTM_BLE_META_PF_FEAT_SEL 0x01 783 #define BTM_BLE_META_PF_ADDR 0x02 784 #define BTM_BLE_META_PF_UUID 0x03 785 #define BTM_BLE_META_PF_SOL_UUID 0x04 786 #define BTM_BLE_META_PF_LOCAL_NAME 0x05 787 #define BTM_BLE_META_PF_MANU_DATA 0x06 788 #define BTM_BLE_META_PF_SRVC_DATA 0x07 789 #define BTM_BLE_META_PF_ALL 0x08 790 791 typedef UINT8 BTM_BLE_ADV_STATE; 792 typedef UINT8 BTM_BLE_ADV_INFO_PRESENT; 793 typedef UINT8 BTM_BLE_RSSI_VALUE; 794 typedef UINT16 BTM_BLE_ADV_INFO_TIMESTAMP; 795 796 /* These are the fields returned in each device adv packet. It 797 ** is returned in the results callback if registered. 798 */ 799 typedef struct 800 { 801 UINT8 conn_mode; 802 tBTM_BLE_AD_MASK ad_mask; /* mask of the valid adv data field */ 803 UINT8 flag; 804 UINT8 tx_power_level; 805 UINT8 remote_name_len; 806 UINT8 *p_remote_name; 807 tBTM_BLE_SERVICE service; 808 } tBTM_BLE_INQ_DATA; 809 810 enum 811 { 812 BTM_BLE_CONN_NONE, 813 BTM_BLE_CONN_AUTO, 814 BTM_BLE_CONN_SELECTIVE 815 }; 816 typedef UINT8 tBTM_BLE_CONN_TYPE; 817 818 #define ADV_INFO_PRESENT 0x00 819 #define NO_ADV_INFO_PRESENT 0x01 820 821 typedef btgatt_track_adv_info_t tBTM_BLE_TRACK_ADV_DATA; 822 823 typedef void (tBTM_BLE_TRACK_ADV_CBACK)(tBTM_BLE_TRACK_ADV_DATA *p_track_adv_data); 824 825 typedef UINT8 tBTM_BLE_TRACK_ADV_EVT; 826 827 typedef struct 828 { 829 tBTM_BLE_REF_VALUE ref_value; 830 tBTM_BLE_TRACK_ADV_CBACK *p_track_cback; 831 }tBTM_BLE_ADV_TRACK_CB; 832 833 enum 834 { 835 BTM_BLE_TRACK_ADV_ADD, 836 BTM_BLE_TRACK_ADV_REMOVE 837 }; 838 839 typedef UINT8 tBTM_BLE_TRACK_ADV_ACTION; 840 841 #define BTM_BLE_MULTI_ADV_INVALID 0 842 843 #define BTM_BLE_BATCH_SCAN_ENABLE_EVT 1 844 #define BTM_BLE_BATCH_SCAN_CFG_STRG_EVT 2 845 #define BTM_BLE_BATCH_SCAN_READ_REPTS_EVT 3 846 #define BTM_BLE_BATCH_SCAN_THR_EVT 4 847 #define BTM_BLE_BATCH_SCAN_PARAM_EVT 5 848 #define BTM_BLE_BATCH_SCAN_DISABLE_EVT 6 849 850 typedef UINT8 tBTM_BLE_BATCH_SCAN_EVT; 851 852 typedef UINT32 tBTM_BLE_TX_TIME_MS; 853 typedef UINT32 tBTM_BLE_RX_TIME_MS; 854 typedef UINT32 tBTM_BLE_IDLE_TIME_MS; 855 typedef UINT32 tBTM_BLE_ENERGY_USED; 856 857 typedef void (tBTM_BLE_ENERGY_INFO_CBACK)(tBTM_BLE_TX_TIME_MS tx_time, tBTM_BLE_RX_TIME_MS rx_time, 858 tBTM_BLE_IDLE_TIME_MS idle_time, 859 tBTM_BLE_ENERGY_USED energy_used, 860 tBTM_STATUS status); 861 862 typedef struct 863 { 864 tBTM_BLE_ENERGY_INFO_CBACK *p_ener_cback; 865 }tBTM_BLE_ENERGY_INFO_CB; 866 867 typedef BOOLEAN (tBTM_BLE_SEL_CBACK)(BD_ADDR random_bda, UINT8 *p_remote_name); 868 typedef void (tBTM_BLE_CTRL_FEATURES_CBACK)(tBTM_STATUS status); 869 870 /* callback function for SMP signing algorithm, signed data in little endian order with tlen bits long */ 871 typedef void (tBTM_BLE_SIGN_CBACK)(void *p_ref_data, UINT8 *p_signing_data); 872 typedef void (tBTM_BLE_VERIFY_CBACK)(void *p_ref_data, BOOLEAN match); 873 /* random address set complete callback */ 874 typedef void (tBTM_BLE_RANDOM_SET_CBACK) (BD_ADDR random_bda); 875 876 typedef void (tBTM_BLE_SCAN_REQ_CBACK)(BD_ADDR remote_bda, tBLE_ADDR_TYPE addr_type, UINT8 adv_evt); 877 typedef void (*tBLE_SCAN_PARAM_SETUP_CBACK)(tGATT_IF client_if, tBTM_STATUS status); 878 879 tBTM_BLE_SCAN_SETUP_CBACK bta_ble_scan_setup_cb; 880 881 /***************************************************************************** 882 ** EXTERNAL FUNCTION DECLARATIONS 883 *****************************************************************************/ 884 #ifdef __cplusplus 885 extern "C" { 886 #endif 887 /******************************************************************************* 888 ** 889 ** Function BTM_SecAddBleDevice 890 ** 891 ** Description Add/modify device. This function will be normally called 892 ** during host startup to restore all required information 893 ** for a LE device stored in the NVRAM. 894 ** 895 ** Parameters: bd_addr - BD address of the peer 896 ** bd_name - Name of the peer device. NULL if unknown. 897 ** dev_type - Remote device's device type. 898 ** addr_type - LE device address type. 899 ** 900 ** Returns TRUE if added OK, else FALSE 901 ** 902 *******************************************************************************/ 903 extern BOOLEAN BTM_SecAddBleDevice (BD_ADDR bd_addr, BD_NAME bd_name, 904 tBT_DEVICE_TYPE dev_type, tBLE_ADDR_TYPE addr_type); 905 906 /******************************************************************************* 907 ** 908 ** Function BTM_SecAddBleKey 909 ** 910 ** Description Add/modify LE device information. This function will be 911 ** normally called during host startup to restore all required 912 ** information stored in the NVRAM. 913 ** 914 ** Parameters: bd_addr - BD address of the peer 915 ** p_le_key - LE key values. 916 ** key_type - LE SMP key type. 917 * 918 ** Returns TRUE if added OK, else FALSE 919 ** 920 *******************************************************************************/ 921 extern BOOLEAN BTM_SecAddBleKey (BD_ADDR bd_addr, tBTM_LE_KEY_VALUE *p_le_key, 922 tBTM_LE_KEY_TYPE key_type); 923 924 /******************************************************************************* 925 ** 926 ** Function BTM_BleSetAdvParams 927 ** 928 ** Description This function is called to set advertising parameters. 929 ** 930 ** Parameters: None. 931 ** 932 ** Returns void 933 ** 934 *******************************************************************************/ 935 extern tBTM_STATUS BTM_BleSetAdvParams(UINT16 adv_int_min, UINT16 adv_int_max, 936 tBLE_BD_ADDR *p_dir_bda, tBTM_BLE_ADV_CHNL_MAP chnl_map); 937 938 /******************************************************************************* 939 ** 940 ** Function BTM_BleWriteAdvData 941 ** 942 ** Description This function is called to write advertising data. 943 ** 944 ** Parameters: None. 945 ** 946 ** Returns void 947 ** 948 *******************************************************************************/ 949 extern tBTM_STATUS BTM_BleWriteAdvData(tBTM_BLE_AD_MASK data_mask, 950 tBTM_BLE_ADV_DATA *p_data); 951 952 /******************************************************************************* 953 ** 954 ** Function BTM_BleSetAdvParams 955 ** 956 ** Description This function is called to set advertising parameters. 957 ** 958 ** Parameters adv_int_min: minimum advertising interval 959 ** adv_int_max: maximum advertising interval 960 ** p_dir_bda: connectable direct initiator's LE device address 961 ** chnl_map: advertising channel map. 962 ** 963 ** Returns void 964 ** 965 *******************************************************************************/ 966 extern void BTM_BleReadAdvParams (UINT16 *adv_int_min, UINT16 *adv_int_max, 967 tBLE_BD_ADDR *p_dir_bda, tBTM_BLE_ADV_CHNL_MAP *p_chnl_map); 968 969 /******************************************************************************* 970 ** 971 ** Function BTM_BleObtainVendorCapabilities 972 ** 973 ** Description This function is called to obatin vendor capabilties 974 ** 975 ** Parameters p_cmn_vsc_cb - Returns the vednor capabilities 976 ** 977 ** Returns void 978 ** 979 *******************************************************************************/ 980 extern void BTM_BleObtainVendorCapabilities(tBTM_BLE_VSC_CB *p_cmn_vsc_cb); 981 982 /******************************************************************************* 983 ** 984 ** Function BTM_BleSetScanParams 985 ** 986 ** Description This function is called to set Scan parameters. 987 ** 988 ** Parameters client_if - Client IF value 989 ** scan_interval - Scan interval 990 ** scan_window - Scan window 991 ** scan_type - Scan type 992 ** scan_setup_status_cback - Scan setup status callback 993 ** 994 ** Returns void 995 ** 996 *******************************************************************************/ 997 extern void BTM_BleSetScanParams(tGATT_IF client_if, UINT32 scan_interval, 998 UINT32 scan_window, tBLE_SCAN_MODE scan_type, 999 tBLE_SCAN_PARAM_SETUP_CBACK scan_setup_status_cback); 1000 1001 /******************************************************************************* 1002 ** 1003 ** Function BTM_BleGetVendorCapabilities 1004 ** 1005 ** Description This function reads local LE features 1006 ** 1007 ** Parameters p_cmn_vsc_cb : Locala LE capability structure 1008 ** 1009 ** Returns void 1010 ** 1011 *******************************************************************************/ 1012 extern void BTM_BleGetVendorCapabilities(tBTM_BLE_VSC_CB *p_cmn_vsc_cb); 1013 /******************************************************************************* 1014 ** 1015 ** Function BTM_BleSetStorageConfig 1016 ** 1017 ** Description This function is called to setup storage configuration and setup callbacks. 1018 ** 1019 ** Parameters UINT8 batch_scan_full_max -Batch scan full maximum 1020 UINT8 batch_scan_trunc_max - Batch scan truncated value maximum 1021 UINT8 batch_scan_notify_threshold - Threshold value 1022 tBTM_BLE_SCAN_SETUP_CBACK *p_setup_cback - Setup callback 1023 tBTM_BLE_SCAN_THRESHOLD_CBACK *p_thres_cback -Threshold callback 1024 void *p_ref - Reference value 1025 ** 1026 ** Returns tBTM_STATUS 1027 ** 1028 *******************************************************************************/ 1029 extern tBTM_STATUS BTM_BleSetStorageConfig(UINT8 batch_scan_full_max, 1030 UINT8 batch_scan_trunc_max, 1031 UINT8 batch_scan_notify_threshold, 1032 tBTM_BLE_SCAN_SETUP_CBACK *p_setup_cback, 1033 tBTM_BLE_SCAN_THRESHOLD_CBACK *p_thres_cback, 1034 tBTM_BLE_SCAN_REP_CBACK* p_cback, 1035 tBTM_BLE_REF_VALUE ref_value); 1036 1037 /******************************************************************************* 1038 ** 1039 ** Function BTM_BleEnableBatchScan 1040 ** 1041 ** Description This function is called to enable batch scan 1042 ** 1043 ** Parameters tBTM_BLE_BATCH_SCAN_MODE scan_mode - Batch scan mode 1044 UINT32 scan_interval -Scan interval 1045 UINT32 scan_window - Scan window value 1046 tBLE_ADDR_TYPE addr_type - Address type 1047 tBTM_BLE_DISCARD_RULE discard_rule - Data discard rules 1048 ** 1049 ** Returns tBTM_STATUS 1050 ** 1051 *******************************************************************************/ 1052 extern tBTM_STATUS BTM_BleEnableBatchScan(tBTM_BLE_BATCH_SCAN_MODE scan_mode, 1053 UINT32 scan_interval, UINT32 scan_window, 1054 tBTM_BLE_DISCARD_RULE discard_rule, 1055 tBLE_ADDR_TYPE addr_type, 1056 tBTM_BLE_REF_VALUE ref_value); 1057 1058 /******************************************************************************* 1059 ** 1060 ** Function BTM_BleDisableBatchScan 1061 ** 1062 ** Description This function is called to disable batch scanning 1063 ** 1064 ** Parameters void 1065 ** 1066 ** Returns void 1067 ** 1068 *******************************************************************************/ 1069 extern tBTM_STATUS BTM_BleDisableBatchScan(tBTM_BLE_REF_VALUE ref_value); 1070 1071 /******************************************************************************* 1072 ** 1073 ** Function BTM_BleReadScanReports 1074 ** 1075 ** Description This function is called to read batch scan reports 1076 ** 1077 ** Parameters tBLE_SCAN_MODE scan_mode - Scan mode report to be read out 1078 tBTM_BLE_SCAN_REP_CBACK* p_cback - Reports callback 1079 ** 1080 ** Returns tBTM_STATUS 1081 ** 1082 *******************************************************************************/ 1083 extern tBTM_STATUS BTM_BleReadScanReports(tBLE_SCAN_MODE scan_mode, 1084 tBTM_BLE_REF_VALUE ref_value); 1085 1086 /******************************************************************************* 1087 ** 1088 ** Function BTM_BleTrackAdvertiser 1089 ** 1090 ** Description This function is called to read batch scan reports 1091 ** 1092 ** Parameters p_track_cback - Tracking callback 1093 ** ref_value - Reference value 1094 ** 1095 ** Returns tBTM_STATUS 1096 ** 1097 *******************************************************************************/ 1098 extern tBTM_STATUS BTM_BleTrackAdvertiser(tBTM_BLE_TRACK_ADV_CBACK *p_track_cback, 1099 tBTM_BLE_REF_VALUE ref_value); 1100 1101 /******************************************************************************* 1102 ** 1103 ** Function BTM_BleWriteScanRsp 1104 ** 1105 ** Description This function is called to write LE scan response. 1106 ** 1107 ** Parameters: p_scan_rsp: scan response. 1108 ** 1109 ** Returns status 1110 ** 1111 *******************************************************************************/ 1112 extern tBTM_STATUS BTM_BleWriteScanRsp(tBTM_BLE_AD_MASK data_mask, 1113 tBTM_BLE_ADV_DATA *p_data); 1114 1115 /******************************************************************************* 1116 ** 1117 ** Function BTM_BleObserve 1118 ** 1119 ** Description This procedure keep the device listening for advertising 1120 ** events from a broadcast device. 1121 ** 1122 ** Parameters start: start or stop observe. 1123 ** 1124 ** Returns void 1125 ** 1126 *******************************************************************************/ 1127 extern tBTM_STATUS BTM_BleObserve(BOOLEAN start, UINT8 duration, 1128 tBTM_INQ_RESULTS_CB *p_results_cb, tBTM_CMPL_CB *p_cmpl_cb); 1129 1130 1131 /******************************************************************************* 1132 ** 1133 ** Function BTM_GetDeviceIDRoot 1134 ** 1135 ** Description This function is called to read the local device identity 1136 ** root. 1137 ** 1138 ** Returns void 1139 ** the local device ER is copied into er 1140 ** 1141 *******************************************************************************/ 1142 extern void BTM_GetDeviceIDRoot (BT_OCTET16 ir); 1143 1144 /******************************************************************************* 1145 ** 1146 ** Function BTM_GetDeviceEncRoot 1147 ** 1148 ** Description This function is called to read the local device encryption 1149 ** root. 1150 ** 1151 ** Returns void 1152 ** the local device ER is copied into er 1153 ** 1154 *******************************************************************************/ 1155 extern void BTM_GetDeviceEncRoot (BT_OCTET16 er); 1156 1157 /******************************************************************************* 1158 ** 1159 ** Function BTM_GetDeviceDHK 1160 ** 1161 ** Description This function is called to read the local device DHK. 1162 ** 1163 ** Returns void 1164 ** the local device DHK is copied into dhk 1165 ** 1166 *******************************************************************************/ 1167 extern void BTM_GetDeviceDHK (BT_OCTET16 dhk); 1168 1169 /******************************************************************************* 1170 ** 1171 ** Function BTM_SecurityGrant 1172 ** 1173 ** Description This function is called to grant security process. 1174 ** 1175 ** Parameters bd_addr - peer device bd address. 1176 ** res - result of the operation BTM_SUCCESS if success. 1177 ** Otherwise, BTM_REPEATED_ATTEMPTS is too many attempts. 1178 ** 1179 ** Returns None 1180 ** 1181 *******************************************************************************/ 1182 extern void BTM_SecurityGrant(BD_ADDR bd_addr, UINT8 res); 1183 1184 /******************************************************************************* 1185 ** 1186 ** Function BTM_BlePasskeyReply 1187 ** 1188 ** Description This function is called after Security Manager submitted 1189 ** passkey request to the application. 1190 ** 1191 ** Parameters: bd_addr - Address of the device for which passkey was requested 1192 ** res - result of the operation SMP_SUCCESS if success 1193 ** passkey - numeric value in the range of 1194 ** BTM_MIN_PASSKEY_VAL(0) - BTM_MAX_PASSKEY_VAL(999999(0xF423F)). 1195 ** 1196 *******************************************************************************/ 1197 extern void BTM_BlePasskeyReply (BD_ADDR bd_addr, UINT8 res, UINT32 passkey); 1198 1199 /******************************************************************************* 1200 ** 1201 ** Function BTM_BleConfirmReply 1202 ** 1203 ** Description This function is called after Security Manager submitted 1204 ** numeric comparison request to the application. 1205 ** 1206 ** Parameters: bd_addr - Address of the device with which numeric 1207 ** comparison was requested 1208 ** res - comparison result BTM_SUCCESS if success 1209 ** 1210 *******************************************************************************/ 1211 extern void BTM_BleConfirmReply (BD_ADDR bd_addr, UINT8 res); 1212 1213 /******************************************************************************* 1214 ** 1215 ** Function BTM_LeOobDataReply 1216 ** 1217 ** Description This function is called to provide the OOB data for 1218 ** SMP in response to BTM_LE_OOB_REQ_EVT 1219 ** 1220 ** Parameters: bd_addr - Address of the peer device 1221 ** res - result of the operation SMP_SUCCESS if success 1222 ** p_data - simple pairing Randomizer C. 1223 ** 1224 *******************************************************************************/ 1225 extern void BTM_BleOobDataReply(BD_ADDR bd_addr, UINT8 res, UINT8 len, UINT8 *p_data); 1226 1227 1228 /******************************************************************************* 1229 ** 1230 ** Function BTM_BleDataSignature 1231 ** 1232 ** Description This function is called to sign the data using AES128 CMAC 1233 ** algorith. 1234 ** 1235 ** Parameter bd_addr: target device the data to be signed for. 1236 ** p_text: singing data 1237 ** len: length of the signing data 1238 ** signature: output parameter where data signature is going to 1239 ** be stored. 1240 ** 1241 ** Returns TRUE if signing sucessul, otherwise FALSE. 1242 ** 1243 *******************************************************************************/ 1244 extern BOOLEAN BTM_BleDataSignature (BD_ADDR bd_addr, UINT8 *p_text, UINT16 len, 1245 BLE_SIGNATURE signature); 1246 1247 /******************************************************************************* 1248 ** 1249 ** Function BTM_BleVerifySignature 1250 ** 1251 ** Description This function is called to verify the data signature 1252 ** 1253 ** Parameter bd_addr: target device the data to be signed for. 1254 ** p_orig: original data before signature. 1255 ** len: length of the signing data 1256 ** counter: counter used when doing data signing 1257 ** p_comp: signature to be compared against. 1258 1259 ** Returns TRUE if signature verified correctly; otherwise FALSE. 1260 ** 1261 *******************************************************************************/ 1262 extern BOOLEAN BTM_BleVerifySignature (BD_ADDR bd_addr, UINT8 *p_orig, 1263 UINT16 len, UINT32 counter, 1264 UINT8 *p_comp); 1265 1266 /******************************************************************************* 1267 ** 1268 ** Function BTM_ReadConnectionAddr 1269 ** 1270 ** Description This function is called to set the local device random address 1271 ** . 1272 ** 1273 ** Returns void 1274 ** 1275 *******************************************************************************/ 1276 extern void BTM_ReadConnectionAddr (BD_ADDR remote_bda, BD_ADDR local_conn_addr, 1277 tBLE_ADDR_TYPE *p_addr_type); 1278 1279 1280 1281 /******************************************************************************* 1282 ** 1283 ** Function BTM_ReadRemoteConnectionAddr 1284 ** 1285 ** Description This function is read the remote device address currently used 1286 ** . 1287 ** 1288 ** Returns void 1289 ** 1290 *******************************************************************************/ 1291 extern BOOLEAN BTM_ReadRemoteConnectionAddr(BD_ADDR pseudo_addr, 1292 BD_ADDR conn_addr, 1293 tBLE_ADDR_TYPE *p_addr_type); 1294 1295 /******************************************************************************* 1296 ** 1297 ** Function BTM_BleLoadLocalKeys 1298 ** 1299 ** Description Local local identity key, encryption root or sign counter. 1300 ** 1301 ** Parameters: key_type: type of key, can be BTM_BLE_KEY_TYPE_ID, BTM_BLE_KEY_TYPE_ER 1302 ** or BTM_BLE_KEY_TYPE_COUNTER. 1303 ** p_key: pointer to the key. 1304 * 1305 ** Returns non2. 1306 ** 1307 *******************************************************************************/ 1308 extern void BTM_BleLoadLocalKeys(UINT8 key_type, tBTM_BLE_LOCAL_KEYS *p_key); 1309 1310 1311 /******************************************************************************* 1312 ** 1313 ** Function BTM_BleSetBgConnType 1314 ** 1315 ** Description This function is called to set BLE background connection 1316 ** procedure type. It can be auto connection, or selective connection. 1317 ** 1318 ** Parameters conn_type: it can be auto connection, or selective connection. 1319 ** p_select_cback: callback function when selective connection procedure 1320 ** is being used. 1321 ** 1322 ** Returns void 1323 ** 1324 *******************************************************************************/ 1325 extern BOOLEAN BTM_BleSetBgConnType(tBTM_BLE_CONN_TYPE conn_type, 1326 tBTM_BLE_SEL_CBACK *p_select_cback); 1327 1328 /******************************************************************************* 1329 ** 1330 ** Function BTM_BleUpdateBgConnDev 1331 ** 1332 ** Description This function is called to add or remove a device into/from 1333 ** background connection procedure. The background connection 1334 * procedure is decided by the background connection type, it can be 1335 * auto connection, or selective connection. 1336 ** 1337 ** Parameters add_remove: TRUE to add; FALSE to remove. 1338 ** remote_bda: device address to add/remove. 1339 ** 1340 ** Returns void 1341 ** 1342 *******************************************************************************/ 1343 extern BOOLEAN BTM_BleUpdateBgConnDev(BOOLEAN add_remove, BD_ADDR remote_bda); 1344 1345 /******************************************************************************* 1346 ** 1347 ** Function BTM_BleClearBgConnDev 1348 ** 1349 ** Description This function is called to clear the whitelist, 1350 ** end any pending whitelist connections, 1351 * and reset the local bg device list. 1352 ** 1353 ** Parameters void 1354 ** 1355 ** Returns void 1356 ** 1357 *******************************************************************************/ 1358 extern void BTM_BleClearBgConnDev(void); 1359 1360 /******************************************************** 1361 ** 1362 ** Function BTM_BleSetPrefConnParams 1363 ** 1364 ** Description Set a peripheral's preferred connection parameters. When 1365 ** any of the value does not want to be updated while others 1366 ** do, use BTM_BLE_CONN_PARAM_UNDEF for the ones want to 1367 ** leave untouched. 1368 ** 1369 ** Parameters: bd_addr - BD address of the peripheral 1370 ** min_conn_int - minimum preferred connection interval 1371 ** max_conn_int - maximum preferred connection interval 1372 ** slave_latency - preferred slave latency 1373 ** supervision_tout - preferred supervision timeout 1374 ** 1375 ** Returns void 1376 ** 1377 *******************************************************************************/ 1378 extern void BTM_BleSetPrefConnParams (BD_ADDR bd_addr, 1379 UINT16 min_conn_int, UINT16 max_conn_int, 1380 UINT16 slave_latency, UINT16 supervision_tout); 1381 1382 /****************************************************************************** 1383 ** 1384 ** Function BTM_BleSetConnScanParams 1385 ** 1386 ** Description Set scan parameters used in BLE connection request 1387 ** 1388 ** Parameters: scan_interval - scan interval 1389 ** scan_window - scan window 1390 ** 1391 ** Returns void 1392 ** 1393 *******************************************************************************/ 1394 extern void BTM_BleSetConnScanParams (UINT32 scan_interval, UINT32 scan_window); 1395 1396 /****************************************************************************** 1397 ** 1398 ** Function BTM_BleReadControllerFeatures 1399 ** 1400 ** Description Reads BLE specific controller features 1401 ** 1402 ** Parameters: tBTM_BLE_CTRL_FEATURES_CBACK : Callback to notify when features are read 1403 ** 1404 ** Returns void 1405 ** 1406 *******************************************************************************/ 1407 extern void BTM_BleReadControllerFeatures(tBTM_BLE_CTRL_FEATURES_CBACK *p_vsc_cback); 1408 1409 /******************************************************************************* 1410 ** 1411 ** Function BTM_CheckAdvData 1412 ** 1413 ** Description This function is called to get ADV data for a specific type. 1414 ** 1415 ** Parameters p_adv - pointer of ADV data 1416 ** type - finding ADV data type 1417 ** p_length - return the length of ADV data not including type 1418 ** 1419 ** Returns pointer of ADV data 1420 ** 1421 *******************************************************************************/ 1422 extern UINT8 *BTM_CheckAdvData( UINT8 *p_adv, UINT8 type, UINT8 *p_length); 1423 1424 /******************************************************************************* 1425 ** 1426 ** Function BTM__BLEReadDiscoverability 1427 ** 1428 ** Description This function is called to read the current LE discoverability 1429 ** mode of the device. 1430 ** 1431 ** Returns BTM_BLE_NON_DISCOVERABLE ,BTM_BLE_LIMITED_DISCOVERABLE or 1432 ** BTM_BLE_GENRAL_DISCOVERABLE 1433 ** 1434 *******************************************************************************/ 1435 UINT16 BTM_BleReadDiscoverability(); 1436 1437 /******************************************************************************* 1438 ** 1439 ** Function BTM__BLEReadConnectability 1440 ** 1441 ** Description This function is called to read the current LE connectibility 1442 ** mode of the device. 1443 ** 1444 ** Returns BTM_BLE_NON_CONNECTABLE or BTM_BLE_CONNECTABLE 1445 ** 1446 *******************************************************************************/ 1447 extern UINT16 BTM_BleReadConnectability (); 1448 1449 /******************************************************************************* 1450 ** 1451 ** Function BTM_ReadDevInfo 1452 ** 1453 ** Description This function is called to read the device/address type 1454 ** of BD address. 1455 ** 1456 ** Parameter remote_bda: remote device address 1457 ** p_dev_type: output parameter to read the device type. 1458 ** p_addr_type: output parameter to read the address type. 1459 ** 1460 *******************************************************************************/ 1461 extern void BTM_ReadDevInfo (BD_ADDR remote_bda, tBT_DEVICE_TYPE *p_dev_type, 1462 tBLE_ADDR_TYPE *p_addr_type); 1463 1464 1465 /******************************************************************************* 1466 ** 1467 ** Function BTM_ReadConnectedTransportAddress 1468 ** 1469 ** Description This function is called to read the paired device/address type of other device paired 1470 ** corresponding to the BD_address 1471 ** 1472 ** Parameter remote_bda: remote device address, carry out the transport address 1473 ** transport: active transport 1474 ** 1475 ** Return TRUE if an active link is identified; FALSE otherwise 1476 ** 1477 *******************************************************************************/ 1478 extern BOOLEAN BTM_ReadConnectedTransportAddress(BD_ADDR remote_bda, 1479 tBT_TRANSPORT transport); 1480 1481 /******************************************************************************* 1482 ** 1483 ** Function BTM_BleBroadcast 1484 ** 1485 ** Description This function is to start or stop broadcasting. 1486 ** 1487 ** Parameters start: start or stop broadcasting. 1488 ** 1489 ** Returns status. 1490 ** 1491 *******************************************************************************/ 1492 extern tBTM_STATUS BTM_BleBroadcast(BOOLEAN start); 1493 1494 /******************************************************************************* 1495 ** 1496 ** Function BTM_BleConfigPrivacy 1497 ** 1498 ** Description This function is called to enable or disable the privacy in 1499 ** the local device. 1500 ** 1501 ** Parameters enable: TRUE to enable it; FALSE to disable it. 1502 ** 1503 ** Returns BOOLEAN privacy mode set success; otherwise failed. 1504 ** 1505 *******************************************************************************/ 1506 extern BOOLEAN BTM_BleConfigPrivacy(BOOLEAN enable); 1507 1508 /******************************************************************************* 1509 ** 1510 ** Function BTM_BleLocalPrivacyEnabled 1511 ** 1512 ** Description Checks if local device supports private address 1513 ** 1514 ** Returns Return TRUE if local privacy is enabled else FALSE 1515 ** 1516 *******************************************************************************/ 1517 extern BOOLEAN BTM_BleLocalPrivacyEnabled(void); 1518 1519 /******************************************************************************* 1520 ** 1521 ** Function BTM_BleEnableMixedPrivacyMode 1522 ** 1523 ** Description This function is called to enabled Mixed mode if privacy 1.2 1524 ** is applicable in controller. 1525 ** 1526 ** Parameters mixed_on: mixed mode to be used or not. 1527 ** 1528 ** Returns void 1529 ** 1530 *******************************************************************************/ 1531 extern void BTM_BleEnableMixedPrivacyMode(BOOLEAN mixed_on); 1532 1533 /******************************************************************************* 1534 ** 1535 ** Function BTM_BleMaxMultiAdvInstanceCount 1536 ** 1537 ** Description Returns max number of multi adv instances supported by controller 1538 ** 1539 ** Returns Max multi adv instance count 1540 ** 1541 *******************************************************************************/ 1542 extern UINT8 BTM_BleMaxMultiAdvInstanceCount(); 1543 1544 /******************************************************************************* 1545 ** 1546 ** Function BTM_BleSetConnectableMode 1547 ** 1548 ** Description This function is called to set BLE connectable mode for a 1549 ** peripheral device. 1550 ** 1551 ** Parameters connectable_mode: directed connectable mode, or non-directed.It can 1552 ** be BTM_BLE_CONNECT_EVT, BTM_BLE_CONNECT_DIR_EVT or 1553 ** BTM_BLE_CONNECT_LO_DUTY_DIR_EVT 1554 ** 1555 ** Returns BTM_ILLEGAL_VALUE if controller does not support BLE. 1556 ** BTM_SUCCESS is status set successfully; otherwise failure. 1557 ** 1558 *******************************************************************************/ 1559 extern tBTM_STATUS BTM_BleSetConnectableMode(tBTM_BLE_CONN_MODE connectable_mode); 1560 1561 /******************************************************************************* 1562 ** 1563 ** Function BTM_BleTurnOnPrivacyOnRemote 1564 ** 1565 ** Description This function is called to enable or disable the privacy on the 1566 ** remote device. 1567 ** 1568 ** Parameters bd_addr: remote device address. 1569 ** privacy_on: TRUE to enable it; FALSE to disable it. 1570 ** 1571 ** Returns void 1572 ** 1573 *******************************************************************************/ 1574 extern void BTM_BleTurnOnPrivacyOnRemote(BD_ADDR bd_addr, 1575 BOOLEAN privacy_on); 1576 1577 /******************************************************************************* 1578 ** 1579 ** Function BTM_BleUpdateAdvWhitelist 1580 ** 1581 ** Description Add or remove device from advertising white list 1582 ** 1583 ** Returns void 1584 ** 1585 *******************************************************************************/ 1586 extern BOOLEAN BTM_BleUpdateAdvWhitelist(BOOLEAN add_remove, BD_ADDR emote_bda); 1587 1588 /******************************************************************************* 1589 ** 1590 ** Function BTM_BleUpdateAdvFilterPolicy 1591 ** 1592 ** Description This function update the filter policy of advertiser. 1593 ** 1594 ** Parameter adv_policy: advertising filter policy 1595 ** 1596 ** Return void 1597 *******************************************************************************/ 1598 extern void BTM_BleUpdateAdvFilterPolicy(tBTM_BLE_AFP adv_policy); 1599 1600 /******************************************************************************* 1601 ** 1602 ** Function BTM_BleReceiverTest 1603 ** 1604 ** Description This function is called to start the LE Receiver test 1605 ** 1606 ** Parameter rx_freq - Frequency Range 1607 ** p_cmd_cmpl_cback - Command Complete callback 1608 ** 1609 *******************************************************************************/ 1610 void BTM_BleReceiverTest(UINT8 rx_freq, tBTM_CMPL_CB *p_cmd_cmpl_cback); 1611 1612 1613 /******************************************************************************* 1614 ** 1615 ** Function BTM_BleTransmitterTest 1616 ** 1617 ** Description This function is called to start the LE Transmitter test 1618 ** 1619 ** Parameter tx_freq - Frequency Range 1620 ** test_data_len - Length in bytes of payload data in each packet 1621 ** packet_payload - Pattern to use in the payload 1622 ** p_cmd_cmpl_cback - Command Complete callback 1623 ** 1624 *******************************************************************************/ 1625 void BTM_BleTransmitterTest(UINT8 tx_freq, UINT8 test_data_len, 1626 UINT8 packet_payload, tBTM_CMPL_CB *p_cmd_cmpl_cback); 1627 1628 /******************************************************************************* 1629 ** 1630 ** Function BTM_BleTestEnd 1631 ** 1632 ** Description This function is called to stop the in-progress TX or RX test 1633 ** 1634 ** Parameter p_cmd_cmpl_cback - Command complete callback 1635 ** 1636 *******************************************************************************/ 1637 void BTM_BleTestEnd(tBTM_CMPL_CB *p_cmd_cmpl_cback); 1638 1639 /******************************************************************************* 1640 ** 1641 ** Function BTM_UseLeLink 1642 ** 1643 ** Description This function is to select the underneath physical link to use. 1644 ** 1645 ** Returns TRUE to use LE, FALSE use BR/EDR. 1646 ** 1647 *******************************************************************************/ 1648 extern BOOLEAN BTM_UseLeLink (BD_ADDR bd_addr); 1649 1650 /******************************************************************************* 1651 ** 1652 ** Function BTM_BleStackEnable 1653 ** 1654 ** Description Enable/Disable BLE functionality on stack regarless controller 1655 ** capability. 1656 ** 1657 ** Parameters: enable: TRUE to enable, FALSE to disable. 1658 ** 1659 ** Returns TRUE if added OK, else FALSE 1660 ** 1661 *******************************************************************************/ 1662 extern tBTM_STATUS BTM_BleStackEnable (BOOLEAN enable); 1663 1664 /******************************************************************************* 1665 ** 1666 ** Function BTM_GetLeSecurityState 1667 ** 1668 ** Description This function is called to get security mode 1 flags and 1669 ** encryption key size for LE peer. 1670 ** 1671 ** Returns BOOLEAN TRUE if LE device is found, FALSE otherwise. 1672 ** 1673 *******************************************************************************/ 1674 extern BOOLEAN BTM_GetLeSecurityState (BD_ADDR bd_addr, 1675 UINT8 *p_le_dev_sec_flags, 1676 UINT8 *p_le_key_size); 1677 1678 /******************************************************************************* 1679 ** 1680 ** Function BTM_BleSecurityProcedureIsRunning 1681 ** 1682 ** Description This function indicates if LE security procedure is 1683 ** currently running with the peer. 1684 ** 1685 ** Returns BOOLEAN TRUE if security procedure is running, FALSE otherwise. 1686 ** 1687 *******************************************************************************/ 1688 extern BOOLEAN BTM_BleSecurityProcedureIsRunning (BD_ADDR bd_addr); 1689 1690 /******************************************************************************* 1691 ** 1692 ** Function BTM_BleGetSupportedKeySize 1693 ** 1694 ** Description This function gets the maximum encryption key size in bytes 1695 ** the local device can suport. 1696 ** record. 1697 ** 1698 ** Returns the key size or 0 if the size can't be retrieved. 1699 ** 1700 *******************************************************************************/ 1701 extern UINT8 BTM_BleGetSupportedKeySize (BD_ADDR bd_addr); 1702 1703 /*******************************************************************************/ 1704 /* Multi ADV API */ 1705 /******************************************************************************* 1706 ** 1707 ** Function BTM_BleEnableAdvInstance 1708 ** 1709 ** Description This function enable a Multi-ADV instance with the specified 1710 ** adv parameters 1711 ** 1712 ** Parameters p_params: pointer to the adv parameter structure, set as default 1713 ** adv parameter when the instance is enabled. 1714 ** p_cback: callback function for the adv instance. 1715 ** p_ref: reference data attach to the adv instance to be enabled. 1716 ** 1717 ** Returns status 1718 ** 1719 *******************************************************************************/ 1720 extern tBTM_STATUS BTM_BleEnableAdvInstance (tBTM_BLE_ADV_PARAMS *p_params, 1721 tBTM_BLE_MULTI_ADV_CBACK *p_cback, 1722 void *p_ref); 1723 1724 /******************************************************************************* 1725 ** 1726 ** Function BTM_BleUpdateAdvInstParam 1727 ** 1728 ** Description This function update a Multi-ADV instance with the specififed 1729 ** adv parameters. 1730 ** 1731 ** Parameters inst_id: adv instance ID 1732 ** p_params: pointer to the adv parameter structure. 1733 ** 1734 ** Returns status 1735 ** 1736 *******************************************************************************/ 1737 extern tBTM_STATUS BTM_BleUpdateAdvInstParam (UINT8 inst_id, tBTM_BLE_ADV_PARAMS *p_params); 1738 1739 /******************************************************************************* 1740 ** 1741 ** Function BTM_BleCfgAdvInstData 1742 ** 1743 ** Description This function configure a Multi-ADV instance with the specified 1744 ** adv data or scan response data. 1745 ** 1746 ** Parameters inst_id: adv instance ID 1747 ** is_scan_rsp: is this scacn response, if no set as adv data. 1748 ** data_mask: adv data mask. 1749 ** p_data: pointer to the adv data structure. 1750 ** 1751 ** Returns status 1752 ** 1753 *******************************************************************************/ 1754 extern tBTM_STATUS BTM_BleCfgAdvInstData (UINT8 inst_id, BOOLEAN is_scan_rsp, 1755 tBTM_BLE_AD_MASK data_mask, 1756 tBTM_BLE_ADV_DATA *p_data); 1757 1758 /******************************************************************************* 1759 ** 1760 ** Function BTM_BleDisableAdvInstance 1761 ** 1762 ** Description This function disable a Multi-ADV instance. 1763 ** 1764 ** Parameters inst_id: adv instance ID 1765 ** 1766 ** Returns status 1767 ** 1768 *******************************************************************************/ 1769 extern tBTM_STATUS BTM_BleDisableAdvInstance (UINT8 inst_id); 1770 1771 /******************************************************************************* 1772 ** 1773 ** Function BTM_BleAdvFilterParamSetup 1774 ** 1775 ** Description This function is called to setup the adv data payload filter 1776 ** condition. 1777 ** 1778 ** Parameters p_target: enabble the filter condition on a target device; if NULL 1779 ** enable the generic scan condition. 1780 ** enable: enable or disable the filter condition 1781 ** 1782 ** Returns void 1783 ** 1784 *******************************************************************************/ 1785 extern tBTM_STATUS BTM_BleAdvFilterParamSetup(int action, 1786 tBTM_BLE_PF_FILT_INDEX filt_index, 1787 tBTM_BLE_PF_FILT_PARAMS *p_filt_params, 1788 tBLE_BD_ADDR *p_target, tBTM_BLE_PF_PARAM_CBACK *p_cmpl_cback, 1789 tBTM_BLE_REF_VALUE ref_value); 1790 1791 /******************************************************************************* 1792 ** 1793 ** Function BTM_BleCfgFilterCondition 1794 ** 1795 ** Description This function is called to configure the adv data payload filter 1796 ** condition. 1797 ** 1798 ** Parameters action: to read/write/clear 1799 ** cond_type: filter condition type. 1800 ** p_cond: filter condition paramter 1801 ** 1802 ** Returns tBTM_STATUS 1803 ** 1804 *******************************************************************************/ 1805 extern tBTM_STATUS BTM_BleCfgFilterCondition(tBTM_BLE_SCAN_COND_OP action, 1806 tBTM_BLE_PF_COND_TYPE cond_type, 1807 tBTM_BLE_PF_FILT_INDEX filt_index, 1808 tBTM_BLE_PF_COND_PARAM *p_cond, 1809 tBTM_BLE_PF_CFG_CBACK *p_cmpl_cback, 1810 tBTM_BLE_REF_VALUE ref_value); 1811 1812 /******************************************************************************* 1813 ** 1814 ** Function BTM_BleEnableDisableFilterFeature 1815 ** 1816 ** Description This function is called to enable or disable the APCF feature 1817 ** 1818 ** Parameters enable - TRUE - enables the APCF, FALSE - disables the APCF 1819 ** ref_value - Ref value 1820 ** 1821 ** Returns tBTM_STATUS 1822 ** 1823 *******************************************************************************/ 1824 extern tBTM_STATUS BTM_BleEnableDisableFilterFeature(UINT8 enable, 1825 tBTM_BLE_PF_STATUS_CBACK *p_stat_cback, 1826 tBTM_BLE_REF_VALUE ref_value); 1827 1828 /******************************************************************************* 1829 ** 1830 ** Function BTM_BleGetEnergyInfo 1831 ** 1832 ** Description This function obtains the energy info 1833 ** 1834 ** Parameters p_ener_cback - Callback pointer 1835 ** 1836 ** Returns status 1837 ** 1838 *******************************************************************************/ 1839 extern tBTM_STATUS BTM_BleGetEnergyInfo(tBTM_BLE_ENERGY_INFO_CBACK *p_ener_cback); 1840 1841 /******************************************************************************* 1842 ** 1843 ** Function BTM_SetBleDataLength 1844 ** 1845 ** Description This function is called to set maximum BLE transmission packet size 1846 ** 1847 ** Returns BTM_SUCCESS if success; otherwise failed. 1848 ** 1849 *******************************************************************************/ 1850 extern tBTM_STATUS BTM_SetBleDataLength(BD_ADDR bd_addr, UINT16 tx_pdu_length); 1851 1852 #ifdef __cplusplus 1853 } 1854 #endif 1855 1856 #endif 1857