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