xref: /btstack/src/hci_cmd.c (revision 6f351188be891b7a05bdcc8455c8b3ad26c20f7f)
156042629SMatthias Ringwald /*
256042629SMatthias Ringwald  * Copyright (C) 2014 BlueKitchen GmbH
356042629SMatthias Ringwald  *
456042629SMatthias Ringwald  * Redistribution and use in source and binary forms, with or without
556042629SMatthias Ringwald  * modification, are permitted provided that the following conditions
656042629SMatthias Ringwald  * are met:
756042629SMatthias Ringwald  *
856042629SMatthias Ringwald  * 1. Redistributions of source code must retain the above copyright
956042629SMatthias Ringwald  *    notice, this list of conditions and the following disclaimer.
1056042629SMatthias Ringwald  * 2. Redistributions in binary form must reproduce the above copyright
1156042629SMatthias Ringwald  *    notice, this list of conditions and the following disclaimer in the
1256042629SMatthias Ringwald  *    documentation and/or other materials provided with the distribution.
1356042629SMatthias Ringwald  * 3. Neither the name of the copyright holders nor the names of
1456042629SMatthias Ringwald  *    contributors may be used to endorse or promote products derived
1556042629SMatthias Ringwald  *    from this software without specific prior written permission.
1656042629SMatthias Ringwald  * 4. Any redistribution, use, or modification is done solely for
1756042629SMatthias Ringwald  *    personal benefit and not for any commercial purpose or for
1856042629SMatthias Ringwald  *    monetary gain.
1956042629SMatthias Ringwald  *
2056042629SMatthias Ringwald  * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS
2156042629SMatthias Ringwald  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
2256042629SMatthias Ringwald  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
232fca4dadSMilanka Ringwald  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BLUEKITCHEN
242fca4dadSMilanka Ringwald  * GMBH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
2556042629SMatthias Ringwald  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
2656042629SMatthias Ringwald  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
2756042629SMatthias Ringwald  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
2856042629SMatthias Ringwald  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
2956042629SMatthias Ringwald  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
3056042629SMatthias Ringwald  * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
3156042629SMatthias Ringwald  * SUCH DAMAGE.
3256042629SMatthias Ringwald  *
3356042629SMatthias Ringwald  * Please inquire about commercial licensing options at
3456042629SMatthias Ringwald  * [email protected]
3556042629SMatthias Ringwald  *
3656042629SMatthias Ringwald  */
3756042629SMatthias Ringwald 
38e501bae0SMatthias Ringwald #define BTSTACK_FILE__ "hci_cmd.c"
39ab2c6ae4SMatthias Ringwald 
4056042629SMatthias Ringwald /*
4156042629SMatthias Ringwald  *  hci_cmd.c
4256042629SMatthias Ringwald  *
4356042629SMatthias Ringwald  *  Created by Matthias Ringwald on 7/23/09.
4456042629SMatthias Ringwald  */
4556042629SMatthias Ringwald 
467907f069SMatthias Ringwald #include "btstack_config.h"
4756042629SMatthias Ringwald 
4856042629SMatthias Ringwald #include "hci.h"
4956042629SMatthias Ringwald #include "hci_cmd.h"
50f9f2075cSMatthias Ringwald #include "btstack_debug.h"
5156042629SMatthias Ringwald 
5256042629SMatthias Ringwald #include <string.h>
5356042629SMatthias Ringwald 
54c56de76bSMilanka Ringwald 
5559c9672fSMatthias Ringwald #ifdef ENABLE_SDP
5659c9672fSMatthias Ringwald #include "classic/sdp_util.h"
5759c9672fSMatthias Ringwald #endif
5859c9672fSMatthias Ringwald 
5956042629SMatthias Ringwald // calculate combined ogf/ocf value
605efd5011SMatthias Ringwald #define OPCODE(ogf, ocf) ((ocf) | ((ogf) << 10))
6156042629SMatthias Ringwald 
627f67490cSMatthias Ringwald #define INVALID_VAR_LEN 0xffffu
63931b436eSMatthias Ringwald // hci_le_set_cig_parameters_test has 10 arrayed parameters
64931b436eSMatthias Ringwald #define MAX_NR_ARRAY_FIELDS 10
65931b436eSMatthias Ringwald #define INVALID_ARRAY_LEN 0xff
667f67490cSMatthias Ringwald 
6756042629SMatthias Ringwald /**
6856042629SMatthias Ringwald  * construct HCI Command based on template
6956042629SMatthias Ringwald  *
7056042629SMatthias Ringwald  * Format:
7156042629SMatthias Ringwald  *   1,2,3,4: one to four byte value
7256042629SMatthias Ringwald  *   H: HCI connection handle
7356042629SMatthias Ringwald  *   B: Bluetooth Baseband Address (BD_ADDR)
7456042629SMatthias Ringwald  *   D: 8 byte data block
7556042629SMatthias Ringwald  *   E: Extended Inquiry Result
7656042629SMatthias Ringwald  *   N: Name up to 248 chars, \0 terminated
77237daac5SMatthias Ringwald  *   P: 16 byte data block. Pairing code, Simple Pairing Hash and Randomizer
7856042629SMatthias Ringwald  *   A: 31 bytes advertising data
7956042629SMatthias Ringwald  *   S: Service Record (Data Element Sequence)
8082180fcaSMatthias Ringwald  *   Q: 32 byte data block, e.g. for X and Y coordinates of P-256 public key
817f67490cSMatthias Ringwald  *   J: 8-bit length of variable size element
827f67490cSMatthias Ringwald  *   V: variable size element, len was given with param 'J'
83931b436eSMatthias Ringwald  *   a: number of elements in following arrayed parameters(s), specified as '[...]'
84931b436eSMatthias Ringwald  *   b: bit field indicating number of arrayed parameters(s), specified as '[...]'
85931b436eSMatthias Ringwald  *   [: start of arrayed param sequence
86931b436eSMatthias Ringwald  *   ]: end of arrayed param sequence
8756042629SMatthias Ringwald  */
8856042629SMatthias Ringwald uint16_t hci_cmd_create_from_template(uint8_t *hci_cmd_buffer, const hci_cmd_t *cmd, va_list argptr){
8956042629SMatthias Ringwald 
904ea43905SMatthias Ringwald     hci_cmd_buffer[0] = cmd->opcode & 0xffu;
9156042629SMatthias Ringwald     hci_cmd_buffer[1] = cmd->opcode >> 8;
92931b436eSMatthias Ringwald     uint16_t pos = 3;
9356042629SMatthias Ringwald 
9456042629SMatthias Ringwald     const char *format = cmd->format;
9556042629SMatthias Ringwald     uint16_t word;
9656042629SMatthias Ringwald     uint32_t longword;
9756042629SMatthias Ringwald     uint8_t * ptr;
987f67490cSMatthias Ringwald 
99c8b094b6SMatthias Ringwald #ifdef ENABLE_BLE
100c8b094b6SMatthias Ringwald     // variable size data
101c8b094b6SMatthias Ringwald     uint16_t var_len = INVALID_VAR_LEN;
102c8b094b6SMatthias Ringwald     // array processing
103931b436eSMatthias Ringwald     const char * array_format = NULL;
104931b436eSMatthias Ringwald     void *  array_data[MAX_NR_ARRAY_FIELDS];
105931b436eSMatthias Ringwald     uint8_t array_num_elements = INVALID_ARRAY_LEN;
106931b436eSMatthias Ringwald     uint8_t array_num_fields;
107931b436eSMatthias Ringwald     uint8_t array_element_index;
108c8b094b6SMatthias Ringwald     bool array_done;
109c8b094b6SMatthias Ringwald #endif
110931b436eSMatthias Ringwald 
111931b436eSMatthias Ringwald     bool done_format = false;
112931b436eSMatthias Ringwald     while (!done_format) {
11356042629SMatthias Ringwald         switch(*format) {
114931b436eSMatthias Ringwald             case 0:
115931b436eSMatthias Ringwald                 done_format = true;
116931b436eSMatthias Ringwald                 break;
11756042629SMatthias Ringwald             case '1': //  8 bit value
118c56de76bSMilanka Ringwald                 word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE
1194ea43905SMatthias Ringwald                 hci_cmd_buffer[pos++] = word & 0xffu;
120c56de76bSMilanka Ringwald                 break;
121c56de76bSMilanka Ringwald             case '2': // 16 bit value
122c56de76bSMilanka Ringwald                 word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE
123c56de76bSMilanka Ringwald                 hci_cmd_buffer[pos++] = word & 0xffu;
12456042629SMatthias Ringwald                 hci_cmd_buffer[pos++] = word >> 8;
125c56de76bSMilanka Ringwald                 break;
126c56de76bSMilanka Ringwald             case 'H': // hci_handle
127c56de76bSMilanka Ringwald                 word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE
128c56de76bSMilanka Ringwald                 hci_cmd_buffer[pos++] = word & 0xffu;
12956042629SMatthias Ringwald                 hci_cmd_buffer[pos++] = word >> 8;
13056042629SMatthias Ringwald                 break;
13156042629SMatthias Ringwald             case '3':
132c56de76bSMilanka Ringwald                 longword = va_arg(argptr, uint32_t); // LCOV_EXCL_BR_LINE
13356042629SMatthias Ringwald                 hci_cmd_buffer[pos++] = longword;
13456042629SMatthias Ringwald                 hci_cmd_buffer[pos++] = longword >> 8;
13556042629SMatthias Ringwald                 hci_cmd_buffer[pos++] = longword >> 16;
136c56de76bSMilanka Ringwald                 break;
137c56de76bSMilanka Ringwald             case '4':
138c56de76bSMilanka Ringwald                 longword = va_arg(argptr, uint32_t); // LCOV_EXCL_BR_LINE
139c56de76bSMilanka Ringwald                 hci_cmd_buffer[pos++] = longword;
140c56de76bSMilanka Ringwald                 hci_cmd_buffer[pos++] = longword >> 8;
141c56de76bSMilanka Ringwald                 hci_cmd_buffer[pos++] = longword >> 16;
14256042629SMatthias Ringwald                 hci_cmd_buffer[pos++] = longword >> 24;
14356042629SMatthias Ringwald                 break;
14456042629SMatthias Ringwald             case 'B': // bt-addr
145c56de76bSMilanka Ringwald                 ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
14656042629SMatthias Ringwald                 hci_cmd_buffer[pos++] = ptr[5];
14756042629SMatthias Ringwald                 hci_cmd_buffer[pos++] = ptr[4];
14856042629SMatthias Ringwald                 hci_cmd_buffer[pos++] = ptr[3];
14956042629SMatthias Ringwald                 hci_cmd_buffer[pos++] = ptr[2];
15056042629SMatthias Ringwald                 hci_cmd_buffer[pos++] = ptr[1];
15156042629SMatthias Ringwald                 hci_cmd_buffer[pos++] = ptr[0];
15256042629SMatthias Ringwald                 break;
15356042629SMatthias Ringwald             case 'D': // 8 byte data block
154c56de76bSMilanka Ringwald                 ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
1556535961aSMatthias Ringwald                 (void)memcpy(&hci_cmd_buffer[pos], ptr, 8);
15656042629SMatthias Ringwald                 pos += 8;
15756042629SMatthias Ringwald                 break;
15856042629SMatthias Ringwald             case 'E': // Extended Inquiry Information 240 octets
159c56de76bSMilanka Ringwald                 ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
1606535961aSMatthias Ringwald                 (void)memcpy(&hci_cmd_buffer[pos], ptr, 240);
16156042629SMatthias Ringwald                 pos += 240;
16256042629SMatthias Ringwald                 break;
16356042629SMatthias Ringwald             case 'N': { // UTF-8 string, null terminated
164c56de76bSMilanka Ringwald                 ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
16556042629SMatthias Ringwald                 uint16_t len = strlen((const char*) ptr);
1664ea43905SMatthias Ringwald                 if (len > 248u) {
16756042629SMatthias Ringwald                     len = 248;
16856042629SMatthias Ringwald                 }
1696535961aSMatthias Ringwald                 (void)memcpy(&hci_cmd_buffer[pos], ptr, len);
1704ea43905SMatthias Ringwald                 if (len < 248u) {
17156042629SMatthias Ringwald                     // fill remaining space with zeroes
1724ea43905SMatthias Ringwald                     memset(&hci_cmd_buffer[pos+len], 0u, 248u-len);
17356042629SMatthias Ringwald                 }
17456042629SMatthias Ringwald                 pos += 248;
17556042629SMatthias Ringwald                 break;
17656042629SMatthias Ringwald             }
177bb75dd7dSMatthias Ringwald             case 'P': // 16 byte PIN code or link key in little endian
178c56de76bSMilanka Ringwald                 ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
1796535961aSMatthias Ringwald                 (void)memcpy(&hci_cmd_buffer[pos], ptr, 16);
18056042629SMatthias Ringwald                 pos += 16;
18156042629SMatthias Ringwald                 break;
182931b436eSMatthias Ringwald             case 'K':   // 16 byte OOB Data or Link Key in big endian
183931b436eSMatthias Ringwald                 ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
184931b436eSMatthias Ringwald                 reverse_bytes(ptr, &hci_cmd_buffer[pos], 16);
185931b436eSMatthias Ringwald                 pos += 16;
186931b436eSMatthias Ringwald                 break;
187a9a4c409SMatthias Ringwald #ifdef ENABLE_BLE
18856042629SMatthias Ringwald             case 'A': // 31 bytes advertising data
189c56de76bSMilanka Ringwald                 ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
1906535961aSMatthias Ringwald                 (void)memcpy(&hci_cmd_buffer[pos], ptr, 31);
19156042629SMatthias Ringwald                 pos += 31;
19256042629SMatthias Ringwald                 break;
193931b436eSMatthias Ringwald             case 'J': //  8 bit variable length indicator for 'V'
194931b436eSMatthias Ringwald                 word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE
195931b436eSMatthias Ringwald                 var_len = word & 0xffu;
196931b436eSMatthias Ringwald                 hci_cmd_buffer[pos++] = var_len;
197bb75dd7dSMatthias Ringwald                 break;
1987f67490cSMatthias Ringwald             case 'V':
1997f67490cSMatthias Ringwald                 btstack_assert(var_len != INVALID_VAR_LEN);
2007f67490cSMatthias Ringwald                 ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
2017f67490cSMatthias Ringwald                 (void)memcpy(&hci_cmd_buffer[pos], ptr, var_len);
2027f67490cSMatthias Ringwald                 pos += var_len;
2037f67490cSMatthias Ringwald                 var_len = INVALID_VAR_LEN;
2047f67490cSMatthias Ringwald                 break;
205931b436eSMatthias Ringwald             case 'a':
206931b436eSMatthias Ringwald                 btstack_assert(array_num_elements == INVALID_ARRAY_LEN);
207931b436eSMatthias Ringwald                 word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE
208931b436eSMatthias Ringwald                 hci_cmd_buffer[pos++] = word & 0xff;
209931b436eSMatthias Ringwald                 array_num_elements = word & 0xffu;
210931b436eSMatthias Ringwald                 break;
211931b436eSMatthias Ringwald             case 'b':
212931b436eSMatthias Ringwald                 btstack_assert(array_num_elements == INVALID_ARRAY_LEN);
213931b436eSMatthias Ringwald                 word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE
214931b436eSMatthias Ringwald                 hci_cmd_buffer[pos++] = word & 0xff;
215931b436eSMatthias Ringwald                 array_num_elements = count_set_bits_uint32(word & 0xffu);
216931b436eSMatthias Ringwald                 break;
217931b436eSMatthias Ringwald             case '[':
218931b436eSMatthias Ringwald                 btstack_assert(array_num_elements != INVALID_ARRAY_LEN);
219931b436eSMatthias Ringwald                 // process array
220931b436eSMatthias Ringwald                 format++;
221931b436eSMatthias Ringwald                 array_format = format;
222931b436eSMatthias Ringwald                 array_num_fields = 0;
223c8b094b6SMatthias Ringwald                 array_done = false;
224c8b094b6SMatthias Ringwald                 while (!array_done){
225931b436eSMatthias Ringwald                     switch (*format){
226931b436eSMatthias Ringwald                         case 0:
227c8b094b6SMatthias Ringwald                             array_done = true;
228931b436eSMatthias Ringwald                             done_format = true;
229931b436eSMatthias Ringwald                             break;
230931b436eSMatthias Ringwald                         case ']':
231c8b094b6SMatthias Ringwald                             array_done = true;
232931b436eSMatthias Ringwald                             break;
233931b436eSMatthias Ringwald                         case '1':
234931b436eSMatthias Ringwald                         case '2':
235931b436eSMatthias Ringwald                             // all arrayed parameters are passed in as arrays
236931b436eSMatthias Ringwald                             ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
237931b436eSMatthias Ringwald                             array_data[array_num_fields++] = ptr;
238931b436eSMatthias Ringwald                             format++;
239931b436eSMatthias Ringwald                             break;
240931b436eSMatthias Ringwald                         default:
241931b436eSMatthias Ringwald                             btstack_unreachable();
242931b436eSMatthias Ringwald                             break;
243931b436eSMatthias Ringwald                     }
244931b436eSMatthias Ringwald                 }
245931b436eSMatthias Ringwald                 for (array_element_index = 0; array_element_index < array_num_elements ; array_element_index++){
246931b436eSMatthias Ringwald                     uint8_t array_field_index;
247931b436eSMatthias Ringwald                     for (array_field_index = 0; array_field_index < array_num_fields ; array_field_index++){
248931b436eSMatthias Ringwald                         switch (array_format[array_field_index]){
249931b436eSMatthias Ringwald                             case '1':
250931b436eSMatthias Ringwald                                 hci_cmd_buffer[pos++] = ((const uint8_t *) array_data[array_field_index])[array_element_index];
251931b436eSMatthias Ringwald                                 break;
252931b436eSMatthias Ringwald                             case '2':
253931b436eSMatthias Ringwald                                 little_endian_store_16(hci_cmd_buffer, pos, ((const uint16_t *) array_data[array_field_index])[array_element_index]);
254931b436eSMatthias Ringwald                                 pos += 2;
255931b436eSMatthias Ringwald                                 break;
256931b436eSMatthias Ringwald                             default:
257931b436eSMatthias Ringwald                                 btstack_unreachable();
258931b436eSMatthias Ringwald                                 break;
259931b436eSMatthias Ringwald                         }
260931b436eSMatthias Ringwald                     }
261931b436eSMatthias Ringwald                 }
262931b436eSMatthias Ringwald                 break;
263931b436eSMatthias Ringwald #endif
264931b436eSMatthias Ringwald #ifdef ENABLE_LE_SECURE_CONNECTIONS
265931b436eSMatthias Ringwald             case 'Q':
266931b436eSMatthias Ringwald                 ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
267931b436eSMatthias Ringwald                 reverse_bytes(ptr, &hci_cmd_buffer[pos], 32);
268931b436eSMatthias Ringwald                 pos += 32;
269931b436eSMatthias Ringwald                 break;
270931b436eSMatthias Ringwald #endif
271931b436eSMatthias Ringwald #ifdef ENABLE_SDP
272931b436eSMatthias Ringwald             // used by daemon
273931b436eSMatthias Ringwald             case 'S': { // Service Record (Data Element Sequence)
274931b436eSMatthias Ringwald                 ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
275931b436eSMatthias Ringwald                 uint16_t len = de_get_len(ptr);
276931b436eSMatthias Ringwald                 (void)memcpy(&hci_cmd_buffer[pos], ptr, len);
277931b436eSMatthias Ringwald                 pos += len;
278931b436eSMatthias Ringwald                 break;
279931b436eSMatthias Ringwald             }
280931b436eSMatthias Ringwald #endif
28156042629SMatthias Ringwald             default:
2827f67490cSMatthias Ringwald                 btstack_unreachable();
28356042629SMatthias Ringwald                 break;
28456042629SMatthias Ringwald         }
28556042629SMatthias Ringwald         format++;
28656042629SMatthias Ringwald     };
28756042629SMatthias Ringwald     hci_cmd_buffer[2] = pos - 3;
28856042629SMatthias Ringwald     return pos;
28956042629SMatthias Ringwald }
29056042629SMatthias Ringwald 
29156042629SMatthias Ringwald /**
29256042629SMatthias Ringwald  *  Link Control Commands
29356042629SMatthias Ringwald  */
29456042629SMatthias Ringwald 
29556042629SMatthias Ringwald /**
29656042629SMatthias Ringwald  * @param lap
29756042629SMatthias Ringwald  * @param inquiry_length
29856042629SMatthias Ringwald  * @param num_responses
29956042629SMatthias Ringwald  */
30056042629SMatthias Ringwald const hci_cmd_t hci_inquiry = {
301ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_INQUIRY, "311"
30256042629SMatthias Ringwald };
30356042629SMatthias Ringwald 
30456042629SMatthias Ringwald /**
30556042629SMatthias Ringwald  */
30656042629SMatthias Ringwald const hci_cmd_t hci_inquiry_cancel = {
307ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_INQUIRY_CANCEL, ""
30856042629SMatthias Ringwald };
30956042629SMatthias Ringwald 
31056042629SMatthias Ringwald /**
31156042629SMatthias Ringwald  * @param bd_addr
31256042629SMatthias Ringwald  * @param packet_type
31356042629SMatthias Ringwald  * @param page_scan_repetition_mode
31456042629SMatthias Ringwald  * @param reserved
31556042629SMatthias Ringwald  * @param clock_offset
31656042629SMatthias Ringwald  * @param allow_role_switch
31756042629SMatthias Ringwald  */
31856042629SMatthias Ringwald const hci_cmd_t hci_create_connection = {
319ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_CREATE_CONNECTION, "B21121"
32056042629SMatthias Ringwald };
32156042629SMatthias Ringwald 
32256042629SMatthias Ringwald /**
32356042629SMatthias Ringwald  * @param handle
32456042629SMatthias Ringwald  * @param reason (0x05, 0x13-0x15, 0x1a, 0x29, see Errors Codes in BT Spec Part D)
32556042629SMatthias Ringwald  */
32656042629SMatthias Ringwald const hci_cmd_t hci_disconnect = {
327ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_DISCONNECT, "H1"
32856042629SMatthias Ringwald };
32956042629SMatthias Ringwald 
33056042629SMatthias Ringwald /**
33156042629SMatthias Ringwald  * @param bd_addr
33256042629SMatthias Ringwald  */
33356042629SMatthias Ringwald const hci_cmd_t hci_create_connection_cancel = {
334ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_CREATE_CONNECTION_CANCEL, "B"
33556042629SMatthias Ringwald };
33656042629SMatthias Ringwald 
33756042629SMatthias Ringwald /**
33856042629SMatthias Ringwald  * @param bd_addr
33956042629SMatthias Ringwald  * @param role (become master, stay slave)
34056042629SMatthias Ringwald  */
34156042629SMatthias Ringwald const hci_cmd_t hci_accept_connection_request = {
342ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_ACCEPT_CONNECTION_REQUEST, "B1"
34356042629SMatthias Ringwald };
34456042629SMatthias Ringwald 
34556042629SMatthias Ringwald /**
34656042629SMatthias Ringwald  * @param bd_addr
34756042629SMatthias Ringwald  * @param reason (e.g. CONNECTION REJECTED DUE TO LIMITED RESOURCES (0x0d))
34856042629SMatthias Ringwald  */
34956042629SMatthias Ringwald const hci_cmd_t hci_reject_connection_request = {
350ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_REJECT_CONNECTION_REQUEST, "B1"
35156042629SMatthias Ringwald };
35256042629SMatthias Ringwald 
35356042629SMatthias Ringwald /**
35456042629SMatthias Ringwald  * @param bd_addr
35556042629SMatthias Ringwald  * @param link_key
35656042629SMatthias Ringwald  */
35756042629SMatthias Ringwald const hci_cmd_t hci_link_key_request_reply = {
358ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LINK_KEY_REQUEST_REPLY, "BP"
35956042629SMatthias Ringwald };
36056042629SMatthias Ringwald 
36156042629SMatthias Ringwald /**
36256042629SMatthias Ringwald  * @param bd_addr
36356042629SMatthias Ringwald  */
36456042629SMatthias Ringwald const hci_cmd_t hci_link_key_request_negative_reply = {
365ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LINK_KEY_REQUEST_NEGATIVE_REPLY, "B"
36656042629SMatthias Ringwald };
36756042629SMatthias Ringwald 
36856042629SMatthias Ringwald /**
36956042629SMatthias Ringwald  * @param bd_addr
37056042629SMatthias Ringwald  * @param pin_length
37156042629SMatthias Ringwald  * @param pin (c-string)
37256042629SMatthias Ringwald  */
37356042629SMatthias Ringwald const hci_cmd_t hci_pin_code_request_reply = {
374ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_PIN_CODE_REQUEST_REPLY, "B1P"
37556042629SMatthias Ringwald };
37656042629SMatthias Ringwald 
37756042629SMatthias Ringwald /**
37856042629SMatthias Ringwald  * @param bd_addr
37956042629SMatthias Ringwald  */
38056042629SMatthias Ringwald const hci_cmd_t hci_pin_code_request_negative_reply = {
381ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_PIN_CODE_REQUEST_NEGATIVE_REPLY, "B"
38256042629SMatthias Ringwald };
38356042629SMatthias Ringwald 
38456042629SMatthias Ringwald /**
38556042629SMatthias Ringwald  * @param handle
38656042629SMatthias Ringwald  * @param packet_type
38756042629SMatthias Ringwald  */
38856042629SMatthias Ringwald const hci_cmd_t hci_change_connection_packet_type = {
389ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_CHANGE_CONNECTION_PACKET_TYPE, "H2"
39056042629SMatthias Ringwald };
39156042629SMatthias Ringwald 
39256042629SMatthias Ringwald /**
39356042629SMatthias Ringwald  * @param handle
39456042629SMatthias Ringwald  */
39556042629SMatthias Ringwald const hci_cmd_t hci_authentication_requested = {
396ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_AUTHENTICATION_REQUESTED, "H"
39756042629SMatthias Ringwald };
39856042629SMatthias Ringwald 
39956042629SMatthias Ringwald /**
40056042629SMatthias Ringwald  * @param handle
40156042629SMatthias Ringwald  * @param encryption_enable
40256042629SMatthias Ringwald  */
40356042629SMatthias Ringwald const hci_cmd_t hci_set_connection_encryption = {
404ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_SET_CONNECTION_ENCRYPTION, "H1"
40556042629SMatthias Ringwald };
40656042629SMatthias Ringwald 
40756042629SMatthias Ringwald /**
40856042629SMatthias Ringwald  * @param handle
40956042629SMatthias Ringwald  */
41056042629SMatthias Ringwald const hci_cmd_t hci_change_connection_link_key = {
411ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_CHANGE_CONNECTION_LINK_KEY, "H"
41256042629SMatthias Ringwald };
41356042629SMatthias Ringwald 
41456042629SMatthias Ringwald /**
41556042629SMatthias Ringwald  * @param bd_addr
41656042629SMatthias Ringwald  * @param page_scan_repetition_mode
41756042629SMatthias Ringwald  * @param reserved
41856042629SMatthias Ringwald  * @param clock_offset
41956042629SMatthias Ringwald  */
42056042629SMatthias Ringwald const hci_cmd_t hci_remote_name_request = {
421ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_REMOTE_NAME_REQUEST, "B112"
42256042629SMatthias Ringwald };
42356042629SMatthias Ringwald 
42456042629SMatthias Ringwald 
42556042629SMatthias Ringwald /**
42656042629SMatthias Ringwald  * @param bd_addr
42756042629SMatthias Ringwald  */
42856042629SMatthias Ringwald const hci_cmd_t hci_remote_name_request_cancel = {
429ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_REMOTE_NAME_REQUEST_CANCEL, "B"
43056042629SMatthias Ringwald };
43156042629SMatthias Ringwald 
43256042629SMatthias Ringwald  /**
43356042629SMatthias Ringwald  * @param handle
43456042629SMatthias Ringwald  */
43556042629SMatthias Ringwald const hci_cmd_t hci_read_remote_supported_features_command = {
436ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_REMOTE_SUPPORTED_FEATURES_COMMAND, "H"
4378b22c04dSMatthias Ringwald };
4388b22c04dSMatthias Ringwald 
4398b22c04dSMatthias Ringwald /**
440d5057706SMatthias Ringwald * @param handle
441d5057706SMatthias Ringwald */
442d5057706SMatthias Ringwald const hci_cmd_t hci_read_remote_extended_features_command = {
443ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_REMOTE_EXTENDED_FEATURES_COMMAND, "H1"
444d5057706SMatthias Ringwald };
445d5057706SMatthias Ringwald 
446d5057706SMatthias Ringwald /**
4478b22c04dSMatthias Ringwald  * @param handle
4488b22c04dSMatthias Ringwald  */
4498b22c04dSMatthias Ringwald const hci_cmd_t hci_read_remote_version_information = {
450ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_REMOTE_VERSION_INFORMATION, "H"
45156042629SMatthias Ringwald };
45256042629SMatthias Ringwald 
45356042629SMatthias Ringwald /**
45456042629SMatthias Ringwald  * @param handle
45556042629SMatthias Ringwald  * @param transmit_bandwidth 8000(64kbps)
45656042629SMatthias Ringwald  * @param receive_bandwidth  8000(64kbps)
45756042629SMatthias Ringwald  * @param max_latency        >= 7ms for eSCO, 0xFFFF do not care
45856042629SMatthias Ringwald  * @param voice_settings     e.g. CVSD, Input Coding: Linear, Input Data Format: 2’s complement, data 16bit: 00011000000 == 0x60
45956042629SMatthias Ringwald  * @param retransmission_effort  e.g. 0xFF do not care
46056042629SMatthias Ringwald  * @param packet_type        at least EV3 for eSCO
46156042629SMatthias Ringwald  */
46256042629SMatthias Ringwald const hci_cmd_t hci_setup_synchronous_connection = {
463ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_SETUP_SYNCHRONOUS_CONNECTION, "H442212"
46456042629SMatthias Ringwald };
46556042629SMatthias Ringwald 
46656042629SMatthias Ringwald /**
46756042629SMatthias Ringwald  * @param bd_addr
46856042629SMatthias Ringwald  * @param transmit_bandwidth
46956042629SMatthias Ringwald  * @param receive_bandwidth
47056042629SMatthias Ringwald  * @param max_latency
47156042629SMatthias Ringwald  * @param voice_settings
47256042629SMatthias Ringwald  * @param retransmission_effort
47356042629SMatthias Ringwald  * @param packet_type
47456042629SMatthias Ringwald  */
47556042629SMatthias Ringwald const hci_cmd_t hci_accept_synchronous_connection = {
476ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_ACCEPT_SYNCHRONOUS_CONNECTION, "B442212"
47756042629SMatthias Ringwald };
47856042629SMatthias Ringwald 
47956042629SMatthias Ringwald /**
48056042629SMatthias Ringwald  * @param bd_addr
48156042629SMatthias Ringwald  * @param IO_capability
48256042629SMatthias Ringwald  * @param OOB_data_present
48356042629SMatthias Ringwald  * @param authentication_requirements
48456042629SMatthias Ringwald  */
48556042629SMatthias Ringwald const hci_cmd_t hci_io_capability_request_reply = {
486ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_IO_CAPABILITY_REQUEST_REPLY, "B111"
48756042629SMatthias Ringwald };
48856042629SMatthias Ringwald 
48956042629SMatthias Ringwald /**
49056042629SMatthias Ringwald  * @param bd_addr
49156042629SMatthias Ringwald  */
49256042629SMatthias Ringwald const hci_cmd_t hci_user_confirmation_request_reply = {
493ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_USER_CONFIRMATION_REQUEST_REPLY, "B"
49456042629SMatthias Ringwald };
49556042629SMatthias Ringwald 
49656042629SMatthias Ringwald /**
49756042629SMatthias Ringwald  * @param bd_addr
49856042629SMatthias Ringwald  */
49956042629SMatthias Ringwald const hci_cmd_t hci_user_confirmation_request_negative_reply = {
500ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_USER_CONFIRMATION_REQUEST_NEGATIVE_REPLY, "B"
50156042629SMatthias Ringwald };
50256042629SMatthias Ringwald 
50356042629SMatthias Ringwald /**
50456042629SMatthias Ringwald  * @param bd_addr
50556042629SMatthias Ringwald  * @param numeric_value
50656042629SMatthias Ringwald  */
50756042629SMatthias Ringwald const hci_cmd_t hci_user_passkey_request_reply = {
508ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_USER_PASSKEY_REQUEST_REPLY, "B4"
50956042629SMatthias Ringwald };
51056042629SMatthias Ringwald 
51156042629SMatthias Ringwald /**
51256042629SMatthias Ringwald  * @param bd_addr
51356042629SMatthias Ringwald  */
51456042629SMatthias Ringwald const hci_cmd_t hci_user_passkey_request_negative_reply = {
515ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_USER_PASSKEY_REQUEST_NEGATIVE_REPLY, "B"
51656042629SMatthias Ringwald };
51756042629SMatthias Ringwald 
51856042629SMatthias Ringwald /**
51956042629SMatthias Ringwald  * @param bd_addr
520237daac5SMatthias Ringwald  * @param c Simple Pairing Hash C
521237daac5SMatthias Ringwald  * @param r Simple Pairing Randomizer R
522237daac5SMatthias Ringwald  */
523237daac5SMatthias Ringwald const hci_cmd_t hci_remote_oob_data_request_reply = {
524bb75dd7dSMatthias Ringwald     HCI_OPCODE_HCI_REMOTE_OOB_DATA_REQUEST_REPLY, "BKK"
525237daac5SMatthias Ringwald };
526237daac5SMatthias Ringwald 
527237daac5SMatthias Ringwald /**
528237daac5SMatthias Ringwald  * @param bd_addr
52956042629SMatthias Ringwald  */
53056042629SMatthias Ringwald const hci_cmd_t hci_remote_oob_data_request_negative_reply = {
531ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_REMOTE_OOB_DATA_REQUEST_NEGATIVE_REPLY, "B"
53256042629SMatthias Ringwald };
53356042629SMatthias Ringwald 
53456042629SMatthias Ringwald /**
53556042629SMatthias Ringwald  * @param bd_addr
53656042629SMatthias Ringwald  * @param reason (Part D, Error codes)
53756042629SMatthias Ringwald  */
53856042629SMatthias Ringwald const hci_cmd_t hci_io_capability_request_negative_reply = {
539ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_IO_CAPABILITY_REQUEST_NEGATIVE_REPLY, "B1"
54056042629SMatthias Ringwald };
54156042629SMatthias Ringwald 
54256042629SMatthias Ringwald /**
54356042629SMatthias Ringwald  * @param handle
54456042629SMatthias Ringwald  * @param transmit_bandwidth
54556042629SMatthias Ringwald  * @param receive_bandwidth
54656042629SMatthias Ringwald  * @param transmit_coding_format_type
54756042629SMatthias Ringwald  * @param transmit_coding_format_company
54856042629SMatthias Ringwald  * @param transmit_coding_format_codec
54956042629SMatthias Ringwald  * @param receive_coding_format_type
55056042629SMatthias Ringwald  * @param receive_coding_format_company
55156042629SMatthias Ringwald  * @param receive_coding_format_codec
55256042629SMatthias Ringwald  * @param transmit_coding_frame_size
55356042629SMatthias Ringwald  * @param receive_coding_frame_size
55456042629SMatthias Ringwald  * @param input_bandwidth
55556042629SMatthias Ringwald  * @param output_bandwidth
55656042629SMatthias Ringwald  * @param input_coding_format_type
55756042629SMatthias Ringwald  * @param input_coding_format_company
55856042629SMatthias Ringwald  * @param input_coding_format_codec
55956042629SMatthias Ringwald  * @param output_coding_format_type
56056042629SMatthias Ringwald  * @param output_coding_format_company
56156042629SMatthias Ringwald  * @param output_coding_format_codec
56256042629SMatthias Ringwald  * @param input_coded_data_size
56356042629SMatthias Ringwald  * @param outupt_coded_data_size
56456042629SMatthias Ringwald  * @param input_pcm_data_format
56556042629SMatthias Ringwald  * @param output_pcm_data_format
56656042629SMatthias Ringwald  * @param input_pcm_sample_payload_msb_position
56756042629SMatthias Ringwald  * @param output_pcm_sample_payload_msb_position
56856042629SMatthias Ringwald  * @param input_data_path
56956042629SMatthias Ringwald  * @param output_data_path
57056042629SMatthias Ringwald  * @param input_transport_unit_size
57156042629SMatthias Ringwald  * @param output_transport_unit_size
57256042629SMatthias Ringwald  * @param max_latency
57356042629SMatthias Ringwald  * @param packet_type
57456042629SMatthias Ringwald  * @param retransmission_effort
57556042629SMatthias Ringwald  */
57656042629SMatthias Ringwald const hci_cmd_t hci_enhanced_setup_synchronous_connection = {
577ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_ENHANCED_SETUP_SYNCHRONOUS_CONNECTION, "H4412212222441221222211111111221"
57856042629SMatthias Ringwald };
57956042629SMatthias Ringwald 
58056042629SMatthias Ringwald /**
58156042629SMatthias Ringwald  * @param bd_addr
58256042629SMatthias Ringwald  * @param transmit_bandwidth
58356042629SMatthias Ringwald  * @param receive_bandwidth
58456042629SMatthias Ringwald  * @param transmit_coding_format_type
58556042629SMatthias Ringwald  * @param transmit_coding_format_company
58656042629SMatthias Ringwald  * @param transmit_coding_format_codec
58756042629SMatthias Ringwald  * @param receive_coding_format_type
58856042629SMatthias Ringwald  * @param receive_coding_format_company
58956042629SMatthias Ringwald  * @param receive_coding_format_codec
59056042629SMatthias Ringwald  * @param transmit_coding_frame_size
59156042629SMatthias Ringwald  * @param receive_coding_frame_size
59256042629SMatthias Ringwald  * @param input_bandwidth
59356042629SMatthias Ringwald  * @param output_bandwidth
59456042629SMatthias Ringwald  * @param input_coding_format_type
59556042629SMatthias Ringwald  * @param input_coding_format_company
59656042629SMatthias Ringwald  * @param input_coding_format_codec
59756042629SMatthias Ringwald  * @param output_coding_format_type
59856042629SMatthias Ringwald  * @param output_coding_format_company
59956042629SMatthias Ringwald  * @param output_coding_format_codec
60056042629SMatthias Ringwald  * @param input_coded_data_size
60156042629SMatthias Ringwald  * @param outupt_coded_data_size
60256042629SMatthias Ringwald  * @param input_pcm_data_format
60356042629SMatthias Ringwald  * @param output_pcm_data_format
60456042629SMatthias Ringwald  * @param input_pcm_sample_payload_msb_position
60556042629SMatthias Ringwald  * @param output_pcm_sample_payload_msb_position
60656042629SMatthias Ringwald  * @param input_data_path
60756042629SMatthias Ringwald  * @param output_data_path
60856042629SMatthias Ringwald  * @param input_transport_unit_size
60956042629SMatthias Ringwald  * @param output_transport_unit_size
61056042629SMatthias Ringwald  * @param max_latency
61156042629SMatthias Ringwald  * @param packet_type
61256042629SMatthias Ringwald  * @param retransmission_effort
61356042629SMatthias Ringwald  */
61456042629SMatthias Ringwald const hci_cmd_t hci_enhanced_accept_synchronous_connection = {
615ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_ENHANCED_ACCEPT_SYNCHRONOUS_CONNECTION, "B4412212222441221222211111111221"
61656042629SMatthias Ringwald };
61756042629SMatthias Ringwald 
61856042629SMatthias Ringwald /**
619bb75dd7dSMatthias Ringwald  * @param bd_addr
620bb75dd7dSMatthias Ringwald  * @param c_192 Simple Pairing Hash C derived from P-192 public key
621bb75dd7dSMatthias Ringwald  * @param r_192 Simple Pairing Randomizer derived from P-192 public key
622bb75dd7dSMatthias Ringwald  * @param c_256 Simple Pairing Hash C derived from P-256 public key
623bb75dd7dSMatthias Ringwald  * @param r_256 Simple Pairing Randomizer derived from P-256 public key
624bb75dd7dSMatthias Ringwald  */
625bb75dd7dSMatthias Ringwald const hci_cmd_t hci_remote_oob_extended_data_request_reply = {
626bb75dd7dSMatthias Ringwald     HCI_OPCODE_HCI_REMOTE_OOB_EXTENDED_DATA_REQUEST_REPLY, "BKKKK"
627bb75dd7dSMatthias Ringwald };
628bb75dd7dSMatthias Ringwald 
629bb75dd7dSMatthias Ringwald /**
63056042629SMatthias Ringwald  *  Link Policy Commands
63156042629SMatthias Ringwald  */
63256042629SMatthias Ringwald 
63356042629SMatthias Ringwald /**
63456042629SMatthias Ringwald  * @param handle
63529ae3d7dSMatthias Ringwald  * @param hold_mode_max_interval * 0.625 ms,  range: 0x0002..0xFFFE; only even values are valid.
63629ae3d7dSMatthias Ringwald  * @param hold_mode_min_interval * 0.625 ms,  range: 0x0002..0xFFFE; only even values are valid.
63729ae3d7dSMatthias Ringwald  */
63829ae3d7dSMatthias Ringwald const hci_cmd_t hci_hold_mode = {
63929ae3d7dSMatthias Ringwald         HCI_OPCODE_HCI_HOLD_MODE, "H22"
64029ae3d7dSMatthias Ringwald };
64129ae3d7dSMatthias Ringwald 
64229ae3d7dSMatthias Ringwald /**
64329ae3d7dSMatthias Ringwald  * @param handle
64456042629SMatthias Ringwald  * @param sniff_max_interval
64556042629SMatthias Ringwald  * @param sniff_min_interval
64656042629SMatthias Ringwald  * @param sniff_attempt
64756042629SMatthias Ringwald  * @param sniff_timeout
64856042629SMatthias Ringwald  */
64956042629SMatthias Ringwald const hci_cmd_t hci_sniff_mode = {
650ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_SNIFF_MODE, "H2222"
65156042629SMatthias Ringwald };
65256042629SMatthias Ringwald 
65356042629SMatthias Ringwald /**
65456042629SMatthias Ringwald  * @param handle
6557cd21895SMatthias Ringwald  */
6567cd21895SMatthias Ringwald const hci_cmd_t hci_exit_sniff_mode = {
657ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_EXIT_SNIFF_MODE, "H"
6587cd21895SMatthias Ringwald };
6597cd21895SMatthias Ringwald 
6607cd21895SMatthias Ringwald /**
661*6f351188SMatthias Ringwald  * @note  Removed in Bluetooth Core v5.0
662*6f351188SMatthias Ringwald  * @param handle
663*6f351188SMatthias Ringwald  * @param beacon_max_interval * 0.625 ms,  range: 0x000E..0xFFFE; only even values are valid.
664*6f351188SMatthias Ringwald  * @param beacon_max_interval * 0.625 ms,  range: 0x000E..0xFFFE; only even values are valid.
665*6f351188SMatthias Ringwald  */
666*6f351188SMatthias Ringwald const hci_cmd_t hci_park_state = {
667*6f351188SMatthias Ringwald         HCI_OPCODE_HCI_PARK_STATE, "H22"
668*6f351188SMatthias Ringwald };
669*6f351188SMatthias Ringwald 
670*6f351188SMatthias Ringwald /**
671*6f351188SMatthias Ringwald  * @note  Removed in Bluetooth Core v5.0
672*6f351188SMatthias Ringwald  * @param handle
673*6f351188SMatthias Ringwald  */
674*6f351188SMatthias Ringwald const hci_cmd_t hci_exit_park_state = {
675*6f351188SMatthias Ringwald         HCI_OPCODE_HCI_EXIT_PARK_STATE, "H"
676*6f351188SMatthias Ringwald };
677*6f351188SMatthias Ringwald 
678*6f351188SMatthias Ringwald /**
6797cd21895SMatthias Ringwald  * @param handle
68056042629SMatthias Ringwald  * @param flags
68156042629SMatthias Ringwald  * @param service_type
68256042629SMatthias Ringwald  * @param token_rate (bytes/s)
68356042629SMatthias Ringwald  * @param peak_bandwith (bytes/s)
68456042629SMatthias Ringwald  * @param latency (us)
68556042629SMatthias Ringwald  * @param delay_variation (us)
68656042629SMatthias Ringwald  */
68756042629SMatthias Ringwald const hci_cmd_t hci_qos_setup = {
688ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_QOS_SETUP, "H114444"
68956042629SMatthias Ringwald };
69056042629SMatthias Ringwald 
69156042629SMatthias Ringwald /**
69256042629SMatthias Ringwald  * @param handle
69356042629SMatthias Ringwald  */
69456042629SMatthias Ringwald const hci_cmd_t hci_role_discovery = {
695ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_ROLE_DISCOVERY, "H"
69656042629SMatthias Ringwald };
69756042629SMatthias Ringwald 
69856042629SMatthias Ringwald /**
69956042629SMatthias Ringwald  * @param bd_addr
70056042629SMatthias Ringwald  * @param role (0=master,1=slave)
70156042629SMatthias Ringwald  */
70256042629SMatthias Ringwald const hci_cmd_t hci_switch_role_command= {
703ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_SWITCH_ROLE_COMMAND, "B1"
70456042629SMatthias Ringwald };
70556042629SMatthias Ringwald 
70656042629SMatthias Ringwald /**
70756042629SMatthias Ringwald  * @param handle
70856042629SMatthias Ringwald  */
70956042629SMatthias Ringwald const hci_cmd_t hci_read_link_policy_settings = {
710ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LINK_POLICY_SETTINGS, "H"
71156042629SMatthias Ringwald };
71256042629SMatthias Ringwald 
71356042629SMatthias Ringwald /**
71456042629SMatthias Ringwald  * @param handle
71556042629SMatthias Ringwald  * @param settings
71656042629SMatthias Ringwald  */
71756042629SMatthias Ringwald const hci_cmd_t hci_write_link_policy_settings = {
718ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_LINK_POLICY_SETTINGS, "H2"
71956042629SMatthias Ringwald };
72056042629SMatthias Ringwald 
721c4c88f1bSJakob Krantz /**
72232e2f27fSMatthias Ringwald  * @param handle
72332e2f27fSMatthias Ringwald  * @param max_latency
72432e2f27fSMatthias Ringwald  * @param min_remote_timeout
72532e2f27fSMatthias Ringwald  * @param min_local_timeout
72632e2f27fSMatthias Ringwald  */
72732e2f27fSMatthias Ringwald const hci_cmd_t hci_sniff_subrating = {
72850fe3a99SMilanka Ringwald     HCI_OPCODE_HCI_SNIFF_SUBRATING, "H222"
72932e2f27fSMatthias Ringwald };
73032e2f27fSMatthias Ringwald 
73132e2f27fSMatthias Ringwald /**
732c4c88f1bSJakob Krantz  * @param policy
733c4c88f1bSJakob Krantz  */
73453138e7aSMatthias Ringwald const hci_cmd_t hci_write_default_link_policy_setting = {
735ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_DEFAULT_LINK_POLICY_SETTING, "2"
736c4c88f1bSJakob Krantz };
737c4c88f1bSJakob Krantz 
738733a7793SMatthias Ringwald /**
739733a7793SMatthias Ringwald  * @param handle
740733a7793SMatthias Ringwald  * @param unused
741733a7793SMatthias Ringwald  * @param flow_direction
742733a7793SMatthias Ringwald  * @param service_type
743733a7793SMatthias Ringwald  * @param token_rate
744733a7793SMatthias Ringwald  * @param token_bucket_size
745733a7793SMatthias Ringwald  * @param peak_bandwidth
746733a7793SMatthias Ringwald  * @param access_latency
747733a7793SMatthias Ringwald  */
748733a7793SMatthias Ringwald const hci_cmd_t hci_flow_specification = {
749733a7793SMatthias Ringwald     HCI_OPCODE_HCI_FLOW_SPECIFICATION, "H1114444"
750733a7793SMatthias Ringwald };
751733a7793SMatthias Ringwald 
75256042629SMatthias Ringwald 
75356042629SMatthias Ringwald /**
75456042629SMatthias Ringwald  *  Controller & Baseband Commands
75556042629SMatthias Ringwald  */
75656042629SMatthias Ringwald 
7579119d792SMilanka Ringwald 
75856042629SMatthias Ringwald /**
75956042629SMatthias Ringwald  * @param event_mask_lover_octets
76056042629SMatthias Ringwald  * @param event_mask_higher_octets
76156042629SMatthias Ringwald  */
76256042629SMatthias Ringwald const hci_cmd_t hci_set_event_mask = {
763ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_SET_EVENT_MASK, "44"
76456042629SMatthias Ringwald };
76556042629SMatthias Ringwald 
76656042629SMatthias Ringwald /**
76756042629SMatthias Ringwald  */
76856042629SMatthias Ringwald const hci_cmd_t hci_reset = {
769ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_RESET, ""
77056042629SMatthias Ringwald };
77156042629SMatthias Ringwald 
77256042629SMatthias Ringwald /**
773e49d496aSMatthias Ringwald  * @param handle
774e49d496aSMatthias Ringwald  */
775e49d496aSMatthias Ringwald const hci_cmd_t hci_flush = {
776ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_FLUSH, "H"
7779af39d9fSMatthias Ringwald };
7789af39d9fSMatthias Ringwald 
7799af39d9fSMatthias Ringwald /**
7809af39d9fSMatthias Ringwald  * @param handle
7819af39d9fSMatthias Ringwald  */
7829af39d9fSMatthias Ringwald const hci_cmd_t hci_read_pin_type = {
783ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_PIN_TYPE, ""
7849af39d9fSMatthias Ringwald };
7859af39d9fSMatthias Ringwald 
7869af39d9fSMatthias Ringwald /**
7879af39d9fSMatthias Ringwald  * @param handle
7889af39d9fSMatthias Ringwald  */
7899af39d9fSMatthias Ringwald const hci_cmd_t hci_write_pin_type = {
790ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_PIN_TYPE, "1"
791e49d496aSMatthias Ringwald };
792e49d496aSMatthias Ringwald 
793e49d496aSMatthias Ringwald /**
79456042629SMatthias Ringwald  * @param bd_addr
79556042629SMatthias Ringwald  * @param delete_all_flags
79656042629SMatthias Ringwald  */
79756042629SMatthias Ringwald const hci_cmd_t hci_delete_stored_link_key = {
798ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_DELETE_STORED_LINK_KEY, "B1"
79956042629SMatthias Ringwald };
80056042629SMatthias Ringwald 
801f9f2075cSMatthias Ringwald #ifdef ENABLE_CLASSIC
80256042629SMatthias Ringwald /**
80356042629SMatthias Ringwald  * @param local_name (UTF-8, Null Terminated, max 248 octets)
80456042629SMatthias Ringwald  */
80556042629SMatthias Ringwald const hci_cmd_t hci_write_local_name = {
806ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_LOCAL_NAME, "N"
80756042629SMatthias Ringwald };
808f9f2075cSMatthias Ringwald #endif
80956042629SMatthias Ringwald 
81056042629SMatthias Ringwald /**
811e90bae01SMatthias Ringwald  */
812e90bae01SMatthias Ringwald const hci_cmd_t hci_read_local_name = {
813ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LOCAL_NAME, ""
814e90bae01SMatthias Ringwald };
815e90bae01SMatthias Ringwald 
816e90bae01SMatthias Ringwald /**
817195e82f3Sskoperst  */
818195e82f3Sskoperst const hci_cmd_t hci_read_page_timeout = {
819ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_PAGE_TIMEOUT, ""
820195e82f3Sskoperst };
821195e82f3Sskoperst 
822195e82f3Sskoperst /**
82356042629SMatthias Ringwald  * @param page_timeout (* 0.625 ms)
82456042629SMatthias Ringwald  */
82556042629SMatthias Ringwald const hci_cmd_t hci_write_page_timeout = {
826ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_PAGE_TIMEOUT, "2"
82756042629SMatthias Ringwald };
82856042629SMatthias Ringwald 
82956042629SMatthias Ringwald /**
8304eac2391SMatthias Ringwald  * @param scan_enable (no, inq, page, inq+page)
8314eac2391SMatthias Ringwald  */
8324eac2391SMatthias Ringwald const hci_cmd_t hci_write_scan_enable = {
833ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_SCAN_ENABLE, "1"
8344eac2391SMatthias Ringwald };
8354eac2391SMatthias Ringwald 
8364eac2391SMatthias Ringwald /**
837195e82f3Sskoperst  */
838195e82f3Sskoperst const hci_cmd_t hci_read_page_scan_activity = {
839ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_PAGE_SCAN_ACTIVITY, ""
840195e82f3Sskoperst };
841195e82f3Sskoperst 
842195e82f3Sskoperst /**
843195e82f3Sskoperst  * @param page_scan_interval (* 0.625 ms)
844195e82f3Sskoperst  * @param page_scan_window (* 0.625 ms, must be <= page_scan_interval)
845195e82f3Sskoperst  */
846195e82f3Sskoperst const hci_cmd_t hci_write_page_scan_activity = {
847ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_PAGE_SCAN_ACTIVITY, "22"
848195e82f3Sskoperst };
849195e82f3Sskoperst 
850195e82f3Sskoperst /**
85156042629SMatthias Ringwald  */
8524eac2391SMatthias Ringwald const hci_cmd_t hci_read_inquiry_scan_activity = {
853ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_INQUIRY_SCAN_ACTIVITY, ""
8544eac2391SMatthias Ringwald };
8554eac2391SMatthias Ringwald 
8564eac2391SMatthias Ringwald /**
8574eac2391SMatthias Ringwald  * @param inquiry_scan_interval (* 0.625 ms)
8584eac2391SMatthias Ringwald  * @param inquiry_scan_window (* 0.625 ms, must be <= inquiry_scan_interval)
8594eac2391SMatthias Ringwald  */
8604eac2391SMatthias Ringwald const hci_cmd_t hci_write_inquiry_scan_activity = {
861ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_INQUIRY_SCAN_ACTIVITY, "22"
86256042629SMatthias Ringwald };
86356042629SMatthias Ringwald 
86456042629SMatthias Ringwald /**
86556042629SMatthias Ringwald  * @param authentication_enable
86656042629SMatthias Ringwald  */
86756042629SMatthias Ringwald const hci_cmd_t hci_write_authentication_enable = {
868ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_AUTHENTICATION_ENABLE, "1"
86956042629SMatthias Ringwald };
87056042629SMatthias Ringwald 
87156042629SMatthias Ringwald /**
87256042629SMatthias Ringwald  * @param class_of_device
87356042629SMatthias Ringwald  */
87456042629SMatthias Ringwald const hci_cmd_t hci_write_class_of_device = {
875ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_CLASS_OF_DEVICE, "3"
87656042629SMatthias Ringwald };
87756042629SMatthias Ringwald 
87856042629SMatthias Ringwald /**
87956042629SMatthias Ringwald  */
88056042629SMatthias Ringwald const hci_cmd_t hci_read_num_broadcast_retransmissions = {
881ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_NUM_BROADCAST_RETRANSMISSIONS, ""
88256042629SMatthias Ringwald };
88356042629SMatthias Ringwald 
88456042629SMatthias Ringwald /**
88556042629SMatthias Ringwald  * @param num_broadcast_retransmissions (e.g. 0 for a single broadcast)
88656042629SMatthias Ringwald  */
88756042629SMatthias Ringwald const hci_cmd_t hci_write_num_broadcast_retransmissions = {
888ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_NUM_BROADCAST_RETRANSMISSIONS, "1"
88956042629SMatthias Ringwald };
89056042629SMatthias Ringwald 
89156042629SMatthias Ringwald /**
89244751e25SMatthias Ringwald  * @param connection_handle
89344751e25SMatthias Ringwald  * @param type 0 = current transmit level, 1 = max transmit level
89444751e25SMatthias Ringwald  */
89544751e25SMatthias Ringwald const hci_cmd_t hci_read_transmit_power_level = {
896ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_TRANSMIT_POWER_LEVEL, "11"
89744751e25SMatthias Ringwald };
89844751e25SMatthias Ringwald 
89944751e25SMatthias Ringwald /**
90056042629SMatthias Ringwald  * @param synchronous_flow_control_enable - if yes, num completed packet everts are sent for SCO packets
90156042629SMatthias Ringwald  */
90256042629SMatthias Ringwald const hci_cmd_t hci_write_synchronous_flow_control_enable = {
903ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_SYNCHRONOUS_FLOW_CONTROL_ENABLE, "1"
90456042629SMatthias Ringwald };
90556042629SMatthias Ringwald 
9062b838201SMatthias Ringwald #ifdef ENABLE_HCI_CONTROLLER_TO_HOST_FLOW_CONTROL
9072b838201SMatthias Ringwald 
9082b838201SMatthias Ringwald /**
9092b838201SMatthias Ringwald  * @param flow_control_enable - 0: off, 1: ACL only, 2: SCO only, 3: ACL + SCO
9102b838201SMatthias Ringwald  */
9112b838201SMatthias Ringwald const hci_cmd_t hci_set_controller_to_host_flow_control = {
912ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_SET_CONTROLLER_TO_HOST_FLOW_CONTROL, "1"
9132b838201SMatthias Ringwald };
9142b838201SMatthias Ringwald 
91556042629SMatthias Ringwald /**
91656042629SMatthias Ringwald  * @param host_acl_data_packet_length
91756042629SMatthias Ringwald  * @param host_synchronous_data_packet_length
91856042629SMatthias Ringwald  * @param host_total_num_acl_data_packets
91956042629SMatthias Ringwald  * @param host_total_num_synchronous_data_packets
92056042629SMatthias Ringwald  */
92156042629SMatthias Ringwald const hci_cmd_t hci_host_buffer_size = {
922ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_HOST_BUFFER_SIZE, "2122"
92356042629SMatthias Ringwald };
92456042629SMatthias Ringwald 
9259119d792SMilanka Ringwald 
9262b838201SMatthias Ringwald #if 0
9272b838201SMatthias Ringwald //
9282b838201SMatthias Ringwald // command sent manually sent by hci_host_num_completed_packets
9292b838201SMatthias Ringwald //
9302b838201SMatthias Ringwald /**
9312b838201SMatthias Ringwald  * @note only single handle supported by BTstack command generator
9322b838201SMatthias Ringwald  * @param number_of_handles must be 1
9332b838201SMatthias Ringwald  * @param connection_handle
9342b838201SMatthias Ringwald  * @param host_num_of_completed_packets for the given connection handle
9352b838201SMatthias Ringwald  */
9362b838201SMatthias Ringwald const hci_cmd_t hci_host_number_of_completed_packets = {
937ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_HOST_NUMBER_OF_COMPLETED_PACKETS, "1H2"
9382b838201SMatthias Ringwald };
9392b838201SMatthias Ringwald #endif
9402b838201SMatthias Ringwald 
9412b838201SMatthias Ringwald #endif
9422b838201SMatthias Ringwald 
94356042629SMatthias Ringwald /**
94456042629SMatthias Ringwald  * @param handle
94556042629SMatthias Ringwald  */
94656042629SMatthias Ringwald const hci_cmd_t hci_read_link_supervision_timeout = {
947ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LINK_SUPERVISION_TIMEOUT, "H"
94856042629SMatthias Ringwald };
94956042629SMatthias Ringwald 
95056042629SMatthias Ringwald /**
95156042629SMatthias Ringwald  * @param handle
95256042629SMatthias Ringwald  * @param timeout (0x0001 - 0xFFFF Time -> Range: 0.625ms - 40.9 sec)
95356042629SMatthias Ringwald  */
95456042629SMatthias Ringwald const hci_cmd_t hci_write_link_supervision_timeout = {
955ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_LINK_SUPERVISION_TIMEOUT, "H2"
95656042629SMatthias Ringwald };
95756042629SMatthias Ringwald 
95856042629SMatthias Ringwald /**
9599119d792SMilanka Ringwald  * @param num_current_iac must be 2
9609119d792SMilanka Ringwald  * @param iac_lap1
9619119d792SMilanka Ringwald  * @param iac_lap2
9629119d792SMilanka Ringwald  */
9639119d792SMilanka Ringwald const hci_cmd_t hci_write_current_iac_lap_two_iacs = {
964ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_CURRENT_IAC_LAP_TWO_IACS, "133"
9659119d792SMilanka Ringwald };
9669119d792SMilanka Ringwald 
9679119d792SMilanka Ringwald /**
9685769fd77SMatthias Ringwald  * @param inquiry_scan_type (0x00 = standard, 0x01 = interlaced)
9695769fd77SMatthias Ringwald  */
9705769fd77SMatthias Ringwald const hci_cmd_t hci_write_inquiry_scan_type = {
9715769fd77SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_INQUIRY_SCAN_TYPE,  "1"
9725769fd77SMatthias Ringwald };
9735769fd77SMatthias Ringwald 
9745769fd77SMatthias Ringwald /**
97556042629SMatthias Ringwald  * @param inquiry_mode (0x00 = standard, 0x01 = with RSSI, 0x02 = extended)
97656042629SMatthias Ringwald  */
97756042629SMatthias Ringwald const hci_cmd_t hci_write_inquiry_mode = {
978ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_INQUIRY_MODE, "1"
97956042629SMatthias Ringwald };
98056042629SMatthias Ringwald 
98156042629SMatthias Ringwald /**
9825769fd77SMatthias Ringwald  * @param page_scan_type (0x00 = standard, 0x01 = interlaced)
9835769fd77SMatthias Ringwald  */
9845769fd77SMatthias Ringwald const hci_cmd_t hci_write_page_scan_type = {
9855769fd77SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_PAGE_SCAN_TYPE, "1"
9865769fd77SMatthias Ringwald };
9875769fd77SMatthias Ringwald 
9885769fd77SMatthias Ringwald /**
98956042629SMatthias Ringwald  * @param fec_required
99056042629SMatthias Ringwald  * @param exstended_inquiry_response
99156042629SMatthias Ringwald  */
99256042629SMatthias Ringwald const hci_cmd_t hci_write_extended_inquiry_response = {
993ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_EXTENDED_INQUIRY_RESPONSE, "1E"
99456042629SMatthias Ringwald };
99556042629SMatthias Ringwald 
99656042629SMatthias Ringwald /**
99756042629SMatthias Ringwald  * @param mode (0 = off, 1 = on)
99856042629SMatthias Ringwald  */
99956042629SMatthias Ringwald const hci_cmd_t hci_write_simple_pairing_mode = {
1000ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_SIMPLE_PAIRING_MODE, "1"
100156042629SMatthias Ringwald };
100256042629SMatthias Ringwald 
1003237daac5SMatthias Ringwald /**
1004237daac5SMatthias Ringwald  */
1005237daac5SMatthias Ringwald const hci_cmd_t hci_read_local_oob_data = {
1006ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LOCAL_OOB_DATA, ""
1007237daac5SMatthias Ringwald     // return status, C, R
1008237daac5SMatthias Ringwald };
1009483c5078SMatthias Ringwald 
1010483c5078SMatthias Ringwald /**
1011483c5078SMatthias Ringwald  * @param mode (0 = off, 1 = on)
1012483c5078SMatthias Ringwald  */
1013483c5078SMatthias Ringwald const hci_cmd_t hci_write_default_erroneous_data_reporting = {
1014ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_DEFAULT_ERRONEOUS_DATA_REPORTING, "1"
1015483c5078SMatthias Ringwald };
1016483c5078SMatthias Ringwald 
101756042629SMatthias Ringwald /**
101856042629SMatthias Ringwald  */
101956042629SMatthias Ringwald const hci_cmd_t hci_read_le_host_supported = {
1020ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LE_HOST_SUPPORTED, ""
102156042629SMatthias Ringwald     // return: status, le supported host, simultaneous le host
102256042629SMatthias Ringwald };
102356042629SMatthias Ringwald 
102456042629SMatthias Ringwald /**
102556042629SMatthias Ringwald  * @param le_supported_host
102656042629SMatthias Ringwald  * @param simultaneous_le_host
102756042629SMatthias Ringwald  */
102856042629SMatthias Ringwald const hci_cmd_t hci_write_le_host_supported = {
1029ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_LE_HOST_SUPPORTED, "11"
103056042629SMatthias Ringwald     // return: status
103156042629SMatthias Ringwald };
103256042629SMatthias Ringwald 
103356042629SMatthias Ringwald /**
1034b002ae8cSMatthias Ringwald  * @param secure_connections_host_support
1035b002ae8cSMatthias Ringwald  */
1036b002ae8cSMatthias Ringwald const hci_cmd_t hci_write_secure_connections_host_support = {
1037ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_SECURE_CONNECTIONS_HOST_SUPPORT, "1"
1038b002ae8cSMatthias Ringwald     // return: status
1039b002ae8cSMatthias Ringwald };
1040b002ae8cSMatthias Ringwald 
1041b002ae8cSMatthias Ringwald /**
1042237daac5SMatthias Ringwald  */
1043bb75dd7dSMatthias Ringwald const hci_cmd_t hci_read_local_extended_oob_data = {
10441849becdSMatthias Ringwald     HCI_OPCODE_HCI_READ_LOCAL_EXTENDED_OOB_DATA, ""
1045237daac5SMatthias Ringwald     // return status, C_192, R_192, R_256, C_256
1046237daac5SMatthias Ringwald };
1047237daac5SMatthias Ringwald 
1048237daac5SMatthias Ringwald 
1049237daac5SMatthias Ringwald /**
105056042629SMatthias Ringwald  * Testing Commands
105156042629SMatthias Ringwald  */
105256042629SMatthias Ringwald 
105356042629SMatthias Ringwald 
105456042629SMatthias Ringwald /**
105556042629SMatthias Ringwald  */
105656042629SMatthias Ringwald const hci_cmd_t hci_read_loopback_mode = {
1057ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LOOPBACK_MODE, ""
105856042629SMatthias Ringwald     // return: status, loopback mode (0 = off, 1 = local loopback, 2 = remote loopback)
105956042629SMatthias Ringwald };
106056042629SMatthias Ringwald 
106156042629SMatthias Ringwald /**
106256042629SMatthias Ringwald  * @param loopback_mode
106356042629SMatthias Ringwald  */
106456042629SMatthias Ringwald const hci_cmd_t hci_write_loopback_mode = {
1065ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_LOOPBACK_MODE, "1"
106656042629SMatthias Ringwald     // return: status
106756042629SMatthias Ringwald };
106856042629SMatthias Ringwald 
106984ca9bd8SMatthias Ringwald /**
107084ca9bd8SMatthias Ringwald  */
107184ca9bd8SMatthias Ringwald const hci_cmd_t hci_enable_device_under_test_mode = {
1072ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_ENABLE_DEVICE_UNDER_TEST_MODE, ""
107384ca9bd8SMatthias Ringwald     // return: status
107484ca9bd8SMatthias Ringwald };
107584ca9bd8SMatthias Ringwald 
107684ca9bd8SMatthias Ringwald /**
107784ca9bd8SMatthias Ringwald  * @param simple_pairing_debug_mode
107884ca9bd8SMatthias Ringwald  */
107984ca9bd8SMatthias Ringwald const hci_cmd_t hci_write_simple_pairing_debug_mode = {
1080ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_SIMPLE_PAIRING_DEBUG_MODE, "1"
108184ca9bd8SMatthias Ringwald     // return: status
108284ca9bd8SMatthias Ringwald };
108384ca9bd8SMatthias Ringwald 
108484ca9bd8SMatthias Ringwald /**
108584ca9bd8SMatthias Ringwald  * @param handle
108684ca9bd8SMatthias Ringwald  * @param dm1_acl_u_mode
108784ca9bd8SMatthias Ringwald  * @param esco_loopback_mode
108884ca9bd8SMatthias Ringwald  */
108984ca9bd8SMatthias Ringwald const hci_cmd_t hci_write_secure_connections_test_mode = {
1090ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_WRITE_SECURE_CONNECTIONS_TEST_MODE, "H11"
109184ca9bd8SMatthias Ringwald     // return: status
109284ca9bd8SMatthias Ringwald };
109384ca9bd8SMatthias Ringwald 
109456042629SMatthias Ringwald 
109556042629SMatthias Ringwald /**
109656042629SMatthias Ringwald  * Informational Parameters
109756042629SMatthias Ringwald  */
109856042629SMatthias Ringwald 
109956042629SMatthias Ringwald const hci_cmd_t hci_read_local_version_information = {
1100ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LOCAL_VERSION_INFORMATION, ""
110156042629SMatthias Ringwald };
110256042629SMatthias Ringwald const hci_cmd_t hci_read_local_supported_commands = {
1103ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LOCAL_SUPPORTED_COMMANDS, ""
110456042629SMatthias Ringwald };
110556042629SMatthias Ringwald const hci_cmd_t hci_read_local_supported_features = {
1106ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_LOCAL_SUPPORTED_FEATURES, ""
110756042629SMatthias Ringwald };
110856042629SMatthias Ringwald const hci_cmd_t hci_read_buffer_size = {
1109ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_BUFFER_SIZE, ""
111056042629SMatthias Ringwald };
111156042629SMatthias Ringwald const hci_cmd_t hci_read_bd_addr = {
1112ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_BD_ADDR, ""
111356042629SMatthias Ringwald };
111456042629SMatthias Ringwald 
111556042629SMatthias Ringwald /**
111656042629SMatthias Ringwald  * Status Paramters
111756042629SMatthias Ringwald  */
111856042629SMatthias Ringwald 
111956042629SMatthias Ringwald /**
112056042629SMatthias Ringwald  * @param handle
112156042629SMatthias Ringwald  */
112256042629SMatthias Ringwald const hci_cmd_t hci_read_rssi = {
1123ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_RSSI, "H"
112456042629SMatthias Ringwald };
112556042629SMatthias Ringwald 
112697abfa24SMatthias Ringwald /**
112797abfa24SMatthias Ringwald  * @param handle
112897abfa24SMatthias Ringwald  */
112997abfa24SMatthias Ringwald const hci_cmd_t hci_read_encryption_key_size = {
1130ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_READ_ENCRYPTION_KEY_SIZE, "H"
113197abfa24SMatthias Ringwald };
113256042629SMatthias Ringwald 
113356042629SMatthias Ringwald 
1134a9a4c409SMatthias Ringwald #ifdef ENABLE_BLE
113556042629SMatthias Ringwald /**
113656042629SMatthias Ringwald  * Low Energy Commands
113756042629SMatthias Ringwald  */
113856042629SMatthias Ringwald 
113956042629SMatthias Ringwald /**
114056042629SMatthias Ringwald  * @param event_mask_lower_octets
114156042629SMatthias Ringwald  * @param event_mask_higher_octets
114256042629SMatthias Ringwald  */
114356042629SMatthias Ringwald const hci_cmd_t hci_le_set_event_mask = {
1144ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_EVENT_MASK, "44"
114556042629SMatthias Ringwald     // return: status
114656042629SMatthias Ringwald };
114756042629SMatthias Ringwald 
114856042629SMatthias Ringwald const hci_cmd_t hci_le_read_buffer_size = {
1149ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_BUFFER_SIZE, ""
115056042629SMatthias Ringwald     // return: status, le acl data packet len (16), total num le acl data packets(8)
115156042629SMatthias Ringwald };
11520c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_local_supported_features = {
11530c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_LOCAL_SUPPORTED_FEATURES, ""
115456042629SMatthias Ringwald     // return: LE_Features See [Vol 6] Part B, Section 4.6
115556042629SMatthias Ringwald };
115656042629SMatthias Ringwald 
115756042629SMatthias Ringwald /**
115856042629SMatthias Ringwald  * @param random_bd_addr
115956042629SMatthias Ringwald  */
116056042629SMatthias Ringwald const hci_cmd_t hci_le_set_random_address = {
1161ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_RANDOM_ADDRESS, "B"
116256042629SMatthias Ringwald     // return: status
116356042629SMatthias Ringwald };
116456042629SMatthias Ringwald 
116556042629SMatthias Ringwald /**
116656042629SMatthias Ringwald  * @param advertising_interval_min ([0x0020,0x4000], default: 0x0800, unit: 0.625 msec)
116756042629SMatthias Ringwald  * @param advertising_interval_max ([0x0020,0x4000], default: 0x0800, unit: 0.625 msec)
116856042629SMatthias Ringwald  * @param advertising_type (enum from 0: ADV_IND, ADC_DIRECT_IND, ADV_SCAN_IND, ADV_NONCONN_IND)
116956042629SMatthias Ringwald  * @param own_address_type (enum from 0: public device address, random device address)
117056042629SMatthias Ringwald  * @param direct_address_type ()
117156042629SMatthias Ringwald  * @param direct_address (public or random address of device to be connecteed)
117256042629SMatthias Ringwald  * @param advertising_channel_map (flags: chan_37(1), chan_38(2), chan_39(4))
117356042629SMatthias Ringwald  * @param advertising_filter_policy (enum from 0: scan any conn any, scan whitelist, con any, scan any conn whitelist, scan whitelist, con whitelist)
117456042629SMatthias Ringwald  */
117556042629SMatthias Ringwald const hci_cmd_t hci_le_set_advertising_parameters = {
1176ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_ADVERTISING_PARAMETERS, "22111B11"
117756042629SMatthias Ringwald     // return: status
117856042629SMatthias Ringwald };
117956042629SMatthias Ringwald 
118056042629SMatthias Ringwald const hci_cmd_t hci_le_read_advertising_channel_tx_power = {
1181ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_ADVERTISING_CHANNEL_TX_POWER, ""
118256042629SMatthias Ringwald     // return: status, level [-20,10] signed int (8), units dBm
118356042629SMatthias Ringwald };
118456042629SMatthias Ringwald 
118556042629SMatthias Ringwald /**
118656042629SMatthias Ringwald  * @param advertising_data_length
118756042629SMatthias Ringwald  * @param advertising_data (31 bytes)
118856042629SMatthias Ringwald  */
118956042629SMatthias Ringwald const hci_cmd_t hci_le_set_advertising_data= {
1190ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_ADVERTISING_DATA, "1A"
119156042629SMatthias Ringwald     // return: status
119256042629SMatthias Ringwald };
119356042629SMatthias Ringwald 
119456042629SMatthias Ringwald /**
119556042629SMatthias Ringwald  * @param scan_response_data_length
119656042629SMatthias Ringwald  * @param scan_response_data (31 bytes)
119756042629SMatthias Ringwald  */
119856042629SMatthias Ringwald const hci_cmd_t hci_le_set_scan_response_data= {
1199ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_SCAN_RESPONSE_DATA, "1A"
120056042629SMatthias Ringwald     // return: status
120156042629SMatthias Ringwald };
120256042629SMatthias Ringwald 
120356042629SMatthias Ringwald /**
120456042629SMatthias Ringwald  * @param advertise_enable (off: 0, on: 1)
120556042629SMatthias Ringwald  */
120656042629SMatthias Ringwald const hci_cmd_t hci_le_set_advertise_enable = {
1207ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_ADVERTISE_ENABLE, "1"
120856042629SMatthias Ringwald     // return: status
120956042629SMatthias Ringwald };
121056042629SMatthias Ringwald 
121156042629SMatthias Ringwald /**
121256042629SMatthias Ringwald  * @param le_scan_type (passive (0), active (1))
121356042629SMatthias Ringwald  * @param le_scan_interval ([0x0004,0x4000], unit: 0.625 msec)
121456042629SMatthias Ringwald  * @param le_scan_window   ([0x0004,0x4000], unit: 0.625 msec)
121556042629SMatthias Ringwald  * @param own_address_type (public (0), random (1))
121656042629SMatthias Ringwald  * @param scanning_filter_policy (any (0), only whitelist (1))
121756042629SMatthias Ringwald  */
121856042629SMatthias Ringwald const hci_cmd_t hci_le_set_scan_parameters = {
1219ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_SCAN_PARAMETERS, "12211"
122056042629SMatthias Ringwald     // return: status
122156042629SMatthias Ringwald };
122256042629SMatthias Ringwald 
122356042629SMatthias Ringwald /**
122456042629SMatthias Ringwald  * @param le_scan_enable  (disabled (0), enabled (1))
122556042629SMatthias Ringwald  * @param filter_duplices (disabled (0), enabled (1))
122656042629SMatthias Ringwald  */
122756042629SMatthias Ringwald const hci_cmd_t hci_le_set_scan_enable = {
1228ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_SCAN_ENABLE, "11"
122956042629SMatthias Ringwald     // return: status
123056042629SMatthias Ringwald };
123156042629SMatthias Ringwald 
123256042629SMatthias Ringwald /**
123356042629SMatthias Ringwald  * @param le_scan_interval ([0x0004, 0x4000], unit: 0.625 msec)
123456042629SMatthias Ringwald  * @param le_scan_window ([0x0004, 0x4000], unit: 0.625 msec)
123556042629SMatthias Ringwald  * @param initiator_filter_policy (peer address type + peer address (0), whitelist (1))
123656042629SMatthias Ringwald  * @param peer_address_type (public (0), random (1))
123756042629SMatthias Ringwald  * @param peer_address
123856042629SMatthias Ringwald  * @param own_address_type (public (0), random (1))
123956042629SMatthias Ringwald  * @param conn_interval_min ([0x0006, 0x0c80], unit: 1.25 msec)
124056042629SMatthias Ringwald  * @param conn_interval_max ([0x0006, 0x0c80], unit: 1.25 msec)
124156042629SMatthias Ringwald  * @param conn_latency (number of connection events [0x0000, 0x01f4])
124256042629SMatthias Ringwald  * @param supervision_timeout ([0x000a, 0x0c80], unit: 10 msec)
124356042629SMatthias Ringwald  * @param minimum_CE_length ([0x0000, 0xffff], unit: 0.625 msec)
124456042629SMatthias Ringwald  * @param maximum_CE_length ([0x0000, 0xffff], unit: 0.625 msec)
124556042629SMatthias Ringwald  */
124656042629SMatthias Ringwald const hci_cmd_t hci_le_create_connection= {
1247ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_CREATE_CONNECTION, "2211B1222222"
124856042629SMatthias Ringwald     // return: none -> le create connection complete event
124956042629SMatthias Ringwald };
125056042629SMatthias Ringwald 
125156042629SMatthias Ringwald const hci_cmd_t hci_le_create_connection_cancel = {
1252ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_CREATE_CONNECTION_CANCEL, ""
125356042629SMatthias Ringwald     // return: status
125456042629SMatthias Ringwald };
125556042629SMatthias Ringwald 
125656042629SMatthias Ringwald const hci_cmd_t hci_le_read_white_list_size = {
1257ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_WHITE_LIST_SIZE, ""
125856042629SMatthias Ringwald     // return: status, number of entries in controller whitelist
125956042629SMatthias Ringwald };
126056042629SMatthias Ringwald 
126156042629SMatthias Ringwald const hci_cmd_t hci_le_clear_white_list = {
1262ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_CLEAR_WHITE_LIST, ""
126356042629SMatthias Ringwald     // return: status
126456042629SMatthias Ringwald };
126556042629SMatthias Ringwald 
126656042629SMatthias Ringwald /**
126756042629SMatthias Ringwald  * @param address_type (public (0), random (1))
126856042629SMatthias Ringwald  * @param bd_addr
126956042629SMatthias Ringwald  */
127056042629SMatthias Ringwald const hci_cmd_t hci_le_add_device_to_white_list = {
1271ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_ADD_DEVICE_TO_WHITE_LIST, "1B"
127256042629SMatthias Ringwald     // return: status
127356042629SMatthias Ringwald };
127456042629SMatthias Ringwald 
127556042629SMatthias Ringwald /**
127656042629SMatthias Ringwald  * @param address_type (public (0), random (1))
127756042629SMatthias Ringwald  * @param bd_addr
127856042629SMatthias Ringwald  */
127956042629SMatthias Ringwald const hci_cmd_t hci_le_remove_device_from_white_list = {
1280ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOVE_DEVICE_FROM_WHITE_LIST, "1B"
128156042629SMatthias Ringwald     // return: status
128256042629SMatthias Ringwald };
128356042629SMatthias Ringwald 
128456042629SMatthias Ringwald /**
128556042629SMatthias Ringwald  * @param conn_handle
128656042629SMatthias Ringwald  * @param conn_interval_min ([0x0006,0x0c80], unit: 1.25 msec)
128756042629SMatthias Ringwald  * @param conn_interval_max ([0x0006,0x0c80], unit: 1.25 msec)
128856042629SMatthias Ringwald  * @param conn_latency ([0x0000,0x03e8], number of connection events)
128956042629SMatthias Ringwald  * @param supervision_timeout ([0x000a,0x0c80], unit: 10 msec)
129056042629SMatthias Ringwald  * @param minimum_CE_length ([0x0000,0xffff], unit: 0.625 msec)
129156042629SMatthias Ringwald  * @param maximum_CE_length ([0x0000,0xffff], unit: 0.625 msec)
129256042629SMatthias Ringwald  */
129356042629SMatthias Ringwald const hci_cmd_t hci_le_connection_update = {
1294ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_CONNECTION_UPDATE, "H222222"
129556042629SMatthias Ringwald     // return: none -> le connection update complete event
129656042629SMatthias Ringwald };
129756042629SMatthias Ringwald 
129856042629SMatthias Ringwald /**
129956042629SMatthias Ringwald  * @param channel_map_lower_32bits
130056042629SMatthias Ringwald  * @param channel_map_higher_5bits
130156042629SMatthias Ringwald  */
130256042629SMatthias Ringwald const hci_cmd_t hci_le_set_host_channel_classification = {
1303ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_HOST_CHANNEL_CLASSIFICATION, "41"
130456042629SMatthias Ringwald     // return: status
130556042629SMatthias Ringwald };
130656042629SMatthias Ringwald 
130756042629SMatthias Ringwald /**
130856042629SMatthias Ringwald  * @param conn_handle
130956042629SMatthias Ringwald  */
131056042629SMatthias Ringwald const hci_cmd_t hci_le_read_channel_map = {
1311ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_CHANNEL_MAP, "H"
131256042629SMatthias Ringwald     // return: status, connection handle, channel map (5 bytes, 37 used)
131356042629SMatthias Ringwald };
131456042629SMatthias Ringwald 
131556042629SMatthias Ringwald /**
131656042629SMatthias Ringwald  * @param conn_handle
131756042629SMatthias Ringwald  */
131856042629SMatthias Ringwald const hci_cmd_t hci_le_read_remote_used_features = {
1319ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_REMOTE_USED_FEATURES, "H"
132056042629SMatthias Ringwald     // return: none -> le read remote used features complete event
132156042629SMatthias Ringwald };
132256042629SMatthias Ringwald 
132356042629SMatthias Ringwald /**
132456042629SMatthias Ringwald  * @param key ((128) for AES-128)
132556042629SMatthias Ringwald  * @param plain_text (128)
132656042629SMatthias Ringwald  */
132756042629SMatthias Ringwald const hci_cmd_t hci_le_encrypt = {
1328ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_ENCRYPT, "PP"
132956042629SMatthias Ringwald     // return: status, encrypted data (128)
133056042629SMatthias Ringwald };
133156042629SMatthias Ringwald 
133256042629SMatthias Ringwald const hci_cmd_t hci_le_rand = {
1333ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_RAND, ""
133456042629SMatthias Ringwald     // return: status, random number (64)
133556042629SMatthias Ringwald };
133656042629SMatthias Ringwald 
133756042629SMatthias Ringwald /**
133856042629SMatthias Ringwald  * @param conn_handle
133956042629SMatthias Ringwald  * @param random_number_lower_32bits
134056042629SMatthias Ringwald  * @param random_number_higher_32bits
134156042629SMatthias Ringwald  * @param encryption_diversifier (16)
134256042629SMatthias Ringwald  * @param long_term_key (128)
134356042629SMatthias Ringwald  */
134456042629SMatthias Ringwald const hci_cmd_t hci_le_start_encryption = {
1345ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_START_ENCRYPTION, "H442P"
134656042629SMatthias Ringwald     // return: none -> encryption changed or encryption key refresh complete event
134756042629SMatthias Ringwald };
134856042629SMatthias Ringwald 
134956042629SMatthias Ringwald /**
135056042629SMatthias Ringwald  * @param connection_handle
135156042629SMatthias Ringwald  * @param long_term_key (128)
135256042629SMatthias Ringwald  */
135356042629SMatthias Ringwald const hci_cmd_t hci_le_long_term_key_request_reply = {
1354ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_LONG_TERM_KEY_REQUEST_REPLY, "HP"
135556042629SMatthias Ringwald     // return: status, connection handle
135656042629SMatthias Ringwald };
135756042629SMatthias Ringwald 
135856042629SMatthias Ringwald /**
135956042629SMatthias Ringwald  * @param conn_handle
136056042629SMatthias Ringwald  */
136156042629SMatthias Ringwald const hci_cmd_t hci_le_long_term_key_negative_reply = {
1362ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_LONG_TERM_KEY_NEGATIVE_REPLY, "H"
136356042629SMatthias Ringwald     // return: status, connection handle
136456042629SMatthias Ringwald };
136556042629SMatthias Ringwald 
136656042629SMatthias Ringwald /**
136756042629SMatthias Ringwald  * @param conn_handle
136856042629SMatthias Ringwald  */
136956042629SMatthias Ringwald const hci_cmd_t hci_le_read_supported_states = {
1370ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_SUPPORTED_STATES, "H"
137156042629SMatthias Ringwald     // return: status, LE states (64)
137256042629SMatthias Ringwald };
137356042629SMatthias Ringwald 
137456042629SMatthias Ringwald /**
137556042629SMatthias Ringwald  * @param rx_frequency ([0x00 0x27], frequency (MHz): 2420 + N*2)
137656042629SMatthias Ringwald  */
137756042629SMatthias Ringwald const hci_cmd_t hci_le_receiver_test = {
1378ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_RECEIVER_TEST, "1"
137956042629SMatthias Ringwald     // return: status
138056042629SMatthias Ringwald };
138156042629SMatthias Ringwald 
138256042629SMatthias Ringwald /**
138356042629SMatthias Ringwald  * @param tx_frequency ([0x00 0x27], frequency (MHz): 2420 + N*2)
138456042629SMatthias Ringwald  * @param test_payload_lengh ([0x00,0x25])
138556042629SMatthias Ringwald  * @param packet_payload ([0,7] different patterns)
138656042629SMatthias Ringwald  */
138756042629SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test = {
1388ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_TRANSMITTER_TEST, "111"
138956042629SMatthias Ringwald     // return: status
139056042629SMatthias Ringwald };
139156042629SMatthias Ringwald 
139256042629SMatthias Ringwald /**
139356042629SMatthias Ringwald  * @param end_test_cmd
139456042629SMatthias Ringwald  */
139556042629SMatthias Ringwald const hci_cmd_t hci_le_test_end = {
1396ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_TEST_END, "1"
139756042629SMatthias Ringwald     // return: status, number of packets (8)
139856042629SMatthias Ringwald };
139982180fcaSMatthias Ringwald 
140082180fcaSMatthias Ringwald /**
1401fe704c95SMatthias Ringwald  * @param conn_handle
1402fe704c95SMatthias Ringwald  * @param conn_interval_min ([0x0006,0x0c80], unit: 1.25 msec)
1403fe704c95SMatthias Ringwald  * @param conn_interval_max ([0x0006,0x0c80], unit: 1.25 msec)
1404fe704c95SMatthias Ringwald  * @param conn_latency ([0x0000,0x03e8], number of connection events)
1405fe704c95SMatthias Ringwald  * @param supervision_timeout ([0x000a,0x0c80], unit: 10 msec)
1406fe704c95SMatthias Ringwald  * @param minimum_CE_length ([0x0000,0xffff], unit: 0.625 msec)
1407fe704c95SMatthias Ringwald  * @param maximum_CE_length ([0x0000,0xffff], unit: 0.625 msec)
1408fe704c95SMatthias Ringwald  */
1409fe704c95SMatthias Ringwald const hci_cmd_t hci_le_remote_connection_parameter_request_reply = {
1410ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_REPLY, "H222222"
1411fe704c95SMatthias Ringwald     // return: status, connection handle
1412fe704c95SMatthias Ringwald };
1413fe704c95SMatthias Ringwald 
1414fe704c95SMatthias Ringwald /**
1415fe704c95SMatthias Ringwald  * @param con_handle
1416fe704c95SMatthias Ringwald  * @param reason
1417fe704c95SMatthias Ringwald  */
1418fe704c95SMatthias Ringwald const hci_cmd_t hci_le_remote_connection_parameter_request_negative_reply = {
1419ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_NEGATIVE_REPLY, "H1"
1420fe704c95SMatthias Ringwald     // return: status, connection handle
1421fe704c95SMatthias Ringwald };
1422fe704c95SMatthias Ringwald 
1423fe704c95SMatthias Ringwald /**
14240ea2847fSMatthias Ringwald  * @param con_handle
14250ea2847fSMatthias Ringwald  * @param tx_octets
14260ea2847fSMatthias Ringwald  * @param tx_time
14270ea2847fSMatthias Ringwald  */
14280ea2847fSMatthias Ringwald const hci_cmd_t hci_le_set_data_length = {
1429ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_DATA_LENGTH, "H22"
14300ea2847fSMatthias Ringwald     // return: status, connection handle
14310ea2847fSMatthias Ringwald };
14320ea2847fSMatthias Ringwald 
14330ea2847fSMatthias Ringwald /**
14340ea2847fSMatthias Ringwald  */
14350ea2847fSMatthias Ringwald const hci_cmd_t hci_le_read_suggested_default_data_length = {
1436ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_SUGGESTED_DEFAULT_DATA_LENGTH, ""
14370ea2847fSMatthias Ringwald     // return: status, suggested max tx octets, suggested max tx time
14380ea2847fSMatthias Ringwald };
14390ea2847fSMatthias Ringwald 
14400ea2847fSMatthias Ringwald /**
14410ea2847fSMatthias Ringwald  * @param suggested_max_tx_octets
14420ea2847fSMatthias Ringwald  * @param suggested_max_tx_time
14430ea2847fSMatthias Ringwald  */
14440ea2847fSMatthias Ringwald const hci_cmd_t hci_le_write_suggested_default_data_length = {
1445ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_WRITE_SUGGESTED_DEFAULT_DATA_LENGTH, "22"
14460ea2847fSMatthias Ringwald     // return: status
14470ea2847fSMatthias Ringwald };
14480ea2847fSMatthias Ringwald 
14490ea2847fSMatthias Ringwald /**
145082180fcaSMatthias Ringwald  */
145182180fcaSMatthias Ringwald const hci_cmd_t hci_le_read_local_p256_public_key = {
1452ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_LOCAL_P256_PUBLIC_KEY, ""
145382180fcaSMatthias Ringwald //  LE Read Local P-256 Public Key Complete is generated on completion
145482180fcaSMatthias Ringwald };
145582180fcaSMatthias Ringwald 
145682180fcaSMatthias Ringwald /**
1457fcae305fSMatthias Ringwald  * @param public key
1458fcae305fSMatthias Ringwald  * @param private key
145982180fcaSMatthias Ringwald  */
146082180fcaSMatthias Ringwald const hci_cmd_t hci_le_generate_dhkey = {
1461ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_GENERATE_DHKEY, "QQ"
146282180fcaSMatthias Ringwald // LE Generate DHKey Complete is generated on completion
146382180fcaSMatthias Ringwald };
146482180fcaSMatthias Ringwald 
14650ea2847fSMatthias Ringwald /**
1466173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address_Type
1467173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address
1468173ed1a3SMatthias Ringwald  * @param Peer_IRK
1469173ed1a3SMatthias Ringwald  * @param Local_IRK
1470173ed1a3SMatthias Ringwald  */
1471173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_add_device_to_resolving_list = {
1472173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_ADD_DEVICE_TO_RESOLVING_LIST, "1BPP"
1473173ed1a3SMatthias Ringwald };
1474173ed1a3SMatthias Ringwald 
1475173ed1a3SMatthias Ringwald /**
1476173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address_Type
1477173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address
1478173ed1a3SMatthias Ringwald  */
1479173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_remove_device_from_resolving_list = {
1480173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOVE_DEVICE_FROM_RESOLVING_LIST, "1B"
1481173ed1a3SMatthias Ringwald };
1482173ed1a3SMatthias Ringwald 
1483173ed1a3SMatthias Ringwald /**
1484173ed1a3SMatthias Ringwald  */
1485173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_clear_resolving_list = {
1486173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_CLEAR_RESOLVING_LIST, ""
1487173ed1a3SMatthias Ringwald };
1488173ed1a3SMatthias Ringwald 
1489173ed1a3SMatthias Ringwald /**
1490173ed1a3SMatthias Ringwald  */
1491173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_read_resolving_list_size = {
1492173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_RESOLVING_LIST_SIZE, ""
1493173ed1a3SMatthias Ringwald };
1494173ed1a3SMatthias Ringwald 
1495173ed1a3SMatthias Ringwald /**
1496173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address_Type
1497173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address
1498173ed1a3SMatthias Ringwald  */
1499173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_read_peer_resolvable_address = {
1500173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_PEER_RESOLVABLE_ADDRESS, ""
1501173ed1a3SMatthias Ringwald };
1502173ed1a3SMatthias Ringwald 
1503173ed1a3SMatthias Ringwald /**
1504173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address_Type
1505173ed1a3SMatthias Ringwald  * @param Peer_Identity_Address
1506173ed1a3SMatthias Ringwald  */
1507173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_read_local_resolvable_address = {
1508173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_LOCAL_RESOLVABLE_ADDRESS, ""
1509173ed1a3SMatthias Ringwald };
1510173ed1a3SMatthias Ringwald 
1511173ed1a3SMatthias Ringwald /**
1512173ed1a3SMatthias Ringwald  * @param Address_Resolution_Enable
1513173ed1a3SMatthias Ringwald  */
1514173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_set_address_resolution_enabled= {
1515173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_ADDRESS_RESOLUTION_ENABLED, "1"
1516173ed1a3SMatthias Ringwald };
1517173ed1a3SMatthias Ringwald 
1518173ed1a3SMatthias Ringwald /**
1519173ed1a3SMatthias Ringwald  * @param RPA_Timeout in seconds, range 0x0001 to 0x0E10, default: 900 s
1520173ed1a3SMatthias Ringwald  */
1521173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_set_resolvable_private_address_timeout= {
1522173ed1a3SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_RESOLVABLE_PRIVATE_ADDRESS_TIMEOUT, "2"
1523173ed1a3SMatthias Ringwald };
1524173ed1a3SMatthias Ringwald 
1525173ed1a3SMatthias Ringwald /**
15260ea2847fSMatthias Ringwald  */
15270ea2847fSMatthias Ringwald const hci_cmd_t hci_le_read_maximum_data_length = {
1528ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_MAXIMUM_DATA_LENGTH, ""
15290ea2847fSMatthias Ringwald     // return: status, supported max tx octets, supported max tx time, supported max rx octets, supported max rx time
15300ea2847fSMatthias Ringwald };
15310ea2847fSMatthias Ringwald 
1532ca13daefSMatthias Ringwald /**
1533ca13daefSMatthias Ringwald  * @param con_handle
1534ca13daefSMatthias Ringwald  */
1535ca13daefSMatthias Ringwald const hci_cmd_t hci_le_read_phy = {
1536ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_PHY, "H"
1537ca13daefSMatthias Ringwald     // return: status, connection handler, tx phy, rx phy
1538ca13daefSMatthias Ringwald };
1539ca13daefSMatthias Ringwald 
1540ca13daefSMatthias Ringwald /**
1541ca13daefSMatthias Ringwald  * @param all_phys
1542ca13daefSMatthias Ringwald  * @param tx_phys
1543ca13daefSMatthias Ringwald  * @param rx_phys
1544ca13daefSMatthias Ringwald  */
1545ca13daefSMatthias Ringwald const hci_cmd_t hci_le_set_default_phy = {
1546ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_DEFAULT_PHY, "111"
1547ca13daefSMatthias Ringwald     // return: status
1548ca13daefSMatthias Ringwald };
1549ca13daefSMatthias Ringwald 
1550ca13daefSMatthias Ringwald /**
1551ca13daefSMatthias Ringwald  * @param con_handle
1552ca13daefSMatthias Ringwald  * @param all_phys
1553ca13daefSMatthias Ringwald  * @param tx_phys
1554ca13daefSMatthias Ringwald  * @param rx_phys
1555ca13daefSMatthias Ringwald  * @param phy_options
1556ca13daefSMatthias Ringwald  */
1557ca13daefSMatthias Ringwald const hci_cmd_t hci_le_set_phy = {
1558ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PHY, "H1111"
1559ca13daefSMatthias Ringwald // LE PHY Update Complete is generated on completion
1560ca13daefSMatthias Ringwald };
1561ca13daefSMatthias Ringwald 
15620c1cf6c6SMatthias Ringwald /**
15630c1cf6c6SMatthias Ringwald  * @param rx_channel
15640c1cf6c6SMatthias Ringwald  * @param phy
15650c1cf6c6SMatthias Ringwald  * @param modulation_index
15660c1cf6c6SMatthias Ringwald  */
15670c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_receiver_test_v2 = {
15680c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_RECEIVER_TEST_V2, "111"
15690c1cf6c6SMatthias Ringwald };
15700c1cf6c6SMatthias Ringwald 
15710c1cf6c6SMatthias Ringwald /**
15720c1cf6c6SMatthias Ringwald  * @param tx_channel
15730c1cf6c6SMatthias Ringwald  * @param test_data_length
15740c1cf6c6SMatthias Ringwald  * @param packet_payload
15750c1cf6c6SMatthias Ringwald  * @param phy
15760c1cf6c6SMatthias Ringwald  */
15770c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test_v2 = {
15780c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_TRANSMITTER_TEST_V2, "1111"
15790c1cf6c6SMatthias Ringwald };
15800c1cf6c6SMatthias Ringwald 
15810c1cf6c6SMatthias Ringwald /**
15820c1cf6c6SMatthias Ringwald  * @param advertising_handle
15830c1cf6c6SMatthias Ringwald  * @param random_address
15840c1cf6c6SMatthias Ringwald  */
15850c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_advertising_set_random_address = {
15860c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_ADVERTISING_SET_RANDOM_ADDRESS, "1B"
15870c1cf6c6SMatthias Ringwald };
15880c1cf6c6SMatthias Ringwald 
15890c1cf6c6SMatthias Ringwald /**
15900c1cf6c6SMatthias Ringwald  * @param advertising_handle
15910c1cf6c6SMatthias Ringwald  * @param advertising_event_properties
15920c1cf6c6SMatthias Ringwald  * @param primary_advertising_interval_min in 0.625 ms, range: 0x000020..0xffffff
15930c1cf6c6SMatthias Ringwald  * @param primary_advertising_interval_max in 0.625 ms, range: 0x000020..0xffffff
15940c1cf6c6SMatthias Ringwald  * @param primary_advertising_channel_map
15950c1cf6c6SMatthias Ringwald  * @param own_address_type
15960c1cf6c6SMatthias Ringwald  * @param peer_address_type
15970c1cf6c6SMatthias Ringwald  * @param peer_address
15980c1cf6c6SMatthias Ringwald  * @param advertising_filter_policy
15990c1cf6c6SMatthias Ringwald  * @param advertising_tx_power in dBm, range: -127..20
16000c1cf6c6SMatthias Ringwald  * @param primary_advertising_phy
16010c1cf6c6SMatthias Ringwald  * @param secondary_advertising_max_skip
16020c1cf6c6SMatthias Ringwald  * @param secondary_advertising_phy
16030c1cf6c6SMatthias Ringwald  * @param advertising_sid
16040c1cf6c6SMatthias Ringwald  * @param scan_request_notification_enable
16050c1cf6c6SMatthias Ringwald  */
16060c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_advertising_parameters = {
16070c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_EXTENDED_ADVERTISING_PARAMETERS, "1233111B1111111"
16080c1cf6c6SMatthias Ringwald };
16090c1cf6c6SMatthias Ringwald 
16100c1cf6c6SMatthias Ringwald /**
16110c1cf6c6SMatthias Ringwald  * @param advertising_handle
16120c1cf6c6SMatthias Ringwald  * @param operation
16130c1cf6c6SMatthias Ringwald  * @param fragment_preference
16140c1cf6c6SMatthias Ringwald  * @param advertising_data_length
16150c1cf6c6SMatthias Ringwald  * @param advertising_data
16160c1cf6c6SMatthias Ringwald  */
16170c1cf6c6SMatthias Ringwald 
16180c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_advertising_data = {
16190c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_EXTENDED_ADVERTISING_DATA, "111JV"
16200c1cf6c6SMatthias Ringwald };
16210c1cf6c6SMatthias Ringwald 
16220c1cf6c6SMatthias Ringwald /**
16230c1cf6c6SMatthias Ringwald  * @param advertising_handle
16240c1cf6c6SMatthias Ringwald  * @param operation
16250c1cf6c6SMatthias Ringwald  * @param fragment_preference
16260c1cf6c6SMatthias Ringwald  * @param scan_response_data_length
16270c1cf6c6SMatthias Ringwald  * @param scan_response_data
16280c1cf6c6SMatthias Ringwald  */
16290c1cf6c6SMatthias Ringwald 
16300c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_scan_response_data = {
16310c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_EXTENDED_SCAN_RESPONSE_DATA, "111JV"
16320c1cf6c6SMatthias Ringwald };
16330c1cf6c6SMatthias Ringwald 
16340c1cf6c6SMatthias Ringwald /**
16350c1cf6c6SMatthias Ringwald  * @param enable
16360c1cf6c6SMatthias Ringwald  * @param num_sets
16370c1cf6c6SMatthias Ringwald  * @param advertising_handle[i]
16380c1cf6c6SMatthias Ringwald  * @param duration[i]
16390c1cf6c6SMatthias Ringwald  * @param max_extended_advertising_events[i]
16400c1cf6c6SMatthias Ringwald  */
16410c1cf6c6SMatthias Ringwald 
16420c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_advertising_enable = {
16430c1cf6c6SMatthias Ringwald         HCI_OPCODE_HCI_LE_SET_EXTENDED_ADVERTISING_ENABLE, "11[121]"
16440c1cf6c6SMatthias Ringwald };
16450c1cf6c6SMatthias Ringwald 
16460c1cf6c6SMatthias Ringwald /**
16470c1cf6c6SMatthias Ringwald  */
16480c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_maximum_advertising_data_length = {
16490c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_MAXIMUM_ADVERTISING_DATA_LENGTH, ""
16500c1cf6c6SMatthias Ringwald };
16510c1cf6c6SMatthias Ringwald 
16520c1cf6c6SMatthias Ringwald /**
16530c1cf6c6SMatthias Ringwald  */
16540c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_number_of_supported_advertising_sets = {
16550c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_NUMBER_OF_SUPPORTED_ADVERTISING_SETS, ""
16560c1cf6c6SMatthias Ringwald };
16570c1cf6c6SMatthias Ringwald 
16580c1cf6c6SMatthias Ringwald /**
16590c1cf6c6SMatthias Ringwald  * @param advertising_handle
16600c1cf6c6SMatthias Ringwald  */
16610c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_advertising_set = {
16620c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOVE_ADVERTISING_SET, "1"
16630c1cf6c6SMatthias Ringwald };
16640c1cf6c6SMatthias Ringwald 
16650c1cf6c6SMatthias Ringwald /**
16660c1cf6c6SMatthias Ringwald  */
16670c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_clear_advertising_sets = {
16680c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_CLEAR_ADVERTISING_SETS, ""
16690c1cf6c6SMatthias Ringwald };
16700c1cf6c6SMatthias Ringwald 
16710c1cf6c6SMatthias Ringwald /**
16720c1cf6c6SMatthias Ringwald  * @param advertising_handle
16730c1cf6c6SMatthias Ringwald  * @param periodic_advertising_interval_min * 1.25 ms, range 0x0006..0xffff
16740c1cf6c6SMatthias Ringwald  * @param periodic_advertising_interval_max * 1.25 ms, range 0x0006..0xffff
16750c1cf6c6SMatthias Ringwald  * @param periodic_advertising_properties
16760c1cf6c6SMatthias Ringwald  */
16770c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_parameters = {
16780c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_PARAMETERS, "1222"
16790c1cf6c6SMatthias Ringwald };
16800c1cf6c6SMatthias Ringwald 
16810c1cf6c6SMatthias Ringwald /**
16820c1cf6c6SMatthias Ringwald  * @param advertising_handle
16830c1cf6c6SMatthias Ringwald  * @param operation
16840c1cf6c6SMatthias Ringwald  * @param advertising_data_length
16850c1cf6c6SMatthias Ringwald  * @param advertising_data
16860c1cf6c6SMatthias Ringwald  */
16870c1cf6c6SMatthias Ringwald 
16880c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_data = {
16890c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_DATA, "11JV"
16900c1cf6c6SMatthias Ringwald };
16910c1cf6c6SMatthias Ringwald 
16920c1cf6c6SMatthias Ringwald /**
16930c1cf6c6SMatthias Ringwald  * @param enable
16940c1cf6c6SMatthias Ringwald  * @param advertising_handle
16950c1cf6c6SMatthias Ringwald  */
16960c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_enable = {
16970c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_ENABLE, "11"
16980c1cf6c6SMatthias Ringwald };
16990c1cf6c6SMatthias Ringwald 
17000c1cf6c6SMatthias Ringwald /**
17010c1cf6c6SMatthias Ringwald  * @param own_address_type
17020c1cf6c6SMatthias Ringwald  * @param scanning_filter_policy
17030c1cf6c6SMatthias Ringwald  * @param scanning_phys 0 = LE 1M PHY | 2 = LE Coded PHY
17040c1cf6c6SMatthias Ringwald  * @param scan_type
17050c1cf6c6SMatthias Ringwald  * @param scan_interval * 0.625, range = 0x0004..0xffff
17060c1cf6c6SMatthias Ringwald  * @param scan_window * 0.625, range = 0x0004..0xffff
17070c1cf6c6SMatthias Ringwald  */
17080c1cf6c6SMatthias Ringwald 
17090c1cf6c6SMatthias Ringwald // Variants for 1 (1M or Coded) PHY
17100c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_scan_parameters_1 = {
17110c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_EXTENDED_SCAN_PARAMETERS, "111122"
17120c1cf6c6SMatthias Ringwald };
17130c1cf6c6SMatthias Ringwald 
17140c1cf6c6SMatthias Ringwald // Variants for 2 (1M and Coded) PHY
17150c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_scan_parameters_2 = {
17160c1cf6c6SMatthias Ringwald         HCI_OPCODE_HCI_LE_SET_EXTENDED_SCAN_PARAMETERS, "111122122"
17170c1cf6c6SMatthias Ringwald };
17180c1cf6c6SMatthias Ringwald 
17190c1cf6c6SMatthias Ringwald /**
17200c1cf6c6SMatthias Ringwald  * @param enable
17210c1cf6c6SMatthias Ringwald  * @param filter_duplicates
17220c1cf6c6SMatthias Ringwald  * @param duration 0 = Scan continuously until explicitly disable, 10 ms
17230c1cf6c6SMatthias Ringwald  * @param period 0 = Scan continuously, 1.28 s
17240c1cf6c6SMatthias Ringwald  */
17250c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_scan_enable = {
17260c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_EXTENDED_SCAN_ENABLE, "1122"
17270c1cf6c6SMatthias Ringwald };
17280c1cf6c6SMatthias Ringwald 
17290c1cf6c6SMatthias Ringwald /**
17300c1cf6c6SMatthias Ringwald  * @param initiator_filter_policy
17310c1cf6c6SMatthias Ringwald  * @param own_address_type
17320c1cf6c6SMatthias Ringwald  * @param peer_address_type
17330c1cf6c6SMatthias Ringwald  * @param peer_address
17340c1cf6c6SMatthias Ringwald  * @param initiating_phys with bit 0 = LE 1M PHY, bit 1 = LE 2M PHY, bit 2 = Coded PHY
17350c1cf6c6SMatthias Ringwald  * @param scan_interval[i] * 0.625 ms
17360c1cf6c6SMatthias Ringwald  * @param scan_window[i] * 0.625 ms
17370c1cf6c6SMatthias Ringwald  * @param connection_interval_min[i] * 1.25 ms
17380c1cf6c6SMatthias Ringwald  * @param connection_interval_max[i] * 1.25 ms
17390c1cf6c6SMatthias Ringwald  * @param connection_latency[i]
17400c1cf6c6SMatthias Ringwald  * @param supervision_timeout[i] * 10 ms
17410c1cf6c6SMatthias Ringwald  * @param min_ce_length[i] * 0.625 ms
17420c1cf6c6SMatthias Ringwald  * @param max_ce_length[i] * 0.625 ms
17430c1cf6c6SMatthias Ringwald  */
17440c1cf6c6SMatthias Ringwald 
17450c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_extended_create_connection = {
17460c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_EXTENDED_CREATE_CONNECTION, "111Bb[22222222]"
17470c1cf6c6SMatthias Ringwald };
17480c1cf6c6SMatthias Ringwald 
17490c1cf6c6SMatthias Ringwald /**
17500c1cf6c6SMatthias Ringwald  * @param options
17510c1cf6c6SMatthias Ringwald  * @param advertising_sid
17520c1cf6c6SMatthias Ringwald  * @param advertiser_address_type
17530c1cf6c6SMatthias Ringwald  * @param advertiser_address
17540c1cf6c6SMatthias Ringwald  * @param skip
17550c1cf6c6SMatthias Ringwald  * @param sync_timeout * 10 ms
17560c1cf6c6SMatthias Ringwald  * @param sync_cte_type
17570c1cf6c6SMatthias Ringwald  */
17580c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_create_sync = {
17590c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_CREATE_SYNC, "111B221"
17600c1cf6c6SMatthias Ringwald };
17610c1cf6c6SMatthias Ringwald 
17620c1cf6c6SMatthias Ringwald /**
17630c1cf6c6SMatthias Ringwald  */
17640c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_create_sync_cancel = {
17650c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_CREATE_SYNC_CANCEL, ""
17660c1cf6c6SMatthias Ringwald };
17670c1cf6c6SMatthias Ringwald 
17680c1cf6c6SMatthias Ringwald /**
17690c1cf6c6SMatthias Ringwald  * @param sync_handle
17700c1cf6c6SMatthias Ringwald  */
17710c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_terminate_sync = {
17720c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_TERMINATE_SYNC, ""
17730c1cf6c6SMatthias Ringwald };
17740c1cf6c6SMatthias Ringwald 
17750c1cf6c6SMatthias Ringwald /**
17760c1cf6c6SMatthias Ringwald  * @param advertiser_address_type
17770c1cf6c6SMatthias Ringwald  * @param advertiser_address
17780c1cf6c6SMatthias Ringwald  * @param advertising_sid
17790c1cf6c6SMatthias Ringwald  */
17800c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_add_device_to_periodic_advertiser_list = {
17810c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_ADD_DEVICE_TO_PERIODIC_ADVERTISER_LIST, "1B1"
17820c1cf6c6SMatthias Ringwald };
17830c1cf6c6SMatthias Ringwald 
17840c1cf6c6SMatthias Ringwald /**
17850c1cf6c6SMatthias Ringwald  * @param advertiser_address_type
17860c1cf6c6SMatthias Ringwald  * @param advertiser_address
17870c1cf6c6SMatthias Ringwald  * @param advertising_sid
17880c1cf6c6SMatthias Ringwald  */
17890c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_device_from_periodic_advertiser_list = {
17900c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISER_LIST, "1B1"
17910c1cf6c6SMatthias Ringwald };
17920c1cf6c6SMatthias Ringwald 
17930c1cf6c6SMatthias Ringwald /**
17940c1cf6c6SMatthias Ringwald  */
17950c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_clear_periodic_advertiser_list = {
17960c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_CLEAR_PERIODIC_ADVERTISER_LIST, ""
17970c1cf6c6SMatthias Ringwald };
17980c1cf6c6SMatthias Ringwald 
17990c1cf6c6SMatthias Ringwald /**
18000c1cf6c6SMatthias Ringwald  */
18010c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_periodic_advertiser_list_size = {
18020c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_PERIODIC_ADVERTISER_LIST_SIZE, ""
18030c1cf6c6SMatthias Ringwald };
18040c1cf6c6SMatthias Ringwald 
18050c1cf6c6SMatthias Ringwald /**
18060c1cf6c6SMatthias Ringwald  */
18070c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_transmit_power = {
18080c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_TRANSMIT_POWER, ""
18090c1cf6c6SMatthias Ringwald };
18100c1cf6c6SMatthias Ringwald 
18110c1cf6c6SMatthias Ringwald /**
18120c1cf6c6SMatthias Ringwald  */
18130c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_rf_path_compensation = {
18140c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_RF_PATH_COMPENSATION, ""
18150c1cf6c6SMatthias Ringwald };
18160c1cf6c6SMatthias Ringwald 
18170c1cf6c6SMatthias Ringwald /**
18180c1cf6c6SMatthias Ringwald  * @param rf_tx_path_compensation_value * 0.1 dB, signed
18190c1cf6c6SMatthias Ringwald  * @param rf_rx_path_compensation_value * 0.1 dB, signed
18200c1cf6c6SMatthias Ringwald  */
18210c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_write_rf_path_compensation = {
18220c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_WRITE_RF_PATH_COMPENSATION, "22"
18230c1cf6c6SMatthias Ringwald };
18240c1cf6c6SMatthias Ringwald 
18250c1cf6c6SMatthias Ringwald /**
18260c1cf6c6SMatthias Ringwald  * @param peer_identity_address_type
18270c1cf6c6SMatthias Ringwald  * @param peer_identity_address
18280c1cf6c6SMatthias Ringwald  * @param privacy_mode
18290c1cf6c6SMatthias Ringwald  */
18300c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_privacy_mode = {
18310c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PRIVACY_MODE, "1B1"
18320c1cf6c6SMatthias Ringwald };
18330c1cf6c6SMatthias Ringwald 
18340c1cf6c6SMatthias Ringwald /**
18350c1cf6c6SMatthias Ringwald  * @param rx_channel
18360c1cf6c6SMatthias Ringwald  * @param phy
18370c1cf6c6SMatthias Ringwald  * @param modulation_index
18380c1cf6c6SMatthias Ringwald  * @param expected_cte_length
18390c1cf6c6SMatthias Ringwald  * @param expected_cte_type
18400c1cf6c6SMatthias Ringwald  * @param slot_durations
18410c1cf6c6SMatthias Ringwald  * @param switching_pattern_length
18420c1cf6c6SMatthias Ringwald  * @param antenna_ids[i]
18430c1cf6c6SMatthias Ringwald  */
18440c1cf6c6SMatthias Ringwald 
18450c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_receiver_test_v3 = {
18460c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_RECEIVER_TEST_V3, "111111a[1]"
18470c1cf6c6SMatthias Ringwald };
18480c1cf6c6SMatthias Ringwald 
18490c1cf6c6SMatthias Ringwald /**
18500c1cf6c6SMatthias Ringwald  * @param tx_channel
18510c1cf6c6SMatthias Ringwald  * @param test_data_length
18520c1cf6c6SMatthias Ringwald  * @param packet_payload
18530c1cf6c6SMatthias Ringwald  * @param phy
18540c1cf6c6SMatthias Ringwald  * @param cte_length
18550c1cf6c6SMatthias Ringwald  * @param cte_type
18560c1cf6c6SMatthias Ringwald  * @param switching_pattern_length
18570c1cf6c6SMatthias Ringwald  * @param antenna_ids[i]
18580c1cf6c6SMatthias Ringwald  */
18590c1cf6c6SMatthias Ringwald 
18600c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test_v3 = {
18610c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_TRANSMITTER_TEST_V3, "111111a[1]"
18620c1cf6c6SMatthias Ringwald };
18630c1cf6c6SMatthias Ringwald 
18640c1cf6c6SMatthias Ringwald /**
18650c1cf6c6SMatthias Ringwald  * @param advertising_handle
18660c1cf6c6SMatthias Ringwald  * @param cte_length
18670c1cf6c6SMatthias Ringwald  * @param cte_type
18680c1cf6c6SMatthias Ringwald  * @param cte_count
18690c1cf6c6SMatthias Ringwald  * @param switching_pattern_length
18700c1cf6c6SMatthias Ringwald  * @param antenna_ids[i]
18710c1cf6c6SMatthias Ringwald  */
18720c1cf6c6SMatthias Ringwald 
18730c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connectionless_cte_transmit_parameters = {
18740c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_CONNECTIONLESS_CTE_TRANSMIT_PARAMETERS, "1111a[1]"
18750c1cf6c6SMatthias Ringwald };
18760c1cf6c6SMatthias Ringwald 
18770c1cf6c6SMatthias Ringwald /**
18780c1cf6c6SMatthias Ringwald  * @param advertising_handle
18790c1cf6c6SMatthias Ringwald  * @param cte_enable
18800c1cf6c6SMatthias Ringwald  */
18810c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connectionless_cte_transmit_enable = {
18820c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_CONNECTIONLESS_CTE_TRANSMIT_ENABLE, "11"
18830c1cf6c6SMatthias Ringwald };
18840c1cf6c6SMatthias Ringwald 
18850c1cf6c6SMatthias Ringwald /**
18860c1cf6c6SMatthias Ringwald  * @param sync_handle
18870c1cf6c6SMatthias Ringwald  * @param sampling_enable
18880c1cf6c6SMatthias Ringwald  * @param slot_durations
18890c1cf6c6SMatthias Ringwald  * @param max_sampled_ctes
18900c1cf6c6SMatthias Ringwald  * @param switching_pattern_length
18910c1cf6c6SMatthias Ringwald  * @param antenna_ids[i]
18920c1cf6c6SMatthias Ringwald  */
18930c1cf6c6SMatthias Ringwald 
18940c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connectionless_iq_sampling_enable = {
18950c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_CONNECTIONLESS_IQ_SAMPLING_ENABLE, "2111a[i]"
18960c1cf6c6SMatthias Ringwald };
18970c1cf6c6SMatthias Ringwald 
18980c1cf6c6SMatthias Ringwald /**
18990c1cf6c6SMatthias Ringwald  * @param connection_handle
19000c1cf6c6SMatthias Ringwald  * @param sampling_enable
19010c1cf6c6SMatthias Ringwald  * @param slot_durations
19020c1cf6c6SMatthias Ringwald  * @param switching_pattern_length
19030c1cf6c6SMatthias Ringwald  * @param antenna_ids[i]
19040c1cf6c6SMatthias Ringwald  */
19050c1cf6c6SMatthias Ringwald 
19060c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connection_cte_receive_parameters = {
19070c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_CONNECTION_CTE_RECEIVE_PARAMETERS, "211a[1]"
19080c1cf6c6SMatthias Ringwald };
19090c1cf6c6SMatthias Ringwald 
19100c1cf6c6SMatthias Ringwald /**
19110c1cf6c6SMatthias Ringwald  * @param connection_handle
19120c1cf6c6SMatthias Ringwald  * @param cte_types
19130c1cf6c6SMatthias Ringwald  * @param switching_pattern_length
19140c1cf6c6SMatthias Ringwald  * @param antenna_ids[i]
19150c1cf6c6SMatthias Ringwald  */
19160c1cf6c6SMatthias Ringwald 
19170c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connection_cte_transmit_parameters = {
19180c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_CONNECTION_CTE_TRANSMIT_PARAMETERS, "21a[1]"
19190c1cf6c6SMatthias Ringwald };
19200c1cf6c6SMatthias Ringwald 
19210c1cf6c6SMatthias Ringwald /**
19220c1cf6c6SMatthias Ringwald  * @param connection_handle
19230c1cf6c6SMatthias Ringwald  * @param enable
19240c1cf6c6SMatthias Ringwald  * @param cte_request_interval
19250c1cf6c6SMatthias Ringwald  * @param requested_cte_length
19260c1cf6c6SMatthias Ringwald  * @param requested_cte_type
19270c1cf6c6SMatthias Ringwald  */
19280c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_connection_cte_request_enable = {
19290c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_CONNECTION_CTE_REQUEST_ENABLE, "H1211"
19300c1cf6c6SMatthias Ringwald };
19310c1cf6c6SMatthias Ringwald 
19320c1cf6c6SMatthias Ringwald /**
19330c1cf6c6SMatthias Ringwald  * @param connection_handle
19340c1cf6c6SMatthias Ringwald  * @param enable
19350c1cf6c6SMatthias Ringwald  */
19360c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_connection_cte_response_enable = {
19370c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_CONNECTION_CTE_RESPONSE_ENABLE, "H1"
19380c1cf6c6SMatthias Ringwald };
19390c1cf6c6SMatthias Ringwald 
19400c1cf6c6SMatthias Ringwald /**
19410c1cf6c6SMatthias Ringwald  */
19420c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_antenna_information = {
19430c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_ANTENNA_INFORMATION, ""
19440c1cf6c6SMatthias Ringwald };
19450c1cf6c6SMatthias Ringwald 
19460c1cf6c6SMatthias Ringwald /**
19470c1cf6c6SMatthias Ringwald  * @param sync_handle
19480c1cf6c6SMatthias Ringwald  * @param enable
19490c1cf6c6SMatthias Ringwald  */
19500c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_receive_enable = {
19510c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_RECEIVE_ENABLE, "H1"
19520c1cf6c6SMatthias Ringwald };
19530c1cf6c6SMatthias Ringwald 
19540c1cf6c6SMatthias Ringwald /**
19550c1cf6c6SMatthias Ringwald  * @param connection_handle
19560c1cf6c6SMatthias Ringwald  * @param service_data
19570c1cf6c6SMatthias Ringwald  * @param sync_handle
19580c1cf6c6SMatthias Ringwald  */
19590c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_sync_transfer = {
19600c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_SYNC_TRANSFER, "H22"
19610c1cf6c6SMatthias Ringwald };
19620c1cf6c6SMatthias Ringwald 
19630c1cf6c6SMatthias Ringwald /**
19640c1cf6c6SMatthias Ringwald  * @param connection_handle
19650c1cf6c6SMatthias Ringwald  * @param service_data
19660c1cf6c6SMatthias Ringwald  * @param advertising_handle
19670c1cf6c6SMatthias Ringwald  */
19680c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_set_info_transfer = {
19690c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_SET_INFO_TRANSFER, "H21"
19700c1cf6c6SMatthias Ringwald };
19710c1cf6c6SMatthias Ringwald 
19720c1cf6c6SMatthias Ringwald /**
19730c1cf6c6SMatthias Ringwald  * @param connection_handle
19740c1cf6c6SMatthias Ringwald  * @param mode
19750c1cf6c6SMatthias Ringwald  * @param skip
19760c1cf6c6SMatthias Ringwald  * @param sync_timeout
19770c1cf6c6SMatthias Ringwald  * @param cte_type
19780c1cf6c6SMatthias Ringwald  */
19790c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_sync_transfer_parameters = {
19800c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_SYNC_TRANSFER_PARAMETERS, "H1221"
19810c1cf6c6SMatthias Ringwald };
19820c1cf6c6SMatthias Ringwald 
19830c1cf6c6SMatthias Ringwald /**
19840c1cf6c6SMatthias Ringwald  * @param mode
19850c1cf6c6SMatthias Ringwald  * @param skip
19860c1cf6c6SMatthias Ringwald  * @param sync_timeout
19870c1cf6c6SMatthias Ringwald  * @param cte_type
19880c1cf6c6SMatthias Ringwald  */
19890c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_default_periodic_advertising_sync_transfer_parameters = {
19900c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_DEFAULT_PERIODIC_ADVERTISING_SYNC_TRANSFER_PARAMETERS, "1221"
19910c1cf6c6SMatthias Ringwald };
19920c1cf6c6SMatthias Ringwald 
19930c1cf6c6SMatthias Ringwald /**
19940c1cf6c6SMatthias Ringwald  * @param 256Remote_P-256_public_key_x
19950c1cf6c6SMatthias Ringwald  * @param 256Remote_P-256_public_key_y
19960c1cf6c6SMatthias Ringwald  * @param key_type
19970c1cf6c6SMatthias Ringwald  */
19980c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_generate_dhkey_v2 = {
19990c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_GENERATE_DHKEY_V2, "QQ1"
20000c1cf6c6SMatthias Ringwald };
20010c1cf6c6SMatthias Ringwald 
20020c1cf6c6SMatthias Ringwald /**
20030c1cf6c6SMatthias Ringwald  * @param action
20040c1cf6c6SMatthias Ringwald  */
20050c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_modify_sleep_clock_accuracy = {
20060c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_MODIFY_SLEEP_CLOCK_ACCURACY, "1"
20070c1cf6c6SMatthias Ringwald };
20080c1cf6c6SMatthias Ringwald 
20090c1cf6c6SMatthias Ringwald /**
20100c1cf6c6SMatthias Ringwald  */
20110c1cf6c6SMatthias Ringwald const hci_cmd_t hci_opcode_hci_le_read_buffer_size_v2 = {
20120c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_OPCODE_HCI_LE_READ_BUFFER_SIZE_V2, ""
20130c1cf6c6SMatthias Ringwald };
20140c1cf6c6SMatthias Ringwald 
20150c1cf6c6SMatthias Ringwald /**
20160c1cf6c6SMatthias Ringwald  * @param connection_handle
20170c1cf6c6SMatthias Ringwald  */
20180c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_iso_tx_sync = {
20190c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_ISO_TX_SYNC, "H"
20200c1cf6c6SMatthias Ringwald };
20210c1cf6c6SMatthias Ringwald 
20220c1cf6c6SMatthias Ringwald /**
20230c1cf6c6SMatthias Ringwald  * @param cig_id
20240c1cf6c6SMatthias Ringwald  * @param sdu_interval_m_to_s
20250c1cf6c6SMatthias Ringwald  * @param sdu_interval_s_to_m
20260c1cf6c6SMatthias Ringwald  * @param slaves_clock_accuracy
20270c1cf6c6SMatthias Ringwald  * @param packing
20280c1cf6c6SMatthias Ringwald  * @param framing
20290c1cf6c6SMatthias Ringwald  * @param max_transport_latency_m_to_s
20300c1cf6c6SMatthias Ringwald  * @param max_transport_latency_s_to_m
20310c1cf6c6SMatthias Ringwald  * @param cis_count
20320c1cf6c6SMatthias Ringwald  * @param cis_id[i]
20330c1cf6c6SMatthias Ringwald  * @param max_sdu_m_to_s[i]
20340c1cf6c6SMatthias Ringwald  * @param max_sdu_s_to_m[i]
20350c1cf6c6SMatthias Ringwald  * @param phy_m_to_s[i]
20360c1cf6c6SMatthias Ringwald  * @param phy_s_to_m[i]
20370c1cf6c6SMatthias Ringwald  * @param rtn_m_to_s[i]
20380c1cf6c6SMatthias Ringwald  * @param rtn_s_to_m[i]
20390c1cf6c6SMatthias Ringwald  */
20400c1cf6c6SMatthias Ringwald 
20410c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_cig_parameters = {
20420c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_CIG_PARAMETERS, "13311122a[1221111]"
20430c1cf6c6SMatthias Ringwald };
20440c1cf6c6SMatthias Ringwald 
20450c1cf6c6SMatthias Ringwald /**
20460c1cf6c6SMatthias Ringwald  * @param cig_id
20470c1cf6c6SMatthias Ringwald  * @param sdu_interval_m_to_s
20480c1cf6c6SMatthias Ringwald  * @param sdu_interval_s_to_m
20490c1cf6c6SMatthias Ringwald  * @param ft_m_to_s
20500c1cf6c6SMatthias Ringwald  * @param ft_s_to_m
20510c1cf6c6SMatthias Ringwald  * @param iso_interval
20520c1cf6c6SMatthias Ringwald  * @param slaves_clock_accuracy
20530c1cf6c6SMatthias Ringwald  * @param packing
20540c1cf6c6SMatthias Ringwald  * @param framing
20550c1cf6c6SMatthias Ringwald  * @param max_transport_latency_m_to_s
20560c1cf6c6SMatthias Ringwald  * @param max_transport_latency_s_to_m
20570c1cf6c6SMatthias Ringwald  * @param cis_count
20580c1cf6c6SMatthias Ringwald  * @param cis_id[i]
20590c1cf6c6SMatthias Ringwald  * @param nse[i]
20600c1cf6c6SMatthias Ringwald  * @param max_sdu_m_to_s[i]
20610c1cf6c6SMatthias Ringwald  * @param max_sdu_s_to_m[i]
20620c1cf6c6SMatthias Ringwald  * @param max_pdu_m_to_s[i]
20630c1cf6c6SMatthias Ringwald  * @param max_pdu_s_to_m[i]
20640c1cf6c6SMatthias Ringwald  * @param phy_m_to_s[i]
20650c1cf6c6SMatthias Ringwald  * @param phy_s_to_m[i]
20660c1cf6c6SMatthias Ringwald  * @param bn_m_to_s[i]
20670c1cf6c6SMatthias Ringwald  * @param bn_s_to_m[i]
20680c1cf6c6SMatthias Ringwald  */
20690c1cf6c6SMatthias Ringwald 
20700c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_cig_parameters_test = {
20710c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_CIG_PARAMETERS_TEST, "133112111a[1122221111]"
20720c1cf6c6SMatthias Ringwald };
20730c1cf6c6SMatthias Ringwald 
20740c1cf6c6SMatthias Ringwald /**
20750c1cf6c6SMatthias Ringwald  * @param cis_count
20760c1cf6c6SMatthias Ringwald  * @param cis_connection_handle[i]
20770c1cf6c6SMatthias Ringwald  * @param acl_connection_handle[i]
20780c1cf6c6SMatthias Ringwald  */
20790c1cf6c6SMatthias Ringwald 
20800c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_create_cis = {
20810c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_CREATE_CIS, "a[22]"
20820c1cf6c6SMatthias Ringwald };
20830c1cf6c6SMatthias Ringwald 
20840c1cf6c6SMatthias Ringwald /**
20850c1cf6c6SMatthias Ringwald  * @param cig_id
20860c1cf6c6SMatthias Ringwald  */
20870c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_cig = {
20880c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOVE_CIG, "1"
20890c1cf6c6SMatthias Ringwald };
20900c1cf6c6SMatthias Ringwald 
20910c1cf6c6SMatthias Ringwald /**
20920c1cf6c6SMatthias Ringwald  * @param connection_handle
20930c1cf6c6SMatthias Ringwald  */
20940c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_accept_cis_request = {
20950c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_ACCEPT_CIS_REQUEST, "H"
20960c1cf6c6SMatthias Ringwald };
20970c1cf6c6SMatthias Ringwald 
20980c1cf6c6SMatthias Ringwald /**
20990c1cf6c6SMatthias Ringwald  * @param connection_handle
21000c1cf6c6SMatthias Ringwald  */
21010c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_reject_cis_request = {
21020c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_REJECT_CIS_REQUEST, "H"
21030c1cf6c6SMatthias Ringwald };
21040c1cf6c6SMatthias Ringwald 
21050c1cf6c6SMatthias Ringwald /**
21060c1cf6c6SMatthias Ringwald  * @param big_handle
21070c1cf6c6SMatthias Ringwald  * @param advertising_handle
21080c1cf6c6SMatthias Ringwald  * @param num_bis
21090c1cf6c6SMatthias Ringwald  * @param sdu_interval
21100c1cf6c6SMatthias Ringwald  * @param max_sdu
21110c1cf6c6SMatthias Ringwald  * @param max_transport_latency
21120c1cf6c6SMatthias Ringwald  * @param rtn
21130c1cf6c6SMatthias Ringwald  * @param phy
21140c1cf6c6SMatthias Ringwald  * @param packing
21150c1cf6c6SMatthias Ringwald  * @param framing
21160c1cf6c6SMatthias Ringwald  * @param encryption
21170c1cf6c6SMatthias Ringwald  * @param broadcast_code
21180c1cf6c6SMatthias Ringwald  */
21190c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_create_big = {
21200c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_CREATE_BIG, "11132211111P"
21210c1cf6c6SMatthias Ringwald };
21220c1cf6c6SMatthias Ringwald 
21230c1cf6c6SMatthias Ringwald /**
21240c1cf6c6SMatthias Ringwald  * @param big_handle
21250c1cf6c6SMatthias Ringwald  * @param advertising_handle
21260c1cf6c6SMatthias Ringwald  * @param num_bis
21270c1cf6c6SMatthias Ringwald  * @param sdu_interval
21280c1cf6c6SMatthias Ringwald  * @param iso_interval
21290c1cf6c6SMatthias Ringwald  * @param nse
21300c1cf6c6SMatthias Ringwald  * @param max_sdu
21310c1cf6c6SMatthias Ringwald  * @param max_PDU
21320c1cf6c6SMatthias Ringwald  * @param phy
21330c1cf6c6SMatthias Ringwald  * @param packing
21340c1cf6c6SMatthias Ringwald  * @param framing
21350c1cf6c6SMatthias Ringwald  * @param bn
21360c1cf6c6SMatthias Ringwald  * @param irc
21370c1cf6c6SMatthias Ringwald  * @param pto
21380c1cf6c6SMatthias Ringwald  * @param encryption
21390c1cf6c6SMatthias Ringwald  * @param broadcast_code
21400c1cf6c6SMatthias Ringwald  */
21410c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_create_big_test = {
21420c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_CREATE_BIG_TEST, "111321221111111P"
21430c1cf6c6SMatthias Ringwald };
21440c1cf6c6SMatthias Ringwald 
21450c1cf6c6SMatthias Ringwald /**
21460c1cf6c6SMatthias Ringwald  * @param big_handle
21470c1cf6c6SMatthias Ringwald  * @param reason
21480c1cf6c6SMatthias Ringwald  */
21490c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_terminate_big = {
21500c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_TERMINATE_BIG, "11"
21510c1cf6c6SMatthias Ringwald };
21520c1cf6c6SMatthias Ringwald 
21530c1cf6c6SMatthias Ringwald /**
21540c1cf6c6SMatthias Ringwald  * @param big_handle
21550c1cf6c6SMatthias Ringwald  * @param sync_handle
21560c1cf6c6SMatthias Ringwald  * @param encryption
21570c1cf6c6SMatthias Ringwald  * @param broadcast_code
21580c1cf6c6SMatthias Ringwald  * @param mse
21590c1cf6c6SMatthias Ringwald  * @param big_sync_timeout
21600c1cf6c6SMatthias Ringwald  * @param num_bis
21610c1cf6c6SMatthias Ringwald  * @param bis[i]
21620c1cf6c6SMatthias Ringwald  */
21630c1cf6c6SMatthias Ringwald 
21640c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_big_create_sync = {
21650c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_BIG_CREATE_SYNC, "1H1P12a[1]"
21660c1cf6c6SMatthias Ringwald };
21670c1cf6c6SMatthias Ringwald 
21680c1cf6c6SMatthias Ringwald /**
21690c1cf6c6SMatthias Ringwald  * @param big_handle
21700c1cf6c6SMatthias Ringwald  */
21710c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_big_terminate_sync = {
21720c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_BIG_TERMINATE_SYNC, ""
21730c1cf6c6SMatthias Ringwald };
21740c1cf6c6SMatthias Ringwald 
21750c1cf6c6SMatthias Ringwald /**
21760c1cf6c6SMatthias Ringwald  * @param connection_handle
21770c1cf6c6SMatthias Ringwald  */
21780c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_request_peer_sca = {
21790c1cf6c6SMatthias Ringwald         HCI_OPCODE_HCI_LE_REQUEST_PEER_SCA, "H"
21800c1cf6c6SMatthias Ringwald };
21810c1cf6c6SMatthias Ringwald 
21820c1cf6c6SMatthias Ringwald /**
21830c1cf6c6SMatthias Ringwald  * @param connection_handle
21840c1cf6c6SMatthias Ringwald  * @param data_path_direction
21850c1cf6c6SMatthias Ringwald  * @param data_path_id
21860c1cf6c6SMatthias Ringwald  * @param codec_id_coding_format
21870c1cf6c6SMatthias Ringwald  * @param codec_id_company_identifier (Shall be ignored if codec_id_coding_format is not 0xFF)
21880c1cf6c6SMatthias Ringwald  * @param codec_id_vendor_codec_id (Shall be ignored if codec_id_coding_format is not 0xFF)
21890c1cf6c6SMatthias Ringwald  * @param controller_delay
21900c1cf6c6SMatthias Ringwald  * @param codec_configuration_length
21910c1cf6c6SMatthias Ringwald  * @param codec_configuration
21920c1cf6c6SMatthias Ringwald  */
21930c1cf6c6SMatthias Ringwald 
21940c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_setup_iso_data_path = {
21950c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SETUP_ISO_DATA_PATH, "H111223JV"
21960c1cf6c6SMatthias Ringwald };
21970c1cf6c6SMatthias Ringwald 
21980c1cf6c6SMatthias Ringwald /**
21990c1cf6c6SMatthias Ringwald  * @param connection_handle
22000c1cf6c6SMatthias Ringwald  */
22010c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_iso_data_path = {
22020c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_REMOVE_ISO_DATA_PATH, "H1"
22030c1cf6c6SMatthias Ringwald };
22040c1cf6c6SMatthias Ringwald 
22050c1cf6c6SMatthias Ringwald /**
22060c1cf6c6SMatthias Ringwald  * @param connection_handle
22070c1cf6c6SMatthias Ringwald  * @param paylaod_type
22080c1cf6c6SMatthias Ringwald  */
22090c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_transmit_test = {
22100c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_ISO_TRANSMIT_TEST, "H1"
22110c1cf6c6SMatthias Ringwald };
22120c1cf6c6SMatthias Ringwald 
22130c1cf6c6SMatthias Ringwald /**
22140c1cf6c6SMatthias Ringwald  * @param connection_handle
22150c1cf6c6SMatthias Ringwald  * @param paylaod_type
22160c1cf6c6SMatthias Ringwald  */
22170c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_receive_test = {
22180c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_ISO_RECEIVE_TEST, "H1"
22190c1cf6c6SMatthias Ringwald };
22200c1cf6c6SMatthias Ringwald 
22210c1cf6c6SMatthias Ringwald /**
22220c1cf6c6SMatthias Ringwald  * @param connection_handle
22230c1cf6c6SMatthias Ringwald  */
22240c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_read_test_counters = {
22250c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_ISO_READ_TEST_COUNTERS, "H"
22260c1cf6c6SMatthias Ringwald };
22270c1cf6c6SMatthias Ringwald 
22280c1cf6c6SMatthias Ringwald /**
22290c1cf6c6SMatthias Ringwald  * @param connection_handle
22300c1cf6c6SMatthias Ringwald  */
22310c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_test_end = {
22320c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_ISO_TEST_END, "H"
22330c1cf6c6SMatthias Ringwald };
22340c1cf6c6SMatthias Ringwald 
22350c1cf6c6SMatthias Ringwald /**
22360c1cf6c6SMatthias Ringwald  * @param bit_number
22370c1cf6c6SMatthias Ringwald  * @param bit_value
22380c1cf6c6SMatthias Ringwald  */
22390c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_host_feature = {
22400c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_HOST_FEATURE, "11"
22410c1cf6c6SMatthias Ringwald };
22420c1cf6c6SMatthias Ringwald 
22430c1cf6c6SMatthias Ringwald /**
22440c1cf6c6SMatthias Ringwald  * @param connection_handle
22450c1cf6c6SMatthias Ringwald  */
22460c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_iso_link_quality = {
22470c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_ISO_LINK_QUALITY, "H"
22480c1cf6c6SMatthias Ringwald };
22490c1cf6c6SMatthias Ringwald 
22500c1cf6c6SMatthias Ringwald /**
22510c1cf6c6SMatthias Ringwald  * @param connection_handle
22520c1cf6c6SMatthias Ringwald  * @param phy
22530c1cf6c6SMatthias Ringwald  */
22540c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_enhanced_read_transmit_power_level = {
22550c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_ENHANCED_READ_TRANSMIT_POWER_LEVEL, "H1"
22560c1cf6c6SMatthias Ringwald };
22570c1cf6c6SMatthias Ringwald 
22580c1cf6c6SMatthias Ringwald /**
22590c1cf6c6SMatthias Ringwald  * @param connection_handle
22600c1cf6c6SMatthias Ringwald  * @param phy
22610c1cf6c6SMatthias Ringwald  */
22620c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_remote_transmit_power_level = {
22630c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_READ_REMOTE_TRANSMIT_POWER_LEVEL, "H1"
22640c1cf6c6SMatthias Ringwald };
22650c1cf6c6SMatthias Ringwald 
22660c1cf6c6SMatthias Ringwald /**
22670c1cf6c6SMatthias Ringwald  * @param connection_handle
22680c1cf6c6SMatthias Ringwald  * @param high_threshold
22690c1cf6c6SMatthias Ringwald  * @param high_hysteresis
22700c1cf6c6SMatthias Ringwald  * @param low_threshold
22710c1cf6c6SMatthias Ringwald  * @param low_hysteresis
22720c1cf6c6SMatthias Ringwald  * @param min_time_spent
22730c1cf6c6SMatthias Ringwald  */
22740c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_path_loss_reporting_parameters = {
22750c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PATH_LOSS_REPORTING_PARAMETERS, "211112"
22760c1cf6c6SMatthias Ringwald };
22770c1cf6c6SMatthias Ringwald 
22780c1cf6c6SMatthias Ringwald /**
22790c1cf6c6SMatthias Ringwald  * @param connection_handle
22800c1cf6c6SMatthias Ringwald  * @param enable
22810c1cf6c6SMatthias Ringwald  */
22820c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_path_loss_reporting_enable = {
22830c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_PATH_LOSS_REPORTING_ENABLE, "H1"
22840c1cf6c6SMatthias Ringwald };
22850c1cf6c6SMatthias Ringwald 
22860c1cf6c6SMatthias Ringwald /**
22870c1cf6c6SMatthias Ringwald  * @param connection_handle
22880c1cf6c6SMatthias Ringwald  * @param local_enable
22890c1cf6c6SMatthias Ringwald  * @param remote_enable
22900c1cf6c6SMatthias Ringwald  */
22910c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_transmit_power_reporting_enable = {
22920c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_SET_TRANSMIT_POWER_REPORTING_ENABLE, "H11"
22930c1cf6c6SMatthias Ringwald };
22940c1cf6c6SMatthias Ringwald 
22950c1cf6c6SMatthias Ringwald /**
22960c1cf6c6SMatthias Ringwald  * @param tx_channel
22970c1cf6c6SMatthias Ringwald  * @param test_data_length
22980c1cf6c6SMatthias Ringwald  * @param packet_payload
22990c1cf6c6SMatthias Ringwald  * @param phy
23000c1cf6c6SMatthias Ringwald  * @param cte_length
23010c1cf6c6SMatthias Ringwald  * @param cte_type
23020c1cf6c6SMatthias Ringwald  * @param switching_pattern_length
23030c1cf6c6SMatthias Ringwald  * @param antenna_ids[i]
23040c1cf6c6SMatthias Ringwald  * @param transmit_power_level
23050c1cf6c6SMatthias Ringwald  */
23060c1cf6c6SMatthias Ringwald 
23070c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test_v4 = {
23080c1cf6c6SMatthias Ringwald     HCI_OPCODE_HCI_LE_TRANSMITTER_TEST_V4, "111111a[1]1"
23090c1cf6c6SMatthias Ringwald };
2310ca13daefSMatthias Ringwald 
231156042629SMatthias Ringwald #endif
2312a42798c3SMatthias Ringwald 
2313a42798c3SMatthias Ringwald // Broadcom / Cypress specific HCI commands
2314a42798c3SMatthias Ringwald 
2315a42798c3SMatthias Ringwald /**
2316067ecc36SMatthias Ringwald  * @brief Enable Wide-Band Speech / mSBC decoding for PCM
2317067ecc36SMatthias Ringwald  * @param enable_wbs is 0 for disable, 1 for enable
2318067ecc36SMatthias Ringwald  * @param uuid_wbs is 2 for EV2/EV3
2319067ecc36SMatthias Ringwald  */
2320067ecc36SMatthias Ringwald const hci_cmd_t hci_bcm_enable_wbs = {
2321067ecc36SMatthias Ringwald     HCI_OPCODE_HCI_BCM_ENABLE_WBS, "12"
2322067ecc36SMatthias Ringwald         // return: status
2323067ecc36SMatthias Ringwald };
2324067ecc36SMatthias Ringwald 
2325067ecc36SMatthias Ringwald /**
2326a42798c3SMatthias Ringwald  * @brief Configure SCO Routing (BCM)
2327a42798c3SMatthias Ringwald  * @param sco_routing is 0 for PCM, 1 for Transport, 2 for Codec and 3 for I2S
2328a42798c3SMatthias Ringwald  * @param pcm_interface_rate is 0 for 128KBps, 1 for 256 KBps, 2 for 512KBps, 3 for 1024KBps, and 4 for 2048Kbps
2329a42798c3SMatthias Ringwald  * @param frame_type is 0 for short and 1 for long
2330a42798c3SMatthias Ringwald  * @param sync_mode is 0 for slave and 1 for master
2331a42798c3SMatthias Ringwald  * @param clock_mode is 0 for slabe and 1 for master
2332a42798c3SMatthias Ringwald  */
2333a42798c3SMatthias Ringwald const hci_cmd_t hci_bcm_write_sco_pcm_int = {
2334ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_BCM_WRITE_SCO_PCM_INT, "11111"
2335a42798c3SMatthias Ringwald     // return: status
2336a42798c3SMatthias Ringwald };
2337eab6959fSMatthias Ringwald 
2338eab6959fSMatthias Ringwald /**
2339067ecc36SMatthias Ringwald  * @brief Configure the I2S/PCM interface (BCM)
2340067ecc36SMatthias Ringwald  * @param i2s_enable is 0 for off, 1 for on
2341067ecc36SMatthias Ringwald  * @param is_master is 0 for slave, is 1 for master
2342067ecc36SMatthias Ringwald  * @param sample_rate is 0 for 8 kHz, 1 for 16 kHz, 2 for 4 kHz
2343067ecc36SMatthias 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
2344067ecc36SMatthias Ringwald  * @param clock_mode is 0 for slabe and 1 for master
2345067ecc36SMatthias Ringwald  */
2346067ecc36SMatthias Ringwald const hci_cmd_t hci_bcm_write_i2spcm_interface_param = {
2347067ecc36SMatthias Ringwald     HCI_OPCODE_HCI_BCM_WRITE_I2SPCM_INTERFACE_PARAM, "1111"
2348067ecc36SMatthias Ringwald         // return: status
2349067ecc36SMatthias Ringwald };
2350067ecc36SMatthias Ringwald 
2351067ecc36SMatthias Ringwald 
2352067ecc36SMatthias Ringwald /**
2353eab6959fSMatthias Ringwald  * @brief Activates selected Sleep Mode
2354eab6959fSMatthias 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
2355eab6959fSMatthias Ringwald  * @param idle_threshold_host (modes 1,2,5,7) time until considered idle, unit roughly 300 ms
2356eab6959fSMatthias Ringwald  * @param idle_threshold_controller (modes 1-7,9) time until considered idle, unit roughly 300 ms
2357eab6959fSMatthias Ringwald  * @param bt_wake_active_mode (modes 1,2,7) 0 = BT_WAKE line is active high, 1 = BT_WAKE is active low
2358eab6959fSMatthias Ringwald  * @param host_wake_active_mode (modes 1,2,5,7) 0 = HOST_WAKE line is active high, 1 = HOST_WAKE is active low
2359eab6959fSMatthias Ringwald  * @param allow_host_sleep_during_sco (modes 1,2,3,5,7)
2360eab6959fSMatthias Ringwald  * @param combine_sleep_mode_and_lpm  (modes 1,2,3,5,7)
2361eab6959fSMatthias Ringwald  * @param enable_tristate_control_of_uart_tx_line (modes 1,2,7)
2362eab6959fSMatthias Ringwald  * @param active_connection_handling_on_suspend (modes 3,5)
2363eab6959fSMatthias Ringwald  * @param resume_timeout (modes 3,5)
2364eab6959fSMatthias Ringwald  * @param enable_break_to_host (mode 12)
2365eab6959fSMatthias Ringwald  * @param pulsed_host_wake (modes 1,12)
2366eab6959fSMatthias Ringwald  */
2367eab6959fSMatthias Ringwald const hci_cmd_t hci_bcm_set_sleep_mode = {
2368ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_BCM_SET_SLEEP_MODE, "111111111111"
2369eab6959fSMatthias Ringwald };
23705cdaddfaSMatthias Ringwald 
23715cdaddfaSMatthias Ringwald /**
23725cdaddfaSMatthias Ringwald  * @brief Set TX Power Table
23735cdaddfaSMatthias Ringwald  * @param is_le 0=classic, 1=LE
23745cdaddfaSMatthias Ringwald  * @param chip_max_tx_pwr_db chip level max TX power in dBM
23755cdaddfaSMatthias Ringwald  */
23765cdaddfaSMatthias Ringwald const hci_cmd_t hci_bcm_write_tx_power_table = {
2377ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_BCM_WRITE_TX_POWER_TABLE, "11"
23785cdaddfaSMatthias Ringwald };
23795cdaddfaSMatthias Ringwald 
23805cdaddfaSMatthias Ringwald const hci_cmd_t hci_bcm_set_tx_pwr = {
2381ea5cc3a8SMatthias Ringwald     HCI_OPCODE_HCI_BCM_SET_TX_PWR, "11H"
23825cdaddfaSMatthias Ringwald };
2383ba39ed56SMatthias Ringwald 
2384ba39ed56SMatthias Ringwald /**
238515fca961SMatthias Ringwald  * @brief This command starts receiving packets using packet transmission parameters such as
238615fca961SMatthias Ringwald  *        frequency channel, packet type, and packet length. It is used for Packet RX.
238715fca961SMatthias Ringwald  * @see   https://processors.wiki.ti.com/index.php/CC256x_Testing_Guide#Continuous_RX
238815fca961SMatthias Ringwald  * @param frequency
238915fca961SMatthias Ringwald  * @param ADPLL loop mode
239015fca961SMatthias Ringwald  */
239115fca961SMatthias Ringwald const hci_cmd_t hci_ti_drpb_tester_con_rx = {
239215fca961SMatthias Ringwald         0xFD17, "11"
239315fca961SMatthias Ringwald };
239415fca961SMatthias Ringwald 
239515fca961SMatthias Ringwald /**
2396ba39ed56SMatthias Ringwald  *
2397ba39ed56SMatthias Ringwald  *
2398ba39ed56SMatthias Ringwald  * @brief This command tests the RF transceiver in continuous transmission mode.
2399ba39ed56SMatthias Ringwald  *        The transmitter is activated by configuring the transmission parameters such as pattern,
2400ba39ed56SMatthias Ringwald  *        modulation, and frequency.
2401ba39ed56SMatthias Ringwald  * @see   processors.wiki.ti.com/index.php/CC256x_VS_HCI_Commands#HCI_VS_DRPb_Tester_Con_TX.280xFD84.29
2402ba39ed56SMatthias Ringwald  * @param modulation
240315fca961SMatthias Ringwald  * @param test_pattern
2404ba39ed56SMatthias Ringwald  * @param frequency
2405ba39ed56SMatthias Ringwald  * @param power_level
2406ba39ed56SMatthias Ringwald  * @param reserved1
2407ba39ed56SMatthias Ringwald  * @param reserved2
2408ba39ed56SMatthias Ringwald  */
2409ba39ed56SMatthias Ringwald const hci_cmd_t hci_ti_drpb_tester_con_tx = {
2410ba39ed56SMatthias Ringwald     0xFD84, "111144"
2411ba39ed56SMatthias Ringwald };
2412ba39ed56SMatthias Ringwald 
2413ba39ed56SMatthias Ringwald /**
2414ba39ed56SMatthias Ringwald  * @brief This command starts sending/receiving packets using packet transmission parameters such as
2415ba39ed56SMatthias Ringwald  *        frequency channel, packet type, and packet length. It is used for Packet TX/RX.
2416ba39ed56SMatthias Ringwald  * @see   processors.wiki.ti.com/index.php/CC256x_VS_HCI_Commands#HCI_VS_DRPb_Tester_Packet_TX_RX_.280xFD85.29
2417ba39ed56SMatthias Ringwald  * @param frequency_mode
2418ba39ed56SMatthias Ringwald  * @param tx_single_frequency
2419ba39ed56SMatthias Ringwald  * @param rx_single_frequency
2420ba39ed56SMatthias Ringwald  * @param acl_packet_type
2421ba39ed56SMatthias Ringwald  * @paarm acl_packet_data_pattern
2422ba39ed56SMatthias Ringwald  * @param reserved
2423ba39ed56SMatthias Ringwald  * @param power_level
2424ba39ed56SMatthias Ringwald  * @param disable_whitening
2425ba39ed56SMatthias Ringwald  * @param prbs9_initialization_value
2426ba39ed56SMatthias Ringwald  */
2427ba39ed56SMatthias Ringwald const hci_cmd_t hci_ti_drpb_tester_packet_tx_rx = {
2428ba39ed56SMatthias Ringwald     0xFD85, "1111112112"
2429ba39ed56SMatthias Ringwald };
2430365a7dd1SMatthias Ringwald 
2431733a7793SMatthias Ringwald 
2432733a7793SMatthias Ringwald /**
2433733a7793SMatthias Ringwald  * @param best effort access percentage
2434733a7793SMatthias Ringwald  * @param guaranteed access percentage
2435733a7793SMatthias Ringwald  * @param poll period
2436733a7793SMatthias Ringwald  * @param slave burst after tx
2437733a7793SMatthias Ringwald  * @param slave master search count
2438733a7793SMatthias Ringwald  * @param master burst after tx enable
2439733a7793SMatthias Ringwald  * @param master burst after rx limit
2440733a7793SMatthias Ringwald  */
2441cf26f982SMatthias Ringwald const hci_cmd_t hci_ti_configure_ddip = {
2442733a7793SMatthias Ringwald     HCI_OPCODE_HCI_TI_VS_CONFIGURE_DDIP, "1111111"
2443733a7793SMatthias Ringwald };
2444733a7793SMatthias Ringwald 
2445365a7dd1SMatthias Ringwald /**
2446365a7dd1SMatthias Ringwald  * @brief This command is used to associate the requested ACL handle with Wide Band Speech configuration.
2447365a7dd1SMatthias Ringwald  * @param enable 0=disable, 1=enable
2448365a7dd1SMatthias Ringwald  * @param a3dp_role (NL5500, WL128x only) 0=source,1=sink
2449365a7dd1SMatthias Ringwald  * @param code_upload (NL5500, WL128x only) 0=do not load a3dp code, 1=load a3dp code
2450365a7dd1SMatthias Ringwald  * @param reserved for future use
2451365a7dd1SMatthias Ringwald  */
2452365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_avrp_enable = {
2453365a7dd1SMatthias Ringwald         0xFD92, "1112"
2454365a7dd1SMatthias Ringwald };
2455365a7dd1SMatthias Ringwald 
2456365a7dd1SMatthias Ringwald /**
2457365a7dd1SMatthias Ringwald  * @brief This command is used to associate the requested ACL handle with Wide Band Speech configuration.
2458365a7dd1SMatthias Ringwald  * @param acl_con_handle
2459365a7dd1SMatthias Ringwald  */
2460365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_wbs_associate = {
2461365a7dd1SMatthias Ringwald         0xFD78, "H"
2462365a7dd1SMatthias Ringwald };
2463365a7dd1SMatthias Ringwald 
2464365a7dd1SMatthias Ringwald /**
2465365a7dd1SMatthias Ringwald  * @brief This command is used to disassociate Wide Band Speech configuration from any ACL handle.
2466365a7dd1SMatthias Ringwald  */
2467365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_wbs_disassociate = {
2468365a7dd1SMatthias Ringwald         0xFD79, ""
2469365a7dd1SMatthias Ringwald };
2470365a7dd1SMatthias Ringwald 
2471365a7dd1SMatthias Ringwald /**
2472365a7dd1SMatthias Ringwald  * @brief This command configures the codec interface parameters and the PCM clock rate, which is relevant when
2473365a7dd1SMatthias Ringwald           the Bluetooth core generates the clock. This command must be used by the host to use the PCM
2474365a7dd1SMatthias Ringwald           interface.
2475365a7dd1SMatthias Ringwald  * @param clock_rate in kHz
2476365a7dd1SMatthias Ringwald  * @param clock_direction 0=master/output, 1=slave/input
2477365a7dd1SMatthias Ringwald  * @param frame_sync_frequency in Hz
2478365a7dd1SMatthias Ringwald  * @param frame_sync_duty_cycle 0=50% (I2S Format), 0x0001-0xffff number of cycles of PCM clock
2479365a7dd1SMatthias Ringwald  * @param frame_sync_edge 0=driven/sampled at rising edge, 1=driven/sampled at falling edge of PCM clock
2480365a7dd1SMatthias Ringwald  * @param frame_sync_polariy 0=active high, 1=active low
2481365a7dd1SMatthias Ringwald  * @param reserved1
2482365a7dd1SMatthias Ringwald  * @param channel_1_data_out_size sample size in bits
2483365a7dd1SMatthias Ringwald  * @param channel_1_data_out_offset number of PCM clock cycles between rising of frame sync and data start
2484365a7dd1SMatthias Ringwald  * @param channel_1_data_out_edge 0=data driven at rising edge, 1=data driven at falling edge of PCM clock
2485365a7dd1SMatthias Ringwald  * @param channel_1_data_in_size sample size in bits
2486365a7dd1SMatthias Ringwald  * @param channel_1_data_in_offset number of PCM clock cycles between rising of frame sync and data start
2487365a7dd1SMatthias Ringwald  * @param channel_1_data_in_edge 0=data sampled at rising edge, 1=data sampled at falling edge of PCM clock
2488365a7dd1SMatthias Ringwald  * @param fsync_multiplier this field is only relevant to CC256XB from service pack 0.2 !!! -> use 0x00
2489365a7dd1SMatthias Ringwald  * @param channel_2_data_out_size sample size in bits
2490365a7dd1SMatthias Ringwald  * @param channel_2_data_out_offset number of PCM clock cycles between rising of frame sync and data start
2491365a7dd1SMatthias Ringwald  * @param channel_2_data_out_edge 0=data driven at rising edge, 1=data driven at falling edge of PCM clock
2492365a7dd1SMatthias Ringwald  * @param channel_2_data_in_size sample size in bits
2493365a7dd1SMatthias Ringwald  * @param channel_2_data_in_offset number of PCM clock cycles between rising of frame sync and data start
2494365a7dd1SMatthias Ringwald  * @param channel_2_data_in_edge 0=data sampled at rising edge, 1=data sampled at falling edge of PCM clock
2495365a7dd1SMatthias Ringwald  * @param reserved2
2496365a7dd1SMatthias Ringwald  *
2497365a7dd1SMatthias Ringwald  */
2498365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_write_codec_config = {
2499365a7dd1SMatthias Ringwald         0xFD06, "214211122122112212211"
2500365a7dd1SMatthias Ringwald };
250115fca961SMatthias Ringwald 
250215fca961SMatthias Ringwald /**
250315fca961SMatthias Ringwald  * @brief This command is used only for internal testing.
250415fca961SMatthias Ringwald  * @see   https://processors.wiki.ti.com/index.php/CC256x_Testing_Guide#Continuous_TX
250515fca961SMatthias Ringwald  * @param frequency
250615fca961SMatthias Ringwald  * @param ADPLL loop mode
250715fca961SMatthias Ringwald  */
250815fca961SMatthias Ringwald const hci_cmd_t hci_ti_drpb_enable_rf_calibration = {
250915fca961SMatthias Ringwald         0xFD80, "141"
251015fca961SMatthias Ringwald };
251115fca961SMatthias Ringwald 
251215fca961SMatthias Ringwald /**
251315fca961SMatthias Ringwald  * @brief This command command is only required for the continuous TX test of modulated
251415fca961SMatthias Ringwald  * (GFSK, π/4-DQPSK or 8DPSK) signal. This command should be skipped when performing continuous TX test for CW.
251515fca961SMatthias Ringwald  * @see   https://processors.wiki.ti.com/index.php/CC256x_Testing_Guide#Continuous_RX
251615fca961SMatthias Ringwald  * @param frequency
251715fca961SMatthias Ringwald  * @param ADPLL loop mode
251815fca961SMatthias Ringwald  */
251915fca961SMatthias Ringwald const hci_cmd_t hci_ti_write_hardware_register = {
252015fca961SMatthias Ringwald         0xFF01, "42"
252115fca961SMatthias Ringwald };
2522