btm_ble_api.h revision 6e2d9db5148176d88d7f48c3b2ad5b27c57ca14d
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 */ 327#define BTM_BLE_ADV_TX_POWER {-21, -15, -7, 1, 9} 328 329typedef struct 330{ 331 UINT8 adv_inst_max; /* max adv instance supported in controller */ 332 UINT8 rpa_offloading; 333 UINT16 tot_scan_results_strg; 334 UINT8 max_irk_list_sz; 335 UINT8 filter_support; 336 UINT8 max_filter; 337 UINT8 energy_support; 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 4 417#endif 418 419#define BTM_BLE_MULTI_ADV_INVALID 0 420 421#define BTM_BLE_MULTI_ADV_ENB_EVT 1 422#define BTM_BLE_MULTI_ADV_DISABLE_EVT 2 423#define BTM_BLE_MULTI_ADV_PARAM_EVT 3 424#define BTM_BLE_MULTI_ADV_DATA_EVT 4 425typedef UINT8 tBTM_BLE_MULTI_ADV_EVT; 426 427#define BTM_BLE_MULTI_ADV_DEFAULT_STD 0 428 429typedef struct 430{ 431 UINT16 adv_int_min; 432 UINT16 adv_int_max; 433 UINT8 adv_type; 434 tBTM_BLE_ADV_CHNL_MAP channel_map; 435 tBTM_BLE_AFP adv_filter_policy; 436 tBTM_BLE_ADV_TX_POWER tx_power; 437}tBTM_BLE_ADV_PARAMS; 438 439typedef struct 440{ 441 UINT8 sub_code[BTM_BLE_MULTI_ADV_MAX]; 442 UINT8 inst_id[BTM_BLE_MULTI_ADV_MAX]; 443 UINT8 pending_idx; 444 UINT8 next_idx; 445}tBTM_BLE_MULTI_ADV_OPQ; 446 447typedef void (tBTM_BLE_MULTI_ADV_CBACK)(tBTM_BLE_MULTI_ADV_EVT evt, UINT8 inst_id, 448 void *p_ref, tBTM_STATUS status); 449 450typedef struct 451{ 452 UINT8 inst_id; 453 UINT8 adv_evt; 454 BD_ADDR rpa; 455 TIMER_LIST_ENT raddr_timer_ent; 456 void *p_rpa_cback; 457 tBTM_BLE_MULTI_ADV_CBACK *p_cback; 458 void *p_ref; 459}tBTM_BLE_MULTI_ADV_INST; 460 461typedef struct 462{ 463 tBTM_BLE_MULTI_ADV_INST adv_inst[BTM_BLE_MULTI_ADV_MAX]; 464 tBTM_BLE_MULTI_ADV_OPQ op_q; 465}tBTM_BLE_MULTI_ADV_CB; 466 467typedef void (tBTM_BLE_SCAN_THRESHOLD_CBACK)(tBTM_BLE_REF_VALUE ref_value); 468typedef void (tBTM_BLE_SCAN_REP_CBACK)(tBTM_BLE_REF_VALUE ref_value, UINT8 report_format, 469 UINT8 num_records, UINT16 total_len, 470 UINT8* p_rep_data, UINT8 status); 471typedef void (tBTM_BLE_SCAN_SETUP_CBACK)(UINT8 evt, tBTM_BLE_REF_VALUE ref_value, UINT8 status); 472 473#ifndef BTM_BLE_BATCH_SCAN_MAX 474#define BTM_BLE_BATCH_SCAN_MAX 5 475#endif 476 477typedef enum 478{ 479 BTM_BLE_SCAN_INVALID_STATE=0, 480 BTM_BLE_SCAN_ENABLE_CALLED=1, 481 BTM_BLE_SCAN_ENABLED_STATE=2, 482 BTM_BLE_SCAN_DISABLE_CALLED=3, 483 BTM_BLE_SCAN_DISABLED_STATE=4 484}tBTM_BLE_BATCH_SCAN_STATE; 485 486typedef struct 487{ 488 UINT8 sub_code[BTM_BLE_BATCH_SCAN_MAX]; 489 tBTM_BLE_BATCH_SCAN_STATE cur_state[BTM_BLE_BATCH_SCAN_MAX]; 490 tBTM_BLE_REF_VALUE ref_value[BTM_BLE_BATCH_SCAN_MAX]; 491 UINT8 pending_idx; 492 UINT8 next_idx; 493}tBTM_BLE_BATCH_SCAN_OPQ; 494 495typedef struct 496{ 497 tBTM_BLE_BATCH_SCAN_STATE cur_state; 498 tBTM_BLE_BATCH_SCAN_MODE scan_mode; 499 tBTM_BLE_BATCH_SCAN_OPQ op_q; 500 tBTM_BLE_SCAN_SETUP_CBACK *p_setup_cback; 501 tBTM_BLE_SCAN_THRESHOLD_CBACK *p_thres_cback; 502 tBTM_BLE_SCAN_REP_CBACK *p_scan_rep_cback; 503 tBTM_BLE_REF_VALUE ref_value; 504}tBTM_BLE_BATCH_SCAN_CB; 505 506/* filter selection bit index */ 507#define BTM_BLE_PF_ADDR_FILTER 0 508#define BTM_BLE_PF_SRVC_DATA 1 509#define BTM_BLE_PF_SRVC_UUID 2 510#define BTM_BLE_PF_SRVC_SOL_UUID 3 511#define BTM_BLE_PF_LOCAL_NAME 4 512#define BTM_BLE_PF_MANU_DATA 5 513#define BTM_BLE_PF_SRVC_DATA_PATTERN 6 514#define BTM_BLE_PF_TYPE_ALL 7 /* when passed in payload filter type all, only clear action is applicable */ 515#define BTM_BLE_PF_TYPE_MAX 8 516 517/* max number of filter spot for different filter type */ 518#ifndef BTM_BLE_MAX_UUID_FILTER 519#define BTM_BLE_MAX_UUID_FILTER 8 520#endif 521#ifndef BTM_BLE_MAX_ADDR_FILTER 522#define BTM_BLE_MAX_ADDR_FILTER 8 523#endif 524#ifndef BTM_BLE_PF_STR_COND_MAX 525#define BTM_BLE_PF_STR_COND_MAX 4 /* apply to manu data , or local name */ 526#endif 527#ifndef BTM_BLE_PF_STR_LEN_MAX 528#define BTM_BLE_PF_STR_LEN_MAX 29 /* match for first 29 bytes */ 529#endif 530 531typedef UINT8 tBTM_BLE_PF_COND_TYPE; 532 533#define BTM_BLE_PF_LOGIC_OR 0 534#define BTM_BLE_PF_LOGIC_AND 1 535typedef UINT8 tBTM_BLE_PF_LOGIC_TYPE; 536 537#define BTM_BLE_PF_ENABLE 1 538#define BTM_BLE_PF_CONFIG 2 539typedef UINT8 tBTM_BLE_PF_ACTION; 540 541typedef UINT8 tBTM_BLE_PF_FILT_INDEX; 542 543typedef UINT8 tBTM_BLE_PF_AVBL_SPACE; 544 545#define BTM_BLE_PF_BRDCAST_ADDR_FILT 1 546#define BTM_BLE_PF_SERV_DATA_CHG_FILT 2 547#define BTM_BLE_PF_SERV_UUID 4 548#define BTM_BLE_PF_SERV_SOLC_UUID 8 549#define BTM_BLE_PF_LOC_NAME_CHECK 16 550#define BTM_BLE_PF_MANUF_NAME_CHECK 32 551#define BTM_BLE_PF_SERV_DATA_CHECK 64 552typedef UINT16 tBTM_BLE_PF_FEAT_SEL; 553 554#define BTM_BLE_PF_LIST_LOGIC_OR 1 555#define BTM_BLE_PF_LIST_LOGIC_AND 2 556typedef UINT16 tBTM_BLE_PF_LIST_LOGIC_TYPE; 557 558#define BTM_BLE_PF_FILT_LOGIC_OR 0 559#define BTM_BLE_PF_FILT_LOGIC_AND 1 560typedef UINT16 tBTM_BLE_PF_FILT_LOGIC_TYPE; 561 562typedef UINT8 tBTM_BLE_PF_RSSI_THRESHOLD; 563typedef UINT8 tBTM_BLE_PF_DELIVERY_MODE; 564typedef UINT16 tBTM_BLE_PF_TIMEOUT; 565typedef UINT8 tBTM_BLE_PF_TIMEOUT_CNT; 566 567typedef struct 568{ 569 tBTM_BLE_PF_FEAT_SEL feat_seln; 570 tBTM_BLE_PF_LIST_LOGIC_TYPE logic_type; 571 tBTM_BLE_PF_FILT_LOGIC_TYPE filt_logic_type; 572 tBTM_BLE_PF_RSSI_THRESHOLD rssi_high_thres; 573 tBTM_BLE_PF_RSSI_THRESHOLD rssi_low_thres; 574 tBTM_BLE_PF_DELIVERY_MODE dely_mode; 575 tBTM_BLE_PF_TIMEOUT found_timeout; 576 tBTM_BLE_PF_TIMEOUT lost_timeout; 577 tBTM_BLE_PF_TIMEOUT_CNT found_timeout_cnt; 578}tBTM_BLE_PF_FILT_PARAMS; 579 580enum 581{ 582 BTM_BLE_SCAN_COND_ADD, 583 BTM_BLE_SCAN_COND_DELETE, 584 BTM_BLE_SCAN_COND_CLEAR = 2 585}; 586typedef UINT8 tBTM_BLE_SCAN_COND_OP; 587 588enum 589{ 590 BTM_BLE_FILT_ENABLE_DISABLE = 1, 591 BTM_BLE_FILT_CFG = 2, 592 BTM_BLE_FILT_ADV_PARAM = 3 593}; 594 595typedef UINT8 tBTM_BLE_FILT_CB_EVT; 596 597/* BLE adv payload filtering config complete callback */ 598typedef void (tBTM_BLE_PF_CFG_CBACK)(tBTM_BLE_PF_ACTION action, tBTM_BLE_SCAN_COND_OP cfg_op, 599 tBTM_BLE_PF_AVBL_SPACE avbl_space, tBTM_STATUS status, 600 tBTM_BLE_REF_VALUE ref_value); 601 602typedef void (tBTM_BLE_PF_CMPL_CBACK) (tBTM_BLE_PF_CFG_CBACK); 603 604/* BLE adv payload filtering status setup complete callback */ 605typedef void (tBTM_BLE_PF_STATUS_CBACK) (UINT8 action, tBTM_STATUS status, 606 tBTM_BLE_REF_VALUE ref_value); 607 608/* BLE adv payload filtering param setup complete callback */ 609typedef void (tBTM_BLE_PF_PARAM_CBACK) (tBTM_BLE_PF_ACTION action_type, 610 tBTM_BLE_PF_AVBL_SPACE avbl_space, 611 tBTM_BLE_REF_VALUE ref_value, tBTM_STATUS status); 612 613typedef union 614{ 615 UINT16 uuid16_mask; 616 UINT32 uuid32_mask; 617 UINT8 uuid128_mask[LEN_UUID_128]; 618}tBTM_BLE_PF_COND_MASK; 619 620typedef struct 621{ 622 tBLE_BD_ADDR *p_target_addr; /* target address, if NULL, generic UUID filter */ 623 tBT_UUID uuid; /* UUID condition */ 624 tBTM_BLE_PF_LOGIC_TYPE cond_logic; /* AND/OR */ 625 tBTM_BLE_PF_COND_MASK *p_uuid_mask; /* UUID mask */ 626}tBTM_BLE_PF_UUID_COND; 627 628typedef struct 629{ 630 UINT8 data_len; /* <= 20 bytes */ 631 UINT8 *p_data; 632}tBTM_BLE_PF_LOCAL_NAME_COND; 633 634typedef struct 635{ 636 UINT16 company_id; /* company ID */ 637 UINT8 data_len; /* <= 20 bytes */ 638 UINT8 *p_pattern; 639 UINT16 company_id_mask; /* UUID value mask */ 640 UINT8 *p_pattern_mask; /* Manufactuer data matching mask, same length as data pattern, 641 set to all 0xff, match exact data */ 642}tBTM_BLE_PF_MANU_COND; 643 644typedef struct 645{ 646 UINT16 uuid; /* service ID */ 647 UINT8 data_len; /* <= 20 bytes */ 648 UINT8 *p_pattern; 649 UINT8 *p_pattern_mask; /* Service data matching mask, same length as data pattern, 650 set to all 0xff, match exact data */ 651}tBTM_BLE_PF_SRVC_PATTERN_COND; 652 653 654typedef union 655{ 656 tBLE_BD_ADDR target_addr; 657 tBTM_BLE_PF_LOCAL_NAME_COND local_name; /* lcoal name filtering */ 658 tBTM_BLE_PF_MANU_COND manu_data; /* manufactuer data filtering */ 659 tBTM_BLE_PF_UUID_COND srvc_uuid; /* service UUID filtering */ 660 tBTM_BLE_PF_UUID_COND solicitate_uuid; /* solicitated service UUID filtering */ 661 tBTM_BLE_PF_SRVC_PATTERN_COND srvc_data; /* service data pattern */ 662}tBTM_BLE_PF_COND_PARAM; 663 664typedef struct 665{ 666 UINT8 action_ocf[BTM_BLE_PF_TYPE_MAX]; 667 tBTM_BLE_REF_VALUE ref_value[BTM_BLE_PF_TYPE_MAX]; 668 tBTM_BLE_PF_PARAM_CBACK *p_filt_param_cback[BTM_BLE_PF_TYPE_MAX]; 669 tBTM_BLE_PF_CFG_CBACK *p_scan_cfg_cback[BTM_BLE_PF_TYPE_MAX]; 670 UINT8 cb_evt[BTM_BLE_PF_TYPE_MAX]; 671 UINT8 pending_idx; 672 UINT8 next_idx; 673}tBTM_BLE_ADV_FILTER_ADV_OPQ; 674 675#define BTM_BLE_MAX_FILTER_COUNTER (BTM_BLE_MAX_ADDR_FILTER + 1) /* per device filter + one generic filter indexed by 0 */ 676 677typedef struct 678{ 679 BOOLEAN in_use; 680 BD_ADDR bd_addr; 681 UINT16 feat_mask; /* per BD_ADDR feature mask */ 682 UINT8 pf_counter[BTM_BLE_PF_TYPE_MAX]; /* number of filter indexed by tBTM_BLE_PF_COND_TYPE */ 683}tBTM_BLE_PF_COUNT; 684 685typedef struct 686{ 687 BOOLEAN enable; 688 UINT8 op_type; 689 tBTM_BLE_PF_COUNT addr_filter_count[BTM_BLE_MAX_FILTER_COUNTER]; /* per BDA filter indexed by tBTM_BLE_PF_COND_TYPE */ 690 tBLE_BD_ADDR cur_filter_target; 691 tBTM_BLE_PF_STATUS_CBACK *p_filt_stat_cback; 692 tBTM_BLE_ADV_FILTER_ADV_OPQ op_q; 693}tBTM_BLE_ADV_FILTER_CB; 694 695/* Sub codes */ 696#define BTM_BLE_META_PF_ENABLE 0x00 697#define BTM_BLE_META_PF_FEAT_SEL 0x01 698#define BTM_BLE_META_PF_ADDR 0x02 699#define BTM_BLE_META_PF_UUID 0x03 700#define BTM_BLE_META_PF_SOL_UUID 0x04 701#define BTM_BLE_META_PF_LOCAL_NAME 0x05 702#define BTM_BLE_META_PF_MANU_DATA 0x06 703#define BTM_BLE_META_PF_SRVC_DATA 0x07 704#define BTM_BLE_META_PF_ALL 0x08 705 706/* These are the fields returned in each device adv packet. It 707** is returned in the results callback if registered. 708*/ 709typedef struct 710{ 711 UINT8 conn_mode; 712 tBTM_BLE_AD_MASK ad_mask; /* mask of the valid adv data field */ 713 UINT8 flag; 714 UINT8 tx_power_level; 715 UINT8 remote_name_len; 716 UINT8 *p_remote_name; 717 tBTM_BLE_SERVICE service; 718} tBTM_BLE_INQ_DATA; 719 720enum 721{ 722 BTM_BLE_CONN_NONE, 723 BTM_BLE_CONN_AUTO, 724 BTM_BLE_CONN_SELECTIVE 725}; 726typedef UINT8 tBTM_BLE_CONN_TYPE; 727 728enum 729{ 730 BTM_BLE_DISCARD_OLD_ITEMS, 731 BTM_BLE_DISCARD_LOWER_RSSI_ITEMS 732}; 733typedef UINT8 tBTM_BLE_DISCARD_RULE; 734 735typedef void (tBTM_BLE_TRACK_ADV_CBACK)(int filt_index, tBLE_ADDR_TYPE addr_type, BD_ADDR bda, 736 int adv_state, tBTM_BLE_REF_VALUE ref_value); 737 738typedef UINT8 tBTM_BLE_TRACK_ADV_EVT; 739 740typedef struct 741{ 742 tBTM_BLE_REF_VALUE ref_value; 743 tBTM_BLE_TRACK_ADV_CBACK *p_track_cback; 744}tBTM_BLE_ADV_TRACK_CB; 745 746enum 747{ 748 BTM_BLE_TRACK_ADV_ADD, 749 BTM_BLE_TRACK_ADV_REMOVE 750}; 751 752typedef UINT8 tBTM_BLE_TRACK_ADV_ACTION; 753 754#define BTM_BLE_MULTI_ADV_INVALID 0 755 756#define BTM_BLE_BATCH_SCAN_ENABLE_EVT 1 757#define BTM_BLE_BATCH_SCAN_CFG_STRG_EVT 2 758#define BTM_BLE_BATCH_SCAN_READ_REPTS_EVT 3 759#define BTM_BLE_BATCH_SCAN_THR_EVT 4 760#define BTM_BLE_BATCH_SCAN_PARAM_EVT 5 761#define BTM_BLE_BATCH_SCAN_DISABLE_EVT 6 762 763typedef UINT8 tBTM_BLE_BATCH_SCAN_EVT; 764 765typedef UINT32 tBTM_BLE_TX_TIME_MS; 766typedef UINT32 tBTM_BLE_RX_TIME_MS; 767typedef UINT32 tBTM_BLE_IDLE_TIME_MS; 768typedef UINT32 tBTM_BLE_ENERGY_USED; 769 770typedef void (tBTM_BLE_ENERGY_INFO_CBACK)(tBTM_BLE_TX_TIME_MS tx_time, tBTM_BLE_RX_TIME_MS rx_time, 771 tBTM_BLE_IDLE_TIME_MS idle_time, 772 tBTM_BLE_ENERGY_USED energy_used, 773 tBTM_STATUS status); 774 775typedef struct 776{ 777 tBTM_BLE_ENERGY_INFO_CBACK *p_ener_cback; 778}tBTM_BLE_ENERGY_INFO_CB; 779 780typedef BOOLEAN (tBTM_BLE_SEL_CBACK)(BD_ADDR random_bda, UINT8 *p_remote_name); 781typedef void (tBTM_BLE_CTRL_FEATURES_CBACK)(tBTM_STATUS status); 782 783/* callback function for SMP signing algorithm, signed data in little endian order with tlen bits long */ 784typedef void (tBTM_BLE_SIGN_CBACK)(void *p_ref_data, UINT8 *p_signing_data); 785typedef void (tBTM_BLE_VERIFY_CBACK)(void *p_ref_data, BOOLEAN match); 786/* random address set complete callback */ 787typedef void (tBTM_BLE_RANDOM_SET_CBACK) (BD_ADDR random_bda); 788 789typedef void (tBTM_BLE_SCAN_REQ_CBACK)(BD_ADDR remote_bda, tBLE_ADDR_TYPE addr_type, UINT8 adv_evt); 790 791tBTM_BLE_SCAN_SETUP_CBACK bta_ble_scan_setup_cb; 792 793/***************************************************************************** 794** EXTERNAL FUNCTION DECLARATIONS 795*****************************************************************************/ 796#ifdef __cplusplus 797extern "C" { 798#endif 799/******************************************************************************* 800** 801** Function BTM_SecAddBleDevice 802** 803** Description Add/modify device. This function will be normally called 804** during host startup to restore all required information 805** for a LE device stored in the NVRAM. 806** 807** Parameters: bd_addr - BD address of the peer 808** bd_name - Name of the peer device. NULL if unknown. 809** dev_type - Remote device's device type. 810** addr_type - LE device address type. 811** 812** Returns TRUE if added OK, else FALSE 813** 814*******************************************************************************/ 815BTM_API extern BOOLEAN BTM_SecAddBleDevice (BD_ADDR bd_addr, BD_NAME bd_name, 816 tBT_DEVICE_TYPE dev_type, tBLE_ADDR_TYPE addr_type); 817 818/******************************************************************************* 819** 820** Function BTM_SecAddBleKey 821** 822** Description Add/modify LE device information. This function will be 823** normally called during host startup to restore all required 824** information stored in the NVRAM. 825** 826** Parameters: bd_addr - BD address of the peer 827** p_le_key - LE key values. 828** key_type - LE SMP key type. 829* 830** Returns TRUE if added OK, else FALSE 831** 832*******************************************************************************/ 833BTM_API extern BOOLEAN BTM_SecAddBleKey (BD_ADDR bd_addr, tBTM_LE_KEY_VALUE *p_le_key, 834 tBTM_LE_KEY_TYPE key_type); 835 836/******************************************************************************* 837** 838** Function BTM_BleSetAdvParams 839** 840** Description This function is called to set advertising parameters. 841** 842** Parameters: None. 843** 844** Returns void 845** 846*******************************************************************************/ 847BTM_API extern tBTM_STATUS BTM_BleSetAdvParams(UINT16 adv_int_min, UINT16 adv_int_max, 848 tBLE_BD_ADDR *p_dir_bda, tBTM_BLE_ADV_CHNL_MAP chnl_map); 849 850/******************************************************************************* 851** 852** Function BTM_BleWriteAdvData 853** 854** Description This function is called to write advertising data. 855** 856** Parameters: None. 857** 858** Returns void 859** 860*******************************************************************************/ 861BTM_API extern tBTM_STATUS BTM_BleWriteAdvData(tBTM_BLE_AD_MASK data_mask, 862 tBTM_BLE_ADV_DATA *p_data); 863 864/******************************************************************************* 865** 866** Function BTM_BleSetAdvParams 867** 868** Description This function is called to set advertising parameters. 869** 870** Parameters adv_int_min: minimum advertising interval 871** adv_int_max: maximum advertising interval 872** p_dir_bda: connectable direct initiator's LE device address 873** chnl_map: advertising channel map. 874** 875** Returns void 876** 877*******************************************************************************/ 878BTM_API extern void BTM_BleReadAdvParams (UINT16 *adv_int_min, UINT16 *adv_int_max, 879 tBLE_BD_ADDR *p_dir_bda, tBTM_BLE_ADV_CHNL_MAP *p_chnl_map); 880 881/******************************************************************************* 882** 883** Function BTM_BleObtainVendorCapabilities 884** 885** Description This function is called to obatin vendor capabilties 886** 887** Parameters p_cmn_vsc_cb - Returns the vednor capabilities 888** 889** Returns void 890** 891*******************************************************************************/ 892extern void BTM_BleObtainVendorCapabilities(tBTM_BLE_VSC_CB *p_cmn_vsc_cb); 893 894/******************************************************************************* 895** 896** Function BTM_BleSetScanParams 897** 898** Description This function is called to set Scan parameters. 899** 900** Parameters adv_int_min: minimum advertising interval 901** adv_int_max: maximum advertising interval 902** scan_type: scan mode. 903** 904** Returns void 905** 906*******************************************************************************/ 907BTM_API extern void BTM_BleSetScanParams(UINT16 scan_interval, UINT16 scan_window, 908 tBTM_BLE_SCAN_MODE scan_type); 909/******************************************************************************* 910** 911** Function BTM_BleGetVendorCapabilities 912** 913** Description This function reads local LE features 914** 915** Parameters p_cmn_vsc_cb : Locala LE capability structure 916** 917** Returns void 918** 919*******************************************************************************/ 920BTM_API extern void BTM_BleGetVendorCapabilities(tBTM_BLE_VSC_CB *p_cmn_vsc_cb); 921/******************************************************************************* 922** 923** Function BTM_BleSetStorageConfig 924** 925** Description This function is called to setup storage configuration and setup callbacks. 926** 927** Parameters UINT8 batch_scan_full_max -Batch scan full maximum 928 UINT8 batch_scan_trunc_max - Batch scan truncated value maximum 929 UINT8 batch_scan_notify_threshold - Threshold value 930 tBTM_BLE_SCAN_SETUP_CBACK *p_setup_cback - Setup callback 931 tBTM_BLE_SCAN_THRESHOLD_CBACK *p_thres_cback -Threshold callback 932 void *p_ref - Reference value 933** 934** Returns tBTM_STATUS 935** 936*******************************************************************************/ 937BTM_API extern tBTM_STATUS BTM_BleSetStorageConfig(UINT8 batch_scan_full_max, 938 UINT8 batch_scan_trunc_max, 939 UINT8 batch_scan_notify_threshold, 940 tBTM_BLE_SCAN_SETUP_CBACK *p_setup_cback, 941 tBTM_BLE_SCAN_THRESHOLD_CBACK *p_thres_cback, 942 tBTM_BLE_SCAN_REP_CBACK* p_cback, 943 tBTM_BLE_REF_VALUE ref_value); 944 945/******************************************************************************* 946** 947** Function BTM_BleEnableBatchScan 948** 949** Description This function is called to enable batch scan 950** 951** Parameters tBTM_BLE_BATCH_SCAN_MODE scan_mode - Batch scan mode 952 UINT32 scan_interval -Scan interval 953 UINT32 scan_window - Scan window value 954 tBLE_ADDR_TYPE addr_type - Address type 955 tBTM_BLE_DISCARD_RULE discard_rule - Data discard rules 956** 957** Returns tBTM_STATUS 958** 959*******************************************************************************/ 960BTM_API extern tBTM_STATUS BTM_BleEnableBatchScan(tBTM_BLE_BATCH_SCAN_MODE scan_mode, 961 UINT32 scan_interval, UINT32 scan_window, 962 tBTM_BLE_DISCARD_RULE discard_rule, 963 tBLE_ADDR_TYPE addr_type, 964 tBTM_BLE_REF_VALUE ref_value); 965 966/******************************************************************************* 967** 968** Function BTM_BleDisableBatchScan 969** 970** Description This function is called to disable batch scanning 971** 972** Parameters void 973** 974** Returns void 975** 976*******************************************************************************/ 977BTM_API extern tBTM_STATUS BTM_BleDisableBatchScan(tBTM_BLE_REF_VALUE ref_value); 978 979/******************************************************************************* 980** 981** Function BTM_BleReadScanReports 982** 983** Description This function is called to read batch scan reports 984** 985** Parameters tBTM_BLE_SCAN_MODE scan_mode - Scan mode report to be read out 986 tBTM_BLE_SCAN_REP_CBACK* p_cback - Reports callback 987** 988** Returns tBTM_STATUS 989** 990*******************************************************************************/ 991BTM_API extern tBTM_STATUS BTM_BleReadScanReports(tBTM_BLE_SCAN_MODE scan_mode, 992 tBTM_BLE_REF_VALUE ref_value); 993 994/******************************************************************************* 995** 996** Function BTM_BleTrackAdvertiser 997** 998** Description This function is called to read batch scan reports 999** 1000** Parameters p_track_cback - Tracking callback 1001** ref_value - Reference value 1002** 1003** Returns tBTM_STATUS 1004** 1005*******************************************************************************/ 1006BTM_API extern tBTM_STATUS BTM_BleTrackAdvertiser(tBTM_BLE_TRACK_ADV_CBACK *p_track_cback, 1007 tBTM_BLE_REF_VALUE ref_value); 1008 1009/******************************************************************************* 1010** 1011** Function BTM_BleWriteScanRsp 1012** 1013** Description This function is called to write LE scan response. 1014** 1015** Parameters: p_scan_rsp: scan response. 1016** 1017** Returns status 1018** 1019*******************************************************************************/ 1020BTM_API extern tBTM_STATUS BTM_BleWriteScanRsp(tBTM_BLE_AD_MASK data_mask, 1021 tBTM_BLE_ADV_DATA *p_data); 1022 1023/******************************************************************************* 1024** 1025** Function BTM_BleObserve 1026** 1027** Description This procedure keep the device listening for advertising 1028** events from a broadcast device. 1029** 1030** Parameters start: start or stop observe. 1031** 1032** Returns void 1033** 1034*******************************************************************************/ 1035BTM_API extern tBTM_STATUS BTM_BleObserve(BOOLEAN start, UINT8 duration, 1036 tBTM_INQ_RESULTS_CB *p_results_cb, tBTM_CMPL_CB *p_cmpl_cb); 1037 1038 1039/******************************************************************************* 1040** 1041** Function BTM_GetDeviceIDRoot 1042** 1043** Description This function is called to read the local device identity 1044** root. 1045** 1046** Returns void 1047** the local device ER is copied into er 1048** 1049*******************************************************************************/ 1050BTM_API extern void BTM_GetDeviceIDRoot (BT_OCTET16 ir); 1051 1052/******************************************************************************* 1053** 1054** Function BTM_GetDeviceEncRoot 1055** 1056** Description This function is called to read the local device encryption 1057** root. 1058** 1059** Returns void 1060** the local device ER is copied into er 1061** 1062*******************************************************************************/ 1063BTM_API extern void BTM_GetDeviceEncRoot (BT_OCTET16 er); 1064 1065/******************************************************************************* 1066** 1067** Function BTM_GetDeviceDHK 1068** 1069** Description This function is called to read the local device DHK. 1070** 1071** Returns void 1072** the local device DHK is copied into dhk 1073** 1074*******************************************************************************/ 1075BTM_API extern void BTM_GetDeviceDHK (BT_OCTET16 dhk); 1076 1077/******************************************************************************* 1078** 1079** Function BTM_SecurityGrant 1080** 1081** Description This function is called to grant security process. 1082** 1083** Parameters bd_addr - peer device bd address. 1084** res - result of the operation BTM_SUCCESS if success. 1085** Otherwise, BTM_REPEATED_ATTEMPTS is too many attempts. 1086** 1087** Returns None 1088** 1089*******************************************************************************/ 1090BTM_API extern void BTM_SecurityGrant(BD_ADDR bd_addr, UINT8 res); 1091 1092/******************************************************************************* 1093** 1094** Function BTM_BlePasskeyReply 1095** 1096** Description This function is called after Security Manager submitted 1097** passkey request to the application. 1098** 1099** Parameters: bd_addr - Address of the device for which passkey was requested 1100** res - result of the operation SMP_SUCCESS if success 1101** passkey - numeric value in the range of 1102** BTM_MIN_PASSKEY_VAL(0) - BTM_MAX_PASSKEY_VAL(999999(0xF423F)). 1103** 1104*******************************************************************************/ 1105BTM_API extern void BTM_BlePasskeyReply (BD_ADDR bd_addr, UINT8 res, UINT32 passkey); 1106 1107/******************************************************************************* 1108** 1109** Function BTM_LeOobDataReply 1110** 1111** Description This function is called to provide the OOB data for 1112** SMP in response to BTM_LE_OOB_REQ_EVT 1113** 1114** Parameters: bd_addr - Address of the peer device 1115** res - result of the operation SMP_SUCCESS if success 1116** p_data - simple pairing Randomizer C. 1117** 1118*******************************************************************************/ 1119BTM_API extern void BTM_BleOobDataReply(BD_ADDR bd_addr, UINT8 res, UINT8 len, UINT8 *p_data); 1120 1121 1122/******************************************************************************* 1123** 1124** Function BTM_BleDataSignature 1125** 1126** Description This function is called to sign the data using AES128 CMAC 1127** algorith. 1128** 1129** Parameter bd_addr: target device the data to be signed for. 1130** p_text: singing data 1131** len: length of the signing data 1132** signature: output parameter where data signature is going to 1133** be stored. 1134** 1135** Returns TRUE if signing sucessul, otherwise FALSE. 1136** 1137*******************************************************************************/ 1138BTM_API extern BOOLEAN BTM_BleDataSignature (BD_ADDR bd_addr, UINT8 *p_text, UINT16 len, 1139 BLE_SIGNATURE signature); 1140 1141/******************************************************************************* 1142** 1143** Function BTM_BleVerifySignature 1144** 1145** Description This function is called to verify the data signature 1146** 1147** Parameter bd_addr: target device the data to be signed for. 1148** p_orig: original data before signature. 1149** len: length of the signing data 1150** counter: counter used when doing data signing 1151** p_comp: signature to be compared against. 1152 1153** Returns TRUE if signature verified correctly; otherwise FALSE. 1154** 1155*******************************************************************************/ 1156BTM_API extern BOOLEAN BTM_BleVerifySignature (BD_ADDR bd_addr, UINT8 *p_orig, 1157 UINT16 len, UINT32 counter, 1158 UINT8 *p_comp); 1159 1160/******************************************************************************* 1161** 1162** Function BTM_ReadConnectionAddr 1163** 1164** Description This function is called to set the local device random address 1165** . 1166** 1167** Returns void 1168** 1169*******************************************************************************/ 1170BTM_API extern void BTM_ReadConnectionAddr (BD_ADDR remote_bda, BD_ADDR local_conn_addr, 1171 tBLE_ADDR_TYPE *p_addr_type); 1172 1173 1174 1175/******************************************************************************* 1176** 1177** Function BTM_ReadRemoteConnectionAddr 1178** 1179** Description This function is read the remote device address currently used 1180** . 1181** 1182** Returns void 1183** 1184*******************************************************************************/ 1185BTM_API extern BOOLEAN BTM_ReadRemoteConnectionAddr(BD_ADDR pseudo_addr, 1186 BD_ADDR conn_addr, 1187 tBLE_ADDR_TYPE *p_addr_type); 1188 1189/******************************************************************************* 1190** 1191** Function BTM_BleLoadLocalKeys 1192** 1193** Description Local local identity key, encryption root or sign counter. 1194** 1195** Parameters: key_type: type of key, can be BTM_BLE_KEY_TYPE_ID, BTM_BLE_KEY_TYPE_ER 1196** or BTM_BLE_KEY_TYPE_COUNTER. 1197** p_key: pointer to the key. 1198* 1199** Returns non2. 1200** 1201*******************************************************************************/ 1202BTM_API extern void BTM_BleLoadLocalKeys(UINT8 key_type, tBTM_BLE_LOCAL_KEYS *p_key); 1203 1204 1205/******************************************************************************* 1206** 1207** Function BTM_BleSetBgConnType 1208** 1209** Description This function is called to set BLE background connection 1210** procedure type. It can be auto connection, or selective connection. 1211** 1212** Parameters conn_type: it can be auto connection, or selective connection. 1213** p_select_cback: callback function when selective connection procedure 1214** is being used. 1215** 1216** Returns void 1217** 1218*******************************************************************************/ 1219BTM_API extern BOOLEAN BTM_BleSetBgConnType(tBTM_BLE_CONN_TYPE conn_type, 1220 tBTM_BLE_SEL_CBACK *p_select_cback); 1221 1222/******************************************************************************* 1223** 1224** Function BTM_BleUpdateBgConnDev 1225** 1226** Description This function is called to add or remove a device into/from 1227** background connection procedure. The background connection 1228* procedure is decided by the background connection type, it can be 1229* auto connection, or selective connection. 1230** 1231** Parameters add_remove: TRUE to add; FALSE to remove. 1232** remote_bda: device address to add/remove. 1233** 1234** Returns void 1235** 1236*******************************************************************************/ 1237BTM_API extern BOOLEAN BTM_BleUpdateBgConnDev(BOOLEAN add_remove, BD_ADDR remote_bda); 1238 1239/******************************************************************************* 1240** 1241** Function BTM_BleClearBgConnDev 1242** 1243** Description This function is called to clear the whitelist, 1244** end any pending whitelist connections, 1245* and reset the local bg device list. 1246** 1247** Parameters void 1248** 1249** Returns void 1250** 1251*******************************************************************************/ 1252BTM_API extern void BTM_BleClearBgConnDev(void); 1253 1254/******************************************************** 1255** 1256** Function BTM_BleSetPrefConnParams 1257** 1258** Description Set a peripheral's preferred connection parameters. When 1259** any of the value does not want to be updated while others 1260** do, use BTM_BLE_CONN_PARAM_UNDEF for the ones want to 1261** leave untouched. 1262** 1263** Parameters: bd_addr - BD address of the peripheral 1264** min_conn_int - minimum preferred connection interval 1265** max_conn_int - maximum preferred connection interval 1266** slave_latency - preferred slave latency 1267** supervision_tout - preferred supervision timeout 1268** 1269** Returns void 1270** 1271*******************************************************************************/ 1272BTM_API extern void BTM_BleSetPrefConnParams (BD_ADDR bd_addr, 1273 UINT16 min_conn_int, UINT16 max_conn_int, 1274 UINT16 slave_latency, UINT16 supervision_tout); 1275 1276/****************************************************************************** 1277** 1278** Function BTM_BleSetConnScanParams 1279** 1280** Description Set scan parameters used in BLE connection request 1281** 1282** Parameters: scan_interval - scan interval 1283** scan_window - scan window 1284** 1285** Returns void 1286** 1287*******************************************************************************/ 1288BTM_API extern void BTM_BleSetConnScanParams (UINT16 scan_interval, UINT16 scan_window); 1289 1290/****************************************************************************** 1291** 1292** Function BTM_BleReadControllerFeatures 1293** 1294** Description Reads BLE specific controller features 1295** 1296** Parameters: tBTM_BLE_CTRL_FEATURES_CBACK : Callback to notify when features are read 1297** 1298** Returns void 1299** 1300*******************************************************************************/ 1301BTM_API extern void BTM_BleReadControllerFeatures(tBTM_BLE_CTRL_FEATURES_CBACK *p_vsc_cback); 1302 1303/******************************************************************************* 1304** 1305** Function BTM_CheckAdvData 1306** 1307** Description This function is called to get ADV data for a specific type. 1308** 1309** Parameters p_adv - pointer of ADV data 1310** type - finding ADV data type 1311** p_length - return the length of ADV data not including type 1312** 1313** Returns pointer of ADV data 1314** 1315*******************************************************************************/ 1316BTM_API extern UINT8 *BTM_CheckAdvData( UINT8 *p_adv, UINT8 type, UINT8 *p_length); 1317 1318/******************************************************************************* 1319** 1320** Function BTM_ReadDevInfo 1321** 1322** Description This function is called to read the device/address type 1323** of BD address. 1324** 1325** Parameter remote_bda: remote device address 1326** p_dev_type: output parameter to read the device type. 1327** p_addr_type: output parameter to read the address type. 1328** 1329*******************************************************************************/ 1330BTM_API extern void BTM_ReadDevInfo (BD_ADDR remote_bda, tBT_DEVICE_TYPE *p_dev_type, 1331 tBLE_ADDR_TYPE *p_addr_type); 1332 1333/******************************************************************************* 1334** 1335** Function BTM_BleBroadcast 1336** 1337** Description This function is to start or stop broadcasting. 1338** 1339** Parameters start: start or stop broadcasting. 1340** 1341** Returns status. 1342** 1343*******************************************************************************/ 1344BTM_API extern tBTM_STATUS BTM_BleBroadcast(BOOLEAN start); 1345 1346/******************************************************************************* 1347** 1348** Function BTM_RegisterScanReqEvt 1349** 1350** Description This function is called to register a scan request callback 1351** on the advertiser. 1352** 1353** Parameters p_scan_req_cback: scan request callback. If NULL, remove the 1354** registration. 1355** 1356** Returns void 1357** 1358*******************************************************************************/ 1359BTM_API extern void BTM_RegisterScanReqEvt(tBTM_BLE_SCAN_REQ_CBACK *p_scan_req_cback); 1360 1361/******************************************************************************* 1362** 1363** Function BTM_BleConfigPrivacy 1364** 1365** Description This function is called to enable or disable the privacy in 1366** the local device. 1367** 1368** Parameters enable: TRUE to enable it; FALSE to disable it. 1369** 1370** Returns void 1371** 1372*******************************************************************************/ 1373BTM_API extern void BTM_BleConfigPrivacy(BOOLEAN enable); 1374 1375/******************************************************************************* 1376** 1377** Function BTM_BleLocalPrivacyEnabled 1378** 1379** Description Checks if local device supports private address 1380** 1381** Returns Return TRUE if local privacy is enabled else FALSE 1382** 1383*******************************************************************************/ 1384BTM_API extern BOOLEAN BTM_BleLocalPrivacyEnabled(); 1385 1386 1387 1388/******************************************************************************* 1389** 1390** Function BTM_BleSetConnMode 1391** 1392** Description This function is called to set BLE connectable mode for a 1393** peripheral device. 1394** 1395** Parameters directed: is directed connectable mode, or non-directed. 1396** p_dir_bda: connectable direct initiator's LE device address 1397** 1398** Returns void 1399** 1400*******************************************************************************/ 1401BTM_API extern tBTM_STATUS BTM_BleSetConnMode(BOOLEAN directed); 1402 1403/******************************************************************************* 1404** 1405** Function BTM_BleTurnOnPrivacyOnRemote 1406** 1407** Description This function is called to enable or disable the privacy on the 1408** remote device. 1409** 1410** Parameters bd_addr: remote device address. 1411** privacy_on: TRUE to enable it; FALSE to disable it. 1412** 1413** Returns void 1414** 1415*******************************************************************************/ 1416BTM_API extern void BTM_BleTurnOnPrivacyOnRemote(BD_ADDR bd_addr, 1417 BOOLEAN privacy_on); 1418 1419 1420/******************************************************************************* 1421** 1422** Function BTM_BleUpdateAdvWhitelist 1423** 1424** Description Add or remove device from advertising white list 1425** 1426** Returns void 1427** 1428*******************************************************************************/ 1429BTM_API extern BOOLEAN BTM_BleUpdateAdvWhitelist(BOOLEAN add_remove, BD_ADDR emote_bda); 1430 1431/******************************************************************************* 1432** 1433** Function BTM_BleUpdateAdvFilterPolicy 1434** 1435** Description This function update the filter policy of advertiser. 1436** 1437** Parameter adv_policy: advertising filter policy 1438** 1439** Return void 1440*******************************************************************************/ 1441BTM_API extern void BTM_BleUpdateAdvFilterPolicy(tBTM_BLE_AFP adv_policy); 1442 1443/******************************************************************************* 1444** 1445** Function BTM_BleReceiverTest 1446** 1447** Description This function is called to start the LE Receiver test 1448** 1449** Parameter rx_freq - Frequency Range 1450** p_cmd_cmpl_cback - Command Complete callback 1451** 1452*******************************************************************************/ 1453void BTM_BleReceiverTest(UINT8 rx_freq, tBTM_CMPL_CB *p_cmd_cmpl_cback); 1454 1455 1456/******************************************************************************* 1457** 1458** Function BTM_BleTransmitterTest 1459** 1460** Description This function is called to start the LE Transmitter test 1461** 1462** Parameter tx_freq - Frequency Range 1463** test_data_len - Length in bytes of payload data in each packet 1464** packet_payload - Pattern to use in the payload 1465** p_cmd_cmpl_cback - Command Complete callback 1466** 1467*******************************************************************************/ 1468void BTM_BleTransmitterTest(UINT8 tx_freq, UINT8 test_data_len, 1469 UINT8 packet_payload, tBTM_CMPL_CB *p_cmd_cmpl_cback); 1470 1471/******************************************************************************* 1472** 1473** Function BTM_BleTestEnd 1474** 1475** Description This function is called to stop the in-progress TX or RX test 1476** 1477** Parameter p_cmd_cmpl_cback - Command complete callback 1478** 1479*******************************************************************************/ 1480void BTM_BleTestEnd(tBTM_CMPL_CB *p_cmd_cmpl_cback); 1481 1482/******************************************************************************* 1483** 1484** Function BTM_UseLeLink 1485** 1486** Description This function is to select the underneath physical link to use. 1487** 1488** Returns TRUE to use LE, FALSE use BR/EDR. 1489** 1490*******************************************************************************/ 1491BTM_API extern BOOLEAN BTM_UseLeLink (BD_ADDR bd_addr); 1492 1493/******************************************************************************* 1494** 1495** Function BTM_BleStackEnable 1496** 1497** Description Enable/Disable BLE functionality on stack regarless controller 1498** capability. 1499** 1500** Parameters: enable: TRUE to enable, FALSE to disable. 1501** 1502** Returns TRUE if added OK, else FALSE 1503** 1504*******************************************************************************/ 1505BTM_API extern tBTM_STATUS BTM_BleStackEnable (BOOLEAN enable); 1506 1507/*******************************************************************************/ 1508/* Multi ADV API */ 1509/******************************************************************************* 1510** 1511** Function BTM_BleEnableAdvInstance 1512** 1513** Description This function enable a Multi-ADV instance with the specified 1514** adv parameters 1515** 1516** Parameters p_params: pointer to the adv parameter structure, set as default 1517** adv parameter when the instance is enabled. 1518** p_cback: callback function for the adv instance. 1519** p_ref: reference data attach to the adv instance to be enabled. 1520** 1521** Returns status 1522** 1523*******************************************************************************/ 1524BTM_API extern tBTM_STATUS BTM_BleEnableAdvInstance (tBTM_BLE_ADV_PARAMS *p_params, 1525 tBTM_BLE_MULTI_ADV_CBACK *p_cback, 1526 void *p_ref); 1527 1528/******************************************************************************* 1529** 1530** Function BTM_BleUpdateAdvInstParam 1531** 1532** Description This function update a Multi-ADV instance with the specififed 1533** adv parameters. 1534** 1535** Parameters inst_id: adv instance ID 1536** p_params: pointer to the adv parameter structure. 1537** 1538** Returns status 1539** 1540*******************************************************************************/ 1541BTM_API extern tBTM_STATUS BTM_BleUpdateAdvInstParam (UINT8 inst_id, tBTM_BLE_ADV_PARAMS *p_params); 1542 1543/******************************************************************************* 1544** 1545** Function BTM_BleCfgAdvInstData 1546** 1547** Description This function configure a Multi-ADV instance with the specified 1548** adv data or scan response data. 1549** 1550** Parameters inst_id: adv instance ID 1551** is_scan_rsp: is this scacn response, if no set as adv data. 1552** data_mask: adv data mask. 1553** p_data: pointer to the adv data structure. 1554** 1555** Returns status 1556** 1557*******************************************************************************/ 1558BTM_API extern tBTM_STATUS BTM_BleCfgAdvInstData (UINT8 inst_id, BOOLEAN is_scan_rsp, 1559 tBTM_BLE_AD_MASK data_mask, 1560 tBTM_BLE_ADV_DATA *p_data); 1561 1562/******************************************************************************* 1563** 1564** Function BTM_BleDisableAdvInstance 1565** 1566** Description This function disable a Multi-ADV instance. 1567** 1568** Parameters inst_id: adv instance ID 1569** 1570** Returns status 1571** 1572*******************************************************************************/ 1573BTM_API extern tBTM_STATUS BTM_BleDisableAdvInstance (UINT8 inst_id); 1574 1575/******************************************************************************* 1576** 1577** Function BTM_BleAdvFilterParamSetup 1578** 1579** Description This function is called to setup the adv data payload filter 1580** condition. 1581** 1582** Parameters p_target: enabble the filter condition on a target device; if NULL 1583** enable the generic scan condition. 1584** enable: enable or disable the filter condition 1585** 1586** Returns void 1587** 1588*******************************************************************************/ 1589BTM_API extern tBTM_STATUS BTM_BleAdvFilterParamSetup(int action, 1590 tBTM_BLE_PF_FILT_INDEX filt_index, 1591 tBTM_BLE_PF_FILT_PARAMS *p_filt_params, 1592 tBLE_BD_ADDR *p_target, tBTM_BLE_PF_PARAM_CBACK *p_cmpl_cback, 1593 tBTM_BLE_REF_VALUE ref_value); 1594 1595/******************************************************************************* 1596** 1597** Function BTM_BleCfgFilterCondition 1598** 1599** Description This function is called to configure the adv data payload filter 1600** condition. 1601** 1602** Parameters action: to read/write/clear 1603** cond_type: filter condition type. 1604** p_cond: filter condition paramter 1605** 1606** Returns tBTM_STATUS 1607** 1608*******************************************************************************/ 1609BTM_API extern tBTM_STATUS BTM_BleCfgFilterCondition(tBTM_BLE_SCAN_COND_OP action, 1610 tBTM_BLE_PF_COND_TYPE cond_type, 1611 tBTM_BLE_PF_FILT_INDEX filt_index, 1612 tBTM_BLE_PF_COND_PARAM *p_cond, 1613 tBTM_BLE_PF_CFG_CBACK *p_cmpl_cback, 1614 tBTM_BLE_REF_VALUE ref_value); 1615 1616/******************************************************************************* 1617** 1618** Function BTM_BleEnableDisableFilterFeature 1619** 1620** Description This function is called to enable or disable the APCF feature 1621** 1622** Parameters enable - TRUE - enables the APCF, FALSE - disables the APCF 1623** ref_value - Ref value 1624** 1625** Returns tBTM_STATUS 1626** 1627*******************************************************************************/ 1628BTM_API extern tBTM_STATUS BTM_BleEnableDisableFilterFeature(UINT8 enable, 1629 tBTM_BLE_PF_STATUS_CBACK *p_stat_cback, 1630 tBTM_BLE_REF_VALUE ref_value); 1631 1632/******************************************************************************* 1633** 1634** Function BTM_BleGetEnergyInfo 1635** 1636** Description This function obtains the energy info 1637** 1638** Parameters p_ener_cback - Callback pointer 1639** 1640** Returns status 1641** 1642*******************************************************************************/ 1643BTM_API extern tBTM_STATUS BTM_BleGetEnergyInfo(tBTM_BLE_ENERGY_INFO_CBACK *p_ener_cback); 1644 1645#ifdef __cplusplus 1646} 1647#endif 1648 1649#endif 1650