1 /****************************************************************************** 2 * 3 * Copyright 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 #ifndef BTM_BLE_API_TYPES_H 20 #define BTM_BLE_API_TYPES_H 21 22 #include <base/callback_forward.h> 23 #include <hardware/bt_common_types.h> 24 #include <vector> 25 26 #define CHNL_MAP_LEN 5 27 typedef uint8_t tBTM_BLE_CHNL_MAP[CHNL_MAP_LEN]; 28 29 /* 0x00-0x04 only used for set advertising parameter command */ 30 #define BTM_BLE_CONNECT_EVT 0x00 31 /* Connectable directed advertising */ 32 #define BTM_BLE_CONNECT_DIR_EVT 0x01 33 /* Scannable undirected advertising */ 34 #define BTM_BLE_DISCOVER_EVT 0x02 35 /* Non connectable undirected advertising */ 36 #define BTM_BLE_NON_CONNECT_EVT 0x03 37 /* Connectable low duty cycle directed advertising */ 38 #define BTM_BLE_CONNECT_LO_DUTY_DIR_EVT 0x04 39 /* 0x00 - 0x05 can be received on adv event type */ 40 #define BTM_BLE_SCAN_RSP_EVT 0x04 41 #define BTM_BLE_SCAN_REQ_EVT 0x05 42 #define BTM_BLE_UNKNOWN_EVT 0xff 43 44 #define BTM_BLE_UNKNOWN_EVT 0xff 45 46 typedef uint8_t tBTM_BLE_EVT; 47 typedef uint8_t tBTM_BLE_CONN_MODE; 48 49 typedef uint32_t 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 54 typedef uint8_t tBLE_SCAN_MODE; 55 56 #define BTM_BLE_BATCH_SCAN_MODE_DISABLE 0 57 #define BTM_BLE_BATCH_SCAN_MODE_PASS 1 58 #define BTM_BLE_BATCH_SCAN_MODE_ACTI 2 59 #define BTM_BLE_BATCH_SCAN_MODE_PASS_ACTI 3 60 61 typedef uint8_t tBTM_BLE_BATCH_SCAN_MODE; 62 63 /* advertising channel map */ 64 #define BTM_BLE_ADV_CHNL_37 (0x01 << 0) 65 #define BTM_BLE_ADV_CHNL_38 (0x01 << 1) 66 #define BTM_BLE_ADV_CHNL_39 (0x01 << 2) 67 typedef uint8_t tBTM_BLE_ADV_CHNL_MAP; 68 69 /*d efault advertising channel map */ 70 #ifndef BTM_BLE_DEFAULT_ADV_CHNL_MAP 71 #define BTM_BLE_DEFAULT_ADV_CHNL_MAP \ 72 (BTM_BLE_ADV_CHNL_37 | BTM_BLE_ADV_CHNL_38 | BTM_BLE_ADV_CHNL_39) 73 #endif 74 75 /* advertising filter policy */ 76 #define AP_SCAN_CONN_ALL 0x00 /* default */ 77 #define AP_SCAN_WL_CONN_ALL 0x01 78 #define AP_SCAN_ALL_CONN_WL 0x02 79 #define AP_SCAN_CONN_WL 0x03 80 #define AP_SCAN_CONN_POLICY_MAX 0x04 81 typedef uint8_t tBTM_BLE_AFP; 82 83 /* default advertising filter policy */ 84 #ifndef BTM_BLE_DEFAULT_AFP 85 #define BTM_BLE_DEFAULT_AFP AP_SCAN_CONN_ALL 86 #endif 87 88 /* scanning filter policy */ 89 /* 0: accept adv packet from all, directed adv pkt not directed */ 90 /* to local device is ignored */ 91 #define SP_ADV_ALL 0x00 92 /* 1: accept adv packet from device in white list, directed adv */ 93 /* packet not directed to local device is ignored */ 94 #define SP_ADV_WL 0x01 95 /* 2: accept adv packet from all, directed adv pkt */ 96 /* not directed to me is ignored except direct adv with RPA */ 97 #define SP_ADV_ALL_RPA_DIR_ADV 0x02 98 /* 3: accept adv packet from device in white list, directed */ 99 /* adv pkt not directed to me is ignored except direct adv with RPA */ 100 #define SP_ADV_WL_RPA_DIR_ADV 0x03 101 102 typedef uint8_t tBTM_BLE_SFP; 103 104 #ifndef BTM_BLE_DEFAULT_SFP 105 #define BTM_BLE_DEFAULT_SFP SP_ADV_ALL 106 #endif 107 108 /* adv parameter boundary values */ 109 #define BTM_BLE_ADV_INT_MIN 0x0020 110 #define BTM_BLE_ADV_INT_MAX 0x4000 111 112 /* Full scan boundary values */ 113 #define BTM_BLE_ADV_SCAN_FULL_MIN 0x00 114 #define BTM_BLE_ADV_SCAN_FULL_MAX 0x64 115 116 /* Partial scan boundary values */ 117 #define BTM_BLE_ADV_SCAN_TRUNC_MIN BTM_BLE_ADV_SCAN_FULL_MIN 118 #define BTM_BLE_ADV_SCAN_TRUNC_MAX BTM_BLE_ADV_SCAN_FULL_MAX 119 120 /* Threshold values */ 121 #define BTM_BLE_ADV_SCAN_THR_MIN BTM_BLE_ADV_SCAN_FULL_MIN 122 #define BTM_BLE_ADV_SCAN_THR_MAX BTM_BLE_ADV_SCAN_FULL_MAX 123 124 /* connection parameter boundary values */ 125 #define BTM_BLE_SCAN_INT_MIN 0x0004 126 #define BTM_BLE_SCAN_INT_MAX 0x4000 127 #define BTM_BLE_SCAN_WIN_MIN 0x0004 128 #define BTM_BLE_SCAN_WIN_MAX 0x4000 129 #define BTM_BLE_EXT_SCAN_INT_MAX 0x00FFFFFF 130 #define BTM_BLE_EXT_SCAN_WIN_MAX 0xFFFF 131 #define BTM_BLE_CONN_INT_MIN 0x0006 132 #define BTM_BLE_CONN_INT_MAX 0x0C80 133 #define BTM_BLE_CONN_LATENCY_MAX 500 134 #define BTM_BLE_CONN_SUP_TOUT_MIN 0x000A 135 #define BTM_BLE_CONN_SUP_TOUT_MAX 0x0C80 136 /* use this value when a specific value not to be overwritten */ 137 #define BTM_BLE_CONN_PARAM_UNDEF 0xffff 138 #define BTM_BLE_SCAN_PARAM_UNDEF 0xffffffff 139 140 /* default connection parameters if not configured, use GAP recommended value 141 * for auto/selective connection */ 142 /* default scan interval */ 143 #ifndef BTM_BLE_SCAN_FAST_INT 144 #define BTM_BLE_SCAN_FAST_INT 96 /* 30 ~ 60 ms (use 60) = 96 *0.625 */ 145 #endif 146 /* default scan window for background connection, applicable for auto connection 147 * or selective connection */ 148 #ifndef BTM_BLE_SCAN_FAST_WIN 149 #define BTM_BLE_SCAN_FAST_WIN 48 /* 30 ms = 48 *0.625 */ 150 #endif 151 152 /* default scan paramter used in reduced power cycle (background scanning) */ 153 #ifndef BTM_BLE_SCAN_SLOW_INT_1 154 #define BTM_BLE_SCAN_SLOW_INT_1 2048 /* 1.28 s = 2048 *0.625 */ 155 #endif 156 #ifndef BTM_BLE_SCAN_SLOW_WIN_1 157 #define BTM_BLE_SCAN_SLOW_WIN_1 48 /* 30 ms = 48 *0.625 */ 158 #endif 159 160 /* default scan paramter used in reduced power cycle (background scanning) */ 161 #ifndef BTM_BLE_SCAN_SLOW_INT_2 162 #define BTM_BLE_SCAN_SLOW_INT_2 4096 /* 2.56 s = 4096 *0.625 */ 163 #endif 164 #ifndef BTM_BLE_SCAN_SLOW_WIN_2 165 #define BTM_BLE_SCAN_SLOW_WIN_2 36 /* 22.5 ms = 36 *0.625 */ 166 #endif 167 168 /* default connection interval min */ 169 #ifndef BTM_BLE_CONN_INT_MIN_DEF 170 /* recommended min: 30ms = 24 * 1.25 */ 171 #define BTM_BLE_CONN_INT_MIN_DEF 24 172 #endif 173 174 /* default connectino interval max */ 175 #ifndef BTM_BLE_CONN_INT_MAX_DEF 176 /* recommended max: 50 ms = 56 * 1.25 */ 177 #define BTM_BLE_CONN_INT_MAX_DEF 40 178 #endif 179 180 /* default slave latency */ 181 #ifndef BTM_BLE_CONN_SLAVE_LATENCY_DEF 182 #define BTM_BLE_CONN_SLAVE_LATENCY_DEF 0 /* 0 */ 183 #endif 184 185 /* default supervision timeout */ 186 #ifndef BTM_BLE_CONN_TIMEOUT_DEF 187 #define BTM_BLE_CONN_TIMEOUT_DEF 500 188 #endif 189 190 /* minimum supervision timeout */ 191 #ifndef BTM_BLE_CONN_TIMEOUT_MIN_DEF 192 #define BTM_BLE_CONN_TIMEOUT_MIN_DEF 100 193 #endif 194 195 /* minimum acceptable connection interval */ 196 #ifndef BTM_BLE_CONN_INT_MIN_LIMIT 197 #define BTM_BLE_CONN_INT_MIN_LIMIT 0x0009 198 #endif 199 200 /* minimum acceptable connection interval when there is bonded Hearing Aid 201 * device */ 202 #ifndef BTM_BLE_CONN_INT_MIN_HEARINGAID 203 #define BTM_BLE_CONN_INT_MIN_HEARINGAID 0x0010 204 #endif 205 206 #define BTM_BLE_DIR_CONN_FALLBACK_UNDIR 1 207 #define BTM_BLE_DIR_CONN_FALLBACK_NO_ADV 2 208 209 #ifndef BTM_BLE_DIR_CONN_FALLBACK 210 #define BTM_BLE_DIR_CONN_FALLBACK BTM_BLE_DIR_CONN_FALLBACK_UNDIR 211 #endif 212 213 #define BTM_CMAC_TLEN_SIZE 8 /* 64 bits */ 214 #define BTM_BLE_AUTH_SIGN_LEN \ 215 12 /* BLE data signature length 8 Bytes + 4 bytes counter*/ 216 typedef uint8_t BLE_SIGNATURE[BTM_BLE_AUTH_SIGN_LEN]; /* Device address */ 217 218 #ifndef BTM_BLE_HOST_SUPPORT 219 #define BTM_BLE_HOST_SUPPORT 0x01 220 #endif 221 222 #ifndef BTM_BLE_SIMULTANEOUS_HOST 223 #define BTM_BLE_SIMULTANEOUS_HOST 0x01 224 #endif 225 226 /* Appearance Values Reported with BTM_BLE_AD_TYPE_APPEARANCE */ 227 #define BTM_BLE_APPEARANCE_UKNOWN 0x0000 228 #define BTM_BLE_APPEARANCE_GENERIC_PHONE 0x0040 229 #define BTM_BLE_APPEARANCE_GENERIC_COMPUTER 0x0080 230 #define BTM_BLE_APPEARANCE_GENERIC_WATCH 0x00C0 231 #define BTM_BLE_APPEARANCE_SPORTS_WATCH 0x00C1 232 #define BTM_BLE_APPEARANCE_GENERIC_CLOCK 0x0100 233 #define BTM_BLE_APPEARANCE_GENERIC_DISPLAY 0x0140 234 #define BTM_BLE_APPEARANCE_GENERIC_REMOTE 0x0180 235 #define BTM_BLE_APPEARANCE_GENERIC_EYEGLASSES 0x01C0 236 #define BTM_BLE_APPEARANCE_GENERIC_TAG 0x0200 237 #define BTM_BLE_APPEARANCE_GENERIC_KEYRING 0x0240 238 #define BTM_BLE_APPEARANCE_GENERIC_MEDIA_PLAYER 0x0280 239 #define BTM_BLE_APPEARANCE_GENERIC_BARCODE_SCANNER 0x02C0 240 #define BTM_BLE_APPEARANCE_GENERIC_THERMOMETER 0x0300 241 #define BTM_BLE_APPEARANCE_THERMOMETER_EAR 0x0301 242 #define BTM_BLE_APPEARANCE_GENERIC_HEART_RATE 0x0340 243 #define BTM_BLE_APPEARANCE_HEART_RATE_BELT 0x0341 244 #define BTM_BLE_APPEARANCE_GENERIC_BLOOD_PRESSURE 0x0380 245 #define BTM_BLE_APPEARANCE_BLOOD_PRESSURE_ARM 0x0381 246 #define BTM_BLE_APPEARANCE_BLOOD_PRESSURE_WRIST 0x0382 247 #define BTM_BLE_APPEARANCE_GENERIC_HID 0x03C0 248 #define BTM_BLE_APPEARANCE_HID_KEYBOARD 0x03C1 249 #define BTM_BLE_APPEARANCE_HID_MOUSE 0x03C2 250 #define BTM_BLE_APPEARANCE_HID_JOYSTICK 0x03C3 251 #define BTM_BLE_APPEARANCE_HID_GAMEPAD 0x03C4 252 #define BTM_BLE_APPEARANCE_HID_DIGITIZER_TABLET 0x03C5 253 #define BTM_BLE_APPEARANCE_HID_CARD_READER 0x03C6 254 #define BTM_BLE_APPEARANCE_HID_DIGITAL_PEN 0x03C7 255 #define BTM_BLE_APPEARANCE_HID_BARCODE_SCANNER 0x03C8 256 #define BTM_BLE_APPEARANCE_GENERIC_GLUCOSE 0x0400 257 #define BTM_BLE_APPEARANCE_GENERIC_WALKING 0x0440 258 #define BTM_BLE_APPEARANCE_WALKING_IN_SHOE 0x0441 259 #define BTM_BLE_APPEARANCE_WALKING_ON_SHOE 0x0442 260 #define BTM_BLE_APPEARANCE_WALKING_ON_HIP 0x0443 261 #define BTM_BLE_APPEARANCE_GENERIC_CYCLING 0x0480 262 #define BTM_BLE_APPEARANCE_CYCLING_COMPUTER 0x0481 263 #define BTM_BLE_APPEARANCE_CYCLING_SPEED 0x0482 264 #define BTM_BLE_APPEARANCE_CYCLING_CADENCE 0x0483 265 #define BTM_BLE_APPEARANCE_CYCLING_POWER 0x0484 266 #define BTM_BLE_APPEARANCE_CYCLING_SPEED_CADENCE 0x0485 267 #define BTM_BLE_APPEARANCE_GENERIC_PULSE_OXIMETER 0x0C40 268 #define BTM_BLE_APPEARANCE_PULSE_OXIMETER_FINGERTIP 0x0C41 269 #define BTM_BLE_APPEARANCE_PULSE_OXIMETER_WRIST 0x0C42 270 #define BTM_BLE_APPEARANCE_GENERIC_WEIGHT 0x0C80 271 #define BTM_BLE_APPEARANCE_GENERIC_OUTDOOR_SPORTS 0x1440 272 #define BTM_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION 0x1441 273 #define BTM_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_AND_NAV 0x1442 274 #define BTM_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_POD 0x1443 275 #define BTM_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_POD_AND_NAV 0x1444 276 277 /* Structure returned with Rand/Encrypt complete callback */ 278 typedef struct { 279 uint8_t status; 280 uint8_t param_len; 281 uint16_t opcode; 282 uint8_t param_buf[BT_OCTET16_LEN]; 283 } tBTM_RAND_ENC; 284 285 /* General callback function for notifying an application that a synchronous 286 * BTM function is complete. The pointer contains the address of any returned 287 * data. 288 */ 289 typedef void(tBTM_RAND_ENC_CB)(tBTM_RAND_ENC* p1); 290 291 #define BTM_BLE_FILTER_TARGET_SCANNER 0x01 292 #define BTM_BLE_FILTER_TARGET_ADVR 0x00 293 294 #define BTM_BLE_POLICY_BLACK_ALL 0x00 /* relevant to both */ 295 #define BTM_BLE_POLICY_ALLOW_SCAN 0x01 /* relevant to advertiser */ 296 #define BTM_BLE_POLICY_ALLOW_CONN 0x02 /* relevant to advertiser */ 297 #define BTM_BLE_POLICY_WHITE_ALL 0x03 /* relevant to both */ 298 299 /* ADV data flag bit definition used for BTM_BLE_AD_TYPE_FLAG */ 300 #define BTM_BLE_LIMIT_DISC_FLAG (0x01 << 0) 301 #define BTM_BLE_GEN_DISC_FLAG (0x01 << 1) 302 #define BTM_BLE_BREDR_NOT_SPT (0x01 << 2) 303 /* 4.1 spec adv flag for simultaneous BR/EDR+LE connection support */ 304 #define BTM_BLE_DMT_CONTROLLER_SPT (0x01 << 3) 305 #define BTM_BLE_DMT_HOST_SPT (0x01 << 4) 306 #define BTM_BLE_NON_LIMIT_DISC_FLAG (0x00) /* lowest bit unset */ 307 #define BTM_BLE_ADV_FLAG_MASK \ 308 (BTM_BLE_LIMIT_DISC_FLAG | BTM_BLE_BREDR_NOT_SPT | BTM_BLE_GEN_DISC_FLAG) 309 #define BTM_BLE_LIMIT_DISC_MASK (BTM_BLE_LIMIT_DISC_FLAG) 310 311 // TODO(jpawlowski): this should be removed with code that depend on it. 312 #define BTM_BLE_AD_BIT_FLAGS (0x00000001 << 1) 313 314 #define BTM_BLE_AD_TYPE_FLAG HCI_EIR_FLAGS_TYPE /* 0x01 */ 315 #define BTM_BLE_AD_TYPE_16SRV_CMPL \ 316 HCI_EIR_COMPLETE_16BITS_UUID_TYPE /* 0x03 \ 317 */ 318 #define BTM_BLE_AD_TYPE_NAME_SHORT \ 319 HCI_EIR_SHORTENED_LOCAL_NAME_TYPE /* 0x08 \ 320 */ 321 #define BTM_BLE_AD_TYPE_NAME_CMPL HCI_EIR_COMPLETE_LOCAL_NAME_TYPE /* 0x09 */ 322 323 #define BTM_BLE_AD_TYPE_APPEARANCE 0x19 324 325 /* Security settings used with L2CAP LE COC */ 326 #define BTM_SEC_LE_LINK_ENCRYPTED 0x01 327 #define BTM_SEC_LE_LINK_PAIRED_WITHOUT_MITM 0x02 328 #define BTM_SEC_LE_LINK_PAIRED_WITH_MITM 0x04 329 330 /* Min/max Preferred number of payload octets that the local Controller 331 should include in a single Link Layer Data Channel PDU. */ 332 #define BTM_BLE_DATA_SIZE_MAX 0x00fb 333 #define BTM_BLE_DATA_SIZE_MIN 0x001b 334 335 /* Preferred maximum number of microseconds that the local Controller 336 should use to transmit a single Link Layer Data Channel PDU. */ 337 #define BTM_BLE_DATA_TX_TIME_MIN 0x0148 338 #define BTM_BLE_DATA_TX_TIME_MAX 0x0848 339 340 /* adv tx power in dBm */ 341 typedef struct { 342 uint8_t adv_inst_max; /* max adv instance supported in controller */ 343 uint8_t rpa_offloading; 344 uint16_t tot_scan_results_strg; 345 uint8_t max_irk_list_sz; 346 uint8_t filter_support; 347 uint8_t max_filter; 348 uint8_t energy_support; 349 bool values_read; 350 uint16_t version_supported; 351 uint16_t total_trackable_advertisers; 352 uint8_t extended_scan_support; 353 uint8_t debug_logging_supported; 354 } tBTM_BLE_VSC_CB; 355 356 typedef void(tBTM_BLE_ADV_DATA_CMPL_CBACK)(tBTM_STATUS status); 357 358 #ifndef BTM_BLE_MULTI_ADV_MAX 359 #define BTM_BLE_MULTI_ADV_MAX \ 360 16 /* controller returned adv_inst_max should be less \ 361 than this number */ 362 #endif 363 364 typedef uint8_t tGATT_IF; 365 366 typedef void(tBTM_BLE_SCAN_THRESHOLD_CBACK)(tBTM_BLE_REF_VALUE ref_value); 367 using tBTM_BLE_SCAN_REP_CBACK = 368 base::Callback<void(uint8_t /* status */, uint8_t /* report_format */, 369 uint8_t /* num_reports */, std::vector<uint8_t>)>; 370 371 #ifndef BTM_BLE_BATCH_SCAN_MAX 372 #define BTM_BLE_BATCH_SCAN_MAX 5 373 #endif 374 375 #ifndef BTM_BLE_BATCH_REP_MAIN_Q_SIZE 376 #define BTM_BLE_BATCH_REP_MAIN_Q_SIZE 2 377 #endif 378 379 typedef enum { 380 BTM_BLE_SCAN_INVALID_STATE = 0, 381 BTM_BLE_SCAN_ENABLE_CALLED = 1, 382 BTM_BLE_SCAN_ENABLED_STATE = 2, 383 BTM_BLE_SCAN_DISABLE_CALLED = 3, 384 BTM_BLE_SCAN_DISABLED_STATE = 4 385 } tBTM_BLE_BATCH_SCAN_STATE; 386 387 enum { BTM_BLE_DISCARD_OLD_ITEMS, BTM_BLE_DISCARD_LOWER_RSSI_ITEMS }; 388 typedef uint8_t tBTM_BLE_DISCARD_RULE; 389 390 typedef struct { 391 tBTM_BLE_BATCH_SCAN_STATE cur_state; 392 tBTM_BLE_BATCH_SCAN_MODE scan_mode; 393 uint32_t scan_interval; 394 uint32_t scan_window; 395 tBLE_ADDR_TYPE addr_type; 396 tBTM_BLE_DISCARD_RULE discard_rule; 397 tBTM_BLE_SCAN_THRESHOLD_CBACK* p_thres_cback; 398 tBTM_BLE_REF_VALUE ref_value; 399 } tBTM_BLE_BATCH_SCAN_CB; 400 401 /* filter selection bit index */ 402 #define BTM_BLE_PF_ADDR_FILTER 0 403 #define BTM_BLE_PF_SRVC_DATA 1 404 #define BTM_BLE_PF_SRVC_UUID 2 405 #define BTM_BLE_PF_SRVC_SOL_UUID 3 406 #define BTM_BLE_PF_LOCAL_NAME 4 407 #define BTM_BLE_PF_MANU_DATA 5 408 #define BTM_BLE_PF_SRVC_DATA_PATTERN 6 409 /* when passed in payload filter type all, only clear action is applicable */ 410 #define BTM_BLE_PF_TYPE_ALL 7 411 #define BTM_BLE_PF_TYPE_MAX 8 412 413 /* max number of filter spot for different filter type */ 414 #ifndef BTM_BLE_MAX_UUID_FILTER 415 #define BTM_BLE_MAX_UUID_FILTER 8 416 #endif 417 #ifndef BTM_BLE_MAX_ADDR_FILTER 418 #define BTM_BLE_MAX_ADDR_FILTER 8 419 #endif 420 #ifndef BTM_BLE_PF_STR_COND_MAX 421 #define BTM_BLE_PF_STR_COND_MAX 4 /* apply to manu data , or local name */ 422 #endif 423 #ifndef BTM_BLE_PF_STR_LEN_MAX 424 #define BTM_BLE_PF_STR_LEN_MAX 29 /* match for first 29 bytes */ 425 #endif 426 427 typedef uint8_t tBTM_BLE_PF_COND_TYPE; 428 429 #define BTM_BLE_PF_LOGIC_OR 0 430 #define BTM_BLE_PF_LOGIC_AND 1 431 typedef uint8_t tBTM_BLE_PF_LOGIC_TYPE; 432 433 #define BTM_BLE_PF_ENABLE 1 434 #define BTM_BLE_PF_CONFIG 2 435 typedef uint8_t tBTM_BLE_PF_ACTION; 436 437 typedef uint8_t tBTM_BLE_PF_FILT_INDEX; 438 439 typedef uint8_t tBTM_BLE_PF_AVBL_SPACE; 440 441 enum { 442 BTM_BLE_SCAN_COND_ADD, 443 BTM_BLE_SCAN_COND_DELETE, 444 BTM_BLE_SCAN_COND_CLEAR = 2 445 }; 446 typedef uint8_t tBTM_BLE_SCAN_COND_OP; 447 448 /* BLE adv payload filtering config complete callback */ 449 using tBTM_BLE_PF_CFG_CBACK = base::Callback<void( 450 uint8_t /* avbl_space */, uint8_t /* action */, uint8_t /* status */)>; 451 452 /* BLE adv payload filtering status setup complete callback */ 453 using tBTM_BLE_PF_STATUS_CBACK = 454 base::Callback<void(uint8_t /*action*/, tBTM_STATUS /* status */)>; 455 456 /* BLE adv payload filtering param setup complete callback */ 457 using tBTM_BLE_PF_PARAM_CB = base::Callback<void( 458 uint8_t /* avbl_space */, uint8_t /* action */, uint8_t /* status */)>; 459 460 /* per device filter + one generic filter indexed by 0 */ 461 #define BTM_BLE_MAX_FILTER_COUNTER (BTM_BLE_MAX_ADDR_FILTER + 1) 462 463 #ifndef BTM_CS_IRK_LIST_MAX 464 #define BTM_CS_IRK_LIST_MAX 0x20 465 #endif 466 467 typedef struct { 468 bool in_use; 469 RawAddress bd_addr; 470 uint8_t pf_counter[BTM_BLE_PF_TYPE_MAX]; /* number of filter indexed by 471 tBTM_BLE_PF_COND_TYPE */ 472 } tBTM_BLE_PF_COUNT; 473 474 typedef struct { 475 bool enable; 476 uint8_t op_type; 477 tBTM_BLE_PF_COUNT* p_addr_filter_count; /* per BDA filter array */ 478 tBLE_BD_ADDR cur_filter_target; 479 } tBTM_BLE_ADV_FILTER_CB; 480 481 /* Sub codes */ 482 #define BTM_BLE_META_PF_ENABLE 0x00 483 #define BTM_BLE_META_PF_FEAT_SEL 0x01 484 #define BTM_BLE_META_PF_ADDR 0x02 485 #define BTM_BLE_META_PF_UUID 0x03 486 #define BTM_BLE_META_PF_SOL_UUID 0x04 487 #define BTM_BLE_META_PF_LOCAL_NAME 0x05 488 #define BTM_BLE_META_PF_MANU_DATA 0x06 489 #define BTM_BLE_META_PF_SRVC_DATA 0x07 490 #define BTM_BLE_META_PF_ALL 0x08 491 492 typedef uint8_t BTM_BLE_ADV_STATE; 493 typedef uint8_t BTM_BLE_ADV_INFO_PRESENT; 494 typedef uint8_t BTM_BLE_RSSI_VALUE; 495 typedef uint16_t BTM_BLE_ADV_INFO_TIMESTAMP; 496 497 enum { BTM_BLE_CONN_NONE, BTM_BLE_CONN_AUTO }; 498 typedef uint8_t tBTM_BLE_CONN_TYPE; 499 500 #define ADV_INFO_PRESENT 0x00 501 #define NO_ADV_INFO_PRESENT 0x01 502 503 typedef btgatt_track_adv_info_t tBTM_BLE_TRACK_ADV_DATA; 504 505 typedef void(tBTM_BLE_TRACK_ADV_CBACK)( 506 tBTM_BLE_TRACK_ADV_DATA* p_track_adv_data); 507 508 typedef uint8_t tBTM_BLE_TRACK_ADV_EVT; 509 510 typedef struct { 511 tBTM_BLE_REF_VALUE ref_value; 512 tBTM_BLE_TRACK_ADV_CBACK* p_track_cback; 513 } tBTM_BLE_ADV_TRACK_CB; 514 515 enum { BTM_BLE_TRACK_ADV_ADD, BTM_BLE_TRACK_ADV_REMOVE }; 516 517 typedef uint8_t tBTM_BLE_TRACK_ADV_ACTION; 518 519 typedef uint8_t tBTM_BLE_BATCH_SCAN_EVT; 520 521 typedef uint32_t tBTM_BLE_TX_TIME_MS; 522 typedef uint32_t tBTM_BLE_RX_TIME_MS; 523 typedef uint32_t tBTM_BLE_IDLE_TIME_MS; 524 typedef uint32_t tBTM_BLE_ENERGY_USED; 525 526 typedef void(tBTM_BLE_ENERGY_INFO_CBACK)(tBTM_BLE_TX_TIME_MS tx_time, 527 tBTM_BLE_RX_TIME_MS rx_time, 528 tBTM_BLE_IDLE_TIME_MS idle_time, 529 tBTM_BLE_ENERGY_USED energy_used, 530 tBTM_STATUS status); 531 532 typedef struct { 533 tBTM_BLE_ENERGY_INFO_CBACK* p_ener_cback; 534 } tBTM_BLE_ENERGY_INFO_CB; 535 536 typedef void(tBTM_BLE_CTRL_FEATURES_CBACK)(tBTM_STATUS status); 537 538 typedef void (*tBLE_SCAN_PARAM_SETUP_CBACK)(tGATT_IF client_if, 539 tBTM_STATUS status); 540 541 #endif // BTM_BLE_API_TYPES_H 542