xref: /btstack/src/hci_cmd.c (revision 03a8d1d24dee5e8128d2d56b62bec1cc520c6d91)
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
16548944233SMatthias Ringwald                 uint16_t len = (uint16_t) 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;
196e878f80dSMatthias Ringwald                 hci_cmd_buffer[pos++] = (uint8_t) 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 
291211a5343SMatthias Ringwald 
292211a5343SMatthias Ringwald uint16_t hci_cmd_create_from_template_with_vargs(uint8_t * hci_cmd_buffer, const hci_cmd_t * cmd, ...){
293211a5343SMatthias Ringwald     va_list argptr;
294211a5343SMatthias Ringwald     va_start(argptr, cmd);
295211a5343SMatthias Ringwald     uint16_t size = hci_cmd_create_from_template(hci_cmd_buffer, cmd, argptr);
296211a5343SMatthias Ringwald     va_end(argptr);
297211a5343SMatthias Ringwald     return size;
298211a5343SMatthias Ringwald }
299211a5343SMatthias Ringwald 
30056042629SMatthias Ringwald /**
30156042629SMatthias Ringwald  *  Link Control Commands
30256042629SMatthias Ringwald  */
30356042629SMatthias Ringwald 
30456042629SMatthias Ringwald /**
30556042629SMatthias Ringwald  * @param lap
30656042629SMatthias Ringwald  * @param inquiry_length
30756042629SMatthias Ringwald  * @param num_responses
30856042629SMatthias Ringwald  */
30956042629SMatthias Ringwald const hci_cmd_t hci_inquiry = {
310ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_INQUIRY, "311"
31156042629SMatthias Ringwald };
31256042629SMatthias Ringwald 
31356042629SMatthias Ringwald /**
31456042629SMatthias Ringwald  */
31556042629SMatthias Ringwald const hci_cmd_t hci_inquiry_cancel = {
316ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_INQUIRY_CANCEL, ""
31756042629SMatthias Ringwald };
31856042629SMatthias Ringwald 
31956042629SMatthias Ringwald /**
3206fe44815SRicardo Quesada  * @param max_period_length
3216fe44815SRicardo Quesada  * @param min_period_length
3226fe44815SRicardo Quesada  * @param lap
3236fe44815SRicardo Quesada  * @param inquiry_length
3246fe44815SRicardo Quesada  * @param num_responses
3256fe44815SRicardo Quesada  */
3266fe44815SRicardo Quesada const hci_cmd_t hci_periodic_inquiry_mode = {
3276fe44815SRicardo Quesada     HCI_OPCODE_HCI_PERIODIC_INQUIRY_MODE, "22311"
3286fe44815SRicardo Quesada };
3296fe44815SRicardo Quesada 
3306fe44815SRicardo Quesada /**
3316fe44815SRicardo Quesada  */
3326fe44815SRicardo Quesada const hci_cmd_t hci_exit_periodic_inquiry_mode = {
3336fe44815SRicardo Quesada     HCI_OPCODE_HCI_EXIT_PERIODIC_INQUIRY_MODE, ""
3346fe44815SRicardo Quesada };
3356fe44815SRicardo Quesada 
3366fe44815SRicardo Quesada /**
33756042629SMatthias Ringwald  * @param bd_addr
33856042629SMatthias Ringwald  * @param packet_type
33956042629SMatthias Ringwald  * @param page_scan_repetition_mode
34056042629SMatthias Ringwald  * @param reserved
34156042629SMatthias Ringwald  * @param clock_offset
34256042629SMatthias Ringwald  * @param allow_role_switch
34356042629SMatthias Ringwald  */
34456042629SMatthias Ringwald const hci_cmd_t hci_create_connection = {
345ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_CREATE_CONNECTION, "B21121"
34656042629SMatthias Ringwald };
34756042629SMatthias Ringwald 
34856042629SMatthias Ringwald /**
34956042629SMatthias Ringwald  * @param handle
35056042629SMatthias Ringwald  * @param reason (0x05, 0x13-0x15, 0x1a, 0x29, see Errors Codes in BT Spec Part D)
35156042629SMatthias Ringwald  */
35256042629SMatthias Ringwald const hci_cmd_t hci_disconnect = {
353ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_DISCONNECT, "H1"
35456042629SMatthias Ringwald };
35556042629SMatthias Ringwald 
35656042629SMatthias Ringwald /**
35756042629SMatthias Ringwald  * @param bd_addr
35856042629SMatthias Ringwald  */
35956042629SMatthias Ringwald const hci_cmd_t hci_create_connection_cancel = {
360ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_CREATE_CONNECTION_CANCEL, "B"
36156042629SMatthias Ringwald };
36256042629SMatthias Ringwald 
36356042629SMatthias Ringwald /**
36456042629SMatthias Ringwald  * @param bd_addr
36556042629SMatthias Ringwald  * @param role (become master, stay slave)
36656042629SMatthias Ringwald  */
36756042629SMatthias Ringwald const hci_cmd_t hci_accept_connection_request = {
368ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_ACCEPT_CONNECTION_REQUEST, "B1"
36956042629SMatthias Ringwald };
37056042629SMatthias Ringwald 
37156042629SMatthias Ringwald /**
37256042629SMatthias Ringwald  * @param bd_addr
37356042629SMatthias Ringwald  * @param reason (e.g. CONNECTION REJECTED DUE TO LIMITED RESOURCES (0x0d))
37456042629SMatthias Ringwald  */
37556042629SMatthias Ringwald const hci_cmd_t hci_reject_connection_request = {
376ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_REJECT_CONNECTION_REQUEST, "B1"
37756042629SMatthias Ringwald };
37856042629SMatthias Ringwald 
37956042629SMatthias Ringwald /**
38056042629SMatthias Ringwald  * @param bd_addr
38156042629SMatthias Ringwald  * @param link_key
38256042629SMatthias Ringwald  */
38356042629SMatthias Ringwald const hci_cmd_t hci_link_key_request_reply = {
384ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LINK_KEY_REQUEST_REPLY, "BP"
38556042629SMatthias Ringwald };
38656042629SMatthias Ringwald 
38756042629SMatthias Ringwald /**
38856042629SMatthias Ringwald  * @param bd_addr
38956042629SMatthias Ringwald  */
39056042629SMatthias Ringwald const hci_cmd_t hci_link_key_request_negative_reply = {
391ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LINK_KEY_REQUEST_NEGATIVE_REPLY, "B"
39256042629SMatthias Ringwald };
39356042629SMatthias Ringwald 
39456042629SMatthias Ringwald /**
39556042629SMatthias Ringwald  * @param bd_addr
39656042629SMatthias Ringwald  * @param pin_length
39756042629SMatthias Ringwald  * @param pin (c-string)
39856042629SMatthias Ringwald  */
39956042629SMatthias Ringwald const hci_cmd_t hci_pin_code_request_reply = {
400ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_PIN_CODE_REQUEST_REPLY, "B1P"
40156042629SMatthias Ringwald };
40256042629SMatthias Ringwald 
40356042629SMatthias Ringwald /**
40456042629SMatthias Ringwald  * @param bd_addr
40556042629SMatthias Ringwald  */
40656042629SMatthias Ringwald const hci_cmd_t hci_pin_code_request_negative_reply = {
407ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_PIN_CODE_REQUEST_NEGATIVE_REPLY, "B"
40856042629SMatthias Ringwald };
40956042629SMatthias Ringwald 
41056042629SMatthias Ringwald /**
41156042629SMatthias Ringwald  * @param handle
41256042629SMatthias Ringwald  * @param packet_type
41356042629SMatthias Ringwald  */
41456042629SMatthias Ringwald const hci_cmd_t hci_change_connection_packet_type = {
415ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_CHANGE_CONNECTION_PACKET_TYPE, "H2"
41656042629SMatthias Ringwald };
41756042629SMatthias Ringwald 
41856042629SMatthias Ringwald /**
41956042629SMatthias Ringwald  * @param handle
42056042629SMatthias Ringwald  */
42156042629SMatthias Ringwald const hci_cmd_t hci_authentication_requested = {
422ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_AUTHENTICATION_REQUESTED, "H"
42356042629SMatthias Ringwald };
42456042629SMatthias Ringwald 
42556042629SMatthias Ringwald /**
42656042629SMatthias Ringwald  * @param handle
42756042629SMatthias Ringwald  * @param encryption_enable
42856042629SMatthias Ringwald  */
42956042629SMatthias Ringwald const hci_cmd_t hci_set_connection_encryption = {
430ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_SET_CONNECTION_ENCRYPTION, "H1"
43156042629SMatthias Ringwald };
43256042629SMatthias Ringwald 
43356042629SMatthias Ringwald /**
43456042629SMatthias Ringwald  * @param handle
43556042629SMatthias Ringwald  */
43656042629SMatthias Ringwald const hci_cmd_t hci_change_connection_link_key = {
437ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_CHANGE_CONNECTION_LINK_KEY, "H"
43856042629SMatthias Ringwald };
43956042629SMatthias Ringwald 
44056042629SMatthias Ringwald /**
44156042629SMatthias Ringwald  * @param bd_addr
44256042629SMatthias Ringwald  * @param page_scan_repetition_mode
44356042629SMatthias Ringwald  * @param reserved
44456042629SMatthias Ringwald  * @param clock_offset
44556042629SMatthias Ringwald  */
44656042629SMatthias Ringwald const hci_cmd_t hci_remote_name_request = {
447ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_REMOTE_NAME_REQUEST, "B112"
44856042629SMatthias Ringwald };
44956042629SMatthias Ringwald 
45056042629SMatthias Ringwald 
45156042629SMatthias Ringwald /**
45256042629SMatthias Ringwald  * @param bd_addr
45356042629SMatthias Ringwald  */
45456042629SMatthias Ringwald const hci_cmd_t hci_remote_name_request_cancel = {
455ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_REMOTE_NAME_REQUEST_CANCEL, "B"
45656042629SMatthias Ringwald };
45756042629SMatthias Ringwald 
45856042629SMatthias Ringwald  /**
45956042629SMatthias Ringwald  * @param handle
46056042629SMatthias Ringwald  */
46156042629SMatthias Ringwald const hci_cmd_t hci_read_remote_supported_features_command = {
462ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_REMOTE_SUPPORTED_FEATURES_COMMAND, "H"
4638b22c04dSMatthias Ringwald };
4648b22c04dSMatthias Ringwald 
4658b22c04dSMatthias Ringwald /**
466d5057706SMatthias Ringwald * @param handle
467d5057706SMatthias Ringwald */
468d5057706SMatthias Ringwald const hci_cmd_t hci_read_remote_extended_features_command = {
469ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_REMOTE_EXTENDED_FEATURES_COMMAND, "H1"
470d5057706SMatthias Ringwald };
471d5057706SMatthias Ringwald 
472d5057706SMatthias Ringwald /**
4738b22c04dSMatthias Ringwald  * @param handle
4748b22c04dSMatthias Ringwald  */
4758b22c04dSMatthias Ringwald const hci_cmd_t hci_read_remote_version_information = {
476ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_REMOTE_VERSION_INFORMATION, "H"
47756042629SMatthias Ringwald };
47856042629SMatthias Ringwald 
47956042629SMatthias Ringwald /**
480a9941893SMatthias Ringwald  * @param handle
481a9941893SMatthias Ringwald  */
482a9941893SMatthias Ringwald const hci_cmd_t hci_read_clock_offset = {
483a9941893SMatthias Ringwald         HCI_OPCODE_HCI_READ_CLOCK_OFFSET, "H"
484a9941893SMatthias Ringwald };
485a9941893SMatthias Ringwald 
486a9941893SMatthias Ringwald /**
48756042629SMatthias Ringwald  * @param handle
48856042629SMatthias Ringwald  * @param transmit_bandwidth 8000(64kbps)
48956042629SMatthias Ringwald  * @param receive_bandwidth  8000(64kbps)
49056042629SMatthias Ringwald  * @param max_latency        >= 7ms for eSCO, 0xFFFF do not care
49156042629SMatthias Ringwald  * @param voice_settings     e.g. CVSD, Input Coding: Linear, Input Data Format: 2’s complement, data 16bit: 00011000000 == 0x60
49256042629SMatthias Ringwald  * @param retransmission_effort  e.g. 0xFF do not care
49356042629SMatthias Ringwald  * @param packet_type        at least EV3 for eSCO
49456042629SMatthias Ringwald  */
49556042629SMatthias Ringwald const hci_cmd_t hci_setup_synchronous_connection = {
496ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_SETUP_SYNCHRONOUS_CONNECTION, "H442212"
49756042629SMatthias Ringwald };
49856042629SMatthias Ringwald 
49956042629SMatthias Ringwald /**
50056042629SMatthias Ringwald  * @param bd_addr
50156042629SMatthias Ringwald  * @param transmit_bandwidth
50256042629SMatthias Ringwald  * @param receive_bandwidth
50356042629SMatthias Ringwald  * @param max_latency
50456042629SMatthias Ringwald  * @param voice_settings
50556042629SMatthias Ringwald  * @param retransmission_effort
50656042629SMatthias Ringwald  * @param packet_type
50756042629SMatthias Ringwald  */
50856042629SMatthias Ringwald const hci_cmd_t hci_accept_synchronous_connection = {
509ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_ACCEPT_SYNCHRONOUS_CONNECTION, "B442212"
51056042629SMatthias Ringwald };
51156042629SMatthias Ringwald 
51256042629SMatthias Ringwald /**
51356042629SMatthias Ringwald  * @param bd_addr
51456042629SMatthias Ringwald  * @param IO_capability
51556042629SMatthias Ringwald  * @param OOB_data_present
51656042629SMatthias Ringwald  * @param authentication_requirements
51756042629SMatthias Ringwald  */
51856042629SMatthias Ringwald const hci_cmd_t hci_io_capability_request_reply = {
519ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_IO_CAPABILITY_REQUEST_REPLY, "B111"
52056042629SMatthias Ringwald };
52156042629SMatthias Ringwald 
52256042629SMatthias Ringwald /**
52356042629SMatthias Ringwald  * @param bd_addr
52456042629SMatthias Ringwald  */
52556042629SMatthias Ringwald const hci_cmd_t hci_user_confirmation_request_reply = {
526ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_USER_CONFIRMATION_REQUEST_REPLY, "B"
52756042629SMatthias Ringwald };
52856042629SMatthias Ringwald 
52956042629SMatthias Ringwald /**
53056042629SMatthias Ringwald  * @param bd_addr
53156042629SMatthias Ringwald  */
53256042629SMatthias Ringwald const hci_cmd_t hci_user_confirmation_request_negative_reply = {
533ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_USER_CONFIRMATION_REQUEST_NEGATIVE_REPLY, "B"
53456042629SMatthias Ringwald };
53556042629SMatthias Ringwald 
53656042629SMatthias Ringwald /**
53756042629SMatthias Ringwald  * @param bd_addr
53856042629SMatthias Ringwald  * @param numeric_value
53956042629SMatthias Ringwald  */
54056042629SMatthias Ringwald const hci_cmd_t hci_user_passkey_request_reply = {
541ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_USER_PASSKEY_REQUEST_REPLY, "B4"
54256042629SMatthias Ringwald };
54356042629SMatthias Ringwald 
54456042629SMatthias Ringwald /**
54556042629SMatthias Ringwald  * @param bd_addr
54656042629SMatthias Ringwald  */
54756042629SMatthias Ringwald const hci_cmd_t hci_user_passkey_request_negative_reply = {
548ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_USER_PASSKEY_REQUEST_NEGATIVE_REPLY, "B"
54956042629SMatthias Ringwald };
55056042629SMatthias Ringwald 
55156042629SMatthias Ringwald /**
55256042629SMatthias Ringwald  * @param bd_addr
553237daac5SMatthias Ringwald  * @param c Simple Pairing Hash C
554237daac5SMatthias Ringwald  * @param r Simple Pairing Randomizer R
555237daac5SMatthias Ringwald  */
556237daac5SMatthias Ringwald const hci_cmd_t hci_remote_oob_data_request_reply = {
557bb75dd7dSMatthias Ringwald     HCI_OPCODE_HCI_REMOTE_OOB_DATA_REQUEST_REPLY, "BKK"
558237daac5SMatthias Ringwald };
559237daac5SMatthias Ringwald 
560237daac5SMatthias Ringwald /**
561237daac5SMatthias Ringwald  * @param bd_addr
56256042629SMatthias Ringwald  */
56356042629SMatthias Ringwald const hci_cmd_t hci_remote_oob_data_request_negative_reply = {
564ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_REMOTE_OOB_DATA_REQUEST_NEGATIVE_REPLY, "B"
56556042629SMatthias Ringwald };
56656042629SMatthias Ringwald 
56756042629SMatthias Ringwald /**
56856042629SMatthias Ringwald  * @param bd_addr
56956042629SMatthias Ringwald  * @param reason (Part D, Error codes)
57056042629SMatthias Ringwald  */
57156042629SMatthias Ringwald const hci_cmd_t hci_io_capability_request_negative_reply = {
572ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_IO_CAPABILITY_REQUEST_NEGATIVE_REPLY, "B1"
57356042629SMatthias Ringwald };
57456042629SMatthias Ringwald 
57556042629SMatthias Ringwald /**
57656042629SMatthias Ringwald  * @param handle
57756042629SMatthias Ringwald  * @param transmit_bandwidth
57856042629SMatthias Ringwald  * @param receive_bandwidth
57956042629SMatthias Ringwald  * @param transmit_coding_format_type
58056042629SMatthias Ringwald  * @param transmit_coding_format_company
58156042629SMatthias Ringwald  * @param transmit_coding_format_codec
58256042629SMatthias Ringwald  * @param receive_coding_format_type
58356042629SMatthias Ringwald  * @param receive_coding_format_company
58456042629SMatthias Ringwald  * @param receive_coding_format_codec
58556042629SMatthias Ringwald  * @param transmit_coding_frame_size
58656042629SMatthias Ringwald  * @param receive_coding_frame_size
58756042629SMatthias Ringwald  * @param input_bandwidth
58856042629SMatthias Ringwald  * @param output_bandwidth
58956042629SMatthias Ringwald  * @param input_coding_format_type
59056042629SMatthias Ringwald  * @param input_coding_format_company
59156042629SMatthias Ringwald  * @param input_coding_format_codec
59256042629SMatthias Ringwald  * @param output_coding_format_type
59356042629SMatthias Ringwald  * @param output_coding_format_company
59456042629SMatthias Ringwald  * @param output_coding_format_codec
59556042629SMatthias Ringwald  * @param input_coded_data_size
59656042629SMatthias Ringwald  * @param outupt_coded_data_size
59756042629SMatthias Ringwald  * @param input_pcm_data_format
59856042629SMatthias Ringwald  * @param output_pcm_data_format
59956042629SMatthias Ringwald  * @param input_pcm_sample_payload_msb_position
60056042629SMatthias Ringwald  * @param output_pcm_sample_payload_msb_position
60156042629SMatthias Ringwald  * @param input_data_path
60256042629SMatthias Ringwald  * @param output_data_path
60356042629SMatthias Ringwald  * @param input_transport_unit_size
60456042629SMatthias Ringwald  * @param output_transport_unit_size
60556042629SMatthias Ringwald  * @param max_latency
60656042629SMatthias Ringwald  * @param packet_type
60756042629SMatthias Ringwald  * @param retransmission_effort
60856042629SMatthias Ringwald  */
60956042629SMatthias Ringwald const hci_cmd_t hci_enhanced_setup_synchronous_connection = {
610ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_ENHANCED_SETUP_SYNCHRONOUS_CONNECTION, "H4412212222441221222211111111221"
61156042629SMatthias Ringwald };
61256042629SMatthias Ringwald 
61356042629SMatthias Ringwald /**
61456042629SMatthias Ringwald  * @param bd_addr
61556042629SMatthias Ringwald  * @param transmit_bandwidth
61656042629SMatthias Ringwald  * @param receive_bandwidth
61756042629SMatthias Ringwald  * @param transmit_coding_format_type
61856042629SMatthias Ringwald  * @param transmit_coding_format_company
61956042629SMatthias Ringwald  * @param transmit_coding_format_codec
62056042629SMatthias Ringwald  * @param receive_coding_format_type
62156042629SMatthias Ringwald  * @param receive_coding_format_company
62256042629SMatthias Ringwald  * @param receive_coding_format_codec
62356042629SMatthias Ringwald  * @param transmit_coding_frame_size
62456042629SMatthias Ringwald  * @param receive_coding_frame_size
62556042629SMatthias Ringwald  * @param input_bandwidth
62656042629SMatthias Ringwald  * @param output_bandwidth
62756042629SMatthias Ringwald  * @param input_coding_format_type
62856042629SMatthias Ringwald  * @param input_coding_format_company
62956042629SMatthias Ringwald  * @param input_coding_format_codec
63056042629SMatthias Ringwald  * @param output_coding_format_type
63156042629SMatthias Ringwald  * @param output_coding_format_company
63256042629SMatthias Ringwald  * @param output_coding_format_codec
63356042629SMatthias Ringwald  * @param input_coded_data_size
63456042629SMatthias Ringwald  * @param outupt_coded_data_size
63556042629SMatthias Ringwald  * @param input_pcm_data_format
63656042629SMatthias Ringwald  * @param output_pcm_data_format
63756042629SMatthias Ringwald  * @param input_pcm_sample_payload_msb_position
63856042629SMatthias Ringwald  * @param output_pcm_sample_payload_msb_position
63956042629SMatthias Ringwald  * @param input_data_path
64056042629SMatthias Ringwald  * @param output_data_path
64156042629SMatthias Ringwald  * @param input_transport_unit_size
64256042629SMatthias Ringwald  * @param output_transport_unit_size
64356042629SMatthias Ringwald  * @param max_latency
64456042629SMatthias Ringwald  * @param packet_type
64556042629SMatthias Ringwald  * @param retransmission_effort
64656042629SMatthias Ringwald  */
64756042629SMatthias Ringwald const hci_cmd_t hci_enhanced_accept_synchronous_connection = {
648ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_ENHANCED_ACCEPT_SYNCHRONOUS_CONNECTION, "B4412212222441221222211111111221"
64956042629SMatthias Ringwald };
65056042629SMatthias Ringwald 
65156042629SMatthias Ringwald /**
652bb75dd7dSMatthias Ringwald  * @param bd_addr
653bb75dd7dSMatthias Ringwald  * @param c_192 Simple Pairing Hash C derived from P-192 public key
654bb75dd7dSMatthias Ringwald  * @param r_192 Simple Pairing Randomizer derived from P-192 public key
655bb75dd7dSMatthias Ringwald  * @param c_256 Simple Pairing Hash C derived from P-256 public key
656bb75dd7dSMatthias Ringwald  * @param r_256 Simple Pairing Randomizer derived from P-256 public key
657bb75dd7dSMatthias Ringwald  */
658bb75dd7dSMatthias Ringwald const hci_cmd_t hci_remote_oob_extended_data_request_reply = {
659bb75dd7dSMatthias Ringwald     HCI_OPCODE_HCI_REMOTE_OOB_EXTENDED_DATA_REQUEST_REPLY, "BKKKK"
660bb75dd7dSMatthias Ringwald };
661bb75dd7dSMatthias Ringwald 
662bb75dd7dSMatthias Ringwald /**
66356042629SMatthias Ringwald  *  Link Policy Commands
66456042629SMatthias Ringwald  */
66556042629SMatthias Ringwald 
66656042629SMatthias Ringwald /**
66756042629SMatthias Ringwald  * @param handle
66829ae3d7dSMatthias Ringwald  * @param hold_mode_max_interval * 0.625 ms,  range: 0x0002..0xFFFE; only even values are valid.
66929ae3d7dSMatthias Ringwald  * @param hold_mode_min_interval * 0.625 ms,  range: 0x0002..0xFFFE; only even values are valid.
67029ae3d7dSMatthias Ringwald  */
67129ae3d7dSMatthias Ringwald const hci_cmd_t hci_hold_mode = {
67229ae3d7dSMatthias Ringwald         HCI_OPCODE_HCI_HOLD_MODE, "H22"
67329ae3d7dSMatthias Ringwald };
67429ae3d7dSMatthias Ringwald 
67529ae3d7dSMatthias Ringwald /**
67629ae3d7dSMatthias Ringwald  * @param handle
67756042629SMatthias Ringwald  * @param sniff_max_interval
67856042629SMatthias Ringwald  * @param sniff_min_interval
67956042629SMatthias Ringwald  * @param sniff_attempt
68056042629SMatthias Ringwald  * @param sniff_timeout
68156042629SMatthias Ringwald  */
68256042629SMatthias Ringwald const hci_cmd_t hci_sniff_mode = {
683ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_SNIFF_MODE, "H2222"
68456042629SMatthias Ringwald };
68556042629SMatthias Ringwald 
68656042629SMatthias Ringwald /**
68756042629SMatthias Ringwald  * @param handle
6887cd21895SMatthias Ringwald  */
6897cd21895SMatthias Ringwald const hci_cmd_t hci_exit_sniff_mode = {
690ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_EXIT_SNIFF_MODE, "H"
6917cd21895SMatthias Ringwald };
6927cd21895SMatthias Ringwald 
6937cd21895SMatthias Ringwald /**
6946f351188SMatthias Ringwald  * @note  Removed in Bluetooth Core v5.0
6956f351188SMatthias Ringwald  * @param handle
6966f351188SMatthias Ringwald  * @param beacon_max_interval * 0.625 ms,  range: 0x000E..0xFFFE; only even values are valid.
6976f351188SMatthias Ringwald  * @param beacon_max_interval * 0.625 ms,  range: 0x000E..0xFFFE; only even values are valid.
6986f351188SMatthias Ringwald  */
6996f351188SMatthias Ringwald const hci_cmd_t hci_park_state = {
7006f351188SMatthias Ringwald         HCI_OPCODE_HCI_PARK_STATE, "H22"
7016f351188SMatthias Ringwald };
7026f351188SMatthias Ringwald 
7036f351188SMatthias Ringwald /**
7046f351188SMatthias Ringwald  * @note  Removed in Bluetooth Core v5.0
7056f351188SMatthias Ringwald  * @param handle
7066f351188SMatthias Ringwald  */
7076f351188SMatthias Ringwald const hci_cmd_t hci_exit_park_state = {
7086f351188SMatthias Ringwald         HCI_OPCODE_HCI_EXIT_PARK_STATE, "H"
7096f351188SMatthias Ringwald };
7106f351188SMatthias Ringwald 
7116f351188SMatthias Ringwald /**
7127cd21895SMatthias Ringwald  * @param handle
71356042629SMatthias Ringwald  * @param flags
71456042629SMatthias Ringwald  * @param service_type
71556042629SMatthias Ringwald  * @param token_rate (bytes/s)
71656042629SMatthias Ringwald  * @param peak_bandwith (bytes/s)
71756042629SMatthias Ringwald  * @param latency (us)
71856042629SMatthias Ringwald  * @param delay_variation (us)
71956042629SMatthias Ringwald  */
72056042629SMatthias Ringwald const hci_cmd_t hci_qos_setup = {
721ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_QOS_SETUP, "H114444"
72256042629SMatthias Ringwald };
72356042629SMatthias Ringwald 
72456042629SMatthias Ringwald /**
72556042629SMatthias Ringwald  * @param handle
72656042629SMatthias Ringwald  */
72756042629SMatthias Ringwald const hci_cmd_t hci_role_discovery = {
728ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_ROLE_DISCOVERY, "H"
72956042629SMatthias Ringwald };
73056042629SMatthias Ringwald 
73156042629SMatthias Ringwald /**
73256042629SMatthias Ringwald  * @param bd_addr
73356042629SMatthias Ringwald  * @param role (0=master,1=slave)
73456042629SMatthias Ringwald  */
73556042629SMatthias Ringwald const hci_cmd_t hci_switch_role_command= {
736ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_SWITCH_ROLE_COMMAND, "B1"
73756042629SMatthias Ringwald };
73856042629SMatthias Ringwald 
73956042629SMatthias Ringwald /**
74056042629SMatthias Ringwald  * @param handle
74156042629SMatthias Ringwald  */
74256042629SMatthias Ringwald const hci_cmd_t hci_read_link_policy_settings = {
743ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LINK_POLICY_SETTINGS, "H"
74456042629SMatthias Ringwald };
74556042629SMatthias Ringwald 
74656042629SMatthias Ringwald /**
74756042629SMatthias Ringwald  * @param handle
74856042629SMatthias Ringwald  * @param settings
74956042629SMatthias Ringwald  */
75056042629SMatthias Ringwald const hci_cmd_t hci_write_link_policy_settings = {
751ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_LINK_POLICY_SETTINGS, "H2"
75256042629SMatthias Ringwald };
75356042629SMatthias Ringwald 
754c4c88f1bSJakob Krantz /**
75532e2f27fSMatthias Ringwald  * @param handle
75632e2f27fSMatthias Ringwald  * @param max_latency
75732e2f27fSMatthias Ringwald  * @param min_remote_timeout
75832e2f27fSMatthias Ringwald  * @param min_local_timeout
75932e2f27fSMatthias Ringwald  */
76032e2f27fSMatthias Ringwald const hci_cmd_t hci_sniff_subrating = {
76150fe3a99SMilanka Ringwald     HCI_OPCODE_HCI_SNIFF_SUBRATING, "H222"
76232e2f27fSMatthias Ringwald };
76332e2f27fSMatthias Ringwald 
76432e2f27fSMatthias Ringwald /**
765c4c88f1bSJakob Krantz  * @param policy
766c4c88f1bSJakob Krantz  */
76753138e7aSMatthias Ringwald const hci_cmd_t hci_write_default_link_policy_setting = {
768ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_DEFAULT_LINK_POLICY_SETTING, "2"
769c4c88f1bSJakob Krantz };
770c4c88f1bSJakob Krantz 
771733a7793SMatthias Ringwald /**
772733a7793SMatthias Ringwald  * @param handle
773733a7793SMatthias Ringwald  * @param unused
774733a7793SMatthias Ringwald  * @param flow_direction
775733a7793SMatthias Ringwald  * @param service_type
776733a7793SMatthias Ringwald  * @param token_rate
777733a7793SMatthias Ringwald  * @param token_bucket_size
778733a7793SMatthias Ringwald  * @param peak_bandwidth
779733a7793SMatthias Ringwald  * @param access_latency
780733a7793SMatthias Ringwald  */
781733a7793SMatthias Ringwald const hci_cmd_t hci_flow_specification = {
782733a7793SMatthias Ringwald     HCI_OPCODE_HCI_FLOW_SPECIFICATION, "H1114444"
783733a7793SMatthias Ringwald };
784733a7793SMatthias Ringwald 
78556042629SMatthias Ringwald 
78656042629SMatthias Ringwald /**
78756042629SMatthias Ringwald  *  Controller & Baseband Commands
78856042629SMatthias Ringwald  */
78956042629SMatthias Ringwald 
7909119d792SMilanka Ringwald 
79156042629SMatthias Ringwald /**
792ff7d1758SMatthias Ringwald  * @param event_mask_lower_octets
79356042629SMatthias Ringwald  * @param event_mask_higher_octets
79456042629SMatthias Ringwald  */
79556042629SMatthias Ringwald const hci_cmd_t hci_set_event_mask = {
796ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_SET_EVENT_MASK, "44"
79756042629SMatthias Ringwald };
79856042629SMatthias Ringwald 
79956042629SMatthias Ringwald /**
80056042629SMatthias Ringwald  */
80156042629SMatthias Ringwald const hci_cmd_t hci_reset = {
802ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_RESET, ""
80356042629SMatthias Ringwald };
80456042629SMatthias Ringwald 
80556042629SMatthias Ringwald /**
806e49d496aSMatthias Ringwald  * @param handle
807e49d496aSMatthias Ringwald  */
808e49d496aSMatthias Ringwald const hci_cmd_t hci_flush = {
809ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_FLUSH, "H"
8109af39d9fSMatthias Ringwald };
8119af39d9fSMatthias Ringwald 
8129af39d9fSMatthias Ringwald /**
8139af39d9fSMatthias Ringwald  * @param handle
8149af39d9fSMatthias Ringwald  */
8159af39d9fSMatthias Ringwald const hci_cmd_t hci_read_pin_type = {
816ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_PIN_TYPE, ""
8179af39d9fSMatthias Ringwald };
8189af39d9fSMatthias Ringwald 
8199af39d9fSMatthias Ringwald /**
8209af39d9fSMatthias Ringwald  * @param handle
8219af39d9fSMatthias Ringwald  */
8229af39d9fSMatthias Ringwald const hci_cmd_t hci_write_pin_type = {
823ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_PIN_TYPE, "1"
824e49d496aSMatthias Ringwald };
825e49d496aSMatthias Ringwald 
826e49d496aSMatthias Ringwald /**
82756042629SMatthias Ringwald  * @param bd_addr
82856042629SMatthias Ringwald  * @param delete_all_flags
82956042629SMatthias Ringwald  */
83056042629SMatthias Ringwald const hci_cmd_t hci_delete_stored_link_key = {
831ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_DELETE_STORED_LINK_KEY, "B1"
83256042629SMatthias Ringwald };
83356042629SMatthias Ringwald 
834f9f2075cSMatthias Ringwald #ifdef ENABLE_CLASSIC
83556042629SMatthias Ringwald /**
83656042629SMatthias Ringwald  * @param local_name (UTF-8, Null Terminated, max 248 octets)
83756042629SMatthias Ringwald  */
83856042629SMatthias Ringwald const hci_cmd_t hci_write_local_name = {
839ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_LOCAL_NAME, "N"
84056042629SMatthias Ringwald };
841f9f2075cSMatthias Ringwald #endif
84256042629SMatthias Ringwald 
84356042629SMatthias Ringwald /**
844e90bae01SMatthias Ringwald  */
845e90bae01SMatthias Ringwald const hci_cmd_t hci_read_local_name = {
846ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LOCAL_NAME, ""
847e90bae01SMatthias Ringwald };
848e90bae01SMatthias Ringwald 
849e90bae01SMatthias Ringwald /**
850195e82f3Sskoperst  */
851195e82f3Sskoperst const hci_cmd_t hci_read_page_timeout = {
852ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_PAGE_TIMEOUT, ""
853195e82f3Sskoperst };
854195e82f3Sskoperst 
855195e82f3Sskoperst /**
85656042629SMatthias Ringwald  * @param page_timeout (* 0.625 ms)
85756042629SMatthias Ringwald  */
85856042629SMatthias Ringwald const hci_cmd_t hci_write_page_timeout = {
859ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_PAGE_TIMEOUT, "2"
86056042629SMatthias Ringwald };
86156042629SMatthias Ringwald 
86256042629SMatthias Ringwald /**
8634eac2391SMatthias Ringwald  * @param scan_enable (no, inq, page, inq+page)
8644eac2391SMatthias Ringwald  */
8654eac2391SMatthias Ringwald const hci_cmd_t hci_write_scan_enable = {
866ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_SCAN_ENABLE, "1"
8674eac2391SMatthias Ringwald };
8684eac2391SMatthias Ringwald 
8694eac2391SMatthias Ringwald /**
870195e82f3Sskoperst  */
871195e82f3Sskoperst const hci_cmd_t hci_read_page_scan_activity = {
872ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_PAGE_SCAN_ACTIVITY, ""
873195e82f3Sskoperst };
874195e82f3Sskoperst 
875195e82f3Sskoperst /**
876195e82f3Sskoperst  * @param page_scan_interval (* 0.625 ms)
877195e82f3Sskoperst  * @param page_scan_window (* 0.625 ms, must be <= page_scan_interval)
878195e82f3Sskoperst  */
879195e82f3Sskoperst const hci_cmd_t hci_write_page_scan_activity = {
880ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_PAGE_SCAN_ACTIVITY, "22"
881195e82f3Sskoperst };
882195e82f3Sskoperst 
883195e82f3Sskoperst /**
88456042629SMatthias Ringwald  */
8854eac2391SMatthias Ringwald const hci_cmd_t hci_read_inquiry_scan_activity = {
886ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_INQUIRY_SCAN_ACTIVITY, ""
8874eac2391SMatthias Ringwald };
8884eac2391SMatthias Ringwald 
8894eac2391SMatthias Ringwald /**
8904eac2391SMatthias Ringwald  * @param inquiry_scan_interval (* 0.625 ms)
8914eac2391SMatthias Ringwald  * @param inquiry_scan_window (* 0.625 ms, must be <= inquiry_scan_interval)
8924eac2391SMatthias Ringwald  */
8934eac2391SMatthias Ringwald const hci_cmd_t hci_write_inquiry_scan_activity = {
894ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_INQUIRY_SCAN_ACTIVITY, "22"
89556042629SMatthias Ringwald };
89656042629SMatthias Ringwald 
89756042629SMatthias Ringwald /**
89856042629SMatthias Ringwald  * @param authentication_enable
89956042629SMatthias Ringwald  */
90056042629SMatthias Ringwald const hci_cmd_t hci_write_authentication_enable = {
901ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_AUTHENTICATION_ENABLE, "1"
90256042629SMatthias Ringwald };
90356042629SMatthias Ringwald 
90456042629SMatthias Ringwald /**
90539bcce03SMatthias Ringwald  * @param handle
90639bcce03SMatthias Ringwald  * @param timeout, max 0x07FF
90739bcce03SMatthias Ringwald  */
90839bcce03SMatthias Ringwald const hci_cmd_t hci_write_automatic_flush_timeout = {
90939bcce03SMatthias Ringwald         HCI_OPCODE_HCI_WRITE_AUTOMATIC_FLUSH_TIMEOUT, "H2"
91039bcce03SMatthias Ringwald };
91139bcce03SMatthias Ringwald 
91239bcce03SMatthias Ringwald /**
91356042629SMatthias Ringwald  * @param class_of_device
91456042629SMatthias Ringwald  */
91556042629SMatthias Ringwald const hci_cmd_t hci_write_class_of_device = {
916ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_CLASS_OF_DEVICE, "3"
91756042629SMatthias Ringwald };
91856042629SMatthias Ringwald 
91956042629SMatthias Ringwald /**
92056042629SMatthias Ringwald  */
92156042629SMatthias Ringwald const hci_cmd_t hci_read_num_broadcast_retransmissions = {
922ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_NUM_BROADCAST_RETRANSMISSIONS, ""
92356042629SMatthias Ringwald };
92456042629SMatthias Ringwald 
92556042629SMatthias Ringwald /**
92656042629SMatthias Ringwald  * @param num_broadcast_retransmissions (e.g. 0 for a single broadcast)
92756042629SMatthias Ringwald  */
92856042629SMatthias Ringwald const hci_cmd_t hci_write_num_broadcast_retransmissions = {
929ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_NUM_BROADCAST_RETRANSMISSIONS, "1"
93056042629SMatthias Ringwald };
93156042629SMatthias Ringwald 
93256042629SMatthias Ringwald /**
93344751e25SMatthias Ringwald  * @param connection_handle
93444751e25SMatthias Ringwald  * @param type 0 = current transmit level, 1 = max transmit level
93544751e25SMatthias Ringwald  */
93644751e25SMatthias Ringwald const hci_cmd_t hci_read_transmit_power_level = {
9372ea455e1SMatthias Ringwald     HCI_OPCODE_HCI_READ_TRANSMIT_POWER_LEVEL, "H1"
93844751e25SMatthias Ringwald };
93944751e25SMatthias Ringwald 
94044751e25SMatthias Ringwald /**
94156042629SMatthias Ringwald  * @param synchronous_flow_control_enable - if yes, num completed packet everts are sent for SCO packets
94256042629SMatthias Ringwald  */
94356042629SMatthias Ringwald const hci_cmd_t hci_write_synchronous_flow_control_enable = {
944ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_SYNCHRONOUS_FLOW_CONTROL_ENABLE, "1"
94556042629SMatthias Ringwald };
94656042629SMatthias Ringwald 
9472b838201SMatthias Ringwald #ifdef ENABLE_HCI_CONTROLLER_TO_HOST_FLOW_CONTROL
9482b838201SMatthias Ringwald 
9492b838201SMatthias Ringwald /**
9502b838201SMatthias Ringwald  * @param flow_control_enable - 0: off, 1: ACL only, 2: SCO only, 3: ACL + SCO
9512b838201SMatthias Ringwald  */
9522b838201SMatthias Ringwald const hci_cmd_t hci_set_controller_to_host_flow_control = {
953ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_SET_CONTROLLER_TO_HOST_FLOW_CONTROL, "1"
9542b838201SMatthias Ringwald };
9552b838201SMatthias Ringwald 
95656042629SMatthias Ringwald /**
95756042629SMatthias Ringwald  * @param host_acl_data_packet_length
95856042629SMatthias Ringwald  * @param host_synchronous_data_packet_length
95956042629SMatthias Ringwald  * @param host_total_num_acl_data_packets
96056042629SMatthias Ringwald  * @param host_total_num_synchronous_data_packets
96156042629SMatthias Ringwald  */
96256042629SMatthias Ringwald const hci_cmd_t hci_host_buffer_size = {
963ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_HOST_BUFFER_SIZE, "2122"
96456042629SMatthias Ringwald };
96556042629SMatthias Ringwald 
9669119d792SMilanka Ringwald 
9672b838201SMatthias Ringwald #if 0
9682b838201SMatthias Ringwald //
9692b838201SMatthias Ringwald // command sent manually sent by hci_host_num_completed_packets
9702b838201SMatthias Ringwald //
9712b838201SMatthias Ringwald /**
9722b838201SMatthias Ringwald  * @note only single handle supported by BTstack command generator
9732b838201SMatthias Ringwald  * @param number_of_handles must be 1
9742b838201SMatthias Ringwald  * @param connection_handle
9752b838201SMatthias Ringwald  * @param host_num_of_completed_packets for the given connection handle
9762b838201SMatthias Ringwald  */
9772b838201SMatthias Ringwald const hci_cmd_t hci_host_number_of_completed_packets = {
978ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_HOST_NUMBER_OF_COMPLETED_PACKETS, "1H2"
9792b838201SMatthias Ringwald };
9802b838201SMatthias Ringwald #endif
9812b838201SMatthias Ringwald 
9822b838201SMatthias Ringwald #endif
9832b838201SMatthias Ringwald 
98456042629SMatthias Ringwald /**
98556042629SMatthias Ringwald  * @param handle
98656042629SMatthias Ringwald  */
98756042629SMatthias Ringwald const hci_cmd_t hci_read_link_supervision_timeout = {
988ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LINK_SUPERVISION_TIMEOUT, "H"
98956042629SMatthias Ringwald };
99056042629SMatthias Ringwald 
99156042629SMatthias Ringwald /**
99256042629SMatthias Ringwald  * @param handle
99356042629SMatthias Ringwald  * @param timeout (0x0001 - 0xFFFF Time -> Range: 0.625ms - 40.9 sec)
99456042629SMatthias Ringwald  */
99556042629SMatthias Ringwald const hci_cmd_t hci_write_link_supervision_timeout = {
996ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_LINK_SUPERVISION_TIMEOUT, "H2"
99756042629SMatthias Ringwald };
99856042629SMatthias Ringwald 
99956042629SMatthias Ringwald /**
10009119d792SMilanka Ringwald  * @param num_current_iac must be 2
10019119d792SMilanka Ringwald  * @param iac_lap1
10029119d792SMilanka Ringwald  * @param iac_lap2
10039119d792SMilanka Ringwald  */
10049119d792SMilanka Ringwald const hci_cmd_t hci_write_current_iac_lap_two_iacs = {
1005ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_CURRENT_IAC_LAP_TWO_IACS, "133"
10069119d792SMilanka Ringwald };
10079119d792SMilanka Ringwald 
10089119d792SMilanka Ringwald /**
10095769fd77SMatthias Ringwald  * @param inquiry_scan_type (0x00 = standard, 0x01 = interlaced)
10105769fd77SMatthias Ringwald  */
10115769fd77SMatthias Ringwald const hci_cmd_t hci_write_inquiry_scan_type = {
10125769fd77SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_INQUIRY_SCAN_TYPE,  "1"
10135769fd77SMatthias Ringwald };
10145769fd77SMatthias Ringwald 
10155769fd77SMatthias Ringwald /**
101656042629SMatthias Ringwald  * @param inquiry_mode (0x00 = standard, 0x01 = with RSSI, 0x02 = extended)
101756042629SMatthias Ringwald  */
101856042629SMatthias Ringwald const hci_cmd_t hci_write_inquiry_mode = {
1019ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_INQUIRY_MODE, "1"
102056042629SMatthias Ringwald };
102156042629SMatthias Ringwald 
102256042629SMatthias Ringwald /**
10235769fd77SMatthias Ringwald  * @param page_scan_type (0x00 = standard, 0x01 = interlaced)
10245769fd77SMatthias Ringwald  */
10255769fd77SMatthias Ringwald const hci_cmd_t hci_write_page_scan_type = {
10265769fd77SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_PAGE_SCAN_TYPE, "1"
10275769fd77SMatthias Ringwald };
10285769fd77SMatthias Ringwald 
10295769fd77SMatthias Ringwald /**
103056042629SMatthias Ringwald  * @param fec_required
103156042629SMatthias Ringwald  * @param exstended_inquiry_response
103256042629SMatthias Ringwald  */
103356042629SMatthias Ringwald const hci_cmd_t hci_write_extended_inquiry_response = {
1034ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_EXTENDED_INQUIRY_RESPONSE, "1E"
103556042629SMatthias Ringwald };
103656042629SMatthias Ringwald 
103756042629SMatthias Ringwald /**
103856042629SMatthias Ringwald  * @param mode (0 = off, 1 = on)
103956042629SMatthias Ringwald  */
104056042629SMatthias Ringwald const hci_cmd_t hci_write_simple_pairing_mode = {
1041ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_SIMPLE_PAIRING_MODE, "1"
104256042629SMatthias Ringwald };
104356042629SMatthias Ringwald 
1044237daac5SMatthias Ringwald /**
1045237daac5SMatthias Ringwald  */
1046237daac5SMatthias Ringwald const hci_cmd_t hci_read_local_oob_data = {
1047ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LOCAL_OOB_DATA, ""
1048237daac5SMatthias Ringwald     // return status, C, R
1049237daac5SMatthias Ringwald };
1050483c5078SMatthias Ringwald 
1051483c5078SMatthias Ringwald /**
1052c9c0cbe9SAndrey Fominykh  */
1053c9c0cbe9SAndrey Fominykh const hci_cmd_t hci_read_inquiry_response_transmit_power_level = {
1054c9c0cbe9SAndrey Fominykh     HCI_OPCODE_HCI_READ_INQUIRY_RESPONSE_TRANSMIT_POWER_LEVEL, ""
1055c9c0cbe9SAndrey Fominykh     // return status, pwr level
1056c9c0cbe9SAndrey Fominykh };
1057c9c0cbe9SAndrey Fominykh 
1058c9c0cbe9SAndrey Fominykh /**
1059c9c0cbe9SAndrey Fominykh  */
1060c9c0cbe9SAndrey Fominykh const hci_cmd_t hci_write_inquiry_transmit_power_level = {
1061c9c0cbe9SAndrey Fominykh     HCI_OPCODE_HCI_WRITE_INQUIRY_TRANSMIT_POWER_LEVEL, "1"
1062c9c0cbe9SAndrey Fominykh     // return status
1063c9c0cbe9SAndrey Fominykh };
1064c9c0cbe9SAndrey Fominykh 
1065c9c0cbe9SAndrey Fominykh /**
1066483c5078SMatthias Ringwald  * @param mode (0 = off, 1 = on)
1067483c5078SMatthias Ringwald  */
1068483c5078SMatthias Ringwald const hci_cmd_t hci_write_default_erroneous_data_reporting = {
1069ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_DEFAULT_ERRONEOUS_DATA_REPORTING, "1"
1070483c5078SMatthias Ringwald };
1071483c5078SMatthias Ringwald 
107256042629SMatthias Ringwald /**
1073ff7d1758SMatthias Ringwald  * @param event_mask_page_2_lower_octets
1074ff7d1758SMatthias Ringwald  * @param event_mask_page_2_higher_octets
1075ff7d1758SMatthias Ringwald  */
1076ff7d1758SMatthias Ringwald const hci_cmd_t hci_set_event_mask_2 = {
1077ff7d1758SMatthias Ringwald         HCI_OPCODE_HCI_SET_EVENT_MASK_2, "44"
1078ff7d1758SMatthias Ringwald };
1079ff7d1758SMatthias Ringwald 
1080ff7d1758SMatthias Ringwald /**
108156042629SMatthias Ringwald  */
108256042629SMatthias Ringwald const hci_cmd_t hci_read_le_host_supported = {
1083ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LE_HOST_SUPPORTED, ""
108456042629SMatthias Ringwald     // return: status, le supported host, simultaneous le host
108556042629SMatthias Ringwald };
108656042629SMatthias Ringwald 
108756042629SMatthias Ringwald /**
108856042629SMatthias Ringwald  * @param le_supported_host
108956042629SMatthias Ringwald  * @param simultaneous_le_host
109056042629SMatthias Ringwald  */
109156042629SMatthias Ringwald const hci_cmd_t hci_write_le_host_supported = {
1092ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_LE_HOST_SUPPORTED, "11"
109356042629SMatthias Ringwald     // return: status
109456042629SMatthias Ringwald };
109556042629SMatthias Ringwald 
109656042629SMatthias Ringwald /**
1097b002ae8cSMatthias Ringwald  * @param secure_connections_host_support
1098b002ae8cSMatthias Ringwald  */
1099b002ae8cSMatthias Ringwald const hci_cmd_t hci_write_secure_connections_host_support = {
1100ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_SECURE_CONNECTIONS_HOST_SUPPORT, "1"
1101b002ae8cSMatthias Ringwald     // return: status
1102b002ae8cSMatthias Ringwald };
1103b002ae8cSMatthias Ringwald 
1104b002ae8cSMatthias Ringwald /**
1105237daac5SMatthias Ringwald  */
1106bb75dd7dSMatthias Ringwald const hci_cmd_t hci_read_local_extended_oob_data = {
11071849becdSMatthias Ringwald     HCI_OPCODE_HCI_READ_LOCAL_EXTENDED_OOB_DATA, ""
1108237daac5SMatthias Ringwald     // return status, C_192, R_192, R_256, C_256
1109237daac5SMatthias Ringwald };
1110237daac5SMatthias Ringwald 
11116d2375e9SMatthias Ringwald /**
11126d2375e9SMatthias Ringwald  */
11136d2375e9SMatthias Ringwald const hci_cmd_t hci_read_extended_page_timeout = {
11146d2375e9SMatthias Ringwald     HCI_OPCODE_HCI_READ_EXTENDED_PAGE_TIMEOUT, ""
11156d2375e9SMatthias Ringwald     // return: status, extender page timeout
11166d2375e9SMatthias Ringwald };
11176d2375e9SMatthias Ringwald 
11186d2375e9SMatthias Ringwald /**
11196d2375e9SMatthias Ringwald  * @param extended_page_timeout
11206d2375e9SMatthias Ringwald  */
11216d2375e9SMatthias Ringwald const hci_cmd_t hci_write_extended_page_timeout = {
11226d2375e9SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_EXTENDED_PAGE_TIMEOUT, "2"
11236d2375e9SMatthias Ringwald     // return: status
11246d2375e9SMatthias Ringwald };
11256d2375e9SMatthias Ringwald 
11266d2375e9SMatthias Ringwald /**
11276d2375e9SMatthias Ringwald  */
11286d2375e9SMatthias Ringwald const hci_cmd_t hci_read_extended_inquiry_length = {
11296d2375e9SMatthias Ringwald     HCI_OPCODE_HCI_READ_EXTENDED_INQUIRY_LENGTH, ""
11306d2375e9SMatthias Ringwald     // return: status, extended_inquiry_length
11316d2375e9SMatthias Ringwald };
11326d2375e9SMatthias Ringwald 
11336d2375e9SMatthias Ringwald /**
11346d2375e9SMatthias Ringwald  * @param extended_inquiry_length
11356d2375e9SMatthias Ringwald  */
11366d2375e9SMatthias Ringwald const hci_cmd_t hci_write_extended_inquiry_length = {
11376d2375e9SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_EXTENDED_INQUIRY_LENGTH, "2"
11386d2375e9SMatthias Ringwald     // return: status
11396d2375e9SMatthias Ringwald };
11406d2375e9SMatthias Ringwald 
11416d2375e9SMatthias Ringwald /**
11426d2375e9SMatthias Ringwald  * @param interval
11436d2375e9SMatthias Ringwald  */
11446d2375e9SMatthias Ringwald const hci_cmd_t hci_set_ecosystem_base_interval = {
11456d2375e9SMatthias Ringwald     HCI_OPCODE_HCI_SET_ECOSYSTEM_BASE_INTERVAL, "2"
11466d2375e9SMatthias Ringwald     // return: status
11476d2375e9SMatthias Ringwald };
11486d2375e9SMatthias Ringwald 
11496d2375e9SMatthias Ringwald /**
11506d2375e9SMatthias Ringwald  * @param data_path_direction
11516d2375e9SMatthias Ringwald  * @param data_path_id
11526d2375e9SMatthias Ringwald  * @param vendor_specific_config_length
11536d2375e9SMatthias Ringwald  * @param vendor_specific_config
11546d2375e9SMatthias Ringwald  */
11556d2375e9SMatthias Ringwald const hci_cmd_t hci_configure_data_path = {
11566d2375e9SMatthias Ringwald     HCI_OPCODE_HCI_CONFIGURE_DATA_PATH, "11JV"
11576d2375e9SMatthias Ringwald     // return: status
11586d2375e9SMatthias Ringwald };
11596d2375e9SMatthias Ringwald 
11606d2375e9SMatthias Ringwald /**
11616d2375e9SMatthias Ringwald  * @param min_encryption_key_size
11626d2375e9SMatthias Ringwald  */
11636d2375e9SMatthias Ringwald const hci_cmd_t hci_set_min_encryption_key_size = {
11646d2375e9SMatthias Ringwald     HCI_OPCODE_HCI_SET_MIN_ENCRYPTION_KEY_SIZE, "1"
11656d2375e9SMatthias Ringwald     // return: status
11666d2375e9SMatthias Ringwald };
11676d2375e9SMatthias Ringwald 
1168237daac5SMatthias Ringwald 
1169237daac5SMatthias Ringwald /**
117056042629SMatthias Ringwald  * Testing Commands
117156042629SMatthias Ringwald  */
117256042629SMatthias Ringwald 
117356042629SMatthias Ringwald 
117456042629SMatthias Ringwald /**
117556042629SMatthias Ringwald  */
117656042629SMatthias Ringwald const hci_cmd_t hci_read_loopback_mode = {
1177ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LOOPBACK_MODE, ""
117856042629SMatthias Ringwald     // return: status, loopback mode (0 = off, 1 = local loopback, 2 = remote loopback)
117956042629SMatthias Ringwald };
118056042629SMatthias Ringwald 
118156042629SMatthias Ringwald /**
118256042629SMatthias Ringwald  * @param loopback_mode
118356042629SMatthias Ringwald  */
118456042629SMatthias Ringwald const hci_cmd_t hci_write_loopback_mode = {
1185ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_LOOPBACK_MODE, "1"
118656042629SMatthias Ringwald     // return: status
118756042629SMatthias Ringwald };
118856042629SMatthias Ringwald 
118984ca9bd8SMatthias Ringwald /**
119084ca9bd8SMatthias Ringwald  */
119184ca9bd8SMatthias Ringwald const hci_cmd_t hci_enable_device_under_test_mode = {
1192ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_ENABLE_DEVICE_UNDER_TEST_MODE, ""
119384ca9bd8SMatthias Ringwald     // return: status
119484ca9bd8SMatthias Ringwald };
119584ca9bd8SMatthias Ringwald 
119684ca9bd8SMatthias Ringwald /**
119784ca9bd8SMatthias Ringwald  * @param simple_pairing_debug_mode
119884ca9bd8SMatthias Ringwald  */
119984ca9bd8SMatthias Ringwald const hci_cmd_t hci_write_simple_pairing_debug_mode = {
1200ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_SIMPLE_PAIRING_DEBUG_MODE, "1"
120184ca9bd8SMatthias Ringwald     // return: status
120284ca9bd8SMatthias Ringwald };
120384ca9bd8SMatthias Ringwald 
120484ca9bd8SMatthias Ringwald /**
120584ca9bd8SMatthias Ringwald  * @param handle
120684ca9bd8SMatthias Ringwald  * @param dm1_acl_u_mode
120784ca9bd8SMatthias Ringwald  * @param esco_loopback_mode
120884ca9bd8SMatthias Ringwald  */
120984ca9bd8SMatthias Ringwald const hci_cmd_t hci_write_secure_connections_test_mode = {
1210ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_SECURE_CONNECTIONS_TEST_MODE, "H11"
121184ca9bd8SMatthias Ringwald     // return: status
121284ca9bd8SMatthias Ringwald };
121384ca9bd8SMatthias Ringwald 
121456042629SMatthias Ringwald 
121556042629SMatthias Ringwald /**
121656042629SMatthias Ringwald  * Informational Parameters
121756042629SMatthias Ringwald  */
121856042629SMatthias Ringwald 
121956042629SMatthias Ringwald const hci_cmd_t hci_read_local_version_information = {
1220ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LOCAL_VERSION_INFORMATION, ""
122156042629SMatthias Ringwald };
122256042629SMatthias Ringwald const hci_cmd_t hci_read_local_supported_commands = {
1223ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LOCAL_SUPPORTED_COMMANDS, ""
122456042629SMatthias Ringwald };
122556042629SMatthias Ringwald const hci_cmd_t hci_read_local_supported_features = {
1226ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LOCAL_SUPPORTED_FEATURES, ""
122756042629SMatthias Ringwald };
122856042629SMatthias Ringwald const hci_cmd_t hci_read_buffer_size = {
1229ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_BUFFER_SIZE, ""
123056042629SMatthias Ringwald };
123156042629SMatthias Ringwald const hci_cmd_t hci_read_bd_addr = {
1232ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_BD_ADDR, ""
123356042629SMatthias Ringwald };
123456042629SMatthias Ringwald 
123556042629SMatthias Ringwald /**
1236ebcec9d3SMatthias Ringwald  * Status Paramteers
123756042629SMatthias Ringwald  */
123856042629SMatthias Ringwald 
123956042629SMatthias Ringwald /**
124056042629SMatthias Ringwald  * @param handle
124156042629SMatthias Ringwald  */
1242ebcec9d3SMatthias Ringwald const hci_cmd_t hci_read_failed_contact_counter = {
1243ebcec9d3SMatthias Ringwald     HCI_OPCODE_HCI_READ_FAILED_CONTACT_COUNTER, "H"
1244ebcec9d3SMatthias Ringwald };
1245ebcec9d3SMatthias Ringwald 
1246ebcec9d3SMatthias Ringwald /**
1247ebcec9d3SMatthias Ringwald  * @param handle
1248ebcec9d3SMatthias Ringwald  */
1249ebcec9d3SMatthias Ringwald const hci_cmd_t hci_reset_failed_contact_counter = {
1250ebcec9d3SMatthias Ringwald     HCI_OPCODE_HCI_RESET_FAILED_CONTACT_COUNTER, "H"
1251ebcec9d3SMatthias Ringwald };
1252ebcec9d3SMatthias Ringwald 
1253ebcec9d3SMatthias Ringwald /**
1254ebcec9d3SMatthias Ringwald  * @param handle
1255ebcec9d3SMatthias Ringwald  */
1256ebcec9d3SMatthias Ringwald const hci_cmd_t hci_read_link_quality = {
1257ebcec9d3SMatthias Ringwald     HCI_OPCODE_HCI_READ_LINK_QUALITY, "H"
1258ebcec9d3SMatthias Ringwald };
1259ebcec9d3SMatthias Ringwald 
1260ebcec9d3SMatthias Ringwald /**
1261ebcec9d3SMatthias Ringwald  * @param handle
1262ebcec9d3SMatthias Ringwald  */
126356042629SMatthias Ringwald const hci_cmd_t hci_read_rssi = {
1264ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_RSSI, "H"
126556042629SMatthias Ringwald };
126656042629SMatthias Ringwald 
126797abfa24SMatthias Ringwald /**
126897abfa24SMatthias Ringwald  * @param handle
1269ebcec9d3SMatthias Ringwald  * @param which_clock
1270ebcec9d3SMatthias Ringwald  */
1271ebcec9d3SMatthias Ringwald const hci_cmd_t hci_read_clock = {
1272ebcec9d3SMatthias Ringwald     HCI_OPCODE_HCI_READ_CLOCK, "H1"
1273ebcec9d3SMatthias Ringwald };
1274ebcec9d3SMatthias Ringwald 
1275ebcec9d3SMatthias Ringwald /**
1276ebcec9d3SMatthias Ringwald  * @param handle
127797abfa24SMatthias Ringwald  */
127897abfa24SMatthias Ringwald const hci_cmd_t hci_read_encryption_key_size = {
1279ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_ENCRYPTION_KEY_SIZE, "H"
128097abfa24SMatthias Ringwald };
128156042629SMatthias Ringwald 
128256042629SMatthias Ringwald 
1283a9a4c409SMatthias Ringwald #ifdef ENABLE_BLE
128456042629SMatthias Ringwald /**
128556042629SMatthias Ringwald  * Low Energy Commands
128656042629SMatthias Ringwald  */
128756042629SMatthias Ringwald 
128856042629SMatthias Ringwald /**
128956042629SMatthias Ringwald  * @param event_mask_lower_octets
129056042629SMatthias Ringwald  * @param event_mask_higher_octets
129156042629SMatthias Ringwald  */
129256042629SMatthias Ringwald const hci_cmd_t hci_le_set_event_mask = {
1293ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_EVENT_MASK, "44"
129456042629SMatthias Ringwald     // return: status
129556042629SMatthias Ringwald };
129656042629SMatthias Ringwald 
129756042629SMatthias Ringwald const hci_cmd_t hci_le_read_buffer_size = {
1298ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_BUFFER_SIZE, ""
129956042629SMatthias Ringwald     // return: status, le acl data packet len (16), total num le acl data packets(8)
130056042629SMatthias Ringwald };
13010c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_local_supported_features = {
13020c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_LOCAL_SUPPORTED_FEATURES, ""
130356042629SMatthias Ringwald     // return: LE_Features See [Vol 6] Part B, Section 4.6
130456042629SMatthias Ringwald };
130556042629SMatthias Ringwald 
130656042629SMatthias Ringwald /**
130756042629SMatthias Ringwald  * @param random_bd_addr
130856042629SMatthias Ringwald  */
130956042629SMatthias Ringwald const hci_cmd_t hci_le_set_random_address = {
1310ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_RANDOM_ADDRESS, "B"
131156042629SMatthias Ringwald     // return: status
131256042629SMatthias Ringwald };
131356042629SMatthias Ringwald 
131456042629SMatthias Ringwald /**
131556042629SMatthias Ringwald  * @param advertising_interval_min ([0x0020,0x4000], default: 0x0800, unit: 0.625 msec)
131656042629SMatthias Ringwald  * @param advertising_interval_max ([0x0020,0x4000], default: 0x0800, unit: 0.625 msec)
131756042629SMatthias Ringwald  * @param advertising_type (enum from 0: ADV_IND, ADC_DIRECT_IND, ADV_SCAN_IND, ADV_NONCONN_IND)
131856042629SMatthias Ringwald  * @param own_address_type (enum from 0: public device address, random device address)
131956042629SMatthias Ringwald  * @param direct_address_type ()
132056042629SMatthias Ringwald  * @param direct_address (public or random address of device to be connecteed)
132156042629SMatthias Ringwald  * @param advertising_channel_map (flags: chan_37(1), chan_38(2), chan_39(4))
132256042629SMatthias Ringwald  * @param advertising_filter_policy (enum from 0: scan any conn any, scan whitelist, con any, scan any conn whitelist, scan whitelist, con whitelist)
132356042629SMatthias Ringwald  */
132456042629SMatthias Ringwald const hci_cmd_t hci_le_set_advertising_parameters = {
1325ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_ADVERTISING_PARAMETERS, "22111B11"
132656042629SMatthias Ringwald     // return: status
132756042629SMatthias Ringwald };
132856042629SMatthias Ringwald 
132956042629SMatthias Ringwald const hci_cmd_t hci_le_read_advertising_channel_tx_power = {
1330ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_ADVERTISING_CHANNEL_TX_POWER, ""
133156042629SMatthias Ringwald     // return: status, level [-20,10] signed int (8), units dBm
133256042629SMatthias Ringwald };
133356042629SMatthias Ringwald 
133456042629SMatthias Ringwald /**
133556042629SMatthias Ringwald  * @param advertising_data_length
133656042629SMatthias Ringwald  * @param advertising_data (31 bytes)
133756042629SMatthias Ringwald  */
133856042629SMatthias Ringwald const hci_cmd_t hci_le_set_advertising_data= {
1339ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_ADVERTISING_DATA, "1A"
134056042629SMatthias Ringwald     // return: status
134156042629SMatthias Ringwald };
134256042629SMatthias Ringwald 
134356042629SMatthias Ringwald /**
134456042629SMatthias Ringwald  * @param scan_response_data_length
134556042629SMatthias Ringwald  * @param scan_response_data (31 bytes)
134656042629SMatthias Ringwald  */
134756042629SMatthias Ringwald const hci_cmd_t hci_le_set_scan_response_data= {
1348ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_SCAN_RESPONSE_DATA, "1A"
134956042629SMatthias Ringwald     // return: status
135056042629SMatthias Ringwald };
135156042629SMatthias Ringwald 
135256042629SMatthias Ringwald /**
135356042629SMatthias Ringwald  * @param advertise_enable (off: 0, on: 1)
135456042629SMatthias Ringwald  */
135556042629SMatthias Ringwald const hci_cmd_t hci_le_set_advertise_enable = {
1356ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_ADVERTISE_ENABLE, "1"
135756042629SMatthias Ringwald     // return: status
135856042629SMatthias Ringwald };
135956042629SMatthias Ringwald 
136056042629SMatthias Ringwald /**
136156042629SMatthias Ringwald  * @param le_scan_type (passive (0), active (1))
136256042629SMatthias Ringwald  * @param le_scan_interval ([0x0004,0x4000], unit: 0.625 msec)
136356042629SMatthias Ringwald  * @param le_scan_window   ([0x0004,0x4000], unit: 0.625 msec)
136456042629SMatthias Ringwald  * @param own_address_type (public (0), random (1))
136556042629SMatthias Ringwald  * @param scanning_filter_policy (any (0), only whitelist (1))
136656042629SMatthias Ringwald  */
136756042629SMatthias Ringwald const hci_cmd_t hci_le_set_scan_parameters = {
1368ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_SCAN_PARAMETERS, "12211"
136956042629SMatthias Ringwald     // return: status
137056042629SMatthias Ringwald };
137156042629SMatthias Ringwald 
137256042629SMatthias Ringwald /**
137356042629SMatthias Ringwald  * @param le_scan_enable  (disabled (0), enabled (1))
137456042629SMatthias Ringwald  * @param filter_duplices (disabled (0), enabled (1))
137556042629SMatthias Ringwald  */
137656042629SMatthias Ringwald const hci_cmd_t hci_le_set_scan_enable = {
1377ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_SCAN_ENABLE, "11"
137856042629SMatthias Ringwald     // return: status
137956042629SMatthias Ringwald };
138056042629SMatthias Ringwald 
138156042629SMatthias Ringwald /**
138256042629SMatthias Ringwald  * @param le_scan_interval ([0x0004, 0x4000], unit: 0.625 msec)
138356042629SMatthias Ringwald  * @param le_scan_window ([0x0004, 0x4000], unit: 0.625 msec)
138456042629SMatthias Ringwald  * @param initiator_filter_policy (peer address type + peer address (0), whitelist (1))
138556042629SMatthias Ringwald  * @param peer_address_type (public (0), random (1))
138656042629SMatthias Ringwald  * @param peer_address
138756042629SMatthias Ringwald  * @param own_address_type (public (0), random (1))
138856042629SMatthias Ringwald  * @param conn_interval_min ([0x0006, 0x0c80], unit: 1.25 msec)
138956042629SMatthias Ringwald  * @param conn_interval_max ([0x0006, 0x0c80], unit: 1.25 msec)
139056042629SMatthias Ringwald  * @param conn_latency (number of connection events [0x0000, 0x01f4])
139156042629SMatthias Ringwald  * @param supervision_timeout ([0x000a, 0x0c80], unit: 10 msec)
139256042629SMatthias Ringwald  * @param minimum_CE_length ([0x0000, 0xffff], unit: 0.625 msec)
139356042629SMatthias Ringwald  * @param maximum_CE_length ([0x0000, 0xffff], unit: 0.625 msec)
139456042629SMatthias Ringwald  */
139556042629SMatthias Ringwald const hci_cmd_t hci_le_create_connection= {
1396ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_CREATE_CONNECTION, "2211B1222222"
139756042629SMatthias Ringwald     // return: none -> le create connection complete event
139856042629SMatthias Ringwald };
139956042629SMatthias Ringwald 
140056042629SMatthias Ringwald const hci_cmd_t hci_le_create_connection_cancel = {
1401ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_CREATE_CONNECTION_CANCEL, ""
140256042629SMatthias Ringwald     // return: status
140356042629SMatthias Ringwald };
140456042629SMatthias Ringwald 
140556042629SMatthias Ringwald const hci_cmd_t hci_le_read_white_list_size = {
1406ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_WHITE_LIST_SIZE, ""
140756042629SMatthias Ringwald     // return: status, number of entries in controller whitelist
140856042629SMatthias Ringwald };
140956042629SMatthias Ringwald 
141056042629SMatthias Ringwald const hci_cmd_t hci_le_clear_white_list = {
1411ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_CLEAR_WHITE_LIST, ""
141256042629SMatthias Ringwald     // return: status
141356042629SMatthias Ringwald };
141456042629SMatthias Ringwald 
141556042629SMatthias Ringwald /**
141656042629SMatthias Ringwald  * @param address_type (public (0), random (1))
141756042629SMatthias Ringwald  * @param bd_addr
141856042629SMatthias Ringwald  */
141956042629SMatthias Ringwald const hci_cmd_t hci_le_add_device_to_white_list = {
1420ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_ADD_DEVICE_TO_WHITE_LIST, "1B"
142156042629SMatthias Ringwald     // return: status
142256042629SMatthias Ringwald };
142356042629SMatthias Ringwald 
142456042629SMatthias Ringwald /**
142556042629SMatthias Ringwald  * @param address_type (public (0), random (1))
142656042629SMatthias Ringwald  * @param bd_addr
142756042629SMatthias Ringwald  */
142856042629SMatthias Ringwald const hci_cmd_t hci_le_remove_device_from_white_list = {
1429ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOVE_DEVICE_FROM_WHITE_LIST, "1B"
143056042629SMatthias Ringwald     // return: status
143156042629SMatthias Ringwald };
143256042629SMatthias Ringwald 
143356042629SMatthias Ringwald /**
143456042629SMatthias Ringwald  * @param conn_handle
143556042629SMatthias Ringwald  * @param conn_interval_min ([0x0006,0x0c80], unit: 1.25 msec)
143656042629SMatthias Ringwald  * @param conn_interval_max ([0x0006,0x0c80], unit: 1.25 msec)
143756042629SMatthias Ringwald  * @param conn_latency ([0x0000,0x03e8], number of connection events)
143856042629SMatthias Ringwald  * @param supervision_timeout ([0x000a,0x0c80], unit: 10 msec)
143956042629SMatthias Ringwald  * @param minimum_CE_length ([0x0000,0xffff], unit: 0.625 msec)
144056042629SMatthias Ringwald  * @param maximum_CE_length ([0x0000,0xffff], unit: 0.625 msec)
144156042629SMatthias Ringwald  */
144256042629SMatthias Ringwald const hci_cmd_t hci_le_connection_update = {
1443ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_CONNECTION_UPDATE, "H222222"
144456042629SMatthias Ringwald     // return: none -> le connection update complete event
144556042629SMatthias Ringwald };
144656042629SMatthias Ringwald 
144756042629SMatthias Ringwald /**
144856042629SMatthias Ringwald  * @param channel_map_lower_32bits
144956042629SMatthias Ringwald  * @param channel_map_higher_5bits
145056042629SMatthias Ringwald  */
145156042629SMatthias Ringwald const hci_cmd_t hci_le_set_host_channel_classification = {
1452ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_HOST_CHANNEL_CLASSIFICATION, "41"
145356042629SMatthias Ringwald     // return: status
145456042629SMatthias Ringwald };
145556042629SMatthias Ringwald 
145656042629SMatthias Ringwald /**
145756042629SMatthias Ringwald  * @param conn_handle
145856042629SMatthias Ringwald  */
145956042629SMatthias Ringwald const hci_cmd_t hci_le_read_channel_map = {
1460ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_CHANNEL_MAP, "H"
146156042629SMatthias Ringwald     // return: status, connection handle, channel map (5 bytes, 37 used)
146256042629SMatthias Ringwald };
146356042629SMatthias Ringwald 
146456042629SMatthias Ringwald /**
146556042629SMatthias Ringwald  * @param conn_handle
146656042629SMatthias Ringwald  */
146756042629SMatthias Ringwald const hci_cmd_t hci_le_read_remote_used_features = {
1468ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_REMOTE_USED_FEATURES, "H"
146956042629SMatthias Ringwald     // return: none -> le read remote used features complete event
147056042629SMatthias Ringwald };
147156042629SMatthias Ringwald 
147256042629SMatthias Ringwald /**
147356042629SMatthias Ringwald  * @param key ((128) for AES-128)
147456042629SMatthias Ringwald  * @param plain_text (128)
147556042629SMatthias Ringwald  */
147656042629SMatthias Ringwald const hci_cmd_t hci_le_encrypt = {
1477ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_ENCRYPT, "PP"
147856042629SMatthias Ringwald     // return: status, encrypted data (128)
147956042629SMatthias Ringwald };
148056042629SMatthias Ringwald 
148156042629SMatthias Ringwald const hci_cmd_t hci_le_rand = {
1482ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_RAND, ""
148356042629SMatthias Ringwald     // return: status, random number (64)
148456042629SMatthias Ringwald };
148556042629SMatthias Ringwald 
148656042629SMatthias Ringwald /**
148756042629SMatthias Ringwald  * @param conn_handle
148856042629SMatthias Ringwald  * @param random_number_lower_32bits
148956042629SMatthias Ringwald  * @param random_number_higher_32bits
149056042629SMatthias Ringwald  * @param encryption_diversifier (16)
149156042629SMatthias Ringwald  * @param long_term_key (128)
149256042629SMatthias Ringwald  */
149356042629SMatthias Ringwald const hci_cmd_t hci_le_start_encryption = {
1494ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_START_ENCRYPTION, "H442P"
149556042629SMatthias Ringwald     // return: none -> encryption changed or encryption key refresh complete event
149656042629SMatthias Ringwald };
149756042629SMatthias Ringwald 
149856042629SMatthias Ringwald /**
149956042629SMatthias Ringwald  * @param connection_handle
150056042629SMatthias Ringwald  * @param long_term_key (128)
150156042629SMatthias Ringwald  */
150256042629SMatthias Ringwald const hci_cmd_t hci_le_long_term_key_request_reply = {
1503ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_LONG_TERM_KEY_REQUEST_REPLY, "HP"
150456042629SMatthias Ringwald     // return: status, connection handle
150556042629SMatthias Ringwald };
150656042629SMatthias Ringwald 
150756042629SMatthias Ringwald /**
150856042629SMatthias Ringwald  * @param conn_handle
150956042629SMatthias Ringwald  */
151056042629SMatthias Ringwald const hci_cmd_t hci_le_long_term_key_negative_reply = {
1511ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_LONG_TERM_KEY_NEGATIVE_REPLY, "H"
151256042629SMatthias Ringwald     // return: status, connection handle
151356042629SMatthias Ringwald };
151456042629SMatthias Ringwald 
151556042629SMatthias Ringwald /**
151656042629SMatthias Ringwald  * @param conn_handle
151756042629SMatthias Ringwald  */
151856042629SMatthias Ringwald const hci_cmd_t hci_le_read_supported_states = {
1519ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_SUPPORTED_STATES, "H"
152056042629SMatthias Ringwald     // return: status, LE states (64)
152156042629SMatthias Ringwald };
152256042629SMatthias Ringwald 
152356042629SMatthias Ringwald /**
152456042629SMatthias Ringwald  * @param rx_frequency ([0x00 0x27], frequency (MHz): 2420 + N*2)
152556042629SMatthias Ringwald  */
152656042629SMatthias Ringwald const hci_cmd_t hci_le_receiver_test = {
1527ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_RECEIVER_TEST, "1"
152856042629SMatthias Ringwald     // return: status
152956042629SMatthias Ringwald };
153056042629SMatthias Ringwald 
153156042629SMatthias Ringwald /**
153256042629SMatthias Ringwald  * @param tx_frequency ([0x00 0x27], frequency (MHz): 2420 + N*2)
153356042629SMatthias Ringwald  * @param test_payload_lengh ([0x00,0x25])
153456042629SMatthias Ringwald  * @param packet_payload ([0,7] different patterns)
153556042629SMatthias Ringwald  */
153656042629SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test = {
1537ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_TRANSMITTER_TEST, "111"
153856042629SMatthias Ringwald     // return: status
153956042629SMatthias Ringwald };
154056042629SMatthias Ringwald 
154156042629SMatthias Ringwald /**
154256042629SMatthias Ringwald  * @param end_test_cmd
154356042629SMatthias Ringwald  */
154456042629SMatthias Ringwald const hci_cmd_t hci_le_test_end = {
1545ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_TEST_END, "1"
154656042629SMatthias Ringwald     // return: status, number of packets (8)
154756042629SMatthias Ringwald };
154882180fcaSMatthias Ringwald 
154982180fcaSMatthias Ringwald /**
1550fe704c95SMatthias Ringwald  * @param conn_handle
1551fe704c95SMatthias Ringwald  * @param conn_interval_min ([0x0006,0x0c80], unit: 1.25 msec)
1552fe704c95SMatthias Ringwald  * @param conn_interval_max ([0x0006,0x0c80], unit: 1.25 msec)
1553fe704c95SMatthias Ringwald  * @param conn_latency ([0x0000,0x03e8], number of connection events)
1554fe704c95SMatthias Ringwald  * @param supervision_timeout ([0x000a,0x0c80], unit: 10 msec)
1555fe704c95SMatthias Ringwald  * @param minimum_CE_length ([0x0000,0xffff], unit: 0.625 msec)
1556fe704c95SMatthias Ringwald  * @param maximum_CE_length ([0x0000,0xffff], unit: 0.625 msec)
1557fe704c95SMatthias Ringwald  */
1558fe704c95SMatthias Ringwald const hci_cmd_t hci_le_remote_connection_parameter_request_reply = {
1559ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_REPLY, "H222222"
1560fe704c95SMatthias Ringwald     // return: status, connection handle
1561fe704c95SMatthias Ringwald };
1562fe704c95SMatthias Ringwald 
1563fe704c95SMatthias Ringwald /**
1564fe704c95SMatthias Ringwald  * @param con_handle
1565fe704c95SMatthias Ringwald  * @param reason
1566fe704c95SMatthias Ringwald  */
1567fe704c95SMatthias Ringwald const hci_cmd_t hci_le_remote_connection_parameter_request_negative_reply = {
1568ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_NEGATIVE_REPLY, "H1"
1569fe704c95SMatthias Ringwald     // return: status, connection handle
1570fe704c95SMatthias Ringwald };
1571fe704c95SMatthias Ringwald 
1572fe704c95SMatthias Ringwald /**
15730ea2847fSMatthias Ringwald  * @param con_handle
15740ea2847fSMatthias Ringwald  * @param tx_octets
15750ea2847fSMatthias Ringwald  * @param tx_time
15760ea2847fSMatthias Ringwald  */
15770ea2847fSMatthias Ringwald const hci_cmd_t hci_le_set_data_length = {
1578ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_DATA_LENGTH, "H22"
15790ea2847fSMatthias Ringwald     // return: status, connection handle
15800ea2847fSMatthias Ringwald };
15810ea2847fSMatthias Ringwald 
15820ea2847fSMatthias Ringwald /**
15830ea2847fSMatthias Ringwald  */
15840ea2847fSMatthias Ringwald const hci_cmd_t hci_le_read_suggested_default_data_length = {
1585ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_SUGGESTED_DEFAULT_DATA_LENGTH, ""
15860ea2847fSMatthias Ringwald     // return: status, suggested max tx octets, suggested max tx time
15870ea2847fSMatthias Ringwald };
15880ea2847fSMatthias Ringwald 
15890ea2847fSMatthias Ringwald /**
15900ea2847fSMatthias Ringwald  * @param suggested_max_tx_octets
15910ea2847fSMatthias Ringwald  * @param suggested_max_tx_time
15920ea2847fSMatthias Ringwald  */
15930ea2847fSMatthias Ringwald const hci_cmd_t hci_le_write_suggested_default_data_length = {
1594ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_WRITE_SUGGESTED_DEFAULT_DATA_LENGTH, "22"
15950ea2847fSMatthias Ringwald     // return: status
15960ea2847fSMatthias Ringwald };
15970ea2847fSMatthias Ringwald 
15980ea2847fSMatthias Ringwald /**
159982180fcaSMatthias Ringwald  */
160082180fcaSMatthias Ringwald const hci_cmd_t hci_le_read_local_p256_public_key = {
1601ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_LOCAL_P256_PUBLIC_KEY, ""
160282180fcaSMatthias Ringwald //  LE Read Local P-256 Public Key Complete is generated on completion
160382180fcaSMatthias Ringwald };
160482180fcaSMatthias Ringwald 
160582180fcaSMatthias Ringwald /**
1606fcae305fSMatthias Ringwald  * @param public key
1607fcae305fSMatthias Ringwald  * @param private key
160882180fcaSMatthias Ringwald  */
160982180fcaSMatthias Ringwald const hci_cmd_t hci_le_generate_dhkey = {
1610ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_GENERATE_DHKEY, "QQ"
161182180fcaSMatthias Ringwald // LE Generate DHKey Complete is generated on completion
161282180fcaSMatthias Ringwald };
161382180fcaSMatthias Ringwald 
16140ea2847fSMatthias Ringwald /**
1615173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address_Type
1616173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address
1617173ed1a3SMatthias Ringwald  * @param Peer_IRK
1618173ed1a3SMatthias Ringwald  * @param Local_IRK
1619173ed1a3SMatthias Ringwald  */
1620173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_add_device_to_resolving_list = {
1621173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_ADD_DEVICE_TO_RESOLVING_LIST, "1BPP"
1622173ed1a3SMatthias Ringwald };
1623173ed1a3SMatthias Ringwald 
1624173ed1a3SMatthias Ringwald /**
1625173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address_Type
1626173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address
1627173ed1a3SMatthias Ringwald  */
1628173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_remove_device_from_resolving_list = {
1629173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOVE_DEVICE_FROM_RESOLVING_LIST, "1B"
1630173ed1a3SMatthias Ringwald };
1631173ed1a3SMatthias Ringwald 
1632173ed1a3SMatthias Ringwald /**
1633173ed1a3SMatthias Ringwald  */
1634173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_clear_resolving_list = {
1635173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_CLEAR_RESOLVING_LIST, ""
1636173ed1a3SMatthias Ringwald };
1637173ed1a3SMatthias Ringwald 
1638173ed1a3SMatthias Ringwald /**
1639173ed1a3SMatthias Ringwald  */
1640173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_read_resolving_list_size = {
1641173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_RESOLVING_LIST_SIZE, ""
1642173ed1a3SMatthias Ringwald };
1643173ed1a3SMatthias Ringwald 
1644173ed1a3SMatthias Ringwald /**
1645173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address_Type
1646173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address
1647173ed1a3SMatthias Ringwald  */
1648173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_read_peer_resolvable_address = {
1649173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_PEER_RESOLVABLE_ADDRESS, ""
1650173ed1a3SMatthias Ringwald };
1651173ed1a3SMatthias Ringwald 
1652173ed1a3SMatthias Ringwald /**
1653173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address_Type
1654173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address
1655173ed1a3SMatthias Ringwald  */
1656173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_read_local_resolvable_address = {
1657173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_LOCAL_RESOLVABLE_ADDRESS, ""
1658173ed1a3SMatthias Ringwald };
1659173ed1a3SMatthias Ringwald 
1660173ed1a3SMatthias Ringwald /**
1661173ed1a3SMatthias Ringwald  * @param Address_Resolution_Enable
1662173ed1a3SMatthias Ringwald  */
1663173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_set_address_resolution_enabled= {
1664173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_ADDRESS_RESOLUTION_ENABLED, "1"
1665173ed1a3SMatthias Ringwald };
1666173ed1a3SMatthias Ringwald 
1667173ed1a3SMatthias Ringwald /**
1668173ed1a3SMatthias Ringwald  * @param RPA_Timeout in seconds, range 0x0001 to 0x0E10, default: 900 s
1669173ed1a3SMatthias Ringwald  */
1670173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_set_resolvable_private_address_timeout= {
1671173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_RESOLVABLE_PRIVATE_ADDRESS_TIMEOUT, "2"
1672173ed1a3SMatthias Ringwald };
1673173ed1a3SMatthias Ringwald 
1674173ed1a3SMatthias Ringwald /**
16750ea2847fSMatthias Ringwald  */
16760ea2847fSMatthias Ringwald const hci_cmd_t hci_le_read_maximum_data_length = {
1677ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_MAXIMUM_DATA_LENGTH, ""
16780ea2847fSMatthias Ringwald     // return: status, supported max tx octets, supported max tx time, supported max rx octets, supported max rx time
16790ea2847fSMatthias Ringwald };
16800ea2847fSMatthias Ringwald 
1681ca13daefSMatthias Ringwald /**
1682ca13daefSMatthias Ringwald  * @param con_handle
1683ca13daefSMatthias Ringwald  */
1684ca13daefSMatthias Ringwald const hci_cmd_t hci_le_read_phy = {
1685ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_PHY, "H"
1686ca13daefSMatthias Ringwald     // return: status, connection handler, tx phy, rx phy
1687ca13daefSMatthias Ringwald };
1688ca13daefSMatthias Ringwald 
1689ca13daefSMatthias Ringwald /**
1690ca13daefSMatthias Ringwald  * @param all_phys
1691ca13daefSMatthias Ringwald  * @param tx_phys
1692ca13daefSMatthias Ringwald  * @param rx_phys
1693ca13daefSMatthias Ringwald  */
1694ca13daefSMatthias Ringwald const hci_cmd_t hci_le_set_default_phy = {
1695ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_DEFAULT_PHY, "111"
1696ca13daefSMatthias Ringwald     // return: status
1697ca13daefSMatthias Ringwald };
1698ca13daefSMatthias Ringwald 
1699ca13daefSMatthias Ringwald /**
1700ca13daefSMatthias Ringwald  * @param con_handle
1701ca13daefSMatthias Ringwald  * @param all_phys
1702ca13daefSMatthias Ringwald  * @param tx_phys
1703ca13daefSMatthias Ringwald  * @param rx_phys
1704ca13daefSMatthias Ringwald  * @param phy_options
1705ca13daefSMatthias Ringwald  */
1706ca13daefSMatthias Ringwald const hci_cmd_t hci_le_set_phy = {
170752aff43aSfominykhandrei     HCI_OPCODE_HCI_LE_SET_PHY, "H1112"
1708ca13daefSMatthias Ringwald // LE PHY Update Complete is generated on completion
1709ca13daefSMatthias Ringwald };
1710ca13daefSMatthias Ringwald 
17110c1cf6c6SMatthias Ringwald /**
17120c1cf6c6SMatthias Ringwald  * @param rx_channel
17130c1cf6c6SMatthias Ringwald  * @param phy
17140c1cf6c6SMatthias Ringwald  * @param modulation_index
17150c1cf6c6SMatthias Ringwald  */
17160c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_receiver_test_v2 = {
17170c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_RECEIVER_TEST_V2, "111"
17180c1cf6c6SMatthias Ringwald };
17190c1cf6c6SMatthias Ringwald 
17200c1cf6c6SMatthias Ringwald /**
17210c1cf6c6SMatthias Ringwald  * @param tx_channel
17220c1cf6c6SMatthias Ringwald  * @param test_data_length
17230c1cf6c6SMatthias Ringwald  * @param packet_payload
17240c1cf6c6SMatthias Ringwald  * @param phy
17250c1cf6c6SMatthias Ringwald  */
17260c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test_v2 = {
17270c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_TRANSMITTER_TEST_V2, "1111"
17280c1cf6c6SMatthias Ringwald };
17290c1cf6c6SMatthias Ringwald 
17300c1cf6c6SMatthias Ringwald /**
17310c1cf6c6SMatthias Ringwald  * @param advertising_handle
17320c1cf6c6SMatthias Ringwald  * @param random_address
17330c1cf6c6SMatthias Ringwald  */
17340c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_advertising_set_random_address = {
17350c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_ADVERTISING_SET_RANDOM_ADDRESS, "1B"
17360c1cf6c6SMatthias Ringwald };
17370c1cf6c6SMatthias Ringwald 
17380c1cf6c6SMatthias Ringwald /**
17390c1cf6c6SMatthias Ringwald  * @param advertising_handle
17400c1cf6c6SMatthias Ringwald  * @param advertising_event_properties
17410c1cf6c6SMatthias Ringwald  * @param primary_advertising_interval_min in 0.625 ms, range: 0x000020..0xffffff
17420c1cf6c6SMatthias Ringwald  * @param primary_advertising_interval_max in 0.625 ms, range: 0x000020..0xffffff
17430c1cf6c6SMatthias Ringwald  * @param primary_advertising_channel_map
17440c1cf6c6SMatthias Ringwald  * @param own_address_type
17450c1cf6c6SMatthias Ringwald  * @param peer_address_type
17460c1cf6c6SMatthias Ringwald  * @param peer_address
17470c1cf6c6SMatthias Ringwald  * @param advertising_filter_policy
17480c1cf6c6SMatthias Ringwald  * @param advertising_tx_power in dBm, range: -127..20
17490c1cf6c6SMatthias Ringwald  * @param primary_advertising_phy
17500c1cf6c6SMatthias Ringwald  * @param secondary_advertising_max_skip
17510c1cf6c6SMatthias Ringwald  * @param secondary_advertising_phy
17520c1cf6c6SMatthias Ringwald  * @param advertising_sid
17530c1cf6c6SMatthias Ringwald  * @param scan_request_notification_enable
17540c1cf6c6SMatthias Ringwald  */
17550c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_advertising_parameters = {
17560c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_EXTENDED_ADVERTISING_PARAMETERS, "1233111B1111111"
17570c1cf6c6SMatthias Ringwald };
17580c1cf6c6SMatthias Ringwald 
17590c1cf6c6SMatthias Ringwald /**
17600c1cf6c6SMatthias Ringwald  * @param advertising_handle
17610c1cf6c6SMatthias Ringwald  * @param operation
17620c1cf6c6SMatthias Ringwald  * @param fragment_preference
17630c1cf6c6SMatthias Ringwald  * @param advertising_data_length
17640c1cf6c6SMatthias Ringwald  * @param advertising_data
17650c1cf6c6SMatthias Ringwald  */
17660c1cf6c6SMatthias Ringwald 
17670c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_advertising_data = {
17680c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_EXTENDED_ADVERTISING_DATA, "111JV"
17690c1cf6c6SMatthias Ringwald };
17700c1cf6c6SMatthias Ringwald 
17710c1cf6c6SMatthias Ringwald /**
17720c1cf6c6SMatthias Ringwald  * @param advertising_handle
17730c1cf6c6SMatthias Ringwald  * @param operation
17740c1cf6c6SMatthias Ringwald  * @param fragment_preference
17750c1cf6c6SMatthias Ringwald  * @param scan_response_data_length
17760c1cf6c6SMatthias Ringwald  * @param scan_response_data
17770c1cf6c6SMatthias Ringwald  */
17780c1cf6c6SMatthias Ringwald 
17790c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_scan_response_data = {
17800c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_EXTENDED_SCAN_RESPONSE_DATA, "111JV"
17810c1cf6c6SMatthias Ringwald };
17820c1cf6c6SMatthias Ringwald 
17830c1cf6c6SMatthias Ringwald /**
17840c1cf6c6SMatthias Ringwald  * @param enable
17850c1cf6c6SMatthias Ringwald  * @param num_sets
17860c1cf6c6SMatthias Ringwald  * @param advertising_handle[i]
17870c1cf6c6SMatthias Ringwald  * @param duration[i]
17880c1cf6c6SMatthias Ringwald  * @param max_extended_advertising_events[i]
17890c1cf6c6SMatthias Ringwald  */
17900c1cf6c6SMatthias Ringwald 
17910c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_advertising_enable = {
179227f212a7SMatthias Ringwald         HCI_OPCODE_HCI_LE_SET_EXTENDED_ADVERTISING_ENABLE, "1a[121]"
17930c1cf6c6SMatthias Ringwald };
17940c1cf6c6SMatthias Ringwald 
17950c1cf6c6SMatthias Ringwald /**
17960c1cf6c6SMatthias Ringwald  */
17970c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_maximum_advertising_data_length = {
17980c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_MAXIMUM_ADVERTISING_DATA_LENGTH, ""
17990c1cf6c6SMatthias Ringwald };
18000c1cf6c6SMatthias Ringwald 
18010c1cf6c6SMatthias Ringwald /**
18020c1cf6c6SMatthias Ringwald  */
18030c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_number_of_supported_advertising_sets = {
18040c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_NUMBER_OF_SUPPORTED_ADVERTISING_SETS, ""
18050c1cf6c6SMatthias Ringwald };
18060c1cf6c6SMatthias Ringwald 
18070c1cf6c6SMatthias Ringwald /**
18080c1cf6c6SMatthias Ringwald  * @param advertising_handle
18090c1cf6c6SMatthias Ringwald  */
18100c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_advertising_set = {
18110c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOVE_ADVERTISING_SET, "1"
18120c1cf6c6SMatthias Ringwald };
18130c1cf6c6SMatthias Ringwald 
18140c1cf6c6SMatthias Ringwald /**
18150c1cf6c6SMatthias Ringwald  */
18160c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_clear_advertising_sets = {
18170c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_CLEAR_ADVERTISING_SETS, ""
18180c1cf6c6SMatthias Ringwald };
18190c1cf6c6SMatthias Ringwald 
18200c1cf6c6SMatthias Ringwald /**
18210c1cf6c6SMatthias Ringwald  * @param advertising_handle
18220c1cf6c6SMatthias Ringwald  * @param periodic_advertising_interval_min * 1.25 ms, range 0x0006..0xffff
18230c1cf6c6SMatthias Ringwald  * @param periodic_advertising_interval_max * 1.25 ms, range 0x0006..0xffff
18240c1cf6c6SMatthias Ringwald  * @param periodic_advertising_properties
18250c1cf6c6SMatthias Ringwald  */
18260c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_parameters = {
18270c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_PARAMETERS, "1222"
18280c1cf6c6SMatthias Ringwald };
18290c1cf6c6SMatthias Ringwald 
18300c1cf6c6SMatthias Ringwald /**
18310c1cf6c6SMatthias Ringwald  * @param advertising_handle
18320c1cf6c6SMatthias Ringwald  * @param operation
18330c1cf6c6SMatthias Ringwald  * @param advertising_data_length
18340c1cf6c6SMatthias Ringwald  * @param advertising_data
18350c1cf6c6SMatthias Ringwald  */
18360c1cf6c6SMatthias Ringwald 
18370c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_data = {
18380c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_DATA, "11JV"
18390c1cf6c6SMatthias Ringwald };
18400c1cf6c6SMatthias Ringwald 
18410c1cf6c6SMatthias Ringwald /**
18420c1cf6c6SMatthias Ringwald  * @param enable
18430c1cf6c6SMatthias Ringwald  * @param advertising_handle
18440c1cf6c6SMatthias Ringwald  */
18450c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_enable = {
18460c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_ENABLE, "11"
18470c1cf6c6SMatthias Ringwald };
18480c1cf6c6SMatthias Ringwald 
18490c1cf6c6SMatthias Ringwald /**
18500c1cf6c6SMatthias Ringwald  * @param own_address_type
18510c1cf6c6SMatthias Ringwald  * @param scanning_filter_policy
18520c1cf6c6SMatthias Ringwald  * @param scanning_phys 0 = LE 1M PHY | 2 = LE Coded PHY
185327f212a7SMatthias Ringwald  * @param scan_type[i]
185427f212a7SMatthias Ringwald  * @param scan_interval[i] * 0.625, range = 0x0004..0xffff
185527f212a7SMatthias Ringwald  * @param scan_window[i] * 0.625, range = 0x0004..0xffff
18560c1cf6c6SMatthias Ringwald  */
18570c1cf6c6SMatthias Ringwald 
18586ea37a0fSMatthias Ringwald const hci_cmd_t hci_le_set_extended_scan_parameters = {
18596ea37a0fSMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_EXTENDED_SCAN_PARAMETERS, "11b[122]"
18600c1cf6c6SMatthias Ringwald };
18610c1cf6c6SMatthias Ringwald 
18620c1cf6c6SMatthias Ringwald /**
18630c1cf6c6SMatthias Ringwald  * @param enable
18640c1cf6c6SMatthias Ringwald  * @param filter_duplicates
18650c1cf6c6SMatthias Ringwald  * @param duration 0 = Scan continuously until explicitly disable, 10 ms
18660c1cf6c6SMatthias Ringwald  * @param period 0 = Scan continuously, 1.28 s
18670c1cf6c6SMatthias Ringwald  */
18680c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_scan_enable = {
18690c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_EXTENDED_SCAN_ENABLE, "1122"
18700c1cf6c6SMatthias Ringwald };
18710c1cf6c6SMatthias Ringwald 
18720c1cf6c6SMatthias Ringwald /**
18730c1cf6c6SMatthias Ringwald  * @param initiator_filter_policy
18740c1cf6c6SMatthias Ringwald  * @param own_address_type
18750c1cf6c6SMatthias Ringwald  * @param peer_address_type
18760c1cf6c6SMatthias Ringwald  * @param peer_address
18770c1cf6c6SMatthias Ringwald  * @param initiating_phys with bit 0 = LE 1M PHY, bit 1 = LE 2M PHY, bit 2 = Coded PHY
18780c1cf6c6SMatthias Ringwald  * @param scan_interval[i] * 0.625 ms
18790c1cf6c6SMatthias Ringwald  * @param scan_window[i] * 0.625 ms
18800c1cf6c6SMatthias Ringwald  * @param connection_interval_min[i] * 1.25 ms
18810c1cf6c6SMatthias Ringwald  * @param connection_interval_max[i] * 1.25 ms
18820c1cf6c6SMatthias Ringwald  * @param connection_latency[i]
18830c1cf6c6SMatthias Ringwald  * @param supervision_timeout[i] * 10 ms
18840c1cf6c6SMatthias Ringwald  * @param min_ce_length[i] * 0.625 ms
18850c1cf6c6SMatthias Ringwald  * @param max_ce_length[i] * 0.625 ms
18860c1cf6c6SMatthias Ringwald  */
18870c1cf6c6SMatthias Ringwald 
18880c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_extended_create_connection = {
18890c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_EXTENDED_CREATE_CONNECTION, "111Bb[22222222]"
18900c1cf6c6SMatthias Ringwald };
18910c1cf6c6SMatthias Ringwald 
18920c1cf6c6SMatthias Ringwald /**
18930c1cf6c6SMatthias Ringwald  * @param options
18940c1cf6c6SMatthias Ringwald  * @param advertising_sid
18950c1cf6c6SMatthias Ringwald  * @param advertiser_address_type
18960c1cf6c6SMatthias Ringwald  * @param advertiser_address
18970c1cf6c6SMatthias Ringwald  * @param skip
18980c1cf6c6SMatthias Ringwald  * @param sync_timeout * 10 ms
18990c1cf6c6SMatthias Ringwald  * @param sync_cte_type
19000c1cf6c6SMatthias Ringwald  */
19010c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_create_sync = {
19020c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_CREATE_SYNC, "111B221"
19030c1cf6c6SMatthias Ringwald };
19040c1cf6c6SMatthias Ringwald 
19050c1cf6c6SMatthias Ringwald /**
19060c1cf6c6SMatthias Ringwald  */
19070c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_create_sync_cancel = {
19080c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_CREATE_SYNC_CANCEL, ""
19090c1cf6c6SMatthias Ringwald };
19100c1cf6c6SMatthias Ringwald 
19110c1cf6c6SMatthias Ringwald /**
19120c1cf6c6SMatthias Ringwald  * @param sync_handle
19130c1cf6c6SMatthias Ringwald  */
19140c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_terminate_sync = {
1915c0112d43SMatthias Ringwald     HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_TERMINATE_SYNC, "2"
19160c1cf6c6SMatthias Ringwald };
19170c1cf6c6SMatthias Ringwald 
19180c1cf6c6SMatthias Ringwald /**
19190c1cf6c6SMatthias Ringwald  * @param advertiser_address_type
19200c1cf6c6SMatthias Ringwald  * @param advertiser_address
19210c1cf6c6SMatthias Ringwald  * @param advertising_sid
19220c1cf6c6SMatthias Ringwald  */
19230c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_add_device_to_periodic_advertiser_list = {
19240c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_ADD_DEVICE_TO_PERIODIC_ADVERTISER_LIST, "1B1"
19250c1cf6c6SMatthias Ringwald };
19260c1cf6c6SMatthias Ringwald 
19270c1cf6c6SMatthias Ringwald /**
19280c1cf6c6SMatthias Ringwald  * @param advertiser_address_type
19290c1cf6c6SMatthias Ringwald  * @param advertiser_address
19300c1cf6c6SMatthias Ringwald  * @param advertising_sid
19310c1cf6c6SMatthias Ringwald  */
19320c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_device_from_periodic_advertiser_list = {
19330c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISER_LIST, "1B1"
19340c1cf6c6SMatthias Ringwald };
19350c1cf6c6SMatthias Ringwald 
19360c1cf6c6SMatthias Ringwald /**
19370c1cf6c6SMatthias Ringwald  */
19380c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_clear_periodic_advertiser_list = {
19390c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_CLEAR_PERIODIC_ADVERTISER_LIST, ""
19400c1cf6c6SMatthias Ringwald };
19410c1cf6c6SMatthias Ringwald 
19420c1cf6c6SMatthias Ringwald /**
19430c1cf6c6SMatthias Ringwald  */
19440c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_periodic_advertiser_list_size = {
19450c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_PERIODIC_ADVERTISER_LIST_SIZE, ""
19460c1cf6c6SMatthias Ringwald };
19470c1cf6c6SMatthias Ringwald 
19480c1cf6c6SMatthias Ringwald /**
19490c1cf6c6SMatthias Ringwald  */
19500c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_transmit_power = {
19510c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_TRANSMIT_POWER, ""
19520c1cf6c6SMatthias Ringwald };
19530c1cf6c6SMatthias Ringwald 
19540c1cf6c6SMatthias Ringwald /**
19550c1cf6c6SMatthias Ringwald  */
19560c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_rf_path_compensation = {
19570c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_RF_PATH_COMPENSATION, ""
19580c1cf6c6SMatthias Ringwald };
19590c1cf6c6SMatthias Ringwald 
19600c1cf6c6SMatthias Ringwald /**
19610c1cf6c6SMatthias Ringwald  * @param rf_tx_path_compensation_value * 0.1 dB, signed
19620c1cf6c6SMatthias Ringwald  * @param rf_rx_path_compensation_value * 0.1 dB, signed
19630c1cf6c6SMatthias Ringwald  */
19640c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_write_rf_path_compensation = {
19650c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_WRITE_RF_PATH_COMPENSATION, "22"
19660c1cf6c6SMatthias Ringwald };
19670c1cf6c6SMatthias Ringwald 
19680c1cf6c6SMatthias Ringwald /**
19690c1cf6c6SMatthias Ringwald  * @param peer_identity_address_type
19700c1cf6c6SMatthias Ringwald  * @param peer_identity_address
19710c1cf6c6SMatthias Ringwald  * @param privacy_mode
19720c1cf6c6SMatthias Ringwald  */
19730c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_privacy_mode = {
19740c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PRIVACY_MODE, "1B1"
19750c1cf6c6SMatthias Ringwald };
19760c1cf6c6SMatthias Ringwald 
19770c1cf6c6SMatthias Ringwald /**
19780c1cf6c6SMatthias Ringwald  * @param rx_channel
19790c1cf6c6SMatthias Ringwald  * @param phy
19800c1cf6c6SMatthias Ringwald  * @param modulation_index
19810c1cf6c6SMatthias Ringwald  * @param expected_cte_length
19820c1cf6c6SMatthias Ringwald  * @param expected_cte_type
19830c1cf6c6SMatthias Ringwald  * @param slot_durations
19840c1cf6c6SMatthias Ringwald  * @param switching_pattern_length
19850c1cf6c6SMatthias Ringwald  * @param antenna_ids[i]
19860c1cf6c6SMatthias Ringwald  */
19870c1cf6c6SMatthias Ringwald 
19880c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_receiver_test_v3 = {
19890c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_RECEIVER_TEST_V3, "111111a[1]"
19900c1cf6c6SMatthias Ringwald };
19910c1cf6c6SMatthias Ringwald 
19920c1cf6c6SMatthias Ringwald /**
19930c1cf6c6SMatthias Ringwald  * @param tx_channel
19940c1cf6c6SMatthias Ringwald  * @param test_data_length
19950c1cf6c6SMatthias Ringwald  * @param packet_payload
19960c1cf6c6SMatthias Ringwald  * @param phy
19970c1cf6c6SMatthias Ringwald  * @param cte_length
19980c1cf6c6SMatthias Ringwald  * @param cte_type
19990c1cf6c6SMatthias Ringwald  * @param switching_pattern_length
20000c1cf6c6SMatthias Ringwald  * @param antenna_ids[i]
20010c1cf6c6SMatthias Ringwald  */
20020c1cf6c6SMatthias Ringwald 
20030c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test_v3 = {
20040c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_TRANSMITTER_TEST_V3, "111111a[1]"
20050c1cf6c6SMatthias Ringwald };
20060c1cf6c6SMatthias Ringwald 
20070c1cf6c6SMatthias Ringwald /**
20080c1cf6c6SMatthias Ringwald  * @param advertising_handle
20090c1cf6c6SMatthias Ringwald  * @param cte_length
20100c1cf6c6SMatthias Ringwald  * @param cte_type
20110c1cf6c6SMatthias Ringwald  * @param cte_count
20120c1cf6c6SMatthias Ringwald  * @param switching_pattern_length
20130c1cf6c6SMatthias Ringwald  * @param antenna_ids[i]
20140c1cf6c6SMatthias Ringwald  */
20150c1cf6c6SMatthias Ringwald 
20160c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connectionless_cte_transmit_parameters = {
20170c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_CONNECTIONLESS_CTE_TRANSMIT_PARAMETERS, "1111a[1]"
20180c1cf6c6SMatthias Ringwald };
20190c1cf6c6SMatthias Ringwald 
20200c1cf6c6SMatthias Ringwald /**
20210c1cf6c6SMatthias Ringwald  * @param advertising_handle
20220c1cf6c6SMatthias Ringwald  * @param cte_enable
20230c1cf6c6SMatthias Ringwald  */
20240c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connectionless_cte_transmit_enable = {
20250c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_CONNECTIONLESS_CTE_TRANSMIT_ENABLE, "11"
20260c1cf6c6SMatthias Ringwald };
20270c1cf6c6SMatthias Ringwald 
20280c1cf6c6SMatthias Ringwald /**
20290c1cf6c6SMatthias Ringwald  * @param sync_handle
20300c1cf6c6SMatthias Ringwald  * @param sampling_enable
20310c1cf6c6SMatthias Ringwald  * @param slot_durations
20320c1cf6c6SMatthias Ringwald  * @param max_sampled_ctes
20330c1cf6c6SMatthias Ringwald  * @param switching_pattern_length
20340c1cf6c6SMatthias Ringwald  * @param antenna_ids[i]
20350c1cf6c6SMatthias Ringwald  */
20360c1cf6c6SMatthias Ringwald 
20370c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connectionless_iq_sampling_enable = {
20380c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_CONNECTIONLESS_IQ_SAMPLING_ENABLE, "2111a[i]"
20390c1cf6c6SMatthias Ringwald };
20400c1cf6c6SMatthias Ringwald 
20410c1cf6c6SMatthias Ringwald /**
20420c1cf6c6SMatthias Ringwald  * @param connection_handle
20430c1cf6c6SMatthias Ringwald  * @param sampling_enable
20440c1cf6c6SMatthias Ringwald  * @param slot_durations
20450c1cf6c6SMatthias Ringwald  * @param switching_pattern_length
20460c1cf6c6SMatthias Ringwald  * @param antenna_ids[i]
20470c1cf6c6SMatthias Ringwald  */
20480c1cf6c6SMatthias Ringwald 
20490c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connection_cte_receive_parameters = {
20500c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_CONNECTION_CTE_RECEIVE_PARAMETERS, "211a[1]"
20510c1cf6c6SMatthias Ringwald };
20520c1cf6c6SMatthias Ringwald 
20530c1cf6c6SMatthias Ringwald /**
20540c1cf6c6SMatthias Ringwald  * @param connection_handle
20550c1cf6c6SMatthias Ringwald  * @param cte_types
20560c1cf6c6SMatthias Ringwald  * @param switching_pattern_length
20570c1cf6c6SMatthias Ringwald  * @param antenna_ids[i]
20580c1cf6c6SMatthias Ringwald  */
20590c1cf6c6SMatthias Ringwald 
20600c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connection_cte_transmit_parameters = {
20610c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_CONNECTION_CTE_TRANSMIT_PARAMETERS, "21a[1]"
20620c1cf6c6SMatthias Ringwald };
20630c1cf6c6SMatthias Ringwald 
20640c1cf6c6SMatthias Ringwald /**
20650c1cf6c6SMatthias Ringwald  * @param connection_handle
20660c1cf6c6SMatthias Ringwald  * @param enable
20670c1cf6c6SMatthias Ringwald  * @param cte_request_interval
20680c1cf6c6SMatthias Ringwald  * @param requested_cte_length
20690c1cf6c6SMatthias Ringwald  * @param requested_cte_type
20700c1cf6c6SMatthias Ringwald  */
20710c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_connection_cte_request_enable = {
20720c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_CONNECTION_CTE_REQUEST_ENABLE, "H1211"
20730c1cf6c6SMatthias Ringwald };
20740c1cf6c6SMatthias Ringwald 
20750c1cf6c6SMatthias Ringwald /**
20760c1cf6c6SMatthias Ringwald  * @param connection_handle
20770c1cf6c6SMatthias Ringwald  * @param enable
20780c1cf6c6SMatthias Ringwald  */
20790c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_connection_cte_response_enable = {
20800c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_CONNECTION_CTE_RESPONSE_ENABLE, "H1"
20810c1cf6c6SMatthias Ringwald };
20820c1cf6c6SMatthias Ringwald 
20830c1cf6c6SMatthias Ringwald /**
20840c1cf6c6SMatthias Ringwald  */
20850c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_antenna_information = {
20860c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_ANTENNA_INFORMATION, ""
20870c1cf6c6SMatthias Ringwald };
20880c1cf6c6SMatthias Ringwald 
20890c1cf6c6SMatthias Ringwald /**
20900c1cf6c6SMatthias Ringwald  * @param sync_handle
20910c1cf6c6SMatthias Ringwald  * @param enable
20920c1cf6c6SMatthias Ringwald  */
20930c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_receive_enable = {
20940c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_RECEIVE_ENABLE, "H1"
20950c1cf6c6SMatthias Ringwald };
20960c1cf6c6SMatthias Ringwald 
20970c1cf6c6SMatthias Ringwald /**
20980c1cf6c6SMatthias Ringwald  * @param connection_handle
20990c1cf6c6SMatthias Ringwald  * @param service_data
21000c1cf6c6SMatthias Ringwald  * @param sync_handle
21010c1cf6c6SMatthias Ringwald  */
21020c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_sync_transfer = {
21030c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_SYNC_TRANSFER, "H22"
21040c1cf6c6SMatthias Ringwald };
21050c1cf6c6SMatthias Ringwald 
21060c1cf6c6SMatthias Ringwald /**
21070c1cf6c6SMatthias Ringwald  * @param connection_handle
21080c1cf6c6SMatthias Ringwald  * @param service_data
21090c1cf6c6SMatthias Ringwald  * @param advertising_handle
21100c1cf6c6SMatthias Ringwald  */
21110c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_set_info_transfer = {
21120c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_SET_INFO_TRANSFER, "H21"
21130c1cf6c6SMatthias Ringwald };
21140c1cf6c6SMatthias Ringwald 
21150c1cf6c6SMatthias Ringwald /**
21160c1cf6c6SMatthias Ringwald  * @param connection_handle
21170c1cf6c6SMatthias Ringwald  * @param mode
21180c1cf6c6SMatthias Ringwald  * @param skip
21190c1cf6c6SMatthias Ringwald  * @param sync_timeout
21200c1cf6c6SMatthias Ringwald  * @param cte_type
21210c1cf6c6SMatthias Ringwald  */
21220c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_sync_transfer_parameters = {
21230c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_SYNC_TRANSFER_PARAMETERS, "H1221"
21240c1cf6c6SMatthias Ringwald };
21250c1cf6c6SMatthias Ringwald 
21260c1cf6c6SMatthias Ringwald /**
21270c1cf6c6SMatthias Ringwald  * @param mode
21280c1cf6c6SMatthias Ringwald  * @param skip
21290c1cf6c6SMatthias Ringwald  * @param sync_timeout
21300c1cf6c6SMatthias Ringwald  * @param cte_type
21310c1cf6c6SMatthias Ringwald  */
21320c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_default_periodic_advertising_sync_transfer_parameters = {
21330c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_DEFAULT_PERIODIC_ADVERTISING_SYNC_TRANSFER_PARAMETERS, "1221"
21340c1cf6c6SMatthias Ringwald };
21350c1cf6c6SMatthias Ringwald 
21360c1cf6c6SMatthias Ringwald /**
21370c1cf6c6SMatthias Ringwald  * @param 256Remote_P-256_public_key_x
21380c1cf6c6SMatthias Ringwald  * @param 256Remote_P-256_public_key_y
21390c1cf6c6SMatthias Ringwald  * @param key_type
21400c1cf6c6SMatthias Ringwald  */
21410c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_generate_dhkey_v2 = {
21420c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_GENERATE_DHKEY_V2, "QQ1"
21430c1cf6c6SMatthias Ringwald };
21440c1cf6c6SMatthias Ringwald 
21450c1cf6c6SMatthias Ringwald /**
21460c1cf6c6SMatthias Ringwald  * @param action
21470c1cf6c6SMatthias Ringwald  */
21480c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_modify_sleep_clock_accuracy = {
21490c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_MODIFY_SLEEP_CLOCK_ACCURACY, "1"
21500c1cf6c6SMatthias Ringwald };
21510c1cf6c6SMatthias Ringwald 
21520c1cf6c6SMatthias Ringwald /**
21530c1cf6c6SMatthias Ringwald  */
2154b3e0a1b9SMatthias Ringwald const hci_cmd_t hci_le_read_buffer_size_v2 = {
2155b3e0a1b9SMatthias Ringwald         HCI_OPCODE_HCI_LE_READ_BUFFER_SIZE_V2, ""
21560c1cf6c6SMatthias Ringwald };
21570c1cf6c6SMatthias Ringwald 
21580c1cf6c6SMatthias Ringwald /**
21590c1cf6c6SMatthias Ringwald  * @param connection_handle
21600c1cf6c6SMatthias Ringwald  */
21610c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_iso_tx_sync = {
21620c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_ISO_TX_SYNC, "H"
21630c1cf6c6SMatthias Ringwald };
21640c1cf6c6SMatthias Ringwald 
21650c1cf6c6SMatthias Ringwald /**
21660c1cf6c6SMatthias Ringwald  * @param cig_id
21670c1cf6c6SMatthias Ringwald  * @param sdu_interval_m_to_s
21680c1cf6c6SMatthias Ringwald  * @param sdu_interval_s_to_m
21690c1cf6c6SMatthias Ringwald  * @param slaves_clock_accuracy
21700c1cf6c6SMatthias Ringwald  * @param packing
21710c1cf6c6SMatthias Ringwald  * @param framing
21720c1cf6c6SMatthias Ringwald  * @param max_transport_latency_m_to_s
21730c1cf6c6SMatthias Ringwald  * @param max_transport_latency_s_to_m
21740c1cf6c6SMatthias Ringwald  * @param cis_count
21750c1cf6c6SMatthias Ringwald  * @param cis_id[i]
21760c1cf6c6SMatthias Ringwald  * @param max_sdu_m_to_s[i]
21770c1cf6c6SMatthias Ringwald  * @param max_sdu_s_to_m[i]
21780c1cf6c6SMatthias Ringwald  * @param phy_m_to_s[i]
21790c1cf6c6SMatthias Ringwald  * @param phy_s_to_m[i]
21800c1cf6c6SMatthias Ringwald  * @param rtn_m_to_s[i]
21810c1cf6c6SMatthias Ringwald  * @param rtn_s_to_m[i]
21820c1cf6c6SMatthias Ringwald  */
21830c1cf6c6SMatthias Ringwald 
21840c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_cig_parameters = {
21850c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_CIG_PARAMETERS, "13311122a[1221111]"
21860c1cf6c6SMatthias Ringwald };
21870c1cf6c6SMatthias Ringwald 
21880c1cf6c6SMatthias Ringwald /**
21890c1cf6c6SMatthias Ringwald  * @param cig_id
21900c1cf6c6SMatthias Ringwald  * @param sdu_interval_m_to_s
21910c1cf6c6SMatthias Ringwald  * @param sdu_interval_s_to_m
21920c1cf6c6SMatthias Ringwald  * @param ft_m_to_s
21930c1cf6c6SMatthias Ringwald  * @param ft_s_to_m
21940c1cf6c6SMatthias Ringwald  * @param iso_interval
21950c1cf6c6SMatthias Ringwald  * @param slaves_clock_accuracy
21960c1cf6c6SMatthias Ringwald  * @param packing
21970c1cf6c6SMatthias Ringwald  * @param framing
21980c1cf6c6SMatthias Ringwald  * @param max_transport_latency_m_to_s
21990c1cf6c6SMatthias Ringwald  * @param max_transport_latency_s_to_m
22000c1cf6c6SMatthias Ringwald  * @param cis_count
22010c1cf6c6SMatthias Ringwald  * @param cis_id[i]
22020c1cf6c6SMatthias Ringwald  * @param nse[i]
22030c1cf6c6SMatthias Ringwald  * @param max_sdu_m_to_s[i]
22040c1cf6c6SMatthias Ringwald  * @param max_sdu_s_to_m[i]
22050c1cf6c6SMatthias Ringwald  * @param max_pdu_m_to_s[i]
22060c1cf6c6SMatthias Ringwald  * @param max_pdu_s_to_m[i]
22070c1cf6c6SMatthias Ringwald  * @param phy_m_to_s[i]
22080c1cf6c6SMatthias Ringwald  * @param phy_s_to_m[i]
22090c1cf6c6SMatthias Ringwald  * @param bn_m_to_s[i]
22100c1cf6c6SMatthias Ringwald  * @param bn_s_to_m[i]
22110c1cf6c6SMatthias Ringwald  */
22120c1cf6c6SMatthias Ringwald 
22130c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_cig_parameters_test = {
22140c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_CIG_PARAMETERS_TEST, "133112111a[1122221111]"
22150c1cf6c6SMatthias Ringwald };
22160c1cf6c6SMatthias Ringwald 
22170c1cf6c6SMatthias Ringwald /**
22180c1cf6c6SMatthias Ringwald  * @param cis_count
22190c1cf6c6SMatthias Ringwald  * @param cis_connection_handle[i]
22200c1cf6c6SMatthias Ringwald  * @param acl_connection_handle[i]
22210c1cf6c6SMatthias Ringwald  */
22220c1cf6c6SMatthias Ringwald 
22230c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_create_cis = {
22240c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_CREATE_CIS, "a[22]"
22250c1cf6c6SMatthias Ringwald };
22260c1cf6c6SMatthias Ringwald 
22270c1cf6c6SMatthias Ringwald /**
22280c1cf6c6SMatthias Ringwald  * @param cig_id
22290c1cf6c6SMatthias Ringwald  */
22300c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_cig = {
22310c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOVE_CIG, "1"
22320c1cf6c6SMatthias Ringwald };
22330c1cf6c6SMatthias Ringwald 
22340c1cf6c6SMatthias Ringwald /**
22350c1cf6c6SMatthias Ringwald  * @param connection_handle
22360c1cf6c6SMatthias Ringwald  */
22370c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_accept_cis_request = {
22380c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_ACCEPT_CIS_REQUEST, "H"
22390c1cf6c6SMatthias Ringwald };
22400c1cf6c6SMatthias Ringwald 
22410c1cf6c6SMatthias Ringwald /**
22420c1cf6c6SMatthias Ringwald  * @param connection_handle
22430c1cf6c6SMatthias Ringwald  */
22440c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_reject_cis_request = {
22451a2fdeb3SMatthias Ringwald     HCI_OPCODE_HCI_LE_REJECT_CIS_REQUEST, "H1"
22460c1cf6c6SMatthias Ringwald };
22470c1cf6c6SMatthias Ringwald 
22480c1cf6c6SMatthias Ringwald /**
22490c1cf6c6SMatthias Ringwald  * @param big_handle
22500c1cf6c6SMatthias Ringwald  * @param advertising_handle
22510c1cf6c6SMatthias Ringwald  * @param num_bis
22520c1cf6c6SMatthias Ringwald  * @param sdu_interval
22530c1cf6c6SMatthias Ringwald  * @param max_sdu
22540c1cf6c6SMatthias Ringwald  * @param max_transport_latency
22550c1cf6c6SMatthias Ringwald  * @param rtn
22560c1cf6c6SMatthias Ringwald  * @param phy
22570c1cf6c6SMatthias Ringwald  * @param packing
22580c1cf6c6SMatthias Ringwald  * @param framing
22590c1cf6c6SMatthias Ringwald  * @param encryption
22600c1cf6c6SMatthias Ringwald  * @param broadcast_code
22610c1cf6c6SMatthias Ringwald  */
22620c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_create_big = {
2263a10fc198SMatthias Ringwald     HCI_OPCODE_HCI_LE_CREATE_BIG, "11132211111K"
22640c1cf6c6SMatthias Ringwald };
22650c1cf6c6SMatthias Ringwald 
22660c1cf6c6SMatthias Ringwald /**
22670c1cf6c6SMatthias Ringwald  * @param big_handle
22680c1cf6c6SMatthias Ringwald  * @param advertising_handle
22690c1cf6c6SMatthias Ringwald  * @param num_bis
22700c1cf6c6SMatthias Ringwald  * @param sdu_interval
22710c1cf6c6SMatthias Ringwald  * @param iso_interval
22720c1cf6c6SMatthias Ringwald  * @param nse
22730c1cf6c6SMatthias Ringwald  * @param max_sdu
22740c1cf6c6SMatthias Ringwald  * @param max_PDU
22750c1cf6c6SMatthias Ringwald  * @param phy
22760c1cf6c6SMatthias Ringwald  * @param packing
22770c1cf6c6SMatthias Ringwald  * @param framing
22780c1cf6c6SMatthias Ringwald  * @param bn
22790c1cf6c6SMatthias Ringwald  * @param irc
22800c1cf6c6SMatthias Ringwald  * @param pto
22810c1cf6c6SMatthias Ringwald  * @param encryption
22820c1cf6c6SMatthias Ringwald  * @param broadcast_code
22830c1cf6c6SMatthias Ringwald  */
22840c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_create_big_test = {
2285a10fc198SMatthias Ringwald     HCI_OPCODE_HCI_LE_CREATE_BIG_TEST, "111321221111111K"
22860c1cf6c6SMatthias Ringwald };
22870c1cf6c6SMatthias Ringwald 
22880c1cf6c6SMatthias Ringwald /**
22890c1cf6c6SMatthias Ringwald  * @param big_handle
22900c1cf6c6SMatthias Ringwald  * @param reason
22910c1cf6c6SMatthias Ringwald  */
22920c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_terminate_big = {
22930c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_TERMINATE_BIG, "11"
22940c1cf6c6SMatthias Ringwald };
22950c1cf6c6SMatthias Ringwald 
22960c1cf6c6SMatthias Ringwald /**
22970c1cf6c6SMatthias Ringwald  * @param big_handle
22980c1cf6c6SMatthias Ringwald  * @param sync_handle
22990c1cf6c6SMatthias Ringwald  * @param encryption
23000c1cf6c6SMatthias Ringwald  * @param broadcast_code
23010c1cf6c6SMatthias Ringwald  * @param mse
23020c1cf6c6SMatthias Ringwald  * @param big_sync_timeout
23030c1cf6c6SMatthias Ringwald  * @param num_bis
23040c1cf6c6SMatthias Ringwald  * @param bis[i]
23050c1cf6c6SMatthias Ringwald  */
23060c1cf6c6SMatthias Ringwald 
23070c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_big_create_sync = {
2308a10fc198SMatthias Ringwald     HCI_OPCODE_HCI_LE_BIG_CREATE_SYNC, "1H1K12a[1]"
23090c1cf6c6SMatthias Ringwald };
23100c1cf6c6SMatthias Ringwald 
23110c1cf6c6SMatthias Ringwald /**
23120c1cf6c6SMatthias Ringwald  * @param big_handle
23130c1cf6c6SMatthias Ringwald  */
23140c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_big_terminate_sync = {
2315c0112d43SMatthias Ringwald     HCI_OPCODE_HCI_LE_BIG_TERMINATE_SYNC, "1"
23160c1cf6c6SMatthias Ringwald };
23170c1cf6c6SMatthias Ringwald 
23180c1cf6c6SMatthias Ringwald /**
23190c1cf6c6SMatthias Ringwald  * @param connection_handle
23200c1cf6c6SMatthias Ringwald  */
23210c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_request_peer_sca = {
23220c1cf6c6SMatthias Ringwald         HCI_OPCODE_HCI_LE_REQUEST_PEER_SCA, "H"
23230c1cf6c6SMatthias Ringwald };
23240c1cf6c6SMatthias Ringwald 
23250c1cf6c6SMatthias Ringwald /**
23260c1cf6c6SMatthias Ringwald  * @param connection_handle
23270c1cf6c6SMatthias Ringwald  * @param data_path_direction
23280c1cf6c6SMatthias Ringwald  * @param data_path_id
23290c1cf6c6SMatthias Ringwald  * @param codec_id_coding_format
23300c1cf6c6SMatthias Ringwald  * @param codec_id_company_identifier (Shall be ignored if codec_id_coding_format is not 0xFF)
23310c1cf6c6SMatthias Ringwald  * @param codec_id_vendor_codec_id (Shall be ignored if codec_id_coding_format is not 0xFF)
23320c1cf6c6SMatthias Ringwald  * @param controller_delay
23330c1cf6c6SMatthias Ringwald  * @param codec_configuration_length
23340c1cf6c6SMatthias Ringwald  * @param codec_configuration
23350c1cf6c6SMatthias Ringwald  */
23360c1cf6c6SMatthias Ringwald 
23370c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_setup_iso_data_path = {
23380c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SETUP_ISO_DATA_PATH, "H111223JV"
23390c1cf6c6SMatthias Ringwald };
23400c1cf6c6SMatthias Ringwald 
23410c1cf6c6SMatthias Ringwald /**
23420c1cf6c6SMatthias Ringwald  * @param connection_handle
23430c1cf6c6SMatthias Ringwald  */
23440c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_iso_data_path = {
23450c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOVE_ISO_DATA_PATH, "H1"
23460c1cf6c6SMatthias Ringwald };
23470c1cf6c6SMatthias Ringwald 
23480c1cf6c6SMatthias Ringwald /**
23490c1cf6c6SMatthias Ringwald  * @param connection_handle
23500c1cf6c6SMatthias Ringwald  * @param paylaod_type
23510c1cf6c6SMatthias Ringwald  */
23520c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_transmit_test = {
23530c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_ISO_TRANSMIT_TEST, "H1"
23540c1cf6c6SMatthias Ringwald };
23550c1cf6c6SMatthias Ringwald 
23560c1cf6c6SMatthias Ringwald /**
23570c1cf6c6SMatthias Ringwald  * @param connection_handle
23580c1cf6c6SMatthias Ringwald  * @param paylaod_type
23590c1cf6c6SMatthias Ringwald  */
23600c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_receive_test = {
23610c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_ISO_RECEIVE_TEST, "H1"
23620c1cf6c6SMatthias Ringwald };
23630c1cf6c6SMatthias Ringwald 
23640c1cf6c6SMatthias Ringwald /**
23650c1cf6c6SMatthias Ringwald  * @param connection_handle
23660c1cf6c6SMatthias Ringwald  */
23670c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_read_test_counters = {
23680c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_ISO_READ_TEST_COUNTERS, "H"
23690c1cf6c6SMatthias Ringwald };
23700c1cf6c6SMatthias Ringwald 
23710c1cf6c6SMatthias Ringwald /**
23720c1cf6c6SMatthias Ringwald  * @param connection_handle
23730c1cf6c6SMatthias Ringwald  */
23740c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_test_end = {
23750c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_ISO_TEST_END, "H"
23760c1cf6c6SMatthias Ringwald };
23770c1cf6c6SMatthias Ringwald 
23780c1cf6c6SMatthias Ringwald /**
23790c1cf6c6SMatthias Ringwald  * @param bit_number
23800c1cf6c6SMatthias Ringwald  * @param bit_value
23810c1cf6c6SMatthias Ringwald  */
23820c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_host_feature = {
23830c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_HOST_FEATURE, "11"
23840c1cf6c6SMatthias Ringwald };
23850c1cf6c6SMatthias Ringwald 
23860c1cf6c6SMatthias Ringwald /**
23870c1cf6c6SMatthias Ringwald  * @param connection_handle
23880c1cf6c6SMatthias Ringwald  */
23890c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_iso_link_quality = {
23900c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_ISO_LINK_QUALITY, "H"
23910c1cf6c6SMatthias Ringwald };
23920c1cf6c6SMatthias Ringwald 
23930c1cf6c6SMatthias Ringwald /**
23940c1cf6c6SMatthias Ringwald  * @param connection_handle
23950c1cf6c6SMatthias Ringwald  * @param phy
23960c1cf6c6SMatthias Ringwald  */
23970c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_enhanced_read_transmit_power_level = {
23980c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_ENHANCED_READ_TRANSMIT_POWER_LEVEL, "H1"
23990c1cf6c6SMatthias Ringwald };
24000c1cf6c6SMatthias Ringwald 
24010c1cf6c6SMatthias Ringwald /**
24020c1cf6c6SMatthias Ringwald  * @param connection_handle
24030c1cf6c6SMatthias Ringwald  * @param phy
24040c1cf6c6SMatthias Ringwald  */
24050c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_remote_transmit_power_level = {
24060c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_REMOTE_TRANSMIT_POWER_LEVEL, "H1"
24070c1cf6c6SMatthias Ringwald };
24080c1cf6c6SMatthias Ringwald 
24090c1cf6c6SMatthias Ringwald /**
24100c1cf6c6SMatthias Ringwald  * @param connection_handle
24110c1cf6c6SMatthias Ringwald  * @param high_threshold
24120c1cf6c6SMatthias Ringwald  * @param high_hysteresis
24130c1cf6c6SMatthias Ringwald  * @param low_threshold
24140c1cf6c6SMatthias Ringwald  * @param low_hysteresis
24150c1cf6c6SMatthias Ringwald  * @param min_time_spent
24160c1cf6c6SMatthias Ringwald  */
24170c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_path_loss_reporting_parameters = {
24180c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PATH_LOSS_REPORTING_PARAMETERS, "211112"
24190c1cf6c6SMatthias Ringwald };
24200c1cf6c6SMatthias Ringwald 
24210c1cf6c6SMatthias Ringwald /**
24220c1cf6c6SMatthias Ringwald  * @param connection_handle
24230c1cf6c6SMatthias Ringwald  * @param enable
24240c1cf6c6SMatthias Ringwald  */
24250c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_path_loss_reporting_enable = {
24260c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PATH_LOSS_REPORTING_ENABLE, "H1"
24270c1cf6c6SMatthias Ringwald };
24280c1cf6c6SMatthias Ringwald 
24290c1cf6c6SMatthias Ringwald /**
24300c1cf6c6SMatthias Ringwald  * @param connection_handle
24310c1cf6c6SMatthias Ringwald  * @param local_enable
24320c1cf6c6SMatthias Ringwald  * @param remote_enable
24330c1cf6c6SMatthias Ringwald  */
24340c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_transmit_power_reporting_enable = {
24350c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_TRANSMIT_POWER_REPORTING_ENABLE, "H11"
24360c1cf6c6SMatthias Ringwald };
24370c1cf6c6SMatthias Ringwald 
24380c1cf6c6SMatthias Ringwald /**
24390c1cf6c6SMatthias Ringwald  * @param tx_channel
24400c1cf6c6SMatthias Ringwald  * @param test_data_length
24410c1cf6c6SMatthias Ringwald  * @param packet_payload
24420c1cf6c6SMatthias Ringwald  * @param phy
24430c1cf6c6SMatthias Ringwald  * @param cte_length
24440c1cf6c6SMatthias Ringwald  * @param cte_type
24450c1cf6c6SMatthias Ringwald  * @param switching_pattern_length
24460c1cf6c6SMatthias Ringwald  * @param antenna_ids[i]
24470c1cf6c6SMatthias Ringwald  * @param transmit_power_level
24480c1cf6c6SMatthias Ringwald  */
24490c1cf6c6SMatthias Ringwald 
24500c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test_v4 = {
24510c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_TRANSMITTER_TEST_V4, "111111a[1]1"
24520c1cf6c6SMatthias Ringwald };
2453ca13daefSMatthias Ringwald 
2454*03a8d1d2SMatthias Ringwald /**
2455*03a8d1d2SMatthias Ringwald  * @param advertising_handle
2456*03a8d1d2SMatthias Ringwald  * @param change_reason
2457*03a8d1d2SMatthias Ringwald  */
2458*03a8d1d2SMatthias Ringwald const hci_cmd_t hci_le_set_data_related_address_change = {
2459*03a8d1d2SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_DATA_RELATED_ADDRESS_CHANGES, "11"
2460*03a8d1d2SMatthias Ringwald };
2461*03a8d1d2SMatthias Ringwald 
2462*03a8d1d2SMatthias Ringwald /**
2463*03a8d1d2SMatthias Ringwald  * @param subrate_min
2464*03a8d1d2SMatthias Ringwald  * @param subrate_max
2465*03a8d1d2SMatthias Ringwald  * @param max_latency
2466*03a8d1d2SMatthias Ringwald  * @param continuation_number
2467*03a8d1d2SMatthias Ringwald  * @param supervision_timeout
2468*03a8d1d2SMatthias Ringwald  */
2469*03a8d1d2SMatthias Ringwald const hci_cmd_t hci_le_set_default_subrate = {
2470*03a8d1d2SMatthias Ringwald         HCI_OPCODE_HCI_LE_SET_DEFAULT_SUBRATE, "22222"
2471*03a8d1d2SMatthias Ringwald };
2472*03a8d1d2SMatthias Ringwald 
2473*03a8d1d2SMatthias Ringwald /**
2474*03a8d1d2SMatthias Ringwald  * @param connection_handle
2475*03a8d1d2SMatthias Ringwald  * @param subrate_min
2476*03a8d1d2SMatthias Ringwald  * @param subrate_max
2477*03a8d1d2SMatthias Ringwald  * @param max_latency
2478*03a8d1d2SMatthias Ringwald  * @param continuation_number
2479*03a8d1d2SMatthias Ringwald  * @param supervision_timeout
2480*03a8d1d2SMatthias Ringwald  */
2481*03a8d1d2SMatthias Ringwald const hci_cmd_t hci_le_subrate_request = {
2482*03a8d1d2SMatthias Ringwald         HCI_OPCODE_HCI_LE_SUBRATE_REQUEST, "H22222"
2483*03a8d1d2SMatthias Ringwald };
2484*03a8d1d2SMatthias Ringwald 
248556042629SMatthias Ringwald #endif
2486a42798c3SMatthias Ringwald 
2487a42798c3SMatthias Ringwald // Broadcom / Cypress specific HCI commands
2488a42798c3SMatthias Ringwald 
2489a42798c3SMatthias Ringwald /**
2490067ecc36SMatthias Ringwald  * @brief Enable Wide-Band Speech / mSBC decoding for PCM
2491067ecc36SMatthias Ringwald  * @param enable_wbs is 0 for disable, 1 for enable
2492067ecc36SMatthias Ringwald  * @param uuid_wbs is 2 for EV2/EV3
2493067ecc36SMatthias Ringwald  */
2494067ecc36SMatthias Ringwald const hci_cmd_t hci_bcm_enable_wbs = {
2495067ecc36SMatthias Ringwald     HCI_OPCODE_HCI_BCM_ENABLE_WBS, "12"
2496067ecc36SMatthias Ringwald         // return: status
2497067ecc36SMatthias Ringwald };
2498067ecc36SMatthias Ringwald 
2499067ecc36SMatthias Ringwald /**
2500d7ae48d5SMatthias Ringwald  * @brief Configure PCM2, see Cypress AN214937
2501d7ae48d5SMatthias Ringwald  * @param action
2502d7ae48d5SMatthias Ringwald  * @param test_options
2503d7ae48d5SMatthias Ringwald  * @param op_mode
2504d7ae48d5SMatthias Ringwald  * @param sync_and_clock_options
2505d7ae48d5SMatthias Ringwald  * @param pcm_clock_freq
2506d7ae48d5SMatthias Ringwald  * @param sync_signal_width
2507d7ae48d5SMatthias Ringwald  * @param slot_width
2508d7ae48d5SMatthias Ringwald  * @param number_of_slots
2509d7ae48d5SMatthias Ringwald  * @param bank_0_fill_mode
2510d7ae48d5SMatthias Ringwald  * @param bank_0_number_of_fill_bits
2511d7ae48d5SMatthias Ringwald  * @param bank_0_programmable_fill_data
2512d7ae48d5SMatthias Ringwald  * @param bank_1_fill_mode
2513d7ae48d5SMatthias Ringwald  * @param bank_1_number_of_fill_bits
2514d7ae48d5SMatthias Ringwald  * @param bank_1_programmable_fill_data
2515d7ae48d5SMatthias Ringwald  * @param data_justify_and_bit_order_options
2516d7ae48d5SMatthias Ringwald  * @param ch_0_slot_number
2517d7ae48d5SMatthias Ringwald  * @param ch_1_slot_number
2518d7ae48d5SMatthias Ringwald  * @param ch_2_slot_number
2519d7ae48d5SMatthias Ringwald  * @param ch_3_slot_number
2520d7ae48d5SMatthias Ringwald  * @param ch_4_slot_number
2521d7ae48d5SMatthias Ringwald  * @param ch_0_period
2522d7ae48d5SMatthias Ringwald  * @param ch_1_period
2523d7ae48d5SMatthias Ringwald  * @param ch_2_period
2524d7ae48d5SMatthias Ringwald *
2525d7ae48d5SMatthias Ringwald  */
2526d7ae48d5SMatthias Ringwald const hci_cmd_t hci_bcm_pcm2_setup = {
2527d7ae48d5SMatthias Ringwald         HCI_OPCODE_HCI_BCM_PCM2_SETUP, "11114111111111111111111"
2528d7ae48d5SMatthias Ringwald };
2529d7ae48d5SMatthias Ringwald 
2530d7ae48d5SMatthias Ringwald /**
2531a42798c3SMatthias Ringwald  * @brief Configure SCO Routing (BCM)
2532a42798c3SMatthias Ringwald  * @param sco_routing is 0 for PCM, 1 for Transport, 2 for Codec and 3 for I2S
2533a42798c3SMatthias Ringwald  * @param pcm_interface_rate is 0 for 128KBps, 1 for 256 KBps, 2 for 512KBps, 3 for 1024KBps, and 4 for 2048Kbps
2534a42798c3SMatthias Ringwald  * @param frame_type is 0 for short and 1 for long
2535a42798c3SMatthias Ringwald  * @param sync_mode is 0 for slave and 1 for master
2536a42798c3SMatthias Ringwald  * @param clock_mode is 0 for slabe and 1 for master
2537a42798c3SMatthias Ringwald  */
2538a42798c3SMatthias Ringwald const hci_cmd_t hci_bcm_write_sco_pcm_int = {
2539ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_BCM_WRITE_SCO_PCM_INT, "11111"
2540a42798c3SMatthias Ringwald     // return: status
2541a42798c3SMatthias Ringwald };
2542eab6959fSMatthias Ringwald 
2543eab6959fSMatthias Ringwald /**
2544762c3e10SMatthias Ringwald  * @brief Configure PCM Data Format (BCM)
2545762c3e10SMatthias Ringwald  * @param lsb_position 0x00 – LSB last/MSB first, 0x01 – LSB first/MSB last
2546762c3e10SMatthias Ringwald  * @param fill_bits_value three bit value defines the fill bits used by the PCM interface,only if fill_data_selection == programmable
2547762c3e10SMatthias Ringwald  * @param fill_data_selection 0x00 zeros, 0x01 ones, 0x02 sign bit, 0x03 programmable
2548762c3e10SMatthias Ringwald  * @param number_of_fill_bits 0..3
2549762c3e10SMatthias Ringwald  * @param right_left_justification 0x00 left justified, 0x01 right justified
2550762c3e10SMatthias Ringwald  */
2551762c3e10SMatthias Ringwald const hci_cmd_t hci_bcm_write_pcm_data_format_param = {
2552762c3e10SMatthias Ringwald         HCI_OPCODE_HCI_BCM_WRITE_PCM_DATA_FORMAT_PARAM, "11111"
2553762c3e10SMatthias Ringwald         // return: status
2554762c3e10SMatthias Ringwald };
2555762c3e10SMatthias Ringwald 
2556762c3e10SMatthias Ringwald /**
2557067ecc36SMatthias Ringwald  * @brief Configure the I2S/PCM interface (BCM)
2558067ecc36SMatthias Ringwald  * @param i2s_enable is 0 for off, 1 for on
2559067ecc36SMatthias Ringwald  * @param is_master is 0 for slave, is 1 for master
2560067ecc36SMatthias Ringwald  * @param sample_rate is 0 for 8 kHz, 1 for 16 kHz, 2 for 4 kHz
2561067ecc36SMatthias 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
2562067ecc36SMatthias Ringwald  */
2563067ecc36SMatthias Ringwald const hci_cmd_t hci_bcm_write_i2spcm_interface_param = {
256458323d58SMatthias Ringwald     HCI_OPCODE_HCI_BCM_WRITE_I2SPCM_INTERFACE_PARAM, "1111"
2565067ecc36SMatthias Ringwald         // return: status
2566067ecc36SMatthias Ringwald };
2567067ecc36SMatthias Ringwald 
2568067ecc36SMatthias Ringwald 
2569067ecc36SMatthias Ringwald /**
2570eab6959fSMatthias Ringwald  * @brief Activates selected Sleep Mode
2571eab6959fSMatthias 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
2572eab6959fSMatthias Ringwald  * @param idle_threshold_host (modes 1,2,5,7) time until considered idle, unit roughly 300 ms
2573eab6959fSMatthias Ringwald  * @param idle_threshold_controller (modes 1-7,9) time until considered idle, unit roughly 300 ms
2574eab6959fSMatthias Ringwald  * @param bt_wake_active_mode (modes 1,2,7) 0 = BT_WAKE line is active high, 1 = BT_WAKE is active low
2575eab6959fSMatthias Ringwald  * @param host_wake_active_mode (modes 1,2,5,7) 0 = HOST_WAKE line is active high, 1 = HOST_WAKE is active low
2576eab6959fSMatthias Ringwald  * @param allow_host_sleep_during_sco (modes 1,2,3,5,7)
2577eab6959fSMatthias Ringwald  * @param combine_sleep_mode_and_lpm  (modes 1,2,3,5,7)
2578eab6959fSMatthias Ringwald  * @param enable_tristate_control_of_uart_tx_line (modes 1,2,7)
2579eab6959fSMatthias Ringwald  * @param active_connection_handling_on_suspend (modes 3,5)
2580eab6959fSMatthias Ringwald  * @param resume_timeout (modes 3,5)
2581eab6959fSMatthias Ringwald  * @param enable_break_to_host (mode 12)
2582eab6959fSMatthias Ringwald  * @param pulsed_host_wake (modes 1,12)
2583eab6959fSMatthias Ringwald  */
2584eab6959fSMatthias Ringwald const hci_cmd_t hci_bcm_set_sleep_mode = {
2585ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_BCM_SET_SLEEP_MODE, "111111111111"
2586eab6959fSMatthias Ringwald };
25875cdaddfaSMatthias Ringwald 
25885cdaddfaSMatthias Ringwald /**
25895cdaddfaSMatthias Ringwald  * @brief Set TX Power Table
25905cdaddfaSMatthias Ringwald  * @param is_le 0=classic, 1=LE
25915cdaddfaSMatthias Ringwald  * @param chip_max_tx_pwr_db chip level max TX power in dBM
25925cdaddfaSMatthias Ringwald  */
25935cdaddfaSMatthias Ringwald const hci_cmd_t hci_bcm_write_tx_power_table = {
2594ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_BCM_WRITE_TX_POWER_TABLE, "11"
25955cdaddfaSMatthias Ringwald };
25965cdaddfaSMatthias Ringwald 
25975cdaddfaSMatthias Ringwald const hci_cmd_t hci_bcm_set_tx_pwr = {
2598ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_BCM_SET_TX_PWR, "11H"
25995cdaddfaSMatthias Ringwald };
2600ba39ed56SMatthias Ringwald 
2601ba39ed56SMatthias Ringwald /**
260215fca961SMatthias Ringwald  * @brief This command starts receiving packets using packet transmission parameters such as
260315fca961SMatthias Ringwald  *        frequency channel, packet type, and packet length. It is used for Packet RX.
26046f029df8SMatthias Ringwald  * @see   processors.wiki.ti.com/index.php/CC256x_Testing_Guide#Continuous_RX
260515fca961SMatthias Ringwald  * @param frequency
260615fca961SMatthias Ringwald  * @param ADPLL loop mode
260715fca961SMatthias Ringwald  */
260815fca961SMatthias Ringwald const hci_cmd_t hci_ti_drpb_tester_con_rx = {
260915fca961SMatthias Ringwald         0xFD17, "11"
261015fca961SMatthias Ringwald };
261115fca961SMatthias Ringwald 
261215fca961SMatthias Ringwald /**
2613ba39ed56SMatthias Ringwald  *
2614ba39ed56SMatthias Ringwald  *
2615ba39ed56SMatthias Ringwald  * @brief This command tests the RF transceiver in continuous transmission mode.
2616ba39ed56SMatthias Ringwald  *        The transmitter is activated by configuring the transmission parameters such as pattern,
2617ba39ed56SMatthias Ringwald  *        modulation, and frequency.
2618ba39ed56SMatthias Ringwald  * @see   processors.wiki.ti.com/index.php/CC256x_VS_HCI_Commands#HCI_VS_DRPb_Tester_Con_TX.280xFD84.29
2619ba39ed56SMatthias Ringwald  * @param modulation
262015fca961SMatthias Ringwald  * @param test_pattern
2621ba39ed56SMatthias Ringwald  * @param frequency
2622ba39ed56SMatthias Ringwald  * @param power_level
2623ba39ed56SMatthias Ringwald  * @param reserved1
2624ba39ed56SMatthias Ringwald  * @param reserved2
2625ba39ed56SMatthias Ringwald  */
2626ba39ed56SMatthias Ringwald const hci_cmd_t hci_ti_drpb_tester_con_tx = {
2627ba39ed56SMatthias Ringwald     0xFD84, "111144"
2628ba39ed56SMatthias Ringwald };
2629ba39ed56SMatthias Ringwald 
2630ba39ed56SMatthias Ringwald /**
2631ba39ed56SMatthias Ringwald  * @brief This command starts sending/receiving packets using packet transmission parameters such as
2632ba39ed56SMatthias Ringwald  *        frequency channel, packet type, and packet length. It is used for Packet TX/RX.
2633ba39ed56SMatthias Ringwald  * @see   processors.wiki.ti.com/index.php/CC256x_VS_HCI_Commands#HCI_VS_DRPb_Tester_Packet_TX_RX_.280xFD85.29
2634ba39ed56SMatthias Ringwald  * @param frequency_mode
2635ba39ed56SMatthias Ringwald  * @param tx_single_frequency
2636ba39ed56SMatthias Ringwald  * @param rx_single_frequency
2637ba39ed56SMatthias Ringwald  * @param acl_packet_type
2638ba39ed56SMatthias Ringwald  * @paarm acl_packet_data_pattern
2639ba39ed56SMatthias Ringwald  * @param reserved
2640ba39ed56SMatthias Ringwald  * @param power_level
2641ba39ed56SMatthias Ringwald  * @param disable_whitening
2642ba39ed56SMatthias Ringwald  * @param prbs9_initialization_value
2643ba39ed56SMatthias Ringwald  */
2644ba39ed56SMatthias Ringwald const hci_cmd_t hci_ti_drpb_tester_packet_tx_rx = {
2645ba39ed56SMatthias Ringwald     0xFD85, "1111112112"
2646ba39ed56SMatthias Ringwald };
2647365a7dd1SMatthias Ringwald 
2648733a7793SMatthias Ringwald 
2649733a7793SMatthias Ringwald /**
2650733a7793SMatthias Ringwald  * @param best effort access percentage
2651733a7793SMatthias Ringwald  * @param guaranteed access percentage
2652733a7793SMatthias Ringwald  * @param poll period
2653733a7793SMatthias Ringwald  * @param slave burst after tx
2654733a7793SMatthias Ringwald  * @param slave master search count
2655733a7793SMatthias Ringwald  * @param master burst after tx enable
2656733a7793SMatthias Ringwald  * @param master burst after rx limit
2657733a7793SMatthias Ringwald  */
2658cf26f982SMatthias Ringwald const hci_cmd_t hci_ti_configure_ddip = {
2659733a7793SMatthias Ringwald     HCI_OPCODE_HCI_TI_VS_CONFIGURE_DDIP, "1111111"
2660733a7793SMatthias Ringwald };
2661733a7793SMatthias Ringwald 
2662365a7dd1SMatthias Ringwald /**
2663365a7dd1SMatthias Ringwald  * @brief This command is used to associate the requested ACL handle with Wide Band Speech configuration.
2664365a7dd1SMatthias Ringwald  * @param enable 0=disable, 1=enable
2665365a7dd1SMatthias Ringwald  * @param a3dp_role (NL5500, WL128x only) 0=source,1=sink
2666365a7dd1SMatthias Ringwald  * @param code_upload (NL5500, WL128x only) 0=do not load a3dp code, 1=load a3dp code
2667365a7dd1SMatthias Ringwald  * @param reserved for future use
2668365a7dd1SMatthias Ringwald  */
2669365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_avrp_enable = {
2670365a7dd1SMatthias Ringwald         0xFD92, "1112"
2671365a7dd1SMatthias Ringwald };
2672365a7dd1SMatthias Ringwald 
2673365a7dd1SMatthias Ringwald /**
2674365a7dd1SMatthias Ringwald  * @brief This command is used to associate the requested ACL handle with Wide Band Speech configuration.
2675365a7dd1SMatthias Ringwald  * @param acl_con_handle
2676365a7dd1SMatthias Ringwald  */
2677365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_wbs_associate = {
2678365a7dd1SMatthias Ringwald         0xFD78, "H"
2679365a7dd1SMatthias Ringwald };
2680365a7dd1SMatthias Ringwald 
2681365a7dd1SMatthias Ringwald /**
2682365a7dd1SMatthias Ringwald  * @brief This command is used to disassociate Wide Band Speech configuration from any ACL handle.
2683365a7dd1SMatthias Ringwald  */
2684365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_wbs_disassociate = {
2685365a7dd1SMatthias Ringwald         0xFD79, ""
2686365a7dd1SMatthias Ringwald };
2687365a7dd1SMatthias Ringwald 
2688365a7dd1SMatthias Ringwald /**
2689365a7dd1SMatthias Ringwald  * @brief This command configures the codec interface parameters and the PCM clock rate, which is relevant when
2690365a7dd1SMatthias Ringwald           the Bluetooth core generates the clock. This command must be used by the host to use the PCM
2691365a7dd1SMatthias Ringwald           interface.
2692365a7dd1SMatthias Ringwald  * @param clock_rate in kHz
2693365a7dd1SMatthias Ringwald  * @param clock_direction 0=master/output, 1=slave/input
2694365a7dd1SMatthias Ringwald  * @param frame_sync_frequency in Hz
2695365a7dd1SMatthias Ringwald  * @param frame_sync_duty_cycle 0=50% (I2S Format), 0x0001-0xffff number of cycles of PCM clock
2696365a7dd1SMatthias Ringwald  * @param frame_sync_edge 0=driven/sampled at rising edge, 1=driven/sampled at falling edge of PCM clock
2697365a7dd1SMatthias Ringwald  * @param frame_sync_polariy 0=active high, 1=active low
2698365a7dd1SMatthias Ringwald  * @param reserved1
2699365a7dd1SMatthias Ringwald  * @param channel_1_data_out_size sample size in bits
2700365a7dd1SMatthias Ringwald  * @param channel_1_data_out_offset number of PCM clock cycles between rising of frame sync and data start
2701365a7dd1SMatthias Ringwald  * @param channel_1_data_out_edge 0=data driven at rising edge, 1=data driven at falling edge of PCM clock
2702365a7dd1SMatthias Ringwald  * @param channel_1_data_in_size sample size in bits
2703365a7dd1SMatthias Ringwald  * @param channel_1_data_in_offset number of PCM clock cycles between rising of frame sync and data start
2704365a7dd1SMatthias Ringwald  * @param channel_1_data_in_edge 0=data sampled at rising edge, 1=data sampled at falling edge of PCM clock
2705365a7dd1SMatthias Ringwald  * @param fsync_multiplier this field is only relevant to CC256XB from service pack 0.2 !!! -> use 0x00
2706365a7dd1SMatthias Ringwald  * @param channel_2_data_out_size sample size in bits
2707365a7dd1SMatthias Ringwald  * @param channel_2_data_out_offset number of PCM clock cycles between rising of frame sync and data start
2708365a7dd1SMatthias Ringwald  * @param channel_2_data_out_edge 0=data driven at rising edge, 1=data driven at falling edge of PCM clock
2709365a7dd1SMatthias Ringwald  * @param channel_2_data_in_size sample size in bits
2710365a7dd1SMatthias Ringwald  * @param channel_2_data_in_offset number of PCM clock cycles between rising of frame sync and data start
2711365a7dd1SMatthias Ringwald  * @param channel_2_data_in_edge 0=data sampled at rising edge, 1=data sampled at falling edge of PCM clock
2712365a7dd1SMatthias Ringwald  * @param reserved2
2713365a7dd1SMatthias Ringwald  *
2714365a7dd1SMatthias Ringwald  */
2715365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_write_codec_config = {
2716365a7dd1SMatthias Ringwald         0xFD06, "214211122122112212211"
2717365a7dd1SMatthias Ringwald };
271815fca961SMatthias Ringwald 
271915fca961SMatthias Ringwald /**
272015fca961SMatthias Ringwald  * @brief This command is used only for internal testing.
27216f029df8SMatthias Ringwald  * @see   processors.wiki.ti.com/index.php/CC256x_Testing_Guide#Continuous_TX
272215fca961SMatthias Ringwald  * @param frequency
272315fca961SMatthias Ringwald  * @param ADPLL loop mode
272415fca961SMatthias Ringwald  */
272515fca961SMatthias Ringwald const hci_cmd_t hci_ti_drpb_enable_rf_calibration = {
272615fca961SMatthias Ringwald         0xFD80, "141"
272715fca961SMatthias Ringwald };
272815fca961SMatthias Ringwald 
272915fca961SMatthias Ringwald /**
273015fca961SMatthias Ringwald  * @brief This command command is only required for the continuous TX test of modulated
273115fca961SMatthias Ringwald  * (GFSK, π/4-DQPSK or 8DPSK) signal. This command should be skipped when performing continuous TX test for CW.
27326f029df8SMatthias Ringwald  * @see   processors.wiki.ti.com/index.php/CC256x_Testing_Guide#Continuous_RX
273315fca961SMatthias Ringwald  * @param frequency
273415fca961SMatthias Ringwald  * @param ADPLL loop mode
273515fca961SMatthias Ringwald  */
273615fca961SMatthias Ringwald const hci_cmd_t hci_ti_write_hardware_register = {
273715fca961SMatthias Ringwald         0xFF01, "42"
273815fca961SMatthias Ringwald };
27391645c45cSMatthias Ringwald 
27401645c45cSMatthias Ringwald /**
27411645c45cSMatthias Ringwald  * @brief Configure SCO routing on Realtek Controllers
27421645c45cSMatthias Ringwald  */
27431645c45cSMatthias Ringwald const hci_cmd_t hci_rtk_configure_sco_routing = {
274492ce4e6aSMatthias Ringwald     HCI_OPCODE_HCI_RTK_CONFIGURE_SCO_ROUTING, "111111111"
274592ce4e6aSMatthias Ringwald };
274692ce4e6aSMatthias Ringwald 
274792ce4e6aSMatthias Ringwald /**
274892ce4e6aSMatthias Ringwald * @brief Read Card Information
274992ce4e6aSMatthias Ringwald */
275092ce4e6aSMatthias Ringwald const hci_cmd_t hci_rtk_read_card_info = {
275192ce4e6aSMatthias Ringwald     HCI_OPCODE_HCI_RTK_READ_CARD_INFO, "11111"
27521645c45cSMatthias Ringwald };
27530e1c28d5SMatthias Ringwald 
27540e1c28d5SMatthias Ringwald 
27550e1c28d5SMatthias Ringwald /**
27560e1c28d5SMatthias Ringwald  * @param voice_path 0x00 - transport, 0x01 - I2S/PCM
27570e1c28d5SMatthias Ringwald  */
27580e1c28d5SMatthias Ringwald const hci_cmd_t hci_nxp_set_sco_data_path = {
27590e1c28d5SMatthias Ringwald         HCI_OPCODE_HCI_NXP_SET_SCO_DATA_PATH, "1"
27600e1c28d5SMatthias Ringwald };
27610e1c28d5SMatthias Ringwald 
27620e1c28d5SMatthias Ringwald /**
27630e1c28d5SMatthias Ringwald  * @param settings bits 7-5: reserved, bit 4: pcm clock on, bit 3: reserved, bit 2: pcm sync source, bit 1: master/slave, bit 0: pcm direction
27640e1c28d5SMatthias Ringwald  */
27650e1c28d5SMatthias Ringwald const hci_cmd_t hci_nxp_write_pcm_i2s_settings = {
27660e1c28d5SMatthias Ringwald         HCI_OPCODE_HCI_NXP_WRITE_PCM_I2S_SETTINGS, "1"
27670e1c28d5SMatthias Ringwald };
27680e1c28d5SMatthias Ringwald 
27690e1c28d5SMatthias Ringwald /**
27700e1c28d5SMatthias Ringwald  * @param sync_settings_1 bits 7-2: reserved, bit 1: ISR, bit 0: ISR
27710e1c28d5SMatthias Ringwald  * @param sync_settings_2 bits 15-11: reserved, bit 10: 16k synchronization, bit 9: clock setting, bit 8: main clock, bits 7-5: reserved, bit 4: i2s sent in right channel, bit 3: clock alignment DIN, bit 2: clock alignment DOUT, bits 1-0: mode
27720e1c28d5SMatthias Ringwald  */
27730e1c28d5SMatthias Ringwald const hci_cmd_t hci_nxp_write_pcm_i2s_sync_settings = {
27740e1c28d5SMatthias Ringwald         HCI_OPCODE_HCI_NXP_WRITE_PCM_I2S_SYNC_SETTINGS, "12"
27750e1c28d5SMatthias Ringwald };
27760e1c28d5SMatthias Ringwald 
27770e1c28d5SMatthias Ringwald /**
27780e1c28d5SMatthias Ringwald  * @param settings bits 15-14: reserved, bit 13-10: each bit == one PCM time slot,, bits 9-2: slot relative to PCM synchronization, bits 1-0: PCM slots to be used
27790e1c28d5SMatthias Ringwald  */
27800e1c28d5SMatthias Ringwald const hci_cmd_t hci_nxp_write_pcm_link_settings = {
27810e1c28d5SMatthias Ringwald         HCI_OPCODE_HCI_NXP_WRITE_PCM_LINK_SETTINGS, "2"
27820e1c28d5SMatthias Ringwald };
27830e1c28d5SMatthias Ringwald 
27840e1c28d5SMatthias Ringwald /**
27850e1c28d5SMatthias Ringwald  * @param next_connection_wbs 0: CVSD, 1: mSBC
27860e1c28d5SMatthias Ringwald  */
27870e1c28d5SMatthias Ringwald const hci_cmd_t hci_nxp_set_wbs_connection = {
27880e1c28d5SMatthias Ringwald         HCI_OPCODE_HCI_NXP_SET_WBS_CONNECTION, "1"
27890e1c28d5SMatthias Ringwald };
27900e1c28d5SMatthias Ringwald 
27910e1c28d5SMatthias Ringwald /**
27920e1c28d5SMatthias Ringwald  * @param action
27930e1c28d5SMatthias Ringwald  * @param operation mode
27940e1c28d5SMatthias Ringwald  * @param sco_handle_1
27950e1c28d5SMatthias Ringwald  * @param sco_handle_2
27960e1c28d5SMatthias Ringwald  */
27970e1c28d5SMatthias Ringwald const hci_cmd_t hci_nxp_host_pcm_i2s_audio_config = {
27980e1c28d5SMatthias Ringwald         HCI_OPCODE_HCI_NXP_HOST_PCM_I2S_AUDIO_CONFIG, "11HH"
27990e1c28d5SMatthias Ringwald };
28000e1c28d5SMatthias Ringwald 
28010e1c28d5SMatthias Ringwald /**
28020e1c28d5SMatthias Ringwald  * @param action
28030e1c28d5SMatthias Ringwald  */
28040e1c28d5SMatthias Ringwald const hci_cmd_t hci_nxp_host_pcm_i2s_control_enable = {
28050e1c28d5SMatthias Ringwald         HCI_OPCODE_HCI_NXP_HOST_PCM_I2S_CONTROL_ENABLE, "1"
28060e1c28d5SMatthias Ringwald };
2807