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 */
hci_cmd_create_from_template(uint8_t * hci_cmd_buffer,const hci_cmd_t * cmd,va_list argptr)8856042629SMatthias Ringwald uint16_t hci_cmd_create_from_template(uint8_t *hci_cmd_buffer, const hci_cmd_t *cmd, va_list argptr){
8956042629SMatthias Ringwald
904ea43905SMatthias Ringwald hci_cmd_buffer[0] = cmd->opcode & 0xffu;
9156042629SMatthias Ringwald hci_cmd_buffer[1] = cmd->opcode >> 8;
92931b436eSMatthias Ringwald uint16_t pos = 3;
9356042629SMatthias Ringwald
9456042629SMatthias Ringwald const char *format = cmd->format;
9556042629SMatthias Ringwald uint16_t word;
9656042629SMatthias Ringwald uint32_t longword;
9756042629SMatthias Ringwald uint8_t * ptr;
987f67490cSMatthias Ringwald
99c8b094b6SMatthias Ringwald #ifdef ENABLE_BLE
100c8b094b6SMatthias Ringwald // variable size data
101c8b094b6SMatthias Ringwald uint16_t var_len = INVALID_VAR_LEN;
102c8b094b6SMatthias Ringwald // array processing
103931b436eSMatthias Ringwald const char * array_format = NULL;
104931b436eSMatthias Ringwald void * array_data[MAX_NR_ARRAY_FIELDS];
105931b436eSMatthias Ringwald uint8_t array_num_elements = INVALID_ARRAY_LEN;
106931b436eSMatthias Ringwald uint8_t array_num_fields;
107931b436eSMatthias Ringwald uint8_t array_element_index;
108c8b094b6SMatthias Ringwald bool array_done;
109c8b094b6SMatthias Ringwald #endif
110931b436eSMatthias Ringwald
111931b436eSMatthias Ringwald bool done_format = false;
112931b436eSMatthias Ringwald while (!done_format) {
11356042629SMatthias Ringwald switch(*format) {
114931b436eSMatthias Ringwald case 0:
115931b436eSMatthias Ringwald done_format = true;
116931b436eSMatthias Ringwald break;
11756042629SMatthias Ringwald case '1': // 8 bit value
118c56de76bSMilanka Ringwald word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE
1194ea43905SMatthias Ringwald hci_cmd_buffer[pos++] = word & 0xffu;
120c56de76bSMilanka Ringwald break;
121c56de76bSMilanka Ringwald case '2': // 16 bit value
122c56de76bSMilanka Ringwald word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE
123c56de76bSMilanka Ringwald hci_cmd_buffer[pos++] = word & 0xffu;
12456042629SMatthias Ringwald hci_cmd_buffer[pos++] = word >> 8;
125c56de76bSMilanka Ringwald break;
126c56de76bSMilanka Ringwald case 'H': // hci_handle
127c56de76bSMilanka Ringwald word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE
128c56de76bSMilanka Ringwald hci_cmd_buffer[pos++] = word & 0xffu;
12956042629SMatthias Ringwald hci_cmd_buffer[pos++] = word >> 8;
13056042629SMatthias Ringwald break;
13156042629SMatthias Ringwald case '3':
132c56de76bSMilanka Ringwald longword = va_arg(argptr, uint32_t); // LCOV_EXCL_BR_LINE
13356042629SMatthias Ringwald hci_cmd_buffer[pos++] = longword;
13456042629SMatthias Ringwald hci_cmd_buffer[pos++] = longword >> 8;
13556042629SMatthias Ringwald hci_cmd_buffer[pos++] = longword >> 16;
136c56de76bSMilanka Ringwald break;
137c56de76bSMilanka Ringwald case '4':
138c56de76bSMilanka Ringwald longword = va_arg(argptr, uint32_t); // LCOV_EXCL_BR_LINE
139c56de76bSMilanka Ringwald hci_cmd_buffer[pos++] = longword;
140c56de76bSMilanka Ringwald hci_cmd_buffer[pos++] = longword >> 8;
141c56de76bSMilanka Ringwald hci_cmd_buffer[pos++] = longword >> 16;
14256042629SMatthias Ringwald hci_cmd_buffer[pos++] = longword >> 24;
14356042629SMatthias Ringwald break;
14456042629SMatthias Ringwald case 'B': // bt-addr
145c56de76bSMilanka Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
14656042629SMatthias Ringwald hci_cmd_buffer[pos++] = ptr[5];
14756042629SMatthias Ringwald hci_cmd_buffer[pos++] = ptr[4];
14856042629SMatthias Ringwald hci_cmd_buffer[pos++] = ptr[3];
14956042629SMatthias Ringwald hci_cmd_buffer[pos++] = ptr[2];
15056042629SMatthias Ringwald hci_cmd_buffer[pos++] = ptr[1];
15156042629SMatthias Ringwald hci_cmd_buffer[pos++] = ptr[0];
15256042629SMatthias Ringwald break;
15356042629SMatthias Ringwald case 'D': // 8 byte data block
154c56de76bSMilanka Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
1556535961aSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, 8);
15656042629SMatthias Ringwald pos += 8;
15756042629SMatthias Ringwald break;
15856042629SMatthias Ringwald case 'E': // Extended Inquiry Information 240 octets
159c56de76bSMilanka Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
1606535961aSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, 240);
16156042629SMatthias Ringwald pos += 240;
16256042629SMatthias Ringwald break;
16356042629SMatthias Ringwald case 'N': { // UTF-8 string, null terminated
164c56de76bSMilanka Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
16548944233SMatthias Ringwald uint16_t len = (uint16_t) strlen((const char*) ptr);
1664ea43905SMatthias Ringwald if (len > 248u) {
16756042629SMatthias Ringwald len = 248;
16856042629SMatthias Ringwald }
1696535961aSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, len);
1704ea43905SMatthias Ringwald if (len < 248u) {
17156042629SMatthias Ringwald // fill remaining space with zeroes
1724ea43905SMatthias Ringwald memset(&hci_cmd_buffer[pos+len], 0u, 248u-len);
17356042629SMatthias Ringwald }
17456042629SMatthias Ringwald pos += 248;
17556042629SMatthias Ringwald break;
17656042629SMatthias Ringwald }
177bb75dd7dSMatthias Ringwald case 'P': // 16 byte PIN code or link key in little endian
178c56de76bSMilanka Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
1796535961aSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, 16);
18056042629SMatthias Ringwald pos += 16;
18156042629SMatthias Ringwald break;
182931b436eSMatthias Ringwald case 'K': // 16 byte OOB Data or Link Key in big endian
183931b436eSMatthias Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
184931b436eSMatthias Ringwald reverse_bytes(ptr, &hci_cmd_buffer[pos], 16);
185931b436eSMatthias Ringwald pos += 16;
186931b436eSMatthias Ringwald break;
187a9a4c409SMatthias Ringwald #ifdef ENABLE_BLE
18856042629SMatthias Ringwald case 'A': // 31 bytes advertising data
189c56de76bSMilanka Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
1906535961aSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, 31);
19156042629SMatthias Ringwald pos += 31;
19256042629SMatthias Ringwald break;
193931b436eSMatthias Ringwald case 'J': // 8 bit variable length indicator for 'V'
194931b436eSMatthias Ringwald word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE
195931b436eSMatthias Ringwald var_len = word & 0xffu;
196e878f80dSMatthias Ringwald hci_cmd_buffer[pos++] = (uint8_t) var_len;
197bb75dd7dSMatthias Ringwald break;
1987f67490cSMatthias Ringwald case 'V':
1997f67490cSMatthias Ringwald btstack_assert(var_len != INVALID_VAR_LEN);
2007f67490cSMatthias Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
201*921be532SMatthias Ringwald // avoid calling memcpy with NULL and size = 0 <- undefined behaviour
202*921be532SMatthias Ringwald if (ptr == NULL){
203*921be532SMatthias Ringwald btstack_assert(var_len == 0);
204*921be532SMatthias Ringwald } else {
2057f67490cSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, var_len);
206*921be532SMatthias Ringwald }
2077f67490cSMatthias Ringwald pos += var_len;
2087f67490cSMatthias Ringwald var_len = INVALID_VAR_LEN;
2097f67490cSMatthias Ringwald break;
210931b436eSMatthias Ringwald case 'a':
211931b436eSMatthias Ringwald btstack_assert(array_num_elements == INVALID_ARRAY_LEN);
212931b436eSMatthias Ringwald word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE
213931b436eSMatthias Ringwald hci_cmd_buffer[pos++] = word & 0xff;
214931b436eSMatthias Ringwald array_num_elements = word & 0xffu;
215931b436eSMatthias Ringwald break;
216931b436eSMatthias Ringwald case 'b':
217931b436eSMatthias Ringwald btstack_assert(array_num_elements == INVALID_ARRAY_LEN);
218931b436eSMatthias Ringwald word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE
219931b436eSMatthias Ringwald hci_cmd_buffer[pos++] = word & 0xff;
220931b436eSMatthias Ringwald array_num_elements = count_set_bits_uint32(word & 0xffu);
221931b436eSMatthias Ringwald break;
222931b436eSMatthias Ringwald case '[':
223931b436eSMatthias Ringwald btstack_assert(array_num_elements != INVALID_ARRAY_LEN);
224931b436eSMatthias Ringwald // process array
225931b436eSMatthias Ringwald format++;
226931b436eSMatthias Ringwald array_format = format;
227931b436eSMatthias Ringwald array_num_fields = 0;
228c8b094b6SMatthias Ringwald array_done = false;
229c8b094b6SMatthias Ringwald while (!array_done){
230931b436eSMatthias Ringwald switch (*format){
231931b436eSMatthias Ringwald case 0:
232c8b094b6SMatthias Ringwald array_done = true;
233931b436eSMatthias Ringwald done_format = true;
234931b436eSMatthias Ringwald break;
235931b436eSMatthias Ringwald case ']':
236c8b094b6SMatthias Ringwald array_done = true;
237931b436eSMatthias Ringwald break;
238931b436eSMatthias Ringwald case '1':
239931b436eSMatthias Ringwald case '2':
240931b436eSMatthias Ringwald // all arrayed parameters are passed in as arrays
241931b436eSMatthias Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
242931b436eSMatthias Ringwald array_data[array_num_fields++] = ptr;
243931b436eSMatthias Ringwald format++;
244931b436eSMatthias Ringwald break;
245931b436eSMatthias Ringwald default:
246931b436eSMatthias Ringwald btstack_unreachable();
247931b436eSMatthias Ringwald break;
248931b436eSMatthias Ringwald }
249931b436eSMatthias Ringwald }
250931b436eSMatthias Ringwald for (array_element_index = 0; array_element_index < array_num_elements ; array_element_index++){
251931b436eSMatthias Ringwald uint8_t array_field_index;
252931b436eSMatthias Ringwald for (array_field_index = 0; array_field_index < array_num_fields ; array_field_index++){
253931b436eSMatthias Ringwald switch (array_format[array_field_index]){
254931b436eSMatthias Ringwald case '1':
255931b436eSMatthias Ringwald hci_cmd_buffer[pos++] = ((const uint8_t *) array_data[array_field_index])[array_element_index];
256931b436eSMatthias Ringwald break;
257931b436eSMatthias Ringwald case '2':
258931b436eSMatthias Ringwald little_endian_store_16(hci_cmd_buffer, pos, ((const uint16_t *) array_data[array_field_index])[array_element_index]);
259931b436eSMatthias Ringwald pos += 2;
260931b436eSMatthias Ringwald break;
261931b436eSMatthias Ringwald default:
262931b436eSMatthias Ringwald btstack_unreachable();
263931b436eSMatthias Ringwald break;
264931b436eSMatthias Ringwald }
265931b436eSMatthias Ringwald }
266931b436eSMatthias Ringwald }
267931b436eSMatthias Ringwald break;
268931b436eSMatthias Ringwald #endif
269931b436eSMatthias Ringwald #ifdef ENABLE_LE_SECURE_CONNECTIONS
270931b436eSMatthias Ringwald case 'Q':
271931b436eSMatthias Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
272931b436eSMatthias Ringwald reverse_bytes(ptr, &hci_cmd_buffer[pos], 32);
273931b436eSMatthias Ringwald pos += 32;
274931b436eSMatthias Ringwald break;
275931b436eSMatthias Ringwald #endif
276931b436eSMatthias Ringwald #ifdef ENABLE_SDP
277931b436eSMatthias Ringwald // used by daemon
278931b436eSMatthias Ringwald case 'S': { // Service Record (Data Element Sequence)
279931b436eSMatthias Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE
280931b436eSMatthias Ringwald uint16_t len = de_get_len(ptr);
281931b436eSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, len);
282931b436eSMatthias Ringwald pos += len;
283931b436eSMatthias Ringwald break;
284931b436eSMatthias Ringwald }
285931b436eSMatthias Ringwald #endif
28656042629SMatthias Ringwald default:
2877f67490cSMatthias Ringwald btstack_unreachable();
28856042629SMatthias Ringwald break;
28956042629SMatthias Ringwald }
29056042629SMatthias Ringwald format++;
29156042629SMatthias Ringwald };
29256042629SMatthias Ringwald hci_cmd_buffer[2] = pos - 3;
29356042629SMatthias Ringwald return pos;
29456042629SMatthias Ringwald }
29556042629SMatthias Ringwald
296211a5343SMatthias Ringwald
hci_cmd_create_from_template_with_vargs(uint8_t * hci_cmd_buffer,const hci_cmd_t * cmd,...)297211a5343SMatthias Ringwald uint16_t hci_cmd_create_from_template_with_vargs(uint8_t * hci_cmd_buffer, const hci_cmd_t * cmd, ...){
298211a5343SMatthias Ringwald va_list argptr;
299211a5343SMatthias Ringwald va_start(argptr, cmd);
300211a5343SMatthias Ringwald uint16_t size = hci_cmd_create_from_template(hci_cmd_buffer, cmd, argptr);
301211a5343SMatthias Ringwald va_end(argptr);
302211a5343SMatthias Ringwald return size;
303211a5343SMatthias Ringwald }
304211a5343SMatthias Ringwald
30556042629SMatthias Ringwald /**
30656042629SMatthias Ringwald * Link Control Commands
30756042629SMatthias Ringwald */
30856042629SMatthias Ringwald
30956042629SMatthias Ringwald /**
31056042629SMatthias Ringwald * @param lap
31156042629SMatthias Ringwald * @param inquiry_length
31256042629SMatthias Ringwald * @param num_responses
31356042629SMatthias Ringwald */
31456042629SMatthias Ringwald const hci_cmd_t hci_inquiry = {
315ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_INQUIRY, "311"
31656042629SMatthias Ringwald };
31756042629SMatthias Ringwald
31856042629SMatthias Ringwald /**
31956042629SMatthias Ringwald */
32056042629SMatthias Ringwald const hci_cmd_t hci_inquiry_cancel = {
321ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_INQUIRY_CANCEL, ""
32256042629SMatthias Ringwald };
32356042629SMatthias Ringwald
32456042629SMatthias Ringwald /**
3256fe44815SRicardo Quesada * @param max_period_length
3266fe44815SRicardo Quesada * @param min_period_length
3276fe44815SRicardo Quesada * @param lap
3286fe44815SRicardo Quesada * @param inquiry_length
3296fe44815SRicardo Quesada * @param num_responses
3306fe44815SRicardo Quesada */
3316fe44815SRicardo Quesada const hci_cmd_t hci_periodic_inquiry_mode = {
3326fe44815SRicardo Quesada HCI_OPCODE_HCI_PERIODIC_INQUIRY_MODE, "22311"
3336fe44815SRicardo Quesada };
3346fe44815SRicardo Quesada
3356fe44815SRicardo Quesada /**
3366fe44815SRicardo Quesada */
3376fe44815SRicardo Quesada const hci_cmd_t hci_exit_periodic_inquiry_mode = {
3386fe44815SRicardo Quesada HCI_OPCODE_HCI_EXIT_PERIODIC_INQUIRY_MODE, ""
3396fe44815SRicardo Quesada };
3406fe44815SRicardo Quesada
3416fe44815SRicardo Quesada /**
34256042629SMatthias Ringwald * @param bd_addr
34356042629SMatthias Ringwald * @param packet_type
34456042629SMatthias Ringwald * @param page_scan_repetition_mode
34556042629SMatthias Ringwald * @param reserved
34656042629SMatthias Ringwald * @param clock_offset
34756042629SMatthias Ringwald * @param allow_role_switch
34856042629SMatthias Ringwald */
34956042629SMatthias Ringwald const hci_cmd_t hci_create_connection = {
350ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_CREATE_CONNECTION, "B21121"
35156042629SMatthias Ringwald };
35256042629SMatthias Ringwald
35356042629SMatthias Ringwald /**
35456042629SMatthias Ringwald * @param handle
35556042629SMatthias Ringwald * @param reason (0x05, 0x13-0x15, 0x1a, 0x29, see Errors Codes in BT Spec Part D)
35656042629SMatthias Ringwald */
35756042629SMatthias Ringwald const hci_cmd_t hci_disconnect = {
358ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_DISCONNECT, "H1"
35956042629SMatthias Ringwald };
36056042629SMatthias Ringwald
36156042629SMatthias Ringwald /**
36256042629SMatthias Ringwald * @param bd_addr
36356042629SMatthias Ringwald */
36456042629SMatthias Ringwald const hci_cmd_t hci_create_connection_cancel = {
365ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_CREATE_CONNECTION_CANCEL, "B"
36656042629SMatthias Ringwald };
36756042629SMatthias Ringwald
36856042629SMatthias Ringwald /**
36956042629SMatthias Ringwald * @param bd_addr
37056042629SMatthias Ringwald * @param role (become master, stay slave)
37156042629SMatthias Ringwald */
37256042629SMatthias Ringwald const hci_cmd_t hci_accept_connection_request = {
373ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_ACCEPT_CONNECTION_REQUEST, "B1"
37456042629SMatthias Ringwald };
37556042629SMatthias Ringwald
37656042629SMatthias Ringwald /**
37756042629SMatthias Ringwald * @param bd_addr
37856042629SMatthias Ringwald * @param reason (e.g. CONNECTION REJECTED DUE TO LIMITED RESOURCES (0x0d))
37956042629SMatthias Ringwald */
38056042629SMatthias Ringwald const hci_cmd_t hci_reject_connection_request = {
381ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_REJECT_CONNECTION_REQUEST, "B1"
38256042629SMatthias Ringwald };
38356042629SMatthias Ringwald
38456042629SMatthias Ringwald /**
38556042629SMatthias Ringwald * @param bd_addr
38656042629SMatthias Ringwald * @param link_key
38756042629SMatthias Ringwald */
38856042629SMatthias Ringwald const hci_cmd_t hci_link_key_request_reply = {
389ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LINK_KEY_REQUEST_REPLY, "BP"
39056042629SMatthias Ringwald };
39156042629SMatthias Ringwald
39256042629SMatthias Ringwald /**
39356042629SMatthias Ringwald * @param bd_addr
39456042629SMatthias Ringwald */
39556042629SMatthias Ringwald const hci_cmd_t hci_link_key_request_negative_reply = {
396ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LINK_KEY_REQUEST_NEGATIVE_REPLY, "B"
39756042629SMatthias Ringwald };
39856042629SMatthias Ringwald
39956042629SMatthias Ringwald /**
40056042629SMatthias Ringwald * @param bd_addr
40156042629SMatthias Ringwald * @param pin_length
40256042629SMatthias Ringwald * @param pin (c-string)
40356042629SMatthias Ringwald */
40456042629SMatthias Ringwald const hci_cmd_t hci_pin_code_request_reply = {
405ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_PIN_CODE_REQUEST_REPLY, "B1P"
40656042629SMatthias Ringwald };
40756042629SMatthias Ringwald
40856042629SMatthias Ringwald /**
40956042629SMatthias Ringwald * @param bd_addr
41056042629SMatthias Ringwald */
41156042629SMatthias Ringwald const hci_cmd_t hci_pin_code_request_negative_reply = {
412ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_PIN_CODE_REQUEST_NEGATIVE_REPLY, "B"
41356042629SMatthias Ringwald };
41456042629SMatthias Ringwald
41556042629SMatthias Ringwald /**
41656042629SMatthias Ringwald * @param handle
41756042629SMatthias Ringwald * @param packet_type
41856042629SMatthias Ringwald */
41956042629SMatthias Ringwald const hci_cmd_t hci_change_connection_packet_type = {
420ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_CHANGE_CONNECTION_PACKET_TYPE, "H2"
42156042629SMatthias Ringwald };
42256042629SMatthias Ringwald
42356042629SMatthias Ringwald /**
42456042629SMatthias Ringwald * @param handle
42556042629SMatthias Ringwald */
42656042629SMatthias Ringwald const hci_cmd_t hci_authentication_requested = {
427ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_AUTHENTICATION_REQUESTED, "H"
42856042629SMatthias Ringwald };
42956042629SMatthias Ringwald
43056042629SMatthias Ringwald /**
43156042629SMatthias Ringwald * @param handle
43256042629SMatthias Ringwald * @param encryption_enable
43356042629SMatthias Ringwald */
43456042629SMatthias Ringwald const hci_cmd_t hci_set_connection_encryption = {
435ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_SET_CONNECTION_ENCRYPTION, "H1"
43656042629SMatthias Ringwald };
43756042629SMatthias Ringwald
43856042629SMatthias Ringwald /**
43956042629SMatthias Ringwald * @param handle
44056042629SMatthias Ringwald */
44156042629SMatthias Ringwald const hci_cmd_t hci_change_connection_link_key = {
442ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_CHANGE_CONNECTION_LINK_KEY, "H"
44356042629SMatthias Ringwald };
44456042629SMatthias Ringwald
44556042629SMatthias Ringwald /**
44656042629SMatthias Ringwald * @param bd_addr
44756042629SMatthias Ringwald * @param page_scan_repetition_mode
44856042629SMatthias Ringwald * @param reserved
44956042629SMatthias Ringwald * @param clock_offset
45056042629SMatthias Ringwald */
45156042629SMatthias Ringwald const hci_cmd_t hci_remote_name_request = {
452ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_REMOTE_NAME_REQUEST, "B112"
45356042629SMatthias Ringwald };
45456042629SMatthias Ringwald
45556042629SMatthias Ringwald
45656042629SMatthias Ringwald /**
45756042629SMatthias Ringwald * @param bd_addr
45856042629SMatthias Ringwald */
45956042629SMatthias Ringwald const hci_cmd_t hci_remote_name_request_cancel = {
460ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_REMOTE_NAME_REQUEST_CANCEL, "B"
46156042629SMatthias Ringwald };
46256042629SMatthias Ringwald
46356042629SMatthias Ringwald /**
46456042629SMatthias Ringwald * @param handle
46556042629SMatthias Ringwald */
46656042629SMatthias Ringwald const hci_cmd_t hci_read_remote_supported_features_command = {
467ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_REMOTE_SUPPORTED_FEATURES_COMMAND, "H"
4688b22c04dSMatthias Ringwald };
4698b22c04dSMatthias Ringwald
4708b22c04dSMatthias Ringwald /**
471d5057706SMatthias Ringwald * @param handle
472d5057706SMatthias Ringwald */
473d5057706SMatthias Ringwald const hci_cmd_t hci_read_remote_extended_features_command = {
474ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_REMOTE_EXTENDED_FEATURES_COMMAND, "H1"
475d5057706SMatthias Ringwald };
476d5057706SMatthias Ringwald
477d5057706SMatthias Ringwald /**
4788b22c04dSMatthias Ringwald * @param handle
4798b22c04dSMatthias Ringwald */
4808b22c04dSMatthias Ringwald const hci_cmd_t hci_read_remote_version_information = {
481ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_REMOTE_VERSION_INFORMATION, "H"
48256042629SMatthias Ringwald };
48356042629SMatthias Ringwald
48456042629SMatthias Ringwald /**
485a9941893SMatthias Ringwald * @param handle
486a9941893SMatthias Ringwald */
487a9941893SMatthias Ringwald const hci_cmd_t hci_read_clock_offset = {
488a9941893SMatthias Ringwald HCI_OPCODE_HCI_READ_CLOCK_OFFSET, "H"
489a9941893SMatthias Ringwald };
490a9941893SMatthias Ringwald
491a9941893SMatthias Ringwald /**
49256042629SMatthias Ringwald * @param handle
49356042629SMatthias Ringwald * @param transmit_bandwidth 8000(64kbps)
49456042629SMatthias Ringwald * @param receive_bandwidth 8000(64kbps)
49556042629SMatthias Ringwald * @param max_latency >= 7ms for eSCO, 0xFFFF do not care
49656042629SMatthias Ringwald * @param voice_settings e.g. CVSD, Input Coding: Linear, Input Data Format: 2’s complement, data 16bit: 00011000000 == 0x60
49756042629SMatthias Ringwald * @param retransmission_effort e.g. 0xFF do not care
49856042629SMatthias Ringwald * @param packet_type at least EV3 for eSCO
49956042629SMatthias Ringwald */
50056042629SMatthias Ringwald const hci_cmd_t hci_setup_synchronous_connection = {
501ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_SETUP_SYNCHRONOUS_CONNECTION, "H442212"
50256042629SMatthias Ringwald };
50356042629SMatthias Ringwald
50456042629SMatthias Ringwald /**
50556042629SMatthias Ringwald * @param bd_addr
50656042629SMatthias Ringwald * @param transmit_bandwidth
50756042629SMatthias Ringwald * @param receive_bandwidth
50856042629SMatthias Ringwald * @param max_latency
50956042629SMatthias Ringwald * @param voice_settings
51056042629SMatthias Ringwald * @param retransmission_effort
51156042629SMatthias Ringwald * @param packet_type
51256042629SMatthias Ringwald */
51356042629SMatthias Ringwald const hci_cmd_t hci_accept_synchronous_connection = {
514ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_ACCEPT_SYNCHRONOUS_CONNECTION, "B442212"
51556042629SMatthias Ringwald };
51656042629SMatthias Ringwald
51756042629SMatthias Ringwald /**
51856042629SMatthias Ringwald * @param bd_addr
51956042629SMatthias Ringwald * @param IO_capability
52056042629SMatthias Ringwald * @param OOB_data_present
52156042629SMatthias Ringwald * @param authentication_requirements
52256042629SMatthias Ringwald */
52356042629SMatthias Ringwald const hci_cmd_t hci_io_capability_request_reply = {
524ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_IO_CAPABILITY_REQUEST_REPLY, "B111"
52556042629SMatthias Ringwald };
52656042629SMatthias Ringwald
52756042629SMatthias Ringwald /**
52856042629SMatthias Ringwald * @param bd_addr
52956042629SMatthias Ringwald */
53056042629SMatthias Ringwald const hci_cmd_t hci_user_confirmation_request_reply = {
531ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_USER_CONFIRMATION_REQUEST_REPLY, "B"
53256042629SMatthias Ringwald };
53356042629SMatthias Ringwald
53456042629SMatthias Ringwald /**
53556042629SMatthias Ringwald * @param bd_addr
53656042629SMatthias Ringwald */
53756042629SMatthias Ringwald const hci_cmd_t hci_user_confirmation_request_negative_reply = {
538ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_USER_CONFIRMATION_REQUEST_NEGATIVE_REPLY, "B"
53956042629SMatthias Ringwald };
54056042629SMatthias Ringwald
54156042629SMatthias Ringwald /**
54256042629SMatthias Ringwald * @param bd_addr
54356042629SMatthias Ringwald * @param numeric_value
54456042629SMatthias Ringwald */
54556042629SMatthias Ringwald const hci_cmd_t hci_user_passkey_request_reply = {
546ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_USER_PASSKEY_REQUEST_REPLY, "B4"
54756042629SMatthias Ringwald };
54856042629SMatthias Ringwald
54956042629SMatthias Ringwald /**
55056042629SMatthias Ringwald * @param bd_addr
55156042629SMatthias Ringwald */
55256042629SMatthias Ringwald const hci_cmd_t hci_user_passkey_request_negative_reply = {
553ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_USER_PASSKEY_REQUEST_NEGATIVE_REPLY, "B"
55456042629SMatthias Ringwald };
55556042629SMatthias Ringwald
55656042629SMatthias Ringwald /**
55756042629SMatthias Ringwald * @param bd_addr
558237daac5SMatthias Ringwald * @param c Simple Pairing Hash C
559237daac5SMatthias Ringwald * @param r Simple Pairing Randomizer R
560237daac5SMatthias Ringwald */
561237daac5SMatthias Ringwald const hci_cmd_t hci_remote_oob_data_request_reply = {
562bb75dd7dSMatthias Ringwald HCI_OPCODE_HCI_REMOTE_OOB_DATA_REQUEST_REPLY, "BKK"
563237daac5SMatthias Ringwald };
564237daac5SMatthias Ringwald
565237daac5SMatthias Ringwald /**
566237daac5SMatthias Ringwald * @param bd_addr
56756042629SMatthias Ringwald */
56856042629SMatthias Ringwald const hci_cmd_t hci_remote_oob_data_request_negative_reply = {
569ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_REMOTE_OOB_DATA_REQUEST_NEGATIVE_REPLY, "B"
57056042629SMatthias Ringwald };
57156042629SMatthias Ringwald
57256042629SMatthias Ringwald /**
57356042629SMatthias Ringwald * @param bd_addr
57456042629SMatthias Ringwald * @param reason (Part D, Error codes)
57556042629SMatthias Ringwald */
57656042629SMatthias Ringwald const hci_cmd_t hci_io_capability_request_negative_reply = {
577ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_IO_CAPABILITY_REQUEST_NEGATIVE_REPLY, "B1"
57856042629SMatthias Ringwald };
57956042629SMatthias Ringwald
58056042629SMatthias Ringwald /**
58156042629SMatthias Ringwald * @param handle
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_setup_synchronous_connection = {
615ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_ENHANCED_SETUP_SYNCHRONOUS_CONNECTION, "H4412212222441221222211111111221"
61656042629SMatthias Ringwald };
61756042629SMatthias Ringwald
61856042629SMatthias Ringwald /**
61956042629SMatthias Ringwald * @param bd_addr
62056042629SMatthias Ringwald * @param transmit_bandwidth
62156042629SMatthias Ringwald * @param receive_bandwidth
62256042629SMatthias Ringwald * @param transmit_coding_format_type
62356042629SMatthias Ringwald * @param transmit_coding_format_company
62456042629SMatthias Ringwald * @param transmit_coding_format_codec
62556042629SMatthias Ringwald * @param receive_coding_format_type
62656042629SMatthias Ringwald * @param receive_coding_format_company
62756042629SMatthias Ringwald * @param receive_coding_format_codec
62856042629SMatthias Ringwald * @param transmit_coding_frame_size
62956042629SMatthias Ringwald * @param receive_coding_frame_size
63056042629SMatthias Ringwald * @param input_bandwidth
63156042629SMatthias Ringwald * @param output_bandwidth
63256042629SMatthias Ringwald * @param input_coding_format_type
63356042629SMatthias Ringwald * @param input_coding_format_company
63456042629SMatthias Ringwald * @param input_coding_format_codec
63556042629SMatthias Ringwald * @param output_coding_format_type
63656042629SMatthias Ringwald * @param output_coding_format_company
63756042629SMatthias Ringwald * @param output_coding_format_codec
63856042629SMatthias Ringwald * @param input_coded_data_size
63956042629SMatthias Ringwald * @param outupt_coded_data_size
64056042629SMatthias Ringwald * @param input_pcm_data_format
64156042629SMatthias Ringwald * @param output_pcm_data_format
64256042629SMatthias Ringwald * @param input_pcm_sample_payload_msb_position
64356042629SMatthias Ringwald * @param output_pcm_sample_payload_msb_position
64456042629SMatthias Ringwald * @param input_data_path
64556042629SMatthias Ringwald * @param output_data_path
64656042629SMatthias Ringwald * @param input_transport_unit_size
64756042629SMatthias Ringwald * @param output_transport_unit_size
64856042629SMatthias Ringwald * @param max_latency
64956042629SMatthias Ringwald * @param packet_type
65056042629SMatthias Ringwald * @param retransmission_effort
65156042629SMatthias Ringwald */
65256042629SMatthias Ringwald const hci_cmd_t hci_enhanced_accept_synchronous_connection = {
653ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_ENHANCED_ACCEPT_SYNCHRONOUS_CONNECTION, "B4412212222441221222211111111221"
65456042629SMatthias Ringwald };
65556042629SMatthias Ringwald
65656042629SMatthias Ringwald /**
657bb75dd7dSMatthias Ringwald * @param bd_addr
658bb75dd7dSMatthias Ringwald * @param c_192 Simple Pairing Hash C derived from P-192 public key
659bb75dd7dSMatthias Ringwald * @param r_192 Simple Pairing Randomizer derived from P-192 public key
660bb75dd7dSMatthias Ringwald * @param c_256 Simple Pairing Hash C derived from P-256 public key
661bb75dd7dSMatthias Ringwald * @param r_256 Simple Pairing Randomizer derived from P-256 public key
662bb75dd7dSMatthias Ringwald */
663bb75dd7dSMatthias Ringwald const hci_cmd_t hci_remote_oob_extended_data_request_reply = {
664bb75dd7dSMatthias Ringwald HCI_OPCODE_HCI_REMOTE_OOB_EXTENDED_DATA_REQUEST_REPLY, "BKKKK"
665bb75dd7dSMatthias Ringwald };
666bb75dd7dSMatthias Ringwald
667bb75dd7dSMatthias Ringwald /**
66856042629SMatthias Ringwald * Link Policy Commands
66956042629SMatthias Ringwald */
67056042629SMatthias Ringwald
67156042629SMatthias Ringwald /**
67256042629SMatthias Ringwald * @param handle
67329ae3d7dSMatthias Ringwald * @param hold_mode_max_interval * 0.625 ms, range: 0x0002..0xFFFE; only even values are valid.
67429ae3d7dSMatthias Ringwald * @param hold_mode_min_interval * 0.625 ms, range: 0x0002..0xFFFE; only even values are valid.
67529ae3d7dSMatthias Ringwald */
67629ae3d7dSMatthias Ringwald const hci_cmd_t hci_hold_mode = {
67729ae3d7dSMatthias Ringwald HCI_OPCODE_HCI_HOLD_MODE, "H22"
67829ae3d7dSMatthias Ringwald };
67929ae3d7dSMatthias Ringwald
68029ae3d7dSMatthias Ringwald /**
68129ae3d7dSMatthias Ringwald * @param handle
68256042629SMatthias Ringwald * @param sniff_max_interval
68356042629SMatthias Ringwald * @param sniff_min_interval
68456042629SMatthias Ringwald * @param sniff_attempt
68556042629SMatthias Ringwald * @param sniff_timeout
68656042629SMatthias Ringwald */
68756042629SMatthias Ringwald const hci_cmd_t hci_sniff_mode = {
688ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_SNIFF_MODE, "H2222"
68956042629SMatthias Ringwald };
69056042629SMatthias Ringwald
69156042629SMatthias Ringwald /**
69256042629SMatthias Ringwald * @param handle
6937cd21895SMatthias Ringwald */
6947cd21895SMatthias Ringwald const hci_cmd_t hci_exit_sniff_mode = {
695ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_EXIT_SNIFF_MODE, "H"
6967cd21895SMatthias Ringwald };
6977cd21895SMatthias Ringwald
6987cd21895SMatthias Ringwald /**
6996f351188SMatthias Ringwald * @note Removed in Bluetooth Core v5.0
7006f351188SMatthias Ringwald * @param handle
7016f351188SMatthias Ringwald * @param beacon_max_interval * 0.625 ms, range: 0x000E..0xFFFE; only even values are valid.
7026f351188SMatthias Ringwald * @param beacon_max_interval * 0.625 ms, range: 0x000E..0xFFFE; only even values are valid.
7036f351188SMatthias Ringwald */
7046f351188SMatthias Ringwald const hci_cmd_t hci_park_state = {
7056f351188SMatthias Ringwald HCI_OPCODE_HCI_PARK_STATE, "H22"
7066f351188SMatthias Ringwald };
7076f351188SMatthias Ringwald
7086f351188SMatthias Ringwald /**
7096f351188SMatthias Ringwald * @note Removed in Bluetooth Core v5.0
7106f351188SMatthias Ringwald * @param handle
7116f351188SMatthias Ringwald */
7126f351188SMatthias Ringwald const hci_cmd_t hci_exit_park_state = {
7136f351188SMatthias Ringwald HCI_OPCODE_HCI_EXIT_PARK_STATE, "H"
7146f351188SMatthias Ringwald };
7156f351188SMatthias Ringwald
7166f351188SMatthias Ringwald /**
7177cd21895SMatthias Ringwald * @param handle
71856042629SMatthias Ringwald * @param flags
71956042629SMatthias Ringwald * @param service_type
72056042629SMatthias Ringwald * @param token_rate (bytes/s)
72156042629SMatthias Ringwald * @param peak_bandwith (bytes/s)
72256042629SMatthias Ringwald * @param latency (us)
72356042629SMatthias Ringwald * @param delay_variation (us)
72456042629SMatthias Ringwald */
72556042629SMatthias Ringwald const hci_cmd_t hci_qos_setup = {
726ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_QOS_SETUP, "H114444"
72756042629SMatthias Ringwald };
72856042629SMatthias Ringwald
72956042629SMatthias Ringwald /**
73056042629SMatthias Ringwald * @param handle
73156042629SMatthias Ringwald */
73256042629SMatthias Ringwald const hci_cmd_t hci_role_discovery = {
733ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_ROLE_DISCOVERY, "H"
73456042629SMatthias Ringwald };
73556042629SMatthias Ringwald
73656042629SMatthias Ringwald /**
73756042629SMatthias Ringwald * @param bd_addr
73856042629SMatthias Ringwald * @param role (0=master,1=slave)
73956042629SMatthias Ringwald */
74056042629SMatthias Ringwald const hci_cmd_t hci_switch_role_command= {
741ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_SWITCH_ROLE_COMMAND, "B1"
74256042629SMatthias Ringwald };
74356042629SMatthias Ringwald
74456042629SMatthias Ringwald /**
74556042629SMatthias Ringwald * @param handle
74656042629SMatthias Ringwald */
74756042629SMatthias Ringwald const hci_cmd_t hci_read_link_policy_settings = {
748ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LINK_POLICY_SETTINGS, "H"
74956042629SMatthias Ringwald };
75056042629SMatthias Ringwald
75156042629SMatthias Ringwald /**
75256042629SMatthias Ringwald * @param handle
75356042629SMatthias Ringwald * @param settings
75456042629SMatthias Ringwald */
75556042629SMatthias Ringwald const hci_cmd_t hci_write_link_policy_settings = {
756ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_LINK_POLICY_SETTINGS, "H2"
75756042629SMatthias Ringwald };
75856042629SMatthias Ringwald
759c4c88f1bSJakob Krantz /**
76032e2f27fSMatthias Ringwald * @param handle
76132e2f27fSMatthias Ringwald * @param max_latency
76232e2f27fSMatthias Ringwald * @param min_remote_timeout
76332e2f27fSMatthias Ringwald * @param min_local_timeout
76432e2f27fSMatthias Ringwald */
76532e2f27fSMatthias Ringwald const hci_cmd_t hci_sniff_subrating = {
76650fe3a99SMilanka Ringwald HCI_OPCODE_HCI_SNIFF_SUBRATING, "H222"
76732e2f27fSMatthias Ringwald };
76832e2f27fSMatthias Ringwald
76932e2f27fSMatthias Ringwald /**
770c4c88f1bSJakob Krantz * @param policy
771c4c88f1bSJakob Krantz */
77253138e7aSMatthias Ringwald const hci_cmd_t hci_write_default_link_policy_setting = {
773ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_DEFAULT_LINK_POLICY_SETTING, "2"
774c4c88f1bSJakob Krantz };
775c4c88f1bSJakob Krantz
776733a7793SMatthias Ringwald /**
777733a7793SMatthias Ringwald * @param handle
778733a7793SMatthias Ringwald * @param unused
779733a7793SMatthias Ringwald * @param flow_direction
780733a7793SMatthias Ringwald * @param service_type
781733a7793SMatthias Ringwald * @param token_rate
782733a7793SMatthias Ringwald * @param token_bucket_size
783733a7793SMatthias Ringwald * @param peak_bandwidth
784733a7793SMatthias Ringwald * @param access_latency
785733a7793SMatthias Ringwald */
786733a7793SMatthias Ringwald const hci_cmd_t hci_flow_specification = {
787733a7793SMatthias Ringwald HCI_OPCODE_HCI_FLOW_SPECIFICATION, "H1114444"
788733a7793SMatthias Ringwald };
789733a7793SMatthias Ringwald
79056042629SMatthias Ringwald
79156042629SMatthias Ringwald /**
79256042629SMatthias Ringwald * Controller & Baseband Commands
79356042629SMatthias Ringwald */
79456042629SMatthias Ringwald
7959119d792SMilanka Ringwald
79656042629SMatthias Ringwald /**
797ff7d1758SMatthias Ringwald * @param event_mask_lower_octets
79856042629SMatthias Ringwald * @param event_mask_higher_octets
79956042629SMatthias Ringwald */
80056042629SMatthias Ringwald const hci_cmd_t hci_set_event_mask = {
801ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_SET_EVENT_MASK, "44"
80256042629SMatthias Ringwald };
80356042629SMatthias Ringwald
80456042629SMatthias Ringwald /**
80556042629SMatthias Ringwald */
80656042629SMatthias Ringwald const hci_cmd_t hci_reset = {
807ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_RESET, ""
80856042629SMatthias Ringwald };
80956042629SMatthias Ringwald
81056042629SMatthias Ringwald /**
811e49d496aSMatthias Ringwald * @param handle
812e49d496aSMatthias Ringwald */
813e49d496aSMatthias Ringwald const hci_cmd_t hci_flush = {
814ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_FLUSH, "H"
8159af39d9fSMatthias Ringwald };
8169af39d9fSMatthias Ringwald
8179af39d9fSMatthias Ringwald /**
8189af39d9fSMatthias Ringwald * @param handle
8199af39d9fSMatthias Ringwald */
8209af39d9fSMatthias Ringwald const hci_cmd_t hci_read_pin_type = {
821ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_PIN_TYPE, ""
8229af39d9fSMatthias Ringwald };
8239af39d9fSMatthias Ringwald
8249af39d9fSMatthias Ringwald /**
8259af39d9fSMatthias Ringwald * @param handle
8269af39d9fSMatthias Ringwald */
8279af39d9fSMatthias Ringwald const hci_cmd_t hci_write_pin_type = {
828ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_PIN_TYPE, "1"
829e49d496aSMatthias Ringwald };
830e49d496aSMatthias Ringwald
831e49d496aSMatthias Ringwald /**
83256042629SMatthias Ringwald * @param bd_addr
83356042629SMatthias Ringwald * @param delete_all_flags
83456042629SMatthias Ringwald */
83556042629SMatthias Ringwald const hci_cmd_t hci_delete_stored_link_key = {
836ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_DELETE_STORED_LINK_KEY, "B1"
83756042629SMatthias Ringwald };
83856042629SMatthias Ringwald
839f9f2075cSMatthias Ringwald #ifdef ENABLE_CLASSIC
84056042629SMatthias Ringwald /**
84156042629SMatthias Ringwald * @param local_name (UTF-8, Null Terminated, max 248 octets)
84256042629SMatthias Ringwald */
84356042629SMatthias Ringwald const hci_cmd_t hci_write_local_name = {
844ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_LOCAL_NAME, "N"
84556042629SMatthias Ringwald };
846f9f2075cSMatthias Ringwald #endif
84756042629SMatthias Ringwald
84856042629SMatthias Ringwald /**
849e90bae01SMatthias Ringwald */
850e90bae01SMatthias Ringwald const hci_cmd_t hci_read_local_name = {
851ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LOCAL_NAME, ""
852e90bae01SMatthias Ringwald };
853e90bae01SMatthias Ringwald
854e90bae01SMatthias Ringwald /**
855195e82f3Sskoperst */
856195e82f3Sskoperst const hci_cmd_t hci_read_page_timeout = {
857ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_PAGE_TIMEOUT, ""
858195e82f3Sskoperst };
859195e82f3Sskoperst
860195e82f3Sskoperst /**
86156042629SMatthias Ringwald * @param page_timeout (* 0.625 ms)
86256042629SMatthias Ringwald */
86356042629SMatthias Ringwald const hci_cmd_t hci_write_page_timeout = {
864ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_PAGE_TIMEOUT, "2"
86556042629SMatthias Ringwald };
86656042629SMatthias Ringwald
86756042629SMatthias Ringwald /**
8684eac2391SMatthias Ringwald * @param scan_enable (no, inq, page, inq+page)
8694eac2391SMatthias Ringwald */
8704eac2391SMatthias Ringwald const hci_cmd_t hci_write_scan_enable = {
871ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_SCAN_ENABLE, "1"
8724eac2391SMatthias Ringwald };
8734eac2391SMatthias Ringwald
8744eac2391SMatthias Ringwald /**
875195e82f3Sskoperst */
876195e82f3Sskoperst const hci_cmd_t hci_read_page_scan_activity = {
877ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_PAGE_SCAN_ACTIVITY, ""
878195e82f3Sskoperst };
879195e82f3Sskoperst
880195e82f3Sskoperst /**
881195e82f3Sskoperst * @param page_scan_interval (* 0.625 ms)
882195e82f3Sskoperst * @param page_scan_window (* 0.625 ms, must be <= page_scan_interval)
883195e82f3Sskoperst */
884195e82f3Sskoperst const hci_cmd_t hci_write_page_scan_activity = {
885ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_PAGE_SCAN_ACTIVITY, "22"
886195e82f3Sskoperst };
887195e82f3Sskoperst
888195e82f3Sskoperst /**
88956042629SMatthias Ringwald */
8904eac2391SMatthias Ringwald const hci_cmd_t hci_read_inquiry_scan_activity = {
891ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_INQUIRY_SCAN_ACTIVITY, ""
8924eac2391SMatthias Ringwald };
8934eac2391SMatthias Ringwald
8944eac2391SMatthias Ringwald /**
8954eac2391SMatthias Ringwald * @param inquiry_scan_interval (* 0.625 ms)
8964eac2391SMatthias Ringwald * @param inquiry_scan_window (* 0.625 ms, must be <= inquiry_scan_interval)
8974eac2391SMatthias Ringwald */
8984eac2391SMatthias Ringwald const hci_cmd_t hci_write_inquiry_scan_activity = {
899ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_INQUIRY_SCAN_ACTIVITY, "22"
90056042629SMatthias Ringwald };
90156042629SMatthias Ringwald
90256042629SMatthias Ringwald /**
90356042629SMatthias Ringwald * @param authentication_enable
90456042629SMatthias Ringwald */
90556042629SMatthias Ringwald const hci_cmd_t hci_write_authentication_enable = {
906ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_AUTHENTICATION_ENABLE, "1"
90756042629SMatthias Ringwald };
90856042629SMatthias Ringwald
90956042629SMatthias Ringwald /**
91039bcce03SMatthias Ringwald * @param handle
91139bcce03SMatthias Ringwald * @param timeout, max 0x07FF
91239bcce03SMatthias Ringwald */
91339bcce03SMatthias Ringwald const hci_cmd_t hci_write_automatic_flush_timeout = {
91439bcce03SMatthias Ringwald HCI_OPCODE_HCI_WRITE_AUTOMATIC_FLUSH_TIMEOUT, "H2"
91539bcce03SMatthias Ringwald };
91639bcce03SMatthias Ringwald
91739bcce03SMatthias Ringwald /**
91856042629SMatthias Ringwald * @param class_of_device
91956042629SMatthias Ringwald */
92056042629SMatthias Ringwald const hci_cmd_t hci_write_class_of_device = {
921ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_CLASS_OF_DEVICE, "3"
92256042629SMatthias Ringwald };
92356042629SMatthias Ringwald
92456042629SMatthias Ringwald /**
92556042629SMatthias Ringwald */
92656042629SMatthias Ringwald const hci_cmd_t hci_read_num_broadcast_retransmissions = {
927ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_NUM_BROADCAST_RETRANSMISSIONS, ""
92856042629SMatthias Ringwald };
92956042629SMatthias Ringwald
93056042629SMatthias Ringwald /**
93156042629SMatthias Ringwald * @param num_broadcast_retransmissions (e.g. 0 for a single broadcast)
93256042629SMatthias Ringwald */
93356042629SMatthias Ringwald const hci_cmd_t hci_write_num_broadcast_retransmissions = {
934ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_NUM_BROADCAST_RETRANSMISSIONS, "1"
93556042629SMatthias Ringwald };
93656042629SMatthias Ringwald
93756042629SMatthias Ringwald /**
93844751e25SMatthias Ringwald * @param connection_handle
93944751e25SMatthias Ringwald * @param type 0 = current transmit level, 1 = max transmit level
94044751e25SMatthias Ringwald */
94144751e25SMatthias Ringwald const hci_cmd_t hci_read_transmit_power_level = {
9422ea455e1SMatthias Ringwald HCI_OPCODE_HCI_READ_TRANSMIT_POWER_LEVEL, "H1"
94344751e25SMatthias Ringwald };
94444751e25SMatthias Ringwald
94544751e25SMatthias Ringwald /**
94656042629SMatthias Ringwald * @param synchronous_flow_control_enable - if yes, num completed packet everts are sent for SCO packets
94756042629SMatthias Ringwald */
94856042629SMatthias Ringwald const hci_cmd_t hci_write_synchronous_flow_control_enable = {
949ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_SYNCHRONOUS_FLOW_CONTROL_ENABLE, "1"
95056042629SMatthias Ringwald };
95156042629SMatthias Ringwald
9522b838201SMatthias Ringwald #ifdef ENABLE_HCI_CONTROLLER_TO_HOST_FLOW_CONTROL
9532b838201SMatthias Ringwald
9542b838201SMatthias Ringwald /**
9552b838201SMatthias Ringwald * @param flow_control_enable - 0: off, 1: ACL only, 2: SCO only, 3: ACL + SCO
9562b838201SMatthias Ringwald */
9572b838201SMatthias Ringwald const hci_cmd_t hci_set_controller_to_host_flow_control = {
958ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_SET_CONTROLLER_TO_HOST_FLOW_CONTROL, "1"
9592b838201SMatthias Ringwald };
9602b838201SMatthias Ringwald
96156042629SMatthias Ringwald /**
96256042629SMatthias Ringwald * @param host_acl_data_packet_length
96356042629SMatthias Ringwald * @param host_synchronous_data_packet_length
96456042629SMatthias Ringwald * @param host_total_num_acl_data_packets
96556042629SMatthias Ringwald * @param host_total_num_synchronous_data_packets
96656042629SMatthias Ringwald */
96756042629SMatthias Ringwald const hci_cmd_t hci_host_buffer_size = {
968ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_HOST_BUFFER_SIZE, "2122"
96956042629SMatthias Ringwald };
97056042629SMatthias Ringwald
9719119d792SMilanka Ringwald
9722b838201SMatthias Ringwald #if 0
9732b838201SMatthias Ringwald //
9742b838201SMatthias Ringwald // command sent manually sent by hci_host_num_completed_packets
9752b838201SMatthias Ringwald //
9762b838201SMatthias Ringwald /**
9772b838201SMatthias Ringwald * @note only single handle supported by BTstack command generator
9782b838201SMatthias Ringwald * @param number_of_handles must be 1
9792b838201SMatthias Ringwald * @param connection_handle
9802b838201SMatthias Ringwald * @param host_num_of_completed_packets for the given connection handle
9812b838201SMatthias Ringwald */
9822b838201SMatthias Ringwald const hci_cmd_t hci_host_number_of_completed_packets = {
983ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_HOST_NUMBER_OF_COMPLETED_PACKETS, "1H2"
9842b838201SMatthias Ringwald };
9852b838201SMatthias Ringwald #endif
9862b838201SMatthias Ringwald
9872b838201SMatthias Ringwald #endif
9882b838201SMatthias Ringwald
98956042629SMatthias Ringwald /**
99056042629SMatthias Ringwald * @param handle
99156042629SMatthias Ringwald */
99256042629SMatthias Ringwald const hci_cmd_t hci_read_link_supervision_timeout = {
993ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LINK_SUPERVISION_TIMEOUT, "H"
99456042629SMatthias Ringwald };
99556042629SMatthias Ringwald
99656042629SMatthias Ringwald /**
99756042629SMatthias Ringwald * @param handle
99856042629SMatthias Ringwald * @param timeout (0x0001 - 0xFFFF Time -> Range: 0.625ms - 40.9 sec)
99956042629SMatthias Ringwald */
100056042629SMatthias Ringwald const hci_cmd_t hci_write_link_supervision_timeout = {
1001ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_LINK_SUPERVISION_TIMEOUT, "H2"
100256042629SMatthias Ringwald };
100356042629SMatthias Ringwald
100456042629SMatthias Ringwald /**
10059119d792SMilanka Ringwald * @param num_current_iac must be 2
10069119d792SMilanka Ringwald * @param iac_lap1
10079119d792SMilanka Ringwald * @param iac_lap2
10089119d792SMilanka Ringwald */
10099119d792SMilanka Ringwald const hci_cmd_t hci_write_current_iac_lap_two_iacs = {
1010ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_CURRENT_IAC_LAP_TWO_IACS, "133"
10119119d792SMilanka Ringwald };
10129119d792SMilanka Ringwald
10139119d792SMilanka Ringwald /**
10145769fd77SMatthias Ringwald * @param inquiry_scan_type (0x00 = standard, 0x01 = interlaced)
10155769fd77SMatthias Ringwald */
10165769fd77SMatthias Ringwald const hci_cmd_t hci_write_inquiry_scan_type = {
10175769fd77SMatthias Ringwald HCI_OPCODE_HCI_WRITE_INQUIRY_SCAN_TYPE, "1"
10185769fd77SMatthias Ringwald };
10195769fd77SMatthias Ringwald
10205769fd77SMatthias Ringwald /**
102156042629SMatthias Ringwald * @param inquiry_mode (0x00 = standard, 0x01 = with RSSI, 0x02 = extended)
102256042629SMatthias Ringwald */
102356042629SMatthias Ringwald const hci_cmd_t hci_write_inquiry_mode = {
1024ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_INQUIRY_MODE, "1"
102556042629SMatthias Ringwald };
102656042629SMatthias Ringwald
102756042629SMatthias Ringwald /**
10285769fd77SMatthias Ringwald * @param page_scan_type (0x00 = standard, 0x01 = interlaced)
10295769fd77SMatthias Ringwald */
10305769fd77SMatthias Ringwald const hci_cmd_t hci_write_page_scan_type = {
10315769fd77SMatthias Ringwald HCI_OPCODE_HCI_WRITE_PAGE_SCAN_TYPE, "1"
10325769fd77SMatthias Ringwald };
10335769fd77SMatthias Ringwald
10345769fd77SMatthias Ringwald /**
103556042629SMatthias Ringwald * @param fec_required
103656042629SMatthias Ringwald * @param exstended_inquiry_response
103756042629SMatthias Ringwald */
103856042629SMatthias Ringwald const hci_cmd_t hci_write_extended_inquiry_response = {
1039ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_EXTENDED_INQUIRY_RESPONSE, "1E"
104056042629SMatthias Ringwald };
104156042629SMatthias Ringwald
104256042629SMatthias Ringwald /**
104356042629SMatthias Ringwald * @param mode (0 = off, 1 = on)
104456042629SMatthias Ringwald */
104556042629SMatthias Ringwald const hci_cmd_t hci_write_simple_pairing_mode = {
1046ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_SIMPLE_PAIRING_MODE, "1"
104756042629SMatthias Ringwald };
104856042629SMatthias Ringwald
1049237daac5SMatthias Ringwald /**
1050237daac5SMatthias Ringwald */
1051237daac5SMatthias Ringwald const hci_cmd_t hci_read_local_oob_data = {
1052ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LOCAL_OOB_DATA, ""
1053237daac5SMatthias Ringwald // return status, C, R
1054237daac5SMatthias Ringwald };
1055483c5078SMatthias Ringwald
1056483c5078SMatthias Ringwald /**
1057c9c0cbe9SAndrey Fominykh */
1058c9c0cbe9SAndrey Fominykh const hci_cmd_t hci_read_inquiry_response_transmit_power_level = {
1059c9c0cbe9SAndrey Fominykh HCI_OPCODE_HCI_READ_INQUIRY_RESPONSE_TRANSMIT_POWER_LEVEL, ""
1060c9c0cbe9SAndrey Fominykh // return status, pwr level
1061c9c0cbe9SAndrey Fominykh };
1062c9c0cbe9SAndrey Fominykh
1063c9c0cbe9SAndrey Fominykh /**
1064c9c0cbe9SAndrey Fominykh */
1065c9c0cbe9SAndrey Fominykh const hci_cmd_t hci_write_inquiry_transmit_power_level = {
1066c9c0cbe9SAndrey Fominykh HCI_OPCODE_HCI_WRITE_INQUIRY_TRANSMIT_POWER_LEVEL, "1"
1067c9c0cbe9SAndrey Fominykh // return status
1068c9c0cbe9SAndrey Fominykh };
1069c9c0cbe9SAndrey Fominykh
1070c9c0cbe9SAndrey Fominykh /**
1071483c5078SMatthias Ringwald * @param mode (0 = off, 1 = on)
1072483c5078SMatthias Ringwald */
1073483c5078SMatthias Ringwald const hci_cmd_t hci_write_default_erroneous_data_reporting = {
1074ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_DEFAULT_ERRONEOUS_DATA_REPORTING, "1"
1075483c5078SMatthias Ringwald };
1076483c5078SMatthias Ringwald
107756042629SMatthias Ringwald /**
1078ff7d1758SMatthias Ringwald * @param event_mask_page_2_lower_octets
1079ff7d1758SMatthias Ringwald * @param event_mask_page_2_higher_octets
1080ff7d1758SMatthias Ringwald */
1081ff7d1758SMatthias Ringwald const hci_cmd_t hci_set_event_mask_2 = {
1082ff7d1758SMatthias Ringwald HCI_OPCODE_HCI_SET_EVENT_MASK_2, "44"
1083ff7d1758SMatthias Ringwald };
1084ff7d1758SMatthias Ringwald
1085ff7d1758SMatthias Ringwald /**
108656042629SMatthias Ringwald */
108756042629SMatthias Ringwald const hci_cmd_t hci_read_le_host_supported = {
1088ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LE_HOST_SUPPORTED, ""
108956042629SMatthias Ringwald // return: status, le supported host, simultaneous le host
109056042629SMatthias Ringwald };
109156042629SMatthias Ringwald
109256042629SMatthias Ringwald /**
109356042629SMatthias Ringwald * @param le_supported_host
109456042629SMatthias Ringwald * @param simultaneous_le_host
109556042629SMatthias Ringwald */
109656042629SMatthias Ringwald const hci_cmd_t hci_write_le_host_supported = {
1097ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_LE_HOST_SUPPORTED, "11"
109856042629SMatthias Ringwald // return: status
109956042629SMatthias Ringwald };
110056042629SMatthias Ringwald
110156042629SMatthias Ringwald /**
1102b002ae8cSMatthias Ringwald * @param secure_connections_host_support
1103b002ae8cSMatthias Ringwald */
1104b002ae8cSMatthias Ringwald const hci_cmd_t hci_write_secure_connections_host_support = {
1105ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_SECURE_CONNECTIONS_HOST_SUPPORT, "1"
1106b002ae8cSMatthias Ringwald // return: status
1107b002ae8cSMatthias Ringwald };
1108b002ae8cSMatthias Ringwald
1109b002ae8cSMatthias Ringwald /**
1110237daac5SMatthias Ringwald */
1111bb75dd7dSMatthias Ringwald const hci_cmd_t hci_read_local_extended_oob_data = {
11121849becdSMatthias Ringwald HCI_OPCODE_HCI_READ_LOCAL_EXTENDED_OOB_DATA, ""
1113237daac5SMatthias Ringwald // return status, C_192, R_192, R_256, C_256
1114237daac5SMatthias Ringwald };
1115237daac5SMatthias Ringwald
11166d2375e9SMatthias Ringwald /**
11176d2375e9SMatthias Ringwald */
11186d2375e9SMatthias Ringwald const hci_cmd_t hci_read_extended_page_timeout = {
11196d2375e9SMatthias Ringwald HCI_OPCODE_HCI_READ_EXTENDED_PAGE_TIMEOUT, ""
11206d2375e9SMatthias Ringwald // return: status, extender page timeout
11216d2375e9SMatthias Ringwald };
11226d2375e9SMatthias Ringwald
11236d2375e9SMatthias Ringwald /**
11246d2375e9SMatthias Ringwald * @param extended_page_timeout
11256d2375e9SMatthias Ringwald */
11266d2375e9SMatthias Ringwald const hci_cmd_t hci_write_extended_page_timeout = {
11276d2375e9SMatthias Ringwald HCI_OPCODE_HCI_WRITE_EXTENDED_PAGE_TIMEOUT, "2"
11286d2375e9SMatthias Ringwald // return: status
11296d2375e9SMatthias Ringwald };
11306d2375e9SMatthias Ringwald
11316d2375e9SMatthias Ringwald /**
11326d2375e9SMatthias Ringwald */
11336d2375e9SMatthias Ringwald const hci_cmd_t hci_read_extended_inquiry_length = {
11346d2375e9SMatthias Ringwald HCI_OPCODE_HCI_READ_EXTENDED_INQUIRY_LENGTH, ""
11356d2375e9SMatthias Ringwald // return: status, extended_inquiry_length
11366d2375e9SMatthias Ringwald };
11376d2375e9SMatthias Ringwald
11386d2375e9SMatthias Ringwald /**
11396d2375e9SMatthias Ringwald * @param extended_inquiry_length
11406d2375e9SMatthias Ringwald */
11416d2375e9SMatthias Ringwald const hci_cmd_t hci_write_extended_inquiry_length = {
11426d2375e9SMatthias Ringwald HCI_OPCODE_HCI_WRITE_EXTENDED_INQUIRY_LENGTH, "2"
11436d2375e9SMatthias Ringwald // return: status
11446d2375e9SMatthias Ringwald };
11456d2375e9SMatthias Ringwald
11466d2375e9SMatthias Ringwald /**
11476d2375e9SMatthias Ringwald * @param interval
11486d2375e9SMatthias Ringwald */
11496d2375e9SMatthias Ringwald const hci_cmd_t hci_set_ecosystem_base_interval = {
11506d2375e9SMatthias Ringwald HCI_OPCODE_HCI_SET_ECOSYSTEM_BASE_INTERVAL, "2"
11516d2375e9SMatthias Ringwald // return: status
11526d2375e9SMatthias Ringwald };
11536d2375e9SMatthias Ringwald
11546d2375e9SMatthias Ringwald /**
11556d2375e9SMatthias Ringwald * @param data_path_direction
11566d2375e9SMatthias Ringwald * @param data_path_id
11576d2375e9SMatthias Ringwald * @param vendor_specific_config_length
11586d2375e9SMatthias Ringwald * @param vendor_specific_config
11596d2375e9SMatthias Ringwald */
11606d2375e9SMatthias Ringwald const hci_cmd_t hci_configure_data_path = {
11616d2375e9SMatthias Ringwald HCI_OPCODE_HCI_CONFIGURE_DATA_PATH, "11JV"
11626d2375e9SMatthias Ringwald // return: status
11636d2375e9SMatthias Ringwald };
11646d2375e9SMatthias Ringwald
11656d2375e9SMatthias Ringwald /**
11666d2375e9SMatthias Ringwald * @param min_encryption_key_size
11676d2375e9SMatthias Ringwald */
11686d2375e9SMatthias Ringwald const hci_cmd_t hci_set_min_encryption_key_size = {
11696d2375e9SMatthias Ringwald HCI_OPCODE_HCI_SET_MIN_ENCRYPTION_KEY_SIZE, "1"
11706d2375e9SMatthias Ringwald // return: status
11716d2375e9SMatthias Ringwald };
11726d2375e9SMatthias Ringwald
1173237daac5SMatthias Ringwald
1174237daac5SMatthias Ringwald /**
117556042629SMatthias Ringwald * Testing Commands
117656042629SMatthias Ringwald */
117756042629SMatthias Ringwald
117856042629SMatthias Ringwald
117956042629SMatthias Ringwald /**
118056042629SMatthias Ringwald */
118156042629SMatthias Ringwald const hci_cmd_t hci_read_loopback_mode = {
1182ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LOOPBACK_MODE, ""
118356042629SMatthias Ringwald // return: status, loopback mode (0 = off, 1 = local loopback, 2 = remote loopback)
118456042629SMatthias Ringwald };
118556042629SMatthias Ringwald
118656042629SMatthias Ringwald /**
118756042629SMatthias Ringwald * @param loopback_mode
118856042629SMatthias Ringwald */
118956042629SMatthias Ringwald const hci_cmd_t hci_write_loopback_mode = {
1190ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_LOOPBACK_MODE, "1"
119156042629SMatthias Ringwald // return: status
119256042629SMatthias Ringwald };
119356042629SMatthias Ringwald
119484ca9bd8SMatthias Ringwald /**
119584ca9bd8SMatthias Ringwald */
119684ca9bd8SMatthias Ringwald const hci_cmd_t hci_enable_device_under_test_mode = {
1197ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_ENABLE_DEVICE_UNDER_TEST_MODE, ""
119884ca9bd8SMatthias Ringwald // return: status
119984ca9bd8SMatthias Ringwald };
120084ca9bd8SMatthias Ringwald
120184ca9bd8SMatthias Ringwald /**
120284ca9bd8SMatthias Ringwald * @param simple_pairing_debug_mode
120384ca9bd8SMatthias Ringwald */
120484ca9bd8SMatthias Ringwald const hci_cmd_t hci_write_simple_pairing_debug_mode = {
1205ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_SIMPLE_PAIRING_DEBUG_MODE, "1"
120684ca9bd8SMatthias Ringwald // return: status
120784ca9bd8SMatthias Ringwald };
120884ca9bd8SMatthias Ringwald
120984ca9bd8SMatthias Ringwald /**
121084ca9bd8SMatthias Ringwald * @param handle
121184ca9bd8SMatthias Ringwald * @param dm1_acl_u_mode
121284ca9bd8SMatthias Ringwald * @param esco_loopback_mode
121384ca9bd8SMatthias Ringwald */
121484ca9bd8SMatthias Ringwald const hci_cmd_t hci_write_secure_connections_test_mode = {
1215ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_SECURE_CONNECTIONS_TEST_MODE, "H11"
121684ca9bd8SMatthias Ringwald // return: status
121784ca9bd8SMatthias Ringwald };
121884ca9bd8SMatthias Ringwald
121956042629SMatthias Ringwald
122056042629SMatthias Ringwald /**
122156042629SMatthias Ringwald * Informational Parameters
122256042629SMatthias Ringwald */
122356042629SMatthias Ringwald
122456042629SMatthias Ringwald const hci_cmd_t hci_read_local_version_information = {
1225ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LOCAL_VERSION_INFORMATION, ""
122656042629SMatthias Ringwald };
122756042629SMatthias Ringwald const hci_cmd_t hci_read_local_supported_commands = {
1228ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LOCAL_SUPPORTED_COMMANDS, ""
122956042629SMatthias Ringwald };
123056042629SMatthias Ringwald const hci_cmd_t hci_read_local_supported_features = {
1231ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LOCAL_SUPPORTED_FEATURES, ""
123256042629SMatthias Ringwald };
123356042629SMatthias Ringwald const hci_cmd_t hci_read_buffer_size = {
1234ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_BUFFER_SIZE, ""
123556042629SMatthias Ringwald };
123656042629SMatthias Ringwald const hci_cmd_t hci_read_bd_addr = {
1237ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_BD_ADDR, ""
123856042629SMatthias Ringwald };
123956042629SMatthias Ringwald
124056042629SMatthias Ringwald /**
1241ebcec9d3SMatthias Ringwald * Status Paramteers
124256042629SMatthias Ringwald */
124356042629SMatthias Ringwald
124456042629SMatthias Ringwald /**
124556042629SMatthias Ringwald * @param handle
124656042629SMatthias Ringwald */
1247ebcec9d3SMatthias Ringwald const hci_cmd_t hci_read_failed_contact_counter = {
1248ebcec9d3SMatthias Ringwald HCI_OPCODE_HCI_READ_FAILED_CONTACT_COUNTER, "H"
1249ebcec9d3SMatthias Ringwald };
1250ebcec9d3SMatthias Ringwald
1251ebcec9d3SMatthias Ringwald /**
1252ebcec9d3SMatthias Ringwald * @param handle
1253ebcec9d3SMatthias Ringwald */
1254ebcec9d3SMatthias Ringwald const hci_cmd_t hci_reset_failed_contact_counter = {
1255ebcec9d3SMatthias Ringwald HCI_OPCODE_HCI_RESET_FAILED_CONTACT_COUNTER, "H"
1256ebcec9d3SMatthias Ringwald };
1257ebcec9d3SMatthias Ringwald
1258ebcec9d3SMatthias Ringwald /**
1259ebcec9d3SMatthias Ringwald * @param handle
1260ebcec9d3SMatthias Ringwald */
1261ebcec9d3SMatthias Ringwald const hci_cmd_t hci_read_link_quality = {
1262ebcec9d3SMatthias Ringwald HCI_OPCODE_HCI_READ_LINK_QUALITY, "H"
1263ebcec9d3SMatthias Ringwald };
1264ebcec9d3SMatthias Ringwald
1265ebcec9d3SMatthias Ringwald /**
1266ebcec9d3SMatthias Ringwald * @param handle
1267ebcec9d3SMatthias Ringwald */
126856042629SMatthias Ringwald const hci_cmd_t hci_read_rssi = {
1269ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_RSSI, "H"
127056042629SMatthias Ringwald };
127156042629SMatthias Ringwald
127297abfa24SMatthias Ringwald /**
127397abfa24SMatthias Ringwald * @param handle
1274ebcec9d3SMatthias Ringwald * @param which_clock
1275ebcec9d3SMatthias Ringwald */
1276ebcec9d3SMatthias Ringwald const hci_cmd_t hci_read_clock = {
1277ebcec9d3SMatthias Ringwald HCI_OPCODE_HCI_READ_CLOCK, "H1"
1278ebcec9d3SMatthias Ringwald };
1279ebcec9d3SMatthias Ringwald
1280ebcec9d3SMatthias Ringwald /**
1281ebcec9d3SMatthias Ringwald * @param handle
128297abfa24SMatthias Ringwald */
128397abfa24SMatthias Ringwald const hci_cmd_t hci_read_encryption_key_size = {
1284ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_ENCRYPTION_KEY_SIZE, "H"
128597abfa24SMatthias Ringwald };
128656042629SMatthias Ringwald
128756042629SMatthias Ringwald
1288a9a4c409SMatthias Ringwald #ifdef ENABLE_BLE
128956042629SMatthias Ringwald /**
129056042629SMatthias Ringwald * Low Energy Commands
129156042629SMatthias Ringwald */
129256042629SMatthias Ringwald
129356042629SMatthias Ringwald /**
129456042629SMatthias Ringwald * @param event_mask_lower_octets
129556042629SMatthias Ringwald * @param event_mask_higher_octets
129656042629SMatthias Ringwald */
129756042629SMatthias Ringwald const hci_cmd_t hci_le_set_event_mask = {
1298ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_EVENT_MASK, "44"
129956042629SMatthias Ringwald // return: status
130056042629SMatthias Ringwald };
130156042629SMatthias Ringwald
130256042629SMatthias Ringwald const hci_cmd_t hci_le_read_buffer_size = {
1303ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_BUFFER_SIZE, ""
130456042629SMatthias Ringwald // return: status, le acl data packet len (16), total num le acl data packets(8)
130556042629SMatthias Ringwald };
13060c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_local_supported_features = {
13070c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_LOCAL_SUPPORTED_FEATURES, ""
130856042629SMatthias Ringwald // return: LE_Features See [Vol 6] Part B, Section 4.6
130956042629SMatthias Ringwald };
131056042629SMatthias Ringwald
131156042629SMatthias Ringwald /**
131256042629SMatthias Ringwald * @param random_bd_addr
131356042629SMatthias Ringwald */
131456042629SMatthias Ringwald const hci_cmd_t hci_le_set_random_address = {
1315ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_RANDOM_ADDRESS, "B"
131656042629SMatthias Ringwald // return: status
131756042629SMatthias Ringwald };
131856042629SMatthias Ringwald
131956042629SMatthias Ringwald /**
132056042629SMatthias Ringwald * @param advertising_interval_min ([0x0020,0x4000], default: 0x0800, unit: 0.625 msec)
132156042629SMatthias Ringwald * @param advertising_interval_max ([0x0020,0x4000], default: 0x0800, unit: 0.625 msec)
132256042629SMatthias Ringwald * @param advertising_type (enum from 0: ADV_IND, ADC_DIRECT_IND, ADV_SCAN_IND, ADV_NONCONN_IND)
132356042629SMatthias Ringwald * @param own_address_type (enum from 0: public device address, random device address)
132456042629SMatthias Ringwald * @param direct_address_type ()
132556042629SMatthias Ringwald * @param direct_address (public or random address of device to be connecteed)
132656042629SMatthias Ringwald * @param advertising_channel_map (flags: chan_37(1), chan_38(2), chan_39(4))
132756042629SMatthias Ringwald * @param advertising_filter_policy (enum from 0: scan any conn any, scan whitelist, con any, scan any conn whitelist, scan whitelist, con whitelist)
132856042629SMatthias Ringwald */
132956042629SMatthias Ringwald const hci_cmd_t hci_le_set_advertising_parameters = {
1330ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_ADVERTISING_PARAMETERS, "22111B11"
133156042629SMatthias Ringwald // return: status
133256042629SMatthias Ringwald };
133356042629SMatthias Ringwald
133456042629SMatthias Ringwald const hci_cmd_t hci_le_read_advertising_channel_tx_power = {
1335ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_ADVERTISING_CHANNEL_TX_POWER, ""
133656042629SMatthias Ringwald // return: status, level [-20,10] signed int (8), units dBm
133756042629SMatthias Ringwald };
133856042629SMatthias Ringwald
133956042629SMatthias Ringwald /**
134056042629SMatthias Ringwald * @param advertising_data_length
134156042629SMatthias Ringwald * @param advertising_data (31 bytes)
134256042629SMatthias Ringwald */
134356042629SMatthias Ringwald const hci_cmd_t hci_le_set_advertising_data= {
1344ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_ADVERTISING_DATA, "1A"
134556042629SMatthias Ringwald // return: status
134656042629SMatthias Ringwald };
134756042629SMatthias Ringwald
134856042629SMatthias Ringwald /**
134956042629SMatthias Ringwald * @param scan_response_data_length
135056042629SMatthias Ringwald * @param scan_response_data (31 bytes)
135156042629SMatthias Ringwald */
135256042629SMatthias Ringwald const hci_cmd_t hci_le_set_scan_response_data= {
1353ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_SCAN_RESPONSE_DATA, "1A"
135456042629SMatthias Ringwald // return: status
135556042629SMatthias Ringwald };
135656042629SMatthias Ringwald
135756042629SMatthias Ringwald /**
135856042629SMatthias Ringwald * @param advertise_enable (off: 0, on: 1)
135956042629SMatthias Ringwald */
136056042629SMatthias Ringwald const hci_cmd_t hci_le_set_advertise_enable = {
1361ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_ADVERTISE_ENABLE, "1"
136256042629SMatthias Ringwald // return: status
136356042629SMatthias Ringwald };
136456042629SMatthias Ringwald
136556042629SMatthias Ringwald /**
136656042629SMatthias Ringwald * @param le_scan_type (passive (0), active (1))
136756042629SMatthias Ringwald * @param le_scan_interval ([0x0004,0x4000], unit: 0.625 msec)
136856042629SMatthias Ringwald * @param le_scan_window ([0x0004,0x4000], unit: 0.625 msec)
136956042629SMatthias Ringwald * @param own_address_type (public (0), random (1))
137056042629SMatthias Ringwald * @param scanning_filter_policy (any (0), only whitelist (1))
137156042629SMatthias Ringwald */
137256042629SMatthias Ringwald const hci_cmd_t hci_le_set_scan_parameters = {
1373ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_SCAN_PARAMETERS, "12211"
137456042629SMatthias Ringwald // return: status
137556042629SMatthias Ringwald };
137656042629SMatthias Ringwald
137756042629SMatthias Ringwald /**
137856042629SMatthias Ringwald * @param le_scan_enable (disabled (0), enabled (1))
137956042629SMatthias Ringwald * @param filter_duplices (disabled (0), enabled (1))
138056042629SMatthias Ringwald */
138156042629SMatthias Ringwald const hci_cmd_t hci_le_set_scan_enable = {
1382ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_SCAN_ENABLE, "11"
138356042629SMatthias Ringwald // return: status
138456042629SMatthias Ringwald };
138556042629SMatthias Ringwald
138656042629SMatthias Ringwald /**
138756042629SMatthias Ringwald * @param le_scan_interval ([0x0004, 0x4000], unit: 0.625 msec)
138856042629SMatthias Ringwald * @param le_scan_window ([0x0004, 0x4000], unit: 0.625 msec)
138956042629SMatthias Ringwald * @param initiator_filter_policy (peer address type + peer address (0), whitelist (1))
139056042629SMatthias Ringwald * @param peer_address_type (public (0), random (1))
139156042629SMatthias Ringwald * @param peer_address
139256042629SMatthias Ringwald * @param own_address_type (public (0), random (1))
139356042629SMatthias Ringwald * @param conn_interval_min ([0x0006, 0x0c80], unit: 1.25 msec)
139456042629SMatthias Ringwald * @param conn_interval_max ([0x0006, 0x0c80], unit: 1.25 msec)
139556042629SMatthias Ringwald * @param conn_latency (number of connection events [0x0000, 0x01f4])
139656042629SMatthias Ringwald * @param supervision_timeout ([0x000a, 0x0c80], unit: 10 msec)
139756042629SMatthias Ringwald * @param minimum_CE_length ([0x0000, 0xffff], unit: 0.625 msec)
139856042629SMatthias Ringwald * @param maximum_CE_length ([0x0000, 0xffff], unit: 0.625 msec)
139956042629SMatthias Ringwald */
140056042629SMatthias Ringwald const hci_cmd_t hci_le_create_connection= {
1401ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_CREATE_CONNECTION, "2211B1222222"
140256042629SMatthias Ringwald // return: none -> le create connection complete event
140356042629SMatthias Ringwald };
140456042629SMatthias Ringwald
140556042629SMatthias Ringwald const hci_cmd_t hci_le_create_connection_cancel = {
1406ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_CREATE_CONNECTION_CANCEL, ""
140756042629SMatthias Ringwald // return: status
140856042629SMatthias Ringwald };
140956042629SMatthias Ringwald
141056042629SMatthias Ringwald const hci_cmd_t hci_le_read_white_list_size = {
1411ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_WHITE_LIST_SIZE, ""
141256042629SMatthias Ringwald // return: status, number of entries in controller whitelist
141356042629SMatthias Ringwald };
141456042629SMatthias Ringwald
141556042629SMatthias Ringwald const hci_cmd_t hci_le_clear_white_list = {
1416ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_CLEAR_WHITE_LIST, ""
141756042629SMatthias Ringwald // return: status
141856042629SMatthias Ringwald };
141956042629SMatthias Ringwald
142056042629SMatthias Ringwald /**
142156042629SMatthias Ringwald * @param address_type (public (0), random (1))
142256042629SMatthias Ringwald * @param bd_addr
142356042629SMatthias Ringwald */
142456042629SMatthias Ringwald const hci_cmd_t hci_le_add_device_to_white_list = {
1425ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_ADD_DEVICE_TO_WHITE_LIST, "1B"
142656042629SMatthias Ringwald // return: status
142756042629SMatthias Ringwald };
142856042629SMatthias Ringwald
142956042629SMatthias Ringwald /**
143056042629SMatthias Ringwald * @param address_type (public (0), random (1))
143156042629SMatthias Ringwald * @param bd_addr
143256042629SMatthias Ringwald */
143356042629SMatthias Ringwald const hci_cmd_t hci_le_remove_device_from_white_list = {
1434ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOVE_DEVICE_FROM_WHITE_LIST, "1B"
143556042629SMatthias Ringwald // return: status
143656042629SMatthias Ringwald };
143756042629SMatthias Ringwald
143856042629SMatthias Ringwald /**
143956042629SMatthias Ringwald * @param conn_handle
144056042629SMatthias Ringwald * @param conn_interval_min ([0x0006,0x0c80], unit: 1.25 msec)
144156042629SMatthias Ringwald * @param conn_interval_max ([0x0006,0x0c80], unit: 1.25 msec)
144256042629SMatthias Ringwald * @param conn_latency ([0x0000,0x03e8], number of connection events)
144356042629SMatthias Ringwald * @param supervision_timeout ([0x000a,0x0c80], unit: 10 msec)
144456042629SMatthias Ringwald * @param minimum_CE_length ([0x0000,0xffff], unit: 0.625 msec)
144556042629SMatthias Ringwald * @param maximum_CE_length ([0x0000,0xffff], unit: 0.625 msec)
144656042629SMatthias Ringwald */
144756042629SMatthias Ringwald const hci_cmd_t hci_le_connection_update = {
1448ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_CONNECTION_UPDATE, "H222222"
144956042629SMatthias Ringwald // return: none -> le connection update complete event
145056042629SMatthias Ringwald };
145156042629SMatthias Ringwald
145256042629SMatthias Ringwald /**
145356042629SMatthias Ringwald * @param channel_map_lower_32bits
145456042629SMatthias Ringwald * @param channel_map_higher_5bits
145556042629SMatthias Ringwald */
145656042629SMatthias Ringwald const hci_cmd_t hci_le_set_host_channel_classification = {
1457ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_HOST_CHANNEL_CLASSIFICATION, "41"
145856042629SMatthias Ringwald // return: status
145956042629SMatthias Ringwald };
146056042629SMatthias Ringwald
146156042629SMatthias Ringwald /**
146256042629SMatthias Ringwald * @param conn_handle
146356042629SMatthias Ringwald */
146456042629SMatthias Ringwald const hci_cmd_t hci_le_read_channel_map = {
1465ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_CHANNEL_MAP, "H"
146656042629SMatthias Ringwald // return: status, connection handle, channel map (5 bytes, 37 used)
146756042629SMatthias Ringwald };
146856042629SMatthias Ringwald
146956042629SMatthias Ringwald /**
147056042629SMatthias Ringwald * @param conn_handle
147156042629SMatthias Ringwald */
147256042629SMatthias Ringwald const hci_cmd_t hci_le_read_remote_used_features = {
1473ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_REMOTE_USED_FEATURES, "H"
147456042629SMatthias Ringwald // return: none -> le read remote used features complete event
147556042629SMatthias Ringwald };
147656042629SMatthias Ringwald
147756042629SMatthias Ringwald /**
147856042629SMatthias Ringwald * @param key ((128) for AES-128)
147956042629SMatthias Ringwald * @param plain_text (128)
148056042629SMatthias Ringwald */
148156042629SMatthias Ringwald const hci_cmd_t hci_le_encrypt = {
1482ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_ENCRYPT, "PP"
148356042629SMatthias Ringwald // return: status, encrypted data (128)
148456042629SMatthias Ringwald };
148556042629SMatthias Ringwald
148656042629SMatthias Ringwald const hci_cmd_t hci_le_rand = {
1487ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_RAND, ""
148856042629SMatthias Ringwald // return: status, random number (64)
148956042629SMatthias Ringwald };
149056042629SMatthias Ringwald
149156042629SMatthias Ringwald /**
149256042629SMatthias Ringwald * @param conn_handle
149356042629SMatthias Ringwald * @param random_number_lower_32bits
149456042629SMatthias Ringwald * @param random_number_higher_32bits
149556042629SMatthias Ringwald * @param encryption_diversifier (16)
149656042629SMatthias Ringwald * @param long_term_key (128)
149756042629SMatthias Ringwald */
149856042629SMatthias Ringwald const hci_cmd_t hci_le_start_encryption = {
1499ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_START_ENCRYPTION, "H442P"
150056042629SMatthias Ringwald // return: none -> encryption changed or encryption key refresh complete event
150156042629SMatthias Ringwald };
150256042629SMatthias Ringwald
150356042629SMatthias Ringwald /**
150456042629SMatthias Ringwald * @param connection_handle
150556042629SMatthias Ringwald * @param long_term_key (128)
150656042629SMatthias Ringwald */
150756042629SMatthias Ringwald const hci_cmd_t hci_le_long_term_key_request_reply = {
1508ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_LONG_TERM_KEY_REQUEST_REPLY, "HP"
150956042629SMatthias Ringwald // return: status, connection handle
151056042629SMatthias Ringwald };
151156042629SMatthias Ringwald
151256042629SMatthias Ringwald /**
151356042629SMatthias Ringwald * @param conn_handle
151456042629SMatthias Ringwald */
151556042629SMatthias Ringwald const hci_cmd_t hci_le_long_term_key_negative_reply = {
1516ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_LONG_TERM_KEY_NEGATIVE_REPLY, "H"
151756042629SMatthias Ringwald // return: status, connection handle
151856042629SMatthias Ringwald };
151956042629SMatthias Ringwald
152056042629SMatthias Ringwald /**
152156042629SMatthias Ringwald * @param conn_handle
152256042629SMatthias Ringwald */
152356042629SMatthias Ringwald const hci_cmd_t hci_le_read_supported_states = {
1524ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_SUPPORTED_STATES, "H"
152556042629SMatthias Ringwald // return: status, LE states (64)
152656042629SMatthias Ringwald };
152756042629SMatthias Ringwald
152856042629SMatthias Ringwald /**
152956042629SMatthias Ringwald * @param rx_frequency ([0x00 0x27], frequency (MHz): 2420 + N*2)
153056042629SMatthias Ringwald */
153156042629SMatthias Ringwald const hci_cmd_t hci_le_receiver_test = {
1532ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_RECEIVER_TEST, "1"
153356042629SMatthias Ringwald // return: status
153456042629SMatthias Ringwald };
153556042629SMatthias Ringwald
153656042629SMatthias Ringwald /**
153756042629SMatthias Ringwald * @param tx_frequency ([0x00 0x27], frequency (MHz): 2420 + N*2)
153856042629SMatthias Ringwald * @param test_payload_lengh ([0x00,0x25])
153956042629SMatthias Ringwald * @param packet_payload ([0,7] different patterns)
154056042629SMatthias Ringwald */
154156042629SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test = {
1542ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_TRANSMITTER_TEST, "111"
154356042629SMatthias Ringwald // return: status
154456042629SMatthias Ringwald };
154556042629SMatthias Ringwald
154656042629SMatthias Ringwald /**
154756042629SMatthias Ringwald * @param end_test_cmd
154856042629SMatthias Ringwald */
154956042629SMatthias Ringwald const hci_cmd_t hci_le_test_end = {
1550ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_TEST_END, "1"
155156042629SMatthias Ringwald // return: status, number of packets (8)
155256042629SMatthias Ringwald };
155382180fcaSMatthias Ringwald
155482180fcaSMatthias Ringwald /**
1555fe704c95SMatthias Ringwald * @param conn_handle
1556fe704c95SMatthias Ringwald * @param conn_interval_min ([0x0006,0x0c80], unit: 1.25 msec)
1557fe704c95SMatthias Ringwald * @param conn_interval_max ([0x0006,0x0c80], unit: 1.25 msec)
1558fe704c95SMatthias Ringwald * @param conn_latency ([0x0000,0x03e8], number of connection events)
1559fe704c95SMatthias Ringwald * @param supervision_timeout ([0x000a,0x0c80], unit: 10 msec)
1560fe704c95SMatthias Ringwald * @param minimum_CE_length ([0x0000,0xffff], unit: 0.625 msec)
1561fe704c95SMatthias Ringwald * @param maximum_CE_length ([0x0000,0xffff], unit: 0.625 msec)
1562fe704c95SMatthias Ringwald */
1563fe704c95SMatthias Ringwald const hci_cmd_t hci_le_remote_connection_parameter_request_reply = {
1564ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_REPLY, "H222222"
1565fe704c95SMatthias Ringwald // return: status, connection handle
1566fe704c95SMatthias Ringwald };
1567fe704c95SMatthias Ringwald
1568fe704c95SMatthias Ringwald /**
1569fe704c95SMatthias Ringwald * @param con_handle
1570fe704c95SMatthias Ringwald * @param reason
1571fe704c95SMatthias Ringwald */
1572fe704c95SMatthias Ringwald const hci_cmd_t hci_le_remote_connection_parameter_request_negative_reply = {
1573ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_NEGATIVE_REPLY, "H1"
1574fe704c95SMatthias Ringwald // return: status, connection handle
1575fe704c95SMatthias Ringwald };
1576fe704c95SMatthias Ringwald
1577fe704c95SMatthias Ringwald /**
15780ea2847fSMatthias Ringwald * @param con_handle
15790ea2847fSMatthias Ringwald * @param tx_octets
15800ea2847fSMatthias Ringwald * @param tx_time
15810ea2847fSMatthias Ringwald */
15820ea2847fSMatthias Ringwald const hci_cmd_t hci_le_set_data_length = {
1583ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_DATA_LENGTH, "H22"
15840ea2847fSMatthias Ringwald // return: status, connection handle
15850ea2847fSMatthias Ringwald };
15860ea2847fSMatthias Ringwald
15870ea2847fSMatthias Ringwald /**
15880ea2847fSMatthias Ringwald */
15890ea2847fSMatthias Ringwald const hci_cmd_t hci_le_read_suggested_default_data_length = {
1590ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_SUGGESTED_DEFAULT_DATA_LENGTH, ""
15910ea2847fSMatthias Ringwald // return: status, suggested max tx octets, suggested max tx time
15920ea2847fSMatthias Ringwald };
15930ea2847fSMatthias Ringwald
15940ea2847fSMatthias Ringwald /**
15950ea2847fSMatthias Ringwald * @param suggested_max_tx_octets
15960ea2847fSMatthias Ringwald * @param suggested_max_tx_time
15970ea2847fSMatthias Ringwald */
15980ea2847fSMatthias Ringwald const hci_cmd_t hci_le_write_suggested_default_data_length = {
1599ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_WRITE_SUGGESTED_DEFAULT_DATA_LENGTH, "22"
16000ea2847fSMatthias Ringwald // return: status
16010ea2847fSMatthias Ringwald };
16020ea2847fSMatthias Ringwald
16030ea2847fSMatthias Ringwald /**
160482180fcaSMatthias Ringwald */
160582180fcaSMatthias Ringwald const hci_cmd_t hci_le_read_local_p256_public_key = {
1606ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_LOCAL_P256_PUBLIC_KEY, ""
160782180fcaSMatthias Ringwald // LE Read Local P-256 Public Key Complete is generated on completion
160882180fcaSMatthias Ringwald };
160982180fcaSMatthias Ringwald
161082180fcaSMatthias Ringwald /**
1611fcae305fSMatthias Ringwald * @param public key
1612fcae305fSMatthias Ringwald * @param private key
161382180fcaSMatthias Ringwald */
161482180fcaSMatthias Ringwald const hci_cmd_t hci_le_generate_dhkey = {
1615ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_GENERATE_DHKEY, "QQ"
161682180fcaSMatthias Ringwald // LE Generate DHKey Complete is generated on completion
161782180fcaSMatthias Ringwald };
161882180fcaSMatthias Ringwald
16190ea2847fSMatthias Ringwald /**
1620173ed1a3SMatthias Ringwald * @param Peer_Identity_Address_Type
1621173ed1a3SMatthias Ringwald * @param Peer_Identity_Address
1622173ed1a3SMatthias Ringwald * @param Peer_IRK
1623173ed1a3SMatthias Ringwald * @param Local_IRK
1624173ed1a3SMatthias Ringwald */
1625173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_add_device_to_resolving_list = {
1626173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_ADD_DEVICE_TO_RESOLVING_LIST, "1BPP"
1627173ed1a3SMatthias Ringwald };
1628173ed1a3SMatthias Ringwald
1629173ed1a3SMatthias Ringwald /**
1630173ed1a3SMatthias Ringwald * @param Peer_Identity_Address_Type
1631173ed1a3SMatthias Ringwald * @param Peer_Identity_Address
1632173ed1a3SMatthias Ringwald */
1633173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_remove_device_from_resolving_list = {
1634173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOVE_DEVICE_FROM_RESOLVING_LIST, "1B"
1635173ed1a3SMatthias Ringwald };
1636173ed1a3SMatthias Ringwald
1637173ed1a3SMatthias Ringwald /**
1638173ed1a3SMatthias Ringwald */
1639173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_clear_resolving_list = {
1640173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_CLEAR_RESOLVING_LIST, ""
1641173ed1a3SMatthias Ringwald };
1642173ed1a3SMatthias Ringwald
1643173ed1a3SMatthias Ringwald /**
1644173ed1a3SMatthias Ringwald */
1645173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_read_resolving_list_size = {
1646173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_RESOLVING_LIST_SIZE, ""
1647173ed1a3SMatthias Ringwald };
1648173ed1a3SMatthias Ringwald
1649173ed1a3SMatthias Ringwald /**
1650173ed1a3SMatthias Ringwald * @param Peer_Identity_Address_Type
1651173ed1a3SMatthias Ringwald * @param Peer_Identity_Address
1652173ed1a3SMatthias Ringwald */
1653173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_read_peer_resolvable_address = {
1654173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_PEER_RESOLVABLE_ADDRESS, ""
1655173ed1a3SMatthias Ringwald };
1656173ed1a3SMatthias Ringwald
1657173ed1a3SMatthias Ringwald /**
1658173ed1a3SMatthias Ringwald * @param Peer_Identity_Address_Type
1659173ed1a3SMatthias Ringwald * @param Peer_Identity_Address
1660173ed1a3SMatthias Ringwald */
1661173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_read_local_resolvable_address = {
1662173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_LOCAL_RESOLVABLE_ADDRESS, ""
1663173ed1a3SMatthias Ringwald };
1664173ed1a3SMatthias Ringwald
1665173ed1a3SMatthias Ringwald /**
1666173ed1a3SMatthias Ringwald * @param Address_Resolution_Enable
1667173ed1a3SMatthias Ringwald */
1668173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_set_address_resolution_enabled= {
1669173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_ADDRESS_RESOLUTION_ENABLED, "1"
1670173ed1a3SMatthias Ringwald };
1671173ed1a3SMatthias Ringwald
1672173ed1a3SMatthias Ringwald /**
1673173ed1a3SMatthias Ringwald * @param RPA_Timeout in seconds, range 0x0001 to 0x0E10, default: 900 s
1674173ed1a3SMatthias Ringwald */
1675173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_set_resolvable_private_address_timeout= {
1676173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_RESOLVABLE_PRIVATE_ADDRESS_TIMEOUT, "2"
1677173ed1a3SMatthias Ringwald };
1678173ed1a3SMatthias Ringwald
1679173ed1a3SMatthias Ringwald /**
16800ea2847fSMatthias Ringwald */
16810ea2847fSMatthias Ringwald const hci_cmd_t hci_le_read_maximum_data_length = {
1682ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_MAXIMUM_DATA_LENGTH, ""
16830ea2847fSMatthias Ringwald // return: status, supported max tx octets, supported max tx time, supported max rx octets, supported max rx time
16840ea2847fSMatthias Ringwald };
16850ea2847fSMatthias Ringwald
1686ca13daefSMatthias Ringwald /**
1687ca13daefSMatthias Ringwald * @param con_handle
1688ca13daefSMatthias Ringwald */
1689ca13daefSMatthias Ringwald const hci_cmd_t hci_le_read_phy = {
1690ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_PHY, "H"
1691ca13daefSMatthias Ringwald // return: status, connection handler, tx phy, rx phy
1692ca13daefSMatthias Ringwald };
1693ca13daefSMatthias Ringwald
1694ca13daefSMatthias Ringwald /**
1695ca13daefSMatthias Ringwald * @param all_phys
1696ca13daefSMatthias Ringwald * @param tx_phys
1697ca13daefSMatthias Ringwald * @param rx_phys
1698ca13daefSMatthias Ringwald */
1699ca13daefSMatthias Ringwald const hci_cmd_t hci_le_set_default_phy = {
1700ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_DEFAULT_PHY, "111"
1701ca13daefSMatthias Ringwald // return: status
1702ca13daefSMatthias Ringwald };
1703ca13daefSMatthias Ringwald
1704ca13daefSMatthias Ringwald /**
1705ca13daefSMatthias Ringwald * @param con_handle
1706ca13daefSMatthias Ringwald * @param all_phys
1707ca13daefSMatthias Ringwald * @param tx_phys
1708ca13daefSMatthias Ringwald * @param rx_phys
1709ca13daefSMatthias Ringwald * @param phy_options
1710ca13daefSMatthias Ringwald */
1711ca13daefSMatthias Ringwald const hci_cmd_t hci_le_set_phy = {
171252aff43aSfominykhandrei HCI_OPCODE_HCI_LE_SET_PHY, "H1112"
1713ca13daefSMatthias Ringwald // LE PHY Update Complete is generated on completion
1714ca13daefSMatthias Ringwald };
1715ca13daefSMatthias Ringwald
17160c1cf6c6SMatthias Ringwald /**
17170c1cf6c6SMatthias Ringwald * @param rx_channel
17180c1cf6c6SMatthias Ringwald * @param phy
17190c1cf6c6SMatthias Ringwald * @param modulation_index
17200c1cf6c6SMatthias Ringwald */
17210c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_receiver_test_v2 = {
17220c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_RECEIVER_TEST_V2, "111"
17230c1cf6c6SMatthias Ringwald };
17240c1cf6c6SMatthias Ringwald
17250c1cf6c6SMatthias Ringwald /**
17260c1cf6c6SMatthias Ringwald * @param tx_channel
17270c1cf6c6SMatthias Ringwald * @param test_data_length
17280c1cf6c6SMatthias Ringwald * @param packet_payload
17290c1cf6c6SMatthias Ringwald * @param phy
17300c1cf6c6SMatthias Ringwald */
17310c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test_v2 = {
17320c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_TRANSMITTER_TEST_V2, "1111"
17330c1cf6c6SMatthias Ringwald };
17340c1cf6c6SMatthias Ringwald
17350c1cf6c6SMatthias Ringwald /**
17360c1cf6c6SMatthias Ringwald * @param advertising_handle
17370c1cf6c6SMatthias Ringwald * @param random_address
17380c1cf6c6SMatthias Ringwald */
17390c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_advertising_set_random_address = {
17400c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_ADVERTISING_SET_RANDOM_ADDRESS, "1B"
17410c1cf6c6SMatthias Ringwald };
17420c1cf6c6SMatthias Ringwald
17430c1cf6c6SMatthias Ringwald /**
17440c1cf6c6SMatthias Ringwald * @param advertising_handle
17450c1cf6c6SMatthias Ringwald * @param advertising_event_properties
17460c1cf6c6SMatthias Ringwald * @param primary_advertising_interval_min in 0.625 ms, range: 0x000020..0xffffff
17470c1cf6c6SMatthias Ringwald * @param primary_advertising_interval_max in 0.625 ms, range: 0x000020..0xffffff
17480c1cf6c6SMatthias Ringwald * @param primary_advertising_channel_map
17490c1cf6c6SMatthias Ringwald * @param own_address_type
17500c1cf6c6SMatthias Ringwald * @param peer_address_type
17510c1cf6c6SMatthias Ringwald * @param peer_address
17520c1cf6c6SMatthias Ringwald * @param advertising_filter_policy
17530c1cf6c6SMatthias Ringwald * @param advertising_tx_power in dBm, range: -127..20
17540c1cf6c6SMatthias Ringwald * @param primary_advertising_phy
17550c1cf6c6SMatthias Ringwald * @param secondary_advertising_max_skip
17560c1cf6c6SMatthias Ringwald * @param secondary_advertising_phy
17570c1cf6c6SMatthias Ringwald * @param advertising_sid
17580c1cf6c6SMatthias Ringwald * @param scan_request_notification_enable
17590c1cf6c6SMatthias Ringwald */
17600c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_advertising_parameters = {
17610c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_EXTENDED_ADVERTISING_PARAMETERS, "1233111B1111111"
17620c1cf6c6SMatthias Ringwald };
17630c1cf6c6SMatthias Ringwald
17640c1cf6c6SMatthias Ringwald /**
17650c1cf6c6SMatthias Ringwald * @param advertising_handle
17660c1cf6c6SMatthias Ringwald * @param operation
17670c1cf6c6SMatthias Ringwald * @param fragment_preference
17680c1cf6c6SMatthias Ringwald * @param advertising_data_length
17690c1cf6c6SMatthias Ringwald * @param advertising_data
17700c1cf6c6SMatthias Ringwald */
17710c1cf6c6SMatthias Ringwald
17720c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_advertising_data = {
17730c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_EXTENDED_ADVERTISING_DATA, "111JV"
17740c1cf6c6SMatthias Ringwald };
17750c1cf6c6SMatthias Ringwald
17760c1cf6c6SMatthias Ringwald /**
17770c1cf6c6SMatthias Ringwald * @param advertising_handle
17780c1cf6c6SMatthias Ringwald * @param operation
17790c1cf6c6SMatthias Ringwald * @param fragment_preference
17800c1cf6c6SMatthias Ringwald * @param scan_response_data_length
17810c1cf6c6SMatthias Ringwald * @param scan_response_data
17820c1cf6c6SMatthias Ringwald */
17830c1cf6c6SMatthias Ringwald
17840c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_scan_response_data = {
17850c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_EXTENDED_SCAN_RESPONSE_DATA, "111JV"
17860c1cf6c6SMatthias Ringwald };
17870c1cf6c6SMatthias Ringwald
17880c1cf6c6SMatthias Ringwald /**
17890c1cf6c6SMatthias Ringwald * @param enable
17900c1cf6c6SMatthias Ringwald * @param num_sets
17910c1cf6c6SMatthias Ringwald * @param advertising_handle[i]
17920c1cf6c6SMatthias Ringwald * @param duration[i]
17930c1cf6c6SMatthias Ringwald * @param max_extended_advertising_events[i]
17940c1cf6c6SMatthias Ringwald */
17950c1cf6c6SMatthias Ringwald
17960c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_advertising_enable = {
179727f212a7SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_EXTENDED_ADVERTISING_ENABLE, "1a[121]"
17980c1cf6c6SMatthias Ringwald };
17990c1cf6c6SMatthias Ringwald
18000c1cf6c6SMatthias Ringwald /**
18010c1cf6c6SMatthias Ringwald */
18020c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_maximum_advertising_data_length = {
18030c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_MAXIMUM_ADVERTISING_DATA_LENGTH, ""
18040c1cf6c6SMatthias Ringwald };
18050c1cf6c6SMatthias Ringwald
18060c1cf6c6SMatthias Ringwald /**
18070c1cf6c6SMatthias Ringwald */
18080c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_number_of_supported_advertising_sets = {
18090c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_NUMBER_OF_SUPPORTED_ADVERTISING_SETS, ""
18100c1cf6c6SMatthias Ringwald };
18110c1cf6c6SMatthias Ringwald
18120c1cf6c6SMatthias Ringwald /**
18130c1cf6c6SMatthias Ringwald * @param advertising_handle
18140c1cf6c6SMatthias Ringwald */
18150c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_advertising_set = {
18160c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOVE_ADVERTISING_SET, "1"
18170c1cf6c6SMatthias Ringwald };
18180c1cf6c6SMatthias Ringwald
18190c1cf6c6SMatthias Ringwald /**
18200c1cf6c6SMatthias Ringwald */
18210c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_clear_advertising_sets = {
18220c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_CLEAR_ADVERTISING_SETS, ""
18230c1cf6c6SMatthias Ringwald };
18240c1cf6c6SMatthias Ringwald
18250c1cf6c6SMatthias Ringwald /**
18260c1cf6c6SMatthias Ringwald * @param advertising_handle
18270c1cf6c6SMatthias Ringwald * @param periodic_advertising_interval_min * 1.25 ms, range 0x0006..0xffff
18280c1cf6c6SMatthias Ringwald * @param periodic_advertising_interval_max * 1.25 ms, range 0x0006..0xffff
18290c1cf6c6SMatthias Ringwald * @param periodic_advertising_properties
18300c1cf6c6SMatthias Ringwald */
18310c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_parameters = {
18320c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_PARAMETERS, "1222"
18330c1cf6c6SMatthias Ringwald };
18340c1cf6c6SMatthias Ringwald
18350c1cf6c6SMatthias Ringwald /**
18360c1cf6c6SMatthias Ringwald * @param advertising_handle
18370c1cf6c6SMatthias Ringwald * @param operation
18380c1cf6c6SMatthias Ringwald * @param advertising_data_length
18390c1cf6c6SMatthias Ringwald * @param advertising_data
18400c1cf6c6SMatthias Ringwald */
18410c1cf6c6SMatthias Ringwald
18420c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_data = {
18430c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_DATA, "11JV"
18440c1cf6c6SMatthias Ringwald };
18450c1cf6c6SMatthias Ringwald
18460c1cf6c6SMatthias Ringwald /**
18470c1cf6c6SMatthias Ringwald * @param enable
18480c1cf6c6SMatthias Ringwald * @param advertising_handle
18490c1cf6c6SMatthias Ringwald */
18500c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_enable = {
18510c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_ENABLE, "11"
18520c1cf6c6SMatthias Ringwald };
18530c1cf6c6SMatthias Ringwald
18540c1cf6c6SMatthias Ringwald /**
18550c1cf6c6SMatthias Ringwald * @param own_address_type
18560c1cf6c6SMatthias Ringwald * @param scanning_filter_policy
18570c1cf6c6SMatthias Ringwald * @param scanning_phys 0 = LE 1M PHY | 2 = LE Coded PHY
185827f212a7SMatthias Ringwald * @param scan_type[i]
185927f212a7SMatthias Ringwald * @param scan_interval[i] * 0.625, range = 0x0004..0xffff
186027f212a7SMatthias Ringwald * @param scan_window[i] * 0.625, range = 0x0004..0xffff
18610c1cf6c6SMatthias Ringwald */
18620c1cf6c6SMatthias Ringwald
18636ea37a0fSMatthias Ringwald const hci_cmd_t hci_le_set_extended_scan_parameters = {
18646ea37a0fSMatthias Ringwald HCI_OPCODE_HCI_LE_SET_EXTENDED_SCAN_PARAMETERS, "11b[122]"
18650c1cf6c6SMatthias Ringwald };
18660c1cf6c6SMatthias Ringwald
18670c1cf6c6SMatthias Ringwald /**
18680c1cf6c6SMatthias Ringwald * @param enable
18690c1cf6c6SMatthias Ringwald * @param filter_duplicates
18700c1cf6c6SMatthias Ringwald * @param duration 0 = Scan continuously until explicitly disable, 10 ms
18710c1cf6c6SMatthias Ringwald * @param period 0 = Scan continuously, 1.28 s
18720c1cf6c6SMatthias Ringwald */
18730c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_scan_enable = {
18740c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_EXTENDED_SCAN_ENABLE, "1122"
18750c1cf6c6SMatthias Ringwald };
18760c1cf6c6SMatthias Ringwald
18770c1cf6c6SMatthias Ringwald /**
18780c1cf6c6SMatthias Ringwald * @param initiator_filter_policy
18790c1cf6c6SMatthias Ringwald * @param own_address_type
18800c1cf6c6SMatthias Ringwald * @param peer_address_type
18810c1cf6c6SMatthias Ringwald * @param peer_address
18820c1cf6c6SMatthias Ringwald * @param initiating_phys with bit 0 = LE 1M PHY, bit 1 = LE 2M PHY, bit 2 = Coded PHY
18830c1cf6c6SMatthias Ringwald * @param scan_interval[i] * 0.625 ms
18840c1cf6c6SMatthias Ringwald * @param scan_window[i] * 0.625 ms
18850c1cf6c6SMatthias Ringwald * @param connection_interval_min[i] * 1.25 ms
18860c1cf6c6SMatthias Ringwald * @param connection_interval_max[i] * 1.25 ms
18870c1cf6c6SMatthias Ringwald * @param connection_latency[i]
18880c1cf6c6SMatthias Ringwald * @param supervision_timeout[i] * 10 ms
18890c1cf6c6SMatthias Ringwald * @param min_ce_length[i] * 0.625 ms
18900c1cf6c6SMatthias Ringwald * @param max_ce_length[i] * 0.625 ms
18910c1cf6c6SMatthias Ringwald */
18920c1cf6c6SMatthias Ringwald
18930c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_extended_create_connection = {
18940c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_EXTENDED_CREATE_CONNECTION, "111Bb[22222222]"
18950c1cf6c6SMatthias Ringwald };
18960c1cf6c6SMatthias Ringwald
18970c1cf6c6SMatthias Ringwald /**
18980c1cf6c6SMatthias Ringwald * @param options
18990c1cf6c6SMatthias Ringwald * @param advertising_sid
19000c1cf6c6SMatthias Ringwald * @param advertiser_address_type
19010c1cf6c6SMatthias Ringwald * @param advertiser_address
19020c1cf6c6SMatthias Ringwald * @param skip
19030c1cf6c6SMatthias Ringwald * @param sync_timeout * 10 ms
19040c1cf6c6SMatthias Ringwald * @param sync_cte_type
19050c1cf6c6SMatthias Ringwald */
19060c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_create_sync = {
19070c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_CREATE_SYNC, "111B221"
19080c1cf6c6SMatthias Ringwald };
19090c1cf6c6SMatthias Ringwald
19100c1cf6c6SMatthias Ringwald /**
19110c1cf6c6SMatthias Ringwald */
19120c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_create_sync_cancel = {
19130c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_CREATE_SYNC_CANCEL, ""
19140c1cf6c6SMatthias Ringwald };
19150c1cf6c6SMatthias Ringwald
19160c1cf6c6SMatthias Ringwald /**
19170c1cf6c6SMatthias Ringwald * @param sync_handle
19180c1cf6c6SMatthias Ringwald */
19190c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_terminate_sync = {
1920c0112d43SMatthias Ringwald HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_TERMINATE_SYNC, "2"
19210c1cf6c6SMatthias Ringwald };
19220c1cf6c6SMatthias Ringwald
19230c1cf6c6SMatthias Ringwald /**
19240c1cf6c6SMatthias Ringwald * @param advertiser_address_type
19250c1cf6c6SMatthias Ringwald * @param advertiser_address
19260c1cf6c6SMatthias Ringwald * @param advertising_sid
19270c1cf6c6SMatthias Ringwald */
19280c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_add_device_to_periodic_advertiser_list = {
19290c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_ADD_DEVICE_TO_PERIODIC_ADVERTISER_LIST, "1B1"
19300c1cf6c6SMatthias Ringwald };
19310c1cf6c6SMatthias Ringwald
19320c1cf6c6SMatthias Ringwald /**
19330c1cf6c6SMatthias Ringwald * @param advertiser_address_type
19340c1cf6c6SMatthias Ringwald * @param advertiser_address
19350c1cf6c6SMatthias Ringwald * @param advertising_sid
19360c1cf6c6SMatthias Ringwald */
19370c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_device_from_periodic_advertiser_list = {
19380c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISER_LIST, "1B1"
19390c1cf6c6SMatthias Ringwald };
19400c1cf6c6SMatthias Ringwald
19410c1cf6c6SMatthias Ringwald /**
19420c1cf6c6SMatthias Ringwald */
19430c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_clear_periodic_advertiser_list = {
19440c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_CLEAR_PERIODIC_ADVERTISER_LIST, ""
19450c1cf6c6SMatthias Ringwald };
19460c1cf6c6SMatthias Ringwald
19470c1cf6c6SMatthias Ringwald /**
19480c1cf6c6SMatthias Ringwald */
19490c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_periodic_advertiser_list_size = {
19500c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_PERIODIC_ADVERTISER_LIST_SIZE, ""
19510c1cf6c6SMatthias Ringwald };
19520c1cf6c6SMatthias Ringwald
19530c1cf6c6SMatthias Ringwald /**
19540c1cf6c6SMatthias Ringwald */
19550c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_transmit_power = {
19560c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_TRANSMIT_POWER, ""
19570c1cf6c6SMatthias Ringwald };
19580c1cf6c6SMatthias Ringwald
19590c1cf6c6SMatthias Ringwald /**
19600c1cf6c6SMatthias Ringwald */
19610c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_rf_path_compensation = {
19620c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_RF_PATH_COMPENSATION, ""
19630c1cf6c6SMatthias Ringwald };
19640c1cf6c6SMatthias Ringwald
19650c1cf6c6SMatthias Ringwald /**
19660c1cf6c6SMatthias Ringwald * @param rf_tx_path_compensation_value * 0.1 dB, signed
19670c1cf6c6SMatthias Ringwald * @param rf_rx_path_compensation_value * 0.1 dB, signed
19680c1cf6c6SMatthias Ringwald */
19690c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_write_rf_path_compensation = {
19700c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_WRITE_RF_PATH_COMPENSATION, "22"
19710c1cf6c6SMatthias Ringwald };
19720c1cf6c6SMatthias Ringwald
19730c1cf6c6SMatthias Ringwald /**
19740c1cf6c6SMatthias Ringwald * @param peer_identity_address_type
19750c1cf6c6SMatthias Ringwald * @param peer_identity_address
19760c1cf6c6SMatthias Ringwald * @param privacy_mode
19770c1cf6c6SMatthias Ringwald */
19780c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_privacy_mode = {
19790c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PRIVACY_MODE, "1B1"
19800c1cf6c6SMatthias Ringwald };
19810c1cf6c6SMatthias Ringwald
19820c1cf6c6SMatthias Ringwald /**
19830c1cf6c6SMatthias Ringwald * @param rx_channel
19840c1cf6c6SMatthias Ringwald * @param phy
19850c1cf6c6SMatthias Ringwald * @param modulation_index
19860c1cf6c6SMatthias Ringwald * @param expected_cte_length
19870c1cf6c6SMatthias Ringwald * @param expected_cte_type
19880c1cf6c6SMatthias Ringwald * @param slot_durations
19890c1cf6c6SMatthias Ringwald * @param switching_pattern_length
19900c1cf6c6SMatthias Ringwald * @param antenna_ids[i]
19910c1cf6c6SMatthias Ringwald */
19920c1cf6c6SMatthias Ringwald
19930c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_receiver_test_v3 = {
19940c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_RECEIVER_TEST_V3, "111111a[1]"
19950c1cf6c6SMatthias Ringwald };
19960c1cf6c6SMatthias Ringwald
19970c1cf6c6SMatthias Ringwald /**
19980c1cf6c6SMatthias Ringwald * @param tx_channel
19990c1cf6c6SMatthias Ringwald * @param test_data_length
20000c1cf6c6SMatthias Ringwald * @param packet_payload
20010c1cf6c6SMatthias Ringwald * @param phy
20020c1cf6c6SMatthias Ringwald * @param cte_length
20030c1cf6c6SMatthias Ringwald * @param cte_type
20040c1cf6c6SMatthias Ringwald * @param switching_pattern_length
20050c1cf6c6SMatthias Ringwald * @param antenna_ids[i]
20060c1cf6c6SMatthias Ringwald */
20070c1cf6c6SMatthias Ringwald
20080c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test_v3 = {
20090c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_TRANSMITTER_TEST_V3, "111111a[1]"
20100c1cf6c6SMatthias Ringwald };
20110c1cf6c6SMatthias Ringwald
20120c1cf6c6SMatthias Ringwald /**
20130c1cf6c6SMatthias Ringwald * @param advertising_handle
20140c1cf6c6SMatthias Ringwald * @param cte_length
20150c1cf6c6SMatthias Ringwald * @param cte_type
20160c1cf6c6SMatthias Ringwald * @param cte_count
20170c1cf6c6SMatthias Ringwald * @param switching_pattern_length
20180c1cf6c6SMatthias Ringwald * @param antenna_ids[i]
20190c1cf6c6SMatthias Ringwald */
20200c1cf6c6SMatthias Ringwald
20210c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connectionless_cte_transmit_parameters = {
20220c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_CONNECTIONLESS_CTE_TRANSMIT_PARAMETERS, "1111a[1]"
20230c1cf6c6SMatthias Ringwald };
20240c1cf6c6SMatthias Ringwald
20250c1cf6c6SMatthias Ringwald /**
20260c1cf6c6SMatthias Ringwald * @param advertising_handle
20270c1cf6c6SMatthias Ringwald * @param cte_enable
20280c1cf6c6SMatthias Ringwald */
20290c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connectionless_cte_transmit_enable = {
20300c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_CONNECTIONLESS_CTE_TRANSMIT_ENABLE, "11"
20310c1cf6c6SMatthias Ringwald };
20320c1cf6c6SMatthias Ringwald
20330c1cf6c6SMatthias Ringwald /**
20340c1cf6c6SMatthias Ringwald * @param sync_handle
20350c1cf6c6SMatthias Ringwald * @param sampling_enable
20360c1cf6c6SMatthias Ringwald * @param slot_durations
20370c1cf6c6SMatthias Ringwald * @param max_sampled_ctes
20380c1cf6c6SMatthias Ringwald * @param switching_pattern_length
20390c1cf6c6SMatthias Ringwald * @param antenna_ids[i]
20400c1cf6c6SMatthias Ringwald */
20410c1cf6c6SMatthias Ringwald
20420c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connectionless_iq_sampling_enable = {
20430c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_CONNECTIONLESS_IQ_SAMPLING_ENABLE, "2111a[i]"
20440c1cf6c6SMatthias Ringwald };
20450c1cf6c6SMatthias Ringwald
20460c1cf6c6SMatthias Ringwald /**
20470c1cf6c6SMatthias Ringwald * @param connection_handle
20480c1cf6c6SMatthias Ringwald * @param sampling_enable
20490c1cf6c6SMatthias Ringwald * @param slot_durations
20500c1cf6c6SMatthias Ringwald * @param switching_pattern_length
20510c1cf6c6SMatthias Ringwald * @param antenna_ids[i]
20520c1cf6c6SMatthias Ringwald */
20530c1cf6c6SMatthias Ringwald
20540c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connection_cte_receive_parameters = {
20550c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_CONNECTION_CTE_RECEIVE_PARAMETERS, "211a[1]"
20560c1cf6c6SMatthias Ringwald };
20570c1cf6c6SMatthias Ringwald
20580c1cf6c6SMatthias Ringwald /**
20590c1cf6c6SMatthias Ringwald * @param connection_handle
20600c1cf6c6SMatthias Ringwald * @param cte_types
20610c1cf6c6SMatthias Ringwald * @param switching_pattern_length
20620c1cf6c6SMatthias Ringwald * @param antenna_ids[i]
20630c1cf6c6SMatthias Ringwald */
20640c1cf6c6SMatthias Ringwald
20650c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connection_cte_transmit_parameters = {
20660c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_CONNECTION_CTE_TRANSMIT_PARAMETERS, "21a[1]"
20670c1cf6c6SMatthias Ringwald };
20680c1cf6c6SMatthias Ringwald
20690c1cf6c6SMatthias Ringwald /**
20700c1cf6c6SMatthias Ringwald * @param connection_handle
20710c1cf6c6SMatthias Ringwald * @param enable
20720c1cf6c6SMatthias Ringwald * @param cte_request_interval
20730c1cf6c6SMatthias Ringwald * @param requested_cte_length
20740c1cf6c6SMatthias Ringwald * @param requested_cte_type
20750c1cf6c6SMatthias Ringwald */
20760c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_connection_cte_request_enable = {
20770c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_CONNECTION_CTE_REQUEST_ENABLE, "H1211"
20780c1cf6c6SMatthias Ringwald };
20790c1cf6c6SMatthias Ringwald
20800c1cf6c6SMatthias Ringwald /**
20810c1cf6c6SMatthias Ringwald * @param connection_handle
20820c1cf6c6SMatthias Ringwald * @param enable
20830c1cf6c6SMatthias Ringwald */
20840c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_connection_cte_response_enable = {
20850c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_CONNECTION_CTE_RESPONSE_ENABLE, "H1"
20860c1cf6c6SMatthias Ringwald };
20870c1cf6c6SMatthias Ringwald
20880c1cf6c6SMatthias Ringwald /**
20890c1cf6c6SMatthias Ringwald */
20900c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_antenna_information = {
20910c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_ANTENNA_INFORMATION, ""
20920c1cf6c6SMatthias Ringwald };
20930c1cf6c6SMatthias Ringwald
20940c1cf6c6SMatthias Ringwald /**
20950c1cf6c6SMatthias Ringwald * @param sync_handle
20960c1cf6c6SMatthias Ringwald * @param enable
20970c1cf6c6SMatthias Ringwald */
20980c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_receive_enable = {
20990c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_RECEIVE_ENABLE, "H1"
21000c1cf6c6SMatthias Ringwald };
21010c1cf6c6SMatthias Ringwald
21020c1cf6c6SMatthias Ringwald /**
21030c1cf6c6SMatthias Ringwald * @param connection_handle
21040c1cf6c6SMatthias Ringwald * @param service_data
21050c1cf6c6SMatthias Ringwald * @param sync_handle
21060c1cf6c6SMatthias Ringwald */
21070c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_sync_transfer = {
21080c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_SYNC_TRANSFER, "H22"
21090c1cf6c6SMatthias Ringwald };
21100c1cf6c6SMatthias Ringwald
21110c1cf6c6SMatthias Ringwald /**
21120c1cf6c6SMatthias Ringwald * @param connection_handle
21130c1cf6c6SMatthias Ringwald * @param service_data
21140c1cf6c6SMatthias Ringwald * @param advertising_handle
21150c1cf6c6SMatthias Ringwald */
21160c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_set_info_transfer = {
21170c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_SET_INFO_TRANSFER, "H21"
21180c1cf6c6SMatthias Ringwald };
21190c1cf6c6SMatthias Ringwald
21200c1cf6c6SMatthias Ringwald /**
21210c1cf6c6SMatthias Ringwald * @param connection_handle
21220c1cf6c6SMatthias Ringwald * @param mode
21230c1cf6c6SMatthias Ringwald * @param skip
21240c1cf6c6SMatthias Ringwald * @param sync_timeout
21250c1cf6c6SMatthias Ringwald * @param cte_type
21260c1cf6c6SMatthias Ringwald */
21270c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_sync_transfer_parameters = {
21280c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_SYNC_TRANSFER_PARAMETERS, "H1221"
21290c1cf6c6SMatthias Ringwald };
21300c1cf6c6SMatthias Ringwald
21310c1cf6c6SMatthias Ringwald /**
21320c1cf6c6SMatthias Ringwald * @param mode
21330c1cf6c6SMatthias Ringwald * @param skip
21340c1cf6c6SMatthias Ringwald * @param sync_timeout
21350c1cf6c6SMatthias Ringwald * @param cte_type
21360c1cf6c6SMatthias Ringwald */
21370c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_default_periodic_advertising_sync_transfer_parameters = {
21380c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_DEFAULT_PERIODIC_ADVERTISING_SYNC_TRANSFER_PARAMETERS, "1221"
21390c1cf6c6SMatthias Ringwald };
21400c1cf6c6SMatthias Ringwald
21410c1cf6c6SMatthias Ringwald /**
21420c1cf6c6SMatthias Ringwald * @param 256Remote_P-256_public_key_x
21430c1cf6c6SMatthias Ringwald * @param 256Remote_P-256_public_key_y
21440c1cf6c6SMatthias Ringwald * @param key_type
21450c1cf6c6SMatthias Ringwald */
21460c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_generate_dhkey_v2 = {
21470c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_GENERATE_DHKEY_V2, "QQ1"
21480c1cf6c6SMatthias Ringwald };
21490c1cf6c6SMatthias Ringwald
21500c1cf6c6SMatthias Ringwald /**
21510c1cf6c6SMatthias Ringwald * @param action
21520c1cf6c6SMatthias Ringwald */
21530c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_modify_sleep_clock_accuracy = {
21540c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_MODIFY_SLEEP_CLOCK_ACCURACY, "1"
21550c1cf6c6SMatthias Ringwald };
21560c1cf6c6SMatthias Ringwald
21570c1cf6c6SMatthias Ringwald /**
21580c1cf6c6SMatthias Ringwald */
2159b3e0a1b9SMatthias Ringwald const hci_cmd_t hci_le_read_buffer_size_v2 = {
2160b3e0a1b9SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_BUFFER_SIZE_V2, ""
21610c1cf6c6SMatthias Ringwald };
21620c1cf6c6SMatthias Ringwald
21630c1cf6c6SMatthias Ringwald /**
21640c1cf6c6SMatthias Ringwald * @param connection_handle
21650c1cf6c6SMatthias Ringwald */
21660c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_iso_tx_sync = {
21670c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_ISO_TX_SYNC, "H"
21680c1cf6c6SMatthias Ringwald };
21690c1cf6c6SMatthias Ringwald
21700c1cf6c6SMatthias Ringwald /**
21710c1cf6c6SMatthias Ringwald * @param cig_id
21720c1cf6c6SMatthias Ringwald * @param sdu_interval_m_to_s
21730c1cf6c6SMatthias Ringwald * @param sdu_interval_s_to_m
21740c1cf6c6SMatthias Ringwald * @param slaves_clock_accuracy
21750c1cf6c6SMatthias Ringwald * @param packing
21760c1cf6c6SMatthias Ringwald * @param framing
21770c1cf6c6SMatthias Ringwald * @param max_transport_latency_m_to_s
21780c1cf6c6SMatthias Ringwald * @param max_transport_latency_s_to_m
21790c1cf6c6SMatthias Ringwald * @param cis_count
21800c1cf6c6SMatthias Ringwald * @param cis_id[i]
21810c1cf6c6SMatthias Ringwald * @param max_sdu_m_to_s[i]
21820c1cf6c6SMatthias Ringwald * @param max_sdu_s_to_m[i]
21830c1cf6c6SMatthias Ringwald * @param phy_m_to_s[i]
21840c1cf6c6SMatthias Ringwald * @param phy_s_to_m[i]
21850c1cf6c6SMatthias Ringwald * @param rtn_m_to_s[i]
21860c1cf6c6SMatthias Ringwald * @param rtn_s_to_m[i]
21870c1cf6c6SMatthias Ringwald */
21880c1cf6c6SMatthias Ringwald
21890c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_cig_parameters = {
21900c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_CIG_PARAMETERS, "13311122a[1221111]"
21910c1cf6c6SMatthias Ringwald };
21920c1cf6c6SMatthias Ringwald
21930c1cf6c6SMatthias Ringwald /**
21940c1cf6c6SMatthias Ringwald * @param cig_id
21950c1cf6c6SMatthias Ringwald * @param sdu_interval_m_to_s
21960c1cf6c6SMatthias Ringwald * @param sdu_interval_s_to_m
21970c1cf6c6SMatthias Ringwald * @param ft_m_to_s
21980c1cf6c6SMatthias Ringwald * @param ft_s_to_m
21990c1cf6c6SMatthias Ringwald * @param iso_interval
22000c1cf6c6SMatthias Ringwald * @param slaves_clock_accuracy
22010c1cf6c6SMatthias Ringwald * @param packing
22020c1cf6c6SMatthias Ringwald * @param framing
22030c1cf6c6SMatthias Ringwald * @param max_transport_latency_m_to_s
22040c1cf6c6SMatthias Ringwald * @param max_transport_latency_s_to_m
22050c1cf6c6SMatthias Ringwald * @param cis_count
22060c1cf6c6SMatthias Ringwald * @param cis_id[i]
22070c1cf6c6SMatthias Ringwald * @param nse[i]
22080c1cf6c6SMatthias Ringwald * @param max_sdu_m_to_s[i]
22090c1cf6c6SMatthias Ringwald * @param max_sdu_s_to_m[i]
22100c1cf6c6SMatthias Ringwald * @param max_pdu_m_to_s[i]
22110c1cf6c6SMatthias Ringwald * @param max_pdu_s_to_m[i]
22120c1cf6c6SMatthias Ringwald * @param phy_m_to_s[i]
22130c1cf6c6SMatthias Ringwald * @param phy_s_to_m[i]
22140c1cf6c6SMatthias Ringwald * @param bn_m_to_s[i]
22150c1cf6c6SMatthias Ringwald * @param bn_s_to_m[i]
22160c1cf6c6SMatthias Ringwald */
22170c1cf6c6SMatthias Ringwald
22180c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_cig_parameters_test = {
22190c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_CIG_PARAMETERS_TEST, "133112111a[1122221111]"
22200c1cf6c6SMatthias Ringwald };
22210c1cf6c6SMatthias Ringwald
22220c1cf6c6SMatthias Ringwald /**
22230c1cf6c6SMatthias Ringwald * @param cis_count
22240c1cf6c6SMatthias Ringwald * @param cis_connection_handle[i]
22250c1cf6c6SMatthias Ringwald * @param acl_connection_handle[i]
22260c1cf6c6SMatthias Ringwald */
22270c1cf6c6SMatthias Ringwald
22280c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_create_cis = {
22290c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_CREATE_CIS, "a[22]"
22300c1cf6c6SMatthias Ringwald };
22310c1cf6c6SMatthias Ringwald
22320c1cf6c6SMatthias Ringwald /**
22330c1cf6c6SMatthias Ringwald * @param cig_id
22340c1cf6c6SMatthias Ringwald */
22350c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_cig = {
22360c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOVE_CIG, "1"
22370c1cf6c6SMatthias Ringwald };
22380c1cf6c6SMatthias Ringwald
22390c1cf6c6SMatthias Ringwald /**
22400c1cf6c6SMatthias Ringwald * @param connection_handle
22410c1cf6c6SMatthias Ringwald */
22420c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_accept_cis_request = {
22430c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_ACCEPT_CIS_REQUEST, "H"
22440c1cf6c6SMatthias Ringwald };
22450c1cf6c6SMatthias Ringwald
22460c1cf6c6SMatthias Ringwald /**
22470c1cf6c6SMatthias Ringwald * @param connection_handle
22480c1cf6c6SMatthias Ringwald */
22490c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_reject_cis_request = {
22501a2fdeb3SMatthias Ringwald HCI_OPCODE_HCI_LE_REJECT_CIS_REQUEST, "H1"
22510c1cf6c6SMatthias Ringwald };
22520c1cf6c6SMatthias Ringwald
22530c1cf6c6SMatthias Ringwald /**
22540c1cf6c6SMatthias Ringwald * @param big_handle
22550c1cf6c6SMatthias Ringwald * @param advertising_handle
22560c1cf6c6SMatthias Ringwald * @param num_bis
22570c1cf6c6SMatthias Ringwald * @param sdu_interval
22580c1cf6c6SMatthias Ringwald * @param max_sdu
22590c1cf6c6SMatthias Ringwald * @param max_transport_latency
22600c1cf6c6SMatthias Ringwald * @param rtn
22610c1cf6c6SMatthias Ringwald * @param phy
22620c1cf6c6SMatthias Ringwald * @param packing
22630c1cf6c6SMatthias Ringwald * @param framing
22640c1cf6c6SMatthias Ringwald * @param encryption
22650c1cf6c6SMatthias Ringwald * @param broadcast_code
22660c1cf6c6SMatthias Ringwald */
22670c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_create_big = {
2268a10fc198SMatthias Ringwald HCI_OPCODE_HCI_LE_CREATE_BIG, "11132211111K"
22690c1cf6c6SMatthias Ringwald };
22700c1cf6c6SMatthias Ringwald
22710c1cf6c6SMatthias Ringwald /**
22720c1cf6c6SMatthias Ringwald * @param big_handle
22730c1cf6c6SMatthias Ringwald * @param advertising_handle
22740c1cf6c6SMatthias Ringwald * @param num_bis
22750c1cf6c6SMatthias Ringwald * @param sdu_interval
22760c1cf6c6SMatthias Ringwald * @param iso_interval
22770c1cf6c6SMatthias Ringwald * @param nse
22780c1cf6c6SMatthias Ringwald * @param max_sdu
22790c1cf6c6SMatthias Ringwald * @param max_PDU
22800c1cf6c6SMatthias Ringwald * @param phy
22810c1cf6c6SMatthias Ringwald * @param packing
22820c1cf6c6SMatthias Ringwald * @param framing
22830c1cf6c6SMatthias Ringwald * @param bn
22840c1cf6c6SMatthias Ringwald * @param irc
22850c1cf6c6SMatthias Ringwald * @param pto
22860c1cf6c6SMatthias Ringwald * @param encryption
22870c1cf6c6SMatthias Ringwald * @param broadcast_code
22880c1cf6c6SMatthias Ringwald */
22890c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_create_big_test = {
2290a10fc198SMatthias Ringwald HCI_OPCODE_HCI_LE_CREATE_BIG_TEST, "111321221111111K"
22910c1cf6c6SMatthias Ringwald };
22920c1cf6c6SMatthias Ringwald
22930c1cf6c6SMatthias Ringwald /**
22940c1cf6c6SMatthias Ringwald * @param big_handle
22950c1cf6c6SMatthias Ringwald * @param reason
22960c1cf6c6SMatthias Ringwald */
22970c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_terminate_big = {
22980c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_TERMINATE_BIG, "11"
22990c1cf6c6SMatthias Ringwald };
23000c1cf6c6SMatthias Ringwald
23010c1cf6c6SMatthias Ringwald /**
23020c1cf6c6SMatthias Ringwald * @param big_handle
23030c1cf6c6SMatthias Ringwald * @param sync_handle
23040c1cf6c6SMatthias Ringwald * @param encryption
23050c1cf6c6SMatthias Ringwald * @param broadcast_code
23060c1cf6c6SMatthias Ringwald * @param mse
23070c1cf6c6SMatthias Ringwald * @param big_sync_timeout
23080c1cf6c6SMatthias Ringwald * @param num_bis
23090c1cf6c6SMatthias Ringwald * @param bis[i]
23100c1cf6c6SMatthias Ringwald */
23110c1cf6c6SMatthias Ringwald
23120c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_big_create_sync = {
2313a10fc198SMatthias Ringwald HCI_OPCODE_HCI_LE_BIG_CREATE_SYNC, "1H1K12a[1]"
23140c1cf6c6SMatthias Ringwald };
23150c1cf6c6SMatthias Ringwald
23160c1cf6c6SMatthias Ringwald /**
23170c1cf6c6SMatthias Ringwald * @param big_handle
23180c1cf6c6SMatthias Ringwald */
23190c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_big_terminate_sync = {
2320c0112d43SMatthias Ringwald HCI_OPCODE_HCI_LE_BIG_TERMINATE_SYNC, "1"
23210c1cf6c6SMatthias Ringwald };
23220c1cf6c6SMatthias Ringwald
23230c1cf6c6SMatthias Ringwald /**
23240c1cf6c6SMatthias Ringwald * @param connection_handle
23250c1cf6c6SMatthias Ringwald */
23260c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_request_peer_sca = {
23270c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_REQUEST_PEER_SCA, "H"
23280c1cf6c6SMatthias Ringwald };
23290c1cf6c6SMatthias Ringwald
23300c1cf6c6SMatthias Ringwald /**
23310c1cf6c6SMatthias Ringwald * @param connection_handle
23320c1cf6c6SMatthias Ringwald * @param data_path_direction
23330c1cf6c6SMatthias Ringwald * @param data_path_id
23340c1cf6c6SMatthias Ringwald * @param codec_id_coding_format
23350c1cf6c6SMatthias Ringwald * @param codec_id_company_identifier (Shall be ignored if codec_id_coding_format is not 0xFF)
23360c1cf6c6SMatthias Ringwald * @param codec_id_vendor_codec_id (Shall be ignored if codec_id_coding_format is not 0xFF)
23370c1cf6c6SMatthias Ringwald * @param controller_delay
23380c1cf6c6SMatthias Ringwald * @param codec_configuration_length
23390c1cf6c6SMatthias Ringwald * @param codec_configuration
23400c1cf6c6SMatthias Ringwald */
23410c1cf6c6SMatthias Ringwald
23420c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_setup_iso_data_path = {
23430c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SETUP_ISO_DATA_PATH, "H111223JV"
23440c1cf6c6SMatthias Ringwald };
23450c1cf6c6SMatthias Ringwald
23460c1cf6c6SMatthias Ringwald /**
23470c1cf6c6SMatthias Ringwald * @param connection_handle
23480c1cf6c6SMatthias Ringwald */
23490c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_iso_data_path = {
23500c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOVE_ISO_DATA_PATH, "H1"
23510c1cf6c6SMatthias Ringwald };
23520c1cf6c6SMatthias Ringwald
23530c1cf6c6SMatthias Ringwald /**
23540c1cf6c6SMatthias Ringwald * @param connection_handle
23550c1cf6c6SMatthias Ringwald * @param paylaod_type
23560c1cf6c6SMatthias Ringwald */
23570c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_transmit_test = {
23580c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_ISO_TRANSMIT_TEST, "H1"
23590c1cf6c6SMatthias Ringwald };
23600c1cf6c6SMatthias Ringwald
23610c1cf6c6SMatthias Ringwald /**
23620c1cf6c6SMatthias Ringwald * @param connection_handle
23630c1cf6c6SMatthias Ringwald * @param paylaod_type
23640c1cf6c6SMatthias Ringwald */
23650c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_receive_test = {
23660c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_ISO_RECEIVE_TEST, "H1"
23670c1cf6c6SMatthias Ringwald };
23680c1cf6c6SMatthias Ringwald
23690c1cf6c6SMatthias Ringwald /**
23700c1cf6c6SMatthias Ringwald * @param connection_handle
23710c1cf6c6SMatthias Ringwald */
23720c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_read_test_counters = {
23730c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_ISO_READ_TEST_COUNTERS, "H"
23740c1cf6c6SMatthias Ringwald };
23750c1cf6c6SMatthias Ringwald
23760c1cf6c6SMatthias Ringwald /**
23770c1cf6c6SMatthias Ringwald * @param connection_handle
23780c1cf6c6SMatthias Ringwald */
23790c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_test_end = {
23800c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_ISO_TEST_END, "H"
23810c1cf6c6SMatthias Ringwald };
23820c1cf6c6SMatthias Ringwald
23830c1cf6c6SMatthias Ringwald /**
23840c1cf6c6SMatthias Ringwald * @param bit_number
23850c1cf6c6SMatthias Ringwald * @param bit_value
23860c1cf6c6SMatthias Ringwald */
23870c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_host_feature = {
23880c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_HOST_FEATURE, "11"
23890c1cf6c6SMatthias Ringwald };
23900c1cf6c6SMatthias Ringwald
23910c1cf6c6SMatthias Ringwald /**
23920c1cf6c6SMatthias Ringwald * @param connection_handle
23930c1cf6c6SMatthias Ringwald */
23940c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_iso_link_quality = {
23950c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_ISO_LINK_QUALITY, "H"
23960c1cf6c6SMatthias Ringwald };
23970c1cf6c6SMatthias Ringwald
23980c1cf6c6SMatthias Ringwald /**
23990c1cf6c6SMatthias Ringwald * @param connection_handle
24000c1cf6c6SMatthias Ringwald * @param phy
24010c1cf6c6SMatthias Ringwald */
24020c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_enhanced_read_transmit_power_level = {
24030c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_ENHANCED_READ_TRANSMIT_POWER_LEVEL, "H1"
24040c1cf6c6SMatthias Ringwald };
24050c1cf6c6SMatthias Ringwald
24060c1cf6c6SMatthias Ringwald /**
24070c1cf6c6SMatthias Ringwald * @param connection_handle
24080c1cf6c6SMatthias Ringwald * @param phy
24090c1cf6c6SMatthias Ringwald */
24100c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_remote_transmit_power_level = {
24110c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_REMOTE_TRANSMIT_POWER_LEVEL, "H1"
24120c1cf6c6SMatthias Ringwald };
24130c1cf6c6SMatthias Ringwald
24140c1cf6c6SMatthias Ringwald /**
24150c1cf6c6SMatthias Ringwald * @param connection_handle
24160c1cf6c6SMatthias Ringwald * @param high_threshold
24170c1cf6c6SMatthias Ringwald * @param high_hysteresis
24180c1cf6c6SMatthias Ringwald * @param low_threshold
24190c1cf6c6SMatthias Ringwald * @param low_hysteresis
24200c1cf6c6SMatthias Ringwald * @param min_time_spent
24210c1cf6c6SMatthias Ringwald */
24220c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_path_loss_reporting_parameters = {
24230c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PATH_LOSS_REPORTING_PARAMETERS, "211112"
24240c1cf6c6SMatthias Ringwald };
24250c1cf6c6SMatthias Ringwald
24260c1cf6c6SMatthias Ringwald /**
24270c1cf6c6SMatthias Ringwald * @param connection_handle
24280c1cf6c6SMatthias Ringwald * @param enable
24290c1cf6c6SMatthias Ringwald */
24300c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_path_loss_reporting_enable = {
24310c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PATH_LOSS_REPORTING_ENABLE, "H1"
24320c1cf6c6SMatthias Ringwald };
24330c1cf6c6SMatthias Ringwald
24340c1cf6c6SMatthias Ringwald /**
24350c1cf6c6SMatthias Ringwald * @param connection_handle
24360c1cf6c6SMatthias Ringwald * @param local_enable
24370c1cf6c6SMatthias Ringwald * @param remote_enable
24380c1cf6c6SMatthias Ringwald */
24390c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_transmit_power_reporting_enable = {
24400c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_TRANSMIT_POWER_REPORTING_ENABLE, "H11"
24410c1cf6c6SMatthias Ringwald };
24420c1cf6c6SMatthias Ringwald
24430c1cf6c6SMatthias Ringwald /**
24440c1cf6c6SMatthias Ringwald * @param tx_channel
24450c1cf6c6SMatthias Ringwald * @param test_data_length
24460c1cf6c6SMatthias Ringwald * @param packet_payload
24470c1cf6c6SMatthias Ringwald * @param phy
24480c1cf6c6SMatthias Ringwald * @param cte_length
24490c1cf6c6SMatthias Ringwald * @param cte_type
24500c1cf6c6SMatthias Ringwald * @param switching_pattern_length
24510c1cf6c6SMatthias Ringwald * @param antenna_ids[i]
24520c1cf6c6SMatthias Ringwald * @param transmit_power_level
24530c1cf6c6SMatthias Ringwald */
24540c1cf6c6SMatthias Ringwald
24550c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test_v4 = {
24560c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_TRANSMITTER_TEST_V4, "111111a[1]1"
24570c1cf6c6SMatthias Ringwald };
2458ca13daefSMatthias Ringwald
245903a8d1d2SMatthias Ringwald /**
246003a8d1d2SMatthias Ringwald * @param advertising_handle
246103a8d1d2SMatthias Ringwald * @param change_reason
246203a8d1d2SMatthias Ringwald */
246303a8d1d2SMatthias Ringwald const hci_cmd_t hci_le_set_data_related_address_change = {
246403a8d1d2SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_DATA_RELATED_ADDRESS_CHANGES, "11"
246503a8d1d2SMatthias Ringwald };
246603a8d1d2SMatthias Ringwald
246703a8d1d2SMatthias Ringwald /**
246803a8d1d2SMatthias Ringwald * @param subrate_min
246903a8d1d2SMatthias Ringwald * @param subrate_max
247003a8d1d2SMatthias Ringwald * @param max_latency
247103a8d1d2SMatthias Ringwald * @param continuation_number
247203a8d1d2SMatthias Ringwald * @param supervision_timeout
247303a8d1d2SMatthias Ringwald */
247403a8d1d2SMatthias Ringwald const hci_cmd_t hci_le_set_default_subrate = {
247503a8d1d2SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_DEFAULT_SUBRATE, "22222"
247603a8d1d2SMatthias Ringwald };
247703a8d1d2SMatthias Ringwald
247803a8d1d2SMatthias Ringwald /**
247903a8d1d2SMatthias Ringwald * @param connection_handle
248003a8d1d2SMatthias Ringwald * @param subrate_min
248103a8d1d2SMatthias Ringwald * @param subrate_max
248203a8d1d2SMatthias Ringwald * @param max_latency
248303a8d1d2SMatthias Ringwald * @param continuation_number
248403a8d1d2SMatthias Ringwald * @param supervision_timeout
248503a8d1d2SMatthias Ringwald */
248603a8d1d2SMatthias Ringwald const hci_cmd_t hci_le_subrate_request = {
248703a8d1d2SMatthias Ringwald HCI_OPCODE_HCI_LE_SUBRATE_REQUEST, "H22222"
248803a8d1d2SMatthias Ringwald };
248903a8d1d2SMatthias Ringwald
249056042629SMatthias Ringwald #endif
2491a42798c3SMatthias Ringwald
2492a42798c3SMatthias Ringwald // Broadcom / Cypress specific HCI commands
2493a42798c3SMatthias Ringwald
2494a42798c3SMatthias Ringwald /**
2495067ecc36SMatthias Ringwald * @brief Enable Wide-Band Speech / mSBC decoding for PCM
2496067ecc36SMatthias Ringwald * @param enable_wbs is 0 for disable, 1 for enable
2497067ecc36SMatthias Ringwald * @param uuid_wbs is 2 for EV2/EV3
2498067ecc36SMatthias Ringwald */
2499067ecc36SMatthias Ringwald const hci_cmd_t hci_bcm_enable_wbs = {
2500067ecc36SMatthias Ringwald HCI_OPCODE_HCI_BCM_ENABLE_WBS, "12"
2501067ecc36SMatthias Ringwald // return: status
2502067ecc36SMatthias Ringwald };
2503067ecc36SMatthias Ringwald
2504067ecc36SMatthias Ringwald /**
2505d7ae48d5SMatthias Ringwald * @brief Configure PCM2, see Cypress AN214937
2506d7ae48d5SMatthias Ringwald * @param action
2507d7ae48d5SMatthias Ringwald * @param test_options
2508d7ae48d5SMatthias Ringwald * @param op_mode
2509d7ae48d5SMatthias Ringwald * @param sync_and_clock_options
2510d7ae48d5SMatthias Ringwald * @param pcm_clock_freq
2511d7ae48d5SMatthias Ringwald * @param sync_signal_width
2512d7ae48d5SMatthias Ringwald * @param slot_width
2513d7ae48d5SMatthias Ringwald * @param number_of_slots
2514d7ae48d5SMatthias Ringwald * @param bank_0_fill_mode
2515d7ae48d5SMatthias Ringwald * @param bank_0_number_of_fill_bits
2516d7ae48d5SMatthias Ringwald * @param bank_0_programmable_fill_data
2517d7ae48d5SMatthias Ringwald * @param bank_1_fill_mode
2518d7ae48d5SMatthias Ringwald * @param bank_1_number_of_fill_bits
2519d7ae48d5SMatthias Ringwald * @param bank_1_programmable_fill_data
2520d7ae48d5SMatthias Ringwald * @param data_justify_and_bit_order_options
2521d7ae48d5SMatthias Ringwald * @param ch_0_slot_number
2522d7ae48d5SMatthias Ringwald * @param ch_1_slot_number
2523d7ae48d5SMatthias Ringwald * @param ch_2_slot_number
2524d7ae48d5SMatthias Ringwald * @param ch_3_slot_number
2525d7ae48d5SMatthias Ringwald * @param ch_4_slot_number
2526d7ae48d5SMatthias Ringwald * @param ch_0_period
2527d7ae48d5SMatthias Ringwald * @param ch_1_period
2528d7ae48d5SMatthias Ringwald * @param ch_2_period
2529d7ae48d5SMatthias Ringwald *
2530d7ae48d5SMatthias Ringwald */
2531d7ae48d5SMatthias Ringwald const hci_cmd_t hci_bcm_pcm2_setup = {
2532d7ae48d5SMatthias Ringwald HCI_OPCODE_HCI_BCM_PCM2_SETUP, "11114111111111111111111"
2533d7ae48d5SMatthias Ringwald };
2534d7ae48d5SMatthias Ringwald
2535d7ae48d5SMatthias Ringwald /**
2536a42798c3SMatthias Ringwald * @brief Configure SCO Routing (BCM)
2537a42798c3SMatthias Ringwald * @param sco_routing is 0 for PCM, 1 for Transport, 2 for Codec and 3 for I2S
2538a42798c3SMatthias Ringwald * @param pcm_interface_rate is 0 for 128KBps, 1 for 256 KBps, 2 for 512KBps, 3 for 1024KBps, and 4 for 2048Kbps
2539a42798c3SMatthias Ringwald * @param frame_type is 0 for short and 1 for long
2540a42798c3SMatthias Ringwald * @param sync_mode is 0 for slave and 1 for master
2541a42798c3SMatthias Ringwald * @param clock_mode is 0 for slabe and 1 for master
2542a42798c3SMatthias Ringwald */
2543a42798c3SMatthias Ringwald const hci_cmd_t hci_bcm_write_sco_pcm_int = {
2544ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_BCM_WRITE_SCO_PCM_INT, "11111"
2545a42798c3SMatthias Ringwald // return: status
2546a42798c3SMatthias Ringwald };
2547eab6959fSMatthias Ringwald
2548eab6959fSMatthias Ringwald /**
2549762c3e10SMatthias Ringwald * @brief Configure PCM Data Format (BCM)
2550762c3e10SMatthias Ringwald * @param lsb_position 0x00 – LSB last/MSB first, 0x01 – LSB first/MSB last
2551762c3e10SMatthias Ringwald * @param fill_bits_value three bit value defines the fill bits used by the PCM interface,only if fill_data_selection == programmable
2552762c3e10SMatthias Ringwald * @param fill_data_selection 0x00 zeros, 0x01 ones, 0x02 sign bit, 0x03 programmable
2553762c3e10SMatthias Ringwald * @param number_of_fill_bits 0..3
2554762c3e10SMatthias Ringwald * @param right_left_justification 0x00 left justified, 0x01 right justified
2555762c3e10SMatthias Ringwald */
2556762c3e10SMatthias Ringwald const hci_cmd_t hci_bcm_write_pcm_data_format_param = {
2557762c3e10SMatthias Ringwald HCI_OPCODE_HCI_BCM_WRITE_PCM_DATA_FORMAT_PARAM, "11111"
2558762c3e10SMatthias Ringwald // return: status
2559762c3e10SMatthias Ringwald };
2560762c3e10SMatthias Ringwald
2561762c3e10SMatthias Ringwald /**
2562067ecc36SMatthias Ringwald * @brief Configure the I2S/PCM interface (BCM)
2563067ecc36SMatthias Ringwald * @param i2s_enable is 0 for off, 1 for on
2564067ecc36SMatthias Ringwald * @param is_master is 0 for slave, is 1 for master
2565067ecc36SMatthias Ringwald * @param sample_rate is 0 for 8 kHz, 1 for 16 kHz, 2 for 4 kHz
2566067ecc36SMatthias 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
2567067ecc36SMatthias Ringwald */
2568067ecc36SMatthias Ringwald const hci_cmd_t hci_bcm_write_i2spcm_interface_param = {
256958323d58SMatthias Ringwald HCI_OPCODE_HCI_BCM_WRITE_I2SPCM_INTERFACE_PARAM, "1111"
2570067ecc36SMatthias Ringwald // return: status
2571067ecc36SMatthias Ringwald };
2572067ecc36SMatthias Ringwald
2573067ecc36SMatthias Ringwald
2574067ecc36SMatthias Ringwald /**
2575eab6959fSMatthias Ringwald * @brief Activates selected Sleep Mode
2576eab6959fSMatthias 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
2577eab6959fSMatthias Ringwald * @param idle_threshold_host (modes 1,2,5,7) time until considered idle, unit roughly 300 ms
2578eab6959fSMatthias Ringwald * @param idle_threshold_controller (modes 1-7,9) time until considered idle, unit roughly 300 ms
2579eab6959fSMatthias Ringwald * @param bt_wake_active_mode (modes 1,2,7) 0 = BT_WAKE line is active high, 1 = BT_WAKE is active low
2580eab6959fSMatthias Ringwald * @param host_wake_active_mode (modes 1,2,5,7) 0 = HOST_WAKE line is active high, 1 = HOST_WAKE is active low
2581eab6959fSMatthias Ringwald * @param allow_host_sleep_during_sco (modes 1,2,3,5,7)
2582eab6959fSMatthias Ringwald * @param combine_sleep_mode_and_lpm (modes 1,2,3,5,7)
2583eab6959fSMatthias Ringwald * @param enable_tristate_control_of_uart_tx_line (modes 1,2,7)
2584eab6959fSMatthias Ringwald * @param active_connection_handling_on_suspend (modes 3,5)
2585eab6959fSMatthias Ringwald * @param resume_timeout (modes 3,5)
2586eab6959fSMatthias Ringwald * @param enable_break_to_host (mode 12)
2587eab6959fSMatthias Ringwald * @param pulsed_host_wake (modes 1,12)
2588eab6959fSMatthias Ringwald */
2589eab6959fSMatthias Ringwald const hci_cmd_t hci_bcm_set_sleep_mode = {
2590ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_BCM_SET_SLEEP_MODE, "111111111111"
2591eab6959fSMatthias Ringwald };
25925cdaddfaSMatthias Ringwald
25935cdaddfaSMatthias Ringwald /**
25945cdaddfaSMatthias Ringwald * @brief Set TX Power Table
25955cdaddfaSMatthias Ringwald * @param is_le 0=classic, 1=LE
25965cdaddfaSMatthias Ringwald * @param chip_max_tx_pwr_db chip level max TX power in dBM
25975cdaddfaSMatthias Ringwald */
25985cdaddfaSMatthias Ringwald const hci_cmd_t hci_bcm_write_tx_power_table = {
2599ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_BCM_WRITE_TX_POWER_TABLE, "11"
26005cdaddfaSMatthias Ringwald };
26015cdaddfaSMatthias Ringwald
26025cdaddfaSMatthias Ringwald const hci_cmd_t hci_bcm_set_tx_pwr = {
2603ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_BCM_SET_TX_PWR, "11H"
26045cdaddfaSMatthias Ringwald };
2605ba39ed56SMatthias Ringwald
2606ba39ed56SMatthias Ringwald /**
260715fca961SMatthias Ringwald * @brief This command starts receiving packets using packet transmission parameters such as
260815fca961SMatthias Ringwald * frequency channel, packet type, and packet length. It is used for Packet RX.
26096f029df8SMatthias Ringwald * @see processors.wiki.ti.com/index.php/CC256x_Testing_Guide#Continuous_RX
261015fca961SMatthias Ringwald * @param frequency
261115fca961SMatthias Ringwald * @param ADPLL loop mode
261215fca961SMatthias Ringwald */
261315fca961SMatthias Ringwald const hci_cmd_t hci_ti_drpb_tester_con_rx = {
261415fca961SMatthias Ringwald 0xFD17, "11"
261515fca961SMatthias Ringwald };
261615fca961SMatthias Ringwald
261715fca961SMatthias Ringwald /**
2618ba39ed56SMatthias Ringwald *
2619ba39ed56SMatthias Ringwald *
2620ba39ed56SMatthias Ringwald * @brief This command tests the RF transceiver in continuous transmission mode.
2621ba39ed56SMatthias Ringwald * The transmitter is activated by configuring the transmission parameters such as pattern,
2622ba39ed56SMatthias Ringwald * modulation, and frequency.
2623ba39ed56SMatthias Ringwald * @see processors.wiki.ti.com/index.php/CC256x_VS_HCI_Commands#HCI_VS_DRPb_Tester_Con_TX.280xFD84.29
2624ba39ed56SMatthias Ringwald * @param modulation
262515fca961SMatthias Ringwald * @param test_pattern
2626ba39ed56SMatthias Ringwald * @param frequency
2627ba39ed56SMatthias Ringwald * @param power_level
2628ba39ed56SMatthias Ringwald * @param reserved1
2629ba39ed56SMatthias Ringwald * @param reserved2
2630ba39ed56SMatthias Ringwald */
2631ba39ed56SMatthias Ringwald const hci_cmd_t hci_ti_drpb_tester_con_tx = {
2632ba39ed56SMatthias Ringwald 0xFD84, "111144"
2633ba39ed56SMatthias Ringwald };
2634ba39ed56SMatthias Ringwald
2635ba39ed56SMatthias Ringwald /**
2636ba39ed56SMatthias Ringwald * @brief This command starts sending/receiving packets using packet transmission parameters such as
2637ba39ed56SMatthias Ringwald * frequency channel, packet type, and packet length. It is used for Packet TX/RX.
2638ba39ed56SMatthias Ringwald * @see processors.wiki.ti.com/index.php/CC256x_VS_HCI_Commands#HCI_VS_DRPb_Tester_Packet_TX_RX_.280xFD85.29
2639ba39ed56SMatthias Ringwald * @param frequency_mode
2640ba39ed56SMatthias Ringwald * @param tx_single_frequency
2641ba39ed56SMatthias Ringwald * @param rx_single_frequency
2642ba39ed56SMatthias Ringwald * @param acl_packet_type
2643ba39ed56SMatthias Ringwald * @paarm acl_packet_data_pattern
2644ba39ed56SMatthias Ringwald * @param reserved
2645ba39ed56SMatthias Ringwald * @param power_level
2646ba39ed56SMatthias Ringwald * @param disable_whitening
2647ba39ed56SMatthias Ringwald * @param prbs9_initialization_value
2648ba39ed56SMatthias Ringwald */
2649ba39ed56SMatthias Ringwald const hci_cmd_t hci_ti_drpb_tester_packet_tx_rx = {
2650ba39ed56SMatthias Ringwald 0xFD85, "1111112112"
2651ba39ed56SMatthias Ringwald };
2652365a7dd1SMatthias Ringwald
2653733a7793SMatthias Ringwald
2654733a7793SMatthias Ringwald /**
2655733a7793SMatthias Ringwald * @param best effort access percentage
2656733a7793SMatthias Ringwald * @param guaranteed access percentage
2657733a7793SMatthias Ringwald * @param poll period
2658733a7793SMatthias Ringwald * @param slave burst after tx
2659733a7793SMatthias Ringwald * @param slave master search count
2660733a7793SMatthias Ringwald * @param master burst after tx enable
2661733a7793SMatthias Ringwald * @param master burst after rx limit
2662733a7793SMatthias Ringwald */
2663cf26f982SMatthias Ringwald const hci_cmd_t hci_ti_configure_ddip = {
2664733a7793SMatthias Ringwald HCI_OPCODE_HCI_TI_VS_CONFIGURE_DDIP, "1111111"
2665733a7793SMatthias Ringwald };
2666733a7793SMatthias Ringwald
2667365a7dd1SMatthias Ringwald /**
2668365a7dd1SMatthias Ringwald * @brief This command is used to associate the requested ACL handle with Wide Band Speech configuration.
2669365a7dd1SMatthias Ringwald * @param enable 0=disable, 1=enable
2670365a7dd1SMatthias Ringwald * @param a3dp_role (NL5500, WL128x only) 0=source,1=sink
2671365a7dd1SMatthias Ringwald * @param code_upload (NL5500, WL128x only) 0=do not load a3dp code, 1=load a3dp code
2672365a7dd1SMatthias Ringwald * @param reserved for future use
2673365a7dd1SMatthias Ringwald */
2674365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_avrp_enable = {
2675365a7dd1SMatthias Ringwald 0xFD92, "1112"
2676365a7dd1SMatthias Ringwald };
2677365a7dd1SMatthias Ringwald
2678365a7dd1SMatthias Ringwald /**
2679365a7dd1SMatthias Ringwald * @brief This command is used to associate the requested ACL handle with Wide Band Speech configuration.
2680365a7dd1SMatthias Ringwald * @param acl_con_handle
2681365a7dd1SMatthias Ringwald */
2682365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_wbs_associate = {
2683365a7dd1SMatthias Ringwald 0xFD78, "H"
2684365a7dd1SMatthias Ringwald };
2685365a7dd1SMatthias Ringwald
2686365a7dd1SMatthias Ringwald /**
2687365a7dd1SMatthias Ringwald * @brief This command is used to disassociate Wide Band Speech configuration from any ACL handle.
2688365a7dd1SMatthias Ringwald */
2689365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_wbs_disassociate = {
2690365a7dd1SMatthias Ringwald 0xFD79, ""
2691365a7dd1SMatthias Ringwald };
2692365a7dd1SMatthias Ringwald
2693365a7dd1SMatthias Ringwald /**
2694365a7dd1SMatthias Ringwald * @brief This command configures the codec interface parameters and the PCM clock rate, which is relevant when
2695365a7dd1SMatthias Ringwald the Bluetooth core generates the clock. This command must be used by the host to use the PCM
2696365a7dd1SMatthias Ringwald interface.
2697365a7dd1SMatthias Ringwald * @param clock_rate in kHz
2698365a7dd1SMatthias Ringwald * @param clock_direction 0=master/output, 1=slave/input
2699365a7dd1SMatthias Ringwald * @param frame_sync_frequency in Hz
2700365a7dd1SMatthias Ringwald * @param frame_sync_duty_cycle 0=50% (I2S Format), 0x0001-0xffff number of cycles of PCM clock
2701365a7dd1SMatthias Ringwald * @param frame_sync_edge 0=driven/sampled at rising edge, 1=driven/sampled at falling edge of PCM clock
2702365a7dd1SMatthias Ringwald * @param frame_sync_polariy 0=active high, 1=active low
2703365a7dd1SMatthias Ringwald * @param reserved1
2704365a7dd1SMatthias Ringwald * @param channel_1_data_out_size sample size in bits
2705365a7dd1SMatthias Ringwald * @param channel_1_data_out_offset number of PCM clock cycles between rising of frame sync and data start
2706365a7dd1SMatthias Ringwald * @param channel_1_data_out_edge 0=data driven at rising edge, 1=data driven at falling edge of PCM clock
2707365a7dd1SMatthias Ringwald * @param channel_1_data_in_size sample size in bits
2708365a7dd1SMatthias Ringwald * @param channel_1_data_in_offset number of PCM clock cycles between rising of frame sync and data start
2709365a7dd1SMatthias Ringwald * @param channel_1_data_in_edge 0=data sampled at rising edge, 1=data sampled at falling edge of PCM clock
2710365a7dd1SMatthias Ringwald * @param fsync_multiplier this field is only relevant to CC256XB from service pack 0.2 !!! -> use 0x00
2711365a7dd1SMatthias Ringwald * @param channel_2_data_out_size sample size in bits
2712365a7dd1SMatthias Ringwald * @param channel_2_data_out_offset number of PCM clock cycles between rising of frame sync and data start
2713365a7dd1SMatthias Ringwald * @param channel_2_data_out_edge 0=data driven at rising edge, 1=data driven at falling edge of PCM clock
2714365a7dd1SMatthias Ringwald * @param channel_2_data_in_size sample size in bits
2715365a7dd1SMatthias Ringwald * @param channel_2_data_in_offset number of PCM clock cycles between rising of frame sync and data start
2716365a7dd1SMatthias Ringwald * @param channel_2_data_in_edge 0=data sampled at rising edge, 1=data sampled at falling edge of PCM clock
2717365a7dd1SMatthias Ringwald * @param reserved2
2718365a7dd1SMatthias Ringwald *
2719365a7dd1SMatthias Ringwald */
2720365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_write_codec_config = {
2721365a7dd1SMatthias Ringwald 0xFD06, "214211122122112212211"
2722365a7dd1SMatthias Ringwald };
272315fca961SMatthias Ringwald
272415fca961SMatthias Ringwald /**
272515fca961SMatthias Ringwald * @brief This command is used only for internal testing.
27266f029df8SMatthias Ringwald * @see processors.wiki.ti.com/index.php/CC256x_Testing_Guide#Continuous_TX
272715fca961SMatthias Ringwald * @param frequency
272815fca961SMatthias Ringwald * @param ADPLL loop mode
272915fca961SMatthias Ringwald */
273015fca961SMatthias Ringwald const hci_cmd_t hci_ti_drpb_enable_rf_calibration = {
273115fca961SMatthias Ringwald 0xFD80, "141"
273215fca961SMatthias Ringwald };
273315fca961SMatthias Ringwald
273415fca961SMatthias Ringwald /**
273515fca961SMatthias Ringwald * @brief This command command is only required for the continuous TX test of modulated
273615fca961SMatthias Ringwald * (GFSK, π/4-DQPSK or 8DPSK) signal. This command should be skipped when performing continuous TX test for CW.
27376f029df8SMatthias Ringwald * @see processors.wiki.ti.com/index.php/CC256x_Testing_Guide#Continuous_RX
273815fca961SMatthias Ringwald * @param frequency
273915fca961SMatthias Ringwald * @param ADPLL loop mode
274015fca961SMatthias Ringwald */
274115fca961SMatthias Ringwald const hci_cmd_t hci_ti_write_hardware_register = {
274215fca961SMatthias Ringwald 0xFF01, "42"
274315fca961SMatthias Ringwald };
27441645c45cSMatthias Ringwald
27451645c45cSMatthias Ringwald /**
27461645c45cSMatthias Ringwald * @brief Configure SCO routing on Realtek Controllers
27471645c45cSMatthias Ringwald */
27481645c45cSMatthias Ringwald const hci_cmd_t hci_rtk_configure_sco_routing = {
274992ce4e6aSMatthias Ringwald HCI_OPCODE_HCI_RTK_CONFIGURE_SCO_ROUTING, "111111111"
275092ce4e6aSMatthias Ringwald };
275192ce4e6aSMatthias Ringwald
275292ce4e6aSMatthias Ringwald /**
275392ce4e6aSMatthias Ringwald * @brief Read Card Information
275492ce4e6aSMatthias Ringwald */
275592ce4e6aSMatthias Ringwald const hci_cmd_t hci_rtk_read_card_info = {
275692ce4e6aSMatthias Ringwald HCI_OPCODE_HCI_RTK_READ_CARD_INFO, "11111"
27571645c45cSMatthias Ringwald };
27580e1c28d5SMatthias Ringwald
27590e1c28d5SMatthias Ringwald
27600e1c28d5SMatthias Ringwald /**
27610e1c28d5SMatthias Ringwald * @param voice_path 0x00 - transport, 0x01 - I2S/PCM
27620e1c28d5SMatthias Ringwald */
27630e1c28d5SMatthias Ringwald const hci_cmd_t hci_nxp_set_sco_data_path = {
27640e1c28d5SMatthias Ringwald HCI_OPCODE_HCI_NXP_SET_SCO_DATA_PATH, "1"
27650e1c28d5SMatthias Ringwald };
27660e1c28d5SMatthias Ringwald
27670e1c28d5SMatthias Ringwald /**
27680e1c28d5SMatthias Ringwald * @param settings bits 7-5: reserved, bit 4: pcm clock on, bit 3: reserved, bit 2: pcm sync source, bit 1: master/slave, bit 0: pcm direction
27690e1c28d5SMatthias Ringwald */
27700e1c28d5SMatthias Ringwald const hci_cmd_t hci_nxp_write_pcm_i2s_settings = {
27710e1c28d5SMatthias Ringwald HCI_OPCODE_HCI_NXP_WRITE_PCM_I2S_SETTINGS, "1"
27720e1c28d5SMatthias Ringwald };
27730e1c28d5SMatthias Ringwald
27740e1c28d5SMatthias Ringwald /**
27750e1c28d5SMatthias Ringwald * @param sync_settings_1 bits 7-2: reserved, bit 1: ISR, bit 0: ISR
27760e1c28d5SMatthias Ringwald * @param sync_settings_2 bits 15-11: reserved, bit 10: 16k synchronization, bit 9: clock setting, bit 8: main clock, bits 7-5: reserved, bit 4: i2s sent in right channel, bit 3: clock alignment DIN, bit 2: clock alignment DOUT, bits 1-0: mode
27770e1c28d5SMatthias Ringwald */
27780e1c28d5SMatthias Ringwald const hci_cmd_t hci_nxp_write_pcm_i2s_sync_settings = {
27790e1c28d5SMatthias Ringwald HCI_OPCODE_HCI_NXP_WRITE_PCM_I2S_SYNC_SETTINGS, "12"
27800e1c28d5SMatthias Ringwald };
27810e1c28d5SMatthias Ringwald
27820e1c28d5SMatthias Ringwald /**
27830e1c28d5SMatthias Ringwald * @param settings bits 15-14: reserved, bit 13-10: each bit == one PCM time slot,, bits 9-2: slot relative to PCM synchronization, bits 1-0: PCM slots to be used
27840e1c28d5SMatthias Ringwald */
27850e1c28d5SMatthias Ringwald const hci_cmd_t hci_nxp_write_pcm_link_settings = {
27860e1c28d5SMatthias Ringwald HCI_OPCODE_HCI_NXP_WRITE_PCM_LINK_SETTINGS, "2"
27870e1c28d5SMatthias Ringwald };
27880e1c28d5SMatthias Ringwald
27890e1c28d5SMatthias Ringwald /**
27900e1c28d5SMatthias Ringwald * @param next_connection_wbs 0: CVSD, 1: mSBC
27910e1c28d5SMatthias Ringwald */
27920e1c28d5SMatthias Ringwald const hci_cmd_t hci_nxp_set_wbs_connection = {
27930e1c28d5SMatthias Ringwald HCI_OPCODE_HCI_NXP_SET_WBS_CONNECTION, "1"
27940e1c28d5SMatthias Ringwald };
27950e1c28d5SMatthias Ringwald
27960e1c28d5SMatthias Ringwald /**
27970e1c28d5SMatthias Ringwald * @param action
27980e1c28d5SMatthias Ringwald * @param operation mode
27990e1c28d5SMatthias Ringwald * @param sco_handle_1
28000e1c28d5SMatthias Ringwald * @param sco_handle_2
28010e1c28d5SMatthias Ringwald */
28020e1c28d5SMatthias Ringwald const hci_cmd_t hci_nxp_host_pcm_i2s_audio_config = {
28030e1c28d5SMatthias Ringwald HCI_OPCODE_HCI_NXP_HOST_PCM_I2S_AUDIO_CONFIG, "11HH"
28040e1c28d5SMatthias Ringwald };
28050e1c28d5SMatthias Ringwald
28060e1c28d5SMatthias Ringwald /**
28070e1c28d5SMatthias Ringwald * @param action
28080e1c28d5SMatthias Ringwald */
28090e1c28d5SMatthias Ringwald const hci_cmd_t hci_nxp_host_pcm_i2s_control_enable = {
28100e1c28d5SMatthias Ringwald HCI_OPCODE_HCI_NXP_HOST_PCM_I2S_CONTROL_ENABLE, "1"
28110e1c28d5SMatthias Ringwald };
2812