xref: /btstack/src/hci_cmd.c (revision c0112d43a622d94294a30f35a7e01fc2fb2d9fbb)
156042629SMatthias Ringwald /*
256042629SMatthias Ringwald  * Copyright (C) 2014 BlueKitchen GmbH
356042629SMatthias Ringwald  *
456042629SMatthias Ringwald  * Redistribution and use in source and binary forms, with or without
556042629SMatthias Ringwald  * modification, are permitted provided that the following conditions
656042629SMatthias Ringwald  * are met:
756042629SMatthias Ringwald  *
856042629SMatthias Ringwald  * 1. Redistributions of source code must retain the above copyright
956042629SMatthias Ringwald  *    notice, this list of conditions and the following disclaimer.
1056042629SMatthias Ringwald  * 2. Redistributions in binary form must reproduce the above copyright
1156042629SMatthias Ringwald  *    notice, this list of conditions and the following disclaimer in the
1256042629SMatthias Ringwald  *    documentation and/or other materials provided with the distribution.
1356042629SMatthias Ringwald  * 3. Neither the name of the copyright holders nor the names of
1456042629SMatthias Ringwald  *    contributors may be used to endorse or promote products derived
1556042629SMatthias Ringwald  *    from this software without specific prior written permission.
1656042629SMatthias Ringwald  * 4. Any redistribution, use, or modification is done solely for
1756042629SMatthias Ringwald  *    personal benefit and not for any commercial purpose or for
1856042629SMatthias Ringwald  *    monetary gain.
1956042629SMatthias Ringwald  *
2056042629SMatthias Ringwald  * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS
2156042629SMatthias Ringwald  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
2256042629SMatthias Ringwald  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
232fca4dadSMilanka Ringwald  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BLUEKITCHEN
242fca4dadSMilanka Ringwald  * GMBH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
2556042629SMatthias Ringwald  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
2656042629SMatthias Ringwald  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
2756042629SMatthias Ringwald  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
2856042629SMatthias Ringwald  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
2956042629SMatthias Ringwald  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
3056042629SMatthias Ringwald  * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
3156042629SMatthias Ringwald  * SUCH DAMAGE.
3256042629SMatthias Ringwald  *
3356042629SMatthias Ringwald  * Please inquire about commercial licensing options at
3456042629SMatthias Ringwald  * [email protected]
3556042629SMatthias Ringwald  *
3656042629SMatthias Ringwald  */
3756042629SMatthias Ringwald 
38e501bae0SMatthias Ringwald #define BTSTACK_FILE__ "hci_cmd.c"
39ab2c6ae4SMatthias Ringwald 
4056042629SMatthias Ringwald /*
4156042629SMatthias Ringwald  *  hci_cmd.c
4256042629SMatthias Ringwald  *
4356042629SMatthias Ringwald  *  Created by Matthias Ringwald on 7/23/09.
4456042629SMatthias Ringwald  */
4556042629SMatthias Ringwald 
467907f069SMatthias Ringwald #include "btstack_config.h"
4756042629SMatthias Ringwald 
4856042629SMatthias Ringwald #include "hci.h"
4956042629SMatthias Ringwald #include "hci_cmd.h"
50f9f2075cSMatthias Ringwald #include "btstack_debug.h"
5156042629SMatthias Ringwald 
5256042629SMatthias Ringwald #include <string.h>
5356042629SMatthias Ringwald 
54c56de76bSMilanka Ringwald 
5559c9672fSMatthias Ringwald #ifdef ENABLE_SDP
5659c9672fSMatthias Ringwald #include "classic/sdp_util.h"
5759c9672fSMatthias Ringwald #endif
5859c9672fSMatthias Ringwald 
5956042629SMatthias Ringwald // calculate combined ogf/ocf value
605efd5011SMatthias Ringwald #define OPCODE(ogf, ocf) ((ocf) | ((ogf) << 10))
6156042629SMatthias Ringwald 
627f67490cSMatthias Ringwald #define INVALID_VAR_LEN 0xffffu
63931b436eSMatthias Ringwald // hci_le_set_cig_parameters_test has 10 arrayed parameters
64931b436eSMatthias Ringwald #define MAX_NR_ARRAY_FIELDS 10
65931b436eSMatthias Ringwald #define INVALID_ARRAY_LEN 0xff
667f67490cSMatthias Ringwald 
6756042629SMatthias Ringwald /**
6856042629SMatthias Ringwald  * construct HCI Command based on template
6956042629SMatthias Ringwald  *
7056042629SMatthias Ringwald  * Format:
7156042629SMatthias Ringwald  *   1,2,3,4: one to four byte value
7256042629SMatthias Ringwald  *   H: HCI connection handle
7356042629SMatthias Ringwald  *   B: Bluetooth Baseband Address (BD_ADDR)
7456042629SMatthias Ringwald  *   D: 8 byte data block
7556042629SMatthias Ringwald  *   E: Extended Inquiry Result
7656042629SMatthias Ringwald  *   N: Name up to 248 chars, \0 terminated
77237daac5SMatthias Ringwald  *   P: 16 byte data block. Pairing code, Simple Pairing Hash and Randomizer
7856042629SMatthias Ringwald  *   A: 31 bytes advertising data
7956042629SMatthias Ringwald  *   S: Service Record (Data Element Sequence)
8082180fcaSMatthias Ringwald  *   Q: 32 byte data block, e.g. for X and Y coordinates of P-256 public key
817f67490cSMatthias Ringwald  *   J: 8-bit length of variable size element
827f67490cSMatthias Ringwald  *   V: variable size element, len was given with param 'J'
83931b436eSMatthias Ringwald  *   a: number of elements in following arrayed parameters(s), specified as '[...]'
84931b436eSMatthias Ringwald  *   b: bit field indicating number of arrayed parameters(s), specified as '[...]'
85931b436eSMatthias Ringwald  *   [: start of arrayed param sequence
86931b436eSMatthias Ringwald  *   ]: end of arrayed param sequence
8756042629SMatthias Ringwald  */
8856042629SMatthias Ringwald uint16_t hci_cmd_create_from_template(uint8_t *hci_cmd_buffer, const hci_cmd_t *cmd, va_list argptr){
8956042629SMatthias Ringwald 
904ea43905SMatthias Ringwald     hci_cmd_buffer[0] = cmd->opcode & 0xffu;
9156042629SMatthias Ringwald     hci_cmd_buffer[1] = cmd->opcode >> 8;
92931b436eSMatthias Ringwald     uint16_t pos = 3;
9356042629SMatthias Ringwald 
9456042629SMatthias Ringwald     const char *format = cmd->format;
9556042629SMatthias Ringwald     uint16_t word;
9656042629SMatthias Ringwald     uint32_t longword;
9756042629SMatthias Ringwald     uint8_t * ptr;
987f67490cSMatthias Ringwald 
99c8b094b6SMatthias Ringwald #ifdef ENABLE_BLE
100c8b094b6SMatthias Ringwald     // variable size data
101c8b094b6SMatthias Ringwald     uint16_t var_len = INVALID_VAR_LEN;
102c8b094b6SMatthias Ringwald     // array processing
103931b436eSMatthias Ringwald     const char * array_format = NULL;
104931b436eSMatthias Ringwald     void *  array_data[MAX_NR_ARRAY_FIELDS];
105931b436eSMatthias Ringwald     uint8_t array_num_elements = INVALID_ARRAY_LEN;
106931b436eSMatthias Ringwald     uint8_t array_num_fields;
107931b436eSMatthias Ringwald     uint8_t array_element_index;
108c8b094b6SMatthias Ringwald     bool array_done;
109c8b094b6SMatthias Ringwald #endif
110931b436eSMatthias Ringwald 
111931b436eSMatthias Ringwald     bool done_format = false;
112931b436eSMatthias Ringwald     while (!done_format) {
11356042629SMatthias Ringwald         switch(*format) {
114931b436eSMatthias Ringwald             case 0:
115931b436eSMatthias Ringwald                 done_format = true;
116931b436eSMatthias Ringwald                 break;
11756042629SMatthias Ringwald             case '1': //  8 bit value
118c56de76bSMilanka Ringwald                 word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE
1194ea43905SMatthias Ringwald                 hci_cmd_buffer[pos++] = word & 0xffu;
120c56de76bSMilanka Ringwald                 break;
121c56de76bSMilanka Ringwald             case '2': // 16 bit value
122c56de76bSMilanka Ringwald                 word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE
123c56de76bSMilanka Ringwald                 hci_cmd_buffer[pos++] = word & 0xffu;
12456042629SMatthias Ringwald                 hci_cmd_buffer[pos++] = word >> 8;
125c56de76bSMilanka Ringwald                 break;
126c56de76bSMilanka Ringwald             case 'H': // hci_handle
127c56de76bSMilanka Ringwald                 word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE
128c56de76bSMilanka Ringwald                 hci_cmd_buffer[pos++] = word & 0xffu;
12956042629SMatthias Ringwald                 hci_cmd_buffer[pos++] = word >> 8;
13056042629SMatthias Ringwald                 break;
13156042629SMatthias Ringwald             case '3':
132c56de76bSMilanka Ringwald                 longword = va_arg(argptr, uint32_t); // LCOV_EXCL_BR_LINE
13356042629SMatthias Ringwald                 hci_cmd_buffer[pos++] = longword;
13456042629SMatthias Ringwald                 hci_cmd_buffer[pos++] = longword >> 8;
13556042629SMatthias Ringwald                 hci_cmd_buffer[pos++] = longword >> 16;
136c56de76bSMilanka Ringwald                 break;
137c56de76bSMilanka Ringwald             case '4':
138c56de76bSMilanka Ringwald                 longword = va_arg(argptr, uint32_t); // LCOV_EXCL_BR_LINE
139c56de76bSMilanka Ringwald                 hci_cmd_buffer[pos++] = longword;
140c56de76bSMilanka Ringwald                 hci_cmd_buffer[pos++] = longword >> 8;
141c56de76bSMilanka Ringwald                 hci_cmd_buffer[pos++] = longword >> 16;
14256042629SMatthias Ringwald                 hci_cmd_buffer[pos++] = longword >> 24;
14356042629SMatthias Ringwald                 break;
14456042629SMatthias Ringwald             case 'B': // bt-addr
145c56de76bSMilanka Ringwald                 ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
14656042629SMatthias Ringwald                 hci_cmd_buffer[pos++] = ptr[5];
14756042629SMatthias Ringwald                 hci_cmd_buffer[pos++] = ptr[4];
14856042629SMatthias Ringwald                 hci_cmd_buffer[pos++] = ptr[3];
14956042629SMatthias Ringwald                 hci_cmd_buffer[pos++] = ptr[2];
15056042629SMatthias Ringwald                 hci_cmd_buffer[pos++] = ptr[1];
15156042629SMatthias Ringwald                 hci_cmd_buffer[pos++] = ptr[0];
15256042629SMatthias Ringwald                 break;
15356042629SMatthias Ringwald             case 'D': // 8 byte data block
154c56de76bSMilanka Ringwald                 ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
1556535961aSMatthias Ringwald                 (void)memcpy(&hci_cmd_buffer[pos], ptr, 8);
15656042629SMatthias Ringwald                 pos += 8;
15756042629SMatthias Ringwald                 break;
15856042629SMatthias Ringwald             case 'E': // Extended Inquiry Information 240 octets
159c56de76bSMilanka Ringwald                 ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
1606535961aSMatthias Ringwald                 (void)memcpy(&hci_cmd_buffer[pos], ptr, 240);
16156042629SMatthias Ringwald                 pos += 240;
16256042629SMatthias Ringwald                 break;
16356042629SMatthias Ringwald             case 'N': { // UTF-8 string, null terminated
164c56de76bSMilanka Ringwald                 ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
16556042629SMatthias Ringwald                 uint16_t len = strlen((const char*) ptr);
1664ea43905SMatthias Ringwald                 if (len > 248u) {
16756042629SMatthias Ringwald                     len = 248;
16856042629SMatthias Ringwald                 }
1696535961aSMatthias Ringwald                 (void)memcpy(&hci_cmd_buffer[pos], ptr, len);
1704ea43905SMatthias Ringwald                 if (len < 248u) {
17156042629SMatthias Ringwald                     // fill remaining space with zeroes
1724ea43905SMatthias Ringwald                     memset(&hci_cmd_buffer[pos+len], 0u, 248u-len);
17356042629SMatthias Ringwald                 }
17456042629SMatthias Ringwald                 pos += 248;
17556042629SMatthias Ringwald                 break;
17656042629SMatthias Ringwald             }
177bb75dd7dSMatthias Ringwald             case 'P': // 16 byte PIN code or link key in little endian
178c56de76bSMilanka Ringwald                 ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
1796535961aSMatthias Ringwald                 (void)memcpy(&hci_cmd_buffer[pos], ptr, 16);
18056042629SMatthias Ringwald                 pos += 16;
18156042629SMatthias Ringwald                 break;
182931b436eSMatthias Ringwald             case 'K':   // 16 byte OOB Data or Link Key in big endian
183931b436eSMatthias Ringwald                 ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
184931b436eSMatthias Ringwald                 reverse_bytes(ptr, &hci_cmd_buffer[pos], 16);
185931b436eSMatthias Ringwald                 pos += 16;
186931b436eSMatthias Ringwald                 break;
187a9a4c409SMatthias Ringwald #ifdef ENABLE_BLE
18856042629SMatthias Ringwald             case 'A': // 31 bytes advertising data
189c56de76bSMilanka Ringwald                 ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
1906535961aSMatthias Ringwald                 (void)memcpy(&hci_cmd_buffer[pos], ptr, 31);
19156042629SMatthias Ringwald                 pos += 31;
19256042629SMatthias Ringwald                 break;
193931b436eSMatthias Ringwald             case 'J': //  8 bit variable length indicator for 'V'
194931b436eSMatthias Ringwald                 word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE
195931b436eSMatthias Ringwald                 var_len = word & 0xffu;
196931b436eSMatthias Ringwald                 hci_cmd_buffer[pos++] = var_len;
197bb75dd7dSMatthias Ringwald                 break;
1987f67490cSMatthias Ringwald             case 'V':
1997f67490cSMatthias Ringwald                 btstack_assert(var_len != INVALID_VAR_LEN);
2007f67490cSMatthias Ringwald                 ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
2017f67490cSMatthias Ringwald                 (void)memcpy(&hci_cmd_buffer[pos], ptr, var_len);
2027f67490cSMatthias Ringwald                 pos += var_len;
2037f67490cSMatthias Ringwald                 var_len = INVALID_VAR_LEN;
2047f67490cSMatthias Ringwald                 break;
205931b436eSMatthias Ringwald             case 'a':
206931b436eSMatthias Ringwald                 btstack_assert(array_num_elements == INVALID_ARRAY_LEN);
207931b436eSMatthias Ringwald                 word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE
208931b436eSMatthias Ringwald                 hci_cmd_buffer[pos++] = word & 0xff;
209931b436eSMatthias Ringwald                 array_num_elements = word & 0xffu;
210931b436eSMatthias Ringwald                 break;
211931b436eSMatthias Ringwald             case 'b':
212931b436eSMatthias Ringwald                 btstack_assert(array_num_elements == INVALID_ARRAY_LEN);
213931b436eSMatthias Ringwald                 word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE
214931b436eSMatthias Ringwald                 hci_cmd_buffer[pos++] = word & 0xff;
215931b436eSMatthias Ringwald                 array_num_elements = count_set_bits_uint32(word & 0xffu);
216931b436eSMatthias Ringwald                 break;
217931b436eSMatthias Ringwald             case '[':
218931b436eSMatthias Ringwald                 btstack_assert(array_num_elements != INVALID_ARRAY_LEN);
219931b436eSMatthias Ringwald                 // process array
220931b436eSMatthias Ringwald                 format++;
221931b436eSMatthias Ringwald                 array_format = format;
222931b436eSMatthias Ringwald                 array_num_fields = 0;
223c8b094b6SMatthias Ringwald                 array_done = false;
224c8b094b6SMatthias Ringwald                 while (!array_done){
225931b436eSMatthias Ringwald                     switch (*format){
226931b436eSMatthias Ringwald                         case 0:
227c8b094b6SMatthias Ringwald                             array_done = true;
228931b436eSMatthias Ringwald                             done_format = true;
229931b436eSMatthias Ringwald                             break;
230931b436eSMatthias Ringwald                         case ']':
231c8b094b6SMatthias Ringwald                             array_done = true;
232931b436eSMatthias Ringwald                             break;
233931b436eSMatthias Ringwald                         case '1':
234931b436eSMatthias Ringwald                         case '2':
235931b436eSMatthias Ringwald                             // all arrayed parameters are passed in as arrays
236931b436eSMatthias Ringwald                             ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
237931b436eSMatthias Ringwald                             array_data[array_num_fields++] = ptr;
238931b436eSMatthias Ringwald                             format++;
239931b436eSMatthias Ringwald                             break;
240931b436eSMatthias Ringwald                         default:
241931b436eSMatthias Ringwald                             btstack_unreachable();
242931b436eSMatthias Ringwald                             break;
243931b436eSMatthias Ringwald                     }
244931b436eSMatthias Ringwald                 }
245931b436eSMatthias Ringwald                 for (array_element_index = 0; array_element_index < array_num_elements ; array_element_index++){
246931b436eSMatthias Ringwald                     uint8_t array_field_index;
247931b436eSMatthias Ringwald                     for (array_field_index = 0; array_field_index < array_num_fields ; array_field_index++){
248931b436eSMatthias Ringwald                         switch (array_format[array_field_index]){
249931b436eSMatthias Ringwald                             case '1':
250931b436eSMatthias Ringwald                                 hci_cmd_buffer[pos++] = ((const uint8_t *) array_data[array_field_index])[array_element_index];
251931b436eSMatthias Ringwald                                 break;
252931b436eSMatthias Ringwald                             case '2':
253931b436eSMatthias Ringwald                                 little_endian_store_16(hci_cmd_buffer, pos, ((const uint16_t *) array_data[array_field_index])[array_element_index]);
254931b436eSMatthias Ringwald                                 pos += 2;
255931b436eSMatthias Ringwald                                 break;
256931b436eSMatthias Ringwald                             default:
257931b436eSMatthias Ringwald                                 btstack_unreachable();
258931b436eSMatthias Ringwald                                 break;
259931b436eSMatthias Ringwald                         }
260931b436eSMatthias Ringwald                     }
261931b436eSMatthias Ringwald                 }
262931b436eSMatthias Ringwald                 break;
263931b436eSMatthias Ringwald #endif
264931b436eSMatthias Ringwald #ifdef ENABLE_LE_SECURE_CONNECTIONS
265931b436eSMatthias Ringwald             case 'Q':
266931b436eSMatthias Ringwald                 ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
267931b436eSMatthias Ringwald                 reverse_bytes(ptr, &hci_cmd_buffer[pos], 32);
268931b436eSMatthias Ringwald                 pos += 32;
269931b436eSMatthias Ringwald                 break;
270931b436eSMatthias Ringwald #endif
271931b436eSMatthias Ringwald #ifdef ENABLE_SDP
272931b436eSMatthias Ringwald             // used by daemon
273931b436eSMatthias Ringwald             case 'S': { // Service Record (Data Element Sequence)
274931b436eSMatthias Ringwald                 ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
275931b436eSMatthias Ringwald                 uint16_t len = de_get_len(ptr);
276931b436eSMatthias Ringwald                 (void)memcpy(&hci_cmd_buffer[pos], ptr, len);
277931b436eSMatthias Ringwald                 pos += len;
278931b436eSMatthias Ringwald                 break;
279931b436eSMatthias Ringwald             }
280931b436eSMatthias Ringwald #endif
28156042629SMatthias Ringwald             default:
2827f67490cSMatthias Ringwald                 btstack_unreachable();
28356042629SMatthias Ringwald                 break;
28456042629SMatthias Ringwald         }
28556042629SMatthias Ringwald         format++;
28656042629SMatthias Ringwald     };
28756042629SMatthias Ringwald     hci_cmd_buffer[2] = pos - 3;
28856042629SMatthias Ringwald     return pos;
28956042629SMatthias Ringwald }
29056042629SMatthias Ringwald 
29156042629SMatthias Ringwald /**
29256042629SMatthias Ringwald  *  Link Control Commands
29356042629SMatthias Ringwald  */
29456042629SMatthias Ringwald 
29556042629SMatthias Ringwald /**
29656042629SMatthias Ringwald  * @param lap
29756042629SMatthias Ringwald  * @param inquiry_length
29856042629SMatthias Ringwald  * @param num_responses
29956042629SMatthias Ringwald  */
30056042629SMatthias Ringwald const hci_cmd_t hci_inquiry = {
301ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_INQUIRY, "311"
30256042629SMatthias Ringwald };
30356042629SMatthias Ringwald 
30456042629SMatthias Ringwald /**
30556042629SMatthias Ringwald  */
30656042629SMatthias Ringwald const hci_cmd_t hci_inquiry_cancel = {
307ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_INQUIRY_CANCEL, ""
30856042629SMatthias Ringwald };
30956042629SMatthias Ringwald 
31056042629SMatthias Ringwald /**
3116fe44815SRicardo Quesada  * @param max_period_length
3126fe44815SRicardo Quesada  * @param min_period_length
3136fe44815SRicardo Quesada  * @param lap
3146fe44815SRicardo Quesada  * @param inquiry_length
3156fe44815SRicardo Quesada  * @param num_responses
3166fe44815SRicardo Quesada  */
3176fe44815SRicardo Quesada const hci_cmd_t hci_periodic_inquiry_mode = {
3186fe44815SRicardo Quesada     HCI_OPCODE_HCI_PERIODIC_INQUIRY_MODE, "22311"
3196fe44815SRicardo Quesada };
3206fe44815SRicardo Quesada 
3216fe44815SRicardo Quesada /**
3226fe44815SRicardo Quesada  */
3236fe44815SRicardo Quesada const hci_cmd_t hci_exit_periodic_inquiry_mode = {
3246fe44815SRicardo Quesada     HCI_OPCODE_HCI_EXIT_PERIODIC_INQUIRY_MODE, ""
3256fe44815SRicardo Quesada };
3266fe44815SRicardo Quesada 
3276fe44815SRicardo Quesada /**
32856042629SMatthias Ringwald  * @param bd_addr
32956042629SMatthias Ringwald  * @param packet_type
33056042629SMatthias Ringwald  * @param page_scan_repetition_mode
33156042629SMatthias Ringwald  * @param reserved
33256042629SMatthias Ringwald  * @param clock_offset
33356042629SMatthias Ringwald  * @param allow_role_switch
33456042629SMatthias Ringwald  */
33556042629SMatthias Ringwald const hci_cmd_t hci_create_connection = {
336ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_CREATE_CONNECTION, "B21121"
33756042629SMatthias Ringwald };
33856042629SMatthias Ringwald 
33956042629SMatthias Ringwald /**
34056042629SMatthias Ringwald  * @param handle
34156042629SMatthias Ringwald  * @param reason (0x05, 0x13-0x15, 0x1a, 0x29, see Errors Codes in BT Spec Part D)
34256042629SMatthias Ringwald  */
34356042629SMatthias Ringwald const hci_cmd_t hci_disconnect = {
344ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_DISCONNECT, "H1"
34556042629SMatthias Ringwald };
34656042629SMatthias Ringwald 
34756042629SMatthias Ringwald /**
34856042629SMatthias Ringwald  * @param bd_addr
34956042629SMatthias Ringwald  */
35056042629SMatthias Ringwald const hci_cmd_t hci_create_connection_cancel = {
351ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_CREATE_CONNECTION_CANCEL, "B"
35256042629SMatthias Ringwald };
35356042629SMatthias Ringwald 
35456042629SMatthias Ringwald /**
35556042629SMatthias Ringwald  * @param bd_addr
35656042629SMatthias Ringwald  * @param role (become master, stay slave)
35756042629SMatthias Ringwald  */
35856042629SMatthias Ringwald const hci_cmd_t hci_accept_connection_request = {
359ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_ACCEPT_CONNECTION_REQUEST, "B1"
36056042629SMatthias Ringwald };
36156042629SMatthias Ringwald 
36256042629SMatthias Ringwald /**
36356042629SMatthias Ringwald  * @param bd_addr
36456042629SMatthias Ringwald  * @param reason (e.g. CONNECTION REJECTED DUE TO LIMITED RESOURCES (0x0d))
36556042629SMatthias Ringwald  */
36656042629SMatthias Ringwald const hci_cmd_t hci_reject_connection_request = {
367ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_REJECT_CONNECTION_REQUEST, "B1"
36856042629SMatthias Ringwald };
36956042629SMatthias Ringwald 
37056042629SMatthias Ringwald /**
37156042629SMatthias Ringwald  * @param bd_addr
37256042629SMatthias Ringwald  * @param link_key
37356042629SMatthias Ringwald  */
37456042629SMatthias Ringwald const hci_cmd_t hci_link_key_request_reply = {
375ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LINK_KEY_REQUEST_REPLY, "BP"
37656042629SMatthias Ringwald };
37756042629SMatthias Ringwald 
37856042629SMatthias Ringwald /**
37956042629SMatthias Ringwald  * @param bd_addr
38056042629SMatthias Ringwald  */
38156042629SMatthias Ringwald const hci_cmd_t hci_link_key_request_negative_reply = {
382ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LINK_KEY_REQUEST_NEGATIVE_REPLY, "B"
38356042629SMatthias Ringwald };
38456042629SMatthias Ringwald 
38556042629SMatthias Ringwald /**
38656042629SMatthias Ringwald  * @param bd_addr
38756042629SMatthias Ringwald  * @param pin_length
38856042629SMatthias Ringwald  * @param pin (c-string)
38956042629SMatthias Ringwald  */
39056042629SMatthias Ringwald const hci_cmd_t hci_pin_code_request_reply = {
391ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_PIN_CODE_REQUEST_REPLY, "B1P"
39256042629SMatthias Ringwald };
39356042629SMatthias Ringwald 
39456042629SMatthias Ringwald /**
39556042629SMatthias Ringwald  * @param bd_addr
39656042629SMatthias Ringwald  */
39756042629SMatthias Ringwald const hci_cmd_t hci_pin_code_request_negative_reply = {
398ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_PIN_CODE_REQUEST_NEGATIVE_REPLY, "B"
39956042629SMatthias Ringwald };
40056042629SMatthias Ringwald 
40156042629SMatthias Ringwald /**
40256042629SMatthias Ringwald  * @param handle
40356042629SMatthias Ringwald  * @param packet_type
40456042629SMatthias Ringwald  */
40556042629SMatthias Ringwald const hci_cmd_t hci_change_connection_packet_type = {
406ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_CHANGE_CONNECTION_PACKET_TYPE, "H2"
40756042629SMatthias Ringwald };
40856042629SMatthias Ringwald 
40956042629SMatthias Ringwald /**
41056042629SMatthias Ringwald  * @param handle
41156042629SMatthias Ringwald  */
41256042629SMatthias Ringwald const hci_cmd_t hci_authentication_requested = {
413ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_AUTHENTICATION_REQUESTED, "H"
41456042629SMatthias Ringwald };
41556042629SMatthias Ringwald 
41656042629SMatthias Ringwald /**
41756042629SMatthias Ringwald  * @param handle
41856042629SMatthias Ringwald  * @param encryption_enable
41956042629SMatthias Ringwald  */
42056042629SMatthias Ringwald const hci_cmd_t hci_set_connection_encryption = {
421ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_SET_CONNECTION_ENCRYPTION, "H1"
42256042629SMatthias Ringwald };
42356042629SMatthias Ringwald 
42456042629SMatthias Ringwald /**
42556042629SMatthias Ringwald  * @param handle
42656042629SMatthias Ringwald  */
42756042629SMatthias Ringwald const hci_cmd_t hci_change_connection_link_key = {
428ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_CHANGE_CONNECTION_LINK_KEY, "H"
42956042629SMatthias Ringwald };
43056042629SMatthias Ringwald 
43156042629SMatthias Ringwald /**
43256042629SMatthias Ringwald  * @param bd_addr
43356042629SMatthias Ringwald  * @param page_scan_repetition_mode
43456042629SMatthias Ringwald  * @param reserved
43556042629SMatthias Ringwald  * @param clock_offset
43656042629SMatthias Ringwald  */
43756042629SMatthias Ringwald const hci_cmd_t hci_remote_name_request = {
438ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_REMOTE_NAME_REQUEST, "B112"
43956042629SMatthias Ringwald };
44056042629SMatthias Ringwald 
44156042629SMatthias Ringwald 
44256042629SMatthias Ringwald /**
44356042629SMatthias Ringwald  * @param bd_addr
44456042629SMatthias Ringwald  */
44556042629SMatthias Ringwald const hci_cmd_t hci_remote_name_request_cancel = {
446ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_REMOTE_NAME_REQUEST_CANCEL, "B"
44756042629SMatthias Ringwald };
44856042629SMatthias Ringwald 
44956042629SMatthias Ringwald  /**
45056042629SMatthias Ringwald  * @param handle
45156042629SMatthias Ringwald  */
45256042629SMatthias Ringwald const hci_cmd_t hci_read_remote_supported_features_command = {
453ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_REMOTE_SUPPORTED_FEATURES_COMMAND, "H"
4548b22c04dSMatthias Ringwald };
4558b22c04dSMatthias Ringwald 
4568b22c04dSMatthias Ringwald /**
457d5057706SMatthias Ringwald * @param handle
458d5057706SMatthias Ringwald */
459d5057706SMatthias Ringwald const hci_cmd_t hci_read_remote_extended_features_command = {
460ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_REMOTE_EXTENDED_FEATURES_COMMAND, "H1"
461d5057706SMatthias Ringwald };
462d5057706SMatthias Ringwald 
463d5057706SMatthias Ringwald /**
4648b22c04dSMatthias Ringwald  * @param handle
4658b22c04dSMatthias Ringwald  */
4668b22c04dSMatthias Ringwald const hci_cmd_t hci_read_remote_version_information = {
467ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_REMOTE_VERSION_INFORMATION, "H"
46856042629SMatthias Ringwald };
46956042629SMatthias Ringwald 
47056042629SMatthias Ringwald /**
47156042629SMatthias Ringwald  * @param handle
47256042629SMatthias Ringwald  * @param transmit_bandwidth 8000(64kbps)
47356042629SMatthias Ringwald  * @param receive_bandwidth  8000(64kbps)
47456042629SMatthias Ringwald  * @param max_latency        >= 7ms for eSCO, 0xFFFF do not care
47556042629SMatthias Ringwald  * @param voice_settings     e.g. CVSD, Input Coding: Linear, Input Data Format: 2’s complement, data 16bit: 00011000000 == 0x60
47656042629SMatthias Ringwald  * @param retransmission_effort  e.g. 0xFF do not care
47756042629SMatthias Ringwald  * @param packet_type        at least EV3 for eSCO
47856042629SMatthias Ringwald  */
47956042629SMatthias Ringwald const hci_cmd_t hci_setup_synchronous_connection = {
480ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_SETUP_SYNCHRONOUS_CONNECTION, "H442212"
48156042629SMatthias Ringwald };
48256042629SMatthias Ringwald 
48356042629SMatthias Ringwald /**
48456042629SMatthias Ringwald  * @param bd_addr
48556042629SMatthias Ringwald  * @param transmit_bandwidth
48656042629SMatthias Ringwald  * @param receive_bandwidth
48756042629SMatthias Ringwald  * @param max_latency
48856042629SMatthias Ringwald  * @param voice_settings
48956042629SMatthias Ringwald  * @param retransmission_effort
49056042629SMatthias Ringwald  * @param packet_type
49156042629SMatthias Ringwald  */
49256042629SMatthias Ringwald const hci_cmd_t hci_accept_synchronous_connection = {
493ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_ACCEPT_SYNCHRONOUS_CONNECTION, "B442212"
49456042629SMatthias Ringwald };
49556042629SMatthias Ringwald 
49656042629SMatthias Ringwald /**
49756042629SMatthias Ringwald  * @param bd_addr
49856042629SMatthias Ringwald  * @param IO_capability
49956042629SMatthias Ringwald  * @param OOB_data_present
50056042629SMatthias Ringwald  * @param authentication_requirements
50156042629SMatthias Ringwald  */
50256042629SMatthias Ringwald const hci_cmd_t hci_io_capability_request_reply = {
503ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_IO_CAPABILITY_REQUEST_REPLY, "B111"
50456042629SMatthias Ringwald };
50556042629SMatthias Ringwald 
50656042629SMatthias Ringwald /**
50756042629SMatthias Ringwald  * @param bd_addr
50856042629SMatthias Ringwald  */
50956042629SMatthias Ringwald const hci_cmd_t hci_user_confirmation_request_reply = {
510ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_USER_CONFIRMATION_REQUEST_REPLY, "B"
51156042629SMatthias Ringwald };
51256042629SMatthias Ringwald 
51356042629SMatthias Ringwald /**
51456042629SMatthias Ringwald  * @param bd_addr
51556042629SMatthias Ringwald  */
51656042629SMatthias Ringwald const hci_cmd_t hci_user_confirmation_request_negative_reply = {
517ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_USER_CONFIRMATION_REQUEST_NEGATIVE_REPLY, "B"
51856042629SMatthias Ringwald };
51956042629SMatthias Ringwald 
52056042629SMatthias Ringwald /**
52156042629SMatthias Ringwald  * @param bd_addr
52256042629SMatthias Ringwald  * @param numeric_value
52356042629SMatthias Ringwald  */
52456042629SMatthias Ringwald const hci_cmd_t hci_user_passkey_request_reply = {
525ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_USER_PASSKEY_REQUEST_REPLY, "B4"
52656042629SMatthias Ringwald };
52756042629SMatthias Ringwald 
52856042629SMatthias Ringwald /**
52956042629SMatthias Ringwald  * @param bd_addr
53056042629SMatthias Ringwald  */
53156042629SMatthias Ringwald const hci_cmd_t hci_user_passkey_request_negative_reply = {
532ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_USER_PASSKEY_REQUEST_NEGATIVE_REPLY, "B"
53356042629SMatthias Ringwald };
53456042629SMatthias Ringwald 
53556042629SMatthias Ringwald /**
53656042629SMatthias Ringwald  * @param bd_addr
537237daac5SMatthias Ringwald  * @param c Simple Pairing Hash C
538237daac5SMatthias Ringwald  * @param r Simple Pairing Randomizer R
539237daac5SMatthias Ringwald  */
540237daac5SMatthias Ringwald const hci_cmd_t hci_remote_oob_data_request_reply = {
541bb75dd7dSMatthias Ringwald     HCI_OPCODE_HCI_REMOTE_OOB_DATA_REQUEST_REPLY, "BKK"
542237daac5SMatthias Ringwald };
543237daac5SMatthias Ringwald 
544237daac5SMatthias Ringwald /**
545237daac5SMatthias Ringwald  * @param bd_addr
54656042629SMatthias Ringwald  */
54756042629SMatthias Ringwald const hci_cmd_t hci_remote_oob_data_request_negative_reply = {
548ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_REMOTE_OOB_DATA_REQUEST_NEGATIVE_REPLY, "B"
54956042629SMatthias Ringwald };
55056042629SMatthias Ringwald 
55156042629SMatthias Ringwald /**
55256042629SMatthias Ringwald  * @param bd_addr
55356042629SMatthias Ringwald  * @param reason (Part D, Error codes)
55456042629SMatthias Ringwald  */
55556042629SMatthias Ringwald const hci_cmd_t hci_io_capability_request_negative_reply = {
556ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_IO_CAPABILITY_REQUEST_NEGATIVE_REPLY, "B1"
55756042629SMatthias Ringwald };
55856042629SMatthias Ringwald 
55956042629SMatthias Ringwald /**
56056042629SMatthias Ringwald  * @param handle
56156042629SMatthias Ringwald  * @param transmit_bandwidth
56256042629SMatthias Ringwald  * @param receive_bandwidth
56356042629SMatthias Ringwald  * @param transmit_coding_format_type
56456042629SMatthias Ringwald  * @param transmit_coding_format_company
56556042629SMatthias Ringwald  * @param transmit_coding_format_codec
56656042629SMatthias Ringwald  * @param receive_coding_format_type
56756042629SMatthias Ringwald  * @param receive_coding_format_company
56856042629SMatthias Ringwald  * @param receive_coding_format_codec
56956042629SMatthias Ringwald  * @param transmit_coding_frame_size
57056042629SMatthias Ringwald  * @param receive_coding_frame_size
57156042629SMatthias Ringwald  * @param input_bandwidth
57256042629SMatthias Ringwald  * @param output_bandwidth
57356042629SMatthias Ringwald  * @param input_coding_format_type
57456042629SMatthias Ringwald  * @param input_coding_format_company
57556042629SMatthias Ringwald  * @param input_coding_format_codec
57656042629SMatthias Ringwald  * @param output_coding_format_type
57756042629SMatthias Ringwald  * @param output_coding_format_company
57856042629SMatthias Ringwald  * @param output_coding_format_codec
57956042629SMatthias Ringwald  * @param input_coded_data_size
58056042629SMatthias Ringwald  * @param outupt_coded_data_size
58156042629SMatthias Ringwald  * @param input_pcm_data_format
58256042629SMatthias Ringwald  * @param output_pcm_data_format
58356042629SMatthias Ringwald  * @param input_pcm_sample_payload_msb_position
58456042629SMatthias Ringwald  * @param output_pcm_sample_payload_msb_position
58556042629SMatthias Ringwald  * @param input_data_path
58656042629SMatthias Ringwald  * @param output_data_path
58756042629SMatthias Ringwald  * @param input_transport_unit_size
58856042629SMatthias Ringwald  * @param output_transport_unit_size
58956042629SMatthias Ringwald  * @param max_latency
59056042629SMatthias Ringwald  * @param packet_type
59156042629SMatthias Ringwald  * @param retransmission_effort
59256042629SMatthias Ringwald  */
59356042629SMatthias Ringwald const hci_cmd_t hci_enhanced_setup_synchronous_connection = {
594ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_ENHANCED_SETUP_SYNCHRONOUS_CONNECTION, "H4412212222441221222211111111221"
59556042629SMatthias Ringwald };
59656042629SMatthias Ringwald 
59756042629SMatthias Ringwald /**
59856042629SMatthias Ringwald  * @param bd_addr
59956042629SMatthias Ringwald  * @param transmit_bandwidth
60056042629SMatthias Ringwald  * @param receive_bandwidth
60156042629SMatthias Ringwald  * @param transmit_coding_format_type
60256042629SMatthias Ringwald  * @param transmit_coding_format_company
60356042629SMatthias Ringwald  * @param transmit_coding_format_codec
60456042629SMatthias Ringwald  * @param receive_coding_format_type
60556042629SMatthias Ringwald  * @param receive_coding_format_company
60656042629SMatthias Ringwald  * @param receive_coding_format_codec
60756042629SMatthias Ringwald  * @param transmit_coding_frame_size
60856042629SMatthias Ringwald  * @param receive_coding_frame_size
60956042629SMatthias Ringwald  * @param input_bandwidth
61056042629SMatthias Ringwald  * @param output_bandwidth
61156042629SMatthias Ringwald  * @param input_coding_format_type
61256042629SMatthias Ringwald  * @param input_coding_format_company
61356042629SMatthias Ringwald  * @param input_coding_format_codec
61456042629SMatthias Ringwald  * @param output_coding_format_type
61556042629SMatthias Ringwald  * @param output_coding_format_company
61656042629SMatthias Ringwald  * @param output_coding_format_codec
61756042629SMatthias Ringwald  * @param input_coded_data_size
61856042629SMatthias Ringwald  * @param outupt_coded_data_size
61956042629SMatthias Ringwald  * @param input_pcm_data_format
62056042629SMatthias Ringwald  * @param output_pcm_data_format
62156042629SMatthias Ringwald  * @param input_pcm_sample_payload_msb_position
62256042629SMatthias Ringwald  * @param output_pcm_sample_payload_msb_position
62356042629SMatthias Ringwald  * @param input_data_path
62456042629SMatthias Ringwald  * @param output_data_path
62556042629SMatthias Ringwald  * @param input_transport_unit_size
62656042629SMatthias Ringwald  * @param output_transport_unit_size
62756042629SMatthias Ringwald  * @param max_latency
62856042629SMatthias Ringwald  * @param packet_type
62956042629SMatthias Ringwald  * @param retransmission_effort
63056042629SMatthias Ringwald  */
63156042629SMatthias Ringwald const hci_cmd_t hci_enhanced_accept_synchronous_connection = {
632ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_ENHANCED_ACCEPT_SYNCHRONOUS_CONNECTION, "B4412212222441221222211111111221"
63356042629SMatthias Ringwald };
63456042629SMatthias Ringwald 
63556042629SMatthias Ringwald /**
636bb75dd7dSMatthias Ringwald  * @param bd_addr
637bb75dd7dSMatthias Ringwald  * @param c_192 Simple Pairing Hash C derived from P-192 public key
638bb75dd7dSMatthias Ringwald  * @param r_192 Simple Pairing Randomizer derived from P-192 public key
639bb75dd7dSMatthias Ringwald  * @param c_256 Simple Pairing Hash C derived from P-256 public key
640bb75dd7dSMatthias Ringwald  * @param r_256 Simple Pairing Randomizer derived from P-256 public key
641bb75dd7dSMatthias Ringwald  */
642bb75dd7dSMatthias Ringwald const hci_cmd_t hci_remote_oob_extended_data_request_reply = {
643bb75dd7dSMatthias Ringwald     HCI_OPCODE_HCI_REMOTE_OOB_EXTENDED_DATA_REQUEST_REPLY, "BKKKK"
644bb75dd7dSMatthias Ringwald };
645bb75dd7dSMatthias Ringwald 
646bb75dd7dSMatthias Ringwald /**
64756042629SMatthias Ringwald  *  Link Policy Commands
64856042629SMatthias Ringwald  */
64956042629SMatthias Ringwald 
65056042629SMatthias Ringwald /**
65156042629SMatthias Ringwald  * @param handle
65229ae3d7dSMatthias Ringwald  * @param hold_mode_max_interval * 0.625 ms,  range: 0x0002..0xFFFE; only even values are valid.
65329ae3d7dSMatthias Ringwald  * @param hold_mode_min_interval * 0.625 ms,  range: 0x0002..0xFFFE; only even values are valid.
65429ae3d7dSMatthias Ringwald  */
65529ae3d7dSMatthias Ringwald const hci_cmd_t hci_hold_mode = {
65629ae3d7dSMatthias Ringwald         HCI_OPCODE_HCI_HOLD_MODE, "H22"
65729ae3d7dSMatthias Ringwald };
65829ae3d7dSMatthias Ringwald 
65929ae3d7dSMatthias Ringwald /**
66029ae3d7dSMatthias Ringwald  * @param handle
66156042629SMatthias Ringwald  * @param sniff_max_interval
66256042629SMatthias Ringwald  * @param sniff_min_interval
66356042629SMatthias Ringwald  * @param sniff_attempt
66456042629SMatthias Ringwald  * @param sniff_timeout
66556042629SMatthias Ringwald  */
66656042629SMatthias Ringwald const hci_cmd_t hci_sniff_mode = {
667ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_SNIFF_MODE, "H2222"
66856042629SMatthias Ringwald };
66956042629SMatthias Ringwald 
67056042629SMatthias Ringwald /**
67156042629SMatthias Ringwald  * @param handle
6727cd21895SMatthias Ringwald  */
6737cd21895SMatthias Ringwald const hci_cmd_t hci_exit_sniff_mode = {
674ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_EXIT_SNIFF_MODE, "H"
6757cd21895SMatthias Ringwald };
6767cd21895SMatthias Ringwald 
6777cd21895SMatthias Ringwald /**
6786f351188SMatthias Ringwald  * @note  Removed in Bluetooth Core v5.0
6796f351188SMatthias Ringwald  * @param handle
6806f351188SMatthias Ringwald  * @param beacon_max_interval * 0.625 ms,  range: 0x000E..0xFFFE; only even values are valid.
6816f351188SMatthias Ringwald  * @param beacon_max_interval * 0.625 ms,  range: 0x000E..0xFFFE; only even values are valid.
6826f351188SMatthias Ringwald  */
6836f351188SMatthias Ringwald const hci_cmd_t hci_park_state = {
6846f351188SMatthias Ringwald         HCI_OPCODE_HCI_PARK_STATE, "H22"
6856f351188SMatthias Ringwald };
6866f351188SMatthias Ringwald 
6876f351188SMatthias Ringwald /**
6886f351188SMatthias Ringwald  * @note  Removed in Bluetooth Core v5.0
6896f351188SMatthias Ringwald  * @param handle
6906f351188SMatthias Ringwald  */
6916f351188SMatthias Ringwald const hci_cmd_t hci_exit_park_state = {
6926f351188SMatthias Ringwald         HCI_OPCODE_HCI_EXIT_PARK_STATE, "H"
6936f351188SMatthias Ringwald };
6946f351188SMatthias Ringwald 
6956f351188SMatthias Ringwald /**
6967cd21895SMatthias Ringwald  * @param handle
69756042629SMatthias Ringwald  * @param flags
69856042629SMatthias Ringwald  * @param service_type
69956042629SMatthias Ringwald  * @param token_rate (bytes/s)
70056042629SMatthias Ringwald  * @param peak_bandwith (bytes/s)
70156042629SMatthias Ringwald  * @param latency (us)
70256042629SMatthias Ringwald  * @param delay_variation (us)
70356042629SMatthias Ringwald  */
70456042629SMatthias Ringwald const hci_cmd_t hci_qos_setup = {
705ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_QOS_SETUP, "H114444"
70656042629SMatthias Ringwald };
70756042629SMatthias Ringwald 
70856042629SMatthias Ringwald /**
70956042629SMatthias Ringwald  * @param handle
71056042629SMatthias Ringwald  */
71156042629SMatthias Ringwald const hci_cmd_t hci_role_discovery = {
712ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_ROLE_DISCOVERY, "H"
71356042629SMatthias Ringwald };
71456042629SMatthias Ringwald 
71556042629SMatthias Ringwald /**
71656042629SMatthias Ringwald  * @param bd_addr
71756042629SMatthias Ringwald  * @param role (0=master,1=slave)
71856042629SMatthias Ringwald  */
71956042629SMatthias Ringwald const hci_cmd_t hci_switch_role_command= {
720ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_SWITCH_ROLE_COMMAND, "B1"
72156042629SMatthias Ringwald };
72256042629SMatthias Ringwald 
72356042629SMatthias Ringwald /**
72456042629SMatthias Ringwald  * @param handle
72556042629SMatthias Ringwald  */
72656042629SMatthias Ringwald const hci_cmd_t hci_read_link_policy_settings = {
727ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LINK_POLICY_SETTINGS, "H"
72856042629SMatthias Ringwald };
72956042629SMatthias Ringwald 
73056042629SMatthias Ringwald /**
73156042629SMatthias Ringwald  * @param handle
73256042629SMatthias Ringwald  * @param settings
73356042629SMatthias Ringwald  */
73456042629SMatthias Ringwald const hci_cmd_t hci_write_link_policy_settings = {
735ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_LINK_POLICY_SETTINGS, "H2"
73656042629SMatthias Ringwald };
73756042629SMatthias Ringwald 
738c4c88f1bSJakob Krantz /**
73932e2f27fSMatthias Ringwald  * @param handle
74032e2f27fSMatthias Ringwald  * @param max_latency
74132e2f27fSMatthias Ringwald  * @param min_remote_timeout
74232e2f27fSMatthias Ringwald  * @param min_local_timeout
74332e2f27fSMatthias Ringwald  */
74432e2f27fSMatthias Ringwald const hci_cmd_t hci_sniff_subrating = {
74550fe3a99SMilanka Ringwald     HCI_OPCODE_HCI_SNIFF_SUBRATING, "H222"
74632e2f27fSMatthias Ringwald };
74732e2f27fSMatthias Ringwald 
74832e2f27fSMatthias Ringwald /**
749c4c88f1bSJakob Krantz  * @param policy
750c4c88f1bSJakob Krantz  */
75153138e7aSMatthias Ringwald const hci_cmd_t hci_write_default_link_policy_setting = {
752ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_DEFAULT_LINK_POLICY_SETTING, "2"
753c4c88f1bSJakob Krantz };
754c4c88f1bSJakob Krantz 
755733a7793SMatthias Ringwald /**
756733a7793SMatthias Ringwald  * @param handle
757733a7793SMatthias Ringwald  * @param unused
758733a7793SMatthias Ringwald  * @param flow_direction
759733a7793SMatthias Ringwald  * @param service_type
760733a7793SMatthias Ringwald  * @param token_rate
761733a7793SMatthias Ringwald  * @param token_bucket_size
762733a7793SMatthias Ringwald  * @param peak_bandwidth
763733a7793SMatthias Ringwald  * @param access_latency
764733a7793SMatthias Ringwald  */
765733a7793SMatthias Ringwald const hci_cmd_t hci_flow_specification = {
766733a7793SMatthias Ringwald     HCI_OPCODE_HCI_FLOW_SPECIFICATION, "H1114444"
767733a7793SMatthias Ringwald };
768733a7793SMatthias Ringwald 
76956042629SMatthias Ringwald 
77056042629SMatthias Ringwald /**
77156042629SMatthias Ringwald  *  Controller & Baseband Commands
77256042629SMatthias Ringwald  */
77356042629SMatthias Ringwald 
7749119d792SMilanka Ringwald 
77556042629SMatthias Ringwald /**
77656042629SMatthias Ringwald  * @param event_mask_lover_octets
77756042629SMatthias Ringwald  * @param event_mask_higher_octets
77856042629SMatthias Ringwald  */
77956042629SMatthias Ringwald const hci_cmd_t hci_set_event_mask = {
780ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_SET_EVENT_MASK, "44"
78156042629SMatthias Ringwald };
78256042629SMatthias Ringwald 
78356042629SMatthias Ringwald /**
78456042629SMatthias Ringwald  */
78556042629SMatthias Ringwald const hci_cmd_t hci_reset = {
786ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_RESET, ""
78756042629SMatthias Ringwald };
78856042629SMatthias Ringwald 
78956042629SMatthias Ringwald /**
790e49d496aSMatthias Ringwald  * @param handle
791e49d496aSMatthias Ringwald  */
792e49d496aSMatthias Ringwald const hci_cmd_t hci_flush = {
793ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_FLUSH, "H"
7949af39d9fSMatthias Ringwald };
7959af39d9fSMatthias Ringwald 
7969af39d9fSMatthias Ringwald /**
7979af39d9fSMatthias Ringwald  * @param handle
7989af39d9fSMatthias Ringwald  */
7999af39d9fSMatthias Ringwald const hci_cmd_t hci_read_pin_type = {
800ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_PIN_TYPE, ""
8019af39d9fSMatthias Ringwald };
8029af39d9fSMatthias Ringwald 
8039af39d9fSMatthias Ringwald /**
8049af39d9fSMatthias Ringwald  * @param handle
8059af39d9fSMatthias Ringwald  */
8069af39d9fSMatthias Ringwald const hci_cmd_t hci_write_pin_type = {
807ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_PIN_TYPE, "1"
808e49d496aSMatthias Ringwald };
809e49d496aSMatthias Ringwald 
810e49d496aSMatthias Ringwald /**
81156042629SMatthias Ringwald  * @param bd_addr
81256042629SMatthias Ringwald  * @param delete_all_flags
81356042629SMatthias Ringwald  */
81456042629SMatthias Ringwald const hci_cmd_t hci_delete_stored_link_key = {
815ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_DELETE_STORED_LINK_KEY, "B1"
81656042629SMatthias Ringwald };
81756042629SMatthias Ringwald 
818f9f2075cSMatthias Ringwald #ifdef ENABLE_CLASSIC
81956042629SMatthias Ringwald /**
82056042629SMatthias Ringwald  * @param local_name (UTF-8, Null Terminated, max 248 octets)
82156042629SMatthias Ringwald  */
82256042629SMatthias Ringwald const hci_cmd_t hci_write_local_name = {
823ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_LOCAL_NAME, "N"
82456042629SMatthias Ringwald };
825f9f2075cSMatthias Ringwald #endif
82656042629SMatthias Ringwald 
82756042629SMatthias Ringwald /**
828e90bae01SMatthias Ringwald  */
829e90bae01SMatthias Ringwald const hci_cmd_t hci_read_local_name = {
830ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LOCAL_NAME, ""
831e90bae01SMatthias Ringwald };
832e90bae01SMatthias Ringwald 
833e90bae01SMatthias Ringwald /**
834195e82f3Sskoperst  */
835195e82f3Sskoperst const hci_cmd_t hci_read_page_timeout = {
836ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_PAGE_TIMEOUT, ""
837195e82f3Sskoperst };
838195e82f3Sskoperst 
839195e82f3Sskoperst /**
84056042629SMatthias Ringwald  * @param page_timeout (* 0.625 ms)
84156042629SMatthias Ringwald  */
84256042629SMatthias Ringwald const hci_cmd_t hci_write_page_timeout = {
843ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_PAGE_TIMEOUT, "2"
84456042629SMatthias Ringwald };
84556042629SMatthias Ringwald 
84656042629SMatthias Ringwald /**
8474eac2391SMatthias Ringwald  * @param scan_enable (no, inq, page, inq+page)
8484eac2391SMatthias Ringwald  */
8494eac2391SMatthias Ringwald const hci_cmd_t hci_write_scan_enable = {
850ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_SCAN_ENABLE, "1"
8514eac2391SMatthias Ringwald };
8524eac2391SMatthias Ringwald 
8534eac2391SMatthias Ringwald /**
854195e82f3Sskoperst  */
855195e82f3Sskoperst const hci_cmd_t hci_read_page_scan_activity = {
856ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_PAGE_SCAN_ACTIVITY, ""
857195e82f3Sskoperst };
858195e82f3Sskoperst 
859195e82f3Sskoperst /**
860195e82f3Sskoperst  * @param page_scan_interval (* 0.625 ms)
861195e82f3Sskoperst  * @param page_scan_window (* 0.625 ms, must be <= page_scan_interval)
862195e82f3Sskoperst  */
863195e82f3Sskoperst const hci_cmd_t hci_write_page_scan_activity = {
864ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_PAGE_SCAN_ACTIVITY, "22"
865195e82f3Sskoperst };
866195e82f3Sskoperst 
867195e82f3Sskoperst /**
86856042629SMatthias Ringwald  */
8694eac2391SMatthias Ringwald const hci_cmd_t hci_read_inquiry_scan_activity = {
870ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_INQUIRY_SCAN_ACTIVITY, ""
8714eac2391SMatthias Ringwald };
8724eac2391SMatthias Ringwald 
8734eac2391SMatthias Ringwald /**
8744eac2391SMatthias Ringwald  * @param inquiry_scan_interval (* 0.625 ms)
8754eac2391SMatthias Ringwald  * @param inquiry_scan_window (* 0.625 ms, must be <= inquiry_scan_interval)
8764eac2391SMatthias Ringwald  */
8774eac2391SMatthias Ringwald const hci_cmd_t hci_write_inquiry_scan_activity = {
878ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_INQUIRY_SCAN_ACTIVITY, "22"
87956042629SMatthias Ringwald };
88056042629SMatthias Ringwald 
88156042629SMatthias Ringwald /**
88256042629SMatthias Ringwald  * @param authentication_enable
88356042629SMatthias Ringwald  */
88456042629SMatthias Ringwald const hci_cmd_t hci_write_authentication_enable = {
885ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_AUTHENTICATION_ENABLE, "1"
88656042629SMatthias Ringwald };
88756042629SMatthias Ringwald 
88856042629SMatthias Ringwald /**
88939bcce03SMatthias Ringwald  * @param handle
89039bcce03SMatthias Ringwald  * @param timeout, max 0x07FF
89139bcce03SMatthias Ringwald  */
89239bcce03SMatthias Ringwald const hci_cmd_t hci_write_automatic_flush_timeout = {
89339bcce03SMatthias Ringwald         HCI_OPCODE_HCI_WRITE_AUTOMATIC_FLUSH_TIMEOUT, "H2"
89439bcce03SMatthias Ringwald };
89539bcce03SMatthias Ringwald 
89639bcce03SMatthias Ringwald /**
89756042629SMatthias Ringwald  * @param class_of_device
89856042629SMatthias Ringwald  */
89956042629SMatthias Ringwald const hci_cmd_t hci_write_class_of_device = {
900ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_CLASS_OF_DEVICE, "3"
90156042629SMatthias Ringwald };
90256042629SMatthias Ringwald 
90356042629SMatthias Ringwald /**
90456042629SMatthias Ringwald  */
90556042629SMatthias Ringwald const hci_cmd_t hci_read_num_broadcast_retransmissions = {
906ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_NUM_BROADCAST_RETRANSMISSIONS, ""
90756042629SMatthias Ringwald };
90856042629SMatthias Ringwald 
90956042629SMatthias Ringwald /**
91056042629SMatthias Ringwald  * @param num_broadcast_retransmissions (e.g. 0 for a single broadcast)
91156042629SMatthias Ringwald  */
91256042629SMatthias Ringwald const hci_cmd_t hci_write_num_broadcast_retransmissions = {
913ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_NUM_BROADCAST_RETRANSMISSIONS, "1"
91456042629SMatthias Ringwald };
91556042629SMatthias Ringwald 
91656042629SMatthias Ringwald /**
91744751e25SMatthias Ringwald  * @param connection_handle
91844751e25SMatthias Ringwald  * @param type 0 = current transmit level, 1 = max transmit level
91944751e25SMatthias Ringwald  */
92044751e25SMatthias Ringwald const hci_cmd_t hci_read_transmit_power_level = {
921ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_TRANSMIT_POWER_LEVEL, "11"
92244751e25SMatthias Ringwald };
92344751e25SMatthias Ringwald 
92444751e25SMatthias Ringwald /**
92556042629SMatthias Ringwald  * @param synchronous_flow_control_enable - if yes, num completed packet everts are sent for SCO packets
92656042629SMatthias Ringwald  */
92756042629SMatthias Ringwald const hci_cmd_t hci_write_synchronous_flow_control_enable = {
928ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_SYNCHRONOUS_FLOW_CONTROL_ENABLE, "1"
92956042629SMatthias Ringwald };
93056042629SMatthias Ringwald 
9312b838201SMatthias Ringwald #ifdef ENABLE_HCI_CONTROLLER_TO_HOST_FLOW_CONTROL
9322b838201SMatthias Ringwald 
9332b838201SMatthias Ringwald /**
9342b838201SMatthias Ringwald  * @param flow_control_enable - 0: off, 1: ACL only, 2: SCO only, 3: ACL + SCO
9352b838201SMatthias Ringwald  */
9362b838201SMatthias Ringwald const hci_cmd_t hci_set_controller_to_host_flow_control = {
937ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_SET_CONTROLLER_TO_HOST_FLOW_CONTROL, "1"
9382b838201SMatthias Ringwald };
9392b838201SMatthias Ringwald 
94056042629SMatthias Ringwald /**
94156042629SMatthias Ringwald  * @param host_acl_data_packet_length
94256042629SMatthias Ringwald  * @param host_synchronous_data_packet_length
94356042629SMatthias Ringwald  * @param host_total_num_acl_data_packets
94456042629SMatthias Ringwald  * @param host_total_num_synchronous_data_packets
94556042629SMatthias Ringwald  */
94656042629SMatthias Ringwald const hci_cmd_t hci_host_buffer_size = {
947ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_HOST_BUFFER_SIZE, "2122"
94856042629SMatthias Ringwald };
94956042629SMatthias Ringwald 
9509119d792SMilanka Ringwald 
9512b838201SMatthias Ringwald #if 0
9522b838201SMatthias Ringwald //
9532b838201SMatthias Ringwald // command sent manually sent by hci_host_num_completed_packets
9542b838201SMatthias Ringwald //
9552b838201SMatthias Ringwald /**
9562b838201SMatthias Ringwald  * @note only single handle supported by BTstack command generator
9572b838201SMatthias Ringwald  * @param number_of_handles must be 1
9582b838201SMatthias Ringwald  * @param connection_handle
9592b838201SMatthias Ringwald  * @param host_num_of_completed_packets for the given connection handle
9602b838201SMatthias Ringwald  */
9612b838201SMatthias Ringwald const hci_cmd_t hci_host_number_of_completed_packets = {
962ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_HOST_NUMBER_OF_COMPLETED_PACKETS, "1H2"
9632b838201SMatthias Ringwald };
9642b838201SMatthias Ringwald #endif
9652b838201SMatthias Ringwald 
9662b838201SMatthias Ringwald #endif
9672b838201SMatthias Ringwald 
96856042629SMatthias Ringwald /**
96956042629SMatthias Ringwald  * @param handle
97056042629SMatthias Ringwald  */
97156042629SMatthias Ringwald const hci_cmd_t hci_read_link_supervision_timeout = {
972ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LINK_SUPERVISION_TIMEOUT, "H"
97356042629SMatthias Ringwald };
97456042629SMatthias Ringwald 
97556042629SMatthias Ringwald /**
97656042629SMatthias Ringwald  * @param handle
97756042629SMatthias Ringwald  * @param timeout (0x0001 - 0xFFFF Time -> Range: 0.625ms - 40.9 sec)
97856042629SMatthias Ringwald  */
97956042629SMatthias Ringwald const hci_cmd_t hci_write_link_supervision_timeout = {
980ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_LINK_SUPERVISION_TIMEOUT, "H2"
98156042629SMatthias Ringwald };
98256042629SMatthias Ringwald 
98356042629SMatthias Ringwald /**
9849119d792SMilanka Ringwald  * @param num_current_iac must be 2
9859119d792SMilanka Ringwald  * @param iac_lap1
9869119d792SMilanka Ringwald  * @param iac_lap2
9879119d792SMilanka Ringwald  */
9889119d792SMilanka Ringwald const hci_cmd_t hci_write_current_iac_lap_two_iacs = {
989ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_CURRENT_IAC_LAP_TWO_IACS, "133"
9909119d792SMilanka Ringwald };
9919119d792SMilanka Ringwald 
9929119d792SMilanka Ringwald /**
9935769fd77SMatthias Ringwald  * @param inquiry_scan_type (0x00 = standard, 0x01 = interlaced)
9945769fd77SMatthias Ringwald  */
9955769fd77SMatthias Ringwald const hci_cmd_t hci_write_inquiry_scan_type = {
9965769fd77SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_INQUIRY_SCAN_TYPE,  "1"
9975769fd77SMatthias Ringwald };
9985769fd77SMatthias Ringwald 
9995769fd77SMatthias Ringwald /**
100056042629SMatthias Ringwald  * @param inquiry_mode (0x00 = standard, 0x01 = with RSSI, 0x02 = extended)
100156042629SMatthias Ringwald  */
100256042629SMatthias Ringwald const hci_cmd_t hci_write_inquiry_mode = {
1003ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_INQUIRY_MODE, "1"
100456042629SMatthias Ringwald };
100556042629SMatthias Ringwald 
100656042629SMatthias Ringwald /**
10075769fd77SMatthias Ringwald  * @param page_scan_type (0x00 = standard, 0x01 = interlaced)
10085769fd77SMatthias Ringwald  */
10095769fd77SMatthias Ringwald const hci_cmd_t hci_write_page_scan_type = {
10105769fd77SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_PAGE_SCAN_TYPE, "1"
10115769fd77SMatthias Ringwald };
10125769fd77SMatthias Ringwald 
10135769fd77SMatthias Ringwald /**
101456042629SMatthias Ringwald  * @param fec_required
101556042629SMatthias Ringwald  * @param exstended_inquiry_response
101656042629SMatthias Ringwald  */
101756042629SMatthias Ringwald const hci_cmd_t hci_write_extended_inquiry_response = {
1018ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_EXTENDED_INQUIRY_RESPONSE, "1E"
101956042629SMatthias Ringwald };
102056042629SMatthias Ringwald 
102156042629SMatthias Ringwald /**
102256042629SMatthias Ringwald  * @param mode (0 = off, 1 = on)
102356042629SMatthias Ringwald  */
102456042629SMatthias Ringwald const hci_cmd_t hci_write_simple_pairing_mode = {
1025ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_SIMPLE_PAIRING_MODE, "1"
102656042629SMatthias Ringwald };
102756042629SMatthias Ringwald 
1028237daac5SMatthias Ringwald /**
1029237daac5SMatthias Ringwald  */
1030237daac5SMatthias Ringwald const hci_cmd_t hci_read_local_oob_data = {
1031ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LOCAL_OOB_DATA, ""
1032237daac5SMatthias Ringwald     // return status, C, R
1033237daac5SMatthias Ringwald };
1034483c5078SMatthias Ringwald 
1035483c5078SMatthias Ringwald /**
1036483c5078SMatthias Ringwald  * @param mode (0 = off, 1 = on)
1037483c5078SMatthias Ringwald  */
1038483c5078SMatthias Ringwald const hci_cmd_t hci_write_default_erroneous_data_reporting = {
1039ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_DEFAULT_ERRONEOUS_DATA_REPORTING, "1"
1040483c5078SMatthias Ringwald };
1041483c5078SMatthias Ringwald 
104256042629SMatthias Ringwald /**
104356042629SMatthias Ringwald  */
104456042629SMatthias Ringwald const hci_cmd_t hci_read_le_host_supported = {
1045ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LE_HOST_SUPPORTED, ""
104656042629SMatthias Ringwald     // return: status, le supported host, simultaneous le host
104756042629SMatthias Ringwald };
104856042629SMatthias Ringwald 
104956042629SMatthias Ringwald /**
105056042629SMatthias Ringwald  * @param le_supported_host
105156042629SMatthias Ringwald  * @param simultaneous_le_host
105256042629SMatthias Ringwald  */
105356042629SMatthias Ringwald const hci_cmd_t hci_write_le_host_supported = {
1054ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_LE_HOST_SUPPORTED, "11"
105556042629SMatthias Ringwald     // return: status
105656042629SMatthias Ringwald };
105756042629SMatthias Ringwald 
105856042629SMatthias Ringwald /**
1059b002ae8cSMatthias Ringwald  * @param secure_connections_host_support
1060b002ae8cSMatthias Ringwald  */
1061b002ae8cSMatthias Ringwald const hci_cmd_t hci_write_secure_connections_host_support = {
1062ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_SECURE_CONNECTIONS_HOST_SUPPORT, "1"
1063b002ae8cSMatthias Ringwald     // return: status
1064b002ae8cSMatthias Ringwald };
1065b002ae8cSMatthias Ringwald 
1066b002ae8cSMatthias Ringwald /**
1067237daac5SMatthias Ringwald  */
1068bb75dd7dSMatthias Ringwald const hci_cmd_t hci_read_local_extended_oob_data = {
10691849becdSMatthias Ringwald     HCI_OPCODE_HCI_READ_LOCAL_EXTENDED_OOB_DATA, ""
1070237daac5SMatthias Ringwald     // return status, C_192, R_192, R_256, C_256
1071237daac5SMatthias Ringwald };
1072237daac5SMatthias Ringwald 
1073237daac5SMatthias Ringwald 
1074237daac5SMatthias Ringwald /**
107556042629SMatthias Ringwald  * Testing Commands
107656042629SMatthias Ringwald  */
107756042629SMatthias Ringwald 
107856042629SMatthias Ringwald 
107956042629SMatthias Ringwald /**
108056042629SMatthias Ringwald  */
108156042629SMatthias Ringwald const hci_cmd_t hci_read_loopback_mode = {
1082ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LOOPBACK_MODE, ""
108356042629SMatthias Ringwald     // return: status, loopback mode (0 = off, 1 = local loopback, 2 = remote loopback)
108456042629SMatthias Ringwald };
108556042629SMatthias Ringwald 
108656042629SMatthias Ringwald /**
108756042629SMatthias Ringwald  * @param loopback_mode
108856042629SMatthias Ringwald  */
108956042629SMatthias Ringwald const hci_cmd_t hci_write_loopback_mode = {
1090ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_LOOPBACK_MODE, "1"
109156042629SMatthias Ringwald     // return: status
109256042629SMatthias Ringwald };
109356042629SMatthias Ringwald 
109484ca9bd8SMatthias Ringwald /**
109584ca9bd8SMatthias Ringwald  */
109684ca9bd8SMatthias Ringwald const hci_cmd_t hci_enable_device_under_test_mode = {
1097ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_ENABLE_DEVICE_UNDER_TEST_MODE, ""
109884ca9bd8SMatthias Ringwald     // return: status
109984ca9bd8SMatthias Ringwald };
110084ca9bd8SMatthias Ringwald 
110184ca9bd8SMatthias Ringwald /**
110284ca9bd8SMatthias Ringwald  * @param simple_pairing_debug_mode
110384ca9bd8SMatthias Ringwald  */
110484ca9bd8SMatthias Ringwald const hci_cmd_t hci_write_simple_pairing_debug_mode = {
1105ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_SIMPLE_PAIRING_DEBUG_MODE, "1"
110684ca9bd8SMatthias Ringwald     // return: status
110784ca9bd8SMatthias Ringwald };
110884ca9bd8SMatthias Ringwald 
110984ca9bd8SMatthias Ringwald /**
111084ca9bd8SMatthias Ringwald  * @param handle
111184ca9bd8SMatthias Ringwald  * @param dm1_acl_u_mode
111284ca9bd8SMatthias Ringwald  * @param esco_loopback_mode
111384ca9bd8SMatthias Ringwald  */
111484ca9bd8SMatthias Ringwald const hci_cmd_t hci_write_secure_connections_test_mode = {
1115ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_SECURE_CONNECTIONS_TEST_MODE, "H11"
111684ca9bd8SMatthias Ringwald     // return: status
111784ca9bd8SMatthias Ringwald };
111884ca9bd8SMatthias Ringwald 
111956042629SMatthias Ringwald 
112056042629SMatthias Ringwald /**
112156042629SMatthias Ringwald  * Informational Parameters
112256042629SMatthias Ringwald  */
112356042629SMatthias Ringwald 
112456042629SMatthias Ringwald const hci_cmd_t hci_read_local_version_information = {
1125ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LOCAL_VERSION_INFORMATION, ""
112656042629SMatthias Ringwald };
112756042629SMatthias Ringwald const hci_cmd_t hci_read_local_supported_commands = {
1128ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LOCAL_SUPPORTED_COMMANDS, ""
112956042629SMatthias Ringwald };
113056042629SMatthias Ringwald const hci_cmd_t hci_read_local_supported_features = {
1131ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LOCAL_SUPPORTED_FEATURES, ""
113256042629SMatthias Ringwald };
113356042629SMatthias Ringwald const hci_cmd_t hci_read_buffer_size = {
1134ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_BUFFER_SIZE, ""
113556042629SMatthias Ringwald };
113656042629SMatthias Ringwald const hci_cmd_t hci_read_bd_addr = {
1137ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_BD_ADDR, ""
113856042629SMatthias Ringwald };
113956042629SMatthias Ringwald 
114056042629SMatthias Ringwald /**
114156042629SMatthias Ringwald  * Status Paramters
114256042629SMatthias Ringwald  */
114356042629SMatthias Ringwald 
114456042629SMatthias Ringwald /**
114556042629SMatthias Ringwald  * @param handle
114656042629SMatthias Ringwald  */
114756042629SMatthias Ringwald const hci_cmd_t hci_read_rssi = {
1148ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_RSSI, "H"
114956042629SMatthias Ringwald };
115056042629SMatthias Ringwald 
115197abfa24SMatthias Ringwald /**
115297abfa24SMatthias Ringwald  * @param handle
115397abfa24SMatthias Ringwald  */
115497abfa24SMatthias Ringwald const hci_cmd_t hci_read_encryption_key_size = {
1155ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_ENCRYPTION_KEY_SIZE, "H"
115697abfa24SMatthias Ringwald };
115756042629SMatthias Ringwald 
115856042629SMatthias Ringwald 
1159a9a4c409SMatthias Ringwald #ifdef ENABLE_BLE
116056042629SMatthias Ringwald /**
116156042629SMatthias Ringwald  * Low Energy Commands
116256042629SMatthias Ringwald  */
116356042629SMatthias Ringwald 
116456042629SMatthias Ringwald /**
116556042629SMatthias Ringwald  * @param event_mask_lower_octets
116656042629SMatthias Ringwald  * @param event_mask_higher_octets
116756042629SMatthias Ringwald  */
116856042629SMatthias Ringwald const hci_cmd_t hci_le_set_event_mask = {
1169ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_EVENT_MASK, "44"
117056042629SMatthias Ringwald     // return: status
117156042629SMatthias Ringwald };
117256042629SMatthias Ringwald 
117356042629SMatthias Ringwald const hci_cmd_t hci_le_read_buffer_size = {
1174ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_BUFFER_SIZE, ""
117556042629SMatthias Ringwald     // return: status, le acl data packet len (16), total num le acl data packets(8)
117656042629SMatthias Ringwald };
11770c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_local_supported_features = {
11780c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_LOCAL_SUPPORTED_FEATURES, ""
117956042629SMatthias Ringwald     // return: LE_Features See [Vol 6] Part B, Section 4.6
118056042629SMatthias Ringwald };
118156042629SMatthias Ringwald 
118256042629SMatthias Ringwald /**
118356042629SMatthias Ringwald  * @param random_bd_addr
118456042629SMatthias Ringwald  */
118556042629SMatthias Ringwald const hci_cmd_t hci_le_set_random_address = {
1186ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_RANDOM_ADDRESS, "B"
118756042629SMatthias Ringwald     // return: status
118856042629SMatthias Ringwald };
118956042629SMatthias Ringwald 
119056042629SMatthias Ringwald /**
119156042629SMatthias Ringwald  * @param advertising_interval_min ([0x0020,0x4000], default: 0x0800, unit: 0.625 msec)
119256042629SMatthias Ringwald  * @param advertising_interval_max ([0x0020,0x4000], default: 0x0800, unit: 0.625 msec)
119356042629SMatthias Ringwald  * @param advertising_type (enum from 0: ADV_IND, ADC_DIRECT_IND, ADV_SCAN_IND, ADV_NONCONN_IND)
119456042629SMatthias Ringwald  * @param own_address_type (enum from 0: public device address, random device address)
119556042629SMatthias Ringwald  * @param direct_address_type ()
119656042629SMatthias Ringwald  * @param direct_address (public or random address of device to be connecteed)
119756042629SMatthias Ringwald  * @param advertising_channel_map (flags: chan_37(1), chan_38(2), chan_39(4))
119856042629SMatthias Ringwald  * @param advertising_filter_policy (enum from 0: scan any conn any, scan whitelist, con any, scan any conn whitelist, scan whitelist, con whitelist)
119956042629SMatthias Ringwald  */
120056042629SMatthias Ringwald const hci_cmd_t hci_le_set_advertising_parameters = {
1201ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_ADVERTISING_PARAMETERS, "22111B11"
120256042629SMatthias Ringwald     // return: status
120356042629SMatthias Ringwald };
120456042629SMatthias Ringwald 
120556042629SMatthias Ringwald const hci_cmd_t hci_le_read_advertising_channel_tx_power = {
1206ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_ADVERTISING_CHANNEL_TX_POWER, ""
120756042629SMatthias Ringwald     // return: status, level [-20,10] signed int (8), units dBm
120856042629SMatthias Ringwald };
120956042629SMatthias Ringwald 
121056042629SMatthias Ringwald /**
121156042629SMatthias Ringwald  * @param advertising_data_length
121256042629SMatthias Ringwald  * @param advertising_data (31 bytes)
121356042629SMatthias Ringwald  */
121456042629SMatthias Ringwald const hci_cmd_t hci_le_set_advertising_data= {
1215ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_ADVERTISING_DATA, "1A"
121656042629SMatthias Ringwald     // return: status
121756042629SMatthias Ringwald };
121856042629SMatthias Ringwald 
121956042629SMatthias Ringwald /**
122056042629SMatthias Ringwald  * @param scan_response_data_length
122156042629SMatthias Ringwald  * @param scan_response_data (31 bytes)
122256042629SMatthias Ringwald  */
122356042629SMatthias Ringwald const hci_cmd_t hci_le_set_scan_response_data= {
1224ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_SCAN_RESPONSE_DATA, "1A"
122556042629SMatthias Ringwald     // return: status
122656042629SMatthias Ringwald };
122756042629SMatthias Ringwald 
122856042629SMatthias Ringwald /**
122956042629SMatthias Ringwald  * @param advertise_enable (off: 0, on: 1)
123056042629SMatthias Ringwald  */
123156042629SMatthias Ringwald const hci_cmd_t hci_le_set_advertise_enable = {
1232ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_ADVERTISE_ENABLE, "1"
123356042629SMatthias Ringwald     // return: status
123456042629SMatthias Ringwald };
123556042629SMatthias Ringwald 
123656042629SMatthias Ringwald /**
123756042629SMatthias Ringwald  * @param le_scan_type (passive (0), active (1))
123856042629SMatthias Ringwald  * @param le_scan_interval ([0x0004,0x4000], unit: 0.625 msec)
123956042629SMatthias Ringwald  * @param le_scan_window   ([0x0004,0x4000], unit: 0.625 msec)
124056042629SMatthias Ringwald  * @param own_address_type (public (0), random (1))
124156042629SMatthias Ringwald  * @param scanning_filter_policy (any (0), only whitelist (1))
124256042629SMatthias Ringwald  */
124356042629SMatthias Ringwald const hci_cmd_t hci_le_set_scan_parameters = {
1244ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_SCAN_PARAMETERS, "12211"
124556042629SMatthias Ringwald     // return: status
124656042629SMatthias Ringwald };
124756042629SMatthias Ringwald 
124856042629SMatthias Ringwald /**
124956042629SMatthias Ringwald  * @param le_scan_enable  (disabled (0), enabled (1))
125056042629SMatthias Ringwald  * @param filter_duplices (disabled (0), enabled (1))
125156042629SMatthias Ringwald  */
125256042629SMatthias Ringwald const hci_cmd_t hci_le_set_scan_enable = {
1253ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_SCAN_ENABLE, "11"
125456042629SMatthias Ringwald     // return: status
125556042629SMatthias Ringwald };
125656042629SMatthias Ringwald 
125756042629SMatthias Ringwald /**
125856042629SMatthias Ringwald  * @param le_scan_interval ([0x0004, 0x4000], unit: 0.625 msec)
125956042629SMatthias Ringwald  * @param le_scan_window ([0x0004, 0x4000], unit: 0.625 msec)
126056042629SMatthias Ringwald  * @param initiator_filter_policy (peer address type + peer address (0), whitelist (1))
126156042629SMatthias Ringwald  * @param peer_address_type (public (0), random (1))
126256042629SMatthias Ringwald  * @param peer_address
126356042629SMatthias Ringwald  * @param own_address_type (public (0), random (1))
126456042629SMatthias Ringwald  * @param conn_interval_min ([0x0006, 0x0c80], unit: 1.25 msec)
126556042629SMatthias Ringwald  * @param conn_interval_max ([0x0006, 0x0c80], unit: 1.25 msec)
126656042629SMatthias Ringwald  * @param conn_latency (number of connection events [0x0000, 0x01f4])
126756042629SMatthias Ringwald  * @param supervision_timeout ([0x000a, 0x0c80], unit: 10 msec)
126856042629SMatthias Ringwald  * @param minimum_CE_length ([0x0000, 0xffff], unit: 0.625 msec)
126956042629SMatthias Ringwald  * @param maximum_CE_length ([0x0000, 0xffff], unit: 0.625 msec)
127056042629SMatthias Ringwald  */
127156042629SMatthias Ringwald const hci_cmd_t hci_le_create_connection= {
1272ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_CREATE_CONNECTION, "2211B1222222"
127356042629SMatthias Ringwald     // return: none -> le create connection complete event
127456042629SMatthias Ringwald };
127556042629SMatthias Ringwald 
127656042629SMatthias Ringwald const hci_cmd_t hci_le_create_connection_cancel = {
1277ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_CREATE_CONNECTION_CANCEL, ""
127856042629SMatthias Ringwald     // return: status
127956042629SMatthias Ringwald };
128056042629SMatthias Ringwald 
128156042629SMatthias Ringwald const hci_cmd_t hci_le_read_white_list_size = {
1282ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_WHITE_LIST_SIZE, ""
128356042629SMatthias Ringwald     // return: status, number of entries in controller whitelist
128456042629SMatthias Ringwald };
128556042629SMatthias Ringwald 
128656042629SMatthias Ringwald const hci_cmd_t hci_le_clear_white_list = {
1287ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_CLEAR_WHITE_LIST, ""
128856042629SMatthias Ringwald     // return: status
128956042629SMatthias Ringwald };
129056042629SMatthias Ringwald 
129156042629SMatthias Ringwald /**
129256042629SMatthias Ringwald  * @param address_type (public (0), random (1))
129356042629SMatthias Ringwald  * @param bd_addr
129456042629SMatthias Ringwald  */
129556042629SMatthias Ringwald const hci_cmd_t hci_le_add_device_to_white_list = {
1296ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_ADD_DEVICE_TO_WHITE_LIST, "1B"
129756042629SMatthias Ringwald     // return: status
129856042629SMatthias Ringwald };
129956042629SMatthias Ringwald 
130056042629SMatthias Ringwald /**
130156042629SMatthias Ringwald  * @param address_type (public (0), random (1))
130256042629SMatthias Ringwald  * @param bd_addr
130356042629SMatthias Ringwald  */
130456042629SMatthias Ringwald const hci_cmd_t hci_le_remove_device_from_white_list = {
1305ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOVE_DEVICE_FROM_WHITE_LIST, "1B"
130656042629SMatthias Ringwald     // return: status
130756042629SMatthias Ringwald };
130856042629SMatthias Ringwald 
130956042629SMatthias Ringwald /**
131056042629SMatthias Ringwald  * @param conn_handle
131156042629SMatthias Ringwald  * @param conn_interval_min ([0x0006,0x0c80], unit: 1.25 msec)
131256042629SMatthias Ringwald  * @param conn_interval_max ([0x0006,0x0c80], unit: 1.25 msec)
131356042629SMatthias Ringwald  * @param conn_latency ([0x0000,0x03e8], number of connection events)
131456042629SMatthias Ringwald  * @param supervision_timeout ([0x000a,0x0c80], unit: 10 msec)
131556042629SMatthias Ringwald  * @param minimum_CE_length ([0x0000,0xffff], unit: 0.625 msec)
131656042629SMatthias Ringwald  * @param maximum_CE_length ([0x0000,0xffff], unit: 0.625 msec)
131756042629SMatthias Ringwald  */
131856042629SMatthias Ringwald const hci_cmd_t hci_le_connection_update = {
1319ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_CONNECTION_UPDATE, "H222222"
132056042629SMatthias Ringwald     // return: none -> le connection update complete event
132156042629SMatthias Ringwald };
132256042629SMatthias Ringwald 
132356042629SMatthias Ringwald /**
132456042629SMatthias Ringwald  * @param channel_map_lower_32bits
132556042629SMatthias Ringwald  * @param channel_map_higher_5bits
132656042629SMatthias Ringwald  */
132756042629SMatthias Ringwald const hci_cmd_t hci_le_set_host_channel_classification = {
1328ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_HOST_CHANNEL_CLASSIFICATION, "41"
132956042629SMatthias Ringwald     // return: status
133056042629SMatthias Ringwald };
133156042629SMatthias Ringwald 
133256042629SMatthias Ringwald /**
133356042629SMatthias Ringwald  * @param conn_handle
133456042629SMatthias Ringwald  */
133556042629SMatthias Ringwald const hci_cmd_t hci_le_read_channel_map = {
1336ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_CHANNEL_MAP, "H"
133756042629SMatthias Ringwald     // return: status, connection handle, channel map (5 bytes, 37 used)
133856042629SMatthias Ringwald };
133956042629SMatthias Ringwald 
134056042629SMatthias Ringwald /**
134156042629SMatthias Ringwald  * @param conn_handle
134256042629SMatthias Ringwald  */
134356042629SMatthias Ringwald const hci_cmd_t hci_le_read_remote_used_features = {
1344ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_REMOTE_USED_FEATURES, "H"
134556042629SMatthias Ringwald     // return: none -> le read remote used features complete event
134656042629SMatthias Ringwald };
134756042629SMatthias Ringwald 
134856042629SMatthias Ringwald /**
134956042629SMatthias Ringwald  * @param key ((128) for AES-128)
135056042629SMatthias Ringwald  * @param plain_text (128)
135156042629SMatthias Ringwald  */
135256042629SMatthias Ringwald const hci_cmd_t hci_le_encrypt = {
1353ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_ENCRYPT, "PP"
135456042629SMatthias Ringwald     // return: status, encrypted data (128)
135556042629SMatthias Ringwald };
135656042629SMatthias Ringwald 
135756042629SMatthias Ringwald const hci_cmd_t hci_le_rand = {
1358ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_RAND, ""
135956042629SMatthias Ringwald     // return: status, random number (64)
136056042629SMatthias Ringwald };
136156042629SMatthias Ringwald 
136256042629SMatthias Ringwald /**
136356042629SMatthias Ringwald  * @param conn_handle
136456042629SMatthias Ringwald  * @param random_number_lower_32bits
136556042629SMatthias Ringwald  * @param random_number_higher_32bits
136656042629SMatthias Ringwald  * @param encryption_diversifier (16)
136756042629SMatthias Ringwald  * @param long_term_key (128)
136856042629SMatthias Ringwald  */
136956042629SMatthias Ringwald const hci_cmd_t hci_le_start_encryption = {
1370ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_START_ENCRYPTION, "H442P"
137156042629SMatthias Ringwald     // return: none -> encryption changed or encryption key refresh complete event
137256042629SMatthias Ringwald };
137356042629SMatthias Ringwald 
137456042629SMatthias Ringwald /**
137556042629SMatthias Ringwald  * @param connection_handle
137656042629SMatthias Ringwald  * @param long_term_key (128)
137756042629SMatthias Ringwald  */
137856042629SMatthias Ringwald const hci_cmd_t hci_le_long_term_key_request_reply = {
1379ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_LONG_TERM_KEY_REQUEST_REPLY, "HP"
138056042629SMatthias Ringwald     // return: status, connection handle
138156042629SMatthias Ringwald };
138256042629SMatthias Ringwald 
138356042629SMatthias Ringwald /**
138456042629SMatthias Ringwald  * @param conn_handle
138556042629SMatthias Ringwald  */
138656042629SMatthias Ringwald const hci_cmd_t hci_le_long_term_key_negative_reply = {
1387ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_LONG_TERM_KEY_NEGATIVE_REPLY, "H"
138856042629SMatthias Ringwald     // return: status, connection handle
138956042629SMatthias Ringwald };
139056042629SMatthias Ringwald 
139156042629SMatthias Ringwald /**
139256042629SMatthias Ringwald  * @param conn_handle
139356042629SMatthias Ringwald  */
139456042629SMatthias Ringwald const hci_cmd_t hci_le_read_supported_states = {
1395ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_SUPPORTED_STATES, "H"
139656042629SMatthias Ringwald     // return: status, LE states (64)
139756042629SMatthias Ringwald };
139856042629SMatthias Ringwald 
139956042629SMatthias Ringwald /**
140056042629SMatthias Ringwald  * @param rx_frequency ([0x00 0x27], frequency (MHz): 2420 + N*2)
140156042629SMatthias Ringwald  */
140256042629SMatthias Ringwald const hci_cmd_t hci_le_receiver_test = {
1403ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_RECEIVER_TEST, "1"
140456042629SMatthias Ringwald     // return: status
140556042629SMatthias Ringwald };
140656042629SMatthias Ringwald 
140756042629SMatthias Ringwald /**
140856042629SMatthias Ringwald  * @param tx_frequency ([0x00 0x27], frequency (MHz): 2420 + N*2)
140956042629SMatthias Ringwald  * @param test_payload_lengh ([0x00,0x25])
141056042629SMatthias Ringwald  * @param packet_payload ([0,7] different patterns)
141156042629SMatthias Ringwald  */
141256042629SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test = {
1413ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_TRANSMITTER_TEST, "111"
141456042629SMatthias Ringwald     // return: status
141556042629SMatthias Ringwald };
141656042629SMatthias Ringwald 
141756042629SMatthias Ringwald /**
141856042629SMatthias Ringwald  * @param end_test_cmd
141956042629SMatthias Ringwald  */
142056042629SMatthias Ringwald const hci_cmd_t hci_le_test_end = {
1421ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_TEST_END, "1"
142256042629SMatthias Ringwald     // return: status, number of packets (8)
142356042629SMatthias Ringwald };
142482180fcaSMatthias Ringwald 
142582180fcaSMatthias Ringwald /**
1426fe704c95SMatthias Ringwald  * @param conn_handle
1427fe704c95SMatthias Ringwald  * @param conn_interval_min ([0x0006,0x0c80], unit: 1.25 msec)
1428fe704c95SMatthias Ringwald  * @param conn_interval_max ([0x0006,0x0c80], unit: 1.25 msec)
1429fe704c95SMatthias Ringwald  * @param conn_latency ([0x0000,0x03e8], number of connection events)
1430fe704c95SMatthias Ringwald  * @param supervision_timeout ([0x000a,0x0c80], unit: 10 msec)
1431fe704c95SMatthias Ringwald  * @param minimum_CE_length ([0x0000,0xffff], unit: 0.625 msec)
1432fe704c95SMatthias Ringwald  * @param maximum_CE_length ([0x0000,0xffff], unit: 0.625 msec)
1433fe704c95SMatthias Ringwald  */
1434fe704c95SMatthias Ringwald const hci_cmd_t hci_le_remote_connection_parameter_request_reply = {
1435ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_REPLY, "H222222"
1436fe704c95SMatthias Ringwald     // return: status, connection handle
1437fe704c95SMatthias Ringwald };
1438fe704c95SMatthias Ringwald 
1439fe704c95SMatthias Ringwald /**
1440fe704c95SMatthias Ringwald  * @param con_handle
1441fe704c95SMatthias Ringwald  * @param reason
1442fe704c95SMatthias Ringwald  */
1443fe704c95SMatthias Ringwald const hci_cmd_t hci_le_remote_connection_parameter_request_negative_reply = {
1444ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_NEGATIVE_REPLY, "H1"
1445fe704c95SMatthias Ringwald     // return: status, connection handle
1446fe704c95SMatthias Ringwald };
1447fe704c95SMatthias Ringwald 
1448fe704c95SMatthias Ringwald /**
14490ea2847fSMatthias Ringwald  * @param con_handle
14500ea2847fSMatthias Ringwald  * @param tx_octets
14510ea2847fSMatthias Ringwald  * @param tx_time
14520ea2847fSMatthias Ringwald  */
14530ea2847fSMatthias Ringwald const hci_cmd_t hci_le_set_data_length = {
1454ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_DATA_LENGTH, "H22"
14550ea2847fSMatthias Ringwald     // return: status, connection handle
14560ea2847fSMatthias Ringwald };
14570ea2847fSMatthias Ringwald 
14580ea2847fSMatthias Ringwald /**
14590ea2847fSMatthias Ringwald  */
14600ea2847fSMatthias Ringwald const hci_cmd_t hci_le_read_suggested_default_data_length = {
1461ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_SUGGESTED_DEFAULT_DATA_LENGTH, ""
14620ea2847fSMatthias Ringwald     // return: status, suggested max tx octets, suggested max tx time
14630ea2847fSMatthias Ringwald };
14640ea2847fSMatthias Ringwald 
14650ea2847fSMatthias Ringwald /**
14660ea2847fSMatthias Ringwald  * @param suggested_max_tx_octets
14670ea2847fSMatthias Ringwald  * @param suggested_max_tx_time
14680ea2847fSMatthias Ringwald  */
14690ea2847fSMatthias Ringwald const hci_cmd_t hci_le_write_suggested_default_data_length = {
1470ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_WRITE_SUGGESTED_DEFAULT_DATA_LENGTH, "22"
14710ea2847fSMatthias Ringwald     // return: status
14720ea2847fSMatthias Ringwald };
14730ea2847fSMatthias Ringwald 
14740ea2847fSMatthias Ringwald /**
147582180fcaSMatthias Ringwald  */
147682180fcaSMatthias Ringwald const hci_cmd_t hci_le_read_local_p256_public_key = {
1477ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_LOCAL_P256_PUBLIC_KEY, ""
147882180fcaSMatthias Ringwald //  LE Read Local P-256 Public Key Complete is generated on completion
147982180fcaSMatthias Ringwald };
148082180fcaSMatthias Ringwald 
148182180fcaSMatthias Ringwald /**
1482fcae305fSMatthias Ringwald  * @param public key
1483fcae305fSMatthias Ringwald  * @param private key
148482180fcaSMatthias Ringwald  */
148582180fcaSMatthias Ringwald const hci_cmd_t hci_le_generate_dhkey = {
1486ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_GENERATE_DHKEY, "QQ"
148782180fcaSMatthias Ringwald // LE Generate DHKey Complete is generated on completion
148882180fcaSMatthias Ringwald };
148982180fcaSMatthias Ringwald 
14900ea2847fSMatthias Ringwald /**
1491173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address_Type
1492173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address
1493173ed1a3SMatthias Ringwald  * @param Peer_IRK
1494173ed1a3SMatthias Ringwald  * @param Local_IRK
1495173ed1a3SMatthias Ringwald  */
1496173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_add_device_to_resolving_list = {
1497173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_ADD_DEVICE_TO_RESOLVING_LIST, "1BPP"
1498173ed1a3SMatthias Ringwald };
1499173ed1a3SMatthias Ringwald 
1500173ed1a3SMatthias Ringwald /**
1501173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address_Type
1502173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address
1503173ed1a3SMatthias Ringwald  */
1504173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_remove_device_from_resolving_list = {
1505173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOVE_DEVICE_FROM_RESOLVING_LIST, "1B"
1506173ed1a3SMatthias Ringwald };
1507173ed1a3SMatthias Ringwald 
1508173ed1a3SMatthias Ringwald /**
1509173ed1a3SMatthias Ringwald  */
1510173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_clear_resolving_list = {
1511173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_CLEAR_RESOLVING_LIST, ""
1512173ed1a3SMatthias Ringwald };
1513173ed1a3SMatthias Ringwald 
1514173ed1a3SMatthias Ringwald /**
1515173ed1a3SMatthias Ringwald  */
1516173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_read_resolving_list_size = {
1517173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_RESOLVING_LIST_SIZE, ""
1518173ed1a3SMatthias Ringwald };
1519173ed1a3SMatthias Ringwald 
1520173ed1a3SMatthias Ringwald /**
1521173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address_Type
1522173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address
1523173ed1a3SMatthias Ringwald  */
1524173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_read_peer_resolvable_address = {
1525173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_PEER_RESOLVABLE_ADDRESS, ""
1526173ed1a3SMatthias Ringwald };
1527173ed1a3SMatthias Ringwald 
1528173ed1a3SMatthias Ringwald /**
1529173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address_Type
1530173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address
1531173ed1a3SMatthias Ringwald  */
1532173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_read_local_resolvable_address = {
1533173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_LOCAL_RESOLVABLE_ADDRESS, ""
1534173ed1a3SMatthias Ringwald };
1535173ed1a3SMatthias Ringwald 
1536173ed1a3SMatthias Ringwald /**
1537173ed1a3SMatthias Ringwald  * @param Address_Resolution_Enable
1538173ed1a3SMatthias Ringwald  */
1539173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_set_address_resolution_enabled= {
1540173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_ADDRESS_RESOLUTION_ENABLED, "1"
1541173ed1a3SMatthias Ringwald };
1542173ed1a3SMatthias Ringwald 
1543173ed1a3SMatthias Ringwald /**
1544173ed1a3SMatthias Ringwald  * @param RPA_Timeout in seconds, range 0x0001 to 0x0E10, default: 900 s
1545173ed1a3SMatthias Ringwald  */
1546173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_set_resolvable_private_address_timeout= {
1547173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_RESOLVABLE_PRIVATE_ADDRESS_TIMEOUT, "2"
1548173ed1a3SMatthias Ringwald };
1549173ed1a3SMatthias Ringwald 
1550173ed1a3SMatthias Ringwald /**
15510ea2847fSMatthias Ringwald  */
15520ea2847fSMatthias Ringwald const hci_cmd_t hci_le_read_maximum_data_length = {
1553ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_MAXIMUM_DATA_LENGTH, ""
15540ea2847fSMatthias Ringwald     // return: status, supported max tx octets, supported max tx time, supported max rx octets, supported max rx time
15550ea2847fSMatthias Ringwald };
15560ea2847fSMatthias Ringwald 
1557ca13daefSMatthias Ringwald /**
1558ca13daefSMatthias Ringwald  * @param con_handle
1559ca13daefSMatthias Ringwald  */
1560ca13daefSMatthias Ringwald const hci_cmd_t hci_le_read_phy = {
1561ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_PHY, "H"
1562ca13daefSMatthias Ringwald     // return: status, connection handler, tx phy, rx phy
1563ca13daefSMatthias Ringwald };
1564ca13daefSMatthias Ringwald 
1565ca13daefSMatthias Ringwald /**
1566ca13daefSMatthias Ringwald  * @param all_phys
1567ca13daefSMatthias Ringwald  * @param tx_phys
1568ca13daefSMatthias Ringwald  * @param rx_phys
1569ca13daefSMatthias Ringwald  */
1570ca13daefSMatthias Ringwald const hci_cmd_t hci_le_set_default_phy = {
1571ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_DEFAULT_PHY, "111"
1572ca13daefSMatthias Ringwald     // return: status
1573ca13daefSMatthias Ringwald };
1574ca13daefSMatthias Ringwald 
1575ca13daefSMatthias Ringwald /**
1576ca13daefSMatthias Ringwald  * @param con_handle
1577ca13daefSMatthias Ringwald  * @param all_phys
1578ca13daefSMatthias Ringwald  * @param tx_phys
1579ca13daefSMatthias Ringwald  * @param rx_phys
1580ca13daefSMatthias Ringwald  * @param phy_options
1581ca13daefSMatthias Ringwald  */
1582ca13daefSMatthias Ringwald const hci_cmd_t hci_le_set_phy = {
1583ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PHY, "H1111"
1584ca13daefSMatthias Ringwald // LE PHY Update Complete is generated on completion
1585ca13daefSMatthias Ringwald };
1586ca13daefSMatthias Ringwald 
15870c1cf6c6SMatthias Ringwald /**
15880c1cf6c6SMatthias Ringwald  * @param rx_channel
15890c1cf6c6SMatthias Ringwald  * @param phy
15900c1cf6c6SMatthias Ringwald  * @param modulation_index
15910c1cf6c6SMatthias Ringwald  */
15920c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_receiver_test_v2 = {
15930c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_RECEIVER_TEST_V2, "111"
15940c1cf6c6SMatthias Ringwald };
15950c1cf6c6SMatthias Ringwald 
15960c1cf6c6SMatthias Ringwald /**
15970c1cf6c6SMatthias Ringwald  * @param tx_channel
15980c1cf6c6SMatthias Ringwald  * @param test_data_length
15990c1cf6c6SMatthias Ringwald  * @param packet_payload
16000c1cf6c6SMatthias Ringwald  * @param phy
16010c1cf6c6SMatthias Ringwald  */
16020c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test_v2 = {
16030c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_TRANSMITTER_TEST_V2, "1111"
16040c1cf6c6SMatthias Ringwald };
16050c1cf6c6SMatthias Ringwald 
16060c1cf6c6SMatthias Ringwald /**
16070c1cf6c6SMatthias Ringwald  * @param advertising_handle
16080c1cf6c6SMatthias Ringwald  * @param random_address
16090c1cf6c6SMatthias Ringwald  */
16100c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_advertising_set_random_address = {
16110c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_ADVERTISING_SET_RANDOM_ADDRESS, "1B"
16120c1cf6c6SMatthias Ringwald };
16130c1cf6c6SMatthias Ringwald 
16140c1cf6c6SMatthias Ringwald /**
16150c1cf6c6SMatthias Ringwald  * @param advertising_handle
16160c1cf6c6SMatthias Ringwald  * @param advertising_event_properties
16170c1cf6c6SMatthias Ringwald  * @param primary_advertising_interval_min in 0.625 ms, range: 0x000020..0xffffff
16180c1cf6c6SMatthias Ringwald  * @param primary_advertising_interval_max in 0.625 ms, range: 0x000020..0xffffff
16190c1cf6c6SMatthias Ringwald  * @param primary_advertising_channel_map
16200c1cf6c6SMatthias Ringwald  * @param own_address_type
16210c1cf6c6SMatthias Ringwald  * @param peer_address_type
16220c1cf6c6SMatthias Ringwald  * @param peer_address
16230c1cf6c6SMatthias Ringwald  * @param advertising_filter_policy
16240c1cf6c6SMatthias Ringwald  * @param advertising_tx_power in dBm, range: -127..20
16250c1cf6c6SMatthias Ringwald  * @param primary_advertising_phy
16260c1cf6c6SMatthias Ringwald  * @param secondary_advertising_max_skip
16270c1cf6c6SMatthias Ringwald  * @param secondary_advertising_phy
16280c1cf6c6SMatthias Ringwald  * @param advertising_sid
16290c1cf6c6SMatthias Ringwald  * @param scan_request_notification_enable
16300c1cf6c6SMatthias Ringwald  */
16310c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_advertising_parameters = {
16320c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_EXTENDED_ADVERTISING_PARAMETERS, "1233111B1111111"
16330c1cf6c6SMatthias Ringwald };
16340c1cf6c6SMatthias Ringwald 
16350c1cf6c6SMatthias Ringwald /**
16360c1cf6c6SMatthias Ringwald  * @param advertising_handle
16370c1cf6c6SMatthias Ringwald  * @param operation
16380c1cf6c6SMatthias Ringwald  * @param fragment_preference
16390c1cf6c6SMatthias Ringwald  * @param advertising_data_length
16400c1cf6c6SMatthias Ringwald  * @param advertising_data
16410c1cf6c6SMatthias Ringwald  */
16420c1cf6c6SMatthias Ringwald 
16430c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_advertising_data = {
16440c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_EXTENDED_ADVERTISING_DATA, "111JV"
16450c1cf6c6SMatthias Ringwald };
16460c1cf6c6SMatthias Ringwald 
16470c1cf6c6SMatthias Ringwald /**
16480c1cf6c6SMatthias Ringwald  * @param advertising_handle
16490c1cf6c6SMatthias Ringwald  * @param operation
16500c1cf6c6SMatthias Ringwald  * @param fragment_preference
16510c1cf6c6SMatthias Ringwald  * @param scan_response_data_length
16520c1cf6c6SMatthias Ringwald  * @param scan_response_data
16530c1cf6c6SMatthias Ringwald  */
16540c1cf6c6SMatthias Ringwald 
16550c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_scan_response_data = {
16560c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_EXTENDED_SCAN_RESPONSE_DATA, "111JV"
16570c1cf6c6SMatthias Ringwald };
16580c1cf6c6SMatthias Ringwald 
16590c1cf6c6SMatthias Ringwald /**
16600c1cf6c6SMatthias Ringwald  * @param enable
16610c1cf6c6SMatthias Ringwald  * @param num_sets
16620c1cf6c6SMatthias Ringwald  * @param advertising_handle[i]
16630c1cf6c6SMatthias Ringwald  * @param duration[i]
16640c1cf6c6SMatthias Ringwald  * @param max_extended_advertising_events[i]
16650c1cf6c6SMatthias Ringwald  */
16660c1cf6c6SMatthias Ringwald 
16670c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_advertising_enable = {
166827f212a7SMatthias Ringwald         HCI_OPCODE_HCI_LE_SET_EXTENDED_ADVERTISING_ENABLE, "1a[121]"
16690c1cf6c6SMatthias Ringwald };
16700c1cf6c6SMatthias Ringwald 
16710c1cf6c6SMatthias Ringwald /**
16720c1cf6c6SMatthias Ringwald  */
16730c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_maximum_advertising_data_length = {
16740c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_MAXIMUM_ADVERTISING_DATA_LENGTH, ""
16750c1cf6c6SMatthias Ringwald };
16760c1cf6c6SMatthias Ringwald 
16770c1cf6c6SMatthias Ringwald /**
16780c1cf6c6SMatthias Ringwald  */
16790c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_number_of_supported_advertising_sets = {
16800c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_NUMBER_OF_SUPPORTED_ADVERTISING_SETS, ""
16810c1cf6c6SMatthias Ringwald };
16820c1cf6c6SMatthias Ringwald 
16830c1cf6c6SMatthias Ringwald /**
16840c1cf6c6SMatthias Ringwald  * @param advertising_handle
16850c1cf6c6SMatthias Ringwald  */
16860c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_advertising_set = {
16870c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOVE_ADVERTISING_SET, "1"
16880c1cf6c6SMatthias Ringwald };
16890c1cf6c6SMatthias Ringwald 
16900c1cf6c6SMatthias Ringwald /**
16910c1cf6c6SMatthias Ringwald  */
16920c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_clear_advertising_sets = {
16930c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_CLEAR_ADVERTISING_SETS, ""
16940c1cf6c6SMatthias Ringwald };
16950c1cf6c6SMatthias Ringwald 
16960c1cf6c6SMatthias Ringwald /**
16970c1cf6c6SMatthias Ringwald  * @param advertising_handle
16980c1cf6c6SMatthias Ringwald  * @param periodic_advertising_interval_min * 1.25 ms, range 0x0006..0xffff
16990c1cf6c6SMatthias Ringwald  * @param periodic_advertising_interval_max * 1.25 ms, range 0x0006..0xffff
17000c1cf6c6SMatthias Ringwald  * @param periodic_advertising_properties
17010c1cf6c6SMatthias Ringwald  */
17020c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_parameters = {
17030c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_PARAMETERS, "1222"
17040c1cf6c6SMatthias Ringwald };
17050c1cf6c6SMatthias Ringwald 
17060c1cf6c6SMatthias Ringwald /**
17070c1cf6c6SMatthias Ringwald  * @param advertising_handle
17080c1cf6c6SMatthias Ringwald  * @param operation
17090c1cf6c6SMatthias Ringwald  * @param advertising_data_length
17100c1cf6c6SMatthias Ringwald  * @param advertising_data
17110c1cf6c6SMatthias Ringwald  */
17120c1cf6c6SMatthias Ringwald 
17130c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_data = {
17140c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_DATA, "11JV"
17150c1cf6c6SMatthias Ringwald };
17160c1cf6c6SMatthias Ringwald 
17170c1cf6c6SMatthias Ringwald /**
17180c1cf6c6SMatthias Ringwald  * @param enable
17190c1cf6c6SMatthias Ringwald  * @param advertising_handle
17200c1cf6c6SMatthias Ringwald  */
17210c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_enable = {
17220c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_ENABLE, "11"
17230c1cf6c6SMatthias Ringwald };
17240c1cf6c6SMatthias Ringwald 
17250c1cf6c6SMatthias Ringwald /**
17260c1cf6c6SMatthias Ringwald  * @param own_address_type
17270c1cf6c6SMatthias Ringwald  * @param scanning_filter_policy
17280c1cf6c6SMatthias Ringwald  * @param scanning_phys 0 = LE 1M PHY | 2 = LE Coded PHY
172927f212a7SMatthias Ringwald  * @param scan_type[i]
173027f212a7SMatthias Ringwald  * @param scan_interval[i] * 0.625, range = 0x0004..0xffff
173127f212a7SMatthias Ringwald  * @param scan_window[i] * 0.625, range = 0x0004..0xffff
17320c1cf6c6SMatthias Ringwald  */
17330c1cf6c6SMatthias Ringwald 
17346ea37a0fSMatthias Ringwald const hci_cmd_t hci_le_set_extended_scan_parameters = {
17356ea37a0fSMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_EXTENDED_SCAN_PARAMETERS, "11b[122]"
17360c1cf6c6SMatthias Ringwald };
17370c1cf6c6SMatthias Ringwald 
17380c1cf6c6SMatthias Ringwald /**
17390c1cf6c6SMatthias Ringwald  * @param enable
17400c1cf6c6SMatthias Ringwald  * @param filter_duplicates
17410c1cf6c6SMatthias Ringwald  * @param duration 0 = Scan continuously until explicitly disable, 10 ms
17420c1cf6c6SMatthias Ringwald  * @param period 0 = Scan continuously, 1.28 s
17430c1cf6c6SMatthias Ringwald  */
17440c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_scan_enable = {
17450c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_EXTENDED_SCAN_ENABLE, "1122"
17460c1cf6c6SMatthias Ringwald };
17470c1cf6c6SMatthias Ringwald 
17480c1cf6c6SMatthias Ringwald /**
17490c1cf6c6SMatthias Ringwald  * @param initiator_filter_policy
17500c1cf6c6SMatthias Ringwald  * @param own_address_type
17510c1cf6c6SMatthias Ringwald  * @param peer_address_type
17520c1cf6c6SMatthias Ringwald  * @param peer_address
17530c1cf6c6SMatthias Ringwald  * @param initiating_phys with bit 0 = LE 1M PHY, bit 1 = LE 2M PHY, bit 2 = Coded PHY
17540c1cf6c6SMatthias Ringwald  * @param scan_interval[i] * 0.625 ms
17550c1cf6c6SMatthias Ringwald  * @param scan_window[i] * 0.625 ms
17560c1cf6c6SMatthias Ringwald  * @param connection_interval_min[i] * 1.25 ms
17570c1cf6c6SMatthias Ringwald  * @param connection_interval_max[i] * 1.25 ms
17580c1cf6c6SMatthias Ringwald  * @param connection_latency[i]
17590c1cf6c6SMatthias Ringwald  * @param supervision_timeout[i] * 10 ms
17600c1cf6c6SMatthias Ringwald  * @param min_ce_length[i] * 0.625 ms
17610c1cf6c6SMatthias Ringwald  * @param max_ce_length[i] * 0.625 ms
17620c1cf6c6SMatthias Ringwald  */
17630c1cf6c6SMatthias Ringwald 
17640c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_extended_create_connection = {
17650c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_EXTENDED_CREATE_CONNECTION, "111Bb[22222222]"
17660c1cf6c6SMatthias Ringwald };
17670c1cf6c6SMatthias Ringwald 
17680c1cf6c6SMatthias Ringwald /**
17690c1cf6c6SMatthias Ringwald  * @param options
17700c1cf6c6SMatthias Ringwald  * @param advertising_sid
17710c1cf6c6SMatthias Ringwald  * @param advertiser_address_type
17720c1cf6c6SMatthias Ringwald  * @param advertiser_address
17730c1cf6c6SMatthias Ringwald  * @param skip
17740c1cf6c6SMatthias Ringwald  * @param sync_timeout * 10 ms
17750c1cf6c6SMatthias Ringwald  * @param sync_cte_type
17760c1cf6c6SMatthias Ringwald  */
17770c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_create_sync = {
17780c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_CREATE_SYNC, "111B221"
17790c1cf6c6SMatthias Ringwald };
17800c1cf6c6SMatthias Ringwald 
17810c1cf6c6SMatthias Ringwald /**
17820c1cf6c6SMatthias Ringwald  */
17830c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_create_sync_cancel = {
17840c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_CREATE_SYNC_CANCEL, ""
17850c1cf6c6SMatthias Ringwald };
17860c1cf6c6SMatthias Ringwald 
17870c1cf6c6SMatthias Ringwald /**
17880c1cf6c6SMatthias Ringwald  * @param sync_handle
17890c1cf6c6SMatthias Ringwald  */
17900c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_terminate_sync = {
1791*c0112d43SMatthias Ringwald     HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_TERMINATE_SYNC, "2"
17920c1cf6c6SMatthias Ringwald };
17930c1cf6c6SMatthias Ringwald 
17940c1cf6c6SMatthias Ringwald /**
17950c1cf6c6SMatthias Ringwald  * @param advertiser_address_type
17960c1cf6c6SMatthias Ringwald  * @param advertiser_address
17970c1cf6c6SMatthias Ringwald  * @param advertising_sid
17980c1cf6c6SMatthias Ringwald  */
17990c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_add_device_to_periodic_advertiser_list = {
18000c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_ADD_DEVICE_TO_PERIODIC_ADVERTISER_LIST, "1B1"
18010c1cf6c6SMatthias Ringwald };
18020c1cf6c6SMatthias Ringwald 
18030c1cf6c6SMatthias Ringwald /**
18040c1cf6c6SMatthias Ringwald  * @param advertiser_address_type
18050c1cf6c6SMatthias Ringwald  * @param advertiser_address
18060c1cf6c6SMatthias Ringwald  * @param advertising_sid
18070c1cf6c6SMatthias Ringwald  */
18080c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_device_from_periodic_advertiser_list = {
18090c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISER_LIST, "1B1"
18100c1cf6c6SMatthias Ringwald };
18110c1cf6c6SMatthias Ringwald 
18120c1cf6c6SMatthias Ringwald /**
18130c1cf6c6SMatthias Ringwald  */
18140c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_clear_periodic_advertiser_list = {
18150c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_CLEAR_PERIODIC_ADVERTISER_LIST, ""
18160c1cf6c6SMatthias Ringwald };
18170c1cf6c6SMatthias Ringwald 
18180c1cf6c6SMatthias Ringwald /**
18190c1cf6c6SMatthias Ringwald  */
18200c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_periodic_advertiser_list_size = {
18210c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_PERIODIC_ADVERTISER_LIST_SIZE, ""
18220c1cf6c6SMatthias Ringwald };
18230c1cf6c6SMatthias Ringwald 
18240c1cf6c6SMatthias Ringwald /**
18250c1cf6c6SMatthias Ringwald  */
18260c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_transmit_power = {
18270c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_TRANSMIT_POWER, ""
18280c1cf6c6SMatthias Ringwald };
18290c1cf6c6SMatthias Ringwald 
18300c1cf6c6SMatthias Ringwald /**
18310c1cf6c6SMatthias Ringwald  */
18320c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_rf_path_compensation = {
18330c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_RF_PATH_COMPENSATION, ""
18340c1cf6c6SMatthias Ringwald };
18350c1cf6c6SMatthias Ringwald 
18360c1cf6c6SMatthias Ringwald /**
18370c1cf6c6SMatthias Ringwald  * @param rf_tx_path_compensation_value * 0.1 dB, signed
18380c1cf6c6SMatthias Ringwald  * @param rf_rx_path_compensation_value * 0.1 dB, signed
18390c1cf6c6SMatthias Ringwald  */
18400c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_write_rf_path_compensation = {
18410c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_WRITE_RF_PATH_COMPENSATION, "22"
18420c1cf6c6SMatthias Ringwald };
18430c1cf6c6SMatthias Ringwald 
18440c1cf6c6SMatthias Ringwald /**
18450c1cf6c6SMatthias Ringwald  * @param peer_identity_address_type
18460c1cf6c6SMatthias Ringwald  * @param peer_identity_address
18470c1cf6c6SMatthias Ringwald  * @param privacy_mode
18480c1cf6c6SMatthias Ringwald  */
18490c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_privacy_mode = {
18500c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PRIVACY_MODE, "1B1"
18510c1cf6c6SMatthias Ringwald };
18520c1cf6c6SMatthias Ringwald 
18530c1cf6c6SMatthias Ringwald /**
18540c1cf6c6SMatthias Ringwald  * @param rx_channel
18550c1cf6c6SMatthias Ringwald  * @param phy
18560c1cf6c6SMatthias Ringwald  * @param modulation_index
18570c1cf6c6SMatthias Ringwald  * @param expected_cte_length
18580c1cf6c6SMatthias Ringwald  * @param expected_cte_type
18590c1cf6c6SMatthias Ringwald  * @param slot_durations
18600c1cf6c6SMatthias Ringwald  * @param switching_pattern_length
18610c1cf6c6SMatthias Ringwald  * @param antenna_ids[i]
18620c1cf6c6SMatthias Ringwald  */
18630c1cf6c6SMatthias Ringwald 
18640c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_receiver_test_v3 = {
18650c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_RECEIVER_TEST_V3, "111111a[1]"
18660c1cf6c6SMatthias Ringwald };
18670c1cf6c6SMatthias Ringwald 
18680c1cf6c6SMatthias Ringwald /**
18690c1cf6c6SMatthias Ringwald  * @param tx_channel
18700c1cf6c6SMatthias Ringwald  * @param test_data_length
18710c1cf6c6SMatthias Ringwald  * @param packet_payload
18720c1cf6c6SMatthias Ringwald  * @param phy
18730c1cf6c6SMatthias Ringwald  * @param cte_length
18740c1cf6c6SMatthias Ringwald  * @param cte_type
18750c1cf6c6SMatthias Ringwald  * @param switching_pattern_length
18760c1cf6c6SMatthias Ringwald  * @param antenna_ids[i]
18770c1cf6c6SMatthias Ringwald  */
18780c1cf6c6SMatthias Ringwald 
18790c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test_v3 = {
18800c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_TRANSMITTER_TEST_V3, "111111a[1]"
18810c1cf6c6SMatthias Ringwald };
18820c1cf6c6SMatthias Ringwald 
18830c1cf6c6SMatthias Ringwald /**
18840c1cf6c6SMatthias Ringwald  * @param advertising_handle
18850c1cf6c6SMatthias Ringwald  * @param cte_length
18860c1cf6c6SMatthias Ringwald  * @param cte_type
18870c1cf6c6SMatthias Ringwald  * @param cte_count
18880c1cf6c6SMatthias Ringwald  * @param switching_pattern_length
18890c1cf6c6SMatthias Ringwald  * @param antenna_ids[i]
18900c1cf6c6SMatthias Ringwald  */
18910c1cf6c6SMatthias Ringwald 
18920c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connectionless_cte_transmit_parameters = {
18930c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_CONNECTIONLESS_CTE_TRANSMIT_PARAMETERS, "1111a[1]"
18940c1cf6c6SMatthias Ringwald };
18950c1cf6c6SMatthias Ringwald 
18960c1cf6c6SMatthias Ringwald /**
18970c1cf6c6SMatthias Ringwald  * @param advertising_handle
18980c1cf6c6SMatthias Ringwald  * @param cte_enable
18990c1cf6c6SMatthias Ringwald  */
19000c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connectionless_cte_transmit_enable = {
19010c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_CONNECTIONLESS_CTE_TRANSMIT_ENABLE, "11"
19020c1cf6c6SMatthias Ringwald };
19030c1cf6c6SMatthias Ringwald 
19040c1cf6c6SMatthias Ringwald /**
19050c1cf6c6SMatthias Ringwald  * @param sync_handle
19060c1cf6c6SMatthias Ringwald  * @param sampling_enable
19070c1cf6c6SMatthias Ringwald  * @param slot_durations
19080c1cf6c6SMatthias Ringwald  * @param max_sampled_ctes
19090c1cf6c6SMatthias Ringwald  * @param switching_pattern_length
19100c1cf6c6SMatthias Ringwald  * @param antenna_ids[i]
19110c1cf6c6SMatthias Ringwald  */
19120c1cf6c6SMatthias Ringwald 
19130c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connectionless_iq_sampling_enable = {
19140c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_CONNECTIONLESS_IQ_SAMPLING_ENABLE, "2111a[i]"
19150c1cf6c6SMatthias Ringwald };
19160c1cf6c6SMatthias Ringwald 
19170c1cf6c6SMatthias Ringwald /**
19180c1cf6c6SMatthias Ringwald  * @param connection_handle
19190c1cf6c6SMatthias Ringwald  * @param sampling_enable
19200c1cf6c6SMatthias Ringwald  * @param slot_durations
19210c1cf6c6SMatthias Ringwald  * @param switching_pattern_length
19220c1cf6c6SMatthias Ringwald  * @param antenna_ids[i]
19230c1cf6c6SMatthias Ringwald  */
19240c1cf6c6SMatthias Ringwald 
19250c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connection_cte_receive_parameters = {
19260c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_CONNECTION_CTE_RECEIVE_PARAMETERS, "211a[1]"
19270c1cf6c6SMatthias Ringwald };
19280c1cf6c6SMatthias Ringwald 
19290c1cf6c6SMatthias Ringwald /**
19300c1cf6c6SMatthias Ringwald  * @param connection_handle
19310c1cf6c6SMatthias Ringwald  * @param cte_types
19320c1cf6c6SMatthias Ringwald  * @param switching_pattern_length
19330c1cf6c6SMatthias Ringwald  * @param antenna_ids[i]
19340c1cf6c6SMatthias Ringwald  */
19350c1cf6c6SMatthias Ringwald 
19360c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connection_cte_transmit_parameters = {
19370c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_CONNECTION_CTE_TRANSMIT_PARAMETERS, "21a[1]"
19380c1cf6c6SMatthias Ringwald };
19390c1cf6c6SMatthias Ringwald 
19400c1cf6c6SMatthias Ringwald /**
19410c1cf6c6SMatthias Ringwald  * @param connection_handle
19420c1cf6c6SMatthias Ringwald  * @param enable
19430c1cf6c6SMatthias Ringwald  * @param cte_request_interval
19440c1cf6c6SMatthias Ringwald  * @param requested_cte_length
19450c1cf6c6SMatthias Ringwald  * @param requested_cte_type
19460c1cf6c6SMatthias Ringwald  */
19470c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_connection_cte_request_enable = {
19480c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_CONNECTION_CTE_REQUEST_ENABLE, "H1211"
19490c1cf6c6SMatthias Ringwald };
19500c1cf6c6SMatthias Ringwald 
19510c1cf6c6SMatthias Ringwald /**
19520c1cf6c6SMatthias Ringwald  * @param connection_handle
19530c1cf6c6SMatthias Ringwald  * @param enable
19540c1cf6c6SMatthias Ringwald  */
19550c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_connection_cte_response_enable = {
19560c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_CONNECTION_CTE_RESPONSE_ENABLE, "H1"
19570c1cf6c6SMatthias Ringwald };
19580c1cf6c6SMatthias Ringwald 
19590c1cf6c6SMatthias Ringwald /**
19600c1cf6c6SMatthias Ringwald  */
19610c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_antenna_information = {
19620c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_ANTENNA_INFORMATION, ""
19630c1cf6c6SMatthias Ringwald };
19640c1cf6c6SMatthias Ringwald 
19650c1cf6c6SMatthias Ringwald /**
19660c1cf6c6SMatthias Ringwald  * @param sync_handle
19670c1cf6c6SMatthias Ringwald  * @param enable
19680c1cf6c6SMatthias Ringwald  */
19690c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_receive_enable = {
19700c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_RECEIVE_ENABLE, "H1"
19710c1cf6c6SMatthias Ringwald };
19720c1cf6c6SMatthias Ringwald 
19730c1cf6c6SMatthias Ringwald /**
19740c1cf6c6SMatthias Ringwald  * @param connection_handle
19750c1cf6c6SMatthias Ringwald  * @param service_data
19760c1cf6c6SMatthias Ringwald  * @param sync_handle
19770c1cf6c6SMatthias Ringwald  */
19780c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_sync_transfer = {
19790c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_SYNC_TRANSFER, "H22"
19800c1cf6c6SMatthias Ringwald };
19810c1cf6c6SMatthias Ringwald 
19820c1cf6c6SMatthias Ringwald /**
19830c1cf6c6SMatthias Ringwald  * @param connection_handle
19840c1cf6c6SMatthias Ringwald  * @param service_data
19850c1cf6c6SMatthias Ringwald  * @param advertising_handle
19860c1cf6c6SMatthias Ringwald  */
19870c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_set_info_transfer = {
19880c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_SET_INFO_TRANSFER, "H21"
19890c1cf6c6SMatthias Ringwald };
19900c1cf6c6SMatthias Ringwald 
19910c1cf6c6SMatthias Ringwald /**
19920c1cf6c6SMatthias Ringwald  * @param connection_handle
19930c1cf6c6SMatthias Ringwald  * @param mode
19940c1cf6c6SMatthias Ringwald  * @param skip
19950c1cf6c6SMatthias Ringwald  * @param sync_timeout
19960c1cf6c6SMatthias Ringwald  * @param cte_type
19970c1cf6c6SMatthias Ringwald  */
19980c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_sync_transfer_parameters = {
19990c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_SYNC_TRANSFER_PARAMETERS, "H1221"
20000c1cf6c6SMatthias Ringwald };
20010c1cf6c6SMatthias Ringwald 
20020c1cf6c6SMatthias Ringwald /**
20030c1cf6c6SMatthias Ringwald  * @param mode
20040c1cf6c6SMatthias Ringwald  * @param skip
20050c1cf6c6SMatthias Ringwald  * @param sync_timeout
20060c1cf6c6SMatthias Ringwald  * @param cte_type
20070c1cf6c6SMatthias Ringwald  */
20080c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_default_periodic_advertising_sync_transfer_parameters = {
20090c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_DEFAULT_PERIODIC_ADVERTISING_SYNC_TRANSFER_PARAMETERS, "1221"
20100c1cf6c6SMatthias Ringwald };
20110c1cf6c6SMatthias Ringwald 
20120c1cf6c6SMatthias Ringwald /**
20130c1cf6c6SMatthias Ringwald  * @param 256Remote_P-256_public_key_x
20140c1cf6c6SMatthias Ringwald  * @param 256Remote_P-256_public_key_y
20150c1cf6c6SMatthias Ringwald  * @param key_type
20160c1cf6c6SMatthias Ringwald  */
20170c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_generate_dhkey_v2 = {
20180c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_GENERATE_DHKEY_V2, "QQ1"
20190c1cf6c6SMatthias Ringwald };
20200c1cf6c6SMatthias Ringwald 
20210c1cf6c6SMatthias Ringwald /**
20220c1cf6c6SMatthias Ringwald  * @param action
20230c1cf6c6SMatthias Ringwald  */
20240c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_modify_sleep_clock_accuracy = {
20250c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_MODIFY_SLEEP_CLOCK_ACCURACY, "1"
20260c1cf6c6SMatthias Ringwald };
20270c1cf6c6SMatthias Ringwald 
20280c1cf6c6SMatthias Ringwald /**
20290c1cf6c6SMatthias Ringwald  */
20300c1cf6c6SMatthias Ringwald const hci_cmd_t hci_opcode_hci_le_read_buffer_size_v2 = {
20310c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_OPCODE_HCI_LE_READ_BUFFER_SIZE_V2, ""
20320c1cf6c6SMatthias Ringwald };
20330c1cf6c6SMatthias Ringwald 
20340c1cf6c6SMatthias Ringwald /**
20350c1cf6c6SMatthias Ringwald  * @param connection_handle
20360c1cf6c6SMatthias Ringwald  */
20370c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_iso_tx_sync = {
20380c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_ISO_TX_SYNC, "H"
20390c1cf6c6SMatthias Ringwald };
20400c1cf6c6SMatthias Ringwald 
20410c1cf6c6SMatthias Ringwald /**
20420c1cf6c6SMatthias Ringwald  * @param cig_id
20430c1cf6c6SMatthias Ringwald  * @param sdu_interval_m_to_s
20440c1cf6c6SMatthias Ringwald  * @param sdu_interval_s_to_m
20450c1cf6c6SMatthias Ringwald  * @param slaves_clock_accuracy
20460c1cf6c6SMatthias Ringwald  * @param packing
20470c1cf6c6SMatthias Ringwald  * @param framing
20480c1cf6c6SMatthias Ringwald  * @param max_transport_latency_m_to_s
20490c1cf6c6SMatthias Ringwald  * @param max_transport_latency_s_to_m
20500c1cf6c6SMatthias Ringwald  * @param cis_count
20510c1cf6c6SMatthias Ringwald  * @param cis_id[i]
20520c1cf6c6SMatthias Ringwald  * @param max_sdu_m_to_s[i]
20530c1cf6c6SMatthias Ringwald  * @param max_sdu_s_to_m[i]
20540c1cf6c6SMatthias Ringwald  * @param phy_m_to_s[i]
20550c1cf6c6SMatthias Ringwald  * @param phy_s_to_m[i]
20560c1cf6c6SMatthias Ringwald  * @param rtn_m_to_s[i]
20570c1cf6c6SMatthias Ringwald  * @param rtn_s_to_m[i]
20580c1cf6c6SMatthias Ringwald  */
20590c1cf6c6SMatthias Ringwald 
20600c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_cig_parameters = {
20610c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_CIG_PARAMETERS, "13311122a[1221111]"
20620c1cf6c6SMatthias Ringwald };
20630c1cf6c6SMatthias Ringwald 
20640c1cf6c6SMatthias Ringwald /**
20650c1cf6c6SMatthias Ringwald  * @param cig_id
20660c1cf6c6SMatthias Ringwald  * @param sdu_interval_m_to_s
20670c1cf6c6SMatthias Ringwald  * @param sdu_interval_s_to_m
20680c1cf6c6SMatthias Ringwald  * @param ft_m_to_s
20690c1cf6c6SMatthias Ringwald  * @param ft_s_to_m
20700c1cf6c6SMatthias Ringwald  * @param iso_interval
20710c1cf6c6SMatthias Ringwald  * @param slaves_clock_accuracy
20720c1cf6c6SMatthias Ringwald  * @param packing
20730c1cf6c6SMatthias Ringwald  * @param framing
20740c1cf6c6SMatthias Ringwald  * @param max_transport_latency_m_to_s
20750c1cf6c6SMatthias Ringwald  * @param max_transport_latency_s_to_m
20760c1cf6c6SMatthias Ringwald  * @param cis_count
20770c1cf6c6SMatthias Ringwald  * @param cis_id[i]
20780c1cf6c6SMatthias Ringwald  * @param nse[i]
20790c1cf6c6SMatthias Ringwald  * @param max_sdu_m_to_s[i]
20800c1cf6c6SMatthias Ringwald  * @param max_sdu_s_to_m[i]
20810c1cf6c6SMatthias Ringwald  * @param max_pdu_m_to_s[i]
20820c1cf6c6SMatthias Ringwald  * @param max_pdu_s_to_m[i]
20830c1cf6c6SMatthias Ringwald  * @param phy_m_to_s[i]
20840c1cf6c6SMatthias Ringwald  * @param phy_s_to_m[i]
20850c1cf6c6SMatthias Ringwald  * @param bn_m_to_s[i]
20860c1cf6c6SMatthias Ringwald  * @param bn_s_to_m[i]
20870c1cf6c6SMatthias Ringwald  */
20880c1cf6c6SMatthias Ringwald 
20890c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_cig_parameters_test = {
20900c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_CIG_PARAMETERS_TEST, "133112111a[1122221111]"
20910c1cf6c6SMatthias Ringwald };
20920c1cf6c6SMatthias Ringwald 
20930c1cf6c6SMatthias Ringwald /**
20940c1cf6c6SMatthias Ringwald  * @param cis_count
20950c1cf6c6SMatthias Ringwald  * @param cis_connection_handle[i]
20960c1cf6c6SMatthias Ringwald  * @param acl_connection_handle[i]
20970c1cf6c6SMatthias Ringwald  */
20980c1cf6c6SMatthias Ringwald 
20990c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_create_cis = {
21000c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_CREATE_CIS, "a[22]"
21010c1cf6c6SMatthias Ringwald };
21020c1cf6c6SMatthias Ringwald 
21030c1cf6c6SMatthias Ringwald /**
21040c1cf6c6SMatthias Ringwald  * @param cig_id
21050c1cf6c6SMatthias Ringwald  */
21060c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_cig = {
21070c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOVE_CIG, "1"
21080c1cf6c6SMatthias Ringwald };
21090c1cf6c6SMatthias Ringwald 
21100c1cf6c6SMatthias Ringwald /**
21110c1cf6c6SMatthias Ringwald  * @param connection_handle
21120c1cf6c6SMatthias Ringwald  */
21130c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_accept_cis_request = {
21140c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_ACCEPT_CIS_REQUEST, "H"
21150c1cf6c6SMatthias Ringwald };
21160c1cf6c6SMatthias Ringwald 
21170c1cf6c6SMatthias Ringwald /**
21180c1cf6c6SMatthias Ringwald  * @param connection_handle
21190c1cf6c6SMatthias Ringwald  */
21200c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_reject_cis_request = {
21210c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_REJECT_CIS_REQUEST, "H"
21220c1cf6c6SMatthias Ringwald };
21230c1cf6c6SMatthias Ringwald 
21240c1cf6c6SMatthias Ringwald /**
21250c1cf6c6SMatthias Ringwald  * @param big_handle
21260c1cf6c6SMatthias Ringwald  * @param advertising_handle
21270c1cf6c6SMatthias Ringwald  * @param num_bis
21280c1cf6c6SMatthias Ringwald  * @param sdu_interval
21290c1cf6c6SMatthias Ringwald  * @param max_sdu
21300c1cf6c6SMatthias Ringwald  * @param max_transport_latency
21310c1cf6c6SMatthias Ringwald  * @param rtn
21320c1cf6c6SMatthias Ringwald  * @param phy
21330c1cf6c6SMatthias Ringwald  * @param packing
21340c1cf6c6SMatthias Ringwald  * @param framing
21350c1cf6c6SMatthias Ringwald  * @param encryption
21360c1cf6c6SMatthias Ringwald  * @param broadcast_code
21370c1cf6c6SMatthias Ringwald  */
21380c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_create_big = {
21390c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_CREATE_BIG, "11132211111P"
21400c1cf6c6SMatthias Ringwald };
21410c1cf6c6SMatthias Ringwald 
21420c1cf6c6SMatthias Ringwald /**
21430c1cf6c6SMatthias Ringwald  * @param big_handle
21440c1cf6c6SMatthias Ringwald  * @param advertising_handle
21450c1cf6c6SMatthias Ringwald  * @param num_bis
21460c1cf6c6SMatthias Ringwald  * @param sdu_interval
21470c1cf6c6SMatthias Ringwald  * @param iso_interval
21480c1cf6c6SMatthias Ringwald  * @param nse
21490c1cf6c6SMatthias Ringwald  * @param max_sdu
21500c1cf6c6SMatthias Ringwald  * @param max_PDU
21510c1cf6c6SMatthias Ringwald  * @param phy
21520c1cf6c6SMatthias Ringwald  * @param packing
21530c1cf6c6SMatthias Ringwald  * @param framing
21540c1cf6c6SMatthias Ringwald  * @param bn
21550c1cf6c6SMatthias Ringwald  * @param irc
21560c1cf6c6SMatthias Ringwald  * @param pto
21570c1cf6c6SMatthias Ringwald  * @param encryption
21580c1cf6c6SMatthias Ringwald  * @param broadcast_code
21590c1cf6c6SMatthias Ringwald  */
21600c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_create_big_test = {
21610c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_CREATE_BIG_TEST, "111321221111111P"
21620c1cf6c6SMatthias Ringwald };
21630c1cf6c6SMatthias Ringwald 
21640c1cf6c6SMatthias Ringwald /**
21650c1cf6c6SMatthias Ringwald  * @param big_handle
21660c1cf6c6SMatthias Ringwald  * @param reason
21670c1cf6c6SMatthias Ringwald  */
21680c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_terminate_big = {
21690c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_TERMINATE_BIG, "11"
21700c1cf6c6SMatthias Ringwald };
21710c1cf6c6SMatthias Ringwald 
21720c1cf6c6SMatthias Ringwald /**
21730c1cf6c6SMatthias Ringwald  * @param big_handle
21740c1cf6c6SMatthias Ringwald  * @param sync_handle
21750c1cf6c6SMatthias Ringwald  * @param encryption
21760c1cf6c6SMatthias Ringwald  * @param broadcast_code
21770c1cf6c6SMatthias Ringwald  * @param mse
21780c1cf6c6SMatthias Ringwald  * @param big_sync_timeout
21790c1cf6c6SMatthias Ringwald  * @param num_bis
21800c1cf6c6SMatthias Ringwald  * @param bis[i]
21810c1cf6c6SMatthias Ringwald  */
21820c1cf6c6SMatthias Ringwald 
21830c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_big_create_sync = {
21840c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_BIG_CREATE_SYNC, "1H1P12a[1]"
21850c1cf6c6SMatthias Ringwald };
21860c1cf6c6SMatthias Ringwald 
21870c1cf6c6SMatthias Ringwald /**
21880c1cf6c6SMatthias Ringwald  * @param big_handle
21890c1cf6c6SMatthias Ringwald  */
21900c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_big_terminate_sync = {
2191*c0112d43SMatthias Ringwald     HCI_OPCODE_HCI_LE_BIG_TERMINATE_SYNC, "1"
21920c1cf6c6SMatthias Ringwald };
21930c1cf6c6SMatthias Ringwald 
21940c1cf6c6SMatthias Ringwald /**
21950c1cf6c6SMatthias Ringwald  * @param connection_handle
21960c1cf6c6SMatthias Ringwald  */
21970c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_request_peer_sca = {
21980c1cf6c6SMatthias Ringwald         HCI_OPCODE_HCI_LE_REQUEST_PEER_SCA, "H"
21990c1cf6c6SMatthias Ringwald };
22000c1cf6c6SMatthias Ringwald 
22010c1cf6c6SMatthias Ringwald /**
22020c1cf6c6SMatthias Ringwald  * @param connection_handle
22030c1cf6c6SMatthias Ringwald  * @param data_path_direction
22040c1cf6c6SMatthias Ringwald  * @param data_path_id
22050c1cf6c6SMatthias Ringwald  * @param codec_id_coding_format
22060c1cf6c6SMatthias Ringwald  * @param codec_id_company_identifier (Shall be ignored if codec_id_coding_format is not 0xFF)
22070c1cf6c6SMatthias Ringwald  * @param codec_id_vendor_codec_id (Shall be ignored if codec_id_coding_format is not 0xFF)
22080c1cf6c6SMatthias Ringwald  * @param controller_delay
22090c1cf6c6SMatthias Ringwald  * @param codec_configuration_length
22100c1cf6c6SMatthias Ringwald  * @param codec_configuration
22110c1cf6c6SMatthias Ringwald  */
22120c1cf6c6SMatthias Ringwald 
22130c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_setup_iso_data_path = {
22140c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SETUP_ISO_DATA_PATH, "H111223JV"
22150c1cf6c6SMatthias Ringwald };
22160c1cf6c6SMatthias Ringwald 
22170c1cf6c6SMatthias Ringwald /**
22180c1cf6c6SMatthias Ringwald  * @param connection_handle
22190c1cf6c6SMatthias Ringwald  */
22200c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_iso_data_path = {
22210c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOVE_ISO_DATA_PATH, "H1"
22220c1cf6c6SMatthias Ringwald };
22230c1cf6c6SMatthias Ringwald 
22240c1cf6c6SMatthias Ringwald /**
22250c1cf6c6SMatthias Ringwald  * @param connection_handle
22260c1cf6c6SMatthias Ringwald  * @param paylaod_type
22270c1cf6c6SMatthias Ringwald  */
22280c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_transmit_test = {
22290c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_ISO_TRANSMIT_TEST, "H1"
22300c1cf6c6SMatthias Ringwald };
22310c1cf6c6SMatthias Ringwald 
22320c1cf6c6SMatthias Ringwald /**
22330c1cf6c6SMatthias Ringwald  * @param connection_handle
22340c1cf6c6SMatthias Ringwald  * @param paylaod_type
22350c1cf6c6SMatthias Ringwald  */
22360c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_receive_test = {
22370c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_ISO_RECEIVE_TEST, "H1"
22380c1cf6c6SMatthias Ringwald };
22390c1cf6c6SMatthias Ringwald 
22400c1cf6c6SMatthias Ringwald /**
22410c1cf6c6SMatthias Ringwald  * @param connection_handle
22420c1cf6c6SMatthias Ringwald  */
22430c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_read_test_counters = {
22440c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_ISO_READ_TEST_COUNTERS, "H"
22450c1cf6c6SMatthias Ringwald };
22460c1cf6c6SMatthias Ringwald 
22470c1cf6c6SMatthias Ringwald /**
22480c1cf6c6SMatthias Ringwald  * @param connection_handle
22490c1cf6c6SMatthias Ringwald  */
22500c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_test_end = {
22510c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_ISO_TEST_END, "H"
22520c1cf6c6SMatthias Ringwald };
22530c1cf6c6SMatthias Ringwald 
22540c1cf6c6SMatthias Ringwald /**
22550c1cf6c6SMatthias Ringwald  * @param bit_number
22560c1cf6c6SMatthias Ringwald  * @param bit_value
22570c1cf6c6SMatthias Ringwald  */
22580c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_host_feature = {
22590c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_HOST_FEATURE, "11"
22600c1cf6c6SMatthias Ringwald };
22610c1cf6c6SMatthias Ringwald 
22620c1cf6c6SMatthias Ringwald /**
22630c1cf6c6SMatthias Ringwald  * @param connection_handle
22640c1cf6c6SMatthias Ringwald  */
22650c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_iso_link_quality = {
22660c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_ISO_LINK_QUALITY, "H"
22670c1cf6c6SMatthias Ringwald };
22680c1cf6c6SMatthias Ringwald 
22690c1cf6c6SMatthias Ringwald /**
22700c1cf6c6SMatthias Ringwald  * @param connection_handle
22710c1cf6c6SMatthias Ringwald  * @param phy
22720c1cf6c6SMatthias Ringwald  */
22730c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_enhanced_read_transmit_power_level = {
22740c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_ENHANCED_READ_TRANSMIT_POWER_LEVEL, "H1"
22750c1cf6c6SMatthias Ringwald };
22760c1cf6c6SMatthias Ringwald 
22770c1cf6c6SMatthias Ringwald /**
22780c1cf6c6SMatthias Ringwald  * @param connection_handle
22790c1cf6c6SMatthias Ringwald  * @param phy
22800c1cf6c6SMatthias Ringwald  */
22810c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_remote_transmit_power_level = {
22820c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_REMOTE_TRANSMIT_POWER_LEVEL, "H1"
22830c1cf6c6SMatthias Ringwald };
22840c1cf6c6SMatthias Ringwald 
22850c1cf6c6SMatthias Ringwald /**
22860c1cf6c6SMatthias Ringwald  * @param connection_handle
22870c1cf6c6SMatthias Ringwald  * @param high_threshold
22880c1cf6c6SMatthias Ringwald  * @param high_hysteresis
22890c1cf6c6SMatthias Ringwald  * @param low_threshold
22900c1cf6c6SMatthias Ringwald  * @param low_hysteresis
22910c1cf6c6SMatthias Ringwald  * @param min_time_spent
22920c1cf6c6SMatthias Ringwald  */
22930c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_path_loss_reporting_parameters = {
22940c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PATH_LOSS_REPORTING_PARAMETERS, "211112"
22950c1cf6c6SMatthias Ringwald };
22960c1cf6c6SMatthias Ringwald 
22970c1cf6c6SMatthias Ringwald /**
22980c1cf6c6SMatthias Ringwald  * @param connection_handle
22990c1cf6c6SMatthias Ringwald  * @param enable
23000c1cf6c6SMatthias Ringwald  */
23010c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_path_loss_reporting_enable = {
23020c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PATH_LOSS_REPORTING_ENABLE, "H1"
23030c1cf6c6SMatthias Ringwald };
23040c1cf6c6SMatthias Ringwald 
23050c1cf6c6SMatthias Ringwald /**
23060c1cf6c6SMatthias Ringwald  * @param connection_handle
23070c1cf6c6SMatthias Ringwald  * @param local_enable
23080c1cf6c6SMatthias Ringwald  * @param remote_enable
23090c1cf6c6SMatthias Ringwald  */
23100c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_transmit_power_reporting_enable = {
23110c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_TRANSMIT_POWER_REPORTING_ENABLE, "H11"
23120c1cf6c6SMatthias Ringwald };
23130c1cf6c6SMatthias Ringwald 
23140c1cf6c6SMatthias Ringwald /**
23150c1cf6c6SMatthias Ringwald  * @param tx_channel
23160c1cf6c6SMatthias Ringwald  * @param test_data_length
23170c1cf6c6SMatthias Ringwald  * @param packet_payload
23180c1cf6c6SMatthias Ringwald  * @param phy
23190c1cf6c6SMatthias Ringwald  * @param cte_length
23200c1cf6c6SMatthias Ringwald  * @param cte_type
23210c1cf6c6SMatthias Ringwald  * @param switching_pattern_length
23220c1cf6c6SMatthias Ringwald  * @param antenna_ids[i]
23230c1cf6c6SMatthias Ringwald  * @param transmit_power_level
23240c1cf6c6SMatthias Ringwald  */
23250c1cf6c6SMatthias Ringwald 
23260c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test_v4 = {
23270c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_TRANSMITTER_TEST_V4, "111111a[1]1"
23280c1cf6c6SMatthias Ringwald };
2329ca13daefSMatthias Ringwald 
233056042629SMatthias Ringwald #endif
2331a42798c3SMatthias Ringwald 
2332a42798c3SMatthias Ringwald // Broadcom / Cypress specific HCI commands
2333a42798c3SMatthias Ringwald 
2334a42798c3SMatthias Ringwald /**
2335067ecc36SMatthias Ringwald  * @brief Enable Wide-Band Speech / mSBC decoding for PCM
2336067ecc36SMatthias Ringwald  * @param enable_wbs is 0 for disable, 1 for enable
2337067ecc36SMatthias Ringwald  * @param uuid_wbs is 2 for EV2/EV3
2338067ecc36SMatthias Ringwald  */
2339067ecc36SMatthias Ringwald const hci_cmd_t hci_bcm_enable_wbs = {
2340067ecc36SMatthias Ringwald     HCI_OPCODE_HCI_BCM_ENABLE_WBS, "12"
2341067ecc36SMatthias Ringwald         // return: status
2342067ecc36SMatthias Ringwald };
2343067ecc36SMatthias Ringwald 
2344067ecc36SMatthias Ringwald /**
2345a42798c3SMatthias Ringwald  * @brief Configure SCO Routing (BCM)
2346a42798c3SMatthias Ringwald  * @param sco_routing is 0 for PCM, 1 for Transport, 2 for Codec and 3 for I2S
2347a42798c3SMatthias Ringwald  * @param pcm_interface_rate is 0 for 128KBps, 1 for 256 KBps, 2 for 512KBps, 3 for 1024KBps, and 4 for 2048Kbps
2348a42798c3SMatthias Ringwald  * @param frame_type is 0 for short and 1 for long
2349a42798c3SMatthias Ringwald  * @param sync_mode is 0 for slave and 1 for master
2350a42798c3SMatthias Ringwald  * @param clock_mode is 0 for slabe and 1 for master
2351a42798c3SMatthias Ringwald  */
2352a42798c3SMatthias Ringwald const hci_cmd_t hci_bcm_write_sco_pcm_int = {
2353ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_BCM_WRITE_SCO_PCM_INT, "11111"
2354a42798c3SMatthias Ringwald     // return: status
2355a42798c3SMatthias Ringwald };
2356eab6959fSMatthias Ringwald 
2357eab6959fSMatthias Ringwald /**
2358067ecc36SMatthias Ringwald  * @brief Configure the I2S/PCM interface (BCM)
2359067ecc36SMatthias Ringwald  * @param i2s_enable is 0 for off, 1 for on
2360067ecc36SMatthias Ringwald  * @param is_master is 0 for slave, is 1 for master
2361067ecc36SMatthias Ringwald  * @param sample_rate is 0 for 8 kHz, 1 for 16 kHz, 2 for 4 kHz
2362067ecc36SMatthias Ringwald  * @param clock_rate is 0 for 128 kz, 1 for 256 kHz, 2 for 512 khz, 3 for 1024 kHz, 4 for 2048 khz
2363067ecc36SMatthias Ringwald  * @param clock_mode is 0 for slabe and 1 for master
2364067ecc36SMatthias Ringwald  */
2365067ecc36SMatthias Ringwald const hci_cmd_t hci_bcm_write_i2spcm_interface_param = {
2366067ecc36SMatthias Ringwald     HCI_OPCODE_HCI_BCM_WRITE_I2SPCM_INTERFACE_PARAM, "1111"
2367067ecc36SMatthias Ringwald         // return: status
2368067ecc36SMatthias Ringwald };
2369067ecc36SMatthias Ringwald 
2370067ecc36SMatthias Ringwald 
2371067ecc36SMatthias Ringwald /**
2372eab6959fSMatthias Ringwald  * @brief Activates selected Sleep Mode
2373eab6959fSMatthias Ringwald  * @param sleep_mode: 0=no sleep, 1=UART, 2=UART with Messaging, 3=USB, 4=H4IBSS, USB with Host Wake, 6=SDIO, 7=UART CS-N, 8=SPI, 9=H5, 10=H4DS, 12=UART with BREAK
2374eab6959fSMatthias Ringwald  * @param idle_threshold_host (modes 1,2,5,7) time until considered idle, unit roughly 300 ms
2375eab6959fSMatthias Ringwald  * @param idle_threshold_controller (modes 1-7,9) time until considered idle, unit roughly 300 ms
2376eab6959fSMatthias Ringwald  * @param bt_wake_active_mode (modes 1,2,7) 0 = BT_WAKE line is active high, 1 = BT_WAKE is active low
2377eab6959fSMatthias Ringwald  * @param host_wake_active_mode (modes 1,2,5,7) 0 = HOST_WAKE line is active high, 1 = HOST_WAKE is active low
2378eab6959fSMatthias Ringwald  * @param allow_host_sleep_during_sco (modes 1,2,3,5,7)
2379eab6959fSMatthias Ringwald  * @param combine_sleep_mode_and_lpm  (modes 1,2,3,5,7)
2380eab6959fSMatthias Ringwald  * @param enable_tristate_control_of_uart_tx_line (modes 1,2,7)
2381eab6959fSMatthias Ringwald  * @param active_connection_handling_on_suspend (modes 3,5)
2382eab6959fSMatthias Ringwald  * @param resume_timeout (modes 3,5)
2383eab6959fSMatthias Ringwald  * @param enable_break_to_host (mode 12)
2384eab6959fSMatthias Ringwald  * @param pulsed_host_wake (modes 1,12)
2385eab6959fSMatthias Ringwald  */
2386eab6959fSMatthias Ringwald const hci_cmd_t hci_bcm_set_sleep_mode = {
2387ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_BCM_SET_SLEEP_MODE, "111111111111"
2388eab6959fSMatthias Ringwald };
23895cdaddfaSMatthias Ringwald 
23905cdaddfaSMatthias Ringwald /**
23915cdaddfaSMatthias Ringwald  * @brief Set TX Power Table
23925cdaddfaSMatthias Ringwald  * @param is_le 0=classic, 1=LE
23935cdaddfaSMatthias Ringwald  * @param chip_max_tx_pwr_db chip level max TX power in dBM
23945cdaddfaSMatthias Ringwald  */
23955cdaddfaSMatthias Ringwald const hci_cmd_t hci_bcm_write_tx_power_table = {
2396ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_BCM_WRITE_TX_POWER_TABLE, "11"
23975cdaddfaSMatthias Ringwald };
23985cdaddfaSMatthias Ringwald 
23995cdaddfaSMatthias Ringwald const hci_cmd_t hci_bcm_set_tx_pwr = {
2400ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_BCM_SET_TX_PWR, "11H"
24015cdaddfaSMatthias Ringwald };
2402ba39ed56SMatthias Ringwald 
2403ba39ed56SMatthias Ringwald /**
240415fca961SMatthias Ringwald  * @brief This command starts receiving packets using packet transmission parameters such as
240515fca961SMatthias Ringwald  *        frequency channel, packet type, and packet length. It is used for Packet RX.
240615fca961SMatthias Ringwald  * @see   https://processors.wiki.ti.com/index.php/CC256x_Testing_Guide#Continuous_RX
240715fca961SMatthias Ringwald  * @param frequency
240815fca961SMatthias Ringwald  * @param ADPLL loop mode
240915fca961SMatthias Ringwald  */
241015fca961SMatthias Ringwald const hci_cmd_t hci_ti_drpb_tester_con_rx = {
241115fca961SMatthias Ringwald         0xFD17, "11"
241215fca961SMatthias Ringwald };
241315fca961SMatthias Ringwald 
241415fca961SMatthias Ringwald /**
2415ba39ed56SMatthias Ringwald  *
2416ba39ed56SMatthias Ringwald  *
2417ba39ed56SMatthias Ringwald  * @brief This command tests the RF transceiver in continuous transmission mode.
2418ba39ed56SMatthias Ringwald  *        The transmitter is activated by configuring the transmission parameters such as pattern,
2419ba39ed56SMatthias Ringwald  *        modulation, and frequency.
2420ba39ed56SMatthias Ringwald  * @see   processors.wiki.ti.com/index.php/CC256x_VS_HCI_Commands#HCI_VS_DRPb_Tester_Con_TX.280xFD84.29
2421ba39ed56SMatthias Ringwald  * @param modulation
242215fca961SMatthias Ringwald  * @param test_pattern
2423ba39ed56SMatthias Ringwald  * @param frequency
2424ba39ed56SMatthias Ringwald  * @param power_level
2425ba39ed56SMatthias Ringwald  * @param reserved1
2426ba39ed56SMatthias Ringwald  * @param reserved2
2427ba39ed56SMatthias Ringwald  */
2428ba39ed56SMatthias Ringwald const hci_cmd_t hci_ti_drpb_tester_con_tx = {
2429ba39ed56SMatthias Ringwald     0xFD84, "111144"
2430ba39ed56SMatthias Ringwald };
2431ba39ed56SMatthias Ringwald 
2432ba39ed56SMatthias Ringwald /**
2433ba39ed56SMatthias Ringwald  * @brief This command starts sending/receiving packets using packet transmission parameters such as
2434ba39ed56SMatthias Ringwald  *        frequency channel, packet type, and packet length. It is used for Packet TX/RX.
2435ba39ed56SMatthias Ringwald  * @see   processors.wiki.ti.com/index.php/CC256x_VS_HCI_Commands#HCI_VS_DRPb_Tester_Packet_TX_RX_.280xFD85.29
2436ba39ed56SMatthias Ringwald  * @param frequency_mode
2437ba39ed56SMatthias Ringwald  * @param tx_single_frequency
2438ba39ed56SMatthias Ringwald  * @param rx_single_frequency
2439ba39ed56SMatthias Ringwald  * @param acl_packet_type
2440ba39ed56SMatthias Ringwald  * @paarm acl_packet_data_pattern
2441ba39ed56SMatthias Ringwald  * @param reserved
2442ba39ed56SMatthias Ringwald  * @param power_level
2443ba39ed56SMatthias Ringwald  * @param disable_whitening
2444ba39ed56SMatthias Ringwald  * @param prbs9_initialization_value
2445ba39ed56SMatthias Ringwald  */
2446ba39ed56SMatthias Ringwald const hci_cmd_t hci_ti_drpb_tester_packet_tx_rx = {
2447ba39ed56SMatthias Ringwald     0xFD85, "1111112112"
2448ba39ed56SMatthias Ringwald };
2449365a7dd1SMatthias Ringwald 
2450733a7793SMatthias Ringwald 
2451733a7793SMatthias Ringwald /**
2452733a7793SMatthias Ringwald  * @param best effort access percentage
2453733a7793SMatthias Ringwald  * @param guaranteed access percentage
2454733a7793SMatthias Ringwald  * @param poll period
2455733a7793SMatthias Ringwald  * @param slave burst after tx
2456733a7793SMatthias Ringwald  * @param slave master search count
2457733a7793SMatthias Ringwald  * @param master burst after tx enable
2458733a7793SMatthias Ringwald  * @param master burst after rx limit
2459733a7793SMatthias Ringwald  */
2460cf26f982SMatthias Ringwald const hci_cmd_t hci_ti_configure_ddip = {
2461733a7793SMatthias Ringwald     HCI_OPCODE_HCI_TI_VS_CONFIGURE_DDIP, "1111111"
2462733a7793SMatthias Ringwald };
2463733a7793SMatthias Ringwald 
2464365a7dd1SMatthias Ringwald /**
2465365a7dd1SMatthias Ringwald  * @brief This command is used to associate the requested ACL handle with Wide Band Speech configuration.
2466365a7dd1SMatthias Ringwald  * @param enable 0=disable, 1=enable
2467365a7dd1SMatthias Ringwald  * @param a3dp_role (NL5500, WL128x only) 0=source,1=sink
2468365a7dd1SMatthias Ringwald  * @param code_upload (NL5500, WL128x only) 0=do not load a3dp code, 1=load a3dp code
2469365a7dd1SMatthias Ringwald  * @param reserved for future use
2470365a7dd1SMatthias Ringwald  */
2471365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_avrp_enable = {
2472365a7dd1SMatthias Ringwald         0xFD92, "1112"
2473365a7dd1SMatthias Ringwald };
2474365a7dd1SMatthias Ringwald 
2475365a7dd1SMatthias Ringwald /**
2476365a7dd1SMatthias Ringwald  * @brief This command is used to associate the requested ACL handle with Wide Band Speech configuration.
2477365a7dd1SMatthias Ringwald  * @param acl_con_handle
2478365a7dd1SMatthias Ringwald  */
2479365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_wbs_associate = {
2480365a7dd1SMatthias Ringwald         0xFD78, "H"
2481365a7dd1SMatthias Ringwald };
2482365a7dd1SMatthias Ringwald 
2483365a7dd1SMatthias Ringwald /**
2484365a7dd1SMatthias Ringwald  * @brief This command is used to disassociate Wide Band Speech configuration from any ACL handle.
2485365a7dd1SMatthias Ringwald  */
2486365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_wbs_disassociate = {
2487365a7dd1SMatthias Ringwald         0xFD79, ""
2488365a7dd1SMatthias Ringwald };
2489365a7dd1SMatthias Ringwald 
2490365a7dd1SMatthias Ringwald /**
2491365a7dd1SMatthias Ringwald  * @brief This command configures the codec interface parameters and the PCM clock rate, which is relevant when
2492365a7dd1SMatthias Ringwald           the Bluetooth core generates the clock. This command must be used by the host to use the PCM
2493365a7dd1SMatthias Ringwald           interface.
2494365a7dd1SMatthias Ringwald  * @param clock_rate in kHz
2495365a7dd1SMatthias Ringwald  * @param clock_direction 0=master/output, 1=slave/input
2496365a7dd1SMatthias Ringwald  * @param frame_sync_frequency in Hz
2497365a7dd1SMatthias Ringwald  * @param frame_sync_duty_cycle 0=50% (I2S Format), 0x0001-0xffff number of cycles of PCM clock
2498365a7dd1SMatthias Ringwald  * @param frame_sync_edge 0=driven/sampled at rising edge, 1=driven/sampled at falling edge of PCM clock
2499365a7dd1SMatthias Ringwald  * @param frame_sync_polariy 0=active high, 1=active low
2500365a7dd1SMatthias Ringwald  * @param reserved1
2501365a7dd1SMatthias Ringwald  * @param channel_1_data_out_size sample size in bits
2502365a7dd1SMatthias Ringwald  * @param channel_1_data_out_offset number of PCM clock cycles between rising of frame sync and data start
2503365a7dd1SMatthias Ringwald  * @param channel_1_data_out_edge 0=data driven at rising edge, 1=data driven at falling edge of PCM clock
2504365a7dd1SMatthias Ringwald  * @param channel_1_data_in_size sample size in bits
2505365a7dd1SMatthias Ringwald  * @param channel_1_data_in_offset number of PCM clock cycles between rising of frame sync and data start
2506365a7dd1SMatthias Ringwald  * @param channel_1_data_in_edge 0=data sampled at rising edge, 1=data sampled at falling edge of PCM clock
2507365a7dd1SMatthias Ringwald  * @param fsync_multiplier this field is only relevant to CC256XB from service pack 0.2 !!! -> use 0x00
2508365a7dd1SMatthias Ringwald  * @param channel_2_data_out_size sample size in bits
2509365a7dd1SMatthias Ringwald  * @param channel_2_data_out_offset number of PCM clock cycles between rising of frame sync and data start
2510365a7dd1SMatthias Ringwald  * @param channel_2_data_out_edge 0=data driven at rising edge, 1=data driven at falling edge of PCM clock
2511365a7dd1SMatthias Ringwald  * @param channel_2_data_in_size sample size in bits
2512365a7dd1SMatthias Ringwald  * @param channel_2_data_in_offset number of PCM clock cycles between rising of frame sync and data start
2513365a7dd1SMatthias Ringwald  * @param channel_2_data_in_edge 0=data sampled at rising edge, 1=data sampled at falling edge of PCM clock
2514365a7dd1SMatthias Ringwald  * @param reserved2
2515365a7dd1SMatthias Ringwald  *
2516365a7dd1SMatthias Ringwald  */
2517365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_write_codec_config = {
2518365a7dd1SMatthias Ringwald         0xFD06, "214211122122112212211"
2519365a7dd1SMatthias Ringwald };
252015fca961SMatthias Ringwald 
252115fca961SMatthias Ringwald /**
252215fca961SMatthias Ringwald  * @brief This command is used only for internal testing.
252315fca961SMatthias Ringwald  * @see   https://processors.wiki.ti.com/index.php/CC256x_Testing_Guide#Continuous_TX
252415fca961SMatthias Ringwald  * @param frequency
252515fca961SMatthias Ringwald  * @param ADPLL loop mode
252615fca961SMatthias Ringwald  */
252715fca961SMatthias Ringwald const hci_cmd_t hci_ti_drpb_enable_rf_calibration = {
252815fca961SMatthias Ringwald         0xFD80, "141"
252915fca961SMatthias Ringwald };
253015fca961SMatthias Ringwald 
253115fca961SMatthias Ringwald /**
253215fca961SMatthias Ringwald  * @brief This command command is only required for the continuous TX test of modulated
253315fca961SMatthias Ringwald  * (GFSK, π/4-DQPSK or 8DPSK) signal. This command should be skipped when performing continuous TX test for CW.
253415fca961SMatthias Ringwald  * @see   https://processors.wiki.ti.com/index.php/CC256x_Testing_Guide#Continuous_RX
253515fca961SMatthias Ringwald  * @param frequency
253615fca961SMatthias Ringwald  * @param ADPLL loop mode
253715fca961SMatthias Ringwald  */
253815fca961SMatthias Ringwald const hci_cmd_t hci_ti_write_hardware_register = {
253915fca961SMatthias Ringwald         0xFF01, "42"
254015fca961SMatthias Ringwald };
25411645c45cSMatthias Ringwald 
25421645c45cSMatthias Ringwald /**
25431645c45cSMatthias Ringwald  * @brief Configure SCO routing on Realtek Controllers
25441645c45cSMatthias Ringwald  */
25451645c45cSMatthias Ringwald const hci_cmd_t hci_rtk_configure_sco_routing = {
25461645c45cSMatthias Ringwald     HCI_OPCODE (0x3f, 0x93), "111111111"
25471645c45cSMatthias Ringwald };
2548