xref: /btstack/src/hci_cmd.c (revision 211a5343c565b91bd657496730b3d5918c558f73)
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 
291*211a5343SMatthias Ringwald 
292*211a5343SMatthias Ringwald uint16_t hci_cmd_create_from_template_with_vargs(uint8_t * hci_cmd_buffer, const hci_cmd_t * cmd, ...){
293*211a5343SMatthias Ringwald     va_list argptr;
294*211a5343SMatthias Ringwald     va_start(argptr, cmd);
295*211a5343SMatthias Ringwald     uint16_t size = hci_cmd_create_from_template(hci_cmd_buffer, cmd, argptr);
296*211a5343SMatthias Ringwald     va_end(argptr);
297*211a5343SMatthias Ringwald     return size;
298*211a5343SMatthias Ringwald }
299*211a5343SMatthias 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 /**
48056042629SMatthias Ringwald  * @param handle
48156042629SMatthias Ringwald  * @param transmit_bandwidth 8000(64kbps)
48256042629SMatthias Ringwald  * @param receive_bandwidth  8000(64kbps)
48356042629SMatthias Ringwald  * @param max_latency        >= 7ms for eSCO, 0xFFFF do not care
48456042629SMatthias Ringwald  * @param voice_settings     e.g. CVSD, Input Coding: Linear, Input Data Format: 2’s complement, data 16bit: 00011000000 == 0x60
48556042629SMatthias Ringwald  * @param retransmission_effort  e.g. 0xFF do not care
48656042629SMatthias Ringwald  * @param packet_type        at least EV3 for eSCO
48756042629SMatthias Ringwald  */
48856042629SMatthias Ringwald const hci_cmd_t hci_setup_synchronous_connection = {
489ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_SETUP_SYNCHRONOUS_CONNECTION, "H442212"
49056042629SMatthias Ringwald };
49156042629SMatthias Ringwald 
49256042629SMatthias Ringwald /**
49356042629SMatthias Ringwald  * @param bd_addr
49456042629SMatthias Ringwald  * @param transmit_bandwidth
49556042629SMatthias Ringwald  * @param receive_bandwidth
49656042629SMatthias Ringwald  * @param max_latency
49756042629SMatthias Ringwald  * @param voice_settings
49856042629SMatthias Ringwald  * @param retransmission_effort
49956042629SMatthias Ringwald  * @param packet_type
50056042629SMatthias Ringwald  */
50156042629SMatthias Ringwald const hci_cmd_t hci_accept_synchronous_connection = {
502ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_ACCEPT_SYNCHRONOUS_CONNECTION, "B442212"
50356042629SMatthias Ringwald };
50456042629SMatthias Ringwald 
50556042629SMatthias Ringwald /**
50656042629SMatthias Ringwald  * @param bd_addr
50756042629SMatthias Ringwald  * @param IO_capability
50856042629SMatthias Ringwald  * @param OOB_data_present
50956042629SMatthias Ringwald  * @param authentication_requirements
51056042629SMatthias Ringwald  */
51156042629SMatthias Ringwald const hci_cmd_t hci_io_capability_request_reply = {
512ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_IO_CAPABILITY_REQUEST_REPLY, "B111"
51356042629SMatthias Ringwald };
51456042629SMatthias Ringwald 
51556042629SMatthias Ringwald /**
51656042629SMatthias Ringwald  * @param bd_addr
51756042629SMatthias Ringwald  */
51856042629SMatthias Ringwald const hci_cmd_t hci_user_confirmation_request_reply = {
519ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_USER_CONFIRMATION_REQUEST_REPLY, "B"
52056042629SMatthias Ringwald };
52156042629SMatthias Ringwald 
52256042629SMatthias Ringwald /**
52356042629SMatthias Ringwald  * @param bd_addr
52456042629SMatthias Ringwald  */
52556042629SMatthias Ringwald const hci_cmd_t hci_user_confirmation_request_negative_reply = {
526ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_USER_CONFIRMATION_REQUEST_NEGATIVE_REPLY, "B"
52756042629SMatthias Ringwald };
52856042629SMatthias Ringwald 
52956042629SMatthias Ringwald /**
53056042629SMatthias Ringwald  * @param bd_addr
53156042629SMatthias Ringwald  * @param numeric_value
53256042629SMatthias Ringwald  */
53356042629SMatthias Ringwald const hci_cmd_t hci_user_passkey_request_reply = {
534ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_USER_PASSKEY_REQUEST_REPLY, "B4"
53556042629SMatthias Ringwald };
53656042629SMatthias Ringwald 
53756042629SMatthias Ringwald /**
53856042629SMatthias Ringwald  * @param bd_addr
53956042629SMatthias Ringwald  */
54056042629SMatthias Ringwald const hci_cmd_t hci_user_passkey_request_negative_reply = {
541ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_USER_PASSKEY_REQUEST_NEGATIVE_REPLY, "B"
54256042629SMatthias Ringwald };
54356042629SMatthias Ringwald 
54456042629SMatthias Ringwald /**
54556042629SMatthias Ringwald  * @param bd_addr
546237daac5SMatthias Ringwald  * @param c Simple Pairing Hash C
547237daac5SMatthias Ringwald  * @param r Simple Pairing Randomizer R
548237daac5SMatthias Ringwald  */
549237daac5SMatthias Ringwald const hci_cmd_t hci_remote_oob_data_request_reply = {
550bb75dd7dSMatthias Ringwald     HCI_OPCODE_HCI_REMOTE_OOB_DATA_REQUEST_REPLY, "BKK"
551237daac5SMatthias Ringwald };
552237daac5SMatthias Ringwald 
553237daac5SMatthias Ringwald /**
554237daac5SMatthias Ringwald  * @param bd_addr
55556042629SMatthias Ringwald  */
55656042629SMatthias Ringwald const hci_cmd_t hci_remote_oob_data_request_negative_reply = {
557ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_REMOTE_OOB_DATA_REQUEST_NEGATIVE_REPLY, "B"
55856042629SMatthias Ringwald };
55956042629SMatthias Ringwald 
56056042629SMatthias Ringwald /**
56156042629SMatthias Ringwald  * @param bd_addr
56256042629SMatthias Ringwald  * @param reason (Part D, Error codes)
56356042629SMatthias Ringwald  */
56456042629SMatthias Ringwald const hci_cmd_t hci_io_capability_request_negative_reply = {
565ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_IO_CAPABILITY_REQUEST_NEGATIVE_REPLY, "B1"
56656042629SMatthias Ringwald };
56756042629SMatthias Ringwald 
56856042629SMatthias Ringwald /**
56956042629SMatthias Ringwald  * @param handle
57056042629SMatthias Ringwald  * @param transmit_bandwidth
57156042629SMatthias Ringwald  * @param receive_bandwidth
57256042629SMatthias Ringwald  * @param transmit_coding_format_type
57356042629SMatthias Ringwald  * @param transmit_coding_format_company
57456042629SMatthias Ringwald  * @param transmit_coding_format_codec
57556042629SMatthias Ringwald  * @param receive_coding_format_type
57656042629SMatthias Ringwald  * @param receive_coding_format_company
57756042629SMatthias Ringwald  * @param receive_coding_format_codec
57856042629SMatthias Ringwald  * @param transmit_coding_frame_size
57956042629SMatthias Ringwald  * @param receive_coding_frame_size
58056042629SMatthias Ringwald  * @param input_bandwidth
58156042629SMatthias Ringwald  * @param output_bandwidth
58256042629SMatthias Ringwald  * @param input_coding_format_type
58356042629SMatthias Ringwald  * @param input_coding_format_company
58456042629SMatthias Ringwald  * @param input_coding_format_codec
58556042629SMatthias Ringwald  * @param output_coding_format_type
58656042629SMatthias Ringwald  * @param output_coding_format_company
58756042629SMatthias Ringwald  * @param output_coding_format_codec
58856042629SMatthias Ringwald  * @param input_coded_data_size
58956042629SMatthias Ringwald  * @param outupt_coded_data_size
59056042629SMatthias Ringwald  * @param input_pcm_data_format
59156042629SMatthias Ringwald  * @param output_pcm_data_format
59256042629SMatthias Ringwald  * @param input_pcm_sample_payload_msb_position
59356042629SMatthias Ringwald  * @param output_pcm_sample_payload_msb_position
59456042629SMatthias Ringwald  * @param input_data_path
59556042629SMatthias Ringwald  * @param output_data_path
59656042629SMatthias Ringwald  * @param input_transport_unit_size
59756042629SMatthias Ringwald  * @param output_transport_unit_size
59856042629SMatthias Ringwald  * @param max_latency
59956042629SMatthias Ringwald  * @param packet_type
60056042629SMatthias Ringwald  * @param retransmission_effort
60156042629SMatthias Ringwald  */
60256042629SMatthias Ringwald const hci_cmd_t hci_enhanced_setup_synchronous_connection = {
603ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_ENHANCED_SETUP_SYNCHRONOUS_CONNECTION, "H4412212222441221222211111111221"
60456042629SMatthias Ringwald };
60556042629SMatthias Ringwald 
60656042629SMatthias Ringwald /**
60756042629SMatthias Ringwald  * @param bd_addr
60856042629SMatthias Ringwald  * @param transmit_bandwidth
60956042629SMatthias Ringwald  * @param receive_bandwidth
61056042629SMatthias Ringwald  * @param transmit_coding_format_type
61156042629SMatthias Ringwald  * @param transmit_coding_format_company
61256042629SMatthias Ringwald  * @param transmit_coding_format_codec
61356042629SMatthias Ringwald  * @param receive_coding_format_type
61456042629SMatthias Ringwald  * @param receive_coding_format_company
61556042629SMatthias Ringwald  * @param receive_coding_format_codec
61656042629SMatthias Ringwald  * @param transmit_coding_frame_size
61756042629SMatthias Ringwald  * @param receive_coding_frame_size
61856042629SMatthias Ringwald  * @param input_bandwidth
61956042629SMatthias Ringwald  * @param output_bandwidth
62056042629SMatthias Ringwald  * @param input_coding_format_type
62156042629SMatthias Ringwald  * @param input_coding_format_company
62256042629SMatthias Ringwald  * @param input_coding_format_codec
62356042629SMatthias Ringwald  * @param output_coding_format_type
62456042629SMatthias Ringwald  * @param output_coding_format_company
62556042629SMatthias Ringwald  * @param output_coding_format_codec
62656042629SMatthias Ringwald  * @param input_coded_data_size
62756042629SMatthias Ringwald  * @param outupt_coded_data_size
62856042629SMatthias Ringwald  * @param input_pcm_data_format
62956042629SMatthias Ringwald  * @param output_pcm_data_format
63056042629SMatthias Ringwald  * @param input_pcm_sample_payload_msb_position
63156042629SMatthias Ringwald  * @param output_pcm_sample_payload_msb_position
63256042629SMatthias Ringwald  * @param input_data_path
63356042629SMatthias Ringwald  * @param output_data_path
63456042629SMatthias Ringwald  * @param input_transport_unit_size
63556042629SMatthias Ringwald  * @param output_transport_unit_size
63656042629SMatthias Ringwald  * @param max_latency
63756042629SMatthias Ringwald  * @param packet_type
63856042629SMatthias Ringwald  * @param retransmission_effort
63956042629SMatthias Ringwald  */
64056042629SMatthias Ringwald const hci_cmd_t hci_enhanced_accept_synchronous_connection = {
641ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_ENHANCED_ACCEPT_SYNCHRONOUS_CONNECTION, "B4412212222441221222211111111221"
64256042629SMatthias Ringwald };
64356042629SMatthias Ringwald 
64456042629SMatthias Ringwald /**
645bb75dd7dSMatthias Ringwald  * @param bd_addr
646bb75dd7dSMatthias Ringwald  * @param c_192 Simple Pairing Hash C derived from P-192 public key
647bb75dd7dSMatthias Ringwald  * @param r_192 Simple Pairing Randomizer derived from P-192 public key
648bb75dd7dSMatthias Ringwald  * @param c_256 Simple Pairing Hash C derived from P-256 public key
649bb75dd7dSMatthias Ringwald  * @param r_256 Simple Pairing Randomizer derived from P-256 public key
650bb75dd7dSMatthias Ringwald  */
651bb75dd7dSMatthias Ringwald const hci_cmd_t hci_remote_oob_extended_data_request_reply = {
652bb75dd7dSMatthias Ringwald     HCI_OPCODE_HCI_REMOTE_OOB_EXTENDED_DATA_REQUEST_REPLY, "BKKKK"
653bb75dd7dSMatthias Ringwald };
654bb75dd7dSMatthias Ringwald 
655bb75dd7dSMatthias Ringwald /**
65656042629SMatthias Ringwald  *  Link Policy Commands
65756042629SMatthias Ringwald  */
65856042629SMatthias Ringwald 
65956042629SMatthias Ringwald /**
66056042629SMatthias Ringwald  * @param handle
66129ae3d7dSMatthias Ringwald  * @param hold_mode_max_interval * 0.625 ms,  range: 0x0002..0xFFFE; only even values are valid.
66229ae3d7dSMatthias Ringwald  * @param hold_mode_min_interval * 0.625 ms,  range: 0x0002..0xFFFE; only even values are valid.
66329ae3d7dSMatthias Ringwald  */
66429ae3d7dSMatthias Ringwald const hci_cmd_t hci_hold_mode = {
66529ae3d7dSMatthias Ringwald         HCI_OPCODE_HCI_HOLD_MODE, "H22"
66629ae3d7dSMatthias Ringwald };
66729ae3d7dSMatthias Ringwald 
66829ae3d7dSMatthias Ringwald /**
66929ae3d7dSMatthias Ringwald  * @param handle
67056042629SMatthias Ringwald  * @param sniff_max_interval
67156042629SMatthias Ringwald  * @param sniff_min_interval
67256042629SMatthias Ringwald  * @param sniff_attempt
67356042629SMatthias Ringwald  * @param sniff_timeout
67456042629SMatthias Ringwald  */
67556042629SMatthias Ringwald const hci_cmd_t hci_sniff_mode = {
676ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_SNIFF_MODE, "H2222"
67756042629SMatthias Ringwald };
67856042629SMatthias Ringwald 
67956042629SMatthias Ringwald /**
68056042629SMatthias Ringwald  * @param handle
6817cd21895SMatthias Ringwald  */
6827cd21895SMatthias Ringwald const hci_cmd_t hci_exit_sniff_mode = {
683ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_EXIT_SNIFF_MODE, "H"
6847cd21895SMatthias Ringwald };
6857cd21895SMatthias Ringwald 
6867cd21895SMatthias Ringwald /**
6876f351188SMatthias Ringwald  * @note  Removed in Bluetooth Core v5.0
6886f351188SMatthias Ringwald  * @param handle
6896f351188SMatthias Ringwald  * @param beacon_max_interval * 0.625 ms,  range: 0x000E..0xFFFE; only even values are valid.
6906f351188SMatthias Ringwald  * @param beacon_max_interval * 0.625 ms,  range: 0x000E..0xFFFE; only even values are valid.
6916f351188SMatthias Ringwald  */
6926f351188SMatthias Ringwald const hci_cmd_t hci_park_state = {
6936f351188SMatthias Ringwald         HCI_OPCODE_HCI_PARK_STATE, "H22"
6946f351188SMatthias Ringwald };
6956f351188SMatthias Ringwald 
6966f351188SMatthias Ringwald /**
6976f351188SMatthias Ringwald  * @note  Removed in Bluetooth Core v5.0
6986f351188SMatthias Ringwald  * @param handle
6996f351188SMatthias Ringwald  */
7006f351188SMatthias Ringwald const hci_cmd_t hci_exit_park_state = {
7016f351188SMatthias Ringwald         HCI_OPCODE_HCI_EXIT_PARK_STATE, "H"
7026f351188SMatthias Ringwald };
7036f351188SMatthias Ringwald 
7046f351188SMatthias Ringwald /**
7057cd21895SMatthias Ringwald  * @param handle
70656042629SMatthias Ringwald  * @param flags
70756042629SMatthias Ringwald  * @param service_type
70856042629SMatthias Ringwald  * @param token_rate (bytes/s)
70956042629SMatthias Ringwald  * @param peak_bandwith (bytes/s)
71056042629SMatthias Ringwald  * @param latency (us)
71156042629SMatthias Ringwald  * @param delay_variation (us)
71256042629SMatthias Ringwald  */
71356042629SMatthias Ringwald const hci_cmd_t hci_qos_setup = {
714ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_QOS_SETUP, "H114444"
71556042629SMatthias Ringwald };
71656042629SMatthias Ringwald 
71756042629SMatthias Ringwald /**
71856042629SMatthias Ringwald  * @param handle
71956042629SMatthias Ringwald  */
72056042629SMatthias Ringwald const hci_cmd_t hci_role_discovery = {
721ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_ROLE_DISCOVERY, "H"
72256042629SMatthias Ringwald };
72356042629SMatthias Ringwald 
72456042629SMatthias Ringwald /**
72556042629SMatthias Ringwald  * @param bd_addr
72656042629SMatthias Ringwald  * @param role (0=master,1=slave)
72756042629SMatthias Ringwald  */
72856042629SMatthias Ringwald const hci_cmd_t hci_switch_role_command= {
729ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_SWITCH_ROLE_COMMAND, "B1"
73056042629SMatthias Ringwald };
73156042629SMatthias Ringwald 
73256042629SMatthias Ringwald /**
73356042629SMatthias Ringwald  * @param handle
73456042629SMatthias Ringwald  */
73556042629SMatthias Ringwald const hci_cmd_t hci_read_link_policy_settings = {
736ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LINK_POLICY_SETTINGS, "H"
73756042629SMatthias Ringwald };
73856042629SMatthias Ringwald 
73956042629SMatthias Ringwald /**
74056042629SMatthias Ringwald  * @param handle
74156042629SMatthias Ringwald  * @param settings
74256042629SMatthias Ringwald  */
74356042629SMatthias Ringwald const hci_cmd_t hci_write_link_policy_settings = {
744ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_LINK_POLICY_SETTINGS, "H2"
74556042629SMatthias Ringwald };
74656042629SMatthias Ringwald 
747c4c88f1bSJakob Krantz /**
74832e2f27fSMatthias Ringwald  * @param handle
74932e2f27fSMatthias Ringwald  * @param max_latency
75032e2f27fSMatthias Ringwald  * @param min_remote_timeout
75132e2f27fSMatthias Ringwald  * @param min_local_timeout
75232e2f27fSMatthias Ringwald  */
75332e2f27fSMatthias Ringwald const hci_cmd_t hci_sniff_subrating = {
75450fe3a99SMilanka Ringwald     HCI_OPCODE_HCI_SNIFF_SUBRATING, "H222"
75532e2f27fSMatthias Ringwald };
75632e2f27fSMatthias Ringwald 
75732e2f27fSMatthias Ringwald /**
758c4c88f1bSJakob Krantz  * @param policy
759c4c88f1bSJakob Krantz  */
76053138e7aSMatthias Ringwald const hci_cmd_t hci_write_default_link_policy_setting = {
761ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_DEFAULT_LINK_POLICY_SETTING, "2"
762c4c88f1bSJakob Krantz };
763c4c88f1bSJakob Krantz 
764733a7793SMatthias Ringwald /**
765733a7793SMatthias Ringwald  * @param handle
766733a7793SMatthias Ringwald  * @param unused
767733a7793SMatthias Ringwald  * @param flow_direction
768733a7793SMatthias Ringwald  * @param service_type
769733a7793SMatthias Ringwald  * @param token_rate
770733a7793SMatthias Ringwald  * @param token_bucket_size
771733a7793SMatthias Ringwald  * @param peak_bandwidth
772733a7793SMatthias Ringwald  * @param access_latency
773733a7793SMatthias Ringwald  */
774733a7793SMatthias Ringwald const hci_cmd_t hci_flow_specification = {
775733a7793SMatthias Ringwald     HCI_OPCODE_HCI_FLOW_SPECIFICATION, "H1114444"
776733a7793SMatthias Ringwald };
777733a7793SMatthias Ringwald 
77856042629SMatthias Ringwald 
77956042629SMatthias Ringwald /**
78056042629SMatthias Ringwald  *  Controller & Baseband Commands
78156042629SMatthias Ringwald  */
78256042629SMatthias Ringwald 
7839119d792SMilanka Ringwald 
78456042629SMatthias Ringwald /**
785ff7d1758SMatthias Ringwald  * @param event_mask_lower_octets
78656042629SMatthias Ringwald  * @param event_mask_higher_octets
78756042629SMatthias Ringwald  */
78856042629SMatthias Ringwald const hci_cmd_t hci_set_event_mask = {
789ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_SET_EVENT_MASK, "44"
79056042629SMatthias Ringwald };
79156042629SMatthias Ringwald 
79256042629SMatthias Ringwald /**
79356042629SMatthias Ringwald  */
79456042629SMatthias Ringwald const hci_cmd_t hci_reset = {
795ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_RESET, ""
79656042629SMatthias Ringwald };
79756042629SMatthias Ringwald 
79856042629SMatthias Ringwald /**
799e49d496aSMatthias Ringwald  * @param handle
800e49d496aSMatthias Ringwald  */
801e49d496aSMatthias Ringwald const hci_cmd_t hci_flush = {
802ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_FLUSH, "H"
8039af39d9fSMatthias Ringwald };
8049af39d9fSMatthias Ringwald 
8059af39d9fSMatthias Ringwald /**
8069af39d9fSMatthias Ringwald  * @param handle
8079af39d9fSMatthias Ringwald  */
8089af39d9fSMatthias Ringwald const hci_cmd_t hci_read_pin_type = {
809ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_PIN_TYPE, ""
8109af39d9fSMatthias Ringwald };
8119af39d9fSMatthias Ringwald 
8129af39d9fSMatthias Ringwald /**
8139af39d9fSMatthias Ringwald  * @param handle
8149af39d9fSMatthias Ringwald  */
8159af39d9fSMatthias Ringwald const hci_cmd_t hci_write_pin_type = {
816ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_PIN_TYPE, "1"
817e49d496aSMatthias Ringwald };
818e49d496aSMatthias Ringwald 
819e49d496aSMatthias Ringwald /**
82056042629SMatthias Ringwald  * @param bd_addr
82156042629SMatthias Ringwald  * @param delete_all_flags
82256042629SMatthias Ringwald  */
82356042629SMatthias Ringwald const hci_cmd_t hci_delete_stored_link_key = {
824ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_DELETE_STORED_LINK_KEY, "B1"
82556042629SMatthias Ringwald };
82656042629SMatthias Ringwald 
827f9f2075cSMatthias Ringwald #ifdef ENABLE_CLASSIC
82856042629SMatthias Ringwald /**
82956042629SMatthias Ringwald  * @param local_name (UTF-8, Null Terminated, max 248 octets)
83056042629SMatthias Ringwald  */
83156042629SMatthias Ringwald const hci_cmd_t hci_write_local_name = {
832ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_LOCAL_NAME, "N"
83356042629SMatthias Ringwald };
834f9f2075cSMatthias Ringwald #endif
83556042629SMatthias Ringwald 
83656042629SMatthias Ringwald /**
837e90bae01SMatthias Ringwald  */
838e90bae01SMatthias Ringwald const hci_cmd_t hci_read_local_name = {
839ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LOCAL_NAME, ""
840e90bae01SMatthias Ringwald };
841e90bae01SMatthias Ringwald 
842e90bae01SMatthias Ringwald /**
843195e82f3Sskoperst  */
844195e82f3Sskoperst const hci_cmd_t hci_read_page_timeout = {
845ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_PAGE_TIMEOUT, ""
846195e82f3Sskoperst };
847195e82f3Sskoperst 
848195e82f3Sskoperst /**
84956042629SMatthias Ringwald  * @param page_timeout (* 0.625 ms)
85056042629SMatthias Ringwald  */
85156042629SMatthias Ringwald const hci_cmd_t hci_write_page_timeout = {
852ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_PAGE_TIMEOUT, "2"
85356042629SMatthias Ringwald };
85456042629SMatthias Ringwald 
85556042629SMatthias Ringwald /**
8564eac2391SMatthias Ringwald  * @param scan_enable (no, inq, page, inq+page)
8574eac2391SMatthias Ringwald  */
8584eac2391SMatthias Ringwald const hci_cmd_t hci_write_scan_enable = {
859ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_SCAN_ENABLE, "1"
8604eac2391SMatthias Ringwald };
8614eac2391SMatthias Ringwald 
8624eac2391SMatthias Ringwald /**
863195e82f3Sskoperst  */
864195e82f3Sskoperst const hci_cmd_t hci_read_page_scan_activity = {
865ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_PAGE_SCAN_ACTIVITY, ""
866195e82f3Sskoperst };
867195e82f3Sskoperst 
868195e82f3Sskoperst /**
869195e82f3Sskoperst  * @param page_scan_interval (* 0.625 ms)
870195e82f3Sskoperst  * @param page_scan_window (* 0.625 ms, must be <= page_scan_interval)
871195e82f3Sskoperst  */
872195e82f3Sskoperst const hci_cmd_t hci_write_page_scan_activity = {
873ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_PAGE_SCAN_ACTIVITY, "22"
874195e82f3Sskoperst };
875195e82f3Sskoperst 
876195e82f3Sskoperst /**
87756042629SMatthias Ringwald  */
8784eac2391SMatthias Ringwald const hci_cmd_t hci_read_inquiry_scan_activity = {
879ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_INQUIRY_SCAN_ACTIVITY, ""
8804eac2391SMatthias Ringwald };
8814eac2391SMatthias Ringwald 
8824eac2391SMatthias Ringwald /**
8834eac2391SMatthias Ringwald  * @param inquiry_scan_interval (* 0.625 ms)
8844eac2391SMatthias Ringwald  * @param inquiry_scan_window (* 0.625 ms, must be <= inquiry_scan_interval)
8854eac2391SMatthias Ringwald  */
8864eac2391SMatthias Ringwald const hci_cmd_t hci_write_inquiry_scan_activity = {
887ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_INQUIRY_SCAN_ACTIVITY, "22"
88856042629SMatthias Ringwald };
88956042629SMatthias Ringwald 
89056042629SMatthias Ringwald /**
89156042629SMatthias Ringwald  * @param authentication_enable
89256042629SMatthias Ringwald  */
89356042629SMatthias Ringwald const hci_cmd_t hci_write_authentication_enable = {
894ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_AUTHENTICATION_ENABLE, "1"
89556042629SMatthias Ringwald };
89656042629SMatthias Ringwald 
89756042629SMatthias Ringwald /**
89839bcce03SMatthias Ringwald  * @param handle
89939bcce03SMatthias Ringwald  * @param timeout, max 0x07FF
90039bcce03SMatthias Ringwald  */
90139bcce03SMatthias Ringwald const hci_cmd_t hci_write_automatic_flush_timeout = {
90239bcce03SMatthias Ringwald         HCI_OPCODE_HCI_WRITE_AUTOMATIC_FLUSH_TIMEOUT, "H2"
90339bcce03SMatthias Ringwald };
90439bcce03SMatthias Ringwald 
90539bcce03SMatthias Ringwald /**
90656042629SMatthias Ringwald  * @param class_of_device
90756042629SMatthias Ringwald  */
90856042629SMatthias Ringwald const hci_cmd_t hci_write_class_of_device = {
909ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_CLASS_OF_DEVICE, "3"
91056042629SMatthias Ringwald };
91156042629SMatthias Ringwald 
91256042629SMatthias Ringwald /**
91356042629SMatthias Ringwald  */
91456042629SMatthias Ringwald const hci_cmd_t hci_read_num_broadcast_retransmissions = {
915ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_NUM_BROADCAST_RETRANSMISSIONS, ""
91656042629SMatthias Ringwald };
91756042629SMatthias Ringwald 
91856042629SMatthias Ringwald /**
91956042629SMatthias Ringwald  * @param num_broadcast_retransmissions (e.g. 0 for a single broadcast)
92056042629SMatthias Ringwald  */
92156042629SMatthias Ringwald const hci_cmd_t hci_write_num_broadcast_retransmissions = {
922ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_NUM_BROADCAST_RETRANSMISSIONS, "1"
92356042629SMatthias Ringwald };
92456042629SMatthias Ringwald 
92556042629SMatthias Ringwald /**
92644751e25SMatthias Ringwald  * @param connection_handle
92744751e25SMatthias Ringwald  * @param type 0 = current transmit level, 1 = max transmit level
92844751e25SMatthias Ringwald  */
92944751e25SMatthias Ringwald const hci_cmd_t hci_read_transmit_power_level = {
9302ea455e1SMatthias Ringwald     HCI_OPCODE_HCI_READ_TRANSMIT_POWER_LEVEL, "H1"
93144751e25SMatthias Ringwald };
93244751e25SMatthias Ringwald 
93344751e25SMatthias Ringwald /**
93456042629SMatthias Ringwald  * @param synchronous_flow_control_enable - if yes, num completed packet everts are sent for SCO packets
93556042629SMatthias Ringwald  */
93656042629SMatthias Ringwald const hci_cmd_t hci_write_synchronous_flow_control_enable = {
937ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_SYNCHRONOUS_FLOW_CONTROL_ENABLE, "1"
93856042629SMatthias Ringwald };
93956042629SMatthias Ringwald 
9402b838201SMatthias Ringwald #ifdef ENABLE_HCI_CONTROLLER_TO_HOST_FLOW_CONTROL
9412b838201SMatthias Ringwald 
9422b838201SMatthias Ringwald /**
9432b838201SMatthias Ringwald  * @param flow_control_enable - 0: off, 1: ACL only, 2: SCO only, 3: ACL + SCO
9442b838201SMatthias Ringwald  */
9452b838201SMatthias Ringwald const hci_cmd_t hci_set_controller_to_host_flow_control = {
946ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_SET_CONTROLLER_TO_HOST_FLOW_CONTROL, "1"
9472b838201SMatthias Ringwald };
9482b838201SMatthias Ringwald 
94956042629SMatthias Ringwald /**
95056042629SMatthias Ringwald  * @param host_acl_data_packet_length
95156042629SMatthias Ringwald  * @param host_synchronous_data_packet_length
95256042629SMatthias Ringwald  * @param host_total_num_acl_data_packets
95356042629SMatthias Ringwald  * @param host_total_num_synchronous_data_packets
95456042629SMatthias Ringwald  */
95556042629SMatthias Ringwald const hci_cmd_t hci_host_buffer_size = {
956ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_HOST_BUFFER_SIZE, "2122"
95756042629SMatthias Ringwald };
95856042629SMatthias Ringwald 
9599119d792SMilanka Ringwald 
9602b838201SMatthias Ringwald #if 0
9612b838201SMatthias Ringwald //
9622b838201SMatthias Ringwald // command sent manually sent by hci_host_num_completed_packets
9632b838201SMatthias Ringwald //
9642b838201SMatthias Ringwald /**
9652b838201SMatthias Ringwald  * @note only single handle supported by BTstack command generator
9662b838201SMatthias Ringwald  * @param number_of_handles must be 1
9672b838201SMatthias Ringwald  * @param connection_handle
9682b838201SMatthias Ringwald  * @param host_num_of_completed_packets for the given connection handle
9692b838201SMatthias Ringwald  */
9702b838201SMatthias Ringwald const hci_cmd_t hci_host_number_of_completed_packets = {
971ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_HOST_NUMBER_OF_COMPLETED_PACKETS, "1H2"
9722b838201SMatthias Ringwald };
9732b838201SMatthias Ringwald #endif
9742b838201SMatthias Ringwald 
9752b838201SMatthias Ringwald #endif
9762b838201SMatthias Ringwald 
97756042629SMatthias Ringwald /**
97856042629SMatthias Ringwald  * @param handle
97956042629SMatthias Ringwald  */
98056042629SMatthias Ringwald const hci_cmd_t hci_read_link_supervision_timeout = {
981ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LINK_SUPERVISION_TIMEOUT, "H"
98256042629SMatthias Ringwald };
98356042629SMatthias Ringwald 
98456042629SMatthias Ringwald /**
98556042629SMatthias Ringwald  * @param handle
98656042629SMatthias Ringwald  * @param timeout (0x0001 - 0xFFFF Time -> Range: 0.625ms - 40.9 sec)
98756042629SMatthias Ringwald  */
98856042629SMatthias Ringwald const hci_cmd_t hci_write_link_supervision_timeout = {
989ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_LINK_SUPERVISION_TIMEOUT, "H2"
99056042629SMatthias Ringwald };
99156042629SMatthias Ringwald 
99256042629SMatthias Ringwald /**
9939119d792SMilanka Ringwald  * @param num_current_iac must be 2
9949119d792SMilanka Ringwald  * @param iac_lap1
9959119d792SMilanka Ringwald  * @param iac_lap2
9969119d792SMilanka Ringwald  */
9979119d792SMilanka Ringwald const hci_cmd_t hci_write_current_iac_lap_two_iacs = {
998ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_CURRENT_IAC_LAP_TWO_IACS, "133"
9999119d792SMilanka Ringwald };
10009119d792SMilanka Ringwald 
10019119d792SMilanka Ringwald /**
10025769fd77SMatthias Ringwald  * @param inquiry_scan_type (0x00 = standard, 0x01 = interlaced)
10035769fd77SMatthias Ringwald  */
10045769fd77SMatthias Ringwald const hci_cmd_t hci_write_inquiry_scan_type = {
10055769fd77SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_INQUIRY_SCAN_TYPE,  "1"
10065769fd77SMatthias Ringwald };
10075769fd77SMatthias Ringwald 
10085769fd77SMatthias Ringwald /**
100956042629SMatthias Ringwald  * @param inquiry_mode (0x00 = standard, 0x01 = with RSSI, 0x02 = extended)
101056042629SMatthias Ringwald  */
101156042629SMatthias Ringwald const hci_cmd_t hci_write_inquiry_mode = {
1012ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_INQUIRY_MODE, "1"
101356042629SMatthias Ringwald };
101456042629SMatthias Ringwald 
101556042629SMatthias Ringwald /**
10165769fd77SMatthias Ringwald  * @param page_scan_type (0x00 = standard, 0x01 = interlaced)
10175769fd77SMatthias Ringwald  */
10185769fd77SMatthias Ringwald const hci_cmd_t hci_write_page_scan_type = {
10195769fd77SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_PAGE_SCAN_TYPE, "1"
10205769fd77SMatthias Ringwald };
10215769fd77SMatthias Ringwald 
10225769fd77SMatthias Ringwald /**
102356042629SMatthias Ringwald  * @param fec_required
102456042629SMatthias Ringwald  * @param exstended_inquiry_response
102556042629SMatthias Ringwald  */
102656042629SMatthias Ringwald const hci_cmd_t hci_write_extended_inquiry_response = {
1027ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_EXTENDED_INQUIRY_RESPONSE, "1E"
102856042629SMatthias Ringwald };
102956042629SMatthias Ringwald 
103056042629SMatthias Ringwald /**
103156042629SMatthias Ringwald  * @param mode (0 = off, 1 = on)
103256042629SMatthias Ringwald  */
103356042629SMatthias Ringwald const hci_cmd_t hci_write_simple_pairing_mode = {
1034ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_SIMPLE_PAIRING_MODE, "1"
103556042629SMatthias Ringwald };
103656042629SMatthias Ringwald 
1037237daac5SMatthias Ringwald /**
1038237daac5SMatthias Ringwald  */
1039237daac5SMatthias Ringwald const hci_cmd_t hci_read_local_oob_data = {
1040ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LOCAL_OOB_DATA, ""
1041237daac5SMatthias Ringwald     // return status, C, R
1042237daac5SMatthias Ringwald };
1043483c5078SMatthias Ringwald 
1044483c5078SMatthias Ringwald /**
1045483c5078SMatthias Ringwald  * @param mode (0 = off, 1 = on)
1046483c5078SMatthias Ringwald  */
1047483c5078SMatthias Ringwald const hci_cmd_t hci_write_default_erroneous_data_reporting = {
1048ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_DEFAULT_ERRONEOUS_DATA_REPORTING, "1"
1049483c5078SMatthias Ringwald };
1050483c5078SMatthias Ringwald 
105156042629SMatthias Ringwald /**
1052ff7d1758SMatthias Ringwald  * @param event_mask_page_2_lower_octets
1053ff7d1758SMatthias Ringwald  * @param event_mask_page_2_higher_octets
1054ff7d1758SMatthias Ringwald  */
1055ff7d1758SMatthias Ringwald const hci_cmd_t hci_set_event_mask_2 = {
1056ff7d1758SMatthias Ringwald         HCI_OPCODE_HCI_SET_EVENT_MASK_2, "44"
1057ff7d1758SMatthias Ringwald };
1058ff7d1758SMatthias Ringwald 
1059ff7d1758SMatthias Ringwald /**
106056042629SMatthias Ringwald  */
106156042629SMatthias Ringwald const hci_cmd_t hci_read_le_host_supported = {
1062ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LE_HOST_SUPPORTED, ""
106356042629SMatthias Ringwald     // return: status, le supported host, simultaneous le host
106456042629SMatthias Ringwald };
106556042629SMatthias Ringwald 
106656042629SMatthias Ringwald /**
106756042629SMatthias Ringwald  * @param le_supported_host
106856042629SMatthias Ringwald  * @param simultaneous_le_host
106956042629SMatthias Ringwald  */
107056042629SMatthias Ringwald const hci_cmd_t hci_write_le_host_supported = {
1071ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_LE_HOST_SUPPORTED, "11"
107256042629SMatthias Ringwald     // return: status
107356042629SMatthias Ringwald };
107456042629SMatthias Ringwald 
107556042629SMatthias Ringwald /**
1076b002ae8cSMatthias Ringwald  * @param secure_connections_host_support
1077b002ae8cSMatthias Ringwald  */
1078b002ae8cSMatthias Ringwald const hci_cmd_t hci_write_secure_connections_host_support = {
1079ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_SECURE_CONNECTIONS_HOST_SUPPORT, "1"
1080b002ae8cSMatthias Ringwald     // return: status
1081b002ae8cSMatthias Ringwald };
1082b002ae8cSMatthias Ringwald 
1083b002ae8cSMatthias Ringwald /**
1084237daac5SMatthias Ringwald  */
1085bb75dd7dSMatthias Ringwald const hci_cmd_t hci_read_local_extended_oob_data = {
10861849becdSMatthias Ringwald     HCI_OPCODE_HCI_READ_LOCAL_EXTENDED_OOB_DATA, ""
1087237daac5SMatthias Ringwald     // return status, C_192, R_192, R_256, C_256
1088237daac5SMatthias Ringwald };
1089237daac5SMatthias Ringwald 
10906d2375e9SMatthias Ringwald /**
10916d2375e9SMatthias Ringwald  */
10926d2375e9SMatthias Ringwald const hci_cmd_t hci_read_extended_page_timeout = {
10936d2375e9SMatthias Ringwald     HCI_OPCODE_HCI_READ_EXTENDED_PAGE_TIMEOUT, ""
10946d2375e9SMatthias Ringwald     // return: status, extender page timeout
10956d2375e9SMatthias Ringwald };
10966d2375e9SMatthias Ringwald 
10976d2375e9SMatthias Ringwald /**
10986d2375e9SMatthias Ringwald  * @param extended_page_timeout
10996d2375e9SMatthias Ringwald  */
11006d2375e9SMatthias Ringwald const hci_cmd_t hci_write_extended_page_timeout = {
11016d2375e9SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_EXTENDED_PAGE_TIMEOUT, "2"
11026d2375e9SMatthias Ringwald     // return: status
11036d2375e9SMatthias Ringwald };
11046d2375e9SMatthias Ringwald 
11056d2375e9SMatthias Ringwald /**
11066d2375e9SMatthias Ringwald  */
11076d2375e9SMatthias Ringwald const hci_cmd_t hci_read_extended_inquiry_length = {
11086d2375e9SMatthias Ringwald     HCI_OPCODE_HCI_READ_EXTENDED_INQUIRY_LENGTH, ""
11096d2375e9SMatthias Ringwald     // return: status, extended_inquiry_length
11106d2375e9SMatthias Ringwald };
11116d2375e9SMatthias Ringwald 
11126d2375e9SMatthias Ringwald /**
11136d2375e9SMatthias Ringwald  * @param extended_inquiry_length
11146d2375e9SMatthias Ringwald  */
11156d2375e9SMatthias Ringwald const hci_cmd_t hci_write_extended_inquiry_length = {
11166d2375e9SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_EXTENDED_INQUIRY_LENGTH, "2"
11176d2375e9SMatthias Ringwald     // return: status
11186d2375e9SMatthias Ringwald };
11196d2375e9SMatthias Ringwald 
11206d2375e9SMatthias Ringwald /**
11216d2375e9SMatthias Ringwald  * @param interval
11226d2375e9SMatthias Ringwald  */
11236d2375e9SMatthias Ringwald const hci_cmd_t hci_set_ecosystem_base_interval = {
11246d2375e9SMatthias Ringwald     HCI_OPCODE_HCI_SET_ECOSYSTEM_BASE_INTERVAL, "2"
11256d2375e9SMatthias Ringwald     // return: status
11266d2375e9SMatthias Ringwald };
11276d2375e9SMatthias Ringwald 
11286d2375e9SMatthias Ringwald /**
11296d2375e9SMatthias Ringwald  * @param data_path_direction
11306d2375e9SMatthias Ringwald  * @param data_path_id
11316d2375e9SMatthias Ringwald  * @param vendor_specific_config_length
11326d2375e9SMatthias Ringwald  * @param vendor_specific_config
11336d2375e9SMatthias Ringwald  */
11346d2375e9SMatthias Ringwald const hci_cmd_t hci_configure_data_path = {
11356d2375e9SMatthias Ringwald     HCI_OPCODE_HCI_CONFIGURE_DATA_PATH, "11JV"
11366d2375e9SMatthias Ringwald     // return: status
11376d2375e9SMatthias Ringwald };
11386d2375e9SMatthias Ringwald 
11396d2375e9SMatthias Ringwald /**
11406d2375e9SMatthias Ringwald  * @param min_encryption_key_size
11416d2375e9SMatthias Ringwald  */
11426d2375e9SMatthias Ringwald const hci_cmd_t hci_set_min_encryption_key_size = {
11436d2375e9SMatthias Ringwald     HCI_OPCODE_HCI_SET_MIN_ENCRYPTION_KEY_SIZE, "1"
11446d2375e9SMatthias Ringwald     // return: status
11456d2375e9SMatthias Ringwald };
11466d2375e9SMatthias Ringwald 
1147237daac5SMatthias Ringwald 
1148237daac5SMatthias Ringwald /**
114956042629SMatthias Ringwald  * Testing Commands
115056042629SMatthias Ringwald  */
115156042629SMatthias Ringwald 
115256042629SMatthias Ringwald 
115356042629SMatthias Ringwald /**
115456042629SMatthias Ringwald  */
115556042629SMatthias Ringwald const hci_cmd_t hci_read_loopback_mode = {
1156ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LOOPBACK_MODE, ""
115756042629SMatthias Ringwald     // return: status, loopback mode (0 = off, 1 = local loopback, 2 = remote loopback)
115856042629SMatthias Ringwald };
115956042629SMatthias Ringwald 
116056042629SMatthias Ringwald /**
116156042629SMatthias Ringwald  * @param loopback_mode
116256042629SMatthias Ringwald  */
116356042629SMatthias Ringwald const hci_cmd_t hci_write_loopback_mode = {
1164ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_LOOPBACK_MODE, "1"
116556042629SMatthias Ringwald     // return: status
116656042629SMatthias Ringwald };
116756042629SMatthias Ringwald 
116884ca9bd8SMatthias Ringwald /**
116984ca9bd8SMatthias Ringwald  */
117084ca9bd8SMatthias Ringwald const hci_cmd_t hci_enable_device_under_test_mode = {
1171ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_ENABLE_DEVICE_UNDER_TEST_MODE, ""
117284ca9bd8SMatthias Ringwald     // return: status
117384ca9bd8SMatthias Ringwald };
117484ca9bd8SMatthias Ringwald 
117584ca9bd8SMatthias Ringwald /**
117684ca9bd8SMatthias Ringwald  * @param simple_pairing_debug_mode
117784ca9bd8SMatthias Ringwald  */
117884ca9bd8SMatthias Ringwald const hci_cmd_t hci_write_simple_pairing_debug_mode = {
1179ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_SIMPLE_PAIRING_DEBUG_MODE, "1"
118084ca9bd8SMatthias Ringwald     // return: status
118184ca9bd8SMatthias Ringwald };
118284ca9bd8SMatthias Ringwald 
118384ca9bd8SMatthias Ringwald /**
118484ca9bd8SMatthias Ringwald  * @param handle
118584ca9bd8SMatthias Ringwald  * @param dm1_acl_u_mode
118684ca9bd8SMatthias Ringwald  * @param esco_loopback_mode
118784ca9bd8SMatthias Ringwald  */
118884ca9bd8SMatthias Ringwald const hci_cmd_t hci_write_secure_connections_test_mode = {
1189ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_SECURE_CONNECTIONS_TEST_MODE, "H11"
119084ca9bd8SMatthias Ringwald     // return: status
119184ca9bd8SMatthias Ringwald };
119284ca9bd8SMatthias Ringwald 
119356042629SMatthias Ringwald 
119456042629SMatthias Ringwald /**
119556042629SMatthias Ringwald  * Informational Parameters
119656042629SMatthias Ringwald  */
119756042629SMatthias Ringwald 
119856042629SMatthias Ringwald const hci_cmd_t hci_read_local_version_information = {
1199ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LOCAL_VERSION_INFORMATION, ""
120056042629SMatthias Ringwald };
120156042629SMatthias Ringwald const hci_cmd_t hci_read_local_supported_commands = {
1202ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LOCAL_SUPPORTED_COMMANDS, ""
120356042629SMatthias Ringwald };
120456042629SMatthias Ringwald const hci_cmd_t hci_read_local_supported_features = {
1205ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LOCAL_SUPPORTED_FEATURES, ""
120656042629SMatthias Ringwald };
120756042629SMatthias Ringwald const hci_cmd_t hci_read_buffer_size = {
1208ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_BUFFER_SIZE, ""
120956042629SMatthias Ringwald };
121056042629SMatthias Ringwald const hci_cmd_t hci_read_bd_addr = {
1211ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_BD_ADDR, ""
121256042629SMatthias Ringwald };
121356042629SMatthias Ringwald 
121456042629SMatthias Ringwald /**
121556042629SMatthias Ringwald  * Status Paramters
121656042629SMatthias Ringwald  */
121756042629SMatthias Ringwald 
121856042629SMatthias Ringwald /**
121956042629SMatthias Ringwald  * @param handle
122056042629SMatthias Ringwald  */
122156042629SMatthias Ringwald const hci_cmd_t hci_read_rssi = {
1222ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_RSSI, "H"
122356042629SMatthias Ringwald };
122456042629SMatthias Ringwald 
122597abfa24SMatthias Ringwald /**
122697abfa24SMatthias Ringwald  * @param handle
122797abfa24SMatthias Ringwald  */
122897abfa24SMatthias Ringwald const hci_cmd_t hci_read_encryption_key_size = {
1229ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_ENCRYPTION_KEY_SIZE, "H"
123097abfa24SMatthias Ringwald };
123156042629SMatthias Ringwald 
123256042629SMatthias Ringwald 
1233a9a4c409SMatthias Ringwald #ifdef ENABLE_BLE
123456042629SMatthias Ringwald /**
123556042629SMatthias Ringwald  * Low Energy Commands
123656042629SMatthias Ringwald  */
123756042629SMatthias Ringwald 
123856042629SMatthias Ringwald /**
123956042629SMatthias Ringwald  * @param event_mask_lower_octets
124056042629SMatthias Ringwald  * @param event_mask_higher_octets
124156042629SMatthias Ringwald  */
124256042629SMatthias Ringwald const hci_cmd_t hci_le_set_event_mask = {
1243ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_EVENT_MASK, "44"
124456042629SMatthias Ringwald     // return: status
124556042629SMatthias Ringwald };
124656042629SMatthias Ringwald 
124756042629SMatthias Ringwald const hci_cmd_t hci_le_read_buffer_size = {
1248ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_BUFFER_SIZE, ""
124956042629SMatthias Ringwald     // return: status, le acl data packet len (16), total num le acl data packets(8)
125056042629SMatthias Ringwald };
12510c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_local_supported_features = {
12520c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_LOCAL_SUPPORTED_FEATURES, ""
125356042629SMatthias Ringwald     // return: LE_Features See [Vol 6] Part B, Section 4.6
125456042629SMatthias Ringwald };
125556042629SMatthias Ringwald 
125656042629SMatthias Ringwald /**
125756042629SMatthias Ringwald  * @param random_bd_addr
125856042629SMatthias Ringwald  */
125956042629SMatthias Ringwald const hci_cmd_t hci_le_set_random_address = {
1260ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_RANDOM_ADDRESS, "B"
126156042629SMatthias Ringwald     // return: status
126256042629SMatthias Ringwald };
126356042629SMatthias Ringwald 
126456042629SMatthias Ringwald /**
126556042629SMatthias Ringwald  * @param advertising_interval_min ([0x0020,0x4000], default: 0x0800, unit: 0.625 msec)
126656042629SMatthias Ringwald  * @param advertising_interval_max ([0x0020,0x4000], default: 0x0800, unit: 0.625 msec)
126756042629SMatthias Ringwald  * @param advertising_type (enum from 0: ADV_IND, ADC_DIRECT_IND, ADV_SCAN_IND, ADV_NONCONN_IND)
126856042629SMatthias Ringwald  * @param own_address_type (enum from 0: public device address, random device address)
126956042629SMatthias Ringwald  * @param direct_address_type ()
127056042629SMatthias Ringwald  * @param direct_address (public or random address of device to be connecteed)
127156042629SMatthias Ringwald  * @param advertising_channel_map (flags: chan_37(1), chan_38(2), chan_39(4))
127256042629SMatthias Ringwald  * @param advertising_filter_policy (enum from 0: scan any conn any, scan whitelist, con any, scan any conn whitelist, scan whitelist, con whitelist)
127356042629SMatthias Ringwald  */
127456042629SMatthias Ringwald const hci_cmd_t hci_le_set_advertising_parameters = {
1275ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_ADVERTISING_PARAMETERS, "22111B11"
127656042629SMatthias Ringwald     // return: status
127756042629SMatthias Ringwald };
127856042629SMatthias Ringwald 
127956042629SMatthias Ringwald const hci_cmd_t hci_le_read_advertising_channel_tx_power = {
1280ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_ADVERTISING_CHANNEL_TX_POWER, ""
128156042629SMatthias Ringwald     // return: status, level [-20,10] signed int (8), units dBm
128256042629SMatthias Ringwald };
128356042629SMatthias Ringwald 
128456042629SMatthias Ringwald /**
128556042629SMatthias Ringwald  * @param advertising_data_length
128656042629SMatthias Ringwald  * @param advertising_data (31 bytes)
128756042629SMatthias Ringwald  */
128856042629SMatthias Ringwald const hci_cmd_t hci_le_set_advertising_data= {
1289ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_ADVERTISING_DATA, "1A"
129056042629SMatthias Ringwald     // return: status
129156042629SMatthias Ringwald };
129256042629SMatthias Ringwald 
129356042629SMatthias Ringwald /**
129456042629SMatthias Ringwald  * @param scan_response_data_length
129556042629SMatthias Ringwald  * @param scan_response_data (31 bytes)
129656042629SMatthias Ringwald  */
129756042629SMatthias Ringwald const hci_cmd_t hci_le_set_scan_response_data= {
1298ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_SCAN_RESPONSE_DATA, "1A"
129956042629SMatthias Ringwald     // return: status
130056042629SMatthias Ringwald };
130156042629SMatthias Ringwald 
130256042629SMatthias Ringwald /**
130356042629SMatthias Ringwald  * @param advertise_enable (off: 0, on: 1)
130456042629SMatthias Ringwald  */
130556042629SMatthias Ringwald const hci_cmd_t hci_le_set_advertise_enable = {
1306ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_ADVERTISE_ENABLE, "1"
130756042629SMatthias Ringwald     // return: status
130856042629SMatthias Ringwald };
130956042629SMatthias Ringwald 
131056042629SMatthias Ringwald /**
131156042629SMatthias Ringwald  * @param le_scan_type (passive (0), active (1))
131256042629SMatthias Ringwald  * @param le_scan_interval ([0x0004,0x4000], unit: 0.625 msec)
131356042629SMatthias Ringwald  * @param le_scan_window   ([0x0004,0x4000], unit: 0.625 msec)
131456042629SMatthias Ringwald  * @param own_address_type (public (0), random (1))
131556042629SMatthias Ringwald  * @param scanning_filter_policy (any (0), only whitelist (1))
131656042629SMatthias Ringwald  */
131756042629SMatthias Ringwald const hci_cmd_t hci_le_set_scan_parameters = {
1318ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_SCAN_PARAMETERS, "12211"
131956042629SMatthias Ringwald     // return: status
132056042629SMatthias Ringwald };
132156042629SMatthias Ringwald 
132256042629SMatthias Ringwald /**
132356042629SMatthias Ringwald  * @param le_scan_enable  (disabled (0), enabled (1))
132456042629SMatthias Ringwald  * @param filter_duplices (disabled (0), enabled (1))
132556042629SMatthias Ringwald  */
132656042629SMatthias Ringwald const hci_cmd_t hci_le_set_scan_enable = {
1327ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_SCAN_ENABLE, "11"
132856042629SMatthias Ringwald     // return: status
132956042629SMatthias Ringwald };
133056042629SMatthias Ringwald 
133156042629SMatthias Ringwald /**
133256042629SMatthias Ringwald  * @param le_scan_interval ([0x0004, 0x4000], unit: 0.625 msec)
133356042629SMatthias Ringwald  * @param le_scan_window ([0x0004, 0x4000], unit: 0.625 msec)
133456042629SMatthias Ringwald  * @param initiator_filter_policy (peer address type + peer address (0), whitelist (1))
133556042629SMatthias Ringwald  * @param peer_address_type (public (0), random (1))
133656042629SMatthias Ringwald  * @param peer_address
133756042629SMatthias Ringwald  * @param own_address_type (public (0), random (1))
133856042629SMatthias Ringwald  * @param conn_interval_min ([0x0006, 0x0c80], unit: 1.25 msec)
133956042629SMatthias Ringwald  * @param conn_interval_max ([0x0006, 0x0c80], unit: 1.25 msec)
134056042629SMatthias Ringwald  * @param conn_latency (number of connection events [0x0000, 0x01f4])
134156042629SMatthias Ringwald  * @param supervision_timeout ([0x000a, 0x0c80], unit: 10 msec)
134256042629SMatthias Ringwald  * @param minimum_CE_length ([0x0000, 0xffff], unit: 0.625 msec)
134356042629SMatthias Ringwald  * @param maximum_CE_length ([0x0000, 0xffff], unit: 0.625 msec)
134456042629SMatthias Ringwald  */
134556042629SMatthias Ringwald const hci_cmd_t hci_le_create_connection= {
1346ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_CREATE_CONNECTION, "2211B1222222"
134756042629SMatthias Ringwald     // return: none -> le create connection complete event
134856042629SMatthias Ringwald };
134956042629SMatthias Ringwald 
135056042629SMatthias Ringwald const hci_cmd_t hci_le_create_connection_cancel = {
1351ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_CREATE_CONNECTION_CANCEL, ""
135256042629SMatthias Ringwald     // return: status
135356042629SMatthias Ringwald };
135456042629SMatthias Ringwald 
135556042629SMatthias Ringwald const hci_cmd_t hci_le_read_white_list_size = {
1356ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_WHITE_LIST_SIZE, ""
135756042629SMatthias Ringwald     // return: status, number of entries in controller whitelist
135856042629SMatthias Ringwald };
135956042629SMatthias Ringwald 
136056042629SMatthias Ringwald const hci_cmd_t hci_le_clear_white_list = {
1361ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_CLEAR_WHITE_LIST, ""
136256042629SMatthias Ringwald     // return: status
136356042629SMatthias Ringwald };
136456042629SMatthias Ringwald 
136556042629SMatthias Ringwald /**
136656042629SMatthias Ringwald  * @param address_type (public (0), random (1))
136756042629SMatthias Ringwald  * @param bd_addr
136856042629SMatthias Ringwald  */
136956042629SMatthias Ringwald const hci_cmd_t hci_le_add_device_to_white_list = {
1370ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_ADD_DEVICE_TO_WHITE_LIST, "1B"
137156042629SMatthias Ringwald     // return: status
137256042629SMatthias Ringwald };
137356042629SMatthias Ringwald 
137456042629SMatthias Ringwald /**
137556042629SMatthias Ringwald  * @param address_type (public (0), random (1))
137656042629SMatthias Ringwald  * @param bd_addr
137756042629SMatthias Ringwald  */
137856042629SMatthias Ringwald const hci_cmd_t hci_le_remove_device_from_white_list = {
1379ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOVE_DEVICE_FROM_WHITE_LIST, "1B"
138056042629SMatthias Ringwald     // return: status
138156042629SMatthias Ringwald };
138256042629SMatthias Ringwald 
138356042629SMatthias Ringwald /**
138456042629SMatthias Ringwald  * @param conn_handle
138556042629SMatthias Ringwald  * @param conn_interval_min ([0x0006,0x0c80], unit: 1.25 msec)
138656042629SMatthias Ringwald  * @param conn_interval_max ([0x0006,0x0c80], unit: 1.25 msec)
138756042629SMatthias Ringwald  * @param conn_latency ([0x0000,0x03e8], number of connection events)
138856042629SMatthias Ringwald  * @param supervision_timeout ([0x000a,0x0c80], unit: 10 msec)
138956042629SMatthias Ringwald  * @param minimum_CE_length ([0x0000,0xffff], unit: 0.625 msec)
139056042629SMatthias Ringwald  * @param maximum_CE_length ([0x0000,0xffff], unit: 0.625 msec)
139156042629SMatthias Ringwald  */
139256042629SMatthias Ringwald const hci_cmd_t hci_le_connection_update = {
1393ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_CONNECTION_UPDATE, "H222222"
139456042629SMatthias Ringwald     // return: none -> le connection update complete event
139556042629SMatthias Ringwald };
139656042629SMatthias Ringwald 
139756042629SMatthias Ringwald /**
139856042629SMatthias Ringwald  * @param channel_map_lower_32bits
139956042629SMatthias Ringwald  * @param channel_map_higher_5bits
140056042629SMatthias Ringwald  */
140156042629SMatthias Ringwald const hci_cmd_t hci_le_set_host_channel_classification = {
1402ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_HOST_CHANNEL_CLASSIFICATION, "41"
140356042629SMatthias Ringwald     // return: status
140456042629SMatthias Ringwald };
140556042629SMatthias Ringwald 
140656042629SMatthias Ringwald /**
140756042629SMatthias Ringwald  * @param conn_handle
140856042629SMatthias Ringwald  */
140956042629SMatthias Ringwald const hci_cmd_t hci_le_read_channel_map = {
1410ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_CHANNEL_MAP, "H"
141156042629SMatthias Ringwald     // return: status, connection handle, channel map (5 bytes, 37 used)
141256042629SMatthias Ringwald };
141356042629SMatthias Ringwald 
141456042629SMatthias Ringwald /**
141556042629SMatthias Ringwald  * @param conn_handle
141656042629SMatthias Ringwald  */
141756042629SMatthias Ringwald const hci_cmd_t hci_le_read_remote_used_features = {
1418ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_REMOTE_USED_FEATURES, "H"
141956042629SMatthias Ringwald     // return: none -> le read remote used features complete event
142056042629SMatthias Ringwald };
142156042629SMatthias Ringwald 
142256042629SMatthias Ringwald /**
142356042629SMatthias Ringwald  * @param key ((128) for AES-128)
142456042629SMatthias Ringwald  * @param plain_text (128)
142556042629SMatthias Ringwald  */
142656042629SMatthias Ringwald const hci_cmd_t hci_le_encrypt = {
1427ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_ENCRYPT, "PP"
142856042629SMatthias Ringwald     // return: status, encrypted data (128)
142956042629SMatthias Ringwald };
143056042629SMatthias Ringwald 
143156042629SMatthias Ringwald const hci_cmd_t hci_le_rand = {
1432ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_RAND, ""
143356042629SMatthias Ringwald     // return: status, random number (64)
143456042629SMatthias Ringwald };
143556042629SMatthias Ringwald 
143656042629SMatthias Ringwald /**
143756042629SMatthias Ringwald  * @param conn_handle
143856042629SMatthias Ringwald  * @param random_number_lower_32bits
143956042629SMatthias Ringwald  * @param random_number_higher_32bits
144056042629SMatthias Ringwald  * @param encryption_diversifier (16)
144156042629SMatthias Ringwald  * @param long_term_key (128)
144256042629SMatthias Ringwald  */
144356042629SMatthias Ringwald const hci_cmd_t hci_le_start_encryption = {
1444ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_START_ENCRYPTION, "H442P"
144556042629SMatthias Ringwald     // return: none -> encryption changed or encryption key refresh complete event
144656042629SMatthias Ringwald };
144756042629SMatthias Ringwald 
144856042629SMatthias Ringwald /**
144956042629SMatthias Ringwald  * @param connection_handle
145056042629SMatthias Ringwald  * @param long_term_key (128)
145156042629SMatthias Ringwald  */
145256042629SMatthias Ringwald const hci_cmd_t hci_le_long_term_key_request_reply = {
1453ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_LONG_TERM_KEY_REQUEST_REPLY, "HP"
145456042629SMatthias Ringwald     // return: status, connection handle
145556042629SMatthias Ringwald };
145656042629SMatthias Ringwald 
145756042629SMatthias Ringwald /**
145856042629SMatthias Ringwald  * @param conn_handle
145956042629SMatthias Ringwald  */
146056042629SMatthias Ringwald const hci_cmd_t hci_le_long_term_key_negative_reply = {
1461ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_LONG_TERM_KEY_NEGATIVE_REPLY, "H"
146256042629SMatthias Ringwald     // return: status, connection handle
146356042629SMatthias Ringwald };
146456042629SMatthias Ringwald 
146556042629SMatthias Ringwald /**
146656042629SMatthias Ringwald  * @param conn_handle
146756042629SMatthias Ringwald  */
146856042629SMatthias Ringwald const hci_cmd_t hci_le_read_supported_states = {
1469ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_SUPPORTED_STATES, "H"
147056042629SMatthias Ringwald     // return: status, LE states (64)
147156042629SMatthias Ringwald };
147256042629SMatthias Ringwald 
147356042629SMatthias Ringwald /**
147456042629SMatthias Ringwald  * @param rx_frequency ([0x00 0x27], frequency (MHz): 2420 + N*2)
147556042629SMatthias Ringwald  */
147656042629SMatthias Ringwald const hci_cmd_t hci_le_receiver_test = {
1477ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_RECEIVER_TEST, "1"
147856042629SMatthias Ringwald     // return: status
147956042629SMatthias Ringwald };
148056042629SMatthias Ringwald 
148156042629SMatthias Ringwald /**
148256042629SMatthias Ringwald  * @param tx_frequency ([0x00 0x27], frequency (MHz): 2420 + N*2)
148356042629SMatthias Ringwald  * @param test_payload_lengh ([0x00,0x25])
148456042629SMatthias Ringwald  * @param packet_payload ([0,7] different patterns)
148556042629SMatthias Ringwald  */
148656042629SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test = {
1487ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_TRANSMITTER_TEST, "111"
148856042629SMatthias Ringwald     // return: status
148956042629SMatthias Ringwald };
149056042629SMatthias Ringwald 
149156042629SMatthias Ringwald /**
149256042629SMatthias Ringwald  * @param end_test_cmd
149356042629SMatthias Ringwald  */
149456042629SMatthias Ringwald const hci_cmd_t hci_le_test_end = {
1495ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_TEST_END, "1"
149656042629SMatthias Ringwald     // return: status, number of packets (8)
149756042629SMatthias Ringwald };
149882180fcaSMatthias Ringwald 
149982180fcaSMatthias Ringwald /**
1500fe704c95SMatthias Ringwald  * @param conn_handle
1501fe704c95SMatthias Ringwald  * @param conn_interval_min ([0x0006,0x0c80], unit: 1.25 msec)
1502fe704c95SMatthias Ringwald  * @param conn_interval_max ([0x0006,0x0c80], unit: 1.25 msec)
1503fe704c95SMatthias Ringwald  * @param conn_latency ([0x0000,0x03e8], number of connection events)
1504fe704c95SMatthias Ringwald  * @param supervision_timeout ([0x000a,0x0c80], unit: 10 msec)
1505fe704c95SMatthias Ringwald  * @param minimum_CE_length ([0x0000,0xffff], unit: 0.625 msec)
1506fe704c95SMatthias Ringwald  * @param maximum_CE_length ([0x0000,0xffff], unit: 0.625 msec)
1507fe704c95SMatthias Ringwald  */
1508fe704c95SMatthias Ringwald const hci_cmd_t hci_le_remote_connection_parameter_request_reply = {
1509ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_REPLY, "H222222"
1510fe704c95SMatthias Ringwald     // return: status, connection handle
1511fe704c95SMatthias Ringwald };
1512fe704c95SMatthias Ringwald 
1513fe704c95SMatthias Ringwald /**
1514fe704c95SMatthias Ringwald  * @param con_handle
1515fe704c95SMatthias Ringwald  * @param reason
1516fe704c95SMatthias Ringwald  */
1517fe704c95SMatthias Ringwald const hci_cmd_t hci_le_remote_connection_parameter_request_negative_reply = {
1518ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_NEGATIVE_REPLY, "H1"
1519fe704c95SMatthias Ringwald     // return: status, connection handle
1520fe704c95SMatthias Ringwald };
1521fe704c95SMatthias Ringwald 
1522fe704c95SMatthias Ringwald /**
15230ea2847fSMatthias Ringwald  * @param con_handle
15240ea2847fSMatthias Ringwald  * @param tx_octets
15250ea2847fSMatthias Ringwald  * @param tx_time
15260ea2847fSMatthias Ringwald  */
15270ea2847fSMatthias Ringwald const hci_cmd_t hci_le_set_data_length = {
1528ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_DATA_LENGTH, "H22"
15290ea2847fSMatthias Ringwald     // return: status, connection handle
15300ea2847fSMatthias Ringwald };
15310ea2847fSMatthias Ringwald 
15320ea2847fSMatthias Ringwald /**
15330ea2847fSMatthias Ringwald  */
15340ea2847fSMatthias Ringwald const hci_cmd_t hci_le_read_suggested_default_data_length = {
1535ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_SUGGESTED_DEFAULT_DATA_LENGTH, ""
15360ea2847fSMatthias Ringwald     // return: status, suggested max tx octets, suggested max tx time
15370ea2847fSMatthias Ringwald };
15380ea2847fSMatthias Ringwald 
15390ea2847fSMatthias Ringwald /**
15400ea2847fSMatthias Ringwald  * @param suggested_max_tx_octets
15410ea2847fSMatthias Ringwald  * @param suggested_max_tx_time
15420ea2847fSMatthias Ringwald  */
15430ea2847fSMatthias Ringwald const hci_cmd_t hci_le_write_suggested_default_data_length = {
1544ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_WRITE_SUGGESTED_DEFAULT_DATA_LENGTH, "22"
15450ea2847fSMatthias Ringwald     // return: status
15460ea2847fSMatthias Ringwald };
15470ea2847fSMatthias Ringwald 
15480ea2847fSMatthias Ringwald /**
154982180fcaSMatthias Ringwald  */
155082180fcaSMatthias Ringwald const hci_cmd_t hci_le_read_local_p256_public_key = {
1551ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_LOCAL_P256_PUBLIC_KEY, ""
155282180fcaSMatthias Ringwald //  LE Read Local P-256 Public Key Complete is generated on completion
155382180fcaSMatthias Ringwald };
155482180fcaSMatthias Ringwald 
155582180fcaSMatthias Ringwald /**
1556fcae305fSMatthias Ringwald  * @param public key
1557fcae305fSMatthias Ringwald  * @param private key
155882180fcaSMatthias Ringwald  */
155982180fcaSMatthias Ringwald const hci_cmd_t hci_le_generate_dhkey = {
1560ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_GENERATE_DHKEY, "QQ"
156182180fcaSMatthias Ringwald // LE Generate DHKey Complete is generated on completion
156282180fcaSMatthias Ringwald };
156382180fcaSMatthias Ringwald 
15640ea2847fSMatthias Ringwald /**
1565173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address_Type
1566173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address
1567173ed1a3SMatthias Ringwald  * @param Peer_IRK
1568173ed1a3SMatthias Ringwald  * @param Local_IRK
1569173ed1a3SMatthias Ringwald  */
1570173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_add_device_to_resolving_list = {
1571173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_ADD_DEVICE_TO_RESOLVING_LIST, "1BPP"
1572173ed1a3SMatthias Ringwald };
1573173ed1a3SMatthias Ringwald 
1574173ed1a3SMatthias Ringwald /**
1575173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address_Type
1576173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address
1577173ed1a3SMatthias Ringwald  */
1578173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_remove_device_from_resolving_list = {
1579173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOVE_DEVICE_FROM_RESOLVING_LIST, "1B"
1580173ed1a3SMatthias Ringwald };
1581173ed1a3SMatthias Ringwald 
1582173ed1a3SMatthias Ringwald /**
1583173ed1a3SMatthias Ringwald  */
1584173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_clear_resolving_list = {
1585173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_CLEAR_RESOLVING_LIST, ""
1586173ed1a3SMatthias Ringwald };
1587173ed1a3SMatthias Ringwald 
1588173ed1a3SMatthias Ringwald /**
1589173ed1a3SMatthias Ringwald  */
1590173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_read_resolving_list_size = {
1591173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_RESOLVING_LIST_SIZE, ""
1592173ed1a3SMatthias Ringwald };
1593173ed1a3SMatthias Ringwald 
1594173ed1a3SMatthias Ringwald /**
1595173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address_Type
1596173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address
1597173ed1a3SMatthias Ringwald  */
1598173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_read_peer_resolvable_address = {
1599173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_PEER_RESOLVABLE_ADDRESS, ""
1600173ed1a3SMatthias Ringwald };
1601173ed1a3SMatthias Ringwald 
1602173ed1a3SMatthias Ringwald /**
1603173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address_Type
1604173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address
1605173ed1a3SMatthias Ringwald  */
1606173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_read_local_resolvable_address = {
1607173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_LOCAL_RESOLVABLE_ADDRESS, ""
1608173ed1a3SMatthias Ringwald };
1609173ed1a3SMatthias Ringwald 
1610173ed1a3SMatthias Ringwald /**
1611173ed1a3SMatthias Ringwald  * @param Address_Resolution_Enable
1612173ed1a3SMatthias Ringwald  */
1613173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_set_address_resolution_enabled= {
1614173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_ADDRESS_RESOLUTION_ENABLED, "1"
1615173ed1a3SMatthias Ringwald };
1616173ed1a3SMatthias Ringwald 
1617173ed1a3SMatthias Ringwald /**
1618173ed1a3SMatthias Ringwald  * @param RPA_Timeout in seconds, range 0x0001 to 0x0E10, default: 900 s
1619173ed1a3SMatthias Ringwald  */
1620173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_set_resolvable_private_address_timeout= {
1621173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_RESOLVABLE_PRIVATE_ADDRESS_TIMEOUT, "2"
1622173ed1a3SMatthias Ringwald };
1623173ed1a3SMatthias Ringwald 
1624173ed1a3SMatthias Ringwald /**
16250ea2847fSMatthias Ringwald  */
16260ea2847fSMatthias Ringwald const hci_cmd_t hci_le_read_maximum_data_length = {
1627ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_MAXIMUM_DATA_LENGTH, ""
16280ea2847fSMatthias Ringwald     // return: status, supported max tx octets, supported max tx time, supported max rx octets, supported max rx time
16290ea2847fSMatthias Ringwald };
16300ea2847fSMatthias Ringwald 
1631ca13daefSMatthias Ringwald /**
1632ca13daefSMatthias Ringwald  * @param con_handle
1633ca13daefSMatthias Ringwald  */
1634ca13daefSMatthias Ringwald const hci_cmd_t hci_le_read_phy = {
1635ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_PHY, "H"
1636ca13daefSMatthias Ringwald     // return: status, connection handler, tx phy, rx phy
1637ca13daefSMatthias Ringwald };
1638ca13daefSMatthias Ringwald 
1639ca13daefSMatthias Ringwald /**
1640ca13daefSMatthias Ringwald  * @param all_phys
1641ca13daefSMatthias Ringwald  * @param tx_phys
1642ca13daefSMatthias Ringwald  * @param rx_phys
1643ca13daefSMatthias Ringwald  */
1644ca13daefSMatthias Ringwald const hci_cmd_t hci_le_set_default_phy = {
1645ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_DEFAULT_PHY, "111"
1646ca13daefSMatthias Ringwald     // return: status
1647ca13daefSMatthias Ringwald };
1648ca13daefSMatthias Ringwald 
1649ca13daefSMatthias Ringwald /**
1650ca13daefSMatthias Ringwald  * @param con_handle
1651ca13daefSMatthias Ringwald  * @param all_phys
1652ca13daefSMatthias Ringwald  * @param tx_phys
1653ca13daefSMatthias Ringwald  * @param rx_phys
1654ca13daefSMatthias Ringwald  * @param phy_options
1655ca13daefSMatthias Ringwald  */
1656ca13daefSMatthias Ringwald const hci_cmd_t hci_le_set_phy = {
165752aff43aSfominykhandrei     HCI_OPCODE_HCI_LE_SET_PHY, "H1112"
1658ca13daefSMatthias Ringwald // LE PHY Update Complete is generated on completion
1659ca13daefSMatthias Ringwald };
1660ca13daefSMatthias Ringwald 
16610c1cf6c6SMatthias Ringwald /**
16620c1cf6c6SMatthias Ringwald  * @param rx_channel
16630c1cf6c6SMatthias Ringwald  * @param phy
16640c1cf6c6SMatthias Ringwald  * @param modulation_index
16650c1cf6c6SMatthias Ringwald  */
16660c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_receiver_test_v2 = {
16670c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_RECEIVER_TEST_V2, "111"
16680c1cf6c6SMatthias Ringwald };
16690c1cf6c6SMatthias Ringwald 
16700c1cf6c6SMatthias Ringwald /**
16710c1cf6c6SMatthias Ringwald  * @param tx_channel
16720c1cf6c6SMatthias Ringwald  * @param test_data_length
16730c1cf6c6SMatthias Ringwald  * @param packet_payload
16740c1cf6c6SMatthias Ringwald  * @param phy
16750c1cf6c6SMatthias Ringwald  */
16760c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test_v2 = {
16770c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_TRANSMITTER_TEST_V2, "1111"
16780c1cf6c6SMatthias Ringwald };
16790c1cf6c6SMatthias Ringwald 
16800c1cf6c6SMatthias Ringwald /**
16810c1cf6c6SMatthias Ringwald  * @param advertising_handle
16820c1cf6c6SMatthias Ringwald  * @param random_address
16830c1cf6c6SMatthias Ringwald  */
16840c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_advertising_set_random_address = {
16850c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_ADVERTISING_SET_RANDOM_ADDRESS, "1B"
16860c1cf6c6SMatthias Ringwald };
16870c1cf6c6SMatthias Ringwald 
16880c1cf6c6SMatthias Ringwald /**
16890c1cf6c6SMatthias Ringwald  * @param advertising_handle
16900c1cf6c6SMatthias Ringwald  * @param advertising_event_properties
16910c1cf6c6SMatthias Ringwald  * @param primary_advertising_interval_min in 0.625 ms, range: 0x000020..0xffffff
16920c1cf6c6SMatthias Ringwald  * @param primary_advertising_interval_max in 0.625 ms, range: 0x000020..0xffffff
16930c1cf6c6SMatthias Ringwald  * @param primary_advertising_channel_map
16940c1cf6c6SMatthias Ringwald  * @param own_address_type
16950c1cf6c6SMatthias Ringwald  * @param peer_address_type
16960c1cf6c6SMatthias Ringwald  * @param peer_address
16970c1cf6c6SMatthias Ringwald  * @param advertising_filter_policy
16980c1cf6c6SMatthias Ringwald  * @param advertising_tx_power in dBm, range: -127..20
16990c1cf6c6SMatthias Ringwald  * @param primary_advertising_phy
17000c1cf6c6SMatthias Ringwald  * @param secondary_advertising_max_skip
17010c1cf6c6SMatthias Ringwald  * @param secondary_advertising_phy
17020c1cf6c6SMatthias Ringwald  * @param advertising_sid
17030c1cf6c6SMatthias Ringwald  * @param scan_request_notification_enable
17040c1cf6c6SMatthias Ringwald  */
17050c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_advertising_parameters = {
17060c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_EXTENDED_ADVERTISING_PARAMETERS, "1233111B1111111"
17070c1cf6c6SMatthias Ringwald };
17080c1cf6c6SMatthias Ringwald 
17090c1cf6c6SMatthias Ringwald /**
17100c1cf6c6SMatthias Ringwald  * @param advertising_handle
17110c1cf6c6SMatthias Ringwald  * @param operation
17120c1cf6c6SMatthias Ringwald  * @param fragment_preference
17130c1cf6c6SMatthias Ringwald  * @param advertising_data_length
17140c1cf6c6SMatthias Ringwald  * @param advertising_data
17150c1cf6c6SMatthias Ringwald  */
17160c1cf6c6SMatthias Ringwald 
17170c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_advertising_data = {
17180c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_EXTENDED_ADVERTISING_DATA, "111JV"
17190c1cf6c6SMatthias Ringwald };
17200c1cf6c6SMatthias Ringwald 
17210c1cf6c6SMatthias Ringwald /**
17220c1cf6c6SMatthias Ringwald  * @param advertising_handle
17230c1cf6c6SMatthias Ringwald  * @param operation
17240c1cf6c6SMatthias Ringwald  * @param fragment_preference
17250c1cf6c6SMatthias Ringwald  * @param scan_response_data_length
17260c1cf6c6SMatthias Ringwald  * @param scan_response_data
17270c1cf6c6SMatthias Ringwald  */
17280c1cf6c6SMatthias Ringwald 
17290c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_scan_response_data = {
17300c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_EXTENDED_SCAN_RESPONSE_DATA, "111JV"
17310c1cf6c6SMatthias Ringwald };
17320c1cf6c6SMatthias Ringwald 
17330c1cf6c6SMatthias Ringwald /**
17340c1cf6c6SMatthias Ringwald  * @param enable
17350c1cf6c6SMatthias Ringwald  * @param num_sets
17360c1cf6c6SMatthias Ringwald  * @param advertising_handle[i]
17370c1cf6c6SMatthias Ringwald  * @param duration[i]
17380c1cf6c6SMatthias Ringwald  * @param max_extended_advertising_events[i]
17390c1cf6c6SMatthias Ringwald  */
17400c1cf6c6SMatthias Ringwald 
17410c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_advertising_enable = {
174227f212a7SMatthias Ringwald         HCI_OPCODE_HCI_LE_SET_EXTENDED_ADVERTISING_ENABLE, "1a[121]"
17430c1cf6c6SMatthias Ringwald };
17440c1cf6c6SMatthias Ringwald 
17450c1cf6c6SMatthias Ringwald /**
17460c1cf6c6SMatthias Ringwald  */
17470c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_maximum_advertising_data_length = {
17480c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_MAXIMUM_ADVERTISING_DATA_LENGTH, ""
17490c1cf6c6SMatthias Ringwald };
17500c1cf6c6SMatthias Ringwald 
17510c1cf6c6SMatthias Ringwald /**
17520c1cf6c6SMatthias Ringwald  */
17530c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_number_of_supported_advertising_sets = {
17540c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_NUMBER_OF_SUPPORTED_ADVERTISING_SETS, ""
17550c1cf6c6SMatthias Ringwald };
17560c1cf6c6SMatthias Ringwald 
17570c1cf6c6SMatthias Ringwald /**
17580c1cf6c6SMatthias Ringwald  * @param advertising_handle
17590c1cf6c6SMatthias Ringwald  */
17600c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_advertising_set = {
17610c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOVE_ADVERTISING_SET, "1"
17620c1cf6c6SMatthias Ringwald };
17630c1cf6c6SMatthias Ringwald 
17640c1cf6c6SMatthias Ringwald /**
17650c1cf6c6SMatthias Ringwald  */
17660c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_clear_advertising_sets = {
17670c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_CLEAR_ADVERTISING_SETS, ""
17680c1cf6c6SMatthias Ringwald };
17690c1cf6c6SMatthias Ringwald 
17700c1cf6c6SMatthias Ringwald /**
17710c1cf6c6SMatthias Ringwald  * @param advertising_handle
17720c1cf6c6SMatthias Ringwald  * @param periodic_advertising_interval_min * 1.25 ms, range 0x0006..0xffff
17730c1cf6c6SMatthias Ringwald  * @param periodic_advertising_interval_max * 1.25 ms, range 0x0006..0xffff
17740c1cf6c6SMatthias Ringwald  * @param periodic_advertising_properties
17750c1cf6c6SMatthias Ringwald  */
17760c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_parameters = {
17770c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_PARAMETERS, "1222"
17780c1cf6c6SMatthias Ringwald };
17790c1cf6c6SMatthias Ringwald 
17800c1cf6c6SMatthias Ringwald /**
17810c1cf6c6SMatthias Ringwald  * @param advertising_handle
17820c1cf6c6SMatthias Ringwald  * @param operation
17830c1cf6c6SMatthias Ringwald  * @param advertising_data_length
17840c1cf6c6SMatthias Ringwald  * @param advertising_data
17850c1cf6c6SMatthias Ringwald  */
17860c1cf6c6SMatthias Ringwald 
17870c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_data = {
17880c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_DATA, "11JV"
17890c1cf6c6SMatthias Ringwald };
17900c1cf6c6SMatthias Ringwald 
17910c1cf6c6SMatthias Ringwald /**
17920c1cf6c6SMatthias Ringwald  * @param enable
17930c1cf6c6SMatthias Ringwald  * @param advertising_handle
17940c1cf6c6SMatthias Ringwald  */
17950c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_enable = {
17960c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_ENABLE, "11"
17970c1cf6c6SMatthias Ringwald };
17980c1cf6c6SMatthias Ringwald 
17990c1cf6c6SMatthias Ringwald /**
18000c1cf6c6SMatthias Ringwald  * @param own_address_type
18010c1cf6c6SMatthias Ringwald  * @param scanning_filter_policy
18020c1cf6c6SMatthias Ringwald  * @param scanning_phys 0 = LE 1M PHY | 2 = LE Coded PHY
180327f212a7SMatthias Ringwald  * @param scan_type[i]
180427f212a7SMatthias Ringwald  * @param scan_interval[i] * 0.625, range = 0x0004..0xffff
180527f212a7SMatthias Ringwald  * @param scan_window[i] * 0.625, range = 0x0004..0xffff
18060c1cf6c6SMatthias Ringwald  */
18070c1cf6c6SMatthias Ringwald 
18086ea37a0fSMatthias Ringwald const hci_cmd_t hci_le_set_extended_scan_parameters = {
18096ea37a0fSMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_EXTENDED_SCAN_PARAMETERS, "11b[122]"
18100c1cf6c6SMatthias Ringwald };
18110c1cf6c6SMatthias Ringwald 
18120c1cf6c6SMatthias Ringwald /**
18130c1cf6c6SMatthias Ringwald  * @param enable
18140c1cf6c6SMatthias Ringwald  * @param filter_duplicates
18150c1cf6c6SMatthias Ringwald  * @param duration 0 = Scan continuously until explicitly disable, 10 ms
18160c1cf6c6SMatthias Ringwald  * @param period 0 = Scan continuously, 1.28 s
18170c1cf6c6SMatthias Ringwald  */
18180c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_scan_enable = {
18190c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_EXTENDED_SCAN_ENABLE, "1122"
18200c1cf6c6SMatthias Ringwald };
18210c1cf6c6SMatthias Ringwald 
18220c1cf6c6SMatthias Ringwald /**
18230c1cf6c6SMatthias Ringwald  * @param initiator_filter_policy
18240c1cf6c6SMatthias Ringwald  * @param own_address_type
18250c1cf6c6SMatthias Ringwald  * @param peer_address_type
18260c1cf6c6SMatthias Ringwald  * @param peer_address
18270c1cf6c6SMatthias Ringwald  * @param initiating_phys with bit 0 = LE 1M PHY, bit 1 = LE 2M PHY, bit 2 = Coded PHY
18280c1cf6c6SMatthias Ringwald  * @param scan_interval[i] * 0.625 ms
18290c1cf6c6SMatthias Ringwald  * @param scan_window[i] * 0.625 ms
18300c1cf6c6SMatthias Ringwald  * @param connection_interval_min[i] * 1.25 ms
18310c1cf6c6SMatthias Ringwald  * @param connection_interval_max[i] * 1.25 ms
18320c1cf6c6SMatthias Ringwald  * @param connection_latency[i]
18330c1cf6c6SMatthias Ringwald  * @param supervision_timeout[i] * 10 ms
18340c1cf6c6SMatthias Ringwald  * @param min_ce_length[i] * 0.625 ms
18350c1cf6c6SMatthias Ringwald  * @param max_ce_length[i] * 0.625 ms
18360c1cf6c6SMatthias Ringwald  */
18370c1cf6c6SMatthias Ringwald 
18380c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_extended_create_connection = {
18390c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_EXTENDED_CREATE_CONNECTION, "111Bb[22222222]"
18400c1cf6c6SMatthias Ringwald };
18410c1cf6c6SMatthias Ringwald 
18420c1cf6c6SMatthias Ringwald /**
18430c1cf6c6SMatthias Ringwald  * @param options
18440c1cf6c6SMatthias Ringwald  * @param advertising_sid
18450c1cf6c6SMatthias Ringwald  * @param advertiser_address_type
18460c1cf6c6SMatthias Ringwald  * @param advertiser_address
18470c1cf6c6SMatthias Ringwald  * @param skip
18480c1cf6c6SMatthias Ringwald  * @param sync_timeout * 10 ms
18490c1cf6c6SMatthias Ringwald  * @param sync_cte_type
18500c1cf6c6SMatthias Ringwald  */
18510c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_create_sync = {
18520c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_CREATE_SYNC, "111B221"
18530c1cf6c6SMatthias Ringwald };
18540c1cf6c6SMatthias Ringwald 
18550c1cf6c6SMatthias Ringwald /**
18560c1cf6c6SMatthias Ringwald  */
18570c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_create_sync_cancel = {
18580c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_CREATE_SYNC_CANCEL, ""
18590c1cf6c6SMatthias Ringwald };
18600c1cf6c6SMatthias Ringwald 
18610c1cf6c6SMatthias Ringwald /**
18620c1cf6c6SMatthias Ringwald  * @param sync_handle
18630c1cf6c6SMatthias Ringwald  */
18640c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_terminate_sync = {
1865c0112d43SMatthias Ringwald     HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_TERMINATE_SYNC, "2"
18660c1cf6c6SMatthias Ringwald };
18670c1cf6c6SMatthias Ringwald 
18680c1cf6c6SMatthias Ringwald /**
18690c1cf6c6SMatthias Ringwald  * @param advertiser_address_type
18700c1cf6c6SMatthias Ringwald  * @param advertiser_address
18710c1cf6c6SMatthias Ringwald  * @param advertising_sid
18720c1cf6c6SMatthias Ringwald  */
18730c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_add_device_to_periodic_advertiser_list = {
18740c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_ADD_DEVICE_TO_PERIODIC_ADVERTISER_LIST, "1B1"
18750c1cf6c6SMatthias Ringwald };
18760c1cf6c6SMatthias Ringwald 
18770c1cf6c6SMatthias Ringwald /**
18780c1cf6c6SMatthias Ringwald  * @param advertiser_address_type
18790c1cf6c6SMatthias Ringwald  * @param advertiser_address
18800c1cf6c6SMatthias Ringwald  * @param advertising_sid
18810c1cf6c6SMatthias Ringwald  */
18820c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_device_from_periodic_advertiser_list = {
18830c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISER_LIST, "1B1"
18840c1cf6c6SMatthias Ringwald };
18850c1cf6c6SMatthias Ringwald 
18860c1cf6c6SMatthias Ringwald /**
18870c1cf6c6SMatthias Ringwald  */
18880c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_clear_periodic_advertiser_list = {
18890c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_CLEAR_PERIODIC_ADVERTISER_LIST, ""
18900c1cf6c6SMatthias Ringwald };
18910c1cf6c6SMatthias Ringwald 
18920c1cf6c6SMatthias Ringwald /**
18930c1cf6c6SMatthias Ringwald  */
18940c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_periodic_advertiser_list_size = {
18950c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_PERIODIC_ADVERTISER_LIST_SIZE, ""
18960c1cf6c6SMatthias Ringwald };
18970c1cf6c6SMatthias Ringwald 
18980c1cf6c6SMatthias Ringwald /**
18990c1cf6c6SMatthias Ringwald  */
19000c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_transmit_power = {
19010c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_TRANSMIT_POWER, ""
19020c1cf6c6SMatthias Ringwald };
19030c1cf6c6SMatthias Ringwald 
19040c1cf6c6SMatthias Ringwald /**
19050c1cf6c6SMatthias Ringwald  */
19060c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_rf_path_compensation = {
19070c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_RF_PATH_COMPENSATION, ""
19080c1cf6c6SMatthias Ringwald };
19090c1cf6c6SMatthias Ringwald 
19100c1cf6c6SMatthias Ringwald /**
19110c1cf6c6SMatthias Ringwald  * @param rf_tx_path_compensation_value * 0.1 dB, signed
19120c1cf6c6SMatthias Ringwald  * @param rf_rx_path_compensation_value * 0.1 dB, signed
19130c1cf6c6SMatthias Ringwald  */
19140c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_write_rf_path_compensation = {
19150c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_WRITE_RF_PATH_COMPENSATION, "22"
19160c1cf6c6SMatthias Ringwald };
19170c1cf6c6SMatthias Ringwald 
19180c1cf6c6SMatthias Ringwald /**
19190c1cf6c6SMatthias Ringwald  * @param peer_identity_address_type
19200c1cf6c6SMatthias Ringwald  * @param peer_identity_address
19210c1cf6c6SMatthias Ringwald  * @param privacy_mode
19220c1cf6c6SMatthias Ringwald  */
19230c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_privacy_mode = {
19240c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PRIVACY_MODE, "1B1"
19250c1cf6c6SMatthias Ringwald };
19260c1cf6c6SMatthias Ringwald 
19270c1cf6c6SMatthias Ringwald /**
19280c1cf6c6SMatthias Ringwald  * @param rx_channel
19290c1cf6c6SMatthias Ringwald  * @param phy
19300c1cf6c6SMatthias Ringwald  * @param modulation_index
19310c1cf6c6SMatthias Ringwald  * @param expected_cte_length
19320c1cf6c6SMatthias Ringwald  * @param expected_cte_type
19330c1cf6c6SMatthias Ringwald  * @param slot_durations
19340c1cf6c6SMatthias Ringwald  * @param switching_pattern_length
19350c1cf6c6SMatthias Ringwald  * @param antenna_ids[i]
19360c1cf6c6SMatthias Ringwald  */
19370c1cf6c6SMatthias Ringwald 
19380c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_receiver_test_v3 = {
19390c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_RECEIVER_TEST_V3, "111111a[1]"
19400c1cf6c6SMatthias Ringwald };
19410c1cf6c6SMatthias Ringwald 
19420c1cf6c6SMatthias Ringwald /**
19430c1cf6c6SMatthias Ringwald  * @param tx_channel
19440c1cf6c6SMatthias Ringwald  * @param test_data_length
19450c1cf6c6SMatthias Ringwald  * @param packet_payload
19460c1cf6c6SMatthias Ringwald  * @param phy
19470c1cf6c6SMatthias Ringwald  * @param cte_length
19480c1cf6c6SMatthias Ringwald  * @param cte_type
19490c1cf6c6SMatthias Ringwald  * @param switching_pattern_length
19500c1cf6c6SMatthias Ringwald  * @param antenna_ids[i]
19510c1cf6c6SMatthias Ringwald  */
19520c1cf6c6SMatthias Ringwald 
19530c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test_v3 = {
19540c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_TRANSMITTER_TEST_V3, "111111a[1]"
19550c1cf6c6SMatthias Ringwald };
19560c1cf6c6SMatthias Ringwald 
19570c1cf6c6SMatthias Ringwald /**
19580c1cf6c6SMatthias Ringwald  * @param advertising_handle
19590c1cf6c6SMatthias Ringwald  * @param cte_length
19600c1cf6c6SMatthias Ringwald  * @param cte_type
19610c1cf6c6SMatthias Ringwald  * @param cte_count
19620c1cf6c6SMatthias Ringwald  * @param switching_pattern_length
19630c1cf6c6SMatthias Ringwald  * @param antenna_ids[i]
19640c1cf6c6SMatthias Ringwald  */
19650c1cf6c6SMatthias Ringwald 
19660c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connectionless_cte_transmit_parameters = {
19670c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_CONNECTIONLESS_CTE_TRANSMIT_PARAMETERS, "1111a[1]"
19680c1cf6c6SMatthias Ringwald };
19690c1cf6c6SMatthias Ringwald 
19700c1cf6c6SMatthias Ringwald /**
19710c1cf6c6SMatthias Ringwald  * @param advertising_handle
19720c1cf6c6SMatthias Ringwald  * @param cte_enable
19730c1cf6c6SMatthias Ringwald  */
19740c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connectionless_cte_transmit_enable = {
19750c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_CONNECTIONLESS_CTE_TRANSMIT_ENABLE, "11"
19760c1cf6c6SMatthias Ringwald };
19770c1cf6c6SMatthias Ringwald 
19780c1cf6c6SMatthias Ringwald /**
19790c1cf6c6SMatthias Ringwald  * @param sync_handle
19800c1cf6c6SMatthias Ringwald  * @param sampling_enable
19810c1cf6c6SMatthias Ringwald  * @param slot_durations
19820c1cf6c6SMatthias Ringwald  * @param max_sampled_ctes
19830c1cf6c6SMatthias Ringwald  * @param switching_pattern_length
19840c1cf6c6SMatthias Ringwald  * @param antenna_ids[i]
19850c1cf6c6SMatthias Ringwald  */
19860c1cf6c6SMatthias Ringwald 
19870c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connectionless_iq_sampling_enable = {
19880c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_CONNECTIONLESS_IQ_SAMPLING_ENABLE, "2111a[i]"
19890c1cf6c6SMatthias Ringwald };
19900c1cf6c6SMatthias Ringwald 
19910c1cf6c6SMatthias Ringwald /**
19920c1cf6c6SMatthias Ringwald  * @param connection_handle
19930c1cf6c6SMatthias Ringwald  * @param sampling_enable
19940c1cf6c6SMatthias Ringwald  * @param slot_durations
19950c1cf6c6SMatthias Ringwald  * @param switching_pattern_length
19960c1cf6c6SMatthias Ringwald  * @param antenna_ids[i]
19970c1cf6c6SMatthias Ringwald  */
19980c1cf6c6SMatthias Ringwald 
19990c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connection_cte_receive_parameters = {
20000c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_CONNECTION_CTE_RECEIVE_PARAMETERS, "211a[1]"
20010c1cf6c6SMatthias Ringwald };
20020c1cf6c6SMatthias Ringwald 
20030c1cf6c6SMatthias Ringwald /**
20040c1cf6c6SMatthias Ringwald  * @param connection_handle
20050c1cf6c6SMatthias Ringwald  * @param cte_types
20060c1cf6c6SMatthias Ringwald  * @param switching_pattern_length
20070c1cf6c6SMatthias Ringwald  * @param antenna_ids[i]
20080c1cf6c6SMatthias Ringwald  */
20090c1cf6c6SMatthias Ringwald 
20100c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connection_cte_transmit_parameters = {
20110c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_CONNECTION_CTE_TRANSMIT_PARAMETERS, "21a[1]"
20120c1cf6c6SMatthias Ringwald };
20130c1cf6c6SMatthias Ringwald 
20140c1cf6c6SMatthias Ringwald /**
20150c1cf6c6SMatthias Ringwald  * @param connection_handle
20160c1cf6c6SMatthias Ringwald  * @param enable
20170c1cf6c6SMatthias Ringwald  * @param cte_request_interval
20180c1cf6c6SMatthias Ringwald  * @param requested_cte_length
20190c1cf6c6SMatthias Ringwald  * @param requested_cte_type
20200c1cf6c6SMatthias Ringwald  */
20210c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_connection_cte_request_enable = {
20220c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_CONNECTION_CTE_REQUEST_ENABLE, "H1211"
20230c1cf6c6SMatthias Ringwald };
20240c1cf6c6SMatthias Ringwald 
20250c1cf6c6SMatthias Ringwald /**
20260c1cf6c6SMatthias Ringwald  * @param connection_handle
20270c1cf6c6SMatthias Ringwald  * @param enable
20280c1cf6c6SMatthias Ringwald  */
20290c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_connection_cte_response_enable = {
20300c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_CONNECTION_CTE_RESPONSE_ENABLE, "H1"
20310c1cf6c6SMatthias Ringwald };
20320c1cf6c6SMatthias Ringwald 
20330c1cf6c6SMatthias Ringwald /**
20340c1cf6c6SMatthias Ringwald  */
20350c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_antenna_information = {
20360c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_ANTENNA_INFORMATION, ""
20370c1cf6c6SMatthias Ringwald };
20380c1cf6c6SMatthias Ringwald 
20390c1cf6c6SMatthias Ringwald /**
20400c1cf6c6SMatthias Ringwald  * @param sync_handle
20410c1cf6c6SMatthias Ringwald  * @param enable
20420c1cf6c6SMatthias Ringwald  */
20430c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_receive_enable = {
20440c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_RECEIVE_ENABLE, "H1"
20450c1cf6c6SMatthias Ringwald };
20460c1cf6c6SMatthias Ringwald 
20470c1cf6c6SMatthias Ringwald /**
20480c1cf6c6SMatthias Ringwald  * @param connection_handle
20490c1cf6c6SMatthias Ringwald  * @param service_data
20500c1cf6c6SMatthias Ringwald  * @param sync_handle
20510c1cf6c6SMatthias Ringwald  */
20520c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_sync_transfer = {
20530c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_SYNC_TRANSFER, "H22"
20540c1cf6c6SMatthias Ringwald };
20550c1cf6c6SMatthias Ringwald 
20560c1cf6c6SMatthias Ringwald /**
20570c1cf6c6SMatthias Ringwald  * @param connection_handle
20580c1cf6c6SMatthias Ringwald  * @param service_data
20590c1cf6c6SMatthias Ringwald  * @param advertising_handle
20600c1cf6c6SMatthias Ringwald  */
20610c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_set_info_transfer = {
20620c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_SET_INFO_TRANSFER, "H21"
20630c1cf6c6SMatthias Ringwald };
20640c1cf6c6SMatthias Ringwald 
20650c1cf6c6SMatthias Ringwald /**
20660c1cf6c6SMatthias Ringwald  * @param connection_handle
20670c1cf6c6SMatthias Ringwald  * @param mode
20680c1cf6c6SMatthias Ringwald  * @param skip
20690c1cf6c6SMatthias Ringwald  * @param sync_timeout
20700c1cf6c6SMatthias Ringwald  * @param cte_type
20710c1cf6c6SMatthias Ringwald  */
20720c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_sync_transfer_parameters = {
20730c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_SYNC_TRANSFER_PARAMETERS, "H1221"
20740c1cf6c6SMatthias Ringwald };
20750c1cf6c6SMatthias Ringwald 
20760c1cf6c6SMatthias Ringwald /**
20770c1cf6c6SMatthias Ringwald  * @param mode
20780c1cf6c6SMatthias Ringwald  * @param skip
20790c1cf6c6SMatthias Ringwald  * @param sync_timeout
20800c1cf6c6SMatthias Ringwald  * @param cte_type
20810c1cf6c6SMatthias Ringwald  */
20820c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_default_periodic_advertising_sync_transfer_parameters = {
20830c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_DEFAULT_PERIODIC_ADVERTISING_SYNC_TRANSFER_PARAMETERS, "1221"
20840c1cf6c6SMatthias Ringwald };
20850c1cf6c6SMatthias Ringwald 
20860c1cf6c6SMatthias Ringwald /**
20870c1cf6c6SMatthias Ringwald  * @param 256Remote_P-256_public_key_x
20880c1cf6c6SMatthias Ringwald  * @param 256Remote_P-256_public_key_y
20890c1cf6c6SMatthias Ringwald  * @param key_type
20900c1cf6c6SMatthias Ringwald  */
20910c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_generate_dhkey_v2 = {
20920c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_GENERATE_DHKEY_V2, "QQ1"
20930c1cf6c6SMatthias Ringwald };
20940c1cf6c6SMatthias Ringwald 
20950c1cf6c6SMatthias Ringwald /**
20960c1cf6c6SMatthias Ringwald  * @param action
20970c1cf6c6SMatthias Ringwald  */
20980c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_modify_sleep_clock_accuracy = {
20990c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_MODIFY_SLEEP_CLOCK_ACCURACY, "1"
21000c1cf6c6SMatthias Ringwald };
21010c1cf6c6SMatthias Ringwald 
21020c1cf6c6SMatthias Ringwald /**
21030c1cf6c6SMatthias Ringwald  */
2104b3e0a1b9SMatthias Ringwald const hci_cmd_t hci_le_read_buffer_size_v2 = {
2105b3e0a1b9SMatthias Ringwald         HCI_OPCODE_HCI_LE_READ_BUFFER_SIZE_V2, ""
21060c1cf6c6SMatthias Ringwald };
21070c1cf6c6SMatthias Ringwald 
21080c1cf6c6SMatthias Ringwald /**
21090c1cf6c6SMatthias Ringwald  * @param connection_handle
21100c1cf6c6SMatthias Ringwald  */
21110c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_iso_tx_sync = {
21120c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_ISO_TX_SYNC, "H"
21130c1cf6c6SMatthias Ringwald };
21140c1cf6c6SMatthias Ringwald 
21150c1cf6c6SMatthias Ringwald /**
21160c1cf6c6SMatthias Ringwald  * @param cig_id
21170c1cf6c6SMatthias Ringwald  * @param sdu_interval_m_to_s
21180c1cf6c6SMatthias Ringwald  * @param sdu_interval_s_to_m
21190c1cf6c6SMatthias Ringwald  * @param slaves_clock_accuracy
21200c1cf6c6SMatthias Ringwald  * @param packing
21210c1cf6c6SMatthias Ringwald  * @param framing
21220c1cf6c6SMatthias Ringwald  * @param max_transport_latency_m_to_s
21230c1cf6c6SMatthias Ringwald  * @param max_transport_latency_s_to_m
21240c1cf6c6SMatthias Ringwald  * @param cis_count
21250c1cf6c6SMatthias Ringwald  * @param cis_id[i]
21260c1cf6c6SMatthias Ringwald  * @param max_sdu_m_to_s[i]
21270c1cf6c6SMatthias Ringwald  * @param max_sdu_s_to_m[i]
21280c1cf6c6SMatthias Ringwald  * @param phy_m_to_s[i]
21290c1cf6c6SMatthias Ringwald  * @param phy_s_to_m[i]
21300c1cf6c6SMatthias Ringwald  * @param rtn_m_to_s[i]
21310c1cf6c6SMatthias Ringwald  * @param rtn_s_to_m[i]
21320c1cf6c6SMatthias Ringwald  */
21330c1cf6c6SMatthias Ringwald 
21340c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_cig_parameters = {
21350c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_CIG_PARAMETERS, "13311122a[1221111]"
21360c1cf6c6SMatthias Ringwald };
21370c1cf6c6SMatthias Ringwald 
21380c1cf6c6SMatthias Ringwald /**
21390c1cf6c6SMatthias Ringwald  * @param cig_id
21400c1cf6c6SMatthias Ringwald  * @param sdu_interval_m_to_s
21410c1cf6c6SMatthias Ringwald  * @param sdu_interval_s_to_m
21420c1cf6c6SMatthias Ringwald  * @param ft_m_to_s
21430c1cf6c6SMatthias Ringwald  * @param ft_s_to_m
21440c1cf6c6SMatthias Ringwald  * @param iso_interval
21450c1cf6c6SMatthias Ringwald  * @param slaves_clock_accuracy
21460c1cf6c6SMatthias Ringwald  * @param packing
21470c1cf6c6SMatthias Ringwald  * @param framing
21480c1cf6c6SMatthias Ringwald  * @param max_transport_latency_m_to_s
21490c1cf6c6SMatthias Ringwald  * @param max_transport_latency_s_to_m
21500c1cf6c6SMatthias Ringwald  * @param cis_count
21510c1cf6c6SMatthias Ringwald  * @param cis_id[i]
21520c1cf6c6SMatthias Ringwald  * @param nse[i]
21530c1cf6c6SMatthias Ringwald  * @param max_sdu_m_to_s[i]
21540c1cf6c6SMatthias Ringwald  * @param max_sdu_s_to_m[i]
21550c1cf6c6SMatthias Ringwald  * @param max_pdu_m_to_s[i]
21560c1cf6c6SMatthias Ringwald  * @param max_pdu_s_to_m[i]
21570c1cf6c6SMatthias Ringwald  * @param phy_m_to_s[i]
21580c1cf6c6SMatthias Ringwald  * @param phy_s_to_m[i]
21590c1cf6c6SMatthias Ringwald  * @param bn_m_to_s[i]
21600c1cf6c6SMatthias Ringwald  * @param bn_s_to_m[i]
21610c1cf6c6SMatthias Ringwald  */
21620c1cf6c6SMatthias Ringwald 
21630c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_cig_parameters_test = {
21640c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_CIG_PARAMETERS_TEST, "133112111a[1122221111]"
21650c1cf6c6SMatthias Ringwald };
21660c1cf6c6SMatthias Ringwald 
21670c1cf6c6SMatthias Ringwald /**
21680c1cf6c6SMatthias Ringwald  * @param cis_count
21690c1cf6c6SMatthias Ringwald  * @param cis_connection_handle[i]
21700c1cf6c6SMatthias Ringwald  * @param acl_connection_handle[i]
21710c1cf6c6SMatthias Ringwald  */
21720c1cf6c6SMatthias Ringwald 
21730c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_create_cis = {
21740c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_CREATE_CIS, "a[22]"
21750c1cf6c6SMatthias Ringwald };
21760c1cf6c6SMatthias Ringwald 
21770c1cf6c6SMatthias Ringwald /**
21780c1cf6c6SMatthias Ringwald  * @param cig_id
21790c1cf6c6SMatthias Ringwald  */
21800c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_cig = {
21810c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOVE_CIG, "1"
21820c1cf6c6SMatthias Ringwald };
21830c1cf6c6SMatthias Ringwald 
21840c1cf6c6SMatthias Ringwald /**
21850c1cf6c6SMatthias Ringwald  * @param connection_handle
21860c1cf6c6SMatthias Ringwald  */
21870c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_accept_cis_request = {
21880c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_ACCEPT_CIS_REQUEST, "H"
21890c1cf6c6SMatthias Ringwald };
21900c1cf6c6SMatthias Ringwald 
21910c1cf6c6SMatthias Ringwald /**
21920c1cf6c6SMatthias Ringwald  * @param connection_handle
21930c1cf6c6SMatthias Ringwald  */
21940c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_reject_cis_request = {
21951a2fdeb3SMatthias Ringwald     HCI_OPCODE_HCI_LE_REJECT_CIS_REQUEST, "H1"
21960c1cf6c6SMatthias Ringwald };
21970c1cf6c6SMatthias Ringwald 
21980c1cf6c6SMatthias Ringwald /**
21990c1cf6c6SMatthias Ringwald  * @param big_handle
22000c1cf6c6SMatthias Ringwald  * @param advertising_handle
22010c1cf6c6SMatthias Ringwald  * @param num_bis
22020c1cf6c6SMatthias Ringwald  * @param sdu_interval
22030c1cf6c6SMatthias Ringwald  * @param max_sdu
22040c1cf6c6SMatthias Ringwald  * @param max_transport_latency
22050c1cf6c6SMatthias Ringwald  * @param rtn
22060c1cf6c6SMatthias Ringwald  * @param phy
22070c1cf6c6SMatthias Ringwald  * @param packing
22080c1cf6c6SMatthias Ringwald  * @param framing
22090c1cf6c6SMatthias Ringwald  * @param encryption
22100c1cf6c6SMatthias Ringwald  * @param broadcast_code
22110c1cf6c6SMatthias Ringwald  */
22120c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_create_big = {
2213a10fc198SMatthias Ringwald     HCI_OPCODE_HCI_LE_CREATE_BIG, "11132211111K"
22140c1cf6c6SMatthias Ringwald };
22150c1cf6c6SMatthias Ringwald 
22160c1cf6c6SMatthias Ringwald /**
22170c1cf6c6SMatthias Ringwald  * @param big_handle
22180c1cf6c6SMatthias Ringwald  * @param advertising_handle
22190c1cf6c6SMatthias Ringwald  * @param num_bis
22200c1cf6c6SMatthias Ringwald  * @param sdu_interval
22210c1cf6c6SMatthias Ringwald  * @param iso_interval
22220c1cf6c6SMatthias Ringwald  * @param nse
22230c1cf6c6SMatthias Ringwald  * @param max_sdu
22240c1cf6c6SMatthias Ringwald  * @param max_PDU
22250c1cf6c6SMatthias Ringwald  * @param phy
22260c1cf6c6SMatthias Ringwald  * @param packing
22270c1cf6c6SMatthias Ringwald  * @param framing
22280c1cf6c6SMatthias Ringwald  * @param bn
22290c1cf6c6SMatthias Ringwald  * @param irc
22300c1cf6c6SMatthias Ringwald  * @param pto
22310c1cf6c6SMatthias Ringwald  * @param encryption
22320c1cf6c6SMatthias Ringwald  * @param broadcast_code
22330c1cf6c6SMatthias Ringwald  */
22340c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_create_big_test = {
2235a10fc198SMatthias Ringwald     HCI_OPCODE_HCI_LE_CREATE_BIG_TEST, "111321221111111K"
22360c1cf6c6SMatthias Ringwald };
22370c1cf6c6SMatthias Ringwald 
22380c1cf6c6SMatthias Ringwald /**
22390c1cf6c6SMatthias Ringwald  * @param big_handle
22400c1cf6c6SMatthias Ringwald  * @param reason
22410c1cf6c6SMatthias Ringwald  */
22420c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_terminate_big = {
22430c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_TERMINATE_BIG, "11"
22440c1cf6c6SMatthias Ringwald };
22450c1cf6c6SMatthias Ringwald 
22460c1cf6c6SMatthias Ringwald /**
22470c1cf6c6SMatthias Ringwald  * @param big_handle
22480c1cf6c6SMatthias Ringwald  * @param sync_handle
22490c1cf6c6SMatthias Ringwald  * @param encryption
22500c1cf6c6SMatthias Ringwald  * @param broadcast_code
22510c1cf6c6SMatthias Ringwald  * @param mse
22520c1cf6c6SMatthias Ringwald  * @param big_sync_timeout
22530c1cf6c6SMatthias Ringwald  * @param num_bis
22540c1cf6c6SMatthias Ringwald  * @param bis[i]
22550c1cf6c6SMatthias Ringwald  */
22560c1cf6c6SMatthias Ringwald 
22570c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_big_create_sync = {
2258a10fc198SMatthias Ringwald     HCI_OPCODE_HCI_LE_BIG_CREATE_SYNC, "1H1K12a[1]"
22590c1cf6c6SMatthias Ringwald };
22600c1cf6c6SMatthias Ringwald 
22610c1cf6c6SMatthias Ringwald /**
22620c1cf6c6SMatthias Ringwald  * @param big_handle
22630c1cf6c6SMatthias Ringwald  */
22640c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_big_terminate_sync = {
2265c0112d43SMatthias Ringwald     HCI_OPCODE_HCI_LE_BIG_TERMINATE_SYNC, "1"
22660c1cf6c6SMatthias Ringwald };
22670c1cf6c6SMatthias Ringwald 
22680c1cf6c6SMatthias Ringwald /**
22690c1cf6c6SMatthias Ringwald  * @param connection_handle
22700c1cf6c6SMatthias Ringwald  */
22710c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_request_peer_sca = {
22720c1cf6c6SMatthias Ringwald         HCI_OPCODE_HCI_LE_REQUEST_PEER_SCA, "H"
22730c1cf6c6SMatthias Ringwald };
22740c1cf6c6SMatthias Ringwald 
22750c1cf6c6SMatthias Ringwald /**
22760c1cf6c6SMatthias Ringwald  * @param connection_handle
22770c1cf6c6SMatthias Ringwald  * @param data_path_direction
22780c1cf6c6SMatthias Ringwald  * @param data_path_id
22790c1cf6c6SMatthias Ringwald  * @param codec_id_coding_format
22800c1cf6c6SMatthias Ringwald  * @param codec_id_company_identifier (Shall be ignored if codec_id_coding_format is not 0xFF)
22810c1cf6c6SMatthias Ringwald  * @param codec_id_vendor_codec_id (Shall be ignored if codec_id_coding_format is not 0xFF)
22820c1cf6c6SMatthias Ringwald  * @param controller_delay
22830c1cf6c6SMatthias Ringwald  * @param codec_configuration_length
22840c1cf6c6SMatthias Ringwald  * @param codec_configuration
22850c1cf6c6SMatthias Ringwald  */
22860c1cf6c6SMatthias Ringwald 
22870c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_setup_iso_data_path = {
22880c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SETUP_ISO_DATA_PATH, "H111223JV"
22890c1cf6c6SMatthias Ringwald };
22900c1cf6c6SMatthias Ringwald 
22910c1cf6c6SMatthias Ringwald /**
22920c1cf6c6SMatthias Ringwald  * @param connection_handle
22930c1cf6c6SMatthias Ringwald  */
22940c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_iso_data_path = {
22950c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOVE_ISO_DATA_PATH, "H1"
22960c1cf6c6SMatthias Ringwald };
22970c1cf6c6SMatthias Ringwald 
22980c1cf6c6SMatthias Ringwald /**
22990c1cf6c6SMatthias Ringwald  * @param connection_handle
23000c1cf6c6SMatthias Ringwald  * @param paylaod_type
23010c1cf6c6SMatthias Ringwald  */
23020c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_transmit_test = {
23030c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_ISO_TRANSMIT_TEST, "H1"
23040c1cf6c6SMatthias Ringwald };
23050c1cf6c6SMatthias Ringwald 
23060c1cf6c6SMatthias Ringwald /**
23070c1cf6c6SMatthias Ringwald  * @param connection_handle
23080c1cf6c6SMatthias Ringwald  * @param paylaod_type
23090c1cf6c6SMatthias Ringwald  */
23100c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_receive_test = {
23110c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_ISO_RECEIVE_TEST, "H1"
23120c1cf6c6SMatthias Ringwald };
23130c1cf6c6SMatthias Ringwald 
23140c1cf6c6SMatthias Ringwald /**
23150c1cf6c6SMatthias Ringwald  * @param connection_handle
23160c1cf6c6SMatthias Ringwald  */
23170c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_read_test_counters = {
23180c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_ISO_READ_TEST_COUNTERS, "H"
23190c1cf6c6SMatthias Ringwald };
23200c1cf6c6SMatthias Ringwald 
23210c1cf6c6SMatthias Ringwald /**
23220c1cf6c6SMatthias Ringwald  * @param connection_handle
23230c1cf6c6SMatthias Ringwald  */
23240c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_test_end = {
23250c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_ISO_TEST_END, "H"
23260c1cf6c6SMatthias Ringwald };
23270c1cf6c6SMatthias Ringwald 
23280c1cf6c6SMatthias Ringwald /**
23290c1cf6c6SMatthias Ringwald  * @param bit_number
23300c1cf6c6SMatthias Ringwald  * @param bit_value
23310c1cf6c6SMatthias Ringwald  */
23320c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_host_feature = {
23330c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_HOST_FEATURE, "11"
23340c1cf6c6SMatthias Ringwald };
23350c1cf6c6SMatthias Ringwald 
23360c1cf6c6SMatthias Ringwald /**
23370c1cf6c6SMatthias Ringwald  * @param connection_handle
23380c1cf6c6SMatthias Ringwald  */
23390c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_iso_link_quality = {
23400c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_ISO_LINK_QUALITY, "H"
23410c1cf6c6SMatthias Ringwald };
23420c1cf6c6SMatthias Ringwald 
23430c1cf6c6SMatthias Ringwald /**
23440c1cf6c6SMatthias Ringwald  * @param connection_handle
23450c1cf6c6SMatthias Ringwald  * @param phy
23460c1cf6c6SMatthias Ringwald  */
23470c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_enhanced_read_transmit_power_level = {
23480c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_ENHANCED_READ_TRANSMIT_POWER_LEVEL, "H1"
23490c1cf6c6SMatthias Ringwald };
23500c1cf6c6SMatthias Ringwald 
23510c1cf6c6SMatthias Ringwald /**
23520c1cf6c6SMatthias Ringwald  * @param connection_handle
23530c1cf6c6SMatthias Ringwald  * @param phy
23540c1cf6c6SMatthias Ringwald  */
23550c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_remote_transmit_power_level = {
23560c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_REMOTE_TRANSMIT_POWER_LEVEL, "H1"
23570c1cf6c6SMatthias Ringwald };
23580c1cf6c6SMatthias Ringwald 
23590c1cf6c6SMatthias Ringwald /**
23600c1cf6c6SMatthias Ringwald  * @param connection_handle
23610c1cf6c6SMatthias Ringwald  * @param high_threshold
23620c1cf6c6SMatthias Ringwald  * @param high_hysteresis
23630c1cf6c6SMatthias Ringwald  * @param low_threshold
23640c1cf6c6SMatthias Ringwald  * @param low_hysteresis
23650c1cf6c6SMatthias Ringwald  * @param min_time_spent
23660c1cf6c6SMatthias Ringwald  */
23670c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_path_loss_reporting_parameters = {
23680c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PATH_LOSS_REPORTING_PARAMETERS, "211112"
23690c1cf6c6SMatthias Ringwald };
23700c1cf6c6SMatthias Ringwald 
23710c1cf6c6SMatthias Ringwald /**
23720c1cf6c6SMatthias Ringwald  * @param connection_handle
23730c1cf6c6SMatthias Ringwald  * @param enable
23740c1cf6c6SMatthias Ringwald  */
23750c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_path_loss_reporting_enable = {
23760c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PATH_LOSS_REPORTING_ENABLE, "H1"
23770c1cf6c6SMatthias Ringwald };
23780c1cf6c6SMatthias Ringwald 
23790c1cf6c6SMatthias Ringwald /**
23800c1cf6c6SMatthias Ringwald  * @param connection_handle
23810c1cf6c6SMatthias Ringwald  * @param local_enable
23820c1cf6c6SMatthias Ringwald  * @param remote_enable
23830c1cf6c6SMatthias Ringwald  */
23840c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_transmit_power_reporting_enable = {
23850c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_TRANSMIT_POWER_REPORTING_ENABLE, "H11"
23860c1cf6c6SMatthias Ringwald };
23870c1cf6c6SMatthias Ringwald 
23880c1cf6c6SMatthias Ringwald /**
23890c1cf6c6SMatthias Ringwald  * @param tx_channel
23900c1cf6c6SMatthias Ringwald  * @param test_data_length
23910c1cf6c6SMatthias Ringwald  * @param packet_payload
23920c1cf6c6SMatthias Ringwald  * @param phy
23930c1cf6c6SMatthias Ringwald  * @param cte_length
23940c1cf6c6SMatthias Ringwald  * @param cte_type
23950c1cf6c6SMatthias Ringwald  * @param switching_pattern_length
23960c1cf6c6SMatthias Ringwald  * @param antenna_ids[i]
23970c1cf6c6SMatthias Ringwald  * @param transmit_power_level
23980c1cf6c6SMatthias Ringwald  */
23990c1cf6c6SMatthias Ringwald 
24000c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test_v4 = {
24010c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_TRANSMITTER_TEST_V4, "111111a[1]1"
24020c1cf6c6SMatthias Ringwald };
2403ca13daefSMatthias Ringwald 
240456042629SMatthias Ringwald #endif
2405a42798c3SMatthias Ringwald 
2406a42798c3SMatthias Ringwald // Broadcom / Cypress specific HCI commands
2407a42798c3SMatthias Ringwald 
2408a42798c3SMatthias Ringwald /**
2409067ecc36SMatthias Ringwald  * @brief Enable Wide-Band Speech / mSBC decoding for PCM
2410067ecc36SMatthias Ringwald  * @param enable_wbs is 0 for disable, 1 for enable
2411067ecc36SMatthias Ringwald  * @param uuid_wbs is 2 for EV2/EV3
2412067ecc36SMatthias Ringwald  */
2413067ecc36SMatthias Ringwald const hci_cmd_t hci_bcm_enable_wbs = {
2414067ecc36SMatthias Ringwald     HCI_OPCODE_HCI_BCM_ENABLE_WBS, "12"
2415067ecc36SMatthias Ringwald         // return: status
2416067ecc36SMatthias Ringwald };
2417067ecc36SMatthias Ringwald 
2418067ecc36SMatthias Ringwald /**
2419a42798c3SMatthias Ringwald  * @brief Configure SCO Routing (BCM)
2420a42798c3SMatthias Ringwald  * @param sco_routing is 0 for PCM, 1 for Transport, 2 for Codec and 3 for I2S
2421a42798c3SMatthias Ringwald  * @param pcm_interface_rate is 0 for 128KBps, 1 for 256 KBps, 2 for 512KBps, 3 for 1024KBps, and 4 for 2048Kbps
2422a42798c3SMatthias Ringwald  * @param frame_type is 0 for short and 1 for long
2423a42798c3SMatthias Ringwald  * @param sync_mode is 0 for slave and 1 for master
2424a42798c3SMatthias Ringwald  * @param clock_mode is 0 for slabe and 1 for master
2425a42798c3SMatthias Ringwald  */
2426a42798c3SMatthias Ringwald const hci_cmd_t hci_bcm_write_sco_pcm_int = {
2427ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_BCM_WRITE_SCO_PCM_INT, "11111"
2428a42798c3SMatthias Ringwald     // return: status
2429a42798c3SMatthias Ringwald };
2430eab6959fSMatthias Ringwald 
2431eab6959fSMatthias Ringwald /**
2432067ecc36SMatthias Ringwald  * @brief Configure the I2S/PCM interface (BCM)
2433067ecc36SMatthias Ringwald  * @param i2s_enable is 0 for off, 1 for on
2434067ecc36SMatthias Ringwald  * @param is_master is 0 for slave, is 1 for master
2435067ecc36SMatthias Ringwald  * @param sample_rate is 0 for 8 kHz, 1 for 16 kHz, 2 for 4 kHz
2436067ecc36SMatthias 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
2437067ecc36SMatthias Ringwald  */
2438067ecc36SMatthias Ringwald const hci_cmd_t hci_bcm_write_i2spcm_interface_param = {
243958323d58SMatthias Ringwald     HCI_OPCODE_HCI_BCM_WRITE_I2SPCM_INTERFACE_PARAM, "1111"
2440067ecc36SMatthias Ringwald         // return: status
2441067ecc36SMatthias Ringwald };
2442067ecc36SMatthias Ringwald 
2443067ecc36SMatthias Ringwald 
2444067ecc36SMatthias Ringwald /**
2445eab6959fSMatthias Ringwald  * @brief Activates selected Sleep Mode
2446eab6959fSMatthias 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
2447eab6959fSMatthias Ringwald  * @param idle_threshold_host (modes 1,2,5,7) time until considered idle, unit roughly 300 ms
2448eab6959fSMatthias Ringwald  * @param idle_threshold_controller (modes 1-7,9) time until considered idle, unit roughly 300 ms
2449eab6959fSMatthias Ringwald  * @param bt_wake_active_mode (modes 1,2,7) 0 = BT_WAKE line is active high, 1 = BT_WAKE is active low
2450eab6959fSMatthias Ringwald  * @param host_wake_active_mode (modes 1,2,5,7) 0 = HOST_WAKE line is active high, 1 = HOST_WAKE is active low
2451eab6959fSMatthias Ringwald  * @param allow_host_sleep_during_sco (modes 1,2,3,5,7)
2452eab6959fSMatthias Ringwald  * @param combine_sleep_mode_and_lpm  (modes 1,2,3,5,7)
2453eab6959fSMatthias Ringwald  * @param enable_tristate_control_of_uart_tx_line (modes 1,2,7)
2454eab6959fSMatthias Ringwald  * @param active_connection_handling_on_suspend (modes 3,5)
2455eab6959fSMatthias Ringwald  * @param resume_timeout (modes 3,5)
2456eab6959fSMatthias Ringwald  * @param enable_break_to_host (mode 12)
2457eab6959fSMatthias Ringwald  * @param pulsed_host_wake (modes 1,12)
2458eab6959fSMatthias Ringwald  */
2459eab6959fSMatthias Ringwald const hci_cmd_t hci_bcm_set_sleep_mode = {
2460ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_BCM_SET_SLEEP_MODE, "111111111111"
2461eab6959fSMatthias Ringwald };
24625cdaddfaSMatthias Ringwald 
24635cdaddfaSMatthias Ringwald /**
24645cdaddfaSMatthias Ringwald  * @brief Set TX Power Table
24655cdaddfaSMatthias Ringwald  * @param is_le 0=classic, 1=LE
24665cdaddfaSMatthias Ringwald  * @param chip_max_tx_pwr_db chip level max TX power in dBM
24675cdaddfaSMatthias Ringwald  */
24685cdaddfaSMatthias Ringwald const hci_cmd_t hci_bcm_write_tx_power_table = {
2469ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_BCM_WRITE_TX_POWER_TABLE, "11"
24705cdaddfaSMatthias Ringwald };
24715cdaddfaSMatthias Ringwald 
24725cdaddfaSMatthias Ringwald const hci_cmd_t hci_bcm_set_tx_pwr = {
2473ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_BCM_SET_TX_PWR, "11H"
24745cdaddfaSMatthias Ringwald };
2475ba39ed56SMatthias Ringwald 
2476ba39ed56SMatthias Ringwald /**
247715fca961SMatthias Ringwald  * @brief This command starts receiving packets using packet transmission parameters such as
247815fca961SMatthias Ringwald  *        frequency channel, packet type, and packet length. It is used for Packet RX.
24796f029df8SMatthias Ringwald  * @see   processors.wiki.ti.com/index.php/CC256x_Testing_Guide#Continuous_RX
248015fca961SMatthias Ringwald  * @param frequency
248115fca961SMatthias Ringwald  * @param ADPLL loop mode
248215fca961SMatthias Ringwald  */
248315fca961SMatthias Ringwald const hci_cmd_t hci_ti_drpb_tester_con_rx = {
248415fca961SMatthias Ringwald         0xFD17, "11"
248515fca961SMatthias Ringwald };
248615fca961SMatthias Ringwald 
248715fca961SMatthias Ringwald /**
2488ba39ed56SMatthias Ringwald  *
2489ba39ed56SMatthias Ringwald  *
2490ba39ed56SMatthias Ringwald  * @brief This command tests the RF transceiver in continuous transmission mode.
2491ba39ed56SMatthias Ringwald  *        The transmitter is activated by configuring the transmission parameters such as pattern,
2492ba39ed56SMatthias Ringwald  *        modulation, and frequency.
2493ba39ed56SMatthias Ringwald  * @see   processors.wiki.ti.com/index.php/CC256x_VS_HCI_Commands#HCI_VS_DRPb_Tester_Con_TX.280xFD84.29
2494ba39ed56SMatthias Ringwald  * @param modulation
249515fca961SMatthias Ringwald  * @param test_pattern
2496ba39ed56SMatthias Ringwald  * @param frequency
2497ba39ed56SMatthias Ringwald  * @param power_level
2498ba39ed56SMatthias Ringwald  * @param reserved1
2499ba39ed56SMatthias Ringwald  * @param reserved2
2500ba39ed56SMatthias Ringwald  */
2501ba39ed56SMatthias Ringwald const hci_cmd_t hci_ti_drpb_tester_con_tx = {
2502ba39ed56SMatthias Ringwald     0xFD84, "111144"
2503ba39ed56SMatthias Ringwald };
2504ba39ed56SMatthias Ringwald 
2505ba39ed56SMatthias Ringwald /**
2506ba39ed56SMatthias Ringwald  * @brief This command starts sending/receiving packets using packet transmission parameters such as
2507ba39ed56SMatthias Ringwald  *        frequency channel, packet type, and packet length. It is used for Packet TX/RX.
2508ba39ed56SMatthias Ringwald  * @see   processors.wiki.ti.com/index.php/CC256x_VS_HCI_Commands#HCI_VS_DRPb_Tester_Packet_TX_RX_.280xFD85.29
2509ba39ed56SMatthias Ringwald  * @param frequency_mode
2510ba39ed56SMatthias Ringwald  * @param tx_single_frequency
2511ba39ed56SMatthias Ringwald  * @param rx_single_frequency
2512ba39ed56SMatthias Ringwald  * @param acl_packet_type
2513ba39ed56SMatthias Ringwald  * @paarm acl_packet_data_pattern
2514ba39ed56SMatthias Ringwald  * @param reserved
2515ba39ed56SMatthias Ringwald  * @param power_level
2516ba39ed56SMatthias Ringwald  * @param disable_whitening
2517ba39ed56SMatthias Ringwald  * @param prbs9_initialization_value
2518ba39ed56SMatthias Ringwald  */
2519ba39ed56SMatthias Ringwald const hci_cmd_t hci_ti_drpb_tester_packet_tx_rx = {
2520ba39ed56SMatthias Ringwald     0xFD85, "1111112112"
2521ba39ed56SMatthias Ringwald };
2522365a7dd1SMatthias Ringwald 
2523733a7793SMatthias Ringwald 
2524733a7793SMatthias Ringwald /**
2525733a7793SMatthias Ringwald  * @param best effort access percentage
2526733a7793SMatthias Ringwald  * @param guaranteed access percentage
2527733a7793SMatthias Ringwald  * @param poll period
2528733a7793SMatthias Ringwald  * @param slave burst after tx
2529733a7793SMatthias Ringwald  * @param slave master search count
2530733a7793SMatthias Ringwald  * @param master burst after tx enable
2531733a7793SMatthias Ringwald  * @param master burst after rx limit
2532733a7793SMatthias Ringwald  */
2533cf26f982SMatthias Ringwald const hci_cmd_t hci_ti_configure_ddip = {
2534733a7793SMatthias Ringwald     HCI_OPCODE_HCI_TI_VS_CONFIGURE_DDIP, "1111111"
2535733a7793SMatthias Ringwald };
2536733a7793SMatthias Ringwald 
2537365a7dd1SMatthias Ringwald /**
2538365a7dd1SMatthias Ringwald  * @brief This command is used to associate the requested ACL handle with Wide Band Speech configuration.
2539365a7dd1SMatthias Ringwald  * @param enable 0=disable, 1=enable
2540365a7dd1SMatthias Ringwald  * @param a3dp_role (NL5500, WL128x only) 0=source,1=sink
2541365a7dd1SMatthias Ringwald  * @param code_upload (NL5500, WL128x only) 0=do not load a3dp code, 1=load a3dp code
2542365a7dd1SMatthias Ringwald  * @param reserved for future use
2543365a7dd1SMatthias Ringwald  */
2544365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_avrp_enable = {
2545365a7dd1SMatthias Ringwald         0xFD92, "1112"
2546365a7dd1SMatthias Ringwald };
2547365a7dd1SMatthias Ringwald 
2548365a7dd1SMatthias Ringwald /**
2549365a7dd1SMatthias Ringwald  * @brief This command is used to associate the requested ACL handle with Wide Band Speech configuration.
2550365a7dd1SMatthias Ringwald  * @param acl_con_handle
2551365a7dd1SMatthias Ringwald  */
2552365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_wbs_associate = {
2553365a7dd1SMatthias Ringwald         0xFD78, "H"
2554365a7dd1SMatthias Ringwald };
2555365a7dd1SMatthias Ringwald 
2556365a7dd1SMatthias Ringwald /**
2557365a7dd1SMatthias Ringwald  * @brief This command is used to disassociate Wide Band Speech configuration from any ACL handle.
2558365a7dd1SMatthias Ringwald  */
2559365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_wbs_disassociate = {
2560365a7dd1SMatthias Ringwald         0xFD79, ""
2561365a7dd1SMatthias Ringwald };
2562365a7dd1SMatthias Ringwald 
2563365a7dd1SMatthias Ringwald /**
2564365a7dd1SMatthias Ringwald  * @brief This command configures the codec interface parameters and the PCM clock rate, which is relevant when
2565365a7dd1SMatthias Ringwald           the Bluetooth core generates the clock. This command must be used by the host to use the PCM
2566365a7dd1SMatthias Ringwald           interface.
2567365a7dd1SMatthias Ringwald  * @param clock_rate in kHz
2568365a7dd1SMatthias Ringwald  * @param clock_direction 0=master/output, 1=slave/input
2569365a7dd1SMatthias Ringwald  * @param frame_sync_frequency in Hz
2570365a7dd1SMatthias Ringwald  * @param frame_sync_duty_cycle 0=50% (I2S Format), 0x0001-0xffff number of cycles of PCM clock
2571365a7dd1SMatthias Ringwald  * @param frame_sync_edge 0=driven/sampled at rising edge, 1=driven/sampled at falling edge of PCM clock
2572365a7dd1SMatthias Ringwald  * @param frame_sync_polariy 0=active high, 1=active low
2573365a7dd1SMatthias Ringwald  * @param reserved1
2574365a7dd1SMatthias Ringwald  * @param channel_1_data_out_size sample size in bits
2575365a7dd1SMatthias Ringwald  * @param channel_1_data_out_offset number of PCM clock cycles between rising of frame sync and data start
2576365a7dd1SMatthias Ringwald  * @param channel_1_data_out_edge 0=data driven at rising edge, 1=data driven at falling edge of PCM clock
2577365a7dd1SMatthias Ringwald  * @param channel_1_data_in_size sample size in bits
2578365a7dd1SMatthias Ringwald  * @param channel_1_data_in_offset number of PCM clock cycles between rising of frame sync and data start
2579365a7dd1SMatthias Ringwald  * @param channel_1_data_in_edge 0=data sampled at rising edge, 1=data sampled at falling edge of PCM clock
2580365a7dd1SMatthias Ringwald  * @param fsync_multiplier this field is only relevant to CC256XB from service pack 0.2 !!! -> use 0x00
2581365a7dd1SMatthias Ringwald  * @param channel_2_data_out_size sample size in bits
2582365a7dd1SMatthias Ringwald  * @param channel_2_data_out_offset number of PCM clock cycles between rising of frame sync and data start
2583365a7dd1SMatthias Ringwald  * @param channel_2_data_out_edge 0=data driven at rising edge, 1=data driven at falling edge of PCM clock
2584365a7dd1SMatthias Ringwald  * @param channel_2_data_in_size sample size in bits
2585365a7dd1SMatthias Ringwald  * @param channel_2_data_in_offset number of PCM clock cycles between rising of frame sync and data start
2586365a7dd1SMatthias Ringwald  * @param channel_2_data_in_edge 0=data sampled at rising edge, 1=data sampled at falling edge of PCM clock
2587365a7dd1SMatthias Ringwald  * @param reserved2
2588365a7dd1SMatthias Ringwald  *
2589365a7dd1SMatthias Ringwald  */
2590365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_write_codec_config = {
2591365a7dd1SMatthias Ringwald         0xFD06, "214211122122112212211"
2592365a7dd1SMatthias Ringwald };
259315fca961SMatthias Ringwald 
259415fca961SMatthias Ringwald /**
259515fca961SMatthias Ringwald  * @brief This command is used only for internal testing.
25966f029df8SMatthias Ringwald  * @see   processors.wiki.ti.com/index.php/CC256x_Testing_Guide#Continuous_TX
259715fca961SMatthias Ringwald  * @param frequency
259815fca961SMatthias Ringwald  * @param ADPLL loop mode
259915fca961SMatthias Ringwald  */
260015fca961SMatthias Ringwald const hci_cmd_t hci_ti_drpb_enable_rf_calibration = {
260115fca961SMatthias Ringwald         0xFD80, "141"
260215fca961SMatthias Ringwald };
260315fca961SMatthias Ringwald 
260415fca961SMatthias Ringwald /**
260515fca961SMatthias Ringwald  * @brief This command command is only required for the continuous TX test of modulated
260615fca961SMatthias Ringwald  * (GFSK, π/4-DQPSK or 8DPSK) signal. This command should be skipped when performing continuous TX test for CW.
26076f029df8SMatthias Ringwald  * @see   processors.wiki.ti.com/index.php/CC256x_Testing_Guide#Continuous_RX
260815fca961SMatthias Ringwald  * @param frequency
260915fca961SMatthias Ringwald  * @param ADPLL loop mode
261015fca961SMatthias Ringwald  */
261115fca961SMatthias Ringwald const hci_cmd_t hci_ti_write_hardware_register = {
261215fca961SMatthias Ringwald         0xFF01, "42"
261315fca961SMatthias Ringwald };
26141645c45cSMatthias Ringwald 
26151645c45cSMatthias Ringwald /**
26161645c45cSMatthias Ringwald  * @brief Configure SCO routing on Realtek Controllers
26171645c45cSMatthias Ringwald  */
26181645c45cSMatthias Ringwald const hci_cmd_t hci_rtk_configure_sco_routing = {
261992ce4e6aSMatthias Ringwald     HCI_OPCODE_HCI_RTK_CONFIGURE_SCO_ROUTING, "111111111"
262092ce4e6aSMatthias Ringwald };
262192ce4e6aSMatthias Ringwald 
262292ce4e6aSMatthias Ringwald /**
262392ce4e6aSMatthias Ringwald * @brief Read Card Information
262492ce4e6aSMatthias Ringwald */
262592ce4e6aSMatthias Ringwald const hci_cmd_t hci_rtk_read_card_info = {
262692ce4e6aSMatthias Ringwald     HCI_OPCODE_HCI_RTK_READ_CARD_INFO, "11111"
26271645c45cSMatthias Ringwald };
2628