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