-
Notifications
You must be signed in to change notification settings - Fork 1
/
hci_control_api.h
1687 lines (1480 loc) · 183 KB
/
hci_control_api.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/***************************************************************************//**
* \file <hci_control_api.h>
*
* Copyright 2016-2024, Cypress Semiconductor Corporation (an Infineon company) or
* an affiliate of Cypress Semiconductor Corporation. All rights reserved.
*
* This software, including source code, documentation and related
* materials ("Software") is owned by Cypress Semiconductor Corporation
* or one of its affiliates ("Cypress") and is protected by and subject to
* worldwide patent protection (United States and foreign),
* United States copyright laws and international treaty provisions.
* Therefore, you may use this Software only as provided in the license
* agreement accompanying the software package from which you
* obtained this Software ("EULA").
* If no EULA applies, Cypress hereby grants you a personal, non-exclusive,
* non-transferable license to copy, modify, and compile the Software
* source code solely for use in connection with Cypress's
* integrated circuit products. Any reproduction, modification, translation,
* compilation, or representation of this Software except as specified
* above is prohibited without the express written permission of Cypress.
*
* Disclaimer: THIS SOFTWARE IS PROVIDED AS-IS, WITH NO WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, NONINFRINGEMENT, IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Cypress
* reserves the right to make changes to the Software without notice. Cypress
* does not assume any liability arising out of the application or use of the
* Software or any product or circuit described in the Software. Cypress does
* not authorize its products for use in any products where a malfunction or
* failure of the Cypress product may reasonably be expected to result in
* significant property damage, injury or death ("High Risk Product"). By
* including Cypress's product in a High Risk Product, the manufacturer
* of such system or application assumes all risk of such use and in doing
* so agrees to indemnify Cypress against all liability.
*
* HCI Control Protocol Definitions
*
* \brief
* This file provides definitions for the AIROC HCI Control Interface between an MCU
* and an embedded application running on an Infineon Bluetooth SoC. Please refer to the AIROC
* HCI Control Protocol Software User Manual (002-16618) for additional details.
*
* Packets exchanged over the UART between MCU and hci_control applications contain a 5-byte header.
* -------------------------------------------------------------------------------------------------------
* | Packet Type | Command Code | Group Code | Packet Length |
* -------------------------------------------------------------------------------------------------------
* |HCI_WICED_PKT(0x19)|HCI_CONTROL_COMMAND_...|HCI_CONTROL_GROUP_...|length(low byte)| length(high byte)|
* -------------------------------------------------------------------------------------------------------
******************************************************************************/
#ifndef __HCI_CONTROL_API_H
#define __HCI_CONTROL_API_H
/* Packet types */
#define HCI_EVENT_PKT 4
#define HCI_ACL_DATA_PKT 2
#define HCI_WICED_PKT 25
/* Group codes */
#define HCI_CONTROL_GROUP_DEVICE 0x00
#define HCI_CONTROL_GROUP_LE 0x01
#define HCI_CONTROL_GROUP_GATT 0x02
#define HCI_CONTROL_GROUP_HF 0x03
#define HCI_CONTROL_GROUP_SPP 0x04
#define HCI_CONTROL_GROUP_AUDIO 0x05
#define HCI_CONTROL_GROUP_HIDD 0x06
#define HCI_CONTROL_GROUP_AVRC_TARGET 0x07
#define HCI_CONTROL_GROUP_TEST 0x08
#define HCI_CONTROL_GROUP_ANCS 0x0b
#define HCI_CONTROL_GROUP_ALERT 0x0c
#define HCI_CONTROL_GROUP_IAP2 0x0d
#define HCI_CONTROL_GROUP_AG 0x0e
#define HCI_CONTROL_GROUP_BSG 0x10
#define HCI_CONTROL_GROUP_AVRC_CONTROLLER 0x11
#define HCI_CONTROL_GROUP_AMS 0x12
#define HCI_CONTROL_GROUP_HIDH 0x13
#define HCI_CONTROL_GROUP_AUDIO_SINK 0x14
#define HCI_CONTROL_GROUP_PBC 0x15
#define HCI_CONTROL_GROUP_MESH 0x16
#define HCI_CONTROL_GROUP_BATT_CLIENT 0x17
#define HCI_CONTROL_GROUP_FINDME_LOCATOR 0x18
#define HCI_CONTROL_GROUP_DEMO 0x19
#define HCI_CONTROL_GROUP_OPS 0x20
#define HCI_CONTROL_GROUP_ANC 0x21
#define HCI_CONTROL_GROUP_ANS 0x22
#define HCI_CONTROL_GROUP_LE_COC 0x23
#define HCI_CONTROL_GROUP_LED_DEMO 0x24
#define HCI_CONTROL_GROUP_SCRIPT 0x25
#define HCI_CONTROL_GROUP_OTP 0x26
#define HCI_CONTROL_GROUP_MCE 0x27
#define HCI_CONTROL_GROUP_HK 0x28
#define HCI_CONTROL_GROUP_HCI_AUDIO 0x29
#define HCI_CONTROL_GROUP_DFU 0x2a
#define HCI_CONTROL_GROUP_AUDIO_DUAL_A2DP 0x2b
#define HCI_CONTROL_GROUP_HCITEST 0x2c
#define HCI_CONTROL_GROUP_MESH_MODELS 0x2d
#define HCI_CONTROL_GROUP_BMS 0x2e
#define HCI_CONTROL_GROUP_PANU 0x2f
#define HCI_CONTROL_GROUP_LE_AUDIO 0x30
#define HCI_CONTROL_GROUP_IFXVH 0x31
#define HCI_CONTROL_GROUP_MISC 0xFF
#define HCI_CONTROL_GROUP(x) ((((x) >> 8)) & 0xff)
/* General purpose commands */
#define HCI_CONTROL_COMMAND_RESET ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x01 ) /* Restart controller */
#define HCI_CONTROL_COMMAND_TRACE_ENABLE ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x02 ) /* Enable or disable WICED traces */
#define HCI_CONTROL_COMMAND_SET_LOCAL_BDA ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x03 ) /* Set local device addrsss */
#define HCI_CONTROL_COMMAND_PUSH_NVRAM_DATA ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x05 ) /* Download previously saved NVRAM chunk */
#define HCI_CONTROL_COMMAND_DELETE_NVRAM_DATA ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x06 ) /* Delete NVRAM chunk currently stored in RAM */
#define HCI_CONTROL_COMMAND_INQUIRY ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x07 ) /* Start/stop inquiry */
#define HCI_CONTROL_COMMAND_SET_VISIBILITY ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x08 ) /* Set BR/EDR connectability and discoverability of the device */
#define HCI_CONTROL_COMMAND_SET_PAIRING_MODE ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x09 ) /* Set Pairing Mode for the device 0 = Not pairable 1 = Pairable */
#define HCI_CONTROL_COMMAND_UNBOND ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x0A ) /* Delete bond with specified BDADDR */
#define HCI_CONTROL_COMMAND_USER_CONFIRMATION ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x0B ) /* User Confirmation during pairing, TRUE/FALSE passed as parameter */
#define HCI_CONTROL_COMMAND_ENABLE_COEX ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x0C ) /* Enable coex functionality */
#define HCI_CONTROL_COMMAND_DISABLE_COEX ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x0D ) /* Disable coex functionality */
#define HCI_CONTROL_COMMAND_SET_BATTERY_LEVEL ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x0E ) /* Sets battery level in the GATT database */
#define HCI_CONTROL_COMMAND_READ_LOCAL_BDA ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x0F ) /* Get local device addrsss */
#define HCI_CONTROL_COMMAND_BOND ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x10 ) /* Initiate Bonding with a peer device */
#define HCI_CONTROL_COMMAND_READ_BUFF_STATS ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x11 ) /* Read Buffer statistics */
#define HCI_CONTROL_COMMAND_SET_LOCAL_NAME ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x12 ) /* Set the local name */
#define HCI_CONTROL_COMMAND_UNBOND_DEVICE ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x13 ) /* Unbond (Delete NVRAM Id) a Device (by BdAddr) */
#define HCI_CONTROL_COMMAND_GET_BONDED_DEVICES ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x14 ) /* Get Bonded/Paired Device list */
#define HCI_CONTROL_COMMAND_PIN_REPLY ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x15 ) /* PIN Code Reply */
#define HCI_CONTROL_COMMAND_SSP_REPLY ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x16 ) /* SSP Code Reply */
/* LE Commands */
#define HCI_CONTROL_LE_COMMAND_SCAN ( ( HCI_CONTROL_GROUP_LE << 8 ) | 0x01 ) /* Start scan */
#define HCI_CONTROL_LE_COMMAND_ADVERTISE ( ( HCI_CONTROL_GROUP_LE << 8 ) | 0x02 ) /* Start advertisements */
#define HCI_CONTROL_LE_COMMAND_CONNECT ( ( HCI_CONTROL_GROUP_LE << 8 ) | 0x03 ) /* Connect to peer */
#define HCI_CONTROL_LE_COMMAND_CANCEL_CONNECT ( ( HCI_CONTROL_GROUP_LE << 8 ) | 0x04 ) /* Cancel connect */
#define HCI_CONTROL_LE_COMMAND_DISCONNECT ( ( HCI_CONTROL_GROUP_LE << 8 ) | 0x05 ) /* Disconnect */
#define HCI_CONTROL_LE_RE_PAIR ( ( HCI_CONTROL_GROUP_LE << 8 ) | 0x06 ) /* Delete keys and then re-pair */
#define HCI_CONTROL_LE_COMMAND_GET_IDENTITY_ADDRESS ( ( HCI_CONTROL_GROUP_LE << 8 ) | 0x07 ) /* Get identity address */
#define HCI_CONTROL_LE_COMMAND_SET_CHANNEL_CLASSIFICATION ( ( HCI_CONTROL_GROUP_LE << 8 ) | 0x08 ) /* Set channel classification for available 40 channels */
#define HCI_CONTROL_LE_COMMAND_SET_CONN_PARAMS ( ( HCI_CONTROL_GROUP_LE << 8 ) | 0x09 ) /* Set connection parameters */
#define HCI_CONTROL_LE_COMMAND_SET_RAW_ADVERTISE_DATA ( ( HCI_CONTROL_GROUP_LE << 8 ) | 0x0a ) /* Set raw advertisement data */
/* GATT Commands */
#define HCI_CONTROL_GATT_COMMAND_DISCOVER_SERVICES ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x01 ) /* Discover services */
#define HCI_CONTROL_GATT_COMMAND_DISCOVER_CHARACTERISTICS ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x02 ) /* Discover characteristics */
#define HCI_CONTROL_GATT_COMMAND_DISCOVER_DESCRIPTORS ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x03 ) /* Discover descriptors */
#define HCI_CONTROL_GATT_COMMAND_READ_REQUEST ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x04 ) /* Send read request */
#define HCI_CONTROL_GATT_COMMAND_READ_RESPONSE ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x05 ) /* Send read response */
#define HCI_CONTROL_GATT_COMMAND_WRITE_COMMAND ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x06 ) /* Send write command */
#define HCI_CONTROL_GATT_COMMAND_WRITE_REQUEST ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x07 ) /* Send write request */
#define HCI_CONTROL_GATT_COMMAND_WRITE_RESPONSE ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x08 ) /* Send write response */
#define HCI_CONTROL_GATT_COMMAND_NOTIFY ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x09 ) /* Send notification */
#define HCI_CONTROL_GATT_COMMAND_INDICATE ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x0a ) /* Send indication */
#define HCI_CONTROL_GATT_COMMAND_INDICATE_CONFIRM ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x0b ) /* Send indication confirmation */
#define HCI_CONTROL_GATT_COMMAND_DB_INIT ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x0d ) /* Initialize GATT database */
#define HCI_CONTROL_GATT_COMMAND_DB_PRIMARY_SERVICE_ADD ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x0e ) /* Add primary service into GATT database */
#define HCI_CONTROL_GATT_COMMAND_DB_SECONDARY_SERVICE_ADD ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x0f ) /* Add secondary service into GATT database */
#define HCI_CONTROL_GATT_COMMAND_DB_INCLUDED_SERVICE_ADD ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x10 ) /* Add included service into GATT database */
#define HCI_CONTROL_GATT_COMMAND_DB_CHARACTERISTIC_ADD ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x11 ) /* Add characteristic into GATT database */
#define HCI_CONTROL_GATT_COMMAND_DB_DESCRIPTOR_ADD ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x12 ) /* Add descriptor into GATT database */
/* Handsfree Commands */
#define HCI_CONTROL_HF_COMMAND_CONNECT ( ( HCI_CONTROL_GROUP_HF << 8 ) | 0x01 ) /* Establish connection to HF Audio Gateway */
#define HCI_CONTROL_HF_COMMAND_DISCONNECT ( ( HCI_CONTROL_GROUP_HF << 8 ) | 0x02 ) /* Release HF connection */
#define HCI_CONTROL_HF_COMMAND_OPEN_AUDIO ( ( HCI_CONTROL_GROUP_HF << 8 ) | 0x03 ) /* Create audio connection on existing service level connection */
#define HCI_CONTROL_HF_COMMAND_CLOSE_AUDIO ( ( HCI_CONTROL_GROUP_HF << 8 ) | 0x04 ) /* Disconnect audio */
#define HCI_CONTROL_HF_COMMAND_AUDIO_ACCEPT_CONN ( ( HCI_CONTROL_GROUP_HF << 8 ) | 0x05 ) /* Accept/Reject Audio connection request */
#define HCI_CONTROL_HF_COMMAND_TURN_OFF_PCM_CLK ( ( HCI_CONTROL_GROUP_HF << 8 ) | 0x06 ) /* To turn off PCM/I2S clock in Master case for SCO */
#define HCI_CONTROL_HF_COMMAND_BUTTON_PRESS ( ( HCI_CONTROL_GROUP_HF << 8 ) | 0x07 ) /* Simulate a button press on a Hands-free headset */
#define HCI_CONTROL_HF_COMMAND_LONG_BUTTON_PRESS ( ( HCI_CONTROL_GROUP_HF << 8 ) | 0x08 ) /* Simulate a long button press on a Hands-free headset */
/* Sub commands to send various AT Commands */
#define HCI_CONTROL_HF_AT_COMMAND_BASE ( ( HCI_CONTROL_GROUP_HF << 8 ) | 0x20 ) /* Send AT command and supporting data */
#define HCI_CONTROL_HF_AT_COMMAND_SPK 0x00 /* Update speaker volume */
#define HCI_CONTROL_HF_AT_COMMAND_MIC 0x01 /* Update microphone volume */
#define HCI_CONTROL_HF_AT_COMMAND_A 0x02 /* Answer incoming call */
#define HCI_CONTROL_HF_AT_COMMAND_BINP 0x03 /* Retrieve number from voice tag */
#define HCI_CONTROL_HF_AT_COMMAND_BVRA 0x04 /* Enable/Disable voice recognition */
#define HCI_CONTROL_HF_AT_COMMAND_BLDN 0x05 /* Last Number redial */
#define HCI_CONTROL_HF_AT_COMMAND_CHLD 0x06 /* Call hold command */
#define HCI_CONTROL_HF_AT_COMMAND_CHUP 0x07 /* Call hang up command */
#define HCI_CONTROL_HF_AT_COMMAND_CIND 0x08 /* Read Indicator Status */
#define HCI_CONTROL_HF_AT_COMMAND_CNUM 0x09 /* Retrieve Subscriber number */
#define HCI_CONTROL_HF_AT_COMMAND_D 0x0A /* Place a call using a number or memory dial */
#define HCI_CONTROL_HF_AT_COMMAND_NREC 0x0B /* Disable Noise reduction and echo canceling in AG */
#define HCI_CONTROL_HF_AT_COMMAND_VTS 0x0C /* Transmit DTMF tone */
#define HCI_CONTROL_HF_AT_COMMAND_BTRH 0x0D /* CCAP incoming call hold */
#define HCI_CONTROL_HF_AT_COMMAND_COPS 0x0E /* Query operator selection */
#define HCI_CONTROL_HF_AT_COMMAND_CMEE 0x0F /* Enable/disable extended AG result codes */
#define HCI_CONTROL_HF_AT_COMMAND_CLCC 0x10 /* Query list of current calls in AG */
#define HCI_CONTROL_HF_AT_COMMAND_BIA 0x11 /* Activate/Deactivate indicators */
#define HCI_CONTROL_HF_AT_COMMAND_BIEV 0x12 /* Send HF indicator value to peer */
#define HCI_CONTROL_HF_AT_COMMAND_UNAT 0x13 /* Transmit AT command not in the spec */
#define HCI_CONTROL_HF_AT_COMMAND_MAX 0x13 /* For command validation */
/* Serial Port Profile commands */
#define HCI_CONTROL_SPP_COMMAND_CONNECT ( ( HCI_CONTROL_GROUP_SPP << 8 ) | 0x01 ) /* Establish connection to SPP server */
#define HCI_CONTROL_SPP_COMMAND_DISCONNECT ( ( HCI_CONTROL_GROUP_SPP << 8 ) | 0x02 ) /* Release SPP connection */
#define HCI_CONTROL_SPP_COMMAND_DATA ( ( HCI_CONTROL_GROUP_SPP << 8 ) | 0x03 ) /* Send data */
#define HCI_CONTROL_SPP_COMMAND_PEER_MTU ( ( HCI_CONTROL_GROUP_SPP << 8 ) | 0x04 ) /* Get peer mtu size */
/* Audio Profile commands */
#define HCI_CONTROL_AUDIO_COMMAND_CONNECT ( ( HCI_CONTROL_GROUP_AUDIO << 8 ) | 0x01 ) /* Audio connect to sink */
#define HCI_CONTROL_AUDIO_COMMAND_DISCONNECT ( ( HCI_CONTROL_GROUP_AUDIO << 8 ) | 0x02 ) /* Audio disconnect */
#define HCI_CONTROL_AUDIO_START ( ( HCI_CONTROL_GROUP_AUDIO << 8 ) | 0x03 ) /* Start audio with specific sample rate/mode */
#define HCI_CONTROL_AUDIO_STOP ( ( HCI_CONTROL_GROUP_AUDIO << 8 ) | 0x04 ) /* Stop audio */
#define HCI_CONTROL_AUDIO_PACKET_COUNT ( ( HCI_CONTROL_GROUP_AUDIO << 8 ) | 0x05 ) /* Debug packet counter sent from host */
#define HCI_CONTROL_AUDIO_DATA ( ( HCI_CONTROL_GROUP_AUDIO << 8 ) | 0x06 ) /* Audio data (PCM) */
#define HCI_CONTROL_AUDIO_READ_STATISTICS ( ( HCI_CONTROL_GROUP_AUDIO << 8 ) | 0x07 ) /* Audio Statistics */
#define HCI_CONTROL_AUDIO_DATA_MP3 ( ( HCI_CONTROL_GROUP_AUDIO << 8 ) | 0x10 ) /* Audio data (MP3) */
#define HCI_CONTROL_AUDIO_DATA_FORMAT ( ( HCI_CONTROL_GROUP_AUDIO << 8 ) | 0x11 ) /* Audio data format */
/* AVRC Target Profile commands */
#define HCI_CONTROL_AVRC_TARGET_COMMAND_CONNECT ( ( HCI_CONTROL_GROUP_AVRC_TARGET << 8 ) | 0x01 ) /* Initiate connection to the peer. */
#define HCI_CONTROL_AVRC_TARGET_COMMAND_DISCONNECT ( ( HCI_CONTROL_GROUP_AVRC_TARGET << 8 ) | 0x02 ) /* Disconnect connection to the peer. */
#define HCI_CONTROL_AVRC_TARGET_COMMAND_TRACK_INFO ( ( HCI_CONTROL_GROUP_AVRC_TARGET << 8 ) | 0x05 ) /* Track info sent to embedded app */
#define HCI_CONTROL_AVRC_TARGET_COMMAND_PLAYER_STATUS ( ( HCI_CONTROL_GROUP_AVRC_TARGET << 8 ) | 0x06 ) /* Player status info sent to embedded app */
#define HCI_CONTROL_AVRC_TARGET_COMMAND_REPEAT_MODE_CHANGE ( ( HCI_CONTROL_GROUP_AVRC_TARGET << 8 ) | 0x07 ) /* Repeat Mode changes sent to embedded app */
#define HCI_CONTROL_AVRC_TARGET_COMMAND_SHUFFLE_MODE_CHANGE ( ( HCI_CONTROL_GROUP_AVRC_TARGET << 8 ) | 0x08 ) /* Shuffle Mode changes sent to embedded app */
#define HCI_CONTROL_AVRC_TARGET_COMMAND_EQUALIZER_STATUS_CHANGE ( ( HCI_CONTROL_GROUP_AVRC_TARGET << 8 ) | 0x09 ) /* EQ Status changes sent to embedded app */
#define HCI_CONTROL_AVRC_TARGET_COMMAND_SCAN_STATUS_CHANGE ( ( HCI_CONTROL_GROUP_AVRC_TARGET << 8 ) | 0x0A ) /* Scan Status changes sent to embedded app */
#define HCI_CONTROL_AVRC_TARGET_COMMAND_REGISTER_NOTIFICATION ( ( HCI_CONTROL_GROUP_AVRC_TARGET << 8 ) | 0x99 ) /* Register for notifications (PTS only) */
/* AVRC Controller Profile commands */
#define HCI_CONTROL_AVRC_CONTROLLER_COMMAND_CONNECT ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x01 ) /* Initiate connection to the peer */
#define HCI_CONTROL_AVRC_CONTROLLER_COMMAND_DISCONNECT ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x02 ) /* Disconnect from the peer */
#define HCI_CONTROL_AVRC_CONTROLLER_COMMAND_PLAY ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x03 ) /* Send play command to the player */
#define HCI_CONTROL_AVRC_CONTROLLER_COMMAND_STOP ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x04 ) /* Send stop command to the player */
#define HCI_CONTROL_AVRC_CONTROLLER_COMMAND_PAUSE ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x05 ) /* Send pause command to the player */
#define HCI_CONTROL_AVRC_CONTROLLER_COMMAND_BEGIN_FAST_FORWARD ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x06 ) /* Start fast forward on the player */
#define HCI_CONTROL_AVRC_CONTROLLER_COMMAND_END_FAST_FORWARD ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x07 ) /* End fast forward on the player */
#define HCI_CONTROL_AVRC_CONTROLLER_COMMAND_BEGIN_REWIND ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x08 ) /* Passthrough Rewind command */
#define HCI_CONTROL_AVRC_CONTROLLER_COMMAND_END_REWIND ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x09 ) /* Passthrough Rewind command */
#define HCI_CONTROL_AVRC_CONTROLLER_COMMAND_NEXT_TRACK ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x0a ) /* Passthrough Next command */
#define HCI_CONTROL_AVRC_CONTROLLER_COMMAND_PREVIOUS_TRACK ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x0b ) /* Passthrough Prev command */
#define HCI_CONTROL_AVRC_CONTROLLER_COMMAND_VOLUME_UP ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x0c ) /* Passthrough Vol Up command */
#define HCI_CONTROL_AVRC_CONTROLLER_COMMAND_VOLUME_DOWN ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x0d ) /* Passthrough Vol Down command */
#define HCI_CONTROL_AVRC_CONTROLLER_COMMAND_GET_TRACK_INFO ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x0e ) /* Get Track Metadata */
#define HCI_CONTROL_AVRC_CONTROLLER_COMMAND_SET_EQUALIZER_STATUS ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x0f ) /* Turn Equalizer On/Off */
#define HCI_CONTROL_AVRC_CONTROLLER_COMMAND_SET_REPEAT_MODE ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x10 ) /* Set Repeat mode */
#define HCI_CONTROL_AVRC_CONTROLLER_COMMAND_SET_SHUFFLE_MODE ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x11 ) /* Set Shuffle mode */
#define HCI_CONTROL_AVRC_CONTROLLER_COMMAND_SET_SCAN_STATUS ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x12 ) /* Set Scan mode to Off, All tracks or Group scan */
#define HCI_CONTROL_AVRC_CONTROLLER_COMMAND_VOLUME_LEVEL ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x13 ) /* Set Absolute Volume */
#define HCI_CONTROL_AVRC_CONTROLLER_COMMAND_GET_PLAY_STATUS ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x14 ) /* Get play-status command */
#define HCI_CONTROL_AVRC_CONTROLLER_COMMAND_POWER ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x15 ) /* Passthrough Power command */
#define HCI_CONTROL_AVRC_CONTROLLER_COMMAND_MUTE ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x16 ) /* Passthrough Mute command */
#define HCI_CONTROL_AVRC_CONTROLLER_COMMAND_BUTTON_PRESS ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x17 ) /* Simulate a button press on a stereo headphone */
#define HCI_CONTROL_AVRC_CONTROLLER_COMMAND_LONG_BUTTON_PRESS ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x18 ) /* Simulate a long button press on a stereo headphone */
#define HCI_CONTROL_AVRC_CONTROLLER_COMMAND_UNIT_INFO ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x19 ) /* Send Unit Info command */
#define HCI_CONTROL_AVRC_CONTROLLER_COMMAND_SUB_UNIT_INFO ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x1A ) /* Send Sub Unit Info command */
/* HID Device commands */
#define HCI_CONTROL_HIDD_COMMAND_ACCEPT_PAIRING ( ( HCI_CONTROL_GROUP_HIDD << 8 ) | 0x01 ) /* Set device discoverable/connectable to accept pairing */
#define HCI_CONTROL_HIDD_COMMAND_SEND_REPORT ( ( HCI_CONTROL_GROUP_HIDD << 8 ) | 0x02 ) /* Send HID report */
#define HCI_CONTROL_HIDD_COMMAND_PUSH_PAIRING_HOST_INFO ( ( HCI_CONTROL_GROUP_HIDD << 8 ) | 0x03 ) /* Paired host address and link keys */
#define HCI_CONTROL_HIDD_COMMAND_CONNECT ( ( HCI_CONTROL_GROUP_HIDD << 8 ) | 0x04 ) /* Connect to previously paired host */
#define HCI_CONTROL_HIDD_COMMAND_HID_HOST_ADDR ( ( HCI_CONTROL_GROUP_HIDD << 8 ) | 0x05 ) /* Paired host address */
#define HCI_CONTROL_HIDD_COMMAND_DISCONNECT ( ( HCI_CONTROL_GROUP_HIDD << 8 ) | 0x06 ) /* Disconnect HID connection */
#define HCI_CONTROL_HIDD_COMMAND_VIRTUAL_UNPLUG ( ( HCI_CONTROL_GROUP_HIDD << 8 ) | 0x07 ) /* Send Virtual Unplug */
#define HCI_CONTROL_HIDD_COMMAND_KEY ( ( HCI_CONTROL_GROUP_HIDD << 8 ) | 0x08 ) /* Send USB key */
#define HCI_CONTROL_HIDD_COMMAND_AUDIO_START_REQ ( ( HCI_CONTROL_GROUP_HIDD << 8 ) | 0x09 ) /* Audio Start Request */
#define HCI_CONTROL_HIDD_COMMAND_AUDIO_STOP_REQ ( ( HCI_CONTROL_GROUP_HIDD << 8 ) | 0x0A ) /* Audio Stop Request */
#define HCI_CONTROL_HIDD_COMMAND_AUDIO_DATA ( ( HCI_CONTROL_GROUP_HIDD << 8 ) | 0x0B ) /* Audio Data */
#define HCI_CONTROL_HIDD_COMMAND_AUDIO_SET_COPY ( ( HCI_CONTROL_GROUP_HIDD << 8 ) | 0x0C ) /* Enable/Disable Audio Data copy */
#define HCI_CONTROL_HIDD_COMMAND_AUDIO_MIC_START_STOP ( ( HCI_CONTROL_GROUP_HIDD << 8 ) | 0x0D ) /* Audio MIC Start/stop */
/* Test commands */
#define HCI_CONTROL_TEST_COMMAND_ENCAPSULATED_HCI_COMMAND ( ( HCI_CONTROL_GROUP_TEST << 8 ) | 0x10 ) /* Encapsulated HCI command - For manufacturing test purposes */
#define HCI_CONTROL_TEST_COMMAND_LOOPBACK_DATA ( ( HCI_CONTROL_GROUP_TEST << 8 ) | 0x11 ) /* Send Loopback data */
/* ANCS commands */
#define HCI_CONTROL_ANCS_COMMAND_ACTION ( ( HCI_CONTROL_GROUP_ANCS << 8 ) | 0x01 ) /* ANCS notification */
#define HCI_CONTROL_ANCS_COMMAND_CONNECT ( ( HCI_CONTROL_GROUP_ANCS << 8 ) | 0x02 ) /* Establish ANCS connection */
#define HCI_CONTROL_ANCS_COMMAND_DISCONNECT ( ( HCI_CONTROL_GROUP_ANCS << 8 ) | 0x03 ) /* Disconnect ANCS */
/* ANC commands */
#define HCI_CONTROL_ANC_COMMAND_READ_SERVER_SUPPORTED_NEW_ALERTS ( ( HCI_CONTROL_GROUP_ANC << 8 ) | 0x01 ) /* Command to read server supported new alerts */
#define HCI_CONTROL_ANC_COMMAND_READ_SERVER_SUPPORTED_UNREAD_ALERTS ( ( HCI_CONTROL_GROUP_ANC << 8 ) | 0x02 ) /* Command to read server supported unread alerts */
#define HCI_CONTROL_ANC_COMMAND_CONTROL_ALERTS ( ( HCI_CONTROL_GROUP_ANC << 8 ) | 0x03 ) /* Command to enable/diable/notify pending or all pending alerts */
#define HCI_CONTROL_ANC_COMMAND_ENABLE_NEW_ALERTS ( ( HCI_CONTROL_GROUP_ANC << 8 ) | 0x04 ) /* Command to enable new alerts notifications */
#define HCI_CONTROL_ANC_COMMAND_ENABLE_UNREAD_ALERTS ( ( HCI_CONTROL_GROUP_ANC << 8 ) | 0x05 ) /* Command to enable unread alerts notifications */
#define HCI_CONTROL_ANC_COMMAND_DISABLE_NEW_ALERTS ( ( HCI_CONTROL_GROUP_ANC << 8 ) | 0x06 ) /* Command to disable new alerts notifications */
#define HCI_CONTROL_ANC_COMMAND_DISABLE_UNREAD_ALERTS ( ( HCI_CONTROL_GROUP_ANC << 8 ) | 0x07 ) /* Command to disable unread alerts notifications */
/* ANS commands */
#define HCI_CONTROL_ANS_COMMAND_SET_SUPPORTED_NEW_ALERT_CATEGORIES ( ( HCI_CONTROL_GROUP_ANS << 8 ) | 0x01 ) /* Command to configure supported new alerts */
#define HCI_CONTROL_ANS_COMMAND_SET_SUPPORTED_UNREAD_ALERT_CATEGORIES ( ( HCI_CONTROL_GROUP_ANS << 8 ) | 0x02 ) /* Command to configure supported unread alerts */
#define HCI_CONTROL_ANS_COMMAND_GENERATE_ALERT ( ( HCI_CONTROL_GROUP_ANS << 8 ) | 0x03 ) /* Command to generate new alert and unread alert of requested category */
#define HCI_CONTROL_ANS_COMMAND_CLEAR_ALERT ( ( HCI_CONTROL_GROUP_ANS << 8 ) | 0x04 ) /* Command to clear new alert and unread alert count of requested category */
/* AMS commands */
#define HCI_CONTROL_AMS_COMMAND_CONNECT ( ( HCI_CONTROL_GROUP_AMS << 8 ) | 0x01 ) /* Establish AMS connection */
#define HCI_CONTROL_AMS_COMMAND_DISCONNECT ( ( HCI_CONTROL_GROUP_AMS << 8 ) | 0x02 ) /* Disconnect AMS */
/* IAP2 commands */
#define HCI_CONTROL_IAP2_COMMAND_CONNECT ( ( HCI_CONTROL_GROUP_IAP2 << 8 ) | 0x01 ) /* Establish connection to SPP server */
#define HCI_CONTROL_IAP2_COMMAND_DISCONNECT ( ( HCI_CONTROL_GROUP_IAP2 << 8 ) | 0x02 ) /* Release SPP connection */
#define HCI_CONTROL_IAP2_COMMAND_DATA ( ( HCI_CONTROL_GROUP_IAP2 << 8 ) | 0x03 ) /* Send data */
#define HCI_CONTROL_IAP2_COMMAND_GET_AUTH_CHIP_INFO ( ( HCI_CONTROL_GROUP_IAP2 << 8 ) | 0x04 ) /* Send get auth chip info */
#define HCI_CONTROL_IAP2_COMMAND_GET_AUTH_CHIP_CERTIFICATE ( ( HCI_CONTROL_GROUP_IAP2 << 8 ) | 0x05 ) /* Send get auth chip info */
#define HCI_CONTROL_IAP2_COMMAND_GET_AUTH_CHIP_SIGNATURE ( ( HCI_CONTROL_GROUP_IAP2 << 8 ) | 0x06 ) /* Send get auth chip info */
#define HCI_CONTROL_IAP2_COMMAND_SEND_IDENTITY_DATA ( ( HCI_CONTROL_GROUP_IAP2 << 8 ) | 0x07 ) /* Send identity data */
#define HCI_CONTROL_IAP2_COMMAND_PEER_MTU ( ( HCI_CONTROL_GROUP_IAP2 << 8 ) | 0x08 ) /* Get peer mtu size */
/* Handsfree AG commands */
#define HCI_CONTROL_AG_COMMAND_CONNECT ( ( HCI_CONTROL_GROUP_AG << 8 ) | 0x01 ) /* Establish connection to HF Device */
#define HCI_CONTROL_AG_COMMAND_DISCONNECT ( ( HCI_CONTROL_GROUP_AG << 8 ) | 0x02 ) /* Release HF connection */
#define HCI_CONTROL_AG_COMMAND_OPEN_AUDIO ( ( HCI_CONTROL_GROUP_AG << 8 ) | 0x03 ) /* Create audio connection on existing service level connection */
#define HCI_CONTROL_AG_COMMAND_CLOSE_AUDIO ( ( HCI_CONTROL_GROUP_AG << 8 ) | 0x04 ) /* Disconnect audio */
#define HCI_CONTROL_AG_COMMAND_SET_CIND ( ( HCI_CONTROL_GROUP_AG << 8 ) | 0x05 ) /* Set CIND */
#define HCI_CONTROL_AG_COMMAND_STR ( ( HCI_CONTROL_GROUP_AG << 8 ) | 0x06 ) /* Send AT Command */
/* Bluetooth Serial over GATT service commands */
#define HCI_CONTROL_BSG_COMMAND_DATA ( ( HCI_CONTROL_GROUP_BSG << 8 ) | 0x03 ) /* Send data */
/* Miscellaneous commands */
#define HCI_CONTROL_MISC_COMMAND_PING ( ( HCI_CONTROL_GROUP_MISC << 8 ) | 0x01 ) /* Ping controller */
#define HCI_CONTROL_MISC_COMMAND_GET_VERSION ( ( HCI_CONTROL_GROUP_MISC << 8 ) | 0x02 ) /* Get SDK Version */
/* HID Host commands */
#define HCI_CONTROL_HIDH_COMMAND_CONNECT ( ( HCI_CONTROL_GROUP_HIDH << 8 ) | 0x01 ) /* HIDH Connect */
#define HCI_CONTROL_HIDH_COMMAND_DISCONNECT ( ( HCI_CONTROL_GROUP_HIDH << 8 ) | 0x02 ) /* HIDH Disconnect */
#define HCI_CONTROL_HIDH_COMMAND_ADD ( ( HCI_CONTROL_GROUP_HIDH << 8 ) | 0x03 ) /* HIDH Add Device */
#define HCI_CONTROL_HIDH_COMMAND_REMOVE ( ( HCI_CONTROL_GROUP_HIDH << 8 ) | 0x04 ) /* HIDH Remove Device */
#define HCI_CONTROL_HIDH_COMMAND_GET_DESCRIPTOR ( ( HCI_CONTROL_GROUP_HIDH << 8 ) | 0x05 ) /* HIDH Get HID Descriptor */
#define HCI_CONTROL_HIDH_COMMAND_SET_REPORT ( ( HCI_CONTROL_GROUP_HIDH << 8 ) | 0x06 ) /* HIDH Set Report */
#define HCI_CONTROL_HIDH_COMMAND_GET_REPORT ( ( HCI_CONTROL_GROUP_HIDH << 8 ) | 0x07 ) /* HIDH Get Report */
#define HCI_CONTROL_HIDH_COMMAND_SET_PROTOCOL ( ( HCI_CONTROL_GROUP_HIDH << 8 ) | 0x08 ) /* HIDH Set HID Protocol */
#define HCI_CONTROL_HIDH_COMMAND_WAKEUP_PATTERN_SET ( ( HCI_CONTROL_GROUP_HIDH << 8 ) | 0x09 ) /* HIDH WakeUp Pattern */
#define HCI_CONTROL_HIDH_COMMAND_WAKEUP_CONTROL ( ( HCI_CONTROL_GROUP_HIDH << 8 ) | 0x0A ) /* HIDH WakeUp Control */
/* Audio Sink Profile commands */
#define HCI_CONTROL_AUDIO_SINK_COMMAND_CONNECT ( ( HCI_CONTROL_GROUP_AUDIO_SINK << 8 ) | 0x01 ) /* Audio connect to source */
#define HCI_CONTROL_AUDIO_SINK_COMMAND_DISCONNECT ( ( HCI_CONTROL_GROUP_AUDIO_SINK << 8 ) | 0x02 ) /* Audio disconnect */
#define HCI_CONTROL_AUDIO_SINK_COMMAND_START ( ( HCI_CONTROL_GROUP_AUDIO_SINK << 8 ) | 0x03 ) /* Start audio with specific Sample rate/mode */
#define HCI_CONTROL_AUDIO_SINK_COMMAND_STOP ( ( HCI_CONTROL_GROUP_AUDIO_SINK << 8 ) | 0x04 ) /* Stop audio */
#define HCI_CONTROL_AUDIO_SINK_COMMAND_START_RSP ( ( HCI_CONTROL_GROUP_AUDIO_SINK << 8 ) | 0x05 ) /* Response to A2DP start request, send start response */
#define HCI_CONTROL_AUDIO_SINK_COMMAND_CHANGE_ROUTE ( ( HCI_CONTROL_GROUP_AUDIO_SINK << 8 ) | 0x06 ) /* Change the audio route */
/* PBAP Client commands */
#define HCI_CONTROL_PBC_COMMAND_CONNECT ( ( HCI_CONTROL_GROUP_PBC << 8 ) | 0x01 ) /* PBC Connect */
#define HCI_CONTROL_PBC_COMMAND_DISCONNECT ( ( HCI_CONTROL_GROUP_PBC << 8 ) | 0x02 ) /* PBC Disconnect */
#define HCI_CONTROL_PBC_COMMAND_GET_PHONEBOOK ( ( HCI_CONTROL_GROUP_PBC << 8 ) | 0x03 ) /* Download phonebook */
#define HCI_CONTROL_PBC_COMMAND_GET_CALL_HISTORY ( ( HCI_CONTROL_GROUP_PBC << 8 ) | 0x04 ) /* Get call history */
#define HCI_CONTROL_PBC_COMMAND_GET_INCOMMING_CALLS ( ( HCI_CONTROL_GROUP_PBC << 8 ) | 0x05 ) /* Get list of incoming calls */
#define HCI_CONTROL_PBC_COMMAND_GET_OUTGOING_CALLS ( ( HCI_CONTROL_GROUP_PBC << 8 ) | 0x06 ) /* Get list of outgoing calls */
#define HCI_CONTROL_PBC_COMMAND_GET_MISSED_CALLS ( ( HCI_CONTROL_GROUP_PBC << 8 ) | 0x07 ) /* Get list of missed calls */
#define HCI_CONTROL_PBC_COMMAND_ABORT ( ( HCI_CONTROL_GROUP_PBC << 8 ) | 0x08 ) /* Abort current operation */
#define HCI_CONTROL_PBC_COMMAND_GET_FAVORITE_CONTACTS ( ( HCI_CONTROL_GROUP_PBC << 8 ) | 0x09 ) /* Get list of favorite contacts */
/* LE COC commands */
#define HCI_CONTROL_LE_COC_COMMAND_CONNECT ( ( HCI_CONTROL_GROUP_LE_COC << 8 ) | 0x01 ) /* LE COC Connect */
#define HCI_CONTROL_LE_COC_COMMAND_DISCONNECT ( ( HCI_CONTROL_GROUP_LE_COC << 8 ) | 0x02 ) /* LE COC Disconnect */
#define HCI_CONTROL_LE_COC_COMMAND_SEND_DATA ( ( HCI_CONTROL_GROUP_LE_COC << 8 ) | 0x03 ) /* Send data */
#define HCI_CONTROL_LE_COC_COMMAND_SET_MTU ( ( HCI_CONTROL_GROUP_LE_COC << 8 ) | 0x04 ) /* Set MTU size */
#define HCI_CONTROL_LE_COC_COMMAND_SET_PSM ( ( HCI_CONTROL_GROUP_LE_COC << 8 ) | 0x05 ) /* Set PSM number */
#define HCI_CONTROL_LE_COC_COMMAND_ENABLE_LE2M ( ( HCI_CONTROL_GROUP_LE_COC << 8 ) | 0x06 ) /* Enable LE2M PHY */
/* LED Demo commands */
#define HCI_CONTROL_LED_COMMAND_TURN_ON ( ( HCI_CONTROL_GROUP_LED_DEMO << 8 ) | 0x01 ) /* LED Turn On */
#define HCI_CONTROL_LED_COMMAND_TURN_OFF ( ( HCI_CONTROL_GROUP_LED_DEMO << 8 ) | 0x02 ) /* LED Turn Off */
#define HCI_CONTROL_LED_COMMAND_SET_BRIGHTNESS ( ( HCI_CONTROL_GROUP_LED_DEMO << 8 ) | 0x03 ) /* LED set brightness level */
/* Mesh models commands */
#define HCI_CONTROL_MESH_COMMAND_ONOFF_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x01 ) /* Generic On/Off Get command */
#define HCI_CONTROL_MESH_COMMAND_ONOFF_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x02 ) /* Generic On/Off Get command */
#define HCI_CONTROL_MESH_COMMAND_LEVEL_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x03 ) /* Generic Level Client Get command */
#define HCI_CONTROL_MESH_COMMAND_LEVEL_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x04 ) /* Generic Level Client Set command */
#define HCI_CONTROL_MESH_COMMAND_LEVEL_DELTA_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x05 ) /* Generic Level Client Delta command */
#define HCI_CONTROL_MESH_COMMAND_LEVEL_MOVE_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x06 ) /* Generic Level Client Move command */
#define HCI_CONTROL_MESH_COMMAND_DEF_TRANS_TIME_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x07 ) /* Generic Default Transition Time Set command */
#define HCI_CONTROL_MESH_COMMAND_DEF_TRANS_TIME_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x08 ) /* Generic Default Transition Time Get command */
#define HCI_CONTROL_MESH_COMMAND_ONPOWERUP_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x09 ) /* Power On/Off Set command */
#define HCI_CONTROL_MESH_COMMAND_ONPOWERUP_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x0a ) /* Power On/Off Get command */
#define HCI_CONTROL_MESH_COMMAND_POWER_LEVEL_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x0b ) /* Generic Power Level Get command */
#define HCI_CONTROL_MESH_COMMAND_POWER_LEVEL_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x0c ) /* Generic Power Level Set command */
#define HCI_CONTROL_MESH_COMMAND_POWER_LEVEL_LAST_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x0d ) /* Generic Power Level Last Get command */
#define HCI_CONTROL_MESH_COMMAND_POWER_LEVEL_DEFAULT_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x0e ) /* Generic Power Level Default Get command */
#define HCI_CONTROL_MESH_COMMAND_POWER_LEVEL_DEFAULT_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x0f ) /* Generic Power Level Default Set command */
#define HCI_CONTROL_MESH_COMMAND_POWER_LEVEL_RANGE_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x10 ) /* Generic Power Level Range Get command */
#define HCI_CONTROL_MESH_COMMAND_POWER_LEVEL_RANGE_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x11 ) /* Generic Power Level Range Set command */
#define HCI_CONTROL_MESH_COMMAND_LOCATION_GLOBAL_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x12 ) /* Set Global Location data */
#define HCI_CONTROL_MESH_COMMAND_LOCATION_LOCAL_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x13 ) /* Set Local Location data */
#define HCI_CONTROL_MESH_COMMAND_LOCATION_GLOBAL_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x14 ) /* Get Global Location data */
#define HCI_CONTROL_MESH_COMMAND_LOCATION_LOCAL_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x15 ) /* Get_Local Location data */
#define HCI_CONTROL_MESH_COMMAND_BATTERY_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x16 ) /* Battery Get state */
#define HCI_CONTROL_MESH_COMMAND_BATTERY_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x17 ) /* Battery state changed */
#define HCI_CONTROL_MESH_COMMAND_PROPERTIES_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x18 ) /* Generic Set Value of the Property */
#define HCI_CONTROL_MESH_COMMAND_PROPERTY_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x19 ) /* Generic Set Value of the Property */
#define HCI_CONTROL_MESH_COMMAND_PROPERTY_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x1a ) /* Generic Value of the Property Changed Status*/
#define HCI_CONTROL_MESH_COMMAND_LIGHT_LIGHTNESS_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x1b ) /* Light Lightness Get command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_LIGHTNESS_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x1c ) /* Light Lightness Set command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_LIGHTNESS_LINEAR_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x1d ) /* Light Lightness Linear Get command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_LIGHTNESS_LINEAR_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x1e ) /* Light Lightness Linear Set command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_LIGHTNESS_LAST_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x1f ) /* Light Lightness Last Get command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_LIGHTNESS_DEFAULT_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x20 ) /* Light Lightness Default Get command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_LIGHTNESS_DEFAULT_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x21 ) /* Light Lightness Default Set command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_LIGHTNESS_RANGE_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x22 ) /* Light Lightness Range Get command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_LIGHTNESS_RANGE_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x23 ) /* Light Lightness Range Set command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_CTL_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x24 ) /* Light CTL Client Get command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_CTL_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x25 ) /* Light CTL Client Set command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_CTL_TEMPERATURE_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x26 ) /* Light CTL Client Temperature Get command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_CTL_TEMPERATURE_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x27 ) /* Light CTL Client Temperature Set command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_CTL_TEMPERATURE_RANGE_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x28 ) /* Light CTL Client Temperature Range Get command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_CTL_TEMPERATURE_RANGE_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x29 ) /* Light CTL Client Temperature Range Set command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_CTL_DEFAULT_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x2a ) /* Light CTL Client Default Get command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_CTL_DEFAULT_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x2b ) /* Light CTL Client Default Set command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_HSL_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x2c ) /* Light HSL Client Get command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_HSL_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x2d ) /* Light HSL Client Set command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_HSL_TARGET_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x2e ) /* Light HSL Client Target Get command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_HSL_RANGE_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x2f ) /* Light HSL Client Range Get command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_HSL_RANGE_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x30 ) /* Light HSL Client Range Set command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_HSL_DEFAULT_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x31 ) /* Light HSL Client Default Get command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_HSL_DEFAULT_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x32 ) /* Light HSL Client Default Set command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_HSL_HUE_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x33 ) /* Light HSL Client Hue Get command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_HSL_HUE_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x34 ) /* Light HSL Client Hue Set command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_HSL_SATURATION_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x35 ) /* Light HSL Client Saturation Get command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_HSL_SATURATION_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x36 ) /* Light HSL Client Saturation Set command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_XYL_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x37 ) /* Light XYL Client Get command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_XYL_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x38 ) /* Light XYL Client Set command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_XYL_RANGE_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x39 ) /* Light XYL Client Range Get command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_XYL_RANGE_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x3a ) /* Light XYL Client Range Set command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_XYL_TARGET_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x3b ) /* Light XYL Client Target Get command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_XYL_DEFAULT_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x3c ) /* Light XYL Client Default Get command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_XYL_DEFAULT_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x3d ) /* Light XYL Client Default Set command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_LC_MODE_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x3e ) /* Light LC Client Mode Get command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_LC_MODE_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x3f ) /* Light LC Client Mode Set command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_LC_OCCUPANCY_MODE_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x40 ) /* Light LC Client Occupancy Mode Get command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_LC_OCCUPANCY_MODE_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x41 ) /* Light LC Client Occupancy Mode Set command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_LC_ONOFF_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x42 ) /* Light LC Client OnOff Get command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_LC_ONOFF_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x43 ) /* Light LC Client OnOff Set command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_LC_PROPERTY_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x44 ) /* Light LC Client Property Get command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_LC_PROPERTY_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x45 ) /* Light LC Client Property Set command */
#define HCI_CONTROL_MESH_COMMAND_LIGHT_LC_OCCUPANCY_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x46 ) /* Light LC Server Occupancy Detected command */
#define HCI_CONTROL_MESH_COMMAND_SENSOR_DESCRIPTOR_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x47 ) /* Sensor Descriptor Get command */
#define HCI_CONTROL_MESH_COMMAND_SENSOR_CADENCE_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x48 ) /* Sensor Cadence Get command */
#define HCI_CONTROL_MESH_COMMAND_SENSOR_CADENCE_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x49 ) /* Sensor Cadence Set command */
#define HCI_CONTROL_MESH_COMMAND_SENSOR_SETTINGS_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x4a ) /* Sensor Settings Get command */
#define HCI_CONTROL_MESH_COMMAND_SENSOR_SETTING_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x4b ) /* Sensor Setting Get command */
#define HCI_CONTROL_MESH_COMMAND_SENSOR_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x4c ) /* Sensor Get command */
#define HCI_CONTROL_MESH_COMMAND_SENSOR_COLUMN_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x4d ) /* Sensor Column Get command */
#define HCI_CONTROL_MESH_COMMAND_SENSOR_SERIES_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x4e ) /* Sensor Series Get command */
#define HCI_CONTROL_MESH_COMMAND_SENSOR_SETTING_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x4f ) /* Sensor Setting Set command */
#define HCI_CONTROL_MESH_COMMAND_SENSOR_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x50 ) /* Sensor Status command */
#define HCI_CONTROL_MESH_COMMAND_SENSOR_COLUMN_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x51 ) /* Sensor Column Status command */
#define HCI_CONTROL_MESH_COMMAND_SENSOR_SERIES_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x52 ) /* Sensor Series Status command */
#define HCI_CONTROL_MESH_COMMAND_SCENE_STORE ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x53 ) /* Scene Store command */
#define HCI_CONTROL_MESH_COMMAND_SCENE_RECALL ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x54 ) /* Scene Delete command */
#define HCI_CONTROL_MESH_COMMAND_SCENE_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x55 ) /* Scene Get command */
#define HCI_CONTROL_MESH_COMMAND_SCENE_REGISTER_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x56 ) /* Scene Register Get command */
#define HCI_CONTROL_MESH_COMMAND_SCENE_DELETE ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x57 ) /* Scene Delete command */
#define HCI_CONTROL_MESH_COMMAND_SCHEDULER_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x58 ) /* Scheduler Register Get command */
#define HCI_CONTROL_MESH_COMMAND_SCHEDULER_ACTION_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x59 ) /* Scheduler Action Get command */
#define HCI_CONTROL_MESH_COMMAND_SCHEDULER_ACTION_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x5a ) /* Scheduler Action Set command */
#define HCI_CONTROL_MESH_COMMAND_TIME_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x5b ) /* Time Get command */
#define HCI_CONTROL_MESH_COMMAND_TIME_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x5c ) /* Time Set command */
#define HCI_CONTROL_MESH_COMMAND_TIME_ZONE_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x5d ) /* Time Zone Get command */
#define HCI_CONTROL_MESH_COMMAND_TIME_ZONE_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x5e ) /* Time Zone Set command */
#define HCI_CONTROL_MESH_COMMAND_TIME_TAI_UTC_DELTA_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x5f ) /* Time TAI_UTC Delta Get command */
#define HCI_CONTROL_MESH_COMMAND_TIME_TAI_UTC_DELTA_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x60 ) /* Time TAI_UTC Delta Set command */
#define HCI_CONTROL_MESH_COMMAND_TIME_ROLE_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x61 ) /* Time Role Get command */
#define HCI_CONTROL_MESH_COMMAND_TIME_ROLE_SET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x62 ) /* Time Role Set command */
#define HCI_CONTROL_MESH_COMMAND_FW_DISTRIBUTION_UPLOAD_START ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x63 ) /* Prepare Distribution Client for FW Upload */
#define HCI_CONTROL_MESH_COMMAND_FW_DISTRIBUTION_UPLOAD_DATA ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x64 ) /* FW Upload next data chunk */
#define HCI_CONTROL_MESH_COMMAND_FW_DISTRIBUTION_UPLOAD_FINISH ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x65 ) /* FW Upload completed */
#define HCI_CONTROL_MESH_COMMAND_FW_DISTRIBUTION_UPLOAD_GET_STATUS ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x66 ) /* Get current status and phase */
#define HCI_CONTROL_MESH_COMMAND_FW_DISTRIBUTION_START ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x67 ) /* FW Distribution start */
#define HCI_CONTROL_MESH_COMMAND_FW_DISTRIBUTION_SUSPEND ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x68 ) /* FW Distribution suspend */
#define HCI_CONTROL_MESH_COMMAND_FW_DISTRIBUTION_RESUME ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x69 ) /* FW Distribution resume */
#define HCI_CONTROL_MESH_COMMAND_FW_DISTRIBUTION_STOP ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x6a ) /* FW Distribution stop */
#define HCI_CONTROL_MESH_COMMAND_FW_DISTRIBUTION_GET_STATUS ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x6b ) /* FW Distribution get current status */
#define HCI_CONTROL_MESH_COMMAND_FW_UPDATE_INFO_GET ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x6c ) /* FW Update get device firmware info */
#define HCI_CONTROL_MESH_COMMAND_FW_UPDATE_METADATA_CHECK ( ( HCI_CONTROL_GROUP_MESH_MODELS << 8 ) | 0x6d ) /* FW Update check metadata (to see if FW can be accepted) */
/* Mesh commands */
#define HCI_CONTROL_MESH_COMMAND_CORE_NETWORK_LAYER_TRNSMIT ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x01 ) /* Network Layer Transmit Mesage command */
#define HCI_CONTROL_MESH_COMMAND_CORE_TRANSPORT_LAYER_TRNSMIT ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x02 ) /* Transport Layer Transmit Mesage command */
#define HCI_CONTROL_MESH_COMMAND_CORE_IVUPDATE_SIGNAL_TRNSIT ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x03 ) /* IV UPDATE Transit Signal command */
#define HCI_CONTROL_MESH_COMMAND_PROVISION_SCAN_CAPABILITIES_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x04 ) /* Sends command to get remote provisioner scan information */
#define HCI_CONTROL_MESH_COMMAND_PROVISION_SCAN_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x05 ) /* Sends command to get remote provisioner scan */
#define HCI_CONTROL_MESH_COMMAND_PROVISION_SCAN_START ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x06 ) /* Sends command to start scanning for unprovisioned devices */
#define HCI_CONTROL_MESH_COMMAND_PROVISION_SCAN_STOP ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x07 ) /* Sends command to stop scanning for unprovisioned devices */
#define HCI_CONTROL_MESH_COMMAND_PROVISION_CONNECT ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x08 ) /* Sends command to establish provisioning link to remote device */
#define HCI_CONTROL_MESH_COMMAND_PROVISION_DISCONNECT ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x09 ) /* Sends command to disconnect provisioning link with remote device */
#define HCI_CONTROL_MESH_COMMAND_PROVISION_START ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x0a ) /* Sends command to start provisioning of the remote device */
#define HCI_CONTROL_MESH_COMMAND_PROVISION_OOB_CONFIGURE ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x0b ) /* Sends out of band configuration for provisioning device */
#define HCI_CONTROL_MESH_COMMAND_PROVISION_OOB_VALUE ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x0c ) /* Sends command with out of band value for confirmation calculation */
#define HCI_CONTROL_MESH_COMMAND_SEARCH_PROXY ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x0d ) /* Sends a command to start/stop scanning for GATT proxy devices */
#define HCI_CONTROL_MESH_COMMAND_PROXY_CONNECT ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x0e ) /* Sends a command to connect to a GATT proxy devices */
#define HCI_CONTROL_MESH_COMMAND_PROXY_DISCONNECT ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x0f ) /* Sends a command to disconnect to a GATT proxy devices */
#define HCI_CONTROL_MESH_COMMAND_PROXY_FILTER_TYPE_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x10 ) /* Set Proxy Filter Type */
#define HCI_CONTROL_MESH_COMMAND_PROXY_FILTER_ADDRESSES_ADD ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x11 ) /* Add Addresses to Filter */
#define HCI_CONTROL_MESH_COMMAND_PROXY_FILTER_ADDRESSES_DELETE ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x12 ) /* Remove Addresses to Filter */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_NODE_RESET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x13 ) /* Node Reset */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_BEACON_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x14 ) /* Beacon State Get */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_BEACON_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x15 ) /* Beacon State Set */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_COMPOSITION_DATA_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x16 ) /* Composition Data Get */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_DEFAULT_TTL_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x17 ) /* Default TTL Get */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_DEFAULT_TTL_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x18 ) /* Default TTL Set */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_GATT_PROXY_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x19 ) /* GATT Proxy State Get */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_GATT_PROXY_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x1a ) /* GATT Proxy State Set */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_RELAY_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x1b ) /* Relay Configuration Get */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_RELAY_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x1c ) /* Relay Configuration Set */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_FRIEND_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x1d ) /* Relay Configuration Set */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_FRIEND_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x1e ) /* Relay Configuration Set */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_HEARBEAT_SUBSCRIPTION_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x1f ) /* Hearbeat Subscription Set */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_HEARBEAT_SUBSCRIPTION_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x20 ) /* Hearbeat Subscription Set */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_HEARBEAT_PUBLICATION_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x21 ) /* Hearbeat Publication Set */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_HEARBEAT_PUBLICATION_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x22 ) /* Hearbeat Publication Set */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_NETWORK_TRANSMIT_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x23 ) /* Network Transmit Get */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_NETWORK_TRANSMIT_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x24 ) /* Network Transmit Set */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_MODEL_PUBLICATION_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x25 ) /* Model Publication Get */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_MODEL_PUBLICATION_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x26 ) /* Model Publication Set */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_MODEL_SUBSCRIPTION_ADD ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x27 ) /* Model Subscription Add */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_MODEL_SUBSCRIPTION_DELETE ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x28 ) /* Model Subscription Delete */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_MODEL_SUBSCRIPTION_OVERWRITE ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x29 ) /* Model Subscription Overwrite */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_MODEL_SUBSCRIPTION_DELETE_ALL ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x2a ) /* Model Subscription Delete All */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_MODEL_SUBSCRIPTION_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x2b ) /* Model Subscription Get */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_NET_KEY_ADD ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x2c ) /* NetKey Add */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_NET_KEY_DELETE ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x2d ) /* NetKey Delete */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_NET_KEY_UPDATE ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x2e ) /* NetKey Update */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_NET_KEY_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x2f ) /* NetKey Get */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_APP_KEY_ADD ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x30 ) /* AppKey Add */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_APP_KEY_DELETE ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x31 ) /* AppKey Delete */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_APP_KEY_UPDATE ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x32 ) /* AppKey Update */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_APP_KEY_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x33 ) /* AppKey Get */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_MODEL_APP_BIND ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x34 ) /* Model App Bind */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_MODEL_APP_UNBIND ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x35 ) /* Model App Unind */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_MODEL_APP_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x36 ) /* Model App Get */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_NODE_IDENTITY_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x37 ) /* Node Identity Get */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_NODE_IDENTITY_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x38 ) /* Node Identity Get */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_LPN_POLL_TIMEOUT_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x39 ) /* LPN Poll Timeout Get */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_KEY_REFRESH_PHASE_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x3a ) /* Key Refresh Phase Get */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_KEY_REFRESH_PHASE_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x3b ) /* Key Refresh Phase Set */
#define HCI_CONTROL_MESH_COMMAND_HEALTH_FAULT_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x3c ) /* Health Fault Get */
#define HCI_CONTROL_MESH_COMMAND_HEALTH_FAULT_CLEAR ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x3d ) /* Health Fault Clear */
#define HCI_CONTROL_MESH_COMMAND_HEALTH_FAULT_TEST ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x3e ) /* Health Fault Test */
#define HCI_CONTROL_MESH_COMMAND_HEALTH_PERIOD_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x3f ) /* Health Period Get */
#define HCI_CONTROL_MESH_COMMAND_HEALTH_PERIOD_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x40 ) /* Health Period Set */
#define HCI_CONTROL_MESH_COMMAND_HEALTH_ATTENTION_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x41 ) /* Health Attention Get */
#define HCI_CONTROL_MESH_COMMAND_HEALTH_ATTENTION_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x42 ) /* Health Attention Set */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_MODEL_ADD ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x43 ) /* Add Vendor Model */
#define HCI_CONTROL_MESH_COMMAND_TRACE_CORE_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x44 ) /* Set Level for Core Traces */
#define HCI_CONTROL_MESH_COMMAND_TRACE_MODELS_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x45 ) /* Set Level for Models Traces */
#define HCI_CONTROL_MESH_COMMAND_RSSI_TEST_START ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x46 ) /* Start RSSI test */
#define HCI_CONTROL_MESH_COMMAND_SET_ADV_TX_POWER ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x47 ) /* Set Mesh Core ADV Tx Power */
#define HCI_CONTROL_MESH_COMMAND_SET_LOCAL_DEVICE ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x48 ) /* Set Local Device. Application can set it once to make provisioner client. */
#define HCI_CONTROL_MESH_COMMAND_SET_DEVICE_KEY ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x49 ) /* Setup device key. Application can set it once and then send multiple configuration commands. */
#define HCI_CONTROL_MESH_COMMAND_CORE_LOW_POWER_SEND_FRIEND_CLEAR ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x4a ) /* Terminate friendship with a Friend by sending a Friend Clear */
#define HCI_CONTROL_MESH_COMMAND_CORE_PROVISION ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x4b ) /* Sends command to provision remote device */
#define HCI_CONTROL_MESH_COMMAND_CORE_CLEAR_REPLAY_PROT_LIST ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x4c ) /* Sends command to clear replay protection list */
#define HCI_CONTROL_MESH_COMMAND_CORE_SET_IV_UPDATE_TEST_MODE ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x4d ) /* Sends command to set or reset IV UPDATE test mode */
#define HCI_CONTROL_MESH_COMMAND_CORE_SET_IV_RECOVERY_STATE ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x4e ) /* Sends command to set or reset IV RECOVERY mode */
#define HCI_CONTROL_MESH_COMMAND_CORE_HEALTH_SET_FAULTS ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x4f ) /* Sends command to set faults array */
#define HCI_CONTROL_MESH_COMMAND_CORE_CFG_ADV_IDENTITY ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x50 ) /* Begin advertising with Node Identity, simulating user interaction */
#define HCI_CONTROL_MESH_COMMAND_CORE_ACCESS_PDU ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x51 ) /* Handle Access PDU */
#define HCI_CONTROL_MESH_COMMAND_CORE_SEND_SUBS_UPDT ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x52 ) /* Send Friend Subscription Add or Remove message */
#define HCI_CONTROL_MESH_COMMAND_CORE_SET_SEQ ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x53 ) /* Set Sequence Number Command */
#define HCI_CONTROL_MESH_COMMAND_CORE_DEL_SEQ ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x54 ) /* Delete Sequence Number from RPL list Command */
#define HCI_CONTROL_MESH_COMMAND_APP_START ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x55 ) /* Starts Mesh Application - calls mesh_application_init() and deletes all NVRAM chunks */
#define HCI_CONTROL_MESH_COMMAND_PROVISION_SCAN_EXTENDED_START ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x56 ) /* Sends command to start extended scan */
#define HCI_CONTROL_MESH_COMMAND_GATEWAY_CONN_STATUS ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x57 ) /* Application sends connect proxy */
#define HCI_CONTROL_MESH_COMMAND_SEND_PROXY_DATA ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x58 ) /* Mesh Application can send proxy data from MCU */
#define HCI_CONTROL_MESH_COMMAND_SET_MODEL_LEVEL_ACCESS ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x59 ) /* Mesh Application processes raw data access layer data */
#define HCI_CONTROL_MESH_COMMAND_RAW_MODEL_DATA ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x5a ) /* Raw model data to be passed to access layer */
#define HCI_CONTROL_MESH_COMMAND_VENDOR_DATA ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x5b ) /* Vendor model data */
#define HCI_CONTROL_MESH_COMMAND_HARD_RESET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x5c ) /* Sets UUID if it is not empty and then does factory reset */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_PRIVATE_BEACON_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x5d ) /* Private Beacon State Get */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_PRIVATE_BEACON_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x5e ) /* Private Beacon State Set */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_PRIVATE_GATT_PROXY_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x5f ) /* Private GATT Proxy State Get */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_PRIVATE_GATT_PROXY_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x60 ) /* Private GATT Proxy State Set */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_PRIVATE_NODE_IDENTITY_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x61 ) /* Private Node Identity Get */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_PRIVATE_NODE_IDENTITY_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x62 ) /* Private Node Identity Get */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_ON_DEMAND_PRIVATE_PROXY_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x63 ) /* On-Demand Private Proxy State Get */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_ON_DEMAND_PRIVATE_PROXY_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x64 ) /* On-Demand Private Proxy State Set */
#define HCI_CONTROL_MESH_COMMAND_SOLICITATION_PDU_RPL_ITEMS_CLEAR ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x65 ) /* Solicitation PDU RPL items clear */
#define HCI_CONTROL_MESH_COMMAND_SEND_SOLICITATION_PDU ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x66 ) /* Send solicitation PDU */
#define HCI_CONTROL_MESH_COMMAND_TEST_EVENTS_REPORT_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x67 ) /* Mesh core to report events for test purpose */
#define HCI_CONTROL_MESH_COMMAND_NETWORK_FILTER_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x68 ) /* Send Network Filter Get message */
#define HCI_CONTROL_MESH_COMMAND_NETWORK_FILTER_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x69 ) /* Send Network Filter Set message */
#define HCI_CONTROL_MESH_COMMAND_DF_SET_PATH_MONITORING_TEST_MODE ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x6a ) /* Set Path Monitoring Test Mode */
#define HCI_CONTROL_MESH_COMMAND_DF_TRANSIT_TO_PATH_MONITORING_STATE_SIGNAL ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x6b ) /* Transit to Path Monitoring state signal command */
#define HCI_CONTROL_MESH_COMMAND_DF_STATS_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x6c ) /* Send Directed Forwarding_Statistics Get message */
#define HCI_CONTROL_MESH_COMMAND_DF_DIRECTED_CONTROL_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x6d ) /* an acknowledged message used to get the current Directed Control state of a node */
#define HCI_CONTROL_MESH_COMMAND_DF_DIRECTED_CONTROL_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x6e ) /* an acknowledged message used to set the Directed Control state of a subnet */
#define HCI_CONTROL_MESH_COMMAND_DF_PATH_METRIC_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x6f ) /* An acknowledged message used to get the current Path Metric state of a node */
#define HCI_CONTROL_MESH_COMMAND_DF_PATH_METRIC_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x70 ) /* an acknowledged message used to set the Path Metric state of a node */
#define HCI_CONTROL_MESH_COMMAND_DF_DISCOVERY_TABLE_CAPABILITIES_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x71 ) /* an acknowledged message used to get the current Discovery Table Capabilities state of a node */
#define HCI_CONTROL_MESH_COMMAND_DF_DISCOVERY_TABLE_CAPABILITIES_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x72 ) /* an acknowledged message used to set the Max Concurrent Init state of a node */
#define HCI_CONTROL_MESH_COMMAND_DF_FORWARDING_TABLE_ADD ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x73 ) /* an acknowledged message used to add a fixed path entry to the Forwarding Table state of a node or to update an existing fixed path entry */
#define HCI_CONTROL_MESH_COMMAND_DF_FORWARDING_TABLE_DELETE ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x74 ) /* an acknowledged message used to delete all the path entries from a specific Path Origin to a specific destination from the Forwarding Table state of a node */
#define HCI_CONTROL_MESH_COMMAND_DF_FORWARDING_TABLE_DEPENDENTS_ADD ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x75 ) /* an acknowledged message used to add entries to the Dependent_Origin_List field or to the Dependent_Target_List field of a fixed path entry in the Forwarding Table state of a node. */
#define HCI_CONTROL_MESH_COMMAND_DF_FORWARDING_TABLE_DEPENDENTS_DELETE ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x76 ) /* an acknowledged message used to delete dependent node entries from the Dependent_Origin_List field or the Dependent_Target_List field of a fixed path entry in the Forwarding Table state of a node. */
#define HCI_CONTROL_MESH_COMMAND_DF_FORWARDING_TABLE_DEPENDENTS_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x77 ) /* an acknowledged message used to get the list of unicast address ranges of dependent nodes of the Path Origin or the Path Target of a Forwarding Table entry. */
#define HCI_CONTROL_MESH_COMMAND_DF_FORWARDING_TABLE_ENTRIES_COUNT_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x78 ) /* an acknowledged message used to get the information about the Forwarding Table state of a node */
#define HCI_CONTROL_MESH_COMMAND_DF_FORWARDING_TABLE_ENTRIES_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x79 ) /* an acknowledged message used to get a filtered set of path entries in the Forwarding Table state of a node */
#define HCI_CONTROL_MESH_COMMAND_DF_WANTED_LANES_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x7a ) /* an acknowledged message used to get the Wanted Lanes state of a node */
#define HCI_CONTROL_MESH_COMMAND_DF_WANTED_LANES_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x7b ) /* an acknowledged message used to set the Wanted Lanes state of a node */
#define HCI_CONTROL_MESH_COMMAND_DF_TWO_WAY_PATH_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x7c ) /* an acknowledged message used to get the current Two Way Path state of a node */
#define HCI_CONTROL_MESH_COMMAND_DF_TWO_WAY_PATH_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x7d ) /* an acknowledged message used to set the Two Way Path state of a node */
#define HCI_CONTROL_MESH_COMMAND_DF_PATH_ECHO_INTERVAL_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x7e ) /* an acknowledged message used to get the current Path Echo Interval state of a nod */
#define HCI_CONTROL_MESH_COMMAND_DF_PATH_ECHO_INTERVAL_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x7f ) /* an acknowledged message used to set the Path Echo Interval state of a node */
#define HCI_CONTROL_MESH_COMMAND_DF_DIRECTED_NETWORK_TRANSMIT_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x80 ) /* an acknowledged message used to get the current Directed Network Transmit state of a node */
#define HCI_CONTROL_MESH_COMMAND_DF_DIRECTED_NETWORK_TRANSMIT_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x81 ) /* an acknowledged message used to set the Directed Network Transmit state of a node */
#define HCI_CONTROL_MESH_COMMAND_DF_DIRECTED_RELAY_RETRANSMIT_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x82 ) /* an acknowledged message used to get the current Directed Relay Retransmit state of a node */
#define HCI_CONTROL_MESH_COMMAND_DF_DIRECTED_RELAY_RETRANSMIT_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x83 ) /* an acknowledged message used to set the Directed Relay Retransmit state of a node */
#define HCI_CONTROL_MESH_COMMAND_DF_RSSI_THRESHOLD_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x84 ) /* an acknowledged message used to get the current RSSI Threshold state of a node */
#define HCI_CONTROL_MESH_COMMAND_DF_RSSI_THRESHOLD_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x85 ) /* an acknowledged message used to set the RSSI Margin state of a node */
#define HCI_CONTROL_MESH_COMMAND_DF_DIRECTED_PATHS_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x86 ) /* an acknowledged message used to get the Directed Paths state of a node */
#define HCI_CONTROL_MESH_COMMAND_DF_DIRECTED_PUBLISH_POLICY_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x87 ) /* an acknowledged message used to get the Directed Publish Policy state of a model of an element of a node */
#define HCI_CONTROL_MESH_COMMAND_DF_DIRECTED_PUBLISH_POLICY_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x88 ) /* an acknowledged message used to set the Directed Publish Policy state of a model of an element of a node */
#define HCI_CONTROL_MESH_COMMAND_DF_PATH_DISCOVERY_TIMING_CONTROL_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x89 ) /* an acknowledged message used to get the Path Discovery Timing Control state of a node */
#define HCI_CONTROL_MESH_COMMAND_DF_PATH_DISCOVERY_TIMING_CONTROL_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x8a ) /* an acknowledged message used to set the Path Discovery Timing Control state of a node */
#define HCI_CONTROL_MESH_COMMAND_DF_DIRECTED_CONTROL_NETWORK_TRANSMIT_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x8b ) /* an acknowledged message used to get the current Directed Control Network Transmit state of a node */
#define HCI_CONTROL_MESH_COMMAND_DF_DIRECTED_CONTROL_NETWORK_TRANSMIT_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x8c ) /* an acknowledged message used to set the Directed Control Network Transmit state of a node */
#define HCI_CONTROL_MESH_COMMAND_DF_DIRECTED_CONTROL_RELAY_RETRANSMIT_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x8d ) /* an acknowledged message used to get the current Directed Control Relay Retransmit state of a node */
#define HCI_CONTROL_MESH_COMMAND_DF_DIRECTED_CONTROL_RELAY_RETRANSMIT_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x8e ) /* an acknowledged message used to set the Directed Control Relay Retransmit state of a node */
#define HCI_CONTROL_MESH_COMMAND_CORE_CFG_BEACON ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x8f ) /* Enable/disable beacon/private beacon */
#define HCI_CONTROL_MESH_COMMAND_PROVISION_SEND_INVITE ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x90 ) /* Send provisioning invite PDU to the device */
#define HCI_CONTROL_MESH_COMMAND_PROVISION_RETRIEVE_RECORD ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x91 ) /* Request fragment of the provisioning record from the device */
#define HCI_CONTROL_MESH_COMMAND_CORE_DELAY_STATS_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x92 ) /* Get delay statistics */
#define HCI_CONTROL_MESH_COMMAND_OPCODES_AGGREGATOR_START ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x93 ) /* Opcodes Aggregator starts, the following commands will be added to a sequence (not sent) */
#define HCI_CONTROL_MESH_COMMAND_OPCODES_AGGREGATOR_FINISH ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x94 ) /* Opcodes Aggregator finishes and the sequence will be sent to peer device */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_LARGE_COMPOS_DATA_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x95 ) /* Large Composition Data Get */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_MODELS_METADATA_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x96 ) /* Models Metadata Get */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_SAR_TRANSMITTER_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x97 ) /* SAR Transmitter Get */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_SAR_TRANSMITTER_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x98 ) /* SAR Transmitter Set */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_SAR_RECEIVER_GET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x99 ) /* SAR Receiver Get */
#define HCI_CONTROL_MESH_COMMAND_CONFIG_SAR_RECEIVER_SET ( ( HCI_CONTROL_GROUP_MESH << 8 ) | 0x9a ) /* SAR Receiver Set */
/* Battery Client Profile commands */
#define HCI_CONTROL_BATT_CLIENT_COMMAND_CONNECT ( ( HCI_CONTROL_GROUP_BATT_CLIENT << 8 ) | 0x00 ) /* Battery Client connect */
#define HCI_CONTROL_BATT_CLIENT_COMMAND_DISCONNECT ( ( HCI_CONTROL_GROUP_BATT_CLIENT << 8 ) | 0x01 ) /* Battery Client disconnect */
#define HCI_CONTROL_BATT_CLIENT_COMMAND_ADD ( ( HCI_CONTROL_GROUP_BATT_CLIENT << 8 ) | 0x02 ) /* Battery Client Add */
#define HCI_CONTROL_BATT_CLIENT_COMMAND_REMOVE ( ( HCI_CONTROL_GROUP_BATT_CLIENT << 8 ) | 0x03 ) /* Battery Client Remove */
#define HCI_CONTROL_BATT_CLIENT_COMMAND_BAS_READ ( ( HCI_CONTROL_GROUP_BATT_CLIENT << 8 ) | 0x04 ) /* Battery Client Read Level */
#define HCI_CONTROL_BATT_CLIENT_COMMAND_ENABLE_BROADCAST ( ( HCI_CONTROL_GROUP_BATT_CLIENT << 8 ) | 0x05 ) /* Battery Client turn-on broadcast on the server */
#define HCI_CONTROL_BATT_CLIENT_COMMAND_DISABLE_BROADCAST ( ( HCI_CONTROL_GROUP_BATT_CLIENT << 8 ) | 0x06 ) /* Battery Client turn-on broadcast on the server */
#define HCI_CONTROL_BATT_CLIENT_COMMAND_LEVEL_STATUS_MODIFY ( ( HCI_CONTROL_GROUP_BATT_CLIENT << 8 ) | 0x07 )
#define HCI_CONTROL_BATT_CLIENT_COMMAND_LEVEL_STATUS_SIGNAL ( ( HCI_CONTROL_GROUP_BATT_CLIENT << 8 ) | 0x08 )
#define HCI_CONTROL_BATT_CLIENT_COMMAND_SERVICE_DATE_MODIFY ( ( HCI_CONTROL_GROUP_BATT_CLIENT << 8 ) | 0x09 )
#define HCI_CONTROL_BATT_CLIENT_COMMAND_SERVICE_DATE_SIGNAL ( ( HCI_CONTROL_GROUP_BATT_CLIENT << 8 ) | 0x10 )
#define HCI_CONTROL_BATT_CLIENT_COMMAND_CRITICAL_STATUS_MODIFY ( ( HCI_CONTROL_GROUP_BATT_CLIENT << 8 ) | 0x11 )
#define HCI_CONTROL_BATT_CLIENT_COMMAND_CRITICAL_STATUS_SIGNAL ( ( HCI_CONTROL_GROUP_BATT_CLIENT << 8 ) | 0x12 )
#define HCI_CONTROL_BATT_CLIENT_COMMAND_ENERGY_STATUS_MODIFY ( ( HCI_CONTROL_GROUP_BATT_CLIENT << 8 ) | 0x13 )
#define HCI_CONTROL_BATT_CLIENT_COMMAND_ENERGY_STATUS_SIGNAL ( ( HCI_CONTROL_GROUP_BATT_CLIENT << 8 ) | 0x14 )
#define HCI_CONTROL_BATT_CLIENT_COMMAND_TIME_STATUS_MODIFY ( ( HCI_CONTROL_GROUP_BATT_CLIENT << 8 ) | 0x15 )
#define HCI_CONTROL_BATT_CLIENT_COMMAND_TIME_STATUS_SIGNAL ( ( HCI_CONTROL_GROUP_BATT_CLIENT << 8 ) | 0x16 )
#define HCI_CONTROL_BATT_CLIENT_COMMAND_HEALTH_STATUS_MODIFY ( ( HCI_CONTROL_GROUP_BATT_CLIENT << 8 ) | 0x17 )
#define HCI_CONTROL_BATT_CLIENT_COMMAND_HEALTH_STATUS_SIGNAL ( ( HCI_CONTROL_GROUP_BATT_CLIENT << 8 ) | 0x18 )
#define HCI_CONTROL_BATT_CLIENT_COMMAND_HEALTH_INFO_MODIFY ( ( HCI_CONTROL_GROUP_BATT_CLIENT << 8 ) | 0x19 )
#define HCI_CONTROL_BATT_CLIENT_COMMAND_HEALTH_INFO_SIGNAL ( ( HCI_CONTROL_GROUP_BATT_CLIENT << 8 ) | 0x1A )
#define HCI_CONTROL_BATT_CLIENT_COMMAND_BATTERY_INFO_MODIFY ( ( HCI_CONTROL_GROUP_BATT_CLIENT << 8 ) | 0x1B )
#define HCI_CONTROL_BATT_CLIENT_COMMAND_BATTERY_INFO_SIGNAL ( ( HCI_CONTROL_GROUP_BATT_CLIENT << 8 ) | 0x1C )
#define HCI_CONTROL_BATT_CLIENT_COMMAND_NAME_MODIFY ( ( HCI_CONTROL_GROUP_BATT_CLIENT << 8 ) | 0x1D )
#define HCI_CONTROL_BATT_CLIENT_COMMAND_NAME_SIGNAL ( ( HCI_CONTROL_GROUP_BATT_CLIENT << 8 ) | 0x1E )
#define HCI_CONTROL_BATT_CLIENT_COMMAND_MODEL_MODIFY ( ( HCI_CONTROL_GROUP_BATT_CLIENT << 8 ) | 0x1F )
#define HCI_CONTROL_BATT_CLIENT_COMMAND_MODEL_SIGNAL ( ( HCI_CONTROL_GROUP_BATT_CLIENT << 8 ) | 0x20 )
#define HCI_CONTROL_BATT_CLIENT_COMMAND_NUMBER_MODIFY ( ( HCI_CONTROL_GROUP_BATT_CLIENT << 8 ) | 0x21 )
#define HCI_CONTROL_BATT_CLIENT_COMMAND_NUMBER_SIGNAL ( ( HCI_CONTROL_GROUP_BATT_CLIENT << 8 ) | 0x22 )
#define HCI_CONTROL_BATT_CLIENT_COMMAND_READ ( ( HCI_CONTROL_GROUP_BATT_CLIENT << 8 ) | 0x23 )
/* FindMe Locator Client Profile commands */
#define HCI_CONTROL_FINDME_LOCATOR_COMMAND_CONNECT ( ( HCI_CONTROL_GROUP_FINDME_LOCATOR << 8 ) | 0x00 ) /* FindMe Target connect */
#define HCI_CONTROL_FINDME_LOCATOR_COMMAND_DISCONNECT ( ( HCI_CONTROL_GROUP_FINDME_LOCATOR << 8 ) | 0x01 ) /* FindMe Target disconnect */
#define HCI_CONTROL_FINDME_LOCATOR_COMMAND_ADD ( ( HCI_CONTROL_GROUP_FINDME_LOCATOR << 8 ) | 0x02 ) /* FindMe Target Add */
#define HCI_CONTROL_FINDME_LOCATOR_COMMAND_REMOVE ( ( HCI_CONTROL_GROUP_FINDME_LOCATOR << 8 ) | 0x03 ) /* FindMe Target Remove */
#define HCI_CONTROL_FINDME_LOCATOR_COMMAND_WRITE ( ( HCI_CONTROL_GROUP_FINDME_LOCATOR << 8 ) | 0x04 ) /* FindMe Target Write Alert */
/* OPP Server commands */
#define HCI_CONTROL_OPS_COMMAND_DISCONNECT ( ( HCI_CONTROL_GROUP_OPS << 8 ) | 0x00 ) /* OPS disconnect */
#define HCI_CONTROL_OPS_COMMAND_ACCESS_RSP ( ( HCI_CONTROL_GROUP_OPS << 8 ) | 0x01 ) /* OPS access response */
/* Script commands */
#define HCI_CONTROL_SCRIPT_COMMAND_EXECUTE ( ( HCI_CONTROL_GROUP_SCRIPT << 8 ) | 0x01 ) /* Execute function */
/* OTP Commands */
#define HCI_CONTROL_OTP_COMMAND_CONNECT ( ( HCI_CONTROL_GROUP_OTP << 8 ) | 0x00 ) /* Connect */
#define HCI_CONTROL_OTP_COMMAND_DISCONNECT ( ( HCI_CONTROL_GROUP_OTP << 8 ) | 0x01 ) /* Disconnect */
#define HCI_CONTROL_OTP_COMMAND_START_UPGRADE ( ( HCI_CONTROL_GROUP_OTP << 8 ) | 0x02 ) /* Starting with the firmware upgrade. Prepare for Upgrade */
#define HCI_CONTROL_OTP_COMMAND_SEND_DATA ( ( HCI_CONTROL_GROUP_OTP << 8 ) | 0x03 ) /* OTP send firmware upgrade data */
#define HCI_CONTROL_OTP_COMMAND_UPGRADE ( ( HCI_CONTROL_GROUP_OTP << 8 ) | 0x04 ) /* Upgrade to the new firmware */
#define HCI_CONTROL_OTP_COMMAND_READ_CHAR ( ( HCI_CONTROL_GROUP_OTP << 8 ) | 0x05 ) /* Read Characteristic */
#define HCI_CONTROL_OTP_COMMAND_WRITE_CHAR ( ( HCI_CONTROL_GROUP_OTP << 8 ) | 0x06 ) /* Write Characteristic */
#define HCI_CONTROL_OTP_COMMAND_CONFIGURE_IND ( ( HCI_CONTROL_GROUP_OTP << 8 ) | 0x07 ) /* Configure Indication */
#define HCI_CONTROL_OTP_COMMAND_OACP ( ( HCI_CONTROL_GROUP_OTP << 8 ) | 0x08 ) /* Write OACP Command */
/* MCE commands */
#define HCI_CONTROL_MCE_COMMAND_GET_MAS_INSTANCES ( ( HCI_CONTROL_GROUP_MCE << 8 ) | 0x00 ) /* Get MAS instances */
#define HCI_CONTROL_MCE_COMMAND_CONNECT ( ( HCI_CONTROL_GROUP_MCE << 8 ) | 0x01 ) /* Connect */
#define HCI_CONTROL_MCE_COMMAND_DISCONNECT ( ( HCI_CONTROL_GROUP_MCE << 8 ) | 0x02 ) /* Disconnect */
#define HCI_CONTROL_MCE_COMMAND_LIST_FOLDERS ( ( HCI_CONTROL_GROUP_MCE << 8 ) | 0x03 ) /* List folders */
#define HCI_CONTROL_MCE_COMMAND_SET_FOLDER ( ( HCI_CONTROL_GROUP_MCE << 8 ) | 0x04 ) /* Set folder */
#define HCI_CONTROL_MCE_COMMAND_LIST_MESSAGES ( ( HCI_CONTROL_GROUP_MCE << 8 ) | 0x05 ) /* List messages */
#define HCI_CONTROL_MCE_COMMAND_GET_MESSAGE ( ( HCI_CONTROL_GROUP_MCE << 8 ) | 0x06 ) /* Get message */
#define HCI_CONTROL_MCE_COMMAND_PUSH_MESSAGE ( ( HCI_CONTROL_GROUP_MCE << 8 ) | 0x07 ) /* Push message */
#define HCI_CONTROL_MCE_COMMAND_UPDATE_INBOX ( ( HCI_CONTROL_GROUP_MCE << 8 ) | 0x08 ) /* Update inbox */
#define HCI_CONTROL_MCE_COMMAND_SET_MESSAGE_STATUS ( ( HCI_CONTROL_GROUP_MCE << 8 ) | 0x09 ) /* Set message status */
#define HCI_CONTROL_MCE_COMMAND_ABORT ( ( HCI_CONTROL_GROUP_MCE << 8 ) | 0x0A ) /* Abort */
#define HCI_CONTROL_MCE_COMMAND_NOTIF_REG ( ( HCI_CONTROL_GROUP_MCE << 8 ) | 0x0B ) /* Register for message notification */
/* HomeKit commands */
#define HCI_CONTROL_HK_COMMAND_READ ( ( HCI_CONTROL_GROUP_HK << 8 ) | 0x01 ) /* Read characteristic */
#define HCI_CONTROL_HK_COMMAND_WRITE ( ( HCI_CONTROL_GROUP_HK << 8 ) | 0x02 ) /* Write characteristic */
#define HCI_CONTROL_HK_COMMAND_LIST ( ( HCI_CONTROL_GROUP_HK << 8 ) | 0x03 ) /* List all characteristics */
#define HCI_CONTROL_HK_COMMAND_FACTORY_RESET ( ( HCI_CONTROL_GROUP_HK << 8 ) | 0x04 ) /* Factory reset */
#define HCI_CONTROL_HK_COMMAND_GET_TOKEN ( ( HCI_CONTROL_GROUP_HK << 8 ) | 0x05 ) /* Get software authentication token */
/* HCI Audio commands */
#define HCI_CONTROL_HCI_AUDIO_COMMAND_GET ( ( HCI_CONTROL_GROUP_HCI_AUDIO << 8 ) | 0x00 ) /* Generic Get command */
#define HCI_CONTROL_HCI_AUDIO_COMMAND_SET ( ( HCI_CONTROL_GROUP_HCI_AUDIO << 8 ) | 0x01 ) /* Generic Set command */
#define HCI_CONTROL_HCI_AUDIO_COMMAND_MIC_DATA ( ( HCI_CONTROL_GROUP_HCI_AUDIO << 8 ) | 0x02 ) /* Record data from MIC */
#define HCI_CONTROL_HCI_AUDIO_COMMAND_PUSH_NVRAM_DATA ( ( HCI_CONTROL_GROUP_HCI_AUDIO << 8 ) | 0x03 ) /* Push NVRAM data by ID */
#define HCI_CONTROL_HCI_AUDIO_COMMAND_BT_START ( ( HCI_CONTROL_GROUP_HCI_AUDIO << 8 ) | 0x04 ) /* Start Bluetooth stack */
#define HCI_CONTROL_HCI_AUDIO_COMMAND_BUTTON ( ( HCI_CONTROL_GROUP_HCI_AUDIO << 8 ) | 0x30 ) /* Button event */
/* HCI DFU */
#define HCI_CONTROL_DFU_COMMAND_READ_CONFIG ( ( HCI_CONTROL_GROUP_DFU << 8 ) | 0x00 ) /* DFU start request */
#define HCI_CONTROL_DFU_COMMAND_WRITE_COMMAND ( ( HCI_CONTROL_GROUP_DFU << 8 ) | 0x01 ) /* DFU Data Transfer Packet */
#define HCI_CONTROL_DFU_COMMAND_WRITE_DATA ( ( HCI_CONTROL_GROUP_DFU << 8 ) | 0x02 ) /* DFU Data Transfer Packet */
/* HCI TEST */
#define HCI_CONTROL_HCITEST_COMMAND ( ( HCI_CONTROL_GROUP_HCITEST << 8 ) | 0x0 ) /* Test start request */
#define HCI_CONTROL_HCITEST_CONFIGURE ( ( HCI_CONTROL_GROUP_HCITEST << 8 ) | 0x1 ) /* Test configure request */
/* BMS Commands */
#define HCI_CONTROL_BMS_COMMAND_BECOME_PROVISIONER ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x01 ) /* Become Provisioner */
#define HCI_CONTROL_BMS_COMMAND_END_PROVISIONING ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x02 ) /* Become Provisioner */
#define HCI_CONTROL_BMS_COMMAND_GET_NODE_LIST ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x03 ) /* Provisioner only - report list of all nodes */
#define HCI_CONTROL_BMS_COMMAND_SEND_APP_DATA ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x04 ) /* Send Application Data */
#define HCI_CONTROL_BMS_COMMAND_RESET ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x05 ) /* Reset device */
#define HCI_CONTROL_BMS_COMMAND_FACTORY_RESET ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x06 ) /* Factory reset the network */
#define HCI_CONTROL_BMS_COMMAND_GET_CONN_STATUS ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x07 ) /* Report connection status */
#define HCI_CONTROL_BMS_COMMAND_PING_ALL_NODES ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x08 ) /* Provisioner only - ping all nodes */
#define HCI_CONTROL_BMS_COMMAND_START_STOP_DATA ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x09 ) /* Start/Stop Data */
#define HCI_CONTROL_BMS_COMMAND_GET_STATS ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x0A ) /* Collect stats */
#define HCI_CONTROL_BMS_COMMAND_IDENTIFY ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x0B ) /* Identify node */
#define HCI_CONTROL_BMS_COMMAND_GET_RSSI ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x0C ) /* Collect RSSI values */
#define HCI_CONTROL_BMS_COMMAND_APP_INFO_GET ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x0D ) /* Get node application info (FW ID) */
#define HCI_CONTROL_BMS_COMMAND_OTA_START ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x0E ) /* Firmware update start */
#define HCI_CONTROL_BMS_COMMAND_OTA_DATA ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x0F ) /* Firmware image data */
#define HCI_CONTROL_BMS_COMMAND_OTA_VERIFY ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x10 ) /* Verify received firmware image */
#define HCI_CONTROL_BMS_COMMAND_OTA_APPLY ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x11 ) /* Apply new firmware image */
#define HCI_CONTROL_BMS_COMMAND_OTA_CANCEL ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x12 ) /* Cancel firmware update */
#define HCI_CONTROL_BMS_COMMAND_GET_LQ_STATS ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x13 ) /* Collect link quality stats */
#define HCI_CONTROL_BMS_COMMAND_SET_TEST_MODE ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x14 ) /* Set test mode */
#define HCI_CONTROL_BMS_COMMAND_READ_CONFIGURATION ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x15 ) /* Read network configuration */
#define HCI_CONTROL_BMS_COMMAND_CACHE_TLE_READ ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x16 ) /* Set cached battery reading command */
#define HCI_CONTROL_BMS_COMMAND_GET_CHANNEL_STATS ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x17 ) /* Get per-channel PER */
#define HCI_CONTROL_BMS_COMMAND_SET_CHANNEL_MAP ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x18 ) /* Set channel map */
#define HCI_CONTROL_BMS_COMMAND_GET_AFH_PARAMS ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x19 ) /* Get AFH parameters */
#define HCI_CONTROL_BMS_COMMAND_SET_AFH_PARAMS ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x1A ) /* Set AFH parameters */
#define HCI_CONTROL_BMS_COMMAND_GET_L0_STATE ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x1B ) /* Get L0 role and NV Ram */
#define HCI_CONTROL_BMS_COMMAND_SET_L0_STATE ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x1C ) /* Set L0 role and NV Ram */
#define HCI_CONTROL_BMS_COMMAND_NET_CREATE ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x20 ) /* Create network */
#define HCI_CONTROL_BMS_COMMAND_NODE_PROVISION ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x21 ) /* Provision node */
#define HCI_CONTROL_BMS_COMMAND_RECORDS_GET ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x22 ) /* Request list of provisioning record IDs */
#define HCI_CONTROL_BMS_COMMAND_RECORD_REQUEST ( ( HCI_CONTROL_GROUP_BMS << 8 ) | 0x23 ) /* Request fragment of provisioning record */
#define HCI_CONTROL_PANU_COMMAND_CONNECT ( ( HCI_CONTROL_GROUP_PANU << 8 ) | 0x01 )
#define HCI_CONTROL_PANU_COMMAND_DISCONNECT ( ( HCI_CONTROL_GROUP_PANU << 8 ) | 0x02 )
/* LE AUDIO Commands */
#define HCI_CONTROL_LE_AUDIO_COMMAND_GET_MEDIA_PLAYERS ( ( HCI_CONTROL_GROUP_LE_AUDIO << 8 ) | 0x01 )
#define HCI_CONTROL_LE_AUDIO_COMMAND_SET_MEDIA_PLAYER ( ( HCI_CONTROL_GROUP_LE_AUDIO << 8 ) | 0x02 )
#define HCI_CONTROL_LE_AUDIO_COMMAND_PLAY ( ( HCI_CONTROL_GROUP_LE_AUDIO << 8 ) | 0x03 )
#define HCI_CONTROL_LE_AUDIO_COMMAND_PAUSE ( ( HCI_CONTROL_GROUP_LE_AUDIO << 8 ) | 0x04 )
#define HCI_CONTROL_LE_AUDIO_COMMAND_VOL_UP ( ( HCI_CONTROL_GROUP_LE_AUDIO << 8 ) | 0x05 )
#define HCI_CONTROL_LE_AUDIO_COMMAND_VOL_DOWN ( ( HCI_CONTROL_GROUP_LE_AUDIO << 8 ) | 0x06 )
#define HCI_CONTROL_LE_AUDIO_COMMAND_ABS_VOL ( ( HCI_CONTROL_GROUP_LE_AUDIO << 8 ) | 0x07 )
#define HCI_CONTROL_LE_AUDIO_COMMAND_MUTE ( ( HCI_CONTROL_GROUP_LE_AUDIO << 8 ) | 0x08 )
#define HCI_CONTROL_LE_AUDIO_COMMAND_UNMUTE ( ( HCI_CONTROL_GROUP_LE_AUDIO << 8 ) | 0x09 )
#define HCI_CONTROL_LE_AUDIO_COMMAND_UNMUTE_VOL_UP ( ( HCI_CONTROL_GROUP_LE_AUDIO << 8 ) | 0x0A )
#define HCI_CONTROL_LE_AUDIO_COMMAND_UNMUTE_VOL_DOWN ( ( HCI_CONTROL_GROUP_LE_AUDIO << 8 ) | 0x0B )
#define HCI_CONTROL_LE_AUDIO_COMMAND_PLACE_CALL ( ( HCI_CONTROL_GROUP_LE_AUDIO << 8 ) | 0x0C )
#define HCI_CONTROL_LE_AUDIO_COMMAND_ACCEPT_CALL ( ( HCI_CONTROL_GROUP_LE_AUDIO << 8 ) | 0x0D )
#define HCI_CONTROL_LE_AUDIO_COMMAND_TERMIANTE_CALL ( ( HCI_CONTROL_GROUP_LE_AUDIO << 8 ) | 0x0E )
#define HCI_CONTROL_LE_AUDIO_COMMAND_BROADCAST_SOURCE_START_STREAMIMG ((HCI_CONTROL_GROUP_LE_AUDIO << 8) | 0x0F)
#define HCI_CONTROL_LE_AUDIO_COMMAND_BROADCAST_ASSISTANT_SCAN_SOURCE ((HCI_CONTROL_GROUP_LE_AUDIO << 8) | 0x11)
#define HCI_CONTROL_LE_AUDIO_COMMAND_BROADCAST_ASSISTANT_SELECT_SOURCE ((HCI_CONTROL_GROUP_LE_AUDIO << 8) | 0x14)
#define HCI_CONTROL_LE_AUDIO_COMMAND_BROADCAST_SINK_FIND_SOURCES ((HCI_CONTROL_GROUP_LE_AUDIO << 8) | 0x15)
#define HCI_CONTROL_LE_AUDIO_COMMAND_BROADCAST_SINK_SYNC_TO_SOURCES ((HCI_CONTROL_GROUP_LE_AUDIO << 8) | 0x16)
#define HCI_CONTROL_LE_AUDIO_COMMAND_BROADCAST_SINK_LISTEN_TO_BROADCAST ((HCI_CONTROL_GROUP_LE_AUDIO << 8) | 0x18)
#define HCI_CONTROL_LE_AUDIO_COMMAND_HOLD_CALL ( ( HCI_CONTROL_GROUP_LE_AUDIO << 8 ) | 0x19 )
#define HCI_CONTROL_LE_AUDIO_COMMAND_RETRIEVE_CALL ( ( HCI_CONTROL_GROUP_LE_AUDIO << 8 ) | 0x1A )
#define HCI_CONTROL_LE_AUDIO_COMMAND_REMOTELY_HOLD_CALL ( ( HCI_CONTROL_GROUP_LE_AUDIO << 8 ) | 0x1B )
#define HCI_CONTROL_LE_AUDIO_COMMAND_REM_RETRIEVE_CALL ( ( HCI_CONTROL_GROUP_LE_AUDIO << 8 ) | 0x1C )
#define HCI_CONTROL_LE_AUDIO_COMMAND_ORIGINATE_CALL ( ( HCI_CONTROL_GROUP_LE_AUDIO << 8 ) | 0x1D )
#define HCI_CONTROL_LE_AUDIO_COMMAND_LOC_REM_HELD_CALL ( ( HCI_CONTROL_GROUP_LE_AUDIO << 8 ) | 0x1E )
#define HCI_CONTROL_LE_AUDIO_COMMAND_JOIN_CALL ( ( HCI_CONTROL_GROUP_LE_AUDIO << 8 ) | 0x1F )
#define HCI_CONTROL_LE_AUDIO_COMMAND_CALL ( ( HCI_CONTROL_GROUP_LE_AUDIO << 8 ) | 0x20 )//should be removed, retained for backward compatibility
#define HCI_CONTROL_LE_AUDIO_COMMAND_REM_HOLD_CALL ( ( HCI_CONTROL_GROUP_LE_AUDIO << 8 ) | 0x21 )
#define HCI_CONTROL_LE_AUDIO_COMMAND_REM_HOLD_RETRIEVE ( ( HCI_CONTROL_GROUP_LE_AUDIO << 8 ) | 0x22 )
/* IFXV HOST commands */
#define HCI_CONTROL_IFXVH_COMMAND_GET_HOST_CAPABILITIES ( ( HCI_CONTROL_GROUP_IFXVH << 8 ) | 0x00 ) /* Get host capabilities */
#define HCI_CONTROL_IFXVH_COMMAND_GET_DEVICE_CAPABILITIES ( ( HCI_CONTROL_GROUP_IFXVH << 8 ) | 0x01 ) /* Get device capabilities */
#define HCI_CONTROL_IFXVH_COMMAND_GET_AUDIO_CFG ( ( HCI_CONTROL_GROUP_IFXVH << 8 ) | 0x02 ) /* Get audio configuration */
#define HCI_CONTROL_IFXVH_COMMAND_AUDIO_START ( ( HCI_CONTROL_GROUP_IFXVH << 8 ) | 0x03 ) /* Start audio */
#define HCI_CONTROL_IFXVH_COMMAND_AUDIO_STOP ( ( HCI_CONTROL_GROUP_IFXVH << 8 ) | 0x04 ) /* Stop audio */
#define HCI_CONTROL_IFXVH_COMMAND_SET_HOST_CAPABILITES ( ( HCI_CONTROL_GROUP_IFXVH << 8 ) | 0x05 ) /* Set host capabilities */
#define HCI_CONTROL_IFXVH_COMMAND_CONNECT ( ( HCI_CONTROL_GROUP_IFXVH << 8 ) | 0x06 ) /* Initiate Scan for connection */
#define HCI_CONTROL_IFXVH_COMMAND_CUSTOM_DEFINED ( ( HCI_CONTROL_GROUP_IFXVH << 8 ) | 0x07 ) /* Custom Defined Command */
/* General events that the controller can send */
#define HCI_CONTROL_EVENT_COMMAND_STATUS ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x01 ) /* Command status event for the requested operation */
#define HCI_CONTROL_EVENT_WICED_TRACE ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x02 ) /* WICED trace packet */
#define HCI_CONTROL_EVENT_HCI_TRACE ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x03 ) /* Bluetooth protocol trace */
#define HCI_CONTROL_EVENT_NVRAM_DATA ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x04 ) /* Request to MCU to save NVRAM chunk */
#define HCI_CONTROL_EVENT_DEVICE_STARTED ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x05 ) /* Device completed power up initialization */
#define HCI_CONTROL_EVENT_INQUIRY_RESULT ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x06 ) /* Inquiry result */
#define HCI_CONTROL_EVENT_INQUIRY_COMPLETE ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x07 ) /* Inquiry completed event */
#define HCI_CONTROL_EVENT_PAIRING_COMPLETE ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x08 ) /* Pairing Completed */
#define HCI_CONTROL_EVENT_ENCRYPTION_CHANGED ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x09 ) /* Encryption changed event */
#define HCI_CONTROL_EVENT_CONNECTED_DEVICE_NAME ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x0A ) /* Device name event */
#define HCI_CONTROL_EVENT_USER_CONFIRMATION ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x0B ) /* User Confirmation during pairing */
#define HCI_CONTROL_EVENT_DEVICE_ERROR ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x0C ) /* Device Error event */
#define HCI_CONTROL_EVENT_READ_LOCAL_BDA ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x0D ) /* Local BDA Read event */
#define HCI_CONTROL_EVENT_MAX_NUM_OF_PAIRED_DEVICES_REACHED ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x0E ) /* Key Buffer Pool Full */
#define HCI_CONTROL_EVENT_READ_BUFFER_STATS ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x0F ) /* Read Buffer statistics event */
#define HCI_CONTROL_EVENT_KEYPRESS_NOTIFICATION ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x10 ) /* KeyPress notification */
#define HCI_CONTROL_EVENT_CONNECTION_STATUS ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x11 ) /* Connection Status */
#define HCI_CONTROL_EVENT_PIN_REQUEST ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x12 ) /* PIN Code Request */
#define HCI_CONTROL_EVENT_SSP_REQUEST ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x13 ) /* SSP Code Request */
/* Events for the HFP profile */
#define HCI_CONTROL_HF_EVENT_OPEN ( ( HCI_CONTROL_GROUP_HF << 8 ) | 0x01 ) /* HS connection opened or connection attempt failed */
#define HCI_CONTROL_HF_EVENT_CLOSE ( ( HCI_CONTROL_GROUP_HF << 8 ) | 0x02 ) /* HS connection closed */
#define HCI_CONTROL_HF_EVENT_CONNECTED ( ( HCI_CONTROL_GROUP_HF << 8 ) | 0x03 ) /* HS Service Level Connection is UP */
#define HCI_CONTROL_HF_EVENT_AUDIO_OPEN ( ( HCI_CONTROL_GROUP_HF << 8 ) | 0x04 ) /* Audio connection open */
#define HCI_CONTROL_HF_EVENT_AUDIO_CLOSE ( ( HCI_CONTROL_GROUP_HF << 8 ) | 0x05 ) /* Audio connection closed */
#define HCI_CONTROL_HF_EVENT_AUDIO_CONN_REQ ( ( HCI_CONTROL_GROUP_HF << 8 ) | 0x06 ) /* Audio connection request event */
#define HCI_CONTROL_HF_EVENT_PROFILE_TYPE ( ( HCI_CONTROL_GROUP_HF << 8 ) | 0x07 ) /* To check the Profile Selected HSP/HFP */
#define HCI_CONTROL_HF_EVENT_CALL_SETUP_STATUS ( ( HCI_CONTROL_GROUP_HF << 8 ) | 0x08 ) /* To check the call status */
#define HCI_CONTROL_HF_EVENT_INBAND_RING_STATUS ( ( HCI_CONTROL_GROUP_HF << 8 ) | 0x09 ) /* To check the inband ringtone is audible */
#define HCI_CONTROL_HF_EVENT_VOLUME_CHANGE ( ( HCI_CONTROL_GROUP_HF << 8 ) | 0x0A ) /* volume change event */
#define HCI_CONTROL_HF_EVENT_VOLUME_UP ( ( HCI_CONTROL_GROUP_HF << 8 ) | 0x0B ) /* volume change event */
#define HCI_CONTROL_HF_EVENT_VOLUME_DOWN ( ( HCI_CONTROL_GROUP_HF << 8 ) | 0x0C ) /* volume change event */
#define HCI_CONTROL_HF_EVENT_CALL_ALERT ( ( HCI_CONTROL_GROUP_HF << 8 ) | 0x0D ) /* call alert event */
#define HCI_CONTROL_HF_EVENT_VOICE_RECOG_EVENT ( ( HCI_CONTROL_GROUP_HF << 8 ) | 0x0E ) /* voice recognition status event */
/* Sub-commands AT events defined with AT Commands */
#define HCI_CONTROL_HF_AT_EVENT_BASE ( ( HCI_CONTROL_GROUP_HF << 8 ) | 0x20 )
#define HCI_CONTROL_HF_AT_EVENT_OK 0x00 /* OK response received to previous AT command */
#define HCI_CONTROL_HF_AT_EVENT_ERROR 0x01 /* ERROR response received */
#define HCI_CONTROL_HF_AT_EVENT_CMEE 0x02 /* Extended error codes response */
#define HCI_CONTROL_HF_AT_EVENT_RING 0x03 /* RING indicator */
#define HCI_CONTROL_HF_AT_EVENT_VGS 0x04
#define HCI_CONTROL_HF_AT_EVENT_VGM 0x05
#define HCI_CONTROL_HF_AT_EVENT_CCWA 0x06
#define HCI_CONTROL_HF_AT_EVENT_CHLD 0x07
#define HCI_CONTROL_HF_AT_EVENT_CIND 0x08
#define HCI_CONTROL_HF_AT_EVENT_CLIP 0x09
#define HCI_CONTROL_HF_AT_EVENT_CIEV 0x0A
#define HCI_CONTROL_HF_AT_EVENT_BINP 0x0B
#define HCI_CONTROL_HF_AT_EVENT_BVRA 0x0C
#define HCI_CONTROL_HF_AT_EVENT_BSIR 0x0D
#define HCI_CONTROL_HF_AT_EVENT_CNUM 0x0E
#define HCI_CONTROL_HF_AT_EVENT_BTRH 0x0F
#define HCI_CONTROL_HF_AT_EVENT_COPS 0x10
#define HCI_CONTROL_HF_AT_EVENT_CLCC 0x11
#define HCI_CONTROL_HF_AT_EVENT_BIND 0x12
#define HCI_CONTROL_HF_AT_EVENT_BCS 0x13
#define HCI_CONTROL_HF_AT_EVENT_UNAT 0x14
#define HCI_CONTROL_HF_AT_EVENT_MAX 0x14 /* Maximum AT event value */
/* LE events for the LE GATT/GAP profile */
#define HCI_CONTROL_LE_EVENT_COMMAND_STATUS ( ( HCI_CONTROL_GROUP_LE << 8 ) | 0x01 ) /* Command status event for the requested operation */
#define HCI_CONTROL_LE_EVENT_SCAN_STATUS ( ( HCI_CONTROL_GROUP_LE << 8 ) | 0x02 ) /* LE scanning state change notification */
#define HCI_CONTROL_LE_EVENT_ADVERTISEMENT_REPORT ( ( HCI_CONTROL_GROUP_LE << 8 ) | 0x03 ) /* Advertisement report */
#define HCI_CONTROL_LE_EVENT_ADVERTISEMENT_STATE ( ( HCI_CONTROL_GROUP_LE << 8 ) | 0x04 ) /* LE Advertisement state change notification */
#define HCI_CONTROL_LE_EVENT_CONNECTED ( ( HCI_CONTROL_GROUP_LE << 8 ) | 0x05 ) /* LE Connection established */
#define HCI_CONTROL_LE_EVENT_DISCONNECTED ( ( HCI_CONTROL_GROUP_LE << 8 ) | 0x06 ) /* Le Connection Terminated */
#define HCI_CONTROL_LE_EVENT_IDENTITY_ADDRESS ( ( HCI_CONTROL_GROUP_LE << 8 ) | 0x07 ) /* Identity address */
#define HCI_CONTROL_LE_EVENT_PEER_MTU ( ( HCI_CONTROL_GROUP_LE << 8 ) | 0x08 ) /* Client MTU Request */
#define HCI_CONTROL_LE_EVENT_CONN_PARAMS ( ( HCI_CONTROL_GROUP_LE << 8 ) | 0x09 ) /* LE connection parameter update event */
/* GATT events */
#define HCI_CONTROL_GATT_EVENT_COMMAND_STATUS ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x01 ) /* Command status event for the requested operation */
#define HCI_CONTROL_GATT_EVENT_DISCOVERY_COMPLETE ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x02 ) /* Discovery requested by host completed */
#define HCI_CONTROL_GATT_EVENT_SERVICE_DISCOVERED ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x03 ) /* Service discovered */
#define HCI_CONTROL_GATT_EVENT_CHARACTERISTIC_DISCOVERED ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x04 ) /* Characteristic discovered */
#define HCI_CONTROL_GATT_EVENT_DESCRIPTOR_DISCOVERED ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x05 ) /* Characteristic descriptor discovered */
#define HCI_CONTROL_GATT_EVENT_READ_REQUEST ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x06 ) /* Peer sent Read Request */
#define HCI_CONTROL_GATT_EVENT_READ_RESPONSE ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x07 ) /* Read response */
#define HCI_CONTROL_GATT_EVENT_WRITE_REQUEST ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x08 ) /* Peer sent Write Request */
#define HCI_CONTROL_GATT_EVENT_WRITE_RESPONSE ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x09 ) /* Write operation completed */
#define HCI_CONTROL_GATT_EVENT_INDICATION ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x0a ) /* Indication from peer */
#define HCI_CONTROL_GATT_EVENT_NOTIFICATION ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x0b ) /* Notification from peer */
#define HCI_CONTROL_GATT_EVENT_READ_ERROR ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x0c ) /* GATT Read operation error */
#define HCI_CONTROL_GATT_EVENT_WRITE_ERROR ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x0d ) /* GATT Write operation error */
/* Events for the SPP profile */
#define HCI_CONTROL_SPP_EVENT_CONNECTED ( ( HCI_CONTROL_GROUP_SPP << 8 ) | 0x01 ) /* SPP connection opened */
#define HCI_CONTROL_SPP_EVENT_SERVICE_NOT_FOUND ( ( HCI_CONTROL_GROUP_SPP << 8 ) | 0x02 ) /* SDP record with SPP service not found */
#define HCI_CONTROL_SPP_EVENT_CONNECTION_FAILED ( ( HCI_CONTROL_GROUP_SPP << 8 ) | 0x03 ) /* Connection attempt failed */
#define HCI_CONTROL_SPP_EVENT_DISCONNECTED ( ( HCI_CONTROL_GROUP_SPP << 8 ) | 0x04 ) /* SPP connection closed */
#define HCI_CONTROL_SPP_EVENT_TX_COMPLETE ( ( HCI_CONTROL_GROUP_SPP << 8 ) | 0x05 ) /* Data packet has been queued for transmission */
#define HCI_CONTROL_SPP_EVENT_RX_DATA ( ( HCI_CONTROL_GROUP_SPP << 8 ) | 0x06 ) /* SPP data received */
#define HCI_CONTROL_SPP_EVENT_COMMAND_STATUS ( ( HCI_CONTROL_GROUP_SPP << 8 ) | 0x07 ) /* Command status event for the requested operation */
#define HCI_CONTROL_SPP_EVENT_PEER_MTU ( ( HCI_CONTROL_GROUP_SPP << 8 ) | 0x08 ) /* Get peer mtu size */
/* Events for the Audio profile */
#define HCI_CONTROL_AUDIO_EVENT_COMMAND_COMPLETE ( ( HCI_CONTROL_GROUP_AUDIO << 8 ) | 0x00 ) /* Command complete event for the requested operation */
#define HCI_CONTROL_AUDIO_EVENT_COMMAND_STATUS ( ( HCI_CONTROL_GROUP_AUDIO << 8 ) | 0x01 ) /* Command status event for the requested operation */
#define HCI_CONTROL_AUDIO_EVENT_CONNECTED ( ( HCI_CONTROL_GROUP_AUDIO << 8 ) | 0x02 ) /* Audio connection opened */
#define HCI_CONTROL_AUDIO_EVENT_SERVICE_NOT_FOUND ( ( HCI_CONTROL_GROUP_AUDIO << 8 ) | 0x03 ) /* SDP record with audio service not found */
#define HCI_CONTROL_AUDIO_EVENT_CONNECTION_FAILED ( ( HCI_CONTROL_GROUP_AUDIO << 8 ) | 0x04 ) /* Connection attempt failed */
#define HCI_CONTROL_AUDIO_EVENT_DISCONNECTED ( ( HCI_CONTROL_GROUP_AUDIO << 8 ) | 0x05 ) /* Audio connection closed */
#define HCI_CONTROL_AUDIO_EVENT_REQUEST_DATA ( ( HCI_CONTROL_GROUP_AUDIO << 8 ) | 0x06 ) /* Request for audio pcm sample data */
#define HCI_CONTROL_AUDIO_EVENT_STARTED ( ( HCI_CONTROL_GROUP_AUDIO << 8 ) | 0x07 ) /* Command for audio start succeeded */
#define HCI_CONTROL_AUDIO_EVENT_STOPPED ( ( HCI_CONTROL_GROUP_AUDIO << 8 ) | 0x08 ) /* Command for audio stop completed */
#define HCI_CONTROL_AUDIO_EVENT_STATISTICS ( ( HCI_CONTROL_GROUP_AUDIO << 8 ) | 0x09 ) /* Command for audio statistics */
#define HCI_CONTROL_AUDIO_EVENT_SUPPORT_FEATURES ( ( HCI_CONTROL_GROUP_AUDIO << 8 ) | 0x10 ) /* Device reportes the supported features of AV source */
/* Events for the AVRCP profile target events */
#define HCI_CONTROL_AVRC_TARGET_EVENT_CONNECTED ( ( HCI_CONTROL_GROUP_AVRC_TARGET << 8 ) | 0x01 ) /* AVRCP Target connected */
#define HCI_CONTROL_AVRC_TARGET_EVENT_DISCONNECTED ( ( HCI_CONTROL_GROUP_AVRC_TARGET << 8 ) | 0x02 ) /* AVRCP Target disconnected */
#define HCI_CONTROL_AVRC_TARGET_EVENT_PLAY ( ( HCI_CONTROL_GROUP_AVRC_TARGET << 8 ) | 0x03 ) /* Play command received */
#define HCI_CONTROL_AVRC_TARGET_EVENT_STOP ( ( HCI_CONTROL_GROUP_AVRC_TARGET << 8 ) | 0x04 ) /* Stop command received */
#define HCI_CONTROL_AVRC_TARGET_EVENT_PAUSE ( ( HCI_CONTROL_GROUP_AVRC_TARGET << 8 ) | 0x05 ) /* Pause command received */
#define HCI_CONTROL_AVRC_TARGET_EVENT_NEXT_TRACK ( ( HCI_CONTROL_GROUP_AVRC_TARGET << 8 ) | 0x06 ) /* Next Track command received */
#define HCI_CONTROL_AVRC_TARGET_EVENT_PREVIOUS_TRACK ( ( HCI_CONTROL_GROUP_AVRC_TARGET << 8 ) | 0x07 ) /* Previous track command received */
#define HCI_CONTROL_AVRC_TARGET_EVENT_BEGIN_FAST_FORWARD ( ( HCI_CONTROL_GROUP_AVRC_TARGET << 8 ) | 0x08 ) /* Next Track command received */
#define HCI_CONTROL_AVRC_TARGET_EVENT_END_FAST_FORWARD ( ( HCI_CONTROL_GROUP_AVRC_TARGET << 8 ) | 0x09 ) /* Previous track command received */
#define HCI_CONTROL_AVRC_TARGET_EVENT_BEGIN_REWIND ( ( HCI_CONTROL_GROUP_AVRC_TARGET << 8 ) | 0x0A ) /* Next Track command received */
#define HCI_CONTROL_AVRC_TARGET_EVENT_END_REWIND ( ( HCI_CONTROL_GROUP_AVRC_TARGET << 8 ) | 0x0B ) /* Previous track command received */
#define HCI_CONTROL_AVRC_TARGET_EVENT_VOLUME_LEVEL ( ( HCI_CONTROL_GROUP_AVRC_TARGET << 8 ) | 0x0C ) /* Volume Level changed received */
#define HCI_CONTROL_AVRC_TARGET_EVENT_REPEAT_SETTINGS ( ( HCI_CONTROL_GROUP_AVRC_TARGET << 8 ) | 0x0D ) /* Repeat settings changed by peer, sent to MCU app */
#define HCI_CONTROL_AVRC_TARGET_EVENT_SHUFFLE_SETTINGS ( ( HCI_CONTROL_GROUP_AVRC_TARGET << 8 ) | 0x0E ) /* Shuffle settings changed by peer, sent to MCU app */
#define HCI_CONTROL_AVRC_TARGET_EVENT_GET_PLAYER_STATUS ( ( HCI_CONTROL_GROUP_AVRC_TARGET << 8 ) | 0x0F ) /* Player status info requested by peer, get info from MCU app */
#define HCI_CONTROL_AVRC_TARGET_EVENT_PASSTHROUGH_STATUS ( ( HCI_CONTROL_GROUP_AVRC_TARGET << 8 ) | 0x10 ) /* Passthrough command status received from peer */
#define HCI_CONTROL_AVRC_TARGET_EVENT_COMMAND_STATUS ( ( HCI_CONTROL_GROUP_AVRC_TARGET << 8 ) | 0xFF ) /* Result status for AVRCP commands */
/* Events for the AVRCP CT profile */
#define HCI_CONTROL_AVRC_CONTROLLER_EVENT_CONNECTED ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x01 ) /* AVRCP Controller connected */
#define HCI_CONTROL_AVRC_CONTROLLER_EVENT_DISCONNECTED ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x02 ) /* AVRCP Controller disconnected */
#define HCI_CONTROL_AVRC_CONTROLLER_EVENT_CURRENT_TRACK_INFO ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x03 ) /* AVRCP Controller disconnected */
#define HCI_CONTROL_AVRC_CONTROLLER_EVENT_PLAY_STATUS ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x04 ) /* AVRCP Controller Play Status Change */
#define HCI_CONTROL_AVRC_CONTROLLER_EVENT_PLAY_POSITION ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x05 ) /* AVRCP Controller Play Position Change */
#define HCI_CONTROL_AVRC_CONTROLLER_EVENT_TRACK_CHANGE ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x06 ) /* AVRCP Controller Track Changed */
#define HCI_CONTROL_AVRC_CONTROLLER_EVENT_TRACK_END ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x07 ) /* AVRCP Controller Track reached End */
#define HCI_CONTROL_AVRC_CONTROLLER_EVENT_TRACK_START ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x08 ) /* AVRCP Controller Track reached Start */
#define HCI_CONTROL_AVRC_CONTROLLER_EVENT_SETTING_AVAILABLE ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x09 ) /* AVRCP Controller Player setting available */
#define HCI_CONTROL_AVRC_CONTROLLER_EVENT_SETTING_CHANGE ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x0a ) /* AVRCP Controller Player setting changed */
#define HCI_CONTROL_AVRC_CONTROLLER_EVENT_PLAYER_CHANGE ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x0b ) /* AVRCP Controller Player changed */
#define HCI_CONTROL_AVRC_CONTROLLER_EVENT_PLAY_STATUS_INFO ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0x0c ) /* AVRCP Controller Play status response */
#define HCI_CONTROL_AVRC_CONTROLLER_EVENT_COMMAND_STATUS ( ( HCI_CONTROL_GROUP_AVRC_CONTROLLER << 8 ) | 0xFF ) /* Result status for AVRCP commands */
/* Events for the HID Device profile */
#define HCI_CONTROL_HIDD_EVENT_OPENED ( ( HCI_CONTROL_GROUP_HIDD << 8 ) | 0x01 ) /* Both HID channels are opened */
#define HCI_CONTROL_HIDD_EVENT_VIRTUAL_CABLE_UNPLUGGED ( ( HCI_CONTROL_GROUP_HIDD << 8 ) | 0x02 ) /* Host requested Virtual Cable Unplug */
#define HCI_CONTROL_HIDD_EVENT_DATA ( ( HCI_CONTROL_GROUP_HIDD << 8 ) | 0x03 ) /* Host sent report */
#define HCI_CONTROL_HIDD_EVENT_CLOSED ( ( HCI_CONTROL_GROUP_HIDD << 8 ) | 0x04 ) /* Host attempt to establish connection failed */