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