1 /* 2 * Copyright (C) 2021-2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef BLE_DEFS_H 17 #define BLE_DEFS_H 18 19 #include <string> 20 21 #include "bt_def.h" 22 #include "bt_uuid.h" 23 #include "gap_le_if.h" 24 25 /* 26 * @brief The bluetooth system. 27 */ 28 namespace OHOS { 29 namespace bluetooth { 30 /// const 31 constexpr uint8_t BLE_IRK_HEX_ELN = 0x10; 32 constexpr uint8_t BLE_IRK_RAND_HEX_LEN = 0x03; 33 constexpr uint8_t BLE_IRK_RAND_ELN = 0x1F; 34 constexpr uint8_t BLE_IRK_RAND_LEFT_SHIFT = 0x04; 35 constexpr uint8_t SHORTENED_LOCAL_NAME = 0X08; 36 constexpr uint8_t COMPLETE_LOCAL_NAME = 0X09; 37 constexpr uint8_t MANUFACTURER_SPECIFIC_DATA = 0XFF; 38 constexpr uint8_t TX_POWER_LEVEL = 0x0A; 39 constexpr uint8_t SERVICE_DATA_16_BIT_UUID = 0X16; 40 constexpr uint8_t SERVICE_DATA_32_BIT_UUID = 0X20; 41 constexpr uint8_t SERVICE_DATA_128_BIT_UUID = 0X21; 42 constexpr uint8_t BLE_DIV_RESULT_TWO = 0x02; 43 44 /// Maximum advertising data length that can fit in a legacy PDU. 45 constexpr uint8_t BLE_LEGACY_ADV_DATA_LEN_MAX = 0x1F; 46 constexpr uint8_t BLE_LEGACY_SCAN_RSP_DATA_LEN_MAX = 0x1F; 47 constexpr uint8_t BLE_EX_ADV_PAYLOAD_DATA_LEN = 0XBF; 48 49 /// Batch scan params 50 constexpr uint16_t BLE_SCAN_MODE_BATCH_LOW_POWER_WINDOW_MS = 500; 51 constexpr uint16_t BLE_SCAN_MODE_BATCH_LOW_POWER_INTERVAL_MS = 45000; 52 constexpr uint16_t BLE_SCAN_MODE_BATCH_BALANCED_WINDOW_MS = 1000; 53 constexpr uint16_t BLE_SCAN_MODE_BATCH_BALANCED_INTERVAL_MS = 45000; 54 constexpr uint16_t BLE_SCAN_MODE_BATCH_LOW_LATENCY_WINDOW_MS = 1500; 55 constexpr uint16_t BLE_SCAN_MODE_BATCH_LOW_LATENCY_INTERVAL_MS = 45000; 56 constexpr uint16_t BLE_SCAN_MODE_BATCH_OP_P2_60_3000_WINDOW_MS = 60; 57 constexpr uint16_t BLE_SCAN_MODE_BATCH_OP_P2_60_3000_INTERVAL_MS = 3000; 58 constexpr uint16_t BLE_SCAN_MODE_BATCH_OP_P10_60_600_WINDOW_MS = 60; 59 constexpr uint16_t BLE_SCAN_MODE_BATCH_OP_P10_60_600_INTERVAL_MS = 600; 60 constexpr uint16_t BLE_SCAN_MODE_BATCH_OP_P25_60_240_WINDOW_MS = 60; 61 constexpr uint16_t BLE_SCAN_MODE_BATCH_OP_P25_60_240_INTERVAL_MS = 240; 62 constexpr uint16_t BLE_SCAN_MODE_BATCH_OP_P100_1000_1000_WINDOW_MS = 1000; 63 constexpr uint16_t BLE_SCAN_MODE_BATCH_OP_P100_1000_1000_INTERVAL_MS = 1000; 64 constexpr uint16_t BLE_SCAN_MODE_BATCH_OP_P50_100_200_WINDOW_MS = 100; 65 constexpr uint16_t BLE_SCAN_MODE_BATCH_OP_P50_100_200_INTERVAL_MS = 200; 66 constexpr uint16_t BLE_SCAN_MODE_BATCH_OP_P10_30_300_WINDOW_MS = 30; 67 constexpr uint16_t BLE_SCAN_MODE_BATCH_OP_P10_30_300_INTERVAL_MS = 300; 68 constexpr uint16_t BLE_SCAN_MODE_BATCH_OP_P2_30_1500_WINDOW_MS = 30; 69 constexpr uint16_t BLE_SCAN_MODE_BATCH_OP_P2_30_1500_INTERVAL_MS = 1500; 70 constexpr uint16_t BLE_SCAN_MODE_BATCH_OP_P75_30_40_WINDOW_MS = 30; 71 constexpr uint16_t BLE_SCAN_MODE_BATCH_OP_P75_30_40_INTERVAL_MS = 40; 72 constexpr uint16_t BLE_SCAN_MODE_BATCH_OP_P50_30_60_WINDOW_MS = 30; 73 constexpr uint16_t BLE_SCAN_MODE_BATCH_OP_P50_30_60_INTERVAL_MS = 60; 74 75 /// Invalid MAC Address 76 const std::string BLE_INVALID_MAC_ADDRESS = "00:00:00:00:00:00"; 77 const std::string BLE_DEFAULT_DEVICE_NAME = "BluetoothDevice"; 78 constexpr uint8_t BLE_DEFAULT_IO = 0x01; 79 const std::string BLE_DEFAULT_LOCAL_PASSKEY = "0x12346"; 80 constexpr uint8_t BLE_DEFAULT_ROLES = 0x0F; 81 constexpr uint8_t BLE_DEFAULT_MODEL1_LEVEL = 0x00; 82 constexpr uint8_t BLE_DEFAULT_MODEL2_LEVEL = 0x00; 83 constexpr bool BLE_DEFAULT_SECURITY = false; 84 constexpr uint8_t BLE_DEFAULT_SCAN_MODE = 0x03; 85 86 constexpr uint8_t BLE_NON_RES_PRI_ADDR = 0x3F; 87 constexpr uint8_t BLE_STATIC_PRI_ADDR = 0xC0; 88 89 constexpr int BLE_THREAD_WAIT_TIMEOUT = 5; 90 91 constexpr int BLE_CHANGE_RPA_ADDRESS_INTERVAL = 15 * 60 * 1000; 92 constexpr uint16_t GATT_UUID_GAP_DEVICE_NAME = 0x2A00; 93 94 const Uuid::UUID128Bit DEFAULT_UUID_MASK = { 95 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 96 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF 97 }; 98 99 /// Filter status 100 typedef enum { 101 BLE_SCAN_FILTER_STATUS_IDLE = 0, 102 BLE_SCAN_FILTER_STATUS_WORKING, 103 BLE_SCAN_FILTER_STATUS_BAD, 104 } FILTER_STATUS; 105 106 /// Advertising status 107 typedef enum { 108 ADVERTISE_NOT_STARTED = -1, 109 ADVERTISE_SUCCESS = 0, 110 ADVERTISE_FAILED_DATA_TOO_LARGE, 111 ADVERTISE_FAILED_TOO_MANY_ADVERTISERS, 112 ADVERTISE_FAILED_ALREADY_STARTED, 113 ADVERTISE_FAILED_INTERNAL_ERROR, 114 ADVERTISE_FAILED_FEATURE_UNSUPPORTED 115 } ADVERTISE_STATUS; 116 117 /// Local config 118 typedef enum { 119 BLE_CONFIG_LOCAL_NAME = 0x00, 120 BLE_CONFIG_LOCAL_ADDRESS = 0x01, 121 BLE_CONFIG_ADAPTER_BONDED_MODE = 0x02, 122 } BLE_CONFIG; 123 124 /// ble bondable mode 125 typedef enum { BLE_BONDABLE_MODE_NONE = 0x00, BLE_BONDABLE_MODE_ON = 0x01 } BLE_BONDABLE_MODE; 126 127 /// Scan callback type 128 typedef enum { CALLBACK_TYPE_ALL_MATCHES = 0x00, CALLBACK_TYPE_FIRST_MATCH = 0x01 } CALLBACK_TYPE; 129 130 /// stop all adv type 131 typedef enum { 132 STOP_ADV_TYPE_SINGLE = 0x00, 133 STOP_ADV_TYPE_ALL = 0x01, 134 STOP_ADV_TYPE_RESOLVING_LIST = 0x02 135 } STOP_ALL_ADV_TYPE; 136 137 typedef enum { STOP_SCAN_TYPE_NOR = 0x00, STOP_SCAN_TYPE_RESOLVING_LIST = 0x01 } STOP_SCAN_TYPE; 138 139 /// Scan status 140 typedef enum { 141 SCAN_NOT_STARTED = -1, 142 SCAN_SUCCESS = 0, 143 SCAN_FAILED_ALREADY_STARTED, 144 SCAN_FAILED_APPLICATION_REGISTRATION_FAILED, 145 SCAN_FAILED_INTERNAL_ERROR, 146 SCAN_FAILED_FEATURE_UNSUPPORTED, 147 SCAN_FAILED_OUT_OF_HARDWARE_RESOURCES 148 } SCAN_STATUS; 149 150 typedef enum { 151 BLE_APPEARANCE_UNKNOWN = 0x0000, 152 BLE_APPEARANCE_GENERIC_PHONE = 0x0040, 153 BLE_APPEARANCE_GENERIC_COMPUTER = 0x0080, 154 BLE_APPEARANCE_GENERIC_WATCH = 0x00C0, 155 BLE_APPEARANCE_SPORTS_WATCH = 0x00C1, 156 BLE_APPEARANCE_GENERIC_CLOCK = 0x0100, 157 BLE_APPEARANCE_GENERIC_DISPLAY = 0x0140, 158 BLE_APPEARANCE_GENERIC_REMOTE = 0x0180, 159 BLE_APPEARANCE_GENERIC_EYEGLASSES = 0x01C0, 160 BLE_APPEARANCE_GENERIC_TAG = 0x0200, 161 BLE_APPEARANCE_GENERIC_KEYRING = 0x0240, 162 BLE_APPEARANCE_GENERIC_MEDIA_PLAYER = 0x0280, 163 BLE_APPEARANCE_GENERIC_BARCODE_SCANNER = 0x02C0, 164 BLE_APPEARANCE_GENERIC_THERMOMETER = 0x0300, 165 BLE_APPEARANCE_THERMOMETER_EAR = 0x0301, 166 BLE_APPEARANCE_GENERIC_HEART_RATE = 0x0340, 167 BLE_APPEARANCE_HEART_RATE_BELT = 0x0341, 168 BLE_APPEARANCE_GENERIC_BLOOD_PRESSURE = 0x0380, 169 BLE_APPEARANCE_BLOOD_PRESSURE_ARM = 0x0381, 170 BLE_APPEARANCE_BLOOD_PRESSURE_WRIST = 0x0382, 171 BLE_APPEARANCE_GENERIC_HID = 0x03C0, 172 BLE_APPEARANCE_HID_KEYBOARD = 0x03C1, 173 BLE_APPEARANCE_HID_MOUSE = 0x03C2, 174 BLE_APPEARANCE_HID_JOYSTICK = 0x03C3, 175 BLE_APPEARANCE_HID_GAMEPAD = 0x03C4, 176 BLE_APPEARANCE_HID_DIGITIZER_TABLET = 0x03C5, 177 BLE_APPEARANCE_HID_CARD_READER = 0x03C6, 178 BLE_APPEARANCE_HID_DIGITAL_PEN = 0x03C7, 179 BLE_APPEARANCE_HID_BARCODE_SCANNER = 0x03C8, 180 BLE_APPEARANCE_GENERIC_GLUCOSE = 0x0400, 181 BLE_APPEARANCE_GENERIC_WALKING = 0x0440, 182 BLE_APPEARANCE_WALKING_IN_SHOE = 0x0441, 183 BLE_APPEARANCE_WALKING_ON_SHOE = 0x0442, 184 BLE_APPEARANCE_WALKING_ON_HIP = 0x0443, 185 BLE_APPEARANCE_GENERIC_CYCLING = 0x0480, 186 BLE_APPEARANCE_CYCLING_COMPUTER = 0x0481, 187 BLE_APPEARANCE_CYCLING_SPEED = 0x0482, 188 BLE_APPEARANCE_CYCLING_CADENCE = 0x0483, 189 BLE_APPEARANCE_CYCLING_POWER = 0x0484, 190 BLE_APPEARANCE_CYCLING_SPEED_CADENCE = 0x0485, 191 BLE_APPEARANCE_GENERIC_PULSE_OXIMETER = 0x0C40, 192 BLE_APPEARANCE_PULSE_OXIMETER_FINGERTIP = 0x0C41, 193 BLE_APPEARANCE_PULSE_OXIMETER_WRIST = 0x0C42, 194 BLE_APPEARANCE_GENERIC_WEIGHT = 0x0C80, 195 BLE_APPEARANCE_GENERIC_PERSONAL_MOBILITY_DEVICE = 0x0CC0, 196 BLE_APPEARANCE_POWERED_WHEELCHAIR = 0x0CC1, 197 BLE_APPEARANCE_MOBILITY_SCOOTER = 0x0CC2, 198 BLE_APPEARANCE_GENERIC_CONTINUOUS_GLUCOSE_MONITOR = 0x0D00, 199 BLE_APPEARANCE_GENERIC_INSULIN_PUMP = 0x0D40, 200 BLE_APPEARANCE_INSULIN_PUMP_DURABLE_PUMP = 0x0D41, 201 BLE_APPEARANCE_INSULIN_PUMP_PATCH_PUMP = 0x0D44, 202 BLE_APPEARANCE_INSULIN_PEN = 0x0D48, 203 BLE_APPEARANCE_GENERIC_MEDICATION_DELIVERY = 0x0D80, 204 BLE_APPEARANCE_GENERIC_OUTDOOR_SPORTS = 0x1440, 205 BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION = 0x1441, 206 BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_AND_NAV = 0x1442, 207 BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_POD = 0x1443, 208 BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_POD_AND_NAV = 0x1444 209 } BLE_APPEARANCE; 210 211 /// GAP BLE callback event type 212 typedef enum { 213 BLE_GAP_ADV_DATA_SET_COMPLETE_EVT = 0, /// advertising data set complete 214 BLE_GAP_ADV_SCAN_RSP_DATA_SET_COMPLETE_EVT, /// scan response data set complete 215 BLE_GAP_ADV_PARAM_SET_COMPLETE_EVT, /// advertising parameter set complete 216 BLE_GAP_ADV_READ_TXPOWER_EVT, /// advertising read tx power 217 BLE_GAP_ADV_START_COMPLETE_EVT, /// start advertising complete 218 BLE_GAP_ADV_STOP_COMPLETE_EVT, /// stop adv complete 219 BLE_GAP_ADV_DATA_RAW_SET_COMPLETE_EVT, /// raw advertising data set complete 220 221 BLE_GAP_EX_ADV_SET_RAND_ADDR_RESULT_EVT, /// extend advertising data set complete 222 BLE_GAP_EX_ADV_PARAM_SET_COMPLETE_EVT, /// extend advertising parameter set complete 223 BLE_GAP_EX_ADV_DATA_SET_COMPLETE_EVT, /// extend advertising data set complete 224 BLE_GAP_EX_ADV_SCAN_RSP_DATA_SET_COMPLETE_EVT, /// extend scan response data set complete 225 BLE_GAP_EX_ADV_START_COMPLETE_EVT, /// start extend advertising complete 226 BLE_GAP_EX_ADV_STOP_COMPLETE_EVT, /// stop extend advertising complete 227 BLE_GAP_EX_ALL_ADV_STOP_COMPLETE_EVT, /// stop all extend advertising complete 228 BLE_GAP_EX_RESOLVING_LIST_ADV_STOP_COMPLETE_EVT, /// stop all resolving list extend advertising complete 229 BLE_GAP_EX_RESOLVING_LIST_ADV_START_COMPLETE_EVT, /// start all resolving list extend advertising complete 230 BLE_GAP_EX_ADV_REMOVE_HANDLE_RESULT_EVT, /// extend advertising remove handle complete 231 BLE_GAP_EX_ADV_CLEAR_HANDLE_RESULT_EVT, /// extend advertising clear handle complete 232 BLE_GAP_EX_ADV_SCAN_REQUEST_RECEIVED_EVT, /// extend advertising scan request received complete 233 BLE_GAP_EX_ADC_TERMINATED_ADV_SET_EVT, /// extend advertising terminated adv set event 234 235 BLE_GAP_SCAN_PARAM_SET_COMPLETE_EVT, /// scan parameters set complete 236 BLE_GAP_SCAN_RESULT_EVT, /// one scan result ready each time 237 BLE_GAP_SCAN_DELAY_REPORT_RESULT_EVT, /// one scan result ready each time 238 BLE_GAP_SCAN_RSP_DATA_RAW_SET_COMPLETE_EVT, /// raw scan response data set complete 239 BLE_GAP_SCAN_START_COMPLETE_EVT, /// start scan complete 240 BLE_GAP_SCAN_STOP_COMPLETE_EVT, /// stop scan complete 241 BLE_GAP_RESOLVING_LIST_ADV_SCAN_STOP_COMPLETE_EVT, /// stop all resolvint list scan complete 242 BLE_GAP_RESOLVING_LIST_ADV_SCAN_START_COMPLETE_EVT, /// start all resolvint list scan complete 243 244 BLE_GAP_EX_SCAN_PARAM_SET_COMPLETE_EVT, /// scan parameters set complete 245 BLE_GAP_EX_SCAN_RESULT_EVT, /// one scan result ready each time 246 BLE_GAP_EX_SCAN_DELAY_REPORT_RESULT_EVT, /// one scan result ready each time 247 BLE_GAP_EX_SCAN_RSP_DATA_RAW_SET_COMPLETE_EVT, /// raw scan response data set complete 248 BLE_GAP_EX_SCAN_START_COMPLETE_EVT, /// start scan complete 249 BLE_GAP_EX_SCAN_STOP_COMPLETE_EVT, /// stop scan complete 250 BLE_GAP_EX_RESOLVING_LIST_ADV_SCAN_STOP_COMPLETE_EVT, /// stop all resolvint list scan complete 251 BLE_GAP_EX_RESOLVING_LIST_ADV_SCAN_START_COMPLETE_EVT, /// start all resolvint list scan complete 252 253 BLE_GATT_DEVICE_INFO_REGISTER_STSTUS, /// device information 254 BLE_GATT_GAP_SERVICE_REGISTER_STSTUS, /// gap service 255 256 BLE_GAP_ENCRYPTION_COMPLETE_EVT, 257 BLE_GAP_LE_LOCAL_ENCRYPTION_KEY_REQ_EVT, 258 BLE_GAP_LE_REMOTE_ENCRYPTION_KEY_REQ_EVT, 259 BLE_GAP_LE_SIGN_COUNTER_CHANGE_NOTIF_EVT, 260 BLE_GAP_LE_REQ_SIGNING_ALGORITHM_INFO_EVT, 261 BLE_GAP_LE_PAIR_FEATURE_REQ_EVT, 262 BLE_GAP_LE_PAIR_FEATURE_IND_EVT, 263 BLE_GAP_LE_PAIR_METHOD_NOTI_EVT, 264 BLE_GAP_LE_PAIR_KEY_PRESS_NOTI_EVT, 265 BLE_GAP_LE_PAIR_PASSKEY_REQ_EVT, 266 BLE_GAP_LE_PAIR_PASSKEY_NOTI_EVT, 267 BLE_GAP_LE_PAIR_OOB_REQ_EVT, 268 BLE_GAP_LE_PAIR_SC_OOB_REQ_EVT, 269 BLE_GAP_LE_PAIR_SC_USER_CONFIRM_REQ_EVT, 270 BLE_GAP_LE_PAIR_COMELETE_EVT, 271 BLE_GAP_LE_PAIR_KEY_NOTI_EVT, 272 BLE_GAP_LE_REQUEST_SECURITY_RESULT, 273 } BLE_GAP_CB_EVENT; 274 275 typedef union { 276 struct EncryptionComplete { 277 uint8_t status; 278 BtAddr peerAddr; 279 } encryptionComplete_; 280 281 struct LeLocalEncryptionKeyReqEvent { 282 BtAddr addr; 283 uint64_t rand; 284 uint16_t ediv; 285 } leLocalEncryptionKeyReqEvent_; 286 287 struct LeRemoteEncryptionKeyReqEvent { 288 BtAddr addr; 289 } leRemoteEncryptionKeyReqEvent_; 290 291 struct LeSignCounterChangeNotification { 292 BtAddr addr; 293 GAP_SignCounterType type; 294 uint32_t counter; 295 } leSignCounterChangeNotification_; 296 297 struct GapRequestSigningAlgorithmInfo { 298 BtAddr addr; 299 } gapRequestSigningAlgorithmInfo_; 300 301 struct LePairFeatureReq { 302 BtAddr peerAddr; 303 bool localPair; 304 } lePairFeatureReq_; 305 306 struct LePairFeatureInd { 307 BtAddr addr; 308 GapLePairFeature remoteFrature; 309 } lePairFeatureInd_; 310 311 struct LePairMethodNotify { 312 BtAddr addr; 313 uint8_t pairMethod; 314 } lePairMethodNotify_; 315 316 struct LePairKeyPressNotification { 317 BtAddr addr; 318 uint8_t pressType; 319 } lePairKeyPressNotification_; 320 321 struct LePairPassKeyReq { 322 BtAddr addr; 323 } lePairPassKeyReq_; 324 325 struct LePairPassKeyNotification { 326 BtAddr addr; 327 uint32_t number; 328 } lePairPassKeyNotification_; 329 330 struct LePairOobReq { 331 BtAddr addr; 332 } lePairOobReq_; 333 334 struct LePairScOobReq { 335 BtAddr addr; 336 } lePairScOob_req_; 337 338 struct LePairScUserConfirmReq { 339 BtAddr addr; 340 uint32_t number; 341 } lePairScUserConfirmReq_; 342 343 struct LePairComplete { 344 BtAddr addr; 345 uint8_t result; 346 uint8_t keyType; 347 } lePairComplete_; 348 349 struct LePairKeyNotify { 350 BtAddr addr; 351 LeEncKey remoteEncKey; 352 bool hasRemoteEncKey; 353 LeIdKey remoteIdKey; 354 bool hasRemoteIdKey; 355 LeSignKey remoteSignKey; 356 bool hasRemoteSignKey; 357 LeEncKey localEncKey; 358 bool hasLocalEncKey; 359 LeSignKey localSignKey; 360 bool hasLocalSignKey; 361 } lePairKeyNotify_; 362 363 struct LeRequestSecurityResult { 364 BtAddr addr; 365 uint8_t result; 366 GAP_LeSecurityStatus status; 367 } leRequestSecurityResult_; 368 } BleGapCallbackParam; 369 370 /// Features supported by the controller. 371 /// BLUETOOTH SPECIFICATION Version 5.0 | Vol 6, Part B - 4.6 372 typedef enum { 373 LE_ENCRYPTION = 0, 374 CONNECTION_PARAMETERS_REQUEST_PROCEDURE, 375 EXTENDED_REJECT_INDICATION, 376 SLAVE_INITIATED_FEATURES_EXCHANGE, 377 LE_PING, 378 LE_DATA_PACKET_LENGTH_EXTENSION, 379 LL_PRIVACY, 380 EXTENDED_SCANNER_FILTER_POLICIES, 381 LE_2M_PHY, 382 STABLE_MODULATION_INDEX_TRANSMITTER, 383 STABLE_MODULATION_INDEX_RECEIVER, 384 LE_CODED_PHY, 385 LE_EXTENDED_ADVERTISING, 386 LE_PERIODIC_ADVERTISING, 387 CHANNEL_SELECTION_ALGORITHM_2, 388 LE_POWER_CLASS 389 } FEATURE_SUPPORTED; 390 391 /// Ble scan type 392 typedef enum { 393 BLE_SCAN_TYPE_PASSIVE = 0x00, /// Passive scan 394 BLE_SCAN_TYPE_ACTIVE = 0x01, /// Active scan 395 } BLE_SCAN_TYPE; 396 397 /// Ble scan mode 398 typedef enum { 399 BLE_SCAN_MODE_NON_DISC = 0x00, /// Non Discoverable 400 BLE_SCAN_MODE_GENERAL = 0x01, /// General 401 BLE_SCAN_MODE_LIMITED = 0x02, /// Limited 402 BLE_SCAN_MODE_ALL = 0x03, /// ALL 403 } BLE_SCAN_MODE; 404 405 /// Ble scan filter type 406 typedef enum { 407 BLE_SCAN_FILTER_ALLOW_ALL = 0x00, /// Accept all : 408 /// 1. advertisement packets except directed advertising packets not addressed to this device (default). 409 BLE_SCAN_FILTER_ALLOW_ONLY_WLST = 0x01, /// Accept only : 410 /// 1. advertisement packets from devices where the advertiser’s address is in the WH list. 411 /// 2. Directed advertising packets which are not addressed for this device shall be ignored. 412 BLE_SCAN_FILTER_ALLOW_UND_RPA_DIR = 0x02, /// Accept all : 413 /// 1. undirected advertisement packets, and 414 /// 2. directed advertising packets where the initiator address is a resolvable private address, and 415 /// 3. directed advertising packets addressed to this device. 416 BLE_SCAN_FILTER_ALLOW_WLIST_PRA_DIR = 0x03, /// Accept all : 417 /// 1. advertisement packets from devices where the advertiser’s address is in the WH list, and 418 /// 2. directed advertising packets where the initiator address is a resolvable private address, and 419 /// 3. directed advertising packets addressed to this device. 420 } BLE_SCAN_FILTER; 421 422 /// Ble scan duplicate type 423 typedef enum { 424 BLE_SCAN_DUPLICATE_DISABLE = 425 0x00, /// the Link Layer should generate advertising reports to the host for each packet received 426 BLE_SCAN_DUPLICATE_ENABLE = 0x01, /// the Link Layer should filter out duplicate advertising reports to the Host 427 BLE_SCAN_DUPLICATE_MAX = 0x02, /// 0x02 – 0xFF, Reserved for future use 428 } BLE_SCAN_DUPLICATE; 429 430 /// Ble scan parameters 431 typedef struct { 432 BLE_SCAN_TYPE scanType; /// Scan type 433 BLE_ADDR_TYPE ownAddrType; /// Owner address type 434 BLE_SCAN_FILTER scanFilterPolicy; /// Scan filter policy 435 uint16_t scanInterval; /// Scan interval. This is defined as the time interval from 436 /// when the Controller started its last LE scan until it begins the subsequent LE scan. 437 /// Range: 0x0004 to 0x4000 Default: 0x0010 (10 ms) 438 /// Time = N * 0.625 msec 439 /// Time Range: 2.5 msec to 10.24 seconds 440 uint16_t scanWindow; /// Scan window. The duration of the LE scan. LE_Scan_Window 441 /// shall be less than or equal to LE_Scan_Interval 442 /// Range: 0x0004 to 0x4000 Default: 0x0010 (10 ms) 443 /// Time = N * 0.625 msec 444 /// Time Range: 2.5 msec to 10240 msec 445 BLE_SCAN_DUPLICATE scanDuplicate; /// The Scan_Duplicates parameter controls whether the Link Layer should filter 446 /// out duplicate advertising reports (BLE_SCAN_DUPLICATE_ENABLE) to the Host, 447 /// or if the Link Layer should generate advertising reports for each packet received 448 } BleScanParams; 449 450 typedef enum { 451 ADV_FILTER_ALLOW_SCAN_ANY_CON_ANY = 0x00, /// Allow both scan and connection requests from anyone 452 ADV_FILTER_ALLOW_SCAN_WLST_CON_ANY, /// Allow both scan req from WH List devices and connection req fro anyone 453 ADV_FILTER_ALLOW_SCAN_ANY_CON_WLST, /// Allow both scan req from anyone and connection req from WH List devices 454 ADV_FILTER_ALLOW_SCAN_WLST_CON_WLST, /// Allow scan and connection requests from WH List devices 455 } BLE_ADV_FILTER; 456 457 /// Advertising channel mask 458 typedef enum { 459 ADV_CHNL_37 = 0x01, 460 ADV_CHNL_38 = 0x02, 461 ADV_CHNL_39 = 0x04, 462 ADV_CHNL_ALL = 0x07, 463 } BLE_ADV_CHANNEL; 464 465 /// Advertising mode 466 typedef enum { 467 ADV_TYPE_IND = 0x00, 468 ADV_TYPE_DIRECT_IND_HIGH = 0x01, 469 ADV_TYPE_SCAN_IND = 0x02, 470 ADV_TYPE_NONCONN_IND = 0x03, 471 ADV_TYPE_DIRECT_IND_LOW = 0x04, 472 } BLE_ADV_TYPE; 473 474 /// Scan Event Type 475 typedef enum { 476 SCAN_ADV_IND = 0x00, 477 SCAN_ADV_DIRECT_IND = 0x01, 478 SCAN_ADV_SCAN_IND = 0x02, 479 SCAN_ADV_NONCONN_IND = 0x03, 480 SCAN_SCAN_RSP = 0x04, 481 } BLE_SCAN_EVENT_TYPE; 482 483 /// Advertising parameters 484 typedef struct { 485 uint16_t advMinInterval; /// Minimum advertising interval for 486 /// undirected and low duty cycle directed advertising. 487 /// Range: 0x0020 to 0x4000 Default: N = 0x0800 (1.28 second) 488 /// ime = N * 0.625 msec Time Range: 20 ms to 10.24 sec 489 uint16_t advMaxInterval; /// Maximum advertising interval for 490 /// undirected and low duty cycle directed advertising. 491 /// Range: 0x0020 to 0x4000 Default: N = 0x0800 (1.28 second) 492 /// Time = N * 0.625 msec Time Range: 20 ms to 10.24 sec Advertising max interval 493 BLE_ADV_TYPE advType; /// Advertising type 494 BLE_ADDR_TYPE ownAddrType; /// Owner bluetooth device address type 495 BtAddr peerAddr; /// Peer device bluetooth device address 496 BLE_ADDR_TYPE peerAddrType; /// Peer device bluetooth device address type 497 BLE_ADV_CHANNEL channelMap; /// Advertising channel map 498 BLE_ADV_FILTER advFilterPolicy; /// Advertising filter policy 499 } BleAdvParams; 500 } // namespace bluetooth 501 } // namespace OHOS 502 #endif 503