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 { 138 ADV_STATUS_DEFAULT = 0x00, 139 ADV_STATUS_READ_TX_POWER, 140 ADV_STATUS_SET_PARA, 141 ADV_STATUS_SET_ADV_DATA, 142 ADV_STATUS_SET_SCAN_DATA, 143 ADV_STATUS_SET_RAN_ADDR, 144 ADV_STATUS_STARTING, 145 ADV_STATUS_STARTED, 146 ADV_STATUS_STOPING, 147 ADV_STATUS_STOPED 148 } ADV_HANDLE_STATUS; 149 150 typedef enum { STOP_SCAN_TYPE_NOR = 0x00, STOP_SCAN_TYPE_RESOLVING_LIST = 0x01 } STOP_SCAN_TYPE; 151 152 /// Scan status 153 typedef enum { 154 SCAN_NOT_STARTED = -1, 155 SCAN_SUCCESS = 0, 156 SCAN_FAILED_ALREADY_STARTED, 157 SCAN_FAILED_APPLICATION_REGISTRATION_FAILED, 158 SCAN_FAILED_INTERNAL_ERROR, 159 SCAN_FAILED_FEATURE_UNSUPPORTED, 160 SCAN_FAILED_OUT_OF_HARDWARE_RESOURCES 161 } SCAN_STATUS; 162 163 typedef enum { 164 BLE_APPEARANCE_UNKNOWN = 0x0000, 165 BLE_APPEARANCE_GENERIC_PHONE = 0x0040, 166 BLE_APPEARANCE_GENERIC_COMPUTER = 0x0080, 167 BLE_APPEARANCE_GENERIC_WATCH = 0x00C0, 168 BLE_APPEARANCE_SPORTS_WATCH = 0x00C1, 169 BLE_APPEARANCE_GENERIC_CLOCK = 0x0100, 170 BLE_APPEARANCE_GENERIC_DISPLAY = 0x0140, 171 BLE_APPEARANCE_GENERIC_REMOTE = 0x0180, 172 BLE_APPEARANCE_GENERIC_EYEGLASSES = 0x01C0, 173 BLE_APPEARANCE_GENERIC_TAG = 0x0200, 174 BLE_APPEARANCE_GENERIC_KEYRING = 0x0240, 175 BLE_APPEARANCE_GENERIC_MEDIA_PLAYER = 0x0280, 176 BLE_APPEARANCE_GENERIC_BARCODE_SCANNER = 0x02C0, 177 BLE_APPEARANCE_GENERIC_THERMOMETER = 0x0300, 178 BLE_APPEARANCE_THERMOMETER_EAR = 0x0301, 179 BLE_APPEARANCE_GENERIC_HEART_RATE = 0x0340, 180 BLE_APPEARANCE_HEART_RATE_BELT = 0x0341, 181 BLE_APPEARANCE_GENERIC_BLOOD_PRESSURE = 0x0380, 182 BLE_APPEARANCE_BLOOD_PRESSURE_ARM = 0x0381, 183 BLE_APPEARANCE_BLOOD_PRESSURE_WRIST = 0x0382, 184 BLE_APPEARANCE_GENERIC_HID = 0x03C0, 185 BLE_APPEARANCE_HID_KEYBOARD = 0x03C1, 186 BLE_APPEARANCE_HID_MOUSE = 0x03C2, 187 BLE_APPEARANCE_HID_JOYSTICK = 0x03C3, 188 BLE_APPEARANCE_HID_GAMEPAD = 0x03C4, 189 BLE_APPEARANCE_HID_DIGITIZER_TABLET = 0x03C5, 190 BLE_APPEARANCE_HID_CARD_READER = 0x03C6, 191 BLE_APPEARANCE_HID_DIGITAL_PEN = 0x03C7, 192 BLE_APPEARANCE_HID_BARCODE_SCANNER = 0x03C8, 193 BLE_APPEARANCE_GENERIC_GLUCOSE = 0x0400, 194 BLE_APPEARANCE_GENERIC_WALKING = 0x0440, 195 BLE_APPEARANCE_WALKING_IN_SHOE = 0x0441, 196 BLE_APPEARANCE_WALKING_ON_SHOE = 0x0442, 197 BLE_APPEARANCE_WALKING_ON_HIP = 0x0443, 198 BLE_APPEARANCE_GENERIC_CYCLING = 0x0480, 199 BLE_APPEARANCE_CYCLING_COMPUTER = 0x0481, 200 BLE_APPEARANCE_CYCLING_SPEED = 0x0482, 201 BLE_APPEARANCE_CYCLING_CADENCE = 0x0483, 202 BLE_APPEARANCE_CYCLING_POWER = 0x0484, 203 BLE_APPEARANCE_CYCLING_SPEED_CADENCE = 0x0485, 204 BLE_APPEARANCE_GENERIC_PULSE_OXIMETER = 0x0C40, 205 BLE_APPEARANCE_PULSE_OXIMETER_FINGERTIP = 0x0C41, 206 BLE_APPEARANCE_PULSE_OXIMETER_WRIST = 0x0C42, 207 BLE_APPEARANCE_GENERIC_WEIGHT = 0x0C80, 208 BLE_APPEARANCE_GENERIC_PERSONAL_MOBILITY_DEVICE = 0x0CC0, 209 BLE_APPEARANCE_POWERED_WHEELCHAIR = 0x0CC1, 210 BLE_APPEARANCE_MOBILITY_SCOOTER = 0x0CC2, 211 BLE_APPEARANCE_GENERIC_CONTINUOUS_GLUCOSE_MONITOR = 0x0D00, 212 BLE_APPEARANCE_GENERIC_INSULIN_PUMP = 0x0D40, 213 BLE_APPEARANCE_INSULIN_PUMP_DURABLE_PUMP = 0x0D41, 214 BLE_APPEARANCE_INSULIN_PUMP_PATCH_PUMP = 0x0D44, 215 BLE_APPEARANCE_INSULIN_PEN = 0x0D48, 216 BLE_APPEARANCE_GENERIC_MEDICATION_DELIVERY = 0x0D80, 217 BLE_APPEARANCE_GENERIC_OUTDOOR_SPORTS = 0x1440, 218 BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION = 0x1441, 219 BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_AND_NAV = 0x1442, 220 BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_POD = 0x1443, 221 BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_POD_AND_NAV = 0x1444 222 } BLE_APPEARANCE; 223 224 /// GAP BLE callback event type 225 typedef enum { 226 BLE_GAP_ADV_DATA_SET_COMPLETE_EVT = 0, /// advertising data set complete 227 BLE_GAP_ADV_SCAN_RSP_DATA_SET_COMPLETE_EVT, /// scan response data set complete 228 BLE_GAP_ADV_PARAM_SET_COMPLETE_EVT, /// advertising parameter set complete 229 BLE_GAP_ADV_READ_TXPOWER_EVT, /// advertising read tx power 230 BLE_GAP_ADV_START_COMPLETE_EVT, /// start advertising complete 231 BLE_GAP_ADV_STOP_COMPLETE_EVT, /// stop adv complete 232 BLE_GAP_ADV_DATA_RAW_SET_COMPLETE_EVT, /// raw advertising data set complete 233 234 BLE_GAP_EX_ADV_SET_RAND_ADDR_RESULT_EVT, /// extend advertising data set complete 235 BLE_GAP_EX_ADV_PARAM_SET_COMPLETE_EVT, /// extend advertising parameter set complete 236 BLE_GAP_EX_ADV_DATA_SET_COMPLETE_EVT, /// extend advertising data set complete 237 BLE_GAP_EX_ADV_SCAN_RSP_DATA_SET_COMPLETE_EVT, /// extend scan response data set complete 238 BLE_GAP_EX_ADV_START_COMPLETE_EVT, /// start extend advertising complete 239 BLE_GAP_EX_ADV_STOP_COMPLETE_EVT, /// stop extend advertising complete 240 BLE_GAP_EX_ALL_ADV_STOP_COMPLETE_EVT, /// stop all extend advertising complete 241 BLE_GAP_EX_RESOLVING_LIST_ADV_STOP_COMPLETE_EVT, /// stop all resolving list extend advertising complete 242 BLE_GAP_EX_RESOLVING_LIST_ADV_START_COMPLETE_EVT, /// start all resolving list extend advertising complete 243 BLE_GAP_EX_ADV_REMOVE_HANDLE_RESULT_EVT, /// extend advertising remove handle complete 244 BLE_GAP_EX_ADV_CLEAR_HANDLE_RESULT_EVT, /// extend advertising clear handle complete 245 BLE_GAP_EX_ADV_SCAN_REQUEST_RECEIVED_EVT, /// extend advertising scan request received complete 246 BLE_GAP_EX_ADC_TERMINATED_ADV_SET_EVT, /// extend advertising terminated adv set event 247 248 BLE_GAP_SCAN_PARAM_SET_COMPLETE_EVT, /// scan parameters set complete 249 BLE_GAP_SCAN_RESULT_EVT, /// one scan result ready each time 250 BLE_GAP_SCAN_DELAY_REPORT_RESULT_EVT, /// one scan result ready each time 251 BLE_GAP_SCAN_RSP_DATA_RAW_SET_COMPLETE_EVT, /// raw scan response data set complete 252 BLE_GAP_SCAN_START_COMPLETE_EVT, /// start scan complete 253 BLE_GAP_SCAN_STOP_COMPLETE_EVT, /// stop scan complete 254 BLE_GAP_RESOLVING_LIST_ADV_SCAN_STOP_COMPLETE_EVT, /// stop all resolvint list scan complete 255 BLE_GAP_RESOLVING_LIST_ADV_SCAN_START_COMPLETE_EVT, /// start all resolvint list scan complete 256 257 BLE_GAP_EX_SCAN_PARAM_SET_COMPLETE_EVT, /// scan parameters set complete 258 BLE_GAP_EX_SCAN_RESULT_EVT, /// one scan result ready each time 259 BLE_GAP_EX_SCAN_DELAY_REPORT_RESULT_EVT, /// one scan result ready each time 260 BLE_GAP_EX_SCAN_RSP_DATA_RAW_SET_COMPLETE_EVT, /// raw scan response data set complete 261 BLE_GAP_EX_SCAN_START_COMPLETE_EVT, /// start scan complete 262 BLE_GAP_EX_SCAN_STOP_COMPLETE_EVT, /// stop scan complete 263 BLE_GAP_EX_RESOLVING_LIST_ADV_SCAN_STOP_COMPLETE_EVT, /// stop all resolvint list scan complete 264 BLE_GAP_EX_RESOLVING_LIST_ADV_SCAN_START_COMPLETE_EVT, /// start all resolvint list scan complete 265 266 BLE_GATT_DEVICE_INFO_REGISTER_STSTUS, /// device information 267 BLE_GATT_GAP_SERVICE_REGISTER_STSTUS, /// gap service 268 269 BLE_GAP_ENCRYPTION_COMPLETE_EVT, 270 BLE_GAP_LE_LOCAL_ENCRYPTION_KEY_REQ_EVT, 271 BLE_GAP_LE_REMOTE_ENCRYPTION_KEY_REQ_EVT, 272 BLE_GAP_LE_SIGN_COUNTER_CHANGE_NOTIF_EVT, 273 BLE_GAP_LE_REQ_SIGNING_ALGORITHM_INFO_EVT, 274 BLE_GAP_LE_PAIR_FEATURE_REQ_EVT, 275 BLE_GAP_LE_PAIR_FEATURE_IND_EVT, 276 BLE_GAP_LE_PAIR_METHOD_NOTI_EVT, 277 BLE_GAP_LE_PAIR_KEY_PRESS_NOTI_EVT, 278 BLE_GAP_LE_PAIR_PASSKEY_REQ_EVT, 279 BLE_GAP_LE_PAIR_PASSKEY_NOTI_EVT, 280 BLE_GAP_LE_PAIR_OOB_REQ_EVT, 281 BLE_GAP_LE_PAIR_SC_OOB_REQ_EVT, 282 BLE_GAP_LE_PAIR_SC_USER_CONFIRM_REQ_EVT, 283 BLE_GAP_LE_PAIR_COMELETE_EVT, 284 BLE_GAP_LE_PAIR_KEY_NOTI_EVT, 285 BLE_GAP_LE_REQUEST_SECURITY_RESULT, 286 } BLE_GAP_CB_EVENT; 287 288 typedef union { 289 struct EncryptionComplete { 290 uint8_t status; 291 BtAddr peerAddr; 292 } encryptionComplete_; 293 294 struct LeLocalEncryptionKeyReqEvent { 295 BtAddr addr; 296 uint64_t rand; 297 uint16_t ediv; 298 } leLocalEncryptionKeyReqEvent_; 299 300 struct LeRemoteEncryptionKeyReqEvent { 301 BtAddr addr; 302 } leRemoteEncryptionKeyReqEvent_; 303 304 struct LeSignCounterChangeNotification { 305 BtAddr addr; 306 GAP_SignCounterType type; 307 uint32_t counter; 308 } leSignCounterChangeNotification_; 309 310 struct GapRequestSigningAlgorithmInfo { 311 BtAddr addr; 312 } gapRequestSigningAlgorithmInfo_; 313 314 struct LePairFeatureReq { 315 BtAddr peerAddr; 316 bool localPair; 317 } lePairFeatureReq_; 318 319 struct LePairFeatureInd { 320 BtAddr addr; 321 GapLePairFeature remoteFrature; 322 } lePairFeatureInd_; 323 324 struct LePairMethodNotify { 325 BtAddr addr; 326 uint8_t pairMethod; 327 } lePairMethodNotify_; 328 329 struct LePairKeyPressNotification { 330 BtAddr addr; 331 uint8_t pressType; 332 } lePairKeyPressNotification_; 333 334 struct LePairPassKeyReq { 335 BtAddr addr; 336 } lePairPassKeyReq_; 337 338 struct LePairPassKeyNotification { 339 BtAddr addr; 340 uint32_t number; 341 } lePairPassKeyNotification_; 342 343 struct LePairOobReq { 344 BtAddr addr; 345 } lePairOobReq_; 346 347 struct LePairScOobReq { 348 BtAddr addr; 349 } lePairScOob_req_; 350 351 struct LePairScUserConfirmReq { 352 BtAddr addr; 353 uint32_t number; 354 } lePairScUserConfirmReq_; 355 356 struct LePairComplete { 357 BtAddr addr; 358 uint8_t result; 359 uint8_t keyType; 360 } lePairComplete_; 361 362 struct LePairKeyNotify { 363 BtAddr addr; 364 LeEncKey remoteEncKey; 365 bool hasRemoteEncKey; 366 LeIdKey remoteIdKey; 367 bool hasRemoteIdKey; 368 LeSignKey remoteSignKey; 369 bool hasRemoteSignKey; 370 LeEncKey localEncKey; 371 bool hasLocalEncKey; 372 LeSignKey localSignKey; 373 bool hasLocalSignKey; 374 } lePairKeyNotify_; 375 376 struct LeRequestSecurityResult { 377 BtAddr addr; 378 uint8_t result; 379 GAP_LeSecurityStatus status; 380 } leRequestSecurityResult_; 381 } BleGapCallbackParam; 382 383 /// Features supported by the controller. 384 /// BLUETOOTH SPECIFICATION Version 5.0 | Vol 6, Part B - 4.6 385 typedef enum { 386 LE_ENCRYPTION = 0, 387 CONNECTION_PARAMETERS_REQUEST_PROCEDURE, 388 EXTENDED_REJECT_INDICATION, 389 SLAVE_INITIATED_FEATURES_EXCHANGE, 390 LE_PING, 391 LE_DATA_PACKET_LENGTH_EXTENSION, 392 LL_PRIVACY, 393 EXTENDED_SCANNER_FILTER_POLICIES, 394 LE_2M_PHY, 395 STABLE_MODULATION_INDEX_TRANSMITTER, 396 STABLE_MODULATION_INDEX_RECEIVER, 397 LE_CODED_PHY, 398 LE_EXTENDED_ADVERTISING, 399 LE_PERIODIC_ADVERTISING, 400 CHANNEL_SELECTION_ALGORITHM_2, 401 LE_POWER_CLASS 402 } FEATURE_SUPPORTED; 403 404 /// Ble scan type 405 typedef enum { 406 BLE_SCAN_TYPE_PASSIVE = 0x00, /// Passive scan 407 BLE_SCAN_TYPE_ACTIVE = 0x01, /// Active scan 408 } BLE_SCAN_TYPE; 409 410 /// Ble scan mode 411 typedef enum { 412 BLE_SCAN_MODE_NON_DISC = 0x00, /// Non Discoverable 413 BLE_SCAN_MODE_GENERAL = 0x01, /// General 414 BLE_SCAN_MODE_LIMITED = 0x02, /// Limited 415 BLE_SCAN_MODE_ALL = 0x03, /// ALL 416 } BLE_SCAN_MODE; 417 418 /// Ble scan filter type 419 typedef enum { 420 BLE_SCAN_FILTER_ALLOW_ALL = 0x00, /// Accept all : 421 /// 1. advertisement packets except directed advertising packets not addressed to this device (default). 422 BLE_SCAN_FILTER_ALLOW_ONLY_WLST = 0x01, /// Accept only : 423 /// 1. advertisement packets from devices where the advertiser’s address is in the WH list. 424 /// 2. Directed advertising packets which are not addressed for this device shall be ignored. 425 BLE_SCAN_FILTER_ALLOW_UND_RPA_DIR = 0x02, /// Accept all : 426 /// 1. undirected advertisement packets, and 427 /// 2. directed advertising packets where the initiator address is a resolvable private address, and 428 /// 3. directed advertising packets addressed to this device. 429 BLE_SCAN_FILTER_ALLOW_WLIST_PRA_DIR = 0x03, /// Accept all : 430 /// 1. advertisement packets from devices where the advertiser’s address is in the WH list, and 431 /// 2. directed advertising packets where the initiator address is a resolvable private address, and 432 /// 3. directed advertising packets addressed to this device. 433 } BLE_SCAN_FILTER; 434 435 /// Ble scan duplicate type 436 typedef enum { 437 BLE_SCAN_DUPLICATE_DISABLE = 438 0x00, /// the Link Layer should generate advertising reports to the host for each packet received 439 BLE_SCAN_DUPLICATE_ENABLE = 0x01, /// the Link Layer should filter out duplicate advertising reports to the Host 440 BLE_SCAN_DUPLICATE_MAX = 0x02, /// 0x02 – 0xFF, Reserved for future use 441 } BLE_SCAN_DUPLICATE; 442 443 /// Ble scan parameters 444 typedef struct { 445 BLE_SCAN_TYPE scanType; /// Scan type 446 BLE_ADDR_TYPE ownAddrType; /// Owner address type 447 BLE_SCAN_FILTER scanFilterPolicy; /// Scan filter policy 448 uint16_t scanInterval; /// Scan interval. This is defined as the time interval from 449 /// when the Controller started its last LE scan until it begins the subsequent LE scan. 450 /// Range: 0x0004 to 0x4000 Default: 0x0010 (10 ms) 451 /// Time = N * 0.625 msec 452 /// Time Range: 2.5 msec to 10.24 seconds 453 uint16_t scanWindow; /// Scan window. The duration of the LE scan. LE_Scan_Window 454 /// shall be less than or equal to LE_Scan_Interval 455 /// Range: 0x0004 to 0x4000 Default: 0x0010 (10 ms) 456 /// Time = N * 0.625 msec 457 /// Time Range: 2.5 msec to 10240 msec 458 BLE_SCAN_DUPLICATE scanDuplicate; /// The Scan_Duplicates parameter controls whether the Link Layer should filter 459 /// out duplicate advertising reports (BLE_SCAN_DUPLICATE_ENABLE) to the Host, 460 /// or if the Link Layer should generate advertising reports for each packet received 461 } BleScanParams; 462 463 typedef enum { 464 ADV_FILTER_ALLOW_SCAN_ANY_CON_ANY = 0x00, /// Allow both scan and connection requests from anyone 465 ADV_FILTER_ALLOW_SCAN_WLST_CON_ANY, /// Allow both scan req from WH List devices and connection req fro anyone 466 ADV_FILTER_ALLOW_SCAN_ANY_CON_WLST, /// Allow both scan req from anyone and connection req from WH List devices 467 ADV_FILTER_ALLOW_SCAN_WLST_CON_WLST, /// Allow scan and connection requests from WH List devices 468 } BLE_ADV_FILTER; 469 470 /// Advertising channel mask 471 typedef enum { 472 ADV_CHNL_37 = 0x01, 473 ADV_CHNL_38 = 0x02, 474 ADV_CHNL_39 = 0x04, 475 ADV_CHNL_ALL = 0x07, 476 } BLE_ADV_CHANNEL; 477 478 /// Advertising mode 479 typedef enum { 480 ADV_TYPE_IND = 0x00, 481 ADV_TYPE_DIRECT_IND_HIGH = 0x01, 482 ADV_TYPE_SCAN_IND = 0x02, 483 ADV_TYPE_NONCONN_IND = 0x03, 484 ADV_TYPE_DIRECT_IND_LOW = 0x04, 485 } BLE_ADV_TYPE; 486 487 /// Scan Event Type 488 typedef enum { 489 SCAN_ADV_IND = 0x00, 490 SCAN_ADV_DIRECT_IND = 0x01, 491 SCAN_ADV_SCAN_IND = 0x02, 492 SCAN_ADV_NONCONN_IND = 0x03, 493 SCAN_SCAN_RSP = 0x04, 494 } BLE_SCAN_EVENT_TYPE; 495 496 /// Advertising parameters 497 typedef struct { 498 uint16_t advMinInterval; /// Minimum advertising interval for 499 /// undirected and low duty cycle directed advertising. 500 /// Range: 0x0020 to 0x4000 Default: N = 0x0800 (1.28 second) 501 /// ime = N * 0.625 msec Time Range: 20 ms to 10.24 sec 502 uint16_t advMaxInterval; /// Maximum advertising interval for 503 /// undirected and low duty cycle directed advertising. 504 /// Range: 0x0020 to 0x4000 Default: N = 0x0800 (1.28 second) 505 /// Time = N * 0.625 msec Time Range: 20 ms to 10.24 sec Advertising max interval 506 BLE_ADV_TYPE advType; /// Advertising type 507 BLE_ADDR_TYPE ownAddrType; /// Owner bluetooth device address type 508 BtAddr peerAddr; /// Peer device bluetooth device address 509 BLE_ADDR_TYPE peerAddrType; /// Peer device bluetooth device address type 510 BLE_ADV_CHANNEL channelMap; /// Advertising channel map 511 BLE_ADV_FILTER advFilterPolicy; /// Advertising filter policy 512 } BleAdvParams; 513 } // namespace bluetooth 514 } // namespace OHOS 515 #endif 516