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_CONTROLLER_BASEBAND_CMD_H
17 #define HCI_DEF_CONTROLLER_BASEBAND_CMD_H
18 
19 #include <stdint.h>
20 
21 #include "hci_def_cmd_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.3 CONTROLLER & BASEBAND COMMANDS
31 #define HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND 0x03
32 
33 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
34 // 7.3.1 Set Event Mask Command
35 #define HCI_SET_EVENT_MASK MAKE_OPCODE(0x0001, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
36 
37 #define HCI_EVENT_MASK_DEFAULT 0x00001FFFFFFFFFFF
38 #define HCI_EVENT_MASK_SNIFF_SUBRATING_EVENT 0x0000200000000000
39 #define HCI_EVENT_MASK_EXTENDED_INQUIRY_RESULT_EVENT 0x0000400000000000
40 #define HCI_EVENT_MASK_ENCRYPTION_KEY_REFRESH_COMPLETE_EVENT 0x0000800000000000
41 #define HCI_EVENT_MASK_IO_CAPABILITY_REQUEST_EVENT 0x0001000000000000
42 #define HCI_EVENT_MASK_IO_CAPABILITY_RESPONSE_EVENT 0x0002000000000000
43 #define HCI_EVENT_MASK_USER_CONFIRMATION_REQUEST_EVENT 0x0004000000000000
44 #define HCI_EVENT_MASK_USER_PASSKEY_REQUEST_EVENT 0x0008000000000000
45 #define HCI_EVENT_MASK_REMOTE_OOB_DATA_REQUEST_EVENT 0x0010000000000000
46 #define HCI_EVENT_MASK_SIMPLE_PAIRING_COMPLETE_EVENT 0x0020000000000000
47 #define HCI_EVENT_MASK_LINK_SUPERVISION_TIMEOUT_CHANGED_EVENT 0x0080000000000000
48 #define HCI_EVENT_MASK_ENHANCED_FLUSH_COMPLETE_EVENT 0x0100000000000000
49 #define HCI_EVENT_MASK_USER_PASSKEY_NOTIFICATION_EVENT 0x0400000000000000
50 #define HCI_EVENT_MASK_KEYPRESS_NOTIFICATION_EVENT 0x0800000000000000
51 #define HCI_EVENT_MASK_REMOTE_HOST_SUPPORTED_FEATURES_NOTIFICATION 0x1000000000000000
52 #define HCI_EVENT_MASK_LE_META_EVENT 0x2000000000000000
53 
54 #define HCI_EVENT_MASK_CORE_5_0                                                                                     \
55     (HCI_EVENT_MASK_DEFAULT | HCI_EVENT_MASK_SNIFF_SUBRATING_EVENT | HCI_EVENT_MASK_EXTENDED_INQUIRY_RESULT_EVENT | \
56         HCI_EVENT_MASK_ENCRYPTION_KEY_REFRESH_COMPLETE_EVENT | HCI_EVENT_MASK_IO_CAPABILITY_REQUEST_EVENT |         \
57         HCI_EVENT_MASK_IO_CAPABILITY_RESPONSE_EVENT | HCI_EVENT_MASK_USER_CONFIRMATION_REQUEST_EVENT |              \
58         HCI_EVENT_MASK_USER_PASSKEY_REQUEST_EVENT | HCI_EVENT_MASK_REMOTE_OOB_DATA_REQUEST_EVENT |                  \
59         HCI_EVENT_MASK_SIMPLE_PAIRING_COMPLETE_EVENT | HCI_EVENT_MASK_LINK_SUPERVISION_TIMEOUT_CHANGED_EVENT |      \
60         HCI_EVENT_MASK_ENHANCED_FLUSH_COMPLETE_EVENT | HCI_EVENT_MASK_USER_PASSKEY_NOTIFICATION_EVENT |             \
61         HCI_EVENT_MASK_KEYPRESS_NOTIFICATION_EVENT | HCI_EVENT_MASK_REMOTE_HOST_SUPPORTED_FEATURES_NOTIFICATION |   \
62         HCI_EVENT_MASK_LE_META_EVENT)
63 
64 typedef struct {
65     uint64_t eventMask;
66 } HciSetEventMaskParam;
67 
68 typedef HciStatusParam HciSetEventMaskReturnParam;
69 
70 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
71 // 7.3.2 Reset Command
72 #define HCI_RESET MAKE_OPCODE(0x0003, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
73 
74 typedef HciStatusParam HciResetReturnParam;
75 
76 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
77 // 7.3.3 Set Event Filter Command
78 #define HCI_SET_EVENT_FILTER MAKE_OPCODE(0x0005, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
79 
80 typedef struct {
81     uint8_t filterType;
82     uint8_t filterConditionType;
83     uint8_t condition;
84 } HciSetEventFilterParam;
85 
86 typedef HciStatusParam HciSetEventFilterReturnParam;
87 
88 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
89 // 7.3.4 Flush Command
90 #define HCI_FLUSH MAKE_OPCODE(0x0008, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
91 
92 typedef struct {
93     uint16_t connectionHandle;
94 } HciFlushParam;
95 
96 typedef struct {
97     uint8_t status;
98     uint16_t connectionHandle;
99 } HciFlushReturnParam;
100 
101 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
102 // 7.3.5 Read PIN Type Command
103 #define HCI_READ_PIN_TYPE MAKE_OPCODE(0x0009, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
104 
105 typedef struct {
106     uint8_t status;
107     uint8_t pinType;
108 } HciReadPinTypeReturnParam;
109 
110 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
111 // 7.3.6 Write PIN Type Command
112 #define HCI_WRITE_PIN_TYPE MAKE_OPCODE(0x000A, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
113 
114 typedef struct {
115     uint8_t pinType;
116 } HciWritePinTypeParam;
117 
118 typedef HciStatusParam HciWritePinTypeReturnParam;
119 
120 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
121 // 7.3.7 Create New Unit Key Command
122 #define HCI_CREATE_NEW_UNIT_KEY MAKE_OPCODE(0x000B, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
123 
124 typedef HciStatusParam HciCreateNewUnitKeyReturnParam;
125 
126 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
127 // 7.3.8 Read Stored Link Key Command
128 #define HCI_READ_STORED_LINK_KEY MAKE_OPCODE(0x000D, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
129 
130 typedef struct {
131     HciBdAddr bdAddr;
132     uint8_t readAllFlag;
133 } HciReadStoredLinkKeyParam;
134 
135 typedef struct {
136     uint8_t status;
137     uint16_t maxNumKeys;
138     uint16_t numKeysRead;
139 } HciReadStoredLinkKeyReturnParam;
140 
141 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
142 // 7.3.9 Write Stored Link Key Command
143 #define HCI_WRITE_STORED_LINK_KEY MAKE_OPCODE(0x0011, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
144 
145 #define BD_ADDR_SIZE 1
146 
147 #define LINK_KEY_SIZE 16
148 
149 typedef struct {
150     uint8_t numKeysToWrite;
151     HciBdAddr *bdAddr;
152     uint8_t *linkKey;
153 } HciWriteStoredLinkKeyParam;
154 
155 typedef struct {
156     uint8_t status;
157     uint8_t numKeysWritten;
158 } HciWriteStoredLinkKeyReturnParam;
159 
160 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
161 // 7.3.10 Delete Stored Link Key Command
162 #define HCI_DELETE_STORED_LINK_KEY MAKE_OPCODE(0x0012, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
163 
164 typedef struct {
165     HciBdAddr bdAddr;
166     uint8_t deleteAllFlag;
167 } HciDeleteStoredLinkKeyParam;
168 
169 typedef struct {
170     uint8_t status;
171     uint16_t numKeysDeleted;
172 } HciDeleteStoredLinkKeyReturnParam;
173 
174 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
175 // 7.3.11 Write Local Name Command
176 #define HCI_WRITE_LOCAL_NAME MAKE_OPCODE(0x0013, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
177 
178 typedef struct {
179     uint8_t localName[248];
180 } HciWriteLocalNameParam;
181 
182 typedef HciStatusParam HciWriteLocalNameReturnParam;
183 
184 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
185 // 7.3.12 Read Local Name Command
186 #define HCI_READ_LOCAL_NAME MAKE_OPCODE(0x0014, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
187 
188 typedef struct {
189     uint8_t status;
190     uint8_t localName[248];
191 } HciReadLocalNameReturnParam;
192 
193 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
194 // 7.3.13 Read Connection Accept Timeout Command
195 #define HCI_READ_CONNECTION_ACCEPT_TIMEOUT MAKE_OPCODE(0x0015, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
196 
197 typedef struct {
198     uint8_t status;
199     uint16_t connAcceptTimeout;
200 } HciReadConnectionAcceptTimeoutReturnParam;
201 
202 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
203 // 7.3.14 Write Connection Accept Timeout Command
204 #define HCI_WRITE_CONNECTION_ACCEPT_TIMEOUT MAKE_OPCODE(0x0016, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
205 
206 typedef struct {
207     uint8_t connAcceptTimeout;
208 } HciWriteConnectionAcceptTimeoutParam;
209 
210 typedef HciStatusParam HciWriteConnectionAcceptTimeoutReturnParam;
211 
212 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
213 // 7.3.15 Read Page Timeout Command
214 #define HCI_READ_PAGE_TIMEOUT MAKE_OPCODE(0x0017, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
215 
216 typedef struct {
217     uint8_t status;
218     uint16_t pageTimeout;
219 } HciReadPageTimeoutReturnParam;
220 
221 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
222 // 7.3.16 Write Page Timeout Command
223 #define HCI_WRITE_PAGE_TIMEOUT MAKE_OPCODE(0x0018, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
224 
225 typedef struct {
226     uint8_t pageTimeout;
227 } HciWritePageTimeoutParam;
228 
229 typedef HciStatusParam HciWritePageTimeoutReturnParam;
230 
231 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
232 // 7.3.17 Read Scan Enable Command
233 #define HCI_READ_SCAN_ENABLE MAKE_OPCODE(0x0019, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
234 
235 typedef struct {
236     uint8_t status;
237     uint8_t scanEnable;
238 } HciReadScanEnableReturnParam;
239 
240 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
241 // 7.3.18 Write Scan Enable Command
242 #define HCI_WRITE_SCAN_ENABLE MAKE_OPCODE(0x001A, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
243 
244 typedef struct {
245     uint8_t scanEnable;
246 } HciWriteScanEnableParam;
247 
248 typedef HciStatusParam HciWriteScanEnableReturnParam;
249 
250 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
251 // 7.3.19 Read Page Scan Activity Command
252 #define HCI_READ_PAGE_SCAN_ACTIVITY MAKE_OPCODE(0x001B, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
253 
254 typedef struct {
255     uint8_t status;
256     uint16_t pageScanInterval;
257     uint16_t pageScanWindow;
258 } HciReadPageScanActivityReturnParam;
259 
260 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
261 // 7.3.20 Write Page Scan Activity Command
262 #define HCI_WRITE_PAGE_SCAN_ACTIVITY MAKE_OPCODE(0x001C, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
263 
264 typedef struct {
265     uint16_t pageScanInterval;
266     uint16_t pageScanWindow;
267 } HciWritePageScanActivityParam;
268 
269 typedef HciStatusParam HciWritePageScanActivityReturnParam;
270 
271 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
272 // 7.3.21 Read Inquiry Scan Activity Command
273 #define HCI_READ_INQUIRY_SCAN_ACTIVITY MAKE_OPCODE(0x001D, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
274 
275 typedef struct {
276     uint8_t status;
277     uint16_t inquiryScanInterval;
278     uint16_t inquiryScanWindow;
279 } HciReadInquiryScanActivityReturnParam;
280 
281 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
282 // 7.3.22 Write Inquiry Scan Activity Command
283 #define HCI_WRITE_INQUIRY_SCAN_ACTIVITY MAKE_OPCODE(0x001E, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
284 
285 typedef struct {
286     uint16_t inquiryScanInterval;
287     uint16_t inquiryScanWindow;
288 } HciWriteInquiryScanActivityParam;
289 
290 typedef HciStatusParam HciWriteInquiryScanActivityReturnParam;
291 
292 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
293 // 7.3.23 Read Authentication Enable Command
294 #define HCI_READ_AUTHENTICATION_ENABLE MAKE_OPCODE(0x001F, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
295 
296 typedef struct {
297     uint8_t status;
298     uint8_t authenticationEnable;
299 } HciReadAuthenticationEnableReturnParam;
300 
301 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
302 // 7.3.24 Write Authentication Enable Command
303 #define HCI_WRITE_AUTHENTICATION_ENABLE MAKE_OPCODE(0x0020, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
304 
305 typedef struct {
306     uint8_t authenticationEnable;
307 } HciWriteAuthenticationEnableParam;
308 
309 typedef HciStatusParam HciWriteAuthenticationEnableReturnParam;
310 
311 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
312 // 7.3.25 Read Class of Device Command
313 #define HCI_READ_CLASS_OF_DEVICE MAKE_OPCODE(0x0023, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
314 
315 typedef struct {
316     uint8_t status;
317     uint8_t classofDevice[3];
318 } HciReadClassofDeviceReturnParam;
319 
320 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
321 // 7.3.26 Write Class of Device Command
322 #define HCI_WRITE_CLASS_OF_DEVICE MAKE_OPCODE(0x0024, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
323 
324 typedef struct {
325     uint8_t classofDevice[3];
326 } HciWriteClassofDeviceParam;
327 
328 typedef HciStatusParam HciWriteClassofDeviceReturnParam;
329 
330 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
331 // 7.3.27 Read Voice Setting Command
332 #define HCI_READ_VOICE_SETTING MAKE_OPCODE(0x0025, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
333 
334 typedef struct {
335     uint8_t status;
336     uint16_t voiceSetting;
337 } HciReadVoiceSettingReturnParam;
338 
339 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
340 // 7.3.28 Write Voice Setting Command
341 #define HCI_WRITE_VOICE_SETTING MAKE_OPCODE(0x0026, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
342 
343 typedef struct {
344     uint16_t voiceSetting;
345 } HciWriteVoiceSettingParam;
346 
347 typedef HciStatusParam HciWriteVoiceSettingParamReturnParam;
348 
349 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
350 // 6.12 VOICE SETTING
351 #define HCI_VOICE_SETTING_AIR_CODING_FORMAT_CVSD 0x0000
352 #define HCI_VOICE_SETTING_AIR_CODING_FORMAT_ULAW 0x0001
353 #define HCI_VOICE_SETTING_AIR_CODING_FORMAT_ALAW 0x0002
354 #define HCI_VOICE_SETTING_AIR_CODING_FORMAT_TRANSPARENT_DATA 0x0003
355 #define HCI_VOICE_SETTING_INPUT_SAMPLE_SIZE_8_BIT 0x0000
356 #define HCI_VOICE_SETTING_INPUT_SAMPLE_SIZE_16_BIT 0x0020
357 #define HCI_VOICE_SETTING_INPUT_DATA_FORMAT_1S_COMPLEMENT 0x0000
358 #define HCI_VOICE_SETTING_INPUT_DATA_FORMAT_2S_COMPLEMENT 0x0040
359 #define HCI_VOICE_SETTING_INPUT_DATA_FORMAT_SIGN_MAGNITUDE 0x0080
360 #define HCI_VOICE_SETTING_INPUT_DATA_FORMAT_UNSIGNED 0x00C0
361 #define HCI_VOICE_SETTING_INPUT_CODING_LINEAR 0x0000
362 #define HCI_VOICE_SETTING_INPUT_CODING_ULAW 0x0100
363 #define HCI_VOICE_SETTING_INPUT_CODING_ALAW 0x0200
364 
365 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
366 // 7.3.29 Read Automatic Flush Timeout Command
367 #define HCI_READ_AUTOMATIC_FLUSH_TIMEOUT MAKE_OPCODE(0x0027, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
368 
369 typedef struct {
370     uint16_t connectionHandle;
371 } HciReadAutomaticFlushTimeoutParam;
372 
373 typedef struct {
374     uint8_t status;
375     uint16_t connectionHandle;
376     uint16_t flushTimeout;
377 } HciReadAutomaticFlushTimeoutReturnParam;
378 
379 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
380 // 7.3.30 Write Automatic Flush Timeout Command
381 #define HCI_WRITE_AUTOMATIC_FLUSH_TIMEOUT MAKE_OPCODE(0x0028, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
382 
383 typedef struct {
384     uint16_t connectionHandle;
385     uint16_t flushTimeout;
386 } HciWriteAutomaticFlushTimeoutParam;
387 
388 typedef struct {
389     uint8_t status;
390     uint16_t connectionHandle;
391 } HciWriteAutomaticFlushTimeoutReturnParam;
392 
393 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
394 // 7.3.31 Read Num Broadcast Retransmissions Command
395 #define HCI_READ_NUM_BROADCAST_RETRANSMISSIONS MAKE_OPCODE(0x0029, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
396 
397 typedef struct {
398     uint8_t status;
399     uint8_t numBroadcastRetransmissions;
400 } HciReadNumBroadcastRetransmissionsReturnParam;
401 
402 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
403 // 7.3.32 Write Num Broadcast Retransmissions Command
404 #define HCI_WRITE_NUM_BROADCAST_RETRANSMISSIONS MAKE_OPCODE(0x002A, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
405 
406 typedef struct {
407     uint8_t numBroadcastRetransmissions;
408 } HciWriteNumBroadcastRetransmissionsParam;
409 
410 typedef HciStatusParam HciWriteNumBroadcastRetransmissionsReturnParam;
411 
412 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
413 // 7.3.33 Read Hold Mode Activity Command
414 #define HCI_READ_HOLD_MODE_ACTIVITY MAKE_OPCODE(0x002B, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
415 
416 typedef struct {
417     uint8_t status;
418     uint8_t holdModeActivity;
419 } HciReadHoldModeActivityReturnParam;
420 
421 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
422 // 7.3.34 Write Hold Mode Activity Command
423 #define HCI_WRITE_HOLD_MODE_ACTIVITY MAKE_OPCODE(0x002C, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
424 
425 typedef struct {
426     uint8_t holdModeActivity;
427 } HciWriteHoldModeActivityParam;
428 
429 typedef HciStatusParam HciWriteHoldModeActivityReturnParam;
430 
431 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
432 // 7.3.35 Read Transmit Power Level Command
433 #define HCI_READ_TRANSMIT_POWER_LEVEL MAKE_OPCODE(0x002D, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
434 
435 typedef struct {
436     uint16_t connectionHandle;
437     uint8_t type;
438 } HciReadTransmitPowerLevelParam;
439 
440 typedef struct {
441     uint8_t status;
442     uint16_t connectionHandle;
443     uint8_t transmitPowerLevel;
444 } HciReadTransmitPowerLevelReturnParam;
445 
446 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
447 // 7.3.36 Read Synchronous Flow Control Enable Command
448 #define HCI_READ_SYNCHRONOUS_FLOW_CONTROL_ENABLE MAKE_OPCODE(0x002E, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
449 
450 typedef struct {
451     uint8_t status;
452     uint8_t synchronousFlowControlEnable;
453 } HciReadSynchronousFlowControlEnableReturnParam;
454 
455 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
456 // 7.3.37 Write Synchronous Flow Control Enable Command
457 #define HCI_WRITE_SYNCHRONOUS_FLOW_CONTROL_ENABLE MAKE_OPCODE(0x002F, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
458 
459 typedef struct {
460     uint8_t synchronousFlowControlEnable;
461 } HciWriteSynchronousFlowControlEnableParam;
462 
463 typedef HciStatusParam HciWriteSynchronousFlowControlEnableReturnParam;
464 
465 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
466 // 7.3.38 Set Controller To Host Flow Control Command
467 #define HCI_SET_CONTROLLER_TO_HOST_FLOW_CONTROL MAKE_OPCODE(0x0031, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
468 
469 typedef struct {
470     uint8_t flowControlEnable;
471 } HciSetControllerToHostFlowControlParam;
472 
473 typedef HciStatusParam HciSetControllerToHostFlowControlReturnParam;
474 
475 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
476 // 7.3.39 Host Buffer Size Command
477 #define HCI_HOST_BURRER_SIZE MAKE_OPCODE(0x0033, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
478 
479 typedef struct {
480     uint16_t hostAclDataPacketLength;
481     uint8_t hostSynchronousDataPacketLength;
482     uint16_t hostTotalNumAclDataPackets;
483     uint16_t hostTotalNumSynchronousDataPackets;
484 } HciHostBufferSizeCmdParam;
485 
486 typedef HciStatusParam HciHostBufferSizeReturnParam;
487 
488 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
489 // 7.3.40 Host Number Of Completed Packets Command
490 #define HCI_HOST_NUMBER_OF_COMPLETED_PACKETS MAKE_OPCODE(0x0035, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
491 
492 typedef struct {
493     uint8_t numberOfHandles;
494     uint8_t *connectionHandle;
495     uint8_t *hostNumOfCompletedPackets;
496 } HciHostNumberOfCompletedPacketsParam;
497 
498 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
499 // 7.3.41 Read Link Supervision Timeout Command
500 #define HCI_READ_LINK_SUPERVISION_TIMEOUT MAKE_OPCODE(0x0036, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
501 
502 typedef struct {
503     uint16_t handle;
504 } HciReadLinkSupervisionTimeoutParam;
505 
506 typedef struct {
507     uint8_t status;
508     uint16_t handle;
509     uint16_t linkSupervisionTimeout;
510 } HciReadLinkSupervisionTimeoutReturnParam;
511 
512 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
513 // 7.3.42 Write Link Supervision Timeout Command
514 #define HCI_WRITE_LINK_SUPERVISION_TIMEOUT MAKE_OPCODE(0x0037, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
515 
516 typedef struct {
517     uint16_t handle;
518     uint16_t linkSupervisionTimeout;
519 } HciWriteLinkSupervisionTimeoutParam;
520 
521 typedef struct {
522     uint8_t status;
523     uint16_t handle;
524 } HciWriteLinkSupervisionTimeoutReturnParam;
525 
526 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
527 // 7.3.43 Read Number Of Supported IAC Command
528 #define HCI_READ_NUMBER_OF_SUPPORTED_IAC MAKE_OPCODE(0x0038, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
529 
530 typedef struct {
531     uint8_t status;
532     uint8_t numSupportIac;
533 } HciReadNumberOfSupportedIacReturnParam;
534 
535 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
536 // 7.3.44 Read Current IAC LAP Command
537 #define HCI_READ_CURRENT_IAC_LAP MAKE_OPCODE(0x0039, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
538 
539 typedef struct {
540     uint8_t status;
541     uint8_t numCurrentIAC;
542     uint32_t *iacLAP;
543 } HciReadCurrentIacLapReturnParam;
544 
545 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
546 // 7.3.45 Write Current IAC LAP Command
547 #define HCI_WRITE_CURRENT_IAC_LAP MAKE_OPCODE(0x003A, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
548 
549 #define IACLAP_SIZE 3
550 
551 typedef struct {
552     uint8_t numCurrentIAC;
553     uint32_t *iacLAP;
554 } HciWriteCurrentIacLapParam;
555 
556 typedef HciStatusParam HciWriteCurrentIacLapReturnParam;
557 
558 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
559 // 7.3.46 Set AFH Host Channel Classification Command
560 #define HCI_SET_AFH_HOST_CHANNEL_CLASSIFICATION MAKE_OPCODE(0x003F, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
561 
562 typedef struct {
563     uint8_t afhHostChannelClassification[10];
564 } HciSetAfhHostChannelClassificationParam;
565 
566 typedef HciStatusParam HciSetAfhHostChannelClassificationReturnParam;
567 
568 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
569 // 7.3.47 Read Inquiry Scan Type Command
570 #define HCI_READ_INQUIRY_SCAN_TYPE MAKE_OPCODE(0x0042, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
571 
572 typedef struct {
573     uint8_t status;
574     uint8_t inquiryScanType;
575 } HciReadInquiryScanTypeReturnParam;
576 
577 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
578 // 7.3.48 Write Inquiry Scan Type Command
579 #define HCI_WRITE_INQUIRY_SCAN_TYPE MAKE_OPCODE(0x0043, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
580 
581 typedef struct {
582     uint8_t scanType;
583 } HciWriteInquiryScanTypeParam;
584 
585 typedef HciStatusParam HciWriteInquiryScanTypeReturnParam;
586 
587 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
588 // 7.3.49 Read Inquiry Mode Command
589 #define HCI_READ_INQUIRY_MODE MAKE_OPCODE(0x0044, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
590 
591 typedef struct {
592     uint8_t status;
593     uint8_t inquiryMode;
594 } HciReadInquiryModeReturnParam;
595 
596 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
597 // 7.3.50 Write Inquiry Mode Command
598 #define HCI_WRITE_INQUIRY_MODE MAKE_OPCODE(0x0045, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
599 
600 #define HCI_INQUIRY_MODE_STANDARD 0x00
601 #define HCI_INQUIRY_MODE_RSSI 0x01
602 #define HCI_INQUIRY_MODE_EIR 0x02
603 
604 typedef struct {
605     uint8_t inquiryMode;
606 } HciWriteInquiryModeParam;
607 
608 typedef HciStatusParam HciWriteInquiryModeReturnParam;
609 
610 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
611 // 7.3.51 Read Page Scan Type Command
612 #define HCI_READ_PAGE_SCAN_TYPE MAKE_OPCODE(0x0046, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
613 
614 typedef struct {
615     uint8_t status;
616     uint8_t pageScanType;
617 } HciReadPageScanTypeReturnParam;
618 
619 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
620 // 7.3.52 Write Page Scan Type Command
621 #define HCI_WRITE_PAGE_SCAN_TYPE MAKE_OPCODE(0x0047, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
622 
623 typedef struct {
624     uint8_t pageScanType;
625 } HciWritePageScanTypeParam;
626 
627 typedef HciStatusParam HciWritePageScanTypeReturnParam;
628 
629 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
630 // 7.3.53 Read AFH Channel Assessment Mode Command
631 #define HCI_READ_AFH_CHANNEL_ASSESSMENT_MODE MAKE_OPCODE(0x0048, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
632 
633 typedef struct {
634     uint8_t status;
635     uint8_t afhChannelAssessmentMode;
636 } HciReadAfhChannelAssessmentModeReturnParam;
637 
638 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
639 // 7.3.54 Write AFH Channel Assessment Mode Command
640 #define HCI_WRITE_AFH_CHANNEL_ASSESSMENT_MODE MAKE_OPCODE(0x0049, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
641 
642 typedef struct {
643     uint8_t afhChannelAssessmentMode;
644 } HciWriteAfhChannelAssessmentModeParam;
645 
646 typedef HciStatusParam HciWriteAfhChannelAssessmentModeReturnParam;
647 
648 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
649 // 7.3.55 Read Extended Inquiry Response Command
650 #define HCI_READ_EXTENDED_INQUIRY_RESPONSE MAKE_OPCODE(0x0051, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
651 
652 typedef struct {
653     uint8_t status;
654     uint8_t fecRequired;
655     uint16_t extendedInquiryResponse[120];
656 } HciReadExtendedInquiryResponseReturnParam;
657 
658 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
659 // 7.3.56 Write Extended Inquiry Response Command
660 #define HCI_WRITE_EXTENDED_INQUIRY_RESPONSE MAKE_OPCODE(0x0052, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
661 
662 typedef struct {
663     uint8_t fecRequired;
664     uint8_t extendInquiryRes[240];
665 } HciWriteExtendedInquiryResponseParam;
666 
667 typedef HciStatusParam HciWriteExtendedInquiryResponseReturnParam;
668 
669 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
670 // 7.3.57 Refresh Encryption Key Command
671 #define HCI_REFRESH_ENCRYPTION_KEY MAKE_OPCODE(0x0053, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
672 
673 typedef struct {
674     uint16_t connectionHandle;
675 } HciRefreshEncryptionKeyParam;
676 
677 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
678 // 7.3.58 Read Simple Pairing Mode Command
679 #define HCI_READ_SIMPLE_PAIRING_MODE MAKE_OPCODE(0x0055, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
680 
681 typedef struct {
682     uint8_t status;
683     uint8_t simplePairingMode;
684 } HciReadSimplePairingModeReturnParam;
685 
686 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
687 // 7.3.59 Write Simple Pairing Mode Command
688 #define HCI_WRITE_SIMPLE_PAIRING_MODE MAKE_OPCODE(0x0056, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
689 
690 #define SIMPLE_PAIRING_DISABLED 0x00
691 #define SIMPLE_PAIRING_ENABLED 0x01
692 
693 typedef struct {
694     uint8_t simplePairingMode;
695 } HciWriteSimplePairingModeParam;
696 
697 typedef HciStatusParam HciWriteSimplePairingModeReturnParam;
698 
699 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
700 // 7.3.60 Read Local OOB Data Command
701 #define HCI_READ_LOCAL_OOB_DATA MAKE_OPCODE(0x0057, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
702 
703 typedef struct {
704     uint8_t status;
705     uint8_t C[16];
706     uint8_t R[16];
707 } HciReadLocalOOBDataReturnParam;
708 
709 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
710 // 7.3.61 Read Inquiry Response Transmit Power Level Command
711 #define HCI_READ_INQUIRY_RESPONSE_TRANSMIT_POWER_LEVEL MAKE_OPCODE(0x0058, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
712 
713 typedef struct {
714     uint8_t status;
715     uint8_t txPower;
716 } HciReadInquiryResponseTransmitPowerLevelReturnParam;
717 
718 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
719 // 7.3.62 Write Inquiry Transmit Power Level Command
720 #define HCI_WRITE_INQUIRY_TRANSMIT_POWER_LEVEL MAKE_OPCODE(0x0059, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
721 
722 typedef struct {
723     uint8_t txPower;
724 } HciWriteInquiryTransmitPowerLevelParam;
725 
726 typedef HciStatusParam HciWriteInquiryTransmitPowerLevelReturnParam;
727 
728 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
729 // 7.3.63 Send Keypress Notification Command
730 #define HCI_SEND_KEY_PRESS_NOTIFICATION MAKE_OPCODE(0x0060, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
731 
732 typedef struct {
733     HciBdAddr bdAddr;
734     uint8_t notificationType;
735 } HciSendKeypressNotificationParam;
736 
737 typedef struct {
738     uint8_t status;
739     HciBdAddr bdAddr;
740 } HciSendKeypressNotificationReturnParam;
741 
742 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
743 // 7.3.64 Read Default Erroneous Data Reporting Command
744 #define HCI_READ_DEFAULT_ERRONEOUS_DATA_REPORTING MAKE_OPCODE(0x005A, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
745 
746 typedef struct {
747     uint8_t status;
748     uint8_t erroneousDataReporting;
749 } HciReadDefaultErroneousDataReportingReturnParam;
750 
751 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
752 // 7.3.65 Write Default Erroneous Data Reporting Command
753 #define HCI_WRITE_DEFAULT_ERRONEOUS_DATA_REPORTING MAKE_OPCODE(0x005B, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
754 
755 typedef struct {
756     uint8_t erroneousDataReporting;
757 } HciWriteDefaultErroneousDataReportingParam;
758 
759 typedef HciStatusParam HciWriteDefaultErroneousDataReportingReturnParam;
760 
761 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
762 // 7.3.66 Enhanced Flush Command
763 #define HCI_ENHANCED_FLUSH MAKE_OPCODE(0x005F, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
764 
765 typedef struct {
766     uint16_t handle;
767     uint8_t packetType;
768 } HciEnhancedFlushParam;
769 
770 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
771 // 7.3.67 Read Logical Link Accept Timeout Command
772 #define HCI_READ_LOGICAL_LINK_ACCEPT_TIMEOUT MAKE_OPCODE(0x0061, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
773 
774 typedef struct {
775     uint8_t status;
776     uint16_t logicalLinkAcceptTimeout;
777 } HciReadLogicalLinkAcceptTimeoutReturnParam;
778 
779 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
780 // 7.3.68 Write Logical Link Accept Timeout Command
781 #define HCI_WRITE_LOGICAL_LINK_ACCEPT_TIMEOUT MAKE_OPCODE(0x0062, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
782 
783 typedef struct {
784     uint16_t logicalLinkAcceptTimeout;
785 } HciWriteLogicalLinkAcceptTimeoutParam;
786 
787 typedef HciStatusParam HciWriteLogicalLinkAcceptTimeoutReturnParam;
788 
789 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
790 // 7.3.69 Set Event Mask Page 2 Command
791 #define HCI_SET_EVENT_MASK_PAGE_2 MAKE_OPCODE(0x0063, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
792 
793 typedef struct {
794     uint64_t eventMaskPage2;
795 } HciSetEventMaskPage2Param;
796 
797 typedef HciStatusParam HciSetEventMaskPage2ReturnParam;
798 
799 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
800 // 7.3.70 Read Location Data Command
801 #define HCI_READ_LOCATION_DATA MAKE_OPCODE(0x0064, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
802 
803 typedef struct {
804     uint8_t status;
805     uint8_t locationDomainAware;
806     uint16_t locationDomain;
807     uint8_t locationOptions;
808     uint8_t locationDomainOptions;
809 } HciReadLocationDataReturnParam;
810 
811 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
812 // 7.3.71 Write Location Data Command
813 #define HCI_WRITE_LOCATION_DATA MAKE_OPCODE(0x0065, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
814 
815 typedef struct {
816     uint8_t locationDomainAware;
817     uint16_t locationDomain;
818     uint8_t locationOptions;
819     uint8_t locationDomainOptions;
820 } HciWriteLocationDataParam;
821 
822 typedef HciStatusParam HciWriteLocationDataReturnParam;
823 
824 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
825 // 7.3.72 Read Flow Control Mode Command
826 #define HCI_READ_FLOW_CONTROL_MODE MAKE_OPCODE(0x0066, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
827 
828 typedef struct {
829     uint8_t status;
830     uint8_t flowControlMode;
831 } HciReadFlowControlModeReturnParam;
832 
833 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
834 // 7.3.73 Write Flow Control Mode Command
835 #define HCI_WRITE_FLOW_CONTROL_MODE MAKE_OPCODE(0x0067, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
836 
837 typedef struct {
838     uint8_t flowControlMode;
839 } HciWriteFlowControlModeParam;
840 
841 typedef HciStatusParam HciWriteFlowControlModeReturnParam;
842 
843 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
844 // 7.3.74 Read Enhanced Transmit Power Level Command
845 #define HCI_READ_ENHANCED_TRANSMIT_POWER_LEVEL MAKE_OPCODE(0x0068, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
846 
847 typedef struct {
848     uint16_t connectionHandle;
849     uint8_t type;
850 } HciReadEnhancedTransmitPowerLevelParam;
851 
852 typedef struct {
853     uint8_t status;
854     uint16_t connectionHandle;
855     uint8_t transmitPowerLevelGFSK;
856     uint8_t transmitPowerLevelDQPSK;
857     uint8_t transmitPowerLevel8DPSK;
858 } HciReadEnhancedTransmitPowerLevelReturnParam;
859 
860 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
861 // 7.3.75 Read Best Effort Flush Timeout Command
862 #define HCI_READ_BEST_EFFORT_FLUSH_TIMEOUT MAKE_OPCODE(0x0069, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
863 
864 typedef struct {
865     uint16_t logicalLinkHandle;
866 } HciReadBestEffortFlushTimeoutParam;
867 
868 typedef struct {
869     uint8_t status;
870     uint32_t bestEffortFlushTimeout;
871 } HciReadBestEffortFlushTimeoutReturnParam;
872 
873 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
874 // 7.3.76 Write Best Effort Flush Timeout Command
875 #define HCI_WRITE_BEST_EFFORT_FLUSH_TIMEOUT MAKE_OPCODE(0x006A, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
876 
877 typedef struct {
878     uint16_t logicalLinkHandle;
879     uint32_t bestEffortFlushTimeout;
880 } HciWriteBestEffortFlushTimeoutParam;
881 
882 typedef HciStatusParam HciWriteBestEffortFlushTimeoutReturnParam;
883 
884 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
885 // 7.3.77 Short Range Mode Command
886 #define HCI_SHORT_RANGE_MODE MAKE_OPCODE(0x006B, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
887 
888 typedef struct {
889     uint8_t physicalLinkHandle;
890     uint8_t shortRangeMode;
891 } HciShortRangeModeParam;
892 
893 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
894 // 7.3.78 Read LE Host Support Command
895 #define HCI_READ_LE_HOST_SUPPORT MAKE_OPCODE(0x006C, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
896 
897 typedef struct {
898     uint8_t status;
899     uint8_t leSupportedHost;
900     uint8_t simultaneousLEHost;
901 } HciReadLeHostSupportReturnParam;
902 
903 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
904 // 7.3.79 Write LE Host Support Command
905 #define HCI_WRITE_LE_HOST_SUPPORT MAKE_OPCODE(0x006D, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
906 
907 #define HCI_LE_SUPPORTED_HOST_DISABLED 0x00
908 #define HCI_LE_SUPPORTED_HOST_ENABLED 0x01
909 
910 #define HCI_SIMULTANEOUS_LE_HOST_DISABLED 0x00
911 
912 typedef struct {
913     uint8_t leSupportedHost;
914     uint8_t simultaneousLeHost;
915 } HciWriteLeHostSupportParam;
916 
917 typedef HciStatusParam HciWriteLeHostSupportReturnParam;
918 
919 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
920 // 7.3.80 Set MWS Channel Parameters Command
921 #define HCI_SET_MWS_CHANNEL_PARAMETERS MAKE_OPCODE(0x006E, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
922 
923 typedef struct {
924     uint8_t mwsChannelEnable;
925     uint16_t mwsRXCenterFrequency;
926     uint16_t mwsTXCenterFrequency;
927     uint16_t mwsRXChannelBandwidth;
928     uint16_t mwsTXChannelBandwidth;
929     uint8_t mwsChannelType;
930 } HciSetMwsChannelParametersParam;
931 
932 typedef HciStatusParam HciSetMwsChannelParametersReturnParam;
933 
934 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
935 // 7.3.81 Set External Frame Configuration Command
936 #define HCI_SET_EXTERNAL_FRAME_CONFIGURATION MAKE_OPCODE(0x006F, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
937 
938 typedef struct {
939     uint16_t extFrameDuration;
940     uint16_t extFrameSyncAssertOffset;
941     uint16_t extFrameSyncAssertJitter;
942     uint8_t extNumPeriods;
943     uint16_t *periodDuration;
944     uint8_t *periodType;
945 } HciSetExternalFrameConfigurationParam;
946 
947 typedef HciStatusParam HciSetExternalFrameConfigurationReturnParam;
948 
949 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
950 // 7.3.82 Set MWS Signaling Command
951 #define HCI_SET_MWS_SIGNALING MAKE_OPCODE(0x0070, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
952 
953 typedef struct {
954     uint16_t mwsRXAssertOffset;
955     uint16_t mwsRXAssertJitter;
956     uint16_t mwsRXDeassertOffset;
957     uint16_t mwsRXDeassertJitter;
958     uint16_t mwsTXAssertOffset;
959     uint16_t mwsTXAssertJitter;
960     uint16_t mwsTXDeassertOffset;
961     uint16_t mwsTXDeassertJitter;
962     uint16_t mwsPatternAssertOffset;
963     uint16_t mwsPatternAssertJitter;
964     uint16_t mwsInactivityDurationAssertOffset;
965     uint16_t mwsInactivityDurationAssertJitter;
966     uint16_t mwsScanFrequencyAssertOffset;
967     uint16_t mwsScanFrequencyAssertJitter;
968     uint16_t mwsPriorityAssertOffsetRequest;
969 } HciSetMwsSignalingParam;
970 
971 typedef struct {
972     uint8_t status;
973     uint16_t bluetoothRxPriorityAssertOffset;
974     uint16_t bluetoothRxPriorityAssertJitter;
975     uint16_t bluetoothRxPriorityDeassertOffset;
976     uint16_t bluetoothRxPriorityDeassertJitter;
977     uint16_t rxPriorityAssertOffset;
978     uint16_t rxPriorityAssertJitter;
979     uint16_t rxPriorityDeassert_Offset;
980     uint16_t rxPriorityDeassertJitter;
981     uint16_t bluetoothTxOnAssertOffset;
982     uint16_t bluetoothTxOnAssertJitter;
983     uint16_t bluetoothTxOnDeassertOffset;
984     uint16_t bluetoothTxOnDeassertJitter;
985     uint16_t txOnAssertOffset;
986     uint16_t txOnAssertJitter;
987     uint16_t txOnDeassertOffset;
988     uint16_t txOnDeassertJitter;
989 } HciSetMwsSignalingReturnParam;
990 
991 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
992 // 7.3.83 Set MWS Transport Layer Command
993 #define HCI_SET_MWS_TRANSPORT_LAYER MAKE_OPCODE(0x0071, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
994 
995 typedef struct {
996     uint8_t transportLayer;
997     uint32_t toMwsBaudRate;
998     uint32_t fromMwsBaudRate;
999 } HciSetMwsTransportLayerParam;
1000 
1001 typedef HciStatusParam HciSetMwsTransportLayerReturnParam;
1002 
1003 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
1004 // 7.3.84 Set MWS Scan Frequency Table Command
1005 #define HCI_SET_MWS_SCAN_FREQUENCY_TABLE MAKE_OPCODE(0x0072, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
1006 
1007 typedef struct {
1008     uint8_t numScanFrequencies;
1009     uint16_t *scanFrequencyLow;
1010     uint16_t *scanFrequencyHigh;
1011 } HciSetMwsScanFrequencyTableParam;
1012 
1013 typedef HciStatusParam HciSetMwsScanFrequencyTableReturnParam;
1014 
1015 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
1016 // 7.3.85 Set MWS_PATTERN Configuration Command
1017 #define HCI_SET_MWS_PATTERN_CONFIGURATION MAKE_OPCODE(0x0073, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
1018 
1019 typedef struct {
1020     uint8_t mwsPatternIndex;
1021     uint8_t mwsPatternNumIntervals;
1022     uint16_t *mwsPatternIntervalDuration;
1023     uint8_t *mwsPatternIntervalType;
1024 } HciSetMwsPatternConfigurationParam;
1025 
1026 typedef HciStatusParam HciSetMwsPatternConfigurationReturnParam;
1027 
1028 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
1029 // 7.3.86 Set Reserved LT_ADDR Command
1030 #define HCI_SET_RESERVED_LT_ADDR MAKE_OPCODE(0x0074, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
1031 
1032 typedef struct {
1033     uint8_t ltAddr;
1034 } HciSetReservedLtAddrParam;
1035 
1036 typedef struct {
1037     uint8_t status;
1038     uint8_t ltAddr;
1039 } HciSetReservedLtAddrReturnParam;
1040 
1041 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
1042 // 7.3.87 Delete Reserved LT_ADDR Command
1043 #define HCI_DELETE_RESERVED_LT_ADDR MAKE_OPCODE(0x0075, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
1044 
1045 typedef struct {
1046     uint8_t ltAddr;
1047 } HciDeleteReservedLtAddrParam;
1048 
1049 typedef struct {
1050     uint8_t status;
1051     uint8_t ltAddr;
1052 } HciDeleteReservedLtAddrReturnParam;
1053 
1054 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
1055 // 7.3.88 Set Connectionless Slave Broadcast Data Command
1056 #define HCI_SET_CONNECTIONLESS_SLAVE_BROADCAST_DATA MAKE_OPCODE(0x0076, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
1057 
1058 typedef struct {
1059     uint8_t ltAddr;
1060     uint8_t fragment;
1061     uint8_t dataLength;
1062     uint8_t *data;
1063 } HciSetConnectionlessSlaveBroadcastDataParam;
1064 
1065 typedef struct {
1066     uint8_t status;
1067     uint8_t ltAddr;
1068 } HciSetConnectionlessSlaveBroadcastDataReturnParam;
1069 
1070 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
1071 // 7.3.89 Read Synchronization Train Parameters Command
1072 #define HCI_READ_SYNCHRONIZATION_TRAIN_PARAMETERS MAKE_OPCODE(0x0077, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
1073 
1074 typedef struct {
1075     uint8_t status;
1076     uint16_t syncTrainInterval;
1077     uint32_t synchronizationtrainTO;
1078     uint8_t serviceData;
1079 } HciReadSynchronizationTrainParametersReturnParam;
1080 
1081 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
1082 // 7.3.90 Write Synchronization Train Parameters Command
1083 #define HCI_WRITE_SYNCHRONIZATION_TRAIN_PARAMETERS MAKE_OPCODE(0x0078, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
1084 
1085 typedef struct {
1086     uint16_t intervalMin;
1087     uint16_t intervalMax;
1088     uint32_t synchronizationtrainTO;
1089     uint8_t serviceData;
1090 } HciWriteSynchronizationTrainParametersParam;
1091 
1092 typedef struct {
1093     uint8_t status;
1094     uint8_t syncTrainInterval;
1095 } HciWriteSynchronizationTrainParametersReturnParam;
1096 
1097 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
1098 // 7.3.91 Read Secure Connections Host Support Command
1099 #define HCI_READ_SECURE_CONNECTIONS_HOST_SUPPORT MAKE_OPCODE(0x0079, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
1100 
1101 typedef struct {
1102     uint8_t status;
1103     uint8_t secureConnectionsHostSupport;
1104 } HciReadSecureConnectionsHostSupportReturnParam;
1105 
1106 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
1107 // 7.3.92 Write Secure Connections Host Support Command
1108 #define HCI_WRITE_SECURE_CONNECTIONS_HOST_SUPPORT MAKE_OPCODE(0x007A, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
1109 
1110 #define HCI_SECURE_CONNECTIONS_HOST_SUPPORT_DISABLED 0x00
1111 #define HCI_SECURE_CONNECTIONS_HOST_SUPPORT_ENABLED 0x01
1112 
1113 typedef struct {
1114     uint8_t secureConnectionsHostSupport;
1115 } HciWriteSecureConnectionsHostSupportParam;
1116 
1117 typedef HciStatusParam HciWriteSecureConnectionsHostSupportReturnParam;
1118 
1119 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
1120 // 7.3.93 Read Authenticated Payload Timeout Command
1121 #define HCI_READ_AUTHENTICATED_PAYLOAD_TIMEOUT MAKE_OPCODE(0x007B, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
1122 
1123 typedef struct {
1124     uint16_t connectionHandle;
1125 } HciReadAuthenticatedPayloadTimeoutParam;
1126 
1127 typedef struct {
1128     uint8_t status;
1129     uint32_t connectionHandle;
1130     uint16_t authenticatedPayloadTimeout;
1131 } HciReadAuthenticatedPayloadTimeoutReturnParam;
1132 
1133 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
1134 // 7.3.94 Write Authenticated Payload Timeout Command
1135 #define HCI_WRITE_AUTHENTICATED_PAYLOAD_TIMEOUT MAKE_OPCODE(0x007C, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
1136 
1137 typedef struct {
1138     uint16_t connectionHandle;
1139     uint16_t authenticatedPayloadTimeout;
1140 } HciWriteAuthenticatedPayloadTimeoutParam;
1141 
1142 typedef struct {
1143     uint8_t status;
1144     uint16_t connectionHandle;
1145 } HciWriteAuthenticatedPayloadTimeoutReturnParam;
1146 
1147 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
1148 // 7.3.95 Read Local OOB Extended Data Command
1149 #define HCI_READ_LOCAL_OOB_EXTENDED_DATA MAKE_OPCODE(0x007D, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
1150 
1151 typedef struct {
1152     uint8_t status;
1153     uint8_t c192[16];
1154     uint8_t r192[16];
1155     uint8_t c256[16];
1156     uint8_t r256[16];
1157 } HciReadLocalOobExtendedDataReturnParam;
1158 
1159 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
1160 // 7.3.96 Read Extended Page Timeout Command
1161 #define HCI_READ_EXTENDED_PAGE_TIMEOUT MAKE_OPCODE(0x007E, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
1162 
1163 typedef struct {
1164     uint8_t status;
1165     uint16_t extendedPageTimeout;
1166 } HciReadExtendedPageTimeoutReturnParam;
1167 
1168 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
1169 // 7.3.97 Write Extended Page Timeout Command
1170 #define HCI_WRITE_EXTENDED_PAGE_TIMEOUT MAKE_OPCODE(0x007F, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
1171 
1172 typedef struct {
1173     uint16_t extendedPageTimeout;
1174 } HciWriteExtendedPageTimeoutParam;
1175 
1176 typedef HciStatusParam HciWriteExtendedPageTimeoutReturnParam;
1177 
1178 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
1179 // 7.3.98 Read Extended Inquiry Length Command
1180 #define HCI_READ_EXTENDED_INQUIRY_LENGTH MAKE_OPCODE(0x0080, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
1181 
1182 typedef struct {
1183     uint8_t status;
1184     uint16_t extendedInquiryLength;
1185 } HciReadExtendedInquiryLengthReturnParam;
1186 
1187 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
1188 // 7.3.99 Write Extended Inquiry Length Command
1189 #define HCI_WRITE_EXTENDED_INQUIRY_LENGTH MAKE_OPCODE(0x0081, HCI_COMMAND_OGF_CONTTOLLER_AND_BASEBAND)
1190 
1191 typedef struct {
1192     uint16_t extendedInquiryLength;
1193 } HciWriteExtendedInquiryLengthParam;
1194 
1195 typedef HciStatusParam HciWriteExtendedInquiryLengthReturnParam;
1196 
1197 #pragma pack(0)
1198 
1199 #ifdef __cplusplus
1200 }
1201 #endif
1202 
1203 #endif