1 /* 2 * Copyright (C) 2021 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 HCI_DEF_LE_EVT_H 17 #define HCI_DEF_LE_EVT_H 18 19 #include <stdint.h> 20 21 #include "hci_def_common.h" 22 23 #ifdef __cplusplus 24 extern "C" { 25 #endif 26 27 #pragma pack(1) 28 29 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E 30 // 7.7.65.1 LE Connection Complete Event 31 #define HCI_LE_CONNECTION_COMPLETE_EVENT 0x01 32 33 #define HCI_PEER_ADDR_TYPE_PUBLIC 0x00 34 #define HCI_PEER_ADDR_TYPE_RANDOM 0x01 35 36 typedef struct { 37 uint8_t status; 38 uint16_t connectionHandle; 39 uint8_t role; 40 uint8_t peerAddressType; 41 HciBdAddr peerAddress; 42 uint16_t connInterval; 43 uint16_t connLatency; 44 uint16_t supervisionTimeout; 45 uint8_t masterClockAccuracy; 46 } HciLeConnectionCompleteEventParam; 47 48 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E 49 // 7.7.65.2 LE Advertising Report Event 50 #define HCI_LE_ADVERTISING_REPORT_EVENT 0x02 51 52 typedef struct { 53 uint8_t eventType; 54 uint8_t addressType; 55 HciBdAddr address; 56 uint8_t lengthData; 57 uint8_t *data; 58 uint8_t rssi; 59 } HciLeAdvertisingReport; 60 61 typedef struct { 62 uint8_t numReports; 63 HciLeAdvertisingReport *reports; 64 } HciLeAdvertisingReportEventParam; 65 66 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E 67 // 7.7.65.3 LE Connection Update Complete Event 68 #define HCI_LE_CONNECTION_UPDATE_COMPLETE_EVENT 0x03 69 70 typedef struct { 71 uint8_t status; 72 uint16_t connectionHandle; 73 uint16_t connInterval; 74 uint16_t connLatency; 75 uint16_t supervisionTimeout; 76 } HciLeConnectionUpdateCompleteEventParam; 77 78 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E 79 // 7.7.65.4 LE Read Remote Features Complete Event 80 #define HCI_LE_READ_REMOTE_FEATURES_COMPLETE_EVENT 0x04 81 82 typedef struct { 83 uint8_t status; 84 uint16_t connectionHandle; 85 HciLeFeatures leFeatures; 86 } HciLeReadRemoteFeaturesCompleteEventParam; 87 88 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E 89 // 7.7.65.5 LE Long Term Key Request Event 90 #define HCI_LE_LONG_TERM_KEYREQUEST_EVENT 0x05 91 92 typedef struct { 93 uint16_t connectionHandle; 94 uint8_t randomNumber[8]; 95 uint16_t encryptedDiversifier; 96 } HciLeLongTermKeyRequestEventParam; 97 98 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E 99 // 7.7.65.6 LE Remote Connection Parameter Request Event 100 #define HCI_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_EVENT 0x06 101 102 typedef struct { 103 uint16_t connectionHandle; 104 uint16_t intervalMin; 105 uint16_t IntervalMax; 106 uint16_t latency; 107 uint16_t timeout; 108 } HciLeRemoteConnectionParameterRequestEventParam; 109 110 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E 111 // 7.7.65.7 LE Data Length Change Event 112 #define HCI_LE_DATA_LENGTH_CHANGE_EVENT 0x07 113 114 typedef struct { 115 uint8_t subeventCode; 116 uint16_t connectionHandle; 117 uint16_t maxTxOctets; 118 uint16_t maxTxTime; 119 uint16_t maxRxOctets; 120 uint16_t maxRxTime; 121 } HciLeDataLengthChangeEventParam; 122 123 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E 124 // 7.7.65.8 LE Read Local P-256 Public Key Complete Event 125 #define HCI_LE_READ_LOCAL_P256_PUBLIC_KEY_COMPLETE_EVENT 0x08 126 127 typedef struct { 128 uint8_t status; 129 uint8_t localP256PublicKey[64]; 130 } HciLeReadLocalP256PublicKeyCompleteEventParam; 131 132 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E 133 // 7.7.65.9 LE Generate DHKey Complete Event 134 #define HCI_LE_GENERATE_DHKEY_COMPLETE_EVENT 0x09 135 136 typedef struct { 137 uint8_t status; 138 uint8_t DHKey[32]; 139 } HciLeGenerateDHKeyCompleteEventParam; 140 141 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E 142 // 7.7.65.10 LE Enhanced Connection Complete Event 143 #define HCI_LE_ENHANCED_CONNECTION_COMPLETE_EVENT 0x0A 144 145 typedef struct { 146 uint8_t status; 147 uint16_t connectionHandle; 148 uint8_t role; 149 uint8_t peerAddressType; 150 HciBdAddr peerAddress; 151 HciBdAddr localResolvablePrivateAddress; 152 HciBdAddr peerResolvablePrivateAddress; 153 uint16_t connInterval; 154 uint16_t connLatency; 155 uint16_t supervisionTimeout; 156 uint8_t masterClockAccuracy; 157 } HciLeEnhancedConnectionCompleteEventParam; 158 159 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E 160 // 7.7.65.11 LE Directed Advertising Report Event 161 #define HCI_LE_DIRECTED_ADVERTISING_REPORT_EVENT 0x0B 162 163 typedef struct { 164 uint8_t eventType; 165 uint8_t addressType; 166 HciBdAddr address; 167 uint8_t directAddressType; 168 HciBdAddr directAddress; 169 uint8_t rssi; 170 } HciLeDirectedAdvertisingReport; 171 172 typedef struct { 173 uint8_t numReports; 174 HciLeDirectedAdvertisingReport *reports; 175 } HciLeDirectedAdvertisingReportEventParam; 176 177 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E 178 // 7.7.65.12 LE PHY Update Complete Event 179 #define HCI_LE_PHY_UPDATE_COMPLETE_EVENT 0x0C 180 181 typedef struct { 182 uint8_t status; 183 uint16_t connectionHandle; 184 uint8_t txPhy; 185 uint8_t rxPhy; 186 } HciLePhyUpdateCompleteEventParam; 187 188 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E 189 // 7.7.65.13 LE Extended Advertising Report Event 190 #define HCI_LE_EXTENDED_ADVERTISING_REPORT_EVENT 0x0D 191 192 #define HCI_PDU_TYPE_ADV_IND 4105 193 #define HCI_PDU_TYPE_ADV_DIRECT_IND 4161 194 #define HCI_PDU_TYPE_ADV_SCAN_IND 4104 195 #define HCI_PDU_TYPE_ADV_NONCONN_IND 4096 196 #define HCI_PDU_TYPE_SCAN_RSP_TO_AN_ADV_IND 4617 197 #define HCI_PDU_TYPE_SCAN_RSP_TO_AN_ADV_SCAN_IND 4616 198 199 typedef struct { 200 uint16_t eventType; 201 uint8_t addressType; 202 HciBdAddr address; 203 uint8_t primaryPHY; 204 uint8_t secondaryPHY; 205 uint8_t advertisingSID; 206 uint8_t txPower; 207 uint8_t rssi; 208 uint16_t periodicAdvertisingInterval; 209 uint8_t directAddressType; 210 HciBdAddr directAddress; 211 uint8_t dataLength; 212 uint8_t *data; 213 } HciLeExtendedAdvertisingReport; 214 215 typedef struct { 216 uint8_t numReports; 217 HciLeExtendedAdvertisingReport *reports; 218 } HciLeExtendedAdvertisingReportEventParam; 219 220 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E 221 // 7.7.65.14 LE Periodic Advertising Sync Established Event 222 #define HCI_LE_PERIODIC_ADVERTISING_SYNC_ESTABLISHED_EVENT 0x0E 223 224 typedef struct { 225 uint8_t status; 226 uint8_t advertisingHandle; 227 uint16_t connectionHandle; 228 uint8_t numCompletedExtendedAdvertisingEvents; 229 } HciLePeriodicAdvertisingSyncEstablishedEventParam; 230 231 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E 232 // 7.7.65.15 LE Periodic Advertising Report Event 233 #define HCI_LE_PERIODIC_ADVERTISING_REPORT_EVENT 0x0F 234 235 typedef struct { 236 uint8_t subeventCode; 237 uint16_t syncHandle; 238 uint8_t txPower; 239 uint8_t rssi; 240 uint8_t unused; 241 uint8_t dataStatus; 242 uint8_t dataLength; 243 uint8_t *data; 244 } HciLePeriodicAdvertisingReportEventParam; 245 246 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E 247 // 7.7.65.16 LE Periodic Advertising Sync Lost Event 248 #define HCI_LE_PERIODIC_ADVERTISING_SYNC_LOST_EVENT 0x10 249 250 typedef struct { 251 uint8_t subeventCode; 252 uint16_t syncHandle; 253 } HciLePeriodicAdvertisingSyncLostEventParam; 254 255 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E 256 // 7.7.65.17 LE Scan Timeout Event 257 #define HCI_LE_SCAN_TIMEOUT_EVENT 0x11 258 259 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E 260 // 7.7.65.18 LE Advertising Set Terminated Event 261 #define HCI_LE_ADVERTISING_SET_TERMINATED_EVENT 0x12 262 263 typedef struct { 264 uint8_t status; 265 uint8_t advertisingHandle; 266 uint16_t connectionHandle; 267 uint8_t numCompletedExtendedAdvertisingEvents; 268 } HciLeAdvertisingSetTerminatedEventParam; 269 270 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E 271 // 7.7.65.19 LE Scan Request Received Event 272 #define HCI_LE_SCAN_REQUEST_RECEIVED_EVENT 0x13 273 274 typedef struct { 275 uint8_t advertisingHandle; 276 uint8_t scannerAddressType; 277 HciBdAddr scannerAddress; 278 } HciLeScanRequestReceivedEventParam; 279 280 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E 281 // 7.7.65.20 LE Channel Selection Algorithm Event 282 #define HCI_LE_CHANNEL_SELECTION_ALGORITHM_EVENT 0x14 283 284 typedef struct { 285 uint16_t connectionHandle; 286 uint8_t ChannelSelectionAlgorithm; 287 } HciLeChannelSelectionAlgorithmEventParam; 288 289 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E 290 // 7.7.75 Authenticated Payload Timeout Expired Event 291 #define HCI_AUTHENTICATED_PAYLOAD_TIMEOUT_EXPIRED_EVENT 0x57 292 293 typedef struct { 294 uint16_t connectionHandle; 295 } HciAuthenticatedPayloadTimeoutExpiredEventParam; 296 297 #pragma pack(0) 298 299 #ifdef __cplusplus 300 } 301 #endif 302 303 #endif