156042629SMatthias Ringwald /* 256042629SMatthias Ringwald * Copyright (C) 2014 BlueKitchen GmbH 356042629SMatthias Ringwald * 456042629SMatthias Ringwald * Redistribution and use in source and binary forms, with or without 556042629SMatthias Ringwald * modification, are permitted provided that the following conditions 656042629SMatthias Ringwald * are met: 756042629SMatthias Ringwald * 856042629SMatthias Ringwald * 1. Redistributions of source code must retain the above copyright 956042629SMatthias Ringwald * notice, this list of conditions and the following disclaimer. 1056042629SMatthias Ringwald * 2. Redistributions in binary form must reproduce the above copyright 1156042629SMatthias Ringwald * notice, this list of conditions and the following disclaimer in the 1256042629SMatthias Ringwald * documentation and/or other materials provided with the distribution. 1356042629SMatthias Ringwald * 3. Neither the name of the copyright holders nor the names of 1456042629SMatthias Ringwald * contributors may be used to endorse or promote products derived 1556042629SMatthias Ringwald * from this software without specific prior written permission. 1656042629SMatthias Ringwald * 4. Any redistribution, use, or modification is done solely for 1756042629SMatthias Ringwald * personal benefit and not for any commercial purpose or for 1856042629SMatthias Ringwald * monetary gain. 1956042629SMatthias Ringwald * 2056042629SMatthias Ringwald * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS 2156042629SMatthias Ringwald * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2256042629SMatthias Ringwald * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 232fca4dadSMilanka Ringwald * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BLUEKITCHEN 242fca4dadSMilanka Ringwald * GMBH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 2556042629SMatthias Ringwald * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 2656042629SMatthias Ringwald * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 2756042629SMatthias Ringwald * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 2856042629SMatthias Ringwald * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 2956042629SMatthias Ringwald * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 3056042629SMatthias Ringwald * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3156042629SMatthias Ringwald * SUCH DAMAGE. 3256042629SMatthias Ringwald * 3356042629SMatthias Ringwald * Please inquire about commercial licensing options at 3456042629SMatthias Ringwald * [email protected] 3556042629SMatthias Ringwald * 3656042629SMatthias Ringwald */ 3756042629SMatthias Ringwald 38e501bae0SMatthias Ringwald #define BTSTACK_FILE__ "hci_cmd.c" 39ab2c6ae4SMatthias Ringwald 4056042629SMatthias Ringwald /* 4156042629SMatthias Ringwald * hci_cmd.c 4256042629SMatthias Ringwald * 4356042629SMatthias Ringwald * Created by Matthias Ringwald on 7/23/09. 4456042629SMatthias Ringwald */ 4556042629SMatthias Ringwald 467907f069SMatthias Ringwald #include "btstack_config.h" 4756042629SMatthias Ringwald 4856042629SMatthias Ringwald #include "hci.h" 4956042629SMatthias Ringwald #include "hci_cmd.h" 50f9f2075cSMatthias Ringwald #include "btstack_debug.h" 5156042629SMatthias Ringwald 5256042629SMatthias Ringwald #include <string.h> 5356042629SMatthias Ringwald 54c56de76bSMilanka Ringwald 5559c9672fSMatthias Ringwald #ifdef ENABLE_SDP 5659c9672fSMatthias Ringwald #include "classic/sdp_util.h" 5759c9672fSMatthias Ringwald #endif 5859c9672fSMatthias Ringwald 5956042629SMatthias Ringwald // calculate combined ogf/ocf value 605efd5011SMatthias Ringwald #define OPCODE(ogf, ocf) ((ocf) | ((ogf) << 10)) 6156042629SMatthias Ringwald 627f67490cSMatthias Ringwald #define INVALID_VAR_LEN 0xffffu 63931b436eSMatthias Ringwald // hci_le_set_cig_parameters_test has 10 arrayed parameters 64931b436eSMatthias Ringwald #define MAX_NR_ARRAY_FIELDS 10 65931b436eSMatthias Ringwald #define INVALID_ARRAY_LEN 0xff 667f67490cSMatthias Ringwald 6756042629SMatthias Ringwald /** 6856042629SMatthias Ringwald * construct HCI Command based on template 6956042629SMatthias Ringwald * 7056042629SMatthias Ringwald * Format: 7156042629SMatthias Ringwald * 1,2,3,4: one to four byte value 7256042629SMatthias Ringwald * H: HCI connection handle 7356042629SMatthias Ringwald * B: Bluetooth Baseband Address (BD_ADDR) 7456042629SMatthias Ringwald * D: 8 byte data block 7556042629SMatthias Ringwald * E: Extended Inquiry Result 7656042629SMatthias Ringwald * N: Name up to 248 chars, \0 terminated 77237daac5SMatthias Ringwald * P: 16 byte data block. Pairing code, Simple Pairing Hash and Randomizer 7856042629SMatthias Ringwald * A: 31 bytes advertising data 7956042629SMatthias Ringwald * S: Service Record (Data Element Sequence) 8082180fcaSMatthias Ringwald * Q: 32 byte data block, e.g. for X and Y coordinates of P-256 public key 817f67490cSMatthias Ringwald * J: 8-bit length of variable size element 827f67490cSMatthias Ringwald * V: variable size element, len was given with param 'J' 83931b436eSMatthias Ringwald * a: number of elements in following arrayed parameters(s), specified as '[...]' 84931b436eSMatthias Ringwald * b: bit field indicating number of arrayed parameters(s), specified as '[...]' 85931b436eSMatthias Ringwald * [: start of arrayed param sequence 86931b436eSMatthias Ringwald * ]: end of arrayed param sequence 8756042629SMatthias Ringwald */ 8856042629SMatthias Ringwald uint16_t hci_cmd_create_from_template(uint8_t *hci_cmd_buffer, const hci_cmd_t *cmd, va_list argptr){ 8956042629SMatthias Ringwald 904ea43905SMatthias Ringwald hci_cmd_buffer[0] = cmd->opcode & 0xffu; 9156042629SMatthias Ringwald hci_cmd_buffer[1] = cmd->opcode >> 8; 92931b436eSMatthias Ringwald uint16_t pos = 3; 9356042629SMatthias Ringwald 9456042629SMatthias Ringwald const char *format = cmd->format; 9556042629SMatthias Ringwald uint16_t word; 9656042629SMatthias Ringwald uint32_t longword; 9756042629SMatthias Ringwald uint8_t * ptr; 987f67490cSMatthias Ringwald 99c8b094b6SMatthias Ringwald #ifdef ENABLE_BLE 100c8b094b6SMatthias Ringwald // variable size data 101c8b094b6SMatthias Ringwald uint16_t var_len = INVALID_VAR_LEN; 102c8b094b6SMatthias Ringwald // array processing 103931b436eSMatthias Ringwald const char * array_format = NULL; 104931b436eSMatthias Ringwald void * array_data[MAX_NR_ARRAY_FIELDS]; 105931b436eSMatthias Ringwald uint8_t array_num_elements = INVALID_ARRAY_LEN; 106931b436eSMatthias Ringwald uint8_t array_num_fields; 107931b436eSMatthias Ringwald uint8_t array_element_index; 108c8b094b6SMatthias Ringwald bool array_done; 109c8b094b6SMatthias Ringwald #endif 110931b436eSMatthias Ringwald 111931b436eSMatthias Ringwald bool done_format = false; 112931b436eSMatthias Ringwald while (!done_format) { 11356042629SMatthias Ringwald switch(*format) { 114931b436eSMatthias Ringwald case 0: 115931b436eSMatthias Ringwald done_format = true; 116931b436eSMatthias Ringwald break; 11756042629SMatthias Ringwald case '1': // 8 bit value 118c56de76bSMilanka Ringwald word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE 1194ea43905SMatthias Ringwald hci_cmd_buffer[pos++] = word & 0xffu; 120c56de76bSMilanka Ringwald break; 121c56de76bSMilanka Ringwald case '2': // 16 bit value 122c56de76bSMilanka Ringwald word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE 123c56de76bSMilanka Ringwald hci_cmd_buffer[pos++] = word & 0xffu; 12456042629SMatthias Ringwald hci_cmd_buffer[pos++] = word >> 8; 125c56de76bSMilanka Ringwald break; 126c56de76bSMilanka Ringwald case 'H': // hci_handle 127c56de76bSMilanka Ringwald word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE 128c56de76bSMilanka Ringwald hci_cmd_buffer[pos++] = word & 0xffu; 12956042629SMatthias Ringwald hci_cmd_buffer[pos++] = word >> 8; 13056042629SMatthias Ringwald break; 13156042629SMatthias Ringwald case '3': 132c56de76bSMilanka Ringwald longword = va_arg(argptr, uint32_t); // LCOV_EXCL_BR_LINE 13356042629SMatthias Ringwald hci_cmd_buffer[pos++] = longword; 13456042629SMatthias Ringwald hci_cmd_buffer[pos++] = longword >> 8; 13556042629SMatthias Ringwald hci_cmd_buffer[pos++] = longword >> 16; 136c56de76bSMilanka Ringwald break; 137c56de76bSMilanka Ringwald case '4': 138c56de76bSMilanka Ringwald longword = va_arg(argptr, uint32_t); // LCOV_EXCL_BR_LINE 139c56de76bSMilanka Ringwald hci_cmd_buffer[pos++] = longword; 140c56de76bSMilanka Ringwald hci_cmd_buffer[pos++] = longword >> 8; 141c56de76bSMilanka Ringwald hci_cmd_buffer[pos++] = longword >> 16; 14256042629SMatthias Ringwald hci_cmd_buffer[pos++] = longword >> 24; 14356042629SMatthias Ringwald break; 14456042629SMatthias Ringwald case 'B': // bt-addr 145c56de76bSMilanka Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 14656042629SMatthias Ringwald hci_cmd_buffer[pos++] = ptr[5]; 14756042629SMatthias Ringwald hci_cmd_buffer[pos++] = ptr[4]; 14856042629SMatthias Ringwald hci_cmd_buffer[pos++] = ptr[3]; 14956042629SMatthias Ringwald hci_cmd_buffer[pos++] = ptr[2]; 15056042629SMatthias Ringwald hci_cmd_buffer[pos++] = ptr[1]; 15156042629SMatthias Ringwald hci_cmd_buffer[pos++] = ptr[0]; 15256042629SMatthias Ringwald break; 15356042629SMatthias Ringwald case 'D': // 8 byte data block 154c56de76bSMilanka Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 1556535961aSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, 8); 15656042629SMatthias Ringwald pos += 8; 15756042629SMatthias Ringwald break; 15856042629SMatthias Ringwald case 'E': // Extended Inquiry Information 240 octets 159c56de76bSMilanka Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 1606535961aSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, 240); 16156042629SMatthias Ringwald pos += 240; 16256042629SMatthias Ringwald break; 16356042629SMatthias Ringwald case 'N': { // UTF-8 string, null terminated 164c56de76bSMilanka Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 16548944233SMatthias Ringwald uint16_t len = (uint16_t) strlen((const char*) ptr); 1664ea43905SMatthias Ringwald if (len > 248u) { 16756042629SMatthias Ringwald len = 248; 16856042629SMatthias Ringwald } 1696535961aSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, len); 1704ea43905SMatthias Ringwald if (len < 248u) { 17156042629SMatthias Ringwald // fill remaining space with zeroes 1724ea43905SMatthias Ringwald memset(&hci_cmd_buffer[pos+len], 0u, 248u-len); 17356042629SMatthias Ringwald } 17456042629SMatthias Ringwald pos += 248; 17556042629SMatthias Ringwald break; 17656042629SMatthias Ringwald } 177bb75dd7dSMatthias Ringwald case 'P': // 16 byte PIN code or link key in little endian 178c56de76bSMilanka Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 1796535961aSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, 16); 18056042629SMatthias Ringwald pos += 16; 18156042629SMatthias Ringwald break; 182931b436eSMatthias Ringwald case 'K': // 16 byte OOB Data or Link Key in big endian 183931b436eSMatthias Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 184931b436eSMatthias Ringwald reverse_bytes(ptr, &hci_cmd_buffer[pos], 16); 185931b436eSMatthias Ringwald pos += 16; 186931b436eSMatthias Ringwald break; 187a9a4c409SMatthias Ringwald #ifdef ENABLE_BLE 18856042629SMatthias Ringwald case 'A': // 31 bytes advertising data 189c56de76bSMilanka Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 1906535961aSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, 31); 19156042629SMatthias Ringwald pos += 31; 19256042629SMatthias Ringwald break; 193931b436eSMatthias Ringwald case 'J': // 8 bit variable length indicator for 'V' 194931b436eSMatthias Ringwald word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE 195931b436eSMatthias Ringwald var_len = word & 0xffu; 196e878f80dSMatthias Ringwald hci_cmd_buffer[pos++] = (uint8_t) var_len; 197bb75dd7dSMatthias Ringwald break; 1987f67490cSMatthias Ringwald case 'V': 1997f67490cSMatthias Ringwald btstack_assert(var_len != INVALID_VAR_LEN); 2007f67490cSMatthias Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 2017f67490cSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, var_len); 2027f67490cSMatthias Ringwald pos += var_len; 2037f67490cSMatthias Ringwald var_len = INVALID_VAR_LEN; 2047f67490cSMatthias Ringwald break; 205931b436eSMatthias Ringwald case 'a': 206931b436eSMatthias Ringwald btstack_assert(array_num_elements == INVALID_ARRAY_LEN); 207931b436eSMatthias Ringwald word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE 208931b436eSMatthias Ringwald hci_cmd_buffer[pos++] = word & 0xff; 209931b436eSMatthias Ringwald array_num_elements = word & 0xffu; 210931b436eSMatthias Ringwald break; 211931b436eSMatthias Ringwald case 'b': 212931b436eSMatthias Ringwald btstack_assert(array_num_elements == INVALID_ARRAY_LEN); 213931b436eSMatthias Ringwald word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE 214931b436eSMatthias Ringwald hci_cmd_buffer[pos++] = word & 0xff; 215931b436eSMatthias Ringwald array_num_elements = count_set_bits_uint32(word & 0xffu); 216931b436eSMatthias Ringwald break; 217931b436eSMatthias Ringwald case '[': 218931b436eSMatthias Ringwald btstack_assert(array_num_elements != INVALID_ARRAY_LEN); 219931b436eSMatthias Ringwald // process array 220931b436eSMatthias Ringwald format++; 221931b436eSMatthias Ringwald array_format = format; 222931b436eSMatthias Ringwald array_num_fields = 0; 223c8b094b6SMatthias Ringwald array_done = false; 224c8b094b6SMatthias Ringwald while (!array_done){ 225931b436eSMatthias Ringwald switch (*format){ 226931b436eSMatthias Ringwald case 0: 227c8b094b6SMatthias Ringwald array_done = true; 228931b436eSMatthias Ringwald done_format = true; 229931b436eSMatthias Ringwald break; 230931b436eSMatthias Ringwald case ']': 231c8b094b6SMatthias Ringwald array_done = true; 232931b436eSMatthias Ringwald break; 233931b436eSMatthias Ringwald case '1': 234931b436eSMatthias Ringwald case '2': 235931b436eSMatthias Ringwald // all arrayed parameters are passed in as arrays 236931b436eSMatthias Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 237931b436eSMatthias Ringwald array_data[array_num_fields++] = ptr; 238931b436eSMatthias Ringwald format++; 239931b436eSMatthias Ringwald break; 240931b436eSMatthias Ringwald default: 241931b436eSMatthias Ringwald btstack_unreachable(); 242931b436eSMatthias Ringwald break; 243931b436eSMatthias Ringwald } 244931b436eSMatthias Ringwald } 245931b436eSMatthias Ringwald for (array_element_index = 0; array_element_index < array_num_elements ; array_element_index++){ 246931b436eSMatthias Ringwald uint8_t array_field_index; 247931b436eSMatthias Ringwald for (array_field_index = 0; array_field_index < array_num_fields ; array_field_index++){ 248931b436eSMatthias Ringwald switch (array_format[array_field_index]){ 249931b436eSMatthias Ringwald case '1': 250931b436eSMatthias Ringwald hci_cmd_buffer[pos++] = ((const uint8_t *) array_data[array_field_index])[array_element_index]; 251931b436eSMatthias Ringwald break; 252931b436eSMatthias Ringwald case '2': 253931b436eSMatthias Ringwald little_endian_store_16(hci_cmd_buffer, pos, ((const uint16_t *) array_data[array_field_index])[array_element_index]); 254931b436eSMatthias Ringwald pos += 2; 255931b436eSMatthias Ringwald break; 256931b436eSMatthias Ringwald default: 257931b436eSMatthias Ringwald btstack_unreachable(); 258931b436eSMatthias Ringwald break; 259931b436eSMatthias Ringwald } 260931b436eSMatthias Ringwald } 261931b436eSMatthias Ringwald } 262931b436eSMatthias Ringwald break; 263931b436eSMatthias Ringwald #endif 264931b436eSMatthias Ringwald #ifdef ENABLE_LE_SECURE_CONNECTIONS 265931b436eSMatthias Ringwald case 'Q': 266931b436eSMatthias Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 267931b436eSMatthias Ringwald reverse_bytes(ptr, &hci_cmd_buffer[pos], 32); 268931b436eSMatthias Ringwald pos += 32; 269931b436eSMatthias Ringwald break; 270931b436eSMatthias Ringwald #endif 271931b436eSMatthias Ringwald #ifdef ENABLE_SDP 272931b436eSMatthias Ringwald // used by daemon 273931b436eSMatthias Ringwald case 'S': { // Service Record (Data Element Sequence) 274931b436eSMatthias Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 275931b436eSMatthias Ringwald uint16_t len = de_get_len(ptr); 276931b436eSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, len); 277931b436eSMatthias Ringwald pos += len; 278931b436eSMatthias Ringwald break; 279931b436eSMatthias Ringwald } 280931b436eSMatthias Ringwald #endif 28156042629SMatthias Ringwald default: 2827f67490cSMatthias Ringwald btstack_unreachable(); 28356042629SMatthias Ringwald break; 28456042629SMatthias Ringwald } 28556042629SMatthias Ringwald format++; 28656042629SMatthias Ringwald }; 28756042629SMatthias Ringwald hci_cmd_buffer[2] = pos - 3; 28856042629SMatthias Ringwald return pos; 28956042629SMatthias Ringwald } 29056042629SMatthias Ringwald 291211a5343SMatthias Ringwald 292211a5343SMatthias Ringwald uint16_t hci_cmd_create_from_template_with_vargs(uint8_t * hci_cmd_buffer, const hci_cmd_t * cmd, ...){ 293211a5343SMatthias Ringwald va_list argptr; 294211a5343SMatthias Ringwald va_start(argptr, cmd); 295211a5343SMatthias Ringwald uint16_t size = hci_cmd_create_from_template(hci_cmd_buffer, cmd, argptr); 296211a5343SMatthias Ringwald va_end(argptr); 297211a5343SMatthias Ringwald return size; 298211a5343SMatthias Ringwald } 299211a5343SMatthias Ringwald 30056042629SMatthias Ringwald /** 30156042629SMatthias Ringwald * Link Control Commands 30256042629SMatthias Ringwald */ 30356042629SMatthias Ringwald 30456042629SMatthias Ringwald /** 30556042629SMatthias Ringwald * @param lap 30656042629SMatthias Ringwald * @param inquiry_length 30756042629SMatthias Ringwald * @param num_responses 30856042629SMatthias Ringwald */ 30956042629SMatthias Ringwald const hci_cmd_t hci_inquiry = { 310ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_INQUIRY, "311" 31156042629SMatthias Ringwald }; 31256042629SMatthias Ringwald 31356042629SMatthias Ringwald /** 31456042629SMatthias Ringwald */ 31556042629SMatthias Ringwald const hci_cmd_t hci_inquiry_cancel = { 316ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_INQUIRY_CANCEL, "" 31756042629SMatthias Ringwald }; 31856042629SMatthias Ringwald 31956042629SMatthias Ringwald /** 3206fe44815SRicardo Quesada * @param max_period_length 3216fe44815SRicardo Quesada * @param min_period_length 3226fe44815SRicardo Quesada * @param lap 3236fe44815SRicardo Quesada * @param inquiry_length 3246fe44815SRicardo Quesada * @param num_responses 3256fe44815SRicardo Quesada */ 3266fe44815SRicardo Quesada const hci_cmd_t hci_periodic_inquiry_mode = { 3276fe44815SRicardo Quesada HCI_OPCODE_HCI_PERIODIC_INQUIRY_MODE, "22311" 3286fe44815SRicardo Quesada }; 3296fe44815SRicardo Quesada 3306fe44815SRicardo Quesada /** 3316fe44815SRicardo Quesada */ 3326fe44815SRicardo Quesada const hci_cmd_t hci_exit_periodic_inquiry_mode = { 3336fe44815SRicardo Quesada HCI_OPCODE_HCI_EXIT_PERIODIC_INQUIRY_MODE, "" 3346fe44815SRicardo Quesada }; 3356fe44815SRicardo Quesada 3366fe44815SRicardo Quesada /** 33756042629SMatthias Ringwald * @param bd_addr 33856042629SMatthias Ringwald * @param packet_type 33956042629SMatthias Ringwald * @param page_scan_repetition_mode 34056042629SMatthias Ringwald * @param reserved 34156042629SMatthias Ringwald * @param clock_offset 34256042629SMatthias Ringwald * @param allow_role_switch 34356042629SMatthias Ringwald */ 34456042629SMatthias Ringwald const hci_cmd_t hci_create_connection = { 345ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_CREATE_CONNECTION, "B21121" 34656042629SMatthias Ringwald }; 34756042629SMatthias Ringwald 34856042629SMatthias Ringwald /** 34956042629SMatthias Ringwald * @param handle 35056042629SMatthias Ringwald * @param reason (0x05, 0x13-0x15, 0x1a, 0x29, see Errors Codes in BT Spec Part D) 35156042629SMatthias Ringwald */ 35256042629SMatthias Ringwald const hci_cmd_t hci_disconnect = { 353ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_DISCONNECT, "H1" 35456042629SMatthias Ringwald }; 35556042629SMatthias Ringwald 35656042629SMatthias Ringwald /** 35756042629SMatthias Ringwald * @param bd_addr 35856042629SMatthias Ringwald */ 35956042629SMatthias Ringwald const hci_cmd_t hci_create_connection_cancel = { 360ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_CREATE_CONNECTION_CANCEL, "B" 36156042629SMatthias Ringwald }; 36256042629SMatthias Ringwald 36356042629SMatthias Ringwald /** 36456042629SMatthias Ringwald * @param bd_addr 36556042629SMatthias Ringwald * @param role (become master, stay slave) 36656042629SMatthias Ringwald */ 36756042629SMatthias Ringwald const hci_cmd_t hci_accept_connection_request = { 368ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_ACCEPT_CONNECTION_REQUEST, "B1" 36956042629SMatthias Ringwald }; 37056042629SMatthias Ringwald 37156042629SMatthias Ringwald /** 37256042629SMatthias Ringwald * @param bd_addr 37356042629SMatthias Ringwald * @param reason (e.g. CONNECTION REJECTED DUE TO LIMITED RESOURCES (0x0d)) 37456042629SMatthias Ringwald */ 37556042629SMatthias Ringwald const hci_cmd_t hci_reject_connection_request = { 376ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_REJECT_CONNECTION_REQUEST, "B1" 37756042629SMatthias Ringwald }; 37856042629SMatthias Ringwald 37956042629SMatthias Ringwald /** 38056042629SMatthias Ringwald * @param bd_addr 38156042629SMatthias Ringwald * @param link_key 38256042629SMatthias Ringwald */ 38356042629SMatthias Ringwald const hci_cmd_t hci_link_key_request_reply = { 384ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LINK_KEY_REQUEST_REPLY, "BP" 38556042629SMatthias Ringwald }; 38656042629SMatthias Ringwald 38756042629SMatthias Ringwald /** 38856042629SMatthias Ringwald * @param bd_addr 38956042629SMatthias Ringwald */ 39056042629SMatthias Ringwald const hci_cmd_t hci_link_key_request_negative_reply = { 391ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LINK_KEY_REQUEST_NEGATIVE_REPLY, "B" 39256042629SMatthias Ringwald }; 39356042629SMatthias Ringwald 39456042629SMatthias Ringwald /** 39556042629SMatthias Ringwald * @param bd_addr 39656042629SMatthias Ringwald * @param pin_length 39756042629SMatthias Ringwald * @param pin (c-string) 39856042629SMatthias Ringwald */ 39956042629SMatthias Ringwald const hci_cmd_t hci_pin_code_request_reply = { 400ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_PIN_CODE_REQUEST_REPLY, "B1P" 40156042629SMatthias Ringwald }; 40256042629SMatthias Ringwald 40356042629SMatthias Ringwald /** 40456042629SMatthias Ringwald * @param bd_addr 40556042629SMatthias Ringwald */ 40656042629SMatthias Ringwald const hci_cmd_t hci_pin_code_request_negative_reply = { 407ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_PIN_CODE_REQUEST_NEGATIVE_REPLY, "B" 40856042629SMatthias Ringwald }; 40956042629SMatthias Ringwald 41056042629SMatthias Ringwald /** 41156042629SMatthias Ringwald * @param handle 41256042629SMatthias Ringwald * @param packet_type 41356042629SMatthias Ringwald */ 41456042629SMatthias Ringwald const hci_cmd_t hci_change_connection_packet_type = { 415ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_CHANGE_CONNECTION_PACKET_TYPE, "H2" 41656042629SMatthias Ringwald }; 41756042629SMatthias Ringwald 41856042629SMatthias Ringwald /** 41956042629SMatthias Ringwald * @param handle 42056042629SMatthias Ringwald */ 42156042629SMatthias Ringwald const hci_cmd_t hci_authentication_requested = { 422ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_AUTHENTICATION_REQUESTED, "H" 42356042629SMatthias Ringwald }; 42456042629SMatthias Ringwald 42556042629SMatthias Ringwald /** 42656042629SMatthias Ringwald * @param handle 42756042629SMatthias Ringwald * @param encryption_enable 42856042629SMatthias Ringwald */ 42956042629SMatthias Ringwald const hci_cmd_t hci_set_connection_encryption = { 430ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_SET_CONNECTION_ENCRYPTION, "H1" 43156042629SMatthias Ringwald }; 43256042629SMatthias Ringwald 43356042629SMatthias Ringwald /** 43456042629SMatthias Ringwald * @param handle 43556042629SMatthias Ringwald */ 43656042629SMatthias Ringwald const hci_cmd_t hci_change_connection_link_key = { 437ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_CHANGE_CONNECTION_LINK_KEY, "H" 43856042629SMatthias Ringwald }; 43956042629SMatthias Ringwald 44056042629SMatthias Ringwald /** 44156042629SMatthias Ringwald * @param bd_addr 44256042629SMatthias Ringwald * @param page_scan_repetition_mode 44356042629SMatthias Ringwald * @param reserved 44456042629SMatthias Ringwald * @param clock_offset 44556042629SMatthias Ringwald */ 44656042629SMatthias Ringwald const hci_cmd_t hci_remote_name_request = { 447ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_REMOTE_NAME_REQUEST, "B112" 44856042629SMatthias Ringwald }; 44956042629SMatthias Ringwald 45056042629SMatthias Ringwald 45156042629SMatthias Ringwald /** 45256042629SMatthias Ringwald * @param bd_addr 45356042629SMatthias Ringwald */ 45456042629SMatthias Ringwald const hci_cmd_t hci_remote_name_request_cancel = { 455ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_REMOTE_NAME_REQUEST_CANCEL, "B" 45656042629SMatthias Ringwald }; 45756042629SMatthias Ringwald 45856042629SMatthias Ringwald /** 45956042629SMatthias Ringwald * @param handle 46056042629SMatthias Ringwald */ 46156042629SMatthias Ringwald const hci_cmd_t hci_read_remote_supported_features_command = { 462ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_REMOTE_SUPPORTED_FEATURES_COMMAND, "H" 4638b22c04dSMatthias Ringwald }; 4648b22c04dSMatthias Ringwald 4658b22c04dSMatthias Ringwald /** 466d5057706SMatthias Ringwald * @param handle 467d5057706SMatthias Ringwald */ 468d5057706SMatthias Ringwald const hci_cmd_t hci_read_remote_extended_features_command = { 469ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_REMOTE_EXTENDED_FEATURES_COMMAND, "H1" 470d5057706SMatthias Ringwald }; 471d5057706SMatthias Ringwald 472d5057706SMatthias Ringwald /** 4738b22c04dSMatthias Ringwald * @param handle 4748b22c04dSMatthias Ringwald */ 4758b22c04dSMatthias Ringwald const hci_cmd_t hci_read_remote_version_information = { 476ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_REMOTE_VERSION_INFORMATION, "H" 47756042629SMatthias Ringwald }; 47856042629SMatthias Ringwald 47956042629SMatthias Ringwald /** 48056042629SMatthias Ringwald * @param handle 48156042629SMatthias Ringwald * @param transmit_bandwidth 8000(64kbps) 48256042629SMatthias Ringwald * @param receive_bandwidth 8000(64kbps) 48356042629SMatthias Ringwald * @param max_latency >= 7ms for eSCO, 0xFFFF do not care 48456042629SMatthias Ringwald * @param voice_settings e.g. CVSD, Input Coding: Linear, Input Data Format: 2’s complement, data 16bit: 00011000000 == 0x60 48556042629SMatthias Ringwald * @param retransmission_effort e.g. 0xFF do not care 48656042629SMatthias Ringwald * @param packet_type at least EV3 for eSCO 48756042629SMatthias Ringwald */ 48856042629SMatthias Ringwald const hci_cmd_t hci_setup_synchronous_connection = { 489ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_SETUP_SYNCHRONOUS_CONNECTION, "H442212" 49056042629SMatthias Ringwald }; 49156042629SMatthias Ringwald 49256042629SMatthias Ringwald /** 49356042629SMatthias Ringwald * @param bd_addr 49456042629SMatthias Ringwald * @param transmit_bandwidth 49556042629SMatthias Ringwald * @param receive_bandwidth 49656042629SMatthias Ringwald * @param max_latency 49756042629SMatthias Ringwald * @param voice_settings 49856042629SMatthias Ringwald * @param retransmission_effort 49956042629SMatthias Ringwald * @param packet_type 50056042629SMatthias Ringwald */ 50156042629SMatthias Ringwald const hci_cmd_t hci_accept_synchronous_connection = { 502ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_ACCEPT_SYNCHRONOUS_CONNECTION, "B442212" 50356042629SMatthias Ringwald }; 50456042629SMatthias Ringwald 50556042629SMatthias Ringwald /** 50656042629SMatthias Ringwald * @param bd_addr 50756042629SMatthias Ringwald * @param IO_capability 50856042629SMatthias Ringwald * @param OOB_data_present 50956042629SMatthias Ringwald * @param authentication_requirements 51056042629SMatthias Ringwald */ 51156042629SMatthias Ringwald const hci_cmd_t hci_io_capability_request_reply = { 512ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_IO_CAPABILITY_REQUEST_REPLY, "B111" 51356042629SMatthias Ringwald }; 51456042629SMatthias Ringwald 51556042629SMatthias Ringwald /** 51656042629SMatthias Ringwald * @param bd_addr 51756042629SMatthias Ringwald */ 51856042629SMatthias Ringwald const hci_cmd_t hci_user_confirmation_request_reply = { 519ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_USER_CONFIRMATION_REQUEST_REPLY, "B" 52056042629SMatthias Ringwald }; 52156042629SMatthias Ringwald 52256042629SMatthias Ringwald /** 52356042629SMatthias Ringwald * @param bd_addr 52456042629SMatthias Ringwald */ 52556042629SMatthias Ringwald const hci_cmd_t hci_user_confirmation_request_negative_reply = { 526ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_USER_CONFIRMATION_REQUEST_NEGATIVE_REPLY, "B" 52756042629SMatthias Ringwald }; 52856042629SMatthias Ringwald 52956042629SMatthias Ringwald /** 53056042629SMatthias Ringwald * @param bd_addr 53156042629SMatthias Ringwald * @param numeric_value 53256042629SMatthias Ringwald */ 53356042629SMatthias Ringwald const hci_cmd_t hci_user_passkey_request_reply = { 534ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_USER_PASSKEY_REQUEST_REPLY, "B4" 53556042629SMatthias Ringwald }; 53656042629SMatthias Ringwald 53756042629SMatthias Ringwald /** 53856042629SMatthias Ringwald * @param bd_addr 53956042629SMatthias Ringwald */ 54056042629SMatthias Ringwald const hci_cmd_t hci_user_passkey_request_negative_reply = { 541ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_USER_PASSKEY_REQUEST_NEGATIVE_REPLY, "B" 54256042629SMatthias Ringwald }; 54356042629SMatthias Ringwald 54456042629SMatthias Ringwald /** 54556042629SMatthias Ringwald * @param bd_addr 546237daac5SMatthias Ringwald * @param c Simple Pairing Hash C 547237daac5SMatthias Ringwald * @param r Simple Pairing Randomizer R 548237daac5SMatthias Ringwald */ 549237daac5SMatthias Ringwald const hci_cmd_t hci_remote_oob_data_request_reply = { 550bb75dd7dSMatthias Ringwald HCI_OPCODE_HCI_REMOTE_OOB_DATA_REQUEST_REPLY, "BKK" 551237daac5SMatthias Ringwald }; 552237daac5SMatthias Ringwald 553237daac5SMatthias Ringwald /** 554237daac5SMatthias Ringwald * @param bd_addr 55556042629SMatthias Ringwald */ 55656042629SMatthias Ringwald const hci_cmd_t hci_remote_oob_data_request_negative_reply = { 557ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_REMOTE_OOB_DATA_REQUEST_NEGATIVE_REPLY, "B" 55856042629SMatthias Ringwald }; 55956042629SMatthias Ringwald 56056042629SMatthias Ringwald /** 56156042629SMatthias Ringwald * @param bd_addr 56256042629SMatthias Ringwald * @param reason (Part D, Error codes) 56356042629SMatthias Ringwald */ 56456042629SMatthias Ringwald const hci_cmd_t hci_io_capability_request_negative_reply = { 565ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_IO_CAPABILITY_REQUEST_NEGATIVE_REPLY, "B1" 56656042629SMatthias Ringwald }; 56756042629SMatthias Ringwald 56856042629SMatthias Ringwald /** 56956042629SMatthias Ringwald * @param handle 57056042629SMatthias Ringwald * @param transmit_bandwidth 57156042629SMatthias Ringwald * @param receive_bandwidth 57256042629SMatthias Ringwald * @param transmit_coding_format_type 57356042629SMatthias Ringwald * @param transmit_coding_format_company 57456042629SMatthias Ringwald * @param transmit_coding_format_codec 57556042629SMatthias Ringwald * @param receive_coding_format_type 57656042629SMatthias Ringwald * @param receive_coding_format_company 57756042629SMatthias Ringwald * @param receive_coding_format_codec 57856042629SMatthias Ringwald * @param transmit_coding_frame_size 57956042629SMatthias Ringwald * @param receive_coding_frame_size 58056042629SMatthias Ringwald * @param input_bandwidth 58156042629SMatthias Ringwald * @param output_bandwidth 58256042629SMatthias Ringwald * @param input_coding_format_type 58356042629SMatthias Ringwald * @param input_coding_format_company 58456042629SMatthias Ringwald * @param input_coding_format_codec 58556042629SMatthias Ringwald * @param output_coding_format_type 58656042629SMatthias Ringwald * @param output_coding_format_company 58756042629SMatthias Ringwald * @param output_coding_format_codec 58856042629SMatthias Ringwald * @param input_coded_data_size 58956042629SMatthias Ringwald * @param outupt_coded_data_size 59056042629SMatthias Ringwald * @param input_pcm_data_format 59156042629SMatthias Ringwald * @param output_pcm_data_format 59256042629SMatthias Ringwald * @param input_pcm_sample_payload_msb_position 59356042629SMatthias Ringwald * @param output_pcm_sample_payload_msb_position 59456042629SMatthias Ringwald * @param input_data_path 59556042629SMatthias Ringwald * @param output_data_path 59656042629SMatthias Ringwald * @param input_transport_unit_size 59756042629SMatthias Ringwald * @param output_transport_unit_size 59856042629SMatthias Ringwald * @param max_latency 59956042629SMatthias Ringwald * @param packet_type 60056042629SMatthias Ringwald * @param retransmission_effort 60156042629SMatthias Ringwald */ 60256042629SMatthias Ringwald const hci_cmd_t hci_enhanced_setup_synchronous_connection = { 603ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_ENHANCED_SETUP_SYNCHRONOUS_CONNECTION, "H4412212222441221222211111111221" 60456042629SMatthias Ringwald }; 60556042629SMatthias Ringwald 60656042629SMatthias Ringwald /** 60756042629SMatthias Ringwald * @param bd_addr 60856042629SMatthias Ringwald * @param transmit_bandwidth 60956042629SMatthias Ringwald * @param receive_bandwidth 61056042629SMatthias Ringwald * @param transmit_coding_format_type 61156042629SMatthias Ringwald * @param transmit_coding_format_company 61256042629SMatthias Ringwald * @param transmit_coding_format_codec 61356042629SMatthias Ringwald * @param receive_coding_format_type 61456042629SMatthias Ringwald * @param receive_coding_format_company 61556042629SMatthias Ringwald * @param receive_coding_format_codec 61656042629SMatthias Ringwald * @param transmit_coding_frame_size 61756042629SMatthias Ringwald * @param receive_coding_frame_size 61856042629SMatthias Ringwald * @param input_bandwidth 61956042629SMatthias Ringwald * @param output_bandwidth 62056042629SMatthias Ringwald * @param input_coding_format_type 62156042629SMatthias Ringwald * @param input_coding_format_company 62256042629SMatthias Ringwald * @param input_coding_format_codec 62356042629SMatthias Ringwald * @param output_coding_format_type 62456042629SMatthias Ringwald * @param output_coding_format_company 62556042629SMatthias Ringwald * @param output_coding_format_codec 62656042629SMatthias Ringwald * @param input_coded_data_size 62756042629SMatthias Ringwald * @param outupt_coded_data_size 62856042629SMatthias Ringwald * @param input_pcm_data_format 62956042629SMatthias Ringwald * @param output_pcm_data_format 63056042629SMatthias Ringwald * @param input_pcm_sample_payload_msb_position 63156042629SMatthias Ringwald * @param output_pcm_sample_payload_msb_position 63256042629SMatthias Ringwald * @param input_data_path 63356042629SMatthias Ringwald * @param output_data_path 63456042629SMatthias Ringwald * @param input_transport_unit_size 63556042629SMatthias Ringwald * @param output_transport_unit_size 63656042629SMatthias Ringwald * @param max_latency 63756042629SMatthias Ringwald * @param packet_type 63856042629SMatthias Ringwald * @param retransmission_effort 63956042629SMatthias Ringwald */ 64056042629SMatthias Ringwald const hci_cmd_t hci_enhanced_accept_synchronous_connection = { 641ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_ENHANCED_ACCEPT_SYNCHRONOUS_CONNECTION, "B4412212222441221222211111111221" 64256042629SMatthias Ringwald }; 64356042629SMatthias Ringwald 64456042629SMatthias Ringwald /** 645bb75dd7dSMatthias Ringwald * @param bd_addr 646bb75dd7dSMatthias Ringwald * @param c_192 Simple Pairing Hash C derived from P-192 public key 647bb75dd7dSMatthias Ringwald * @param r_192 Simple Pairing Randomizer derived from P-192 public key 648bb75dd7dSMatthias Ringwald * @param c_256 Simple Pairing Hash C derived from P-256 public key 649bb75dd7dSMatthias Ringwald * @param r_256 Simple Pairing Randomizer derived from P-256 public key 650bb75dd7dSMatthias Ringwald */ 651bb75dd7dSMatthias Ringwald const hci_cmd_t hci_remote_oob_extended_data_request_reply = { 652bb75dd7dSMatthias Ringwald HCI_OPCODE_HCI_REMOTE_OOB_EXTENDED_DATA_REQUEST_REPLY, "BKKKK" 653bb75dd7dSMatthias Ringwald }; 654bb75dd7dSMatthias Ringwald 655bb75dd7dSMatthias Ringwald /** 65656042629SMatthias Ringwald * Link Policy Commands 65756042629SMatthias Ringwald */ 65856042629SMatthias Ringwald 65956042629SMatthias Ringwald /** 66056042629SMatthias Ringwald * @param handle 66129ae3d7dSMatthias Ringwald * @param hold_mode_max_interval * 0.625 ms, range: 0x0002..0xFFFE; only even values are valid. 66229ae3d7dSMatthias Ringwald * @param hold_mode_min_interval * 0.625 ms, range: 0x0002..0xFFFE; only even values are valid. 66329ae3d7dSMatthias Ringwald */ 66429ae3d7dSMatthias Ringwald const hci_cmd_t hci_hold_mode = { 66529ae3d7dSMatthias Ringwald HCI_OPCODE_HCI_HOLD_MODE, "H22" 66629ae3d7dSMatthias Ringwald }; 66729ae3d7dSMatthias Ringwald 66829ae3d7dSMatthias Ringwald /** 66929ae3d7dSMatthias Ringwald * @param handle 67056042629SMatthias Ringwald * @param sniff_max_interval 67156042629SMatthias Ringwald * @param sniff_min_interval 67256042629SMatthias Ringwald * @param sniff_attempt 67356042629SMatthias Ringwald * @param sniff_timeout 67456042629SMatthias Ringwald */ 67556042629SMatthias Ringwald const hci_cmd_t hci_sniff_mode = { 676ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_SNIFF_MODE, "H2222" 67756042629SMatthias Ringwald }; 67856042629SMatthias Ringwald 67956042629SMatthias Ringwald /** 68056042629SMatthias Ringwald * @param handle 6817cd21895SMatthias Ringwald */ 6827cd21895SMatthias Ringwald const hci_cmd_t hci_exit_sniff_mode = { 683ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_EXIT_SNIFF_MODE, "H" 6847cd21895SMatthias Ringwald }; 6857cd21895SMatthias Ringwald 6867cd21895SMatthias Ringwald /** 6876f351188SMatthias Ringwald * @note Removed in Bluetooth Core v5.0 6886f351188SMatthias Ringwald * @param handle 6896f351188SMatthias Ringwald * @param beacon_max_interval * 0.625 ms, range: 0x000E..0xFFFE; only even values are valid. 6906f351188SMatthias Ringwald * @param beacon_max_interval * 0.625 ms, range: 0x000E..0xFFFE; only even values are valid. 6916f351188SMatthias Ringwald */ 6926f351188SMatthias Ringwald const hci_cmd_t hci_park_state = { 6936f351188SMatthias Ringwald HCI_OPCODE_HCI_PARK_STATE, "H22" 6946f351188SMatthias Ringwald }; 6956f351188SMatthias Ringwald 6966f351188SMatthias Ringwald /** 6976f351188SMatthias Ringwald * @note Removed in Bluetooth Core v5.0 6986f351188SMatthias Ringwald * @param handle 6996f351188SMatthias Ringwald */ 7006f351188SMatthias Ringwald const hci_cmd_t hci_exit_park_state = { 7016f351188SMatthias Ringwald HCI_OPCODE_HCI_EXIT_PARK_STATE, "H" 7026f351188SMatthias Ringwald }; 7036f351188SMatthias Ringwald 7046f351188SMatthias Ringwald /** 7057cd21895SMatthias Ringwald * @param handle 70656042629SMatthias Ringwald * @param flags 70756042629SMatthias Ringwald * @param service_type 70856042629SMatthias Ringwald * @param token_rate (bytes/s) 70956042629SMatthias Ringwald * @param peak_bandwith (bytes/s) 71056042629SMatthias Ringwald * @param latency (us) 71156042629SMatthias Ringwald * @param delay_variation (us) 71256042629SMatthias Ringwald */ 71356042629SMatthias Ringwald const hci_cmd_t hci_qos_setup = { 714ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_QOS_SETUP, "H114444" 71556042629SMatthias Ringwald }; 71656042629SMatthias Ringwald 71756042629SMatthias Ringwald /** 71856042629SMatthias Ringwald * @param handle 71956042629SMatthias Ringwald */ 72056042629SMatthias Ringwald const hci_cmd_t hci_role_discovery = { 721ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_ROLE_DISCOVERY, "H" 72256042629SMatthias Ringwald }; 72356042629SMatthias Ringwald 72456042629SMatthias Ringwald /** 72556042629SMatthias Ringwald * @param bd_addr 72656042629SMatthias Ringwald * @param role (0=master,1=slave) 72756042629SMatthias Ringwald */ 72856042629SMatthias Ringwald const hci_cmd_t hci_switch_role_command= { 729ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_SWITCH_ROLE_COMMAND, "B1" 73056042629SMatthias Ringwald }; 73156042629SMatthias Ringwald 73256042629SMatthias Ringwald /** 73356042629SMatthias Ringwald * @param handle 73456042629SMatthias Ringwald */ 73556042629SMatthias Ringwald const hci_cmd_t hci_read_link_policy_settings = { 736ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LINK_POLICY_SETTINGS, "H" 73756042629SMatthias Ringwald }; 73856042629SMatthias Ringwald 73956042629SMatthias Ringwald /** 74056042629SMatthias Ringwald * @param handle 74156042629SMatthias Ringwald * @param settings 74256042629SMatthias Ringwald */ 74356042629SMatthias Ringwald const hci_cmd_t hci_write_link_policy_settings = { 744ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_LINK_POLICY_SETTINGS, "H2" 74556042629SMatthias Ringwald }; 74656042629SMatthias Ringwald 747c4c88f1bSJakob Krantz /** 74832e2f27fSMatthias Ringwald * @param handle 74932e2f27fSMatthias Ringwald * @param max_latency 75032e2f27fSMatthias Ringwald * @param min_remote_timeout 75132e2f27fSMatthias Ringwald * @param min_local_timeout 75232e2f27fSMatthias Ringwald */ 75332e2f27fSMatthias Ringwald const hci_cmd_t hci_sniff_subrating = { 75450fe3a99SMilanka Ringwald HCI_OPCODE_HCI_SNIFF_SUBRATING, "H222" 75532e2f27fSMatthias Ringwald }; 75632e2f27fSMatthias Ringwald 75732e2f27fSMatthias Ringwald /** 758c4c88f1bSJakob Krantz * @param policy 759c4c88f1bSJakob Krantz */ 76053138e7aSMatthias Ringwald const hci_cmd_t hci_write_default_link_policy_setting = { 761ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_DEFAULT_LINK_POLICY_SETTING, "2" 762c4c88f1bSJakob Krantz }; 763c4c88f1bSJakob Krantz 764733a7793SMatthias Ringwald /** 765733a7793SMatthias Ringwald * @param handle 766733a7793SMatthias Ringwald * @param unused 767733a7793SMatthias Ringwald * @param flow_direction 768733a7793SMatthias Ringwald * @param service_type 769733a7793SMatthias Ringwald * @param token_rate 770733a7793SMatthias Ringwald * @param token_bucket_size 771733a7793SMatthias Ringwald * @param peak_bandwidth 772733a7793SMatthias Ringwald * @param access_latency 773733a7793SMatthias Ringwald */ 774733a7793SMatthias Ringwald const hci_cmd_t hci_flow_specification = { 775733a7793SMatthias Ringwald HCI_OPCODE_HCI_FLOW_SPECIFICATION, "H1114444" 776733a7793SMatthias Ringwald }; 777733a7793SMatthias Ringwald 77856042629SMatthias Ringwald 77956042629SMatthias Ringwald /** 78056042629SMatthias Ringwald * Controller & Baseband Commands 78156042629SMatthias Ringwald */ 78256042629SMatthias Ringwald 7839119d792SMilanka Ringwald 78456042629SMatthias Ringwald /** 785ff7d1758SMatthias Ringwald * @param event_mask_lower_octets 78656042629SMatthias Ringwald * @param event_mask_higher_octets 78756042629SMatthias Ringwald */ 78856042629SMatthias Ringwald const hci_cmd_t hci_set_event_mask = { 789ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_SET_EVENT_MASK, "44" 79056042629SMatthias Ringwald }; 79156042629SMatthias Ringwald 79256042629SMatthias Ringwald /** 79356042629SMatthias Ringwald */ 79456042629SMatthias Ringwald const hci_cmd_t hci_reset = { 795ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_RESET, "" 79656042629SMatthias Ringwald }; 79756042629SMatthias Ringwald 79856042629SMatthias Ringwald /** 799e49d496aSMatthias Ringwald * @param handle 800e49d496aSMatthias Ringwald */ 801e49d496aSMatthias Ringwald const hci_cmd_t hci_flush = { 802ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_FLUSH, "H" 8039af39d9fSMatthias Ringwald }; 8049af39d9fSMatthias Ringwald 8059af39d9fSMatthias Ringwald /** 8069af39d9fSMatthias Ringwald * @param handle 8079af39d9fSMatthias Ringwald */ 8089af39d9fSMatthias Ringwald const hci_cmd_t hci_read_pin_type = { 809ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_PIN_TYPE, "" 8109af39d9fSMatthias Ringwald }; 8119af39d9fSMatthias Ringwald 8129af39d9fSMatthias Ringwald /** 8139af39d9fSMatthias Ringwald * @param handle 8149af39d9fSMatthias Ringwald */ 8159af39d9fSMatthias Ringwald const hci_cmd_t hci_write_pin_type = { 816ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_PIN_TYPE, "1" 817e49d496aSMatthias Ringwald }; 818e49d496aSMatthias Ringwald 819e49d496aSMatthias Ringwald /** 82056042629SMatthias Ringwald * @param bd_addr 82156042629SMatthias Ringwald * @param delete_all_flags 82256042629SMatthias Ringwald */ 82356042629SMatthias Ringwald const hci_cmd_t hci_delete_stored_link_key = { 824ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_DELETE_STORED_LINK_KEY, "B1" 82556042629SMatthias Ringwald }; 82656042629SMatthias Ringwald 827f9f2075cSMatthias Ringwald #ifdef ENABLE_CLASSIC 82856042629SMatthias Ringwald /** 82956042629SMatthias Ringwald * @param local_name (UTF-8, Null Terminated, max 248 octets) 83056042629SMatthias Ringwald */ 83156042629SMatthias Ringwald const hci_cmd_t hci_write_local_name = { 832ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_LOCAL_NAME, "N" 83356042629SMatthias Ringwald }; 834f9f2075cSMatthias Ringwald #endif 83556042629SMatthias Ringwald 83656042629SMatthias Ringwald /** 837e90bae01SMatthias Ringwald */ 838e90bae01SMatthias Ringwald const hci_cmd_t hci_read_local_name = { 839ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LOCAL_NAME, "" 840e90bae01SMatthias Ringwald }; 841e90bae01SMatthias Ringwald 842e90bae01SMatthias Ringwald /** 843195e82f3Sskoperst */ 844195e82f3Sskoperst const hci_cmd_t hci_read_page_timeout = { 845ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_PAGE_TIMEOUT, "" 846195e82f3Sskoperst }; 847195e82f3Sskoperst 848195e82f3Sskoperst /** 84956042629SMatthias Ringwald * @param page_timeout (* 0.625 ms) 85056042629SMatthias Ringwald */ 85156042629SMatthias Ringwald const hci_cmd_t hci_write_page_timeout = { 852ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_PAGE_TIMEOUT, "2" 85356042629SMatthias Ringwald }; 85456042629SMatthias Ringwald 85556042629SMatthias Ringwald /** 8564eac2391SMatthias Ringwald * @param scan_enable (no, inq, page, inq+page) 8574eac2391SMatthias Ringwald */ 8584eac2391SMatthias Ringwald const hci_cmd_t hci_write_scan_enable = { 859ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_SCAN_ENABLE, "1" 8604eac2391SMatthias Ringwald }; 8614eac2391SMatthias Ringwald 8624eac2391SMatthias Ringwald /** 863195e82f3Sskoperst */ 864195e82f3Sskoperst const hci_cmd_t hci_read_page_scan_activity = { 865ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_PAGE_SCAN_ACTIVITY, "" 866195e82f3Sskoperst }; 867195e82f3Sskoperst 868195e82f3Sskoperst /** 869195e82f3Sskoperst * @param page_scan_interval (* 0.625 ms) 870195e82f3Sskoperst * @param page_scan_window (* 0.625 ms, must be <= page_scan_interval) 871195e82f3Sskoperst */ 872195e82f3Sskoperst const hci_cmd_t hci_write_page_scan_activity = { 873ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_PAGE_SCAN_ACTIVITY, "22" 874195e82f3Sskoperst }; 875195e82f3Sskoperst 876195e82f3Sskoperst /** 87756042629SMatthias Ringwald */ 8784eac2391SMatthias Ringwald const hci_cmd_t hci_read_inquiry_scan_activity = { 879ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_INQUIRY_SCAN_ACTIVITY, "" 8804eac2391SMatthias Ringwald }; 8814eac2391SMatthias Ringwald 8824eac2391SMatthias Ringwald /** 8834eac2391SMatthias Ringwald * @param inquiry_scan_interval (* 0.625 ms) 8844eac2391SMatthias Ringwald * @param inquiry_scan_window (* 0.625 ms, must be <= inquiry_scan_interval) 8854eac2391SMatthias Ringwald */ 8864eac2391SMatthias Ringwald const hci_cmd_t hci_write_inquiry_scan_activity = { 887ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_INQUIRY_SCAN_ACTIVITY, "22" 88856042629SMatthias Ringwald }; 88956042629SMatthias Ringwald 89056042629SMatthias Ringwald /** 89156042629SMatthias Ringwald * @param authentication_enable 89256042629SMatthias Ringwald */ 89356042629SMatthias Ringwald const hci_cmd_t hci_write_authentication_enable = { 894ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_AUTHENTICATION_ENABLE, "1" 89556042629SMatthias Ringwald }; 89656042629SMatthias Ringwald 89756042629SMatthias Ringwald /** 89839bcce03SMatthias Ringwald * @param handle 89939bcce03SMatthias Ringwald * @param timeout, max 0x07FF 90039bcce03SMatthias Ringwald */ 90139bcce03SMatthias Ringwald const hci_cmd_t hci_write_automatic_flush_timeout = { 90239bcce03SMatthias Ringwald HCI_OPCODE_HCI_WRITE_AUTOMATIC_FLUSH_TIMEOUT, "H2" 90339bcce03SMatthias Ringwald }; 90439bcce03SMatthias Ringwald 90539bcce03SMatthias Ringwald /** 90656042629SMatthias Ringwald * @param class_of_device 90756042629SMatthias Ringwald */ 90856042629SMatthias Ringwald const hci_cmd_t hci_write_class_of_device = { 909ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_CLASS_OF_DEVICE, "3" 91056042629SMatthias Ringwald }; 91156042629SMatthias Ringwald 91256042629SMatthias Ringwald /** 91356042629SMatthias Ringwald */ 91456042629SMatthias Ringwald const hci_cmd_t hci_read_num_broadcast_retransmissions = { 915ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_NUM_BROADCAST_RETRANSMISSIONS, "" 91656042629SMatthias Ringwald }; 91756042629SMatthias Ringwald 91856042629SMatthias Ringwald /** 91956042629SMatthias Ringwald * @param num_broadcast_retransmissions (e.g. 0 for a single broadcast) 92056042629SMatthias Ringwald */ 92156042629SMatthias Ringwald const hci_cmd_t hci_write_num_broadcast_retransmissions = { 922ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_NUM_BROADCAST_RETRANSMISSIONS, "1" 92356042629SMatthias Ringwald }; 92456042629SMatthias Ringwald 92556042629SMatthias Ringwald /** 92644751e25SMatthias Ringwald * @param connection_handle 92744751e25SMatthias Ringwald * @param type 0 = current transmit level, 1 = max transmit level 92844751e25SMatthias Ringwald */ 92944751e25SMatthias Ringwald const hci_cmd_t hci_read_transmit_power_level = { 9302ea455e1SMatthias Ringwald HCI_OPCODE_HCI_READ_TRANSMIT_POWER_LEVEL, "H1" 93144751e25SMatthias Ringwald }; 93244751e25SMatthias Ringwald 93344751e25SMatthias Ringwald /** 93456042629SMatthias Ringwald * @param synchronous_flow_control_enable - if yes, num completed packet everts are sent for SCO packets 93556042629SMatthias Ringwald */ 93656042629SMatthias Ringwald const hci_cmd_t hci_write_synchronous_flow_control_enable = { 937ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_SYNCHRONOUS_FLOW_CONTROL_ENABLE, "1" 93856042629SMatthias Ringwald }; 93956042629SMatthias Ringwald 9402b838201SMatthias Ringwald #ifdef ENABLE_HCI_CONTROLLER_TO_HOST_FLOW_CONTROL 9412b838201SMatthias Ringwald 9422b838201SMatthias Ringwald /** 9432b838201SMatthias Ringwald * @param flow_control_enable - 0: off, 1: ACL only, 2: SCO only, 3: ACL + SCO 9442b838201SMatthias Ringwald */ 9452b838201SMatthias Ringwald const hci_cmd_t hci_set_controller_to_host_flow_control = { 946ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_SET_CONTROLLER_TO_HOST_FLOW_CONTROL, "1" 9472b838201SMatthias Ringwald }; 9482b838201SMatthias Ringwald 94956042629SMatthias Ringwald /** 95056042629SMatthias Ringwald * @param host_acl_data_packet_length 95156042629SMatthias Ringwald * @param host_synchronous_data_packet_length 95256042629SMatthias Ringwald * @param host_total_num_acl_data_packets 95356042629SMatthias Ringwald * @param host_total_num_synchronous_data_packets 95456042629SMatthias Ringwald */ 95556042629SMatthias Ringwald const hci_cmd_t hci_host_buffer_size = { 956ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_HOST_BUFFER_SIZE, "2122" 95756042629SMatthias Ringwald }; 95856042629SMatthias Ringwald 9599119d792SMilanka Ringwald 9602b838201SMatthias Ringwald #if 0 9612b838201SMatthias Ringwald // 9622b838201SMatthias Ringwald // command sent manually sent by hci_host_num_completed_packets 9632b838201SMatthias Ringwald // 9642b838201SMatthias Ringwald /** 9652b838201SMatthias Ringwald * @note only single handle supported by BTstack command generator 9662b838201SMatthias Ringwald * @param number_of_handles must be 1 9672b838201SMatthias Ringwald * @param connection_handle 9682b838201SMatthias Ringwald * @param host_num_of_completed_packets for the given connection handle 9692b838201SMatthias Ringwald */ 9702b838201SMatthias Ringwald const hci_cmd_t hci_host_number_of_completed_packets = { 971ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_HOST_NUMBER_OF_COMPLETED_PACKETS, "1H2" 9722b838201SMatthias Ringwald }; 9732b838201SMatthias Ringwald #endif 9742b838201SMatthias Ringwald 9752b838201SMatthias Ringwald #endif 9762b838201SMatthias Ringwald 97756042629SMatthias Ringwald /** 97856042629SMatthias Ringwald * @param handle 97956042629SMatthias Ringwald */ 98056042629SMatthias Ringwald const hci_cmd_t hci_read_link_supervision_timeout = { 981ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LINK_SUPERVISION_TIMEOUT, "H" 98256042629SMatthias Ringwald }; 98356042629SMatthias Ringwald 98456042629SMatthias Ringwald /** 98556042629SMatthias Ringwald * @param handle 98656042629SMatthias Ringwald * @param timeout (0x0001 - 0xFFFF Time -> Range: 0.625ms - 40.9 sec) 98756042629SMatthias Ringwald */ 98856042629SMatthias Ringwald const hci_cmd_t hci_write_link_supervision_timeout = { 989ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_LINK_SUPERVISION_TIMEOUT, "H2" 99056042629SMatthias Ringwald }; 99156042629SMatthias Ringwald 99256042629SMatthias Ringwald /** 9939119d792SMilanka Ringwald * @param num_current_iac must be 2 9949119d792SMilanka Ringwald * @param iac_lap1 9959119d792SMilanka Ringwald * @param iac_lap2 9969119d792SMilanka Ringwald */ 9979119d792SMilanka Ringwald const hci_cmd_t hci_write_current_iac_lap_two_iacs = { 998ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_CURRENT_IAC_LAP_TWO_IACS, "133" 9999119d792SMilanka Ringwald }; 10009119d792SMilanka Ringwald 10019119d792SMilanka Ringwald /** 10025769fd77SMatthias Ringwald * @param inquiry_scan_type (0x00 = standard, 0x01 = interlaced) 10035769fd77SMatthias Ringwald */ 10045769fd77SMatthias Ringwald const hci_cmd_t hci_write_inquiry_scan_type = { 10055769fd77SMatthias Ringwald HCI_OPCODE_HCI_WRITE_INQUIRY_SCAN_TYPE, "1" 10065769fd77SMatthias Ringwald }; 10075769fd77SMatthias Ringwald 10085769fd77SMatthias Ringwald /** 100956042629SMatthias Ringwald * @param inquiry_mode (0x00 = standard, 0x01 = with RSSI, 0x02 = extended) 101056042629SMatthias Ringwald */ 101156042629SMatthias Ringwald const hci_cmd_t hci_write_inquiry_mode = { 1012ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_INQUIRY_MODE, "1" 101356042629SMatthias Ringwald }; 101456042629SMatthias Ringwald 101556042629SMatthias Ringwald /** 10165769fd77SMatthias Ringwald * @param page_scan_type (0x00 = standard, 0x01 = interlaced) 10175769fd77SMatthias Ringwald */ 10185769fd77SMatthias Ringwald const hci_cmd_t hci_write_page_scan_type = { 10195769fd77SMatthias Ringwald HCI_OPCODE_HCI_WRITE_PAGE_SCAN_TYPE, "1" 10205769fd77SMatthias Ringwald }; 10215769fd77SMatthias Ringwald 10225769fd77SMatthias Ringwald /** 102356042629SMatthias Ringwald * @param fec_required 102456042629SMatthias Ringwald * @param exstended_inquiry_response 102556042629SMatthias Ringwald */ 102656042629SMatthias Ringwald const hci_cmd_t hci_write_extended_inquiry_response = { 1027ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_EXTENDED_INQUIRY_RESPONSE, "1E" 102856042629SMatthias Ringwald }; 102956042629SMatthias Ringwald 103056042629SMatthias Ringwald /** 103156042629SMatthias Ringwald * @param mode (0 = off, 1 = on) 103256042629SMatthias Ringwald */ 103356042629SMatthias Ringwald const hci_cmd_t hci_write_simple_pairing_mode = { 1034ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_SIMPLE_PAIRING_MODE, "1" 103556042629SMatthias Ringwald }; 103656042629SMatthias Ringwald 1037237daac5SMatthias Ringwald /** 1038237daac5SMatthias Ringwald */ 1039237daac5SMatthias Ringwald const hci_cmd_t hci_read_local_oob_data = { 1040ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LOCAL_OOB_DATA, "" 1041237daac5SMatthias Ringwald // return status, C, R 1042237daac5SMatthias Ringwald }; 1043483c5078SMatthias Ringwald 1044483c5078SMatthias Ringwald /** 1045c9c0cbe9SAndrey Fominykh */ 1046c9c0cbe9SAndrey Fominykh const hci_cmd_t hci_read_inquiry_response_transmit_power_level = { 1047c9c0cbe9SAndrey Fominykh HCI_OPCODE_HCI_READ_INQUIRY_RESPONSE_TRANSMIT_POWER_LEVEL, "" 1048c9c0cbe9SAndrey Fominykh // return status, pwr level 1049c9c0cbe9SAndrey Fominykh }; 1050c9c0cbe9SAndrey Fominykh 1051c9c0cbe9SAndrey Fominykh /** 1052c9c0cbe9SAndrey Fominykh */ 1053c9c0cbe9SAndrey Fominykh const hci_cmd_t hci_write_inquiry_transmit_power_level = { 1054c9c0cbe9SAndrey Fominykh HCI_OPCODE_HCI_WRITE_INQUIRY_TRANSMIT_POWER_LEVEL, "1" 1055c9c0cbe9SAndrey Fominykh // return status 1056c9c0cbe9SAndrey Fominykh }; 1057c9c0cbe9SAndrey Fominykh 1058c9c0cbe9SAndrey Fominykh /** 1059483c5078SMatthias Ringwald * @param mode (0 = off, 1 = on) 1060483c5078SMatthias Ringwald */ 1061483c5078SMatthias Ringwald const hci_cmd_t hci_write_default_erroneous_data_reporting = { 1062ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_DEFAULT_ERRONEOUS_DATA_REPORTING, "1" 1063483c5078SMatthias Ringwald }; 1064483c5078SMatthias Ringwald 106556042629SMatthias Ringwald /** 1066ff7d1758SMatthias Ringwald * @param event_mask_page_2_lower_octets 1067ff7d1758SMatthias Ringwald * @param event_mask_page_2_higher_octets 1068ff7d1758SMatthias Ringwald */ 1069ff7d1758SMatthias Ringwald const hci_cmd_t hci_set_event_mask_2 = { 1070ff7d1758SMatthias Ringwald HCI_OPCODE_HCI_SET_EVENT_MASK_2, "44" 1071ff7d1758SMatthias Ringwald }; 1072ff7d1758SMatthias Ringwald 1073ff7d1758SMatthias Ringwald /** 107456042629SMatthias Ringwald */ 107556042629SMatthias Ringwald const hci_cmd_t hci_read_le_host_supported = { 1076ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LE_HOST_SUPPORTED, "" 107756042629SMatthias Ringwald // return: status, le supported host, simultaneous le host 107856042629SMatthias Ringwald }; 107956042629SMatthias Ringwald 108056042629SMatthias Ringwald /** 108156042629SMatthias Ringwald * @param le_supported_host 108256042629SMatthias Ringwald * @param simultaneous_le_host 108356042629SMatthias Ringwald */ 108456042629SMatthias Ringwald const hci_cmd_t hci_write_le_host_supported = { 1085ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_LE_HOST_SUPPORTED, "11" 108656042629SMatthias Ringwald // return: status 108756042629SMatthias Ringwald }; 108856042629SMatthias Ringwald 108956042629SMatthias Ringwald /** 1090b002ae8cSMatthias Ringwald * @param secure_connections_host_support 1091b002ae8cSMatthias Ringwald */ 1092b002ae8cSMatthias Ringwald const hci_cmd_t hci_write_secure_connections_host_support = { 1093ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_SECURE_CONNECTIONS_HOST_SUPPORT, "1" 1094b002ae8cSMatthias Ringwald // return: status 1095b002ae8cSMatthias Ringwald }; 1096b002ae8cSMatthias Ringwald 1097b002ae8cSMatthias Ringwald /** 1098237daac5SMatthias Ringwald */ 1099bb75dd7dSMatthias Ringwald const hci_cmd_t hci_read_local_extended_oob_data = { 11001849becdSMatthias Ringwald HCI_OPCODE_HCI_READ_LOCAL_EXTENDED_OOB_DATA, "" 1101237daac5SMatthias Ringwald // return status, C_192, R_192, R_256, C_256 1102237daac5SMatthias Ringwald }; 1103237daac5SMatthias Ringwald 11046d2375e9SMatthias Ringwald /** 11056d2375e9SMatthias Ringwald */ 11066d2375e9SMatthias Ringwald const hci_cmd_t hci_read_extended_page_timeout = { 11076d2375e9SMatthias Ringwald HCI_OPCODE_HCI_READ_EXTENDED_PAGE_TIMEOUT, "" 11086d2375e9SMatthias Ringwald // return: status, extender page timeout 11096d2375e9SMatthias Ringwald }; 11106d2375e9SMatthias Ringwald 11116d2375e9SMatthias Ringwald /** 11126d2375e9SMatthias Ringwald * @param extended_page_timeout 11136d2375e9SMatthias Ringwald */ 11146d2375e9SMatthias Ringwald const hci_cmd_t hci_write_extended_page_timeout = { 11156d2375e9SMatthias Ringwald HCI_OPCODE_HCI_WRITE_EXTENDED_PAGE_TIMEOUT, "2" 11166d2375e9SMatthias Ringwald // return: status 11176d2375e9SMatthias Ringwald }; 11186d2375e9SMatthias Ringwald 11196d2375e9SMatthias Ringwald /** 11206d2375e9SMatthias Ringwald */ 11216d2375e9SMatthias Ringwald const hci_cmd_t hci_read_extended_inquiry_length = { 11226d2375e9SMatthias Ringwald HCI_OPCODE_HCI_READ_EXTENDED_INQUIRY_LENGTH, "" 11236d2375e9SMatthias Ringwald // return: status, extended_inquiry_length 11246d2375e9SMatthias Ringwald }; 11256d2375e9SMatthias Ringwald 11266d2375e9SMatthias Ringwald /** 11276d2375e9SMatthias Ringwald * @param extended_inquiry_length 11286d2375e9SMatthias Ringwald */ 11296d2375e9SMatthias Ringwald const hci_cmd_t hci_write_extended_inquiry_length = { 11306d2375e9SMatthias Ringwald HCI_OPCODE_HCI_WRITE_EXTENDED_INQUIRY_LENGTH, "2" 11316d2375e9SMatthias Ringwald // return: status 11326d2375e9SMatthias Ringwald }; 11336d2375e9SMatthias Ringwald 11346d2375e9SMatthias Ringwald /** 11356d2375e9SMatthias Ringwald * @param interval 11366d2375e9SMatthias Ringwald */ 11376d2375e9SMatthias Ringwald const hci_cmd_t hci_set_ecosystem_base_interval = { 11386d2375e9SMatthias Ringwald HCI_OPCODE_HCI_SET_ECOSYSTEM_BASE_INTERVAL, "2" 11396d2375e9SMatthias Ringwald // return: status 11406d2375e9SMatthias Ringwald }; 11416d2375e9SMatthias Ringwald 11426d2375e9SMatthias Ringwald /** 11436d2375e9SMatthias Ringwald * @param data_path_direction 11446d2375e9SMatthias Ringwald * @param data_path_id 11456d2375e9SMatthias Ringwald * @param vendor_specific_config_length 11466d2375e9SMatthias Ringwald * @param vendor_specific_config 11476d2375e9SMatthias Ringwald */ 11486d2375e9SMatthias Ringwald const hci_cmd_t hci_configure_data_path = { 11496d2375e9SMatthias Ringwald HCI_OPCODE_HCI_CONFIGURE_DATA_PATH, "11JV" 11506d2375e9SMatthias Ringwald // return: status 11516d2375e9SMatthias Ringwald }; 11526d2375e9SMatthias Ringwald 11536d2375e9SMatthias Ringwald /** 11546d2375e9SMatthias Ringwald * @param min_encryption_key_size 11556d2375e9SMatthias Ringwald */ 11566d2375e9SMatthias Ringwald const hci_cmd_t hci_set_min_encryption_key_size = { 11576d2375e9SMatthias Ringwald HCI_OPCODE_HCI_SET_MIN_ENCRYPTION_KEY_SIZE, "1" 11586d2375e9SMatthias Ringwald // return: status 11596d2375e9SMatthias Ringwald }; 11606d2375e9SMatthias Ringwald 1161237daac5SMatthias Ringwald 1162237daac5SMatthias Ringwald /** 116356042629SMatthias Ringwald * Testing Commands 116456042629SMatthias Ringwald */ 116556042629SMatthias Ringwald 116656042629SMatthias Ringwald 116756042629SMatthias Ringwald /** 116856042629SMatthias Ringwald */ 116956042629SMatthias Ringwald const hci_cmd_t hci_read_loopback_mode = { 1170ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LOOPBACK_MODE, "" 117156042629SMatthias Ringwald // return: status, loopback mode (0 = off, 1 = local loopback, 2 = remote loopback) 117256042629SMatthias Ringwald }; 117356042629SMatthias Ringwald 117456042629SMatthias Ringwald /** 117556042629SMatthias Ringwald * @param loopback_mode 117656042629SMatthias Ringwald */ 117756042629SMatthias Ringwald const hci_cmd_t hci_write_loopback_mode = { 1178ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_LOOPBACK_MODE, "1" 117956042629SMatthias Ringwald // return: status 118056042629SMatthias Ringwald }; 118156042629SMatthias Ringwald 118284ca9bd8SMatthias Ringwald /** 118384ca9bd8SMatthias Ringwald */ 118484ca9bd8SMatthias Ringwald const hci_cmd_t hci_enable_device_under_test_mode = { 1185ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_ENABLE_DEVICE_UNDER_TEST_MODE, "" 118684ca9bd8SMatthias Ringwald // return: status 118784ca9bd8SMatthias Ringwald }; 118884ca9bd8SMatthias Ringwald 118984ca9bd8SMatthias Ringwald /** 119084ca9bd8SMatthias Ringwald * @param simple_pairing_debug_mode 119184ca9bd8SMatthias Ringwald */ 119284ca9bd8SMatthias Ringwald const hci_cmd_t hci_write_simple_pairing_debug_mode = { 1193ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_SIMPLE_PAIRING_DEBUG_MODE, "1" 119484ca9bd8SMatthias Ringwald // return: status 119584ca9bd8SMatthias Ringwald }; 119684ca9bd8SMatthias Ringwald 119784ca9bd8SMatthias Ringwald /** 119884ca9bd8SMatthias Ringwald * @param handle 119984ca9bd8SMatthias Ringwald * @param dm1_acl_u_mode 120084ca9bd8SMatthias Ringwald * @param esco_loopback_mode 120184ca9bd8SMatthias Ringwald */ 120284ca9bd8SMatthias Ringwald const hci_cmd_t hci_write_secure_connections_test_mode = { 1203ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_SECURE_CONNECTIONS_TEST_MODE, "H11" 120484ca9bd8SMatthias Ringwald // return: status 120584ca9bd8SMatthias Ringwald }; 120684ca9bd8SMatthias Ringwald 120756042629SMatthias Ringwald 120856042629SMatthias Ringwald /** 120956042629SMatthias Ringwald * Informational Parameters 121056042629SMatthias Ringwald */ 121156042629SMatthias Ringwald 121256042629SMatthias Ringwald const hci_cmd_t hci_read_local_version_information = { 1213ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LOCAL_VERSION_INFORMATION, "" 121456042629SMatthias Ringwald }; 121556042629SMatthias Ringwald const hci_cmd_t hci_read_local_supported_commands = { 1216ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LOCAL_SUPPORTED_COMMANDS, "" 121756042629SMatthias Ringwald }; 121856042629SMatthias Ringwald const hci_cmd_t hci_read_local_supported_features = { 1219ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LOCAL_SUPPORTED_FEATURES, "" 122056042629SMatthias Ringwald }; 122156042629SMatthias Ringwald const hci_cmd_t hci_read_buffer_size = { 1222ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_BUFFER_SIZE, "" 122356042629SMatthias Ringwald }; 122456042629SMatthias Ringwald const hci_cmd_t hci_read_bd_addr = { 1225ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_BD_ADDR, "" 122656042629SMatthias Ringwald }; 122756042629SMatthias Ringwald 122856042629SMatthias Ringwald /** 1229*ebcec9d3SMatthias Ringwald * Status Paramteers 123056042629SMatthias Ringwald */ 123156042629SMatthias Ringwald 123256042629SMatthias Ringwald /** 123356042629SMatthias Ringwald * @param handle 123456042629SMatthias Ringwald */ 1235*ebcec9d3SMatthias Ringwald const hci_cmd_t hci_read_failed_contact_counter = { 1236*ebcec9d3SMatthias Ringwald HCI_OPCODE_HCI_READ_FAILED_CONTACT_COUNTER, "H" 1237*ebcec9d3SMatthias Ringwald }; 1238*ebcec9d3SMatthias Ringwald 1239*ebcec9d3SMatthias Ringwald /** 1240*ebcec9d3SMatthias Ringwald * @param handle 1241*ebcec9d3SMatthias Ringwald */ 1242*ebcec9d3SMatthias Ringwald const hci_cmd_t hci_reset_failed_contact_counter = { 1243*ebcec9d3SMatthias Ringwald HCI_OPCODE_HCI_RESET_FAILED_CONTACT_COUNTER, "H" 1244*ebcec9d3SMatthias Ringwald }; 1245*ebcec9d3SMatthias Ringwald 1246*ebcec9d3SMatthias Ringwald /** 1247*ebcec9d3SMatthias Ringwald * @param handle 1248*ebcec9d3SMatthias Ringwald */ 1249*ebcec9d3SMatthias Ringwald const hci_cmd_t hci_read_link_quality = { 1250*ebcec9d3SMatthias Ringwald HCI_OPCODE_HCI_READ_LINK_QUALITY, "H" 1251*ebcec9d3SMatthias Ringwald }; 1252*ebcec9d3SMatthias Ringwald 1253*ebcec9d3SMatthias Ringwald /** 1254*ebcec9d3SMatthias Ringwald * @param handle 1255*ebcec9d3SMatthias Ringwald */ 125656042629SMatthias Ringwald const hci_cmd_t hci_read_rssi = { 1257ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_RSSI, "H" 125856042629SMatthias Ringwald }; 125956042629SMatthias Ringwald 126097abfa24SMatthias Ringwald /** 126197abfa24SMatthias Ringwald * @param handle 1262*ebcec9d3SMatthias Ringwald * @param which_clock 1263*ebcec9d3SMatthias Ringwald */ 1264*ebcec9d3SMatthias Ringwald const hci_cmd_t hci_read_clock = { 1265*ebcec9d3SMatthias Ringwald HCI_OPCODE_HCI_READ_CLOCK, "H1" 1266*ebcec9d3SMatthias Ringwald }; 1267*ebcec9d3SMatthias Ringwald 1268*ebcec9d3SMatthias Ringwald /** 1269*ebcec9d3SMatthias Ringwald * @param handle 127097abfa24SMatthias Ringwald */ 127197abfa24SMatthias Ringwald const hci_cmd_t hci_read_encryption_key_size = { 1272ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_ENCRYPTION_KEY_SIZE, "H" 127397abfa24SMatthias Ringwald }; 127456042629SMatthias Ringwald 127556042629SMatthias Ringwald 1276a9a4c409SMatthias Ringwald #ifdef ENABLE_BLE 127756042629SMatthias Ringwald /** 127856042629SMatthias Ringwald * Low Energy Commands 127956042629SMatthias Ringwald */ 128056042629SMatthias Ringwald 128156042629SMatthias Ringwald /** 128256042629SMatthias Ringwald * @param event_mask_lower_octets 128356042629SMatthias Ringwald * @param event_mask_higher_octets 128456042629SMatthias Ringwald */ 128556042629SMatthias Ringwald const hci_cmd_t hci_le_set_event_mask = { 1286ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_EVENT_MASK, "44" 128756042629SMatthias Ringwald // return: status 128856042629SMatthias Ringwald }; 128956042629SMatthias Ringwald 129056042629SMatthias Ringwald const hci_cmd_t hci_le_read_buffer_size = { 1291ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_BUFFER_SIZE, "" 129256042629SMatthias Ringwald // return: status, le acl data packet len (16), total num le acl data packets(8) 129356042629SMatthias Ringwald }; 12940c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_local_supported_features = { 12950c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_LOCAL_SUPPORTED_FEATURES, "" 129656042629SMatthias Ringwald // return: LE_Features See [Vol 6] Part B, Section 4.6 129756042629SMatthias Ringwald }; 129856042629SMatthias Ringwald 129956042629SMatthias Ringwald /** 130056042629SMatthias Ringwald * @param random_bd_addr 130156042629SMatthias Ringwald */ 130256042629SMatthias Ringwald const hci_cmd_t hci_le_set_random_address = { 1303ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_RANDOM_ADDRESS, "B" 130456042629SMatthias Ringwald // return: status 130556042629SMatthias Ringwald }; 130656042629SMatthias Ringwald 130756042629SMatthias Ringwald /** 130856042629SMatthias Ringwald * @param advertising_interval_min ([0x0020,0x4000], default: 0x0800, unit: 0.625 msec) 130956042629SMatthias Ringwald * @param advertising_interval_max ([0x0020,0x4000], default: 0x0800, unit: 0.625 msec) 131056042629SMatthias Ringwald * @param advertising_type (enum from 0: ADV_IND, ADC_DIRECT_IND, ADV_SCAN_IND, ADV_NONCONN_IND) 131156042629SMatthias Ringwald * @param own_address_type (enum from 0: public device address, random device address) 131256042629SMatthias Ringwald * @param direct_address_type () 131356042629SMatthias Ringwald * @param direct_address (public or random address of device to be connecteed) 131456042629SMatthias Ringwald * @param advertising_channel_map (flags: chan_37(1), chan_38(2), chan_39(4)) 131556042629SMatthias Ringwald * @param advertising_filter_policy (enum from 0: scan any conn any, scan whitelist, con any, scan any conn whitelist, scan whitelist, con whitelist) 131656042629SMatthias Ringwald */ 131756042629SMatthias Ringwald const hci_cmd_t hci_le_set_advertising_parameters = { 1318ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_ADVERTISING_PARAMETERS, "22111B11" 131956042629SMatthias Ringwald // return: status 132056042629SMatthias Ringwald }; 132156042629SMatthias Ringwald 132256042629SMatthias Ringwald const hci_cmd_t hci_le_read_advertising_channel_tx_power = { 1323ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_ADVERTISING_CHANNEL_TX_POWER, "" 132456042629SMatthias Ringwald // return: status, level [-20,10] signed int (8), units dBm 132556042629SMatthias Ringwald }; 132656042629SMatthias Ringwald 132756042629SMatthias Ringwald /** 132856042629SMatthias Ringwald * @param advertising_data_length 132956042629SMatthias Ringwald * @param advertising_data (31 bytes) 133056042629SMatthias Ringwald */ 133156042629SMatthias Ringwald const hci_cmd_t hci_le_set_advertising_data= { 1332ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_ADVERTISING_DATA, "1A" 133356042629SMatthias Ringwald // return: status 133456042629SMatthias Ringwald }; 133556042629SMatthias Ringwald 133656042629SMatthias Ringwald /** 133756042629SMatthias Ringwald * @param scan_response_data_length 133856042629SMatthias Ringwald * @param scan_response_data (31 bytes) 133956042629SMatthias Ringwald */ 134056042629SMatthias Ringwald const hci_cmd_t hci_le_set_scan_response_data= { 1341ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_SCAN_RESPONSE_DATA, "1A" 134256042629SMatthias Ringwald // return: status 134356042629SMatthias Ringwald }; 134456042629SMatthias Ringwald 134556042629SMatthias Ringwald /** 134656042629SMatthias Ringwald * @param advertise_enable (off: 0, on: 1) 134756042629SMatthias Ringwald */ 134856042629SMatthias Ringwald const hci_cmd_t hci_le_set_advertise_enable = { 1349ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_ADVERTISE_ENABLE, "1" 135056042629SMatthias Ringwald // return: status 135156042629SMatthias Ringwald }; 135256042629SMatthias Ringwald 135356042629SMatthias Ringwald /** 135456042629SMatthias Ringwald * @param le_scan_type (passive (0), active (1)) 135556042629SMatthias Ringwald * @param le_scan_interval ([0x0004,0x4000], unit: 0.625 msec) 135656042629SMatthias Ringwald * @param le_scan_window ([0x0004,0x4000], unit: 0.625 msec) 135756042629SMatthias Ringwald * @param own_address_type (public (0), random (1)) 135856042629SMatthias Ringwald * @param scanning_filter_policy (any (0), only whitelist (1)) 135956042629SMatthias Ringwald */ 136056042629SMatthias Ringwald const hci_cmd_t hci_le_set_scan_parameters = { 1361ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_SCAN_PARAMETERS, "12211" 136256042629SMatthias Ringwald // return: status 136356042629SMatthias Ringwald }; 136456042629SMatthias Ringwald 136556042629SMatthias Ringwald /** 136656042629SMatthias Ringwald * @param le_scan_enable (disabled (0), enabled (1)) 136756042629SMatthias Ringwald * @param filter_duplices (disabled (0), enabled (1)) 136856042629SMatthias Ringwald */ 136956042629SMatthias Ringwald const hci_cmd_t hci_le_set_scan_enable = { 1370ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_SCAN_ENABLE, "11" 137156042629SMatthias Ringwald // return: status 137256042629SMatthias Ringwald }; 137356042629SMatthias Ringwald 137456042629SMatthias Ringwald /** 137556042629SMatthias Ringwald * @param le_scan_interval ([0x0004, 0x4000], unit: 0.625 msec) 137656042629SMatthias Ringwald * @param le_scan_window ([0x0004, 0x4000], unit: 0.625 msec) 137756042629SMatthias Ringwald * @param initiator_filter_policy (peer address type + peer address (0), whitelist (1)) 137856042629SMatthias Ringwald * @param peer_address_type (public (0), random (1)) 137956042629SMatthias Ringwald * @param peer_address 138056042629SMatthias Ringwald * @param own_address_type (public (0), random (1)) 138156042629SMatthias Ringwald * @param conn_interval_min ([0x0006, 0x0c80], unit: 1.25 msec) 138256042629SMatthias Ringwald * @param conn_interval_max ([0x0006, 0x0c80], unit: 1.25 msec) 138356042629SMatthias Ringwald * @param conn_latency (number of connection events [0x0000, 0x01f4]) 138456042629SMatthias Ringwald * @param supervision_timeout ([0x000a, 0x0c80], unit: 10 msec) 138556042629SMatthias Ringwald * @param minimum_CE_length ([0x0000, 0xffff], unit: 0.625 msec) 138656042629SMatthias Ringwald * @param maximum_CE_length ([0x0000, 0xffff], unit: 0.625 msec) 138756042629SMatthias Ringwald */ 138856042629SMatthias Ringwald const hci_cmd_t hci_le_create_connection= { 1389ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_CREATE_CONNECTION, "2211B1222222" 139056042629SMatthias Ringwald // return: none -> le create connection complete event 139156042629SMatthias Ringwald }; 139256042629SMatthias Ringwald 139356042629SMatthias Ringwald const hci_cmd_t hci_le_create_connection_cancel = { 1394ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_CREATE_CONNECTION_CANCEL, "" 139556042629SMatthias Ringwald // return: status 139656042629SMatthias Ringwald }; 139756042629SMatthias Ringwald 139856042629SMatthias Ringwald const hci_cmd_t hci_le_read_white_list_size = { 1399ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_WHITE_LIST_SIZE, "" 140056042629SMatthias Ringwald // return: status, number of entries in controller whitelist 140156042629SMatthias Ringwald }; 140256042629SMatthias Ringwald 140356042629SMatthias Ringwald const hci_cmd_t hci_le_clear_white_list = { 1404ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_CLEAR_WHITE_LIST, "" 140556042629SMatthias Ringwald // return: status 140656042629SMatthias Ringwald }; 140756042629SMatthias Ringwald 140856042629SMatthias Ringwald /** 140956042629SMatthias Ringwald * @param address_type (public (0), random (1)) 141056042629SMatthias Ringwald * @param bd_addr 141156042629SMatthias Ringwald */ 141256042629SMatthias Ringwald const hci_cmd_t hci_le_add_device_to_white_list = { 1413ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_ADD_DEVICE_TO_WHITE_LIST, "1B" 141456042629SMatthias Ringwald // return: status 141556042629SMatthias Ringwald }; 141656042629SMatthias Ringwald 141756042629SMatthias Ringwald /** 141856042629SMatthias Ringwald * @param address_type (public (0), random (1)) 141956042629SMatthias Ringwald * @param bd_addr 142056042629SMatthias Ringwald */ 142156042629SMatthias Ringwald const hci_cmd_t hci_le_remove_device_from_white_list = { 1422ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOVE_DEVICE_FROM_WHITE_LIST, "1B" 142356042629SMatthias Ringwald // return: status 142456042629SMatthias Ringwald }; 142556042629SMatthias Ringwald 142656042629SMatthias Ringwald /** 142756042629SMatthias Ringwald * @param conn_handle 142856042629SMatthias Ringwald * @param conn_interval_min ([0x0006,0x0c80], unit: 1.25 msec) 142956042629SMatthias Ringwald * @param conn_interval_max ([0x0006,0x0c80], unit: 1.25 msec) 143056042629SMatthias Ringwald * @param conn_latency ([0x0000,0x03e8], number of connection events) 143156042629SMatthias Ringwald * @param supervision_timeout ([0x000a,0x0c80], unit: 10 msec) 143256042629SMatthias Ringwald * @param minimum_CE_length ([0x0000,0xffff], unit: 0.625 msec) 143356042629SMatthias Ringwald * @param maximum_CE_length ([0x0000,0xffff], unit: 0.625 msec) 143456042629SMatthias Ringwald */ 143556042629SMatthias Ringwald const hci_cmd_t hci_le_connection_update = { 1436ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_CONNECTION_UPDATE, "H222222" 143756042629SMatthias Ringwald // return: none -> le connection update complete event 143856042629SMatthias Ringwald }; 143956042629SMatthias Ringwald 144056042629SMatthias Ringwald /** 144156042629SMatthias Ringwald * @param channel_map_lower_32bits 144256042629SMatthias Ringwald * @param channel_map_higher_5bits 144356042629SMatthias Ringwald */ 144456042629SMatthias Ringwald const hci_cmd_t hci_le_set_host_channel_classification = { 1445ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_HOST_CHANNEL_CLASSIFICATION, "41" 144656042629SMatthias Ringwald // return: status 144756042629SMatthias Ringwald }; 144856042629SMatthias Ringwald 144956042629SMatthias Ringwald /** 145056042629SMatthias Ringwald * @param conn_handle 145156042629SMatthias Ringwald */ 145256042629SMatthias Ringwald const hci_cmd_t hci_le_read_channel_map = { 1453ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_CHANNEL_MAP, "H" 145456042629SMatthias Ringwald // return: status, connection handle, channel map (5 bytes, 37 used) 145556042629SMatthias Ringwald }; 145656042629SMatthias Ringwald 145756042629SMatthias Ringwald /** 145856042629SMatthias Ringwald * @param conn_handle 145956042629SMatthias Ringwald */ 146056042629SMatthias Ringwald const hci_cmd_t hci_le_read_remote_used_features = { 1461ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_REMOTE_USED_FEATURES, "H" 146256042629SMatthias Ringwald // return: none -> le read remote used features complete event 146356042629SMatthias Ringwald }; 146456042629SMatthias Ringwald 146556042629SMatthias Ringwald /** 146656042629SMatthias Ringwald * @param key ((128) for AES-128) 146756042629SMatthias Ringwald * @param plain_text (128) 146856042629SMatthias Ringwald */ 146956042629SMatthias Ringwald const hci_cmd_t hci_le_encrypt = { 1470ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_ENCRYPT, "PP" 147156042629SMatthias Ringwald // return: status, encrypted data (128) 147256042629SMatthias Ringwald }; 147356042629SMatthias Ringwald 147456042629SMatthias Ringwald const hci_cmd_t hci_le_rand = { 1475ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_RAND, "" 147656042629SMatthias Ringwald // return: status, random number (64) 147756042629SMatthias Ringwald }; 147856042629SMatthias Ringwald 147956042629SMatthias Ringwald /** 148056042629SMatthias Ringwald * @param conn_handle 148156042629SMatthias Ringwald * @param random_number_lower_32bits 148256042629SMatthias Ringwald * @param random_number_higher_32bits 148356042629SMatthias Ringwald * @param encryption_diversifier (16) 148456042629SMatthias Ringwald * @param long_term_key (128) 148556042629SMatthias Ringwald */ 148656042629SMatthias Ringwald const hci_cmd_t hci_le_start_encryption = { 1487ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_START_ENCRYPTION, "H442P" 148856042629SMatthias Ringwald // return: none -> encryption changed or encryption key refresh complete event 148956042629SMatthias Ringwald }; 149056042629SMatthias Ringwald 149156042629SMatthias Ringwald /** 149256042629SMatthias Ringwald * @param connection_handle 149356042629SMatthias Ringwald * @param long_term_key (128) 149456042629SMatthias Ringwald */ 149556042629SMatthias Ringwald const hci_cmd_t hci_le_long_term_key_request_reply = { 1496ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_LONG_TERM_KEY_REQUEST_REPLY, "HP" 149756042629SMatthias Ringwald // return: status, connection handle 149856042629SMatthias Ringwald }; 149956042629SMatthias Ringwald 150056042629SMatthias Ringwald /** 150156042629SMatthias Ringwald * @param conn_handle 150256042629SMatthias Ringwald */ 150356042629SMatthias Ringwald const hci_cmd_t hci_le_long_term_key_negative_reply = { 1504ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_LONG_TERM_KEY_NEGATIVE_REPLY, "H" 150556042629SMatthias Ringwald // return: status, connection handle 150656042629SMatthias Ringwald }; 150756042629SMatthias Ringwald 150856042629SMatthias Ringwald /** 150956042629SMatthias Ringwald * @param conn_handle 151056042629SMatthias Ringwald */ 151156042629SMatthias Ringwald const hci_cmd_t hci_le_read_supported_states = { 1512ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_SUPPORTED_STATES, "H" 151356042629SMatthias Ringwald // return: status, LE states (64) 151456042629SMatthias Ringwald }; 151556042629SMatthias Ringwald 151656042629SMatthias Ringwald /** 151756042629SMatthias Ringwald * @param rx_frequency ([0x00 0x27], frequency (MHz): 2420 + N*2) 151856042629SMatthias Ringwald */ 151956042629SMatthias Ringwald const hci_cmd_t hci_le_receiver_test = { 1520ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_RECEIVER_TEST, "1" 152156042629SMatthias Ringwald // return: status 152256042629SMatthias Ringwald }; 152356042629SMatthias Ringwald 152456042629SMatthias Ringwald /** 152556042629SMatthias Ringwald * @param tx_frequency ([0x00 0x27], frequency (MHz): 2420 + N*2) 152656042629SMatthias Ringwald * @param test_payload_lengh ([0x00,0x25]) 152756042629SMatthias Ringwald * @param packet_payload ([0,7] different patterns) 152856042629SMatthias Ringwald */ 152956042629SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test = { 1530ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_TRANSMITTER_TEST, "111" 153156042629SMatthias Ringwald // return: status 153256042629SMatthias Ringwald }; 153356042629SMatthias Ringwald 153456042629SMatthias Ringwald /** 153556042629SMatthias Ringwald * @param end_test_cmd 153656042629SMatthias Ringwald */ 153756042629SMatthias Ringwald const hci_cmd_t hci_le_test_end = { 1538ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_TEST_END, "1" 153956042629SMatthias Ringwald // return: status, number of packets (8) 154056042629SMatthias Ringwald }; 154182180fcaSMatthias Ringwald 154282180fcaSMatthias Ringwald /** 1543fe704c95SMatthias Ringwald * @param conn_handle 1544fe704c95SMatthias Ringwald * @param conn_interval_min ([0x0006,0x0c80], unit: 1.25 msec) 1545fe704c95SMatthias Ringwald * @param conn_interval_max ([0x0006,0x0c80], unit: 1.25 msec) 1546fe704c95SMatthias Ringwald * @param conn_latency ([0x0000,0x03e8], number of connection events) 1547fe704c95SMatthias Ringwald * @param supervision_timeout ([0x000a,0x0c80], unit: 10 msec) 1548fe704c95SMatthias Ringwald * @param minimum_CE_length ([0x0000,0xffff], unit: 0.625 msec) 1549fe704c95SMatthias Ringwald * @param maximum_CE_length ([0x0000,0xffff], unit: 0.625 msec) 1550fe704c95SMatthias Ringwald */ 1551fe704c95SMatthias Ringwald const hci_cmd_t hci_le_remote_connection_parameter_request_reply = { 1552ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_REPLY, "H222222" 1553fe704c95SMatthias Ringwald // return: status, connection handle 1554fe704c95SMatthias Ringwald }; 1555fe704c95SMatthias Ringwald 1556fe704c95SMatthias Ringwald /** 1557fe704c95SMatthias Ringwald * @param con_handle 1558fe704c95SMatthias Ringwald * @param reason 1559fe704c95SMatthias Ringwald */ 1560fe704c95SMatthias Ringwald const hci_cmd_t hci_le_remote_connection_parameter_request_negative_reply = { 1561ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_NEGATIVE_REPLY, "H1" 1562fe704c95SMatthias Ringwald // return: status, connection handle 1563fe704c95SMatthias Ringwald }; 1564fe704c95SMatthias Ringwald 1565fe704c95SMatthias Ringwald /** 15660ea2847fSMatthias Ringwald * @param con_handle 15670ea2847fSMatthias Ringwald * @param tx_octets 15680ea2847fSMatthias Ringwald * @param tx_time 15690ea2847fSMatthias Ringwald */ 15700ea2847fSMatthias Ringwald const hci_cmd_t hci_le_set_data_length = { 1571ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_DATA_LENGTH, "H22" 15720ea2847fSMatthias Ringwald // return: status, connection handle 15730ea2847fSMatthias Ringwald }; 15740ea2847fSMatthias Ringwald 15750ea2847fSMatthias Ringwald /** 15760ea2847fSMatthias Ringwald */ 15770ea2847fSMatthias Ringwald const hci_cmd_t hci_le_read_suggested_default_data_length = { 1578ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_SUGGESTED_DEFAULT_DATA_LENGTH, "" 15790ea2847fSMatthias Ringwald // return: status, suggested max tx octets, suggested max tx time 15800ea2847fSMatthias Ringwald }; 15810ea2847fSMatthias Ringwald 15820ea2847fSMatthias Ringwald /** 15830ea2847fSMatthias Ringwald * @param suggested_max_tx_octets 15840ea2847fSMatthias Ringwald * @param suggested_max_tx_time 15850ea2847fSMatthias Ringwald */ 15860ea2847fSMatthias Ringwald const hci_cmd_t hci_le_write_suggested_default_data_length = { 1587ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_WRITE_SUGGESTED_DEFAULT_DATA_LENGTH, "22" 15880ea2847fSMatthias Ringwald // return: status 15890ea2847fSMatthias Ringwald }; 15900ea2847fSMatthias Ringwald 15910ea2847fSMatthias Ringwald /** 159282180fcaSMatthias Ringwald */ 159382180fcaSMatthias Ringwald const hci_cmd_t hci_le_read_local_p256_public_key = { 1594ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_LOCAL_P256_PUBLIC_KEY, "" 159582180fcaSMatthias Ringwald // LE Read Local P-256 Public Key Complete is generated on completion 159682180fcaSMatthias Ringwald }; 159782180fcaSMatthias Ringwald 159882180fcaSMatthias Ringwald /** 1599fcae305fSMatthias Ringwald * @param public key 1600fcae305fSMatthias Ringwald * @param private key 160182180fcaSMatthias Ringwald */ 160282180fcaSMatthias Ringwald const hci_cmd_t hci_le_generate_dhkey = { 1603ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_GENERATE_DHKEY, "QQ" 160482180fcaSMatthias Ringwald // LE Generate DHKey Complete is generated on completion 160582180fcaSMatthias Ringwald }; 160682180fcaSMatthias Ringwald 16070ea2847fSMatthias Ringwald /** 1608173ed1a3SMatthias Ringwald * @param Peer_Identity_Address_Type 1609173ed1a3SMatthias Ringwald * @param Peer_Identity_Address 1610173ed1a3SMatthias Ringwald * @param Peer_IRK 1611173ed1a3SMatthias Ringwald * @param Local_IRK 1612173ed1a3SMatthias Ringwald */ 1613173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_add_device_to_resolving_list = { 1614173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_ADD_DEVICE_TO_RESOLVING_LIST, "1BPP" 1615173ed1a3SMatthias Ringwald }; 1616173ed1a3SMatthias Ringwald 1617173ed1a3SMatthias Ringwald /** 1618173ed1a3SMatthias Ringwald * @param Peer_Identity_Address_Type 1619173ed1a3SMatthias Ringwald * @param Peer_Identity_Address 1620173ed1a3SMatthias Ringwald */ 1621173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_remove_device_from_resolving_list = { 1622173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOVE_DEVICE_FROM_RESOLVING_LIST, "1B" 1623173ed1a3SMatthias Ringwald }; 1624173ed1a3SMatthias Ringwald 1625173ed1a3SMatthias Ringwald /** 1626173ed1a3SMatthias Ringwald */ 1627173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_clear_resolving_list = { 1628173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_CLEAR_RESOLVING_LIST, "" 1629173ed1a3SMatthias Ringwald }; 1630173ed1a3SMatthias Ringwald 1631173ed1a3SMatthias Ringwald /** 1632173ed1a3SMatthias Ringwald */ 1633173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_read_resolving_list_size = { 1634173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_RESOLVING_LIST_SIZE, "" 1635173ed1a3SMatthias Ringwald }; 1636173ed1a3SMatthias Ringwald 1637173ed1a3SMatthias Ringwald /** 1638173ed1a3SMatthias Ringwald * @param Peer_Identity_Address_Type 1639173ed1a3SMatthias Ringwald * @param Peer_Identity_Address 1640173ed1a3SMatthias Ringwald */ 1641173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_read_peer_resolvable_address = { 1642173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_PEER_RESOLVABLE_ADDRESS, "" 1643173ed1a3SMatthias Ringwald }; 1644173ed1a3SMatthias Ringwald 1645173ed1a3SMatthias Ringwald /** 1646173ed1a3SMatthias Ringwald * @param Peer_Identity_Address_Type 1647173ed1a3SMatthias Ringwald * @param Peer_Identity_Address 1648173ed1a3SMatthias Ringwald */ 1649173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_read_local_resolvable_address = { 1650173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_LOCAL_RESOLVABLE_ADDRESS, "" 1651173ed1a3SMatthias Ringwald }; 1652173ed1a3SMatthias Ringwald 1653173ed1a3SMatthias Ringwald /** 1654173ed1a3SMatthias Ringwald * @param Address_Resolution_Enable 1655173ed1a3SMatthias Ringwald */ 1656173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_set_address_resolution_enabled= { 1657173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_ADDRESS_RESOLUTION_ENABLED, "1" 1658173ed1a3SMatthias Ringwald }; 1659173ed1a3SMatthias Ringwald 1660173ed1a3SMatthias Ringwald /** 1661173ed1a3SMatthias Ringwald * @param RPA_Timeout in seconds, range 0x0001 to 0x0E10, default: 900 s 1662173ed1a3SMatthias Ringwald */ 1663173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_set_resolvable_private_address_timeout= { 1664173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_RESOLVABLE_PRIVATE_ADDRESS_TIMEOUT, "2" 1665173ed1a3SMatthias Ringwald }; 1666173ed1a3SMatthias Ringwald 1667173ed1a3SMatthias Ringwald /** 16680ea2847fSMatthias Ringwald */ 16690ea2847fSMatthias Ringwald const hci_cmd_t hci_le_read_maximum_data_length = { 1670ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_MAXIMUM_DATA_LENGTH, "" 16710ea2847fSMatthias Ringwald // return: status, supported max tx octets, supported max tx time, supported max rx octets, supported max rx time 16720ea2847fSMatthias Ringwald }; 16730ea2847fSMatthias Ringwald 1674ca13daefSMatthias Ringwald /** 1675ca13daefSMatthias Ringwald * @param con_handle 1676ca13daefSMatthias Ringwald */ 1677ca13daefSMatthias Ringwald const hci_cmd_t hci_le_read_phy = { 1678ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_PHY, "H" 1679ca13daefSMatthias Ringwald // return: status, connection handler, tx phy, rx phy 1680ca13daefSMatthias Ringwald }; 1681ca13daefSMatthias Ringwald 1682ca13daefSMatthias Ringwald /** 1683ca13daefSMatthias Ringwald * @param all_phys 1684ca13daefSMatthias Ringwald * @param tx_phys 1685ca13daefSMatthias Ringwald * @param rx_phys 1686ca13daefSMatthias Ringwald */ 1687ca13daefSMatthias Ringwald const hci_cmd_t hci_le_set_default_phy = { 1688ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_DEFAULT_PHY, "111" 1689ca13daefSMatthias Ringwald // return: status 1690ca13daefSMatthias Ringwald }; 1691ca13daefSMatthias Ringwald 1692ca13daefSMatthias Ringwald /** 1693ca13daefSMatthias Ringwald * @param con_handle 1694ca13daefSMatthias Ringwald * @param all_phys 1695ca13daefSMatthias Ringwald * @param tx_phys 1696ca13daefSMatthias Ringwald * @param rx_phys 1697ca13daefSMatthias Ringwald * @param phy_options 1698ca13daefSMatthias Ringwald */ 1699ca13daefSMatthias Ringwald const hci_cmd_t hci_le_set_phy = { 170052aff43aSfominykhandrei HCI_OPCODE_HCI_LE_SET_PHY, "H1112" 1701ca13daefSMatthias Ringwald // LE PHY Update Complete is generated on completion 1702ca13daefSMatthias Ringwald }; 1703ca13daefSMatthias Ringwald 17040c1cf6c6SMatthias Ringwald /** 17050c1cf6c6SMatthias Ringwald * @param rx_channel 17060c1cf6c6SMatthias Ringwald * @param phy 17070c1cf6c6SMatthias Ringwald * @param modulation_index 17080c1cf6c6SMatthias Ringwald */ 17090c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_receiver_test_v2 = { 17100c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_RECEIVER_TEST_V2, "111" 17110c1cf6c6SMatthias Ringwald }; 17120c1cf6c6SMatthias Ringwald 17130c1cf6c6SMatthias Ringwald /** 17140c1cf6c6SMatthias Ringwald * @param tx_channel 17150c1cf6c6SMatthias Ringwald * @param test_data_length 17160c1cf6c6SMatthias Ringwald * @param packet_payload 17170c1cf6c6SMatthias Ringwald * @param phy 17180c1cf6c6SMatthias Ringwald */ 17190c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test_v2 = { 17200c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_TRANSMITTER_TEST_V2, "1111" 17210c1cf6c6SMatthias Ringwald }; 17220c1cf6c6SMatthias Ringwald 17230c1cf6c6SMatthias Ringwald /** 17240c1cf6c6SMatthias Ringwald * @param advertising_handle 17250c1cf6c6SMatthias Ringwald * @param random_address 17260c1cf6c6SMatthias Ringwald */ 17270c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_advertising_set_random_address = { 17280c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_ADVERTISING_SET_RANDOM_ADDRESS, "1B" 17290c1cf6c6SMatthias Ringwald }; 17300c1cf6c6SMatthias Ringwald 17310c1cf6c6SMatthias Ringwald /** 17320c1cf6c6SMatthias Ringwald * @param advertising_handle 17330c1cf6c6SMatthias Ringwald * @param advertising_event_properties 17340c1cf6c6SMatthias Ringwald * @param primary_advertising_interval_min in 0.625 ms, range: 0x000020..0xffffff 17350c1cf6c6SMatthias Ringwald * @param primary_advertising_interval_max in 0.625 ms, range: 0x000020..0xffffff 17360c1cf6c6SMatthias Ringwald * @param primary_advertising_channel_map 17370c1cf6c6SMatthias Ringwald * @param own_address_type 17380c1cf6c6SMatthias Ringwald * @param peer_address_type 17390c1cf6c6SMatthias Ringwald * @param peer_address 17400c1cf6c6SMatthias Ringwald * @param advertising_filter_policy 17410c1cf6c6SMatthias Ringwald * @param advertising_tx_power in dBm, range: -127..20 17420c1cf6c6SMatthias Ringwald * @param primary_advertising_phy 17430c1cf6c6SMatthias Ringwald * @param secondary_advertising_max_skip 17440c1cf6c6SMatthias Ringwald * @param secondary_advertising_phy 17450c1cf6c6SMatthias Ringwald * @param advertising_sid 17460c1cf6c6SMatthias Ringwald * @param scan_request_notification_enable 17470c1cf6c6SMatthias Ringwald */ 17480c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_advertising_parameters = { 17490c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_EXTENDED_ADVERTISING_PARAMETERS, "1233111B1111111" 17500c1cf6c6SMatthias Ringwald }; 17510c1cf6c6SMatthias Ringwald 17520c1cf6c6SMatthias Ringwald /** 17530c1cf6c6SMatthias Ringwald * @param advertising_handle 17540c1cf6c6SMatthias Ringwald * @param operation 17550c1cf6c6SMatthias Ringwald * @param fragment_preference 17560c1cf6c6SMatthias Ringwald * @param advertising_data_length 17570c1cf6c6SMatthias Ringwald * @param advertising_data 17580c1cf6c6SMatthias Ringwald */ 17590c1cf6c6SMatthias Ringwald 17600c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_advertising_data = { 17610c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_EXTENDED_ADVERTISING_DATA, "111JV" 17620c1cf6c6SMatthias Ringwald }; 17630c1cf6c6SMatthias Ringwald 17640c1cf6c6SMatthias Ringwald /** 17650c1cf6c6SMatthias Ringwald * @param advertising_handle 17660c1cf6c6SMatthias Ringwald * @param operation 17670c1cf6c6SMatthias Ringwald * @param fragment_preference 17680c1cf6c6SMatthias Ringwald * @param scan_response_data_length 17690c1cf6c6SMatthias Ringwald * @param scan_response_data 17700c1cf6c6SMatthias Ringwald */ 17710c1cf6c6SMatthias Ringwald 17720c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_scan_response_data = { 17730c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_EXTENDED_SCAN_RESPONSE_DATA, "111JV" 17740c1cf6c6SMatthias Ringwald }; 17750c1cf6c6SMatthias Ringwald 17760c1cf6c6SMatthias Ringwald /** 17770c1cf6c6SMatthias Ringwald * @param enable 17780c1cf6c6SMatthias Ringwald * @param num_sets 17790c1cf6c6SMatthias Ringwald * @param advertising_handle[i] 17800c1cf6c6SMatthias Ringwald * @param duration[i] 17810c1cf6c6SMatthias Ringwald * @param max_extended_advertising_events[i] 17820c1cf6c6SMatthias Ringwald */ 17830c1cf6c6SMatthias Ringwald 17840c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_advertising_enable = { 178527f212a7SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_EXTENDED_ADVERTISING_ENABLE, "1a[121]" 17860c1cf6c6SMatthias Ringwald }; 17870c1cf6c6SMatthias Ringwald 17880c1cf6c6SMatthias Ringwald /** 17890c1cf6c6SMatthias Ringwald */ 17900c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_maximum_advertising_data_length = { 17910c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_MAXIMUM_ADVERTISING_DATA_LENGTH, "" 17920c1cf6c6SMatthias Ringwald }; 17930c1cf6c6SMatthias Ringwald 17940c1cf6c6SMatthias Ringwald /** 17950c1cf6c6SMatthias Ringwald */ 17960c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_number_of_supported_advertising_sets = { 17970c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_NUMBER_OF_SUPPORTED_ADVERTISING_SETS, "" 17980c1cf6c6SMatthias Ringwald }; 17990c1cf6c6SMatthias Ringwald 18000c1cf6c6SMatthias Ringwald /** 18010c1cf6c6SMatthias Ringwald * @param advertising_handle 18020c1cf6c6SMatthias Ringwald */ 18030c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_advertising_set = { 18040c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOVE_ADVERTISING_SET, "1" 18050c1cf6c6SMatthias Ringwald }; 18060c1cf6c6SMatthias Ringwald 18070c1cf6c6SMatthias Ringwald /** 18080c1cf6c6SMatthias Ringwald */ 18090c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_clear_advertising_sets = { 18100c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_CLEAR_ADVERTISING_SETS, "" 18110c1cf6c6SMatthias Ringwald }; 18120c1cf6c6SMatthias Ringwald 18130c1cf6c6SMatthias Ringwald /** 18140c1cf6c6SMatthias Ringwald * @param advertising_handle 18150c1cf6c6SMatthias Ringwald * @param periodic_advertising_interval_min * 1.25 ms, range 0x0006..0xffff 18160c1cf6c6SMatthias Ringwald * @param periodic_advertising_interval_max * 1.25 ms, range 0x0006..0xffff 18170c1cf6c6SMatthias Ringwald * @param periodic_advertising_properties 18180c1cf6c6SMatthias Ringwald */ 18190c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_parameters = { 18200c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_PARAMETERS, "1222" 18210c1cf6c6SMatthias Ringwald }; 18220c1cf6c6SMatthias Ringwald 18230c1cf6c6SMatthias Ringwald /** 18240c1cf6c6SMatthias Ringwald * @param advertising_handle 18250c1cf6c6SMatthias Ringwald * @param operation 18260c1cf6c6SMatthias Ringwald * @param advertising_data_length 18270c1cf6c6SMatthias Ringwald * @param advertising_data 18280c1cf6c6SMatthias Ringwald */ 18290c1cf6c6SMatthias Ringwald 18300c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_data = { 18310c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_DATA, "11JV" 18320c1cf6c6SMatthias Ringwald }; 18330c1cf6c6SMatthias Ringwald 18340c1cf6c6SMatthias Ringwald /** 18350c1cf6c6SMatthias Ringwald * @param enable 18360c1cf6c6SMatthias Ringwald * @param advertising_handle 18370c1cf6c6SMatthias Ringwald */ 18380c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_enable = { 18390c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_ENABLE, "11" 18400c1cf6c6SMatthias Ringwald }; 18410c1cf6c6SMatthias Ringwald 18420c1cf6c6SMatthias Ringwald /** 18430c1cf6c6SMatthias Ringwald * @param own_address_type 18440c1cf6c6SMatthias Ringwald * @param scanning_filter_policy 18450c1cf6c6SMatthias Ringwald * @param scanning_phys 0 = LE 1M PHY | 2 = LE Coded PHY 184627f212a7SMatthias Ringwald * @param scan_type[i] 184727f212a7SMatthias Ringwald * @param scan_interval[i] * 0.625, range = 0x0004..0xffff 184827f212a7SMatthias Ringwald * @param scan_window[i] * 0.625, range = 0x0004..0xffff 18490c1cf6c6SMatthias Ringwald */ 18500c1cf6c6SMatthias Ringwald 18516ea37a0fSMatthias Ringwald const hci_cmd_t hci_le_set_extended_scan_parameters = { 18526ea37a0fSMatthias Ringwald HCI_OPCODE_HCI_LE_SET_EXTENDED_SCAN_PARAMETERS, "11b[122]" 18530c1cf6c6SMatthias Ringwald }; 18540c1cf6c6SMatthias Ringwald 18550c1cf6c6SMatthias Ringwald /** 18560c1cf6c6SMatthias Ringwald * @param enable 18570c1cf6c6SMatthias Ringwald * @param filter_duplicates 18580c1cf6c6SMatthias Ringwald * @param duration 0 = Scan continuously until explicitly disable, 10 ms 18590c1cf6c6SMatthias Ringwald * @param period 0 = Scan continuously, 1.28 s 18600c1cf6c6SMatthias Ringwald */ 18610c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_scan_enable = { 18620c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_EXTENDED_SCAN_ENABLE, "1122" 18630c1cf6c6SMatthias Ringwald }; 18640c1cf6c6SMatthias Ringwald 18650c1cf6c6SMatthias Ringwald /** 18660c1cf6c6SMatthias Ringwald * @param initiator_filter_policy 18670c1cf6c6SMatthias Ringwald * @param own_address_type 18680c1cf6c6SMatthias Ringwald * @param peer_address_type 18690c1cf6c6SMatthias Ringwald * @param peer_address 18700c1cf6c6SMatthias Ringwald * @param initiating_phys with bit 0 = LE 1M PHY, bit 1 = LE 2M PHY, bit 2 = Coded PHY 18710c1cf6c6SMatthias Ringwald * @param scan_interval[i] * 0.625 ms 18720c1cf6c6SMatthias Ringwald * @param scan_window[i] * 0.625 ms 18730c1cf6c6SMatthias Ringwald * @param connection_interval_min[i] * 1.25 ms 18740c1cf6c6SMatthias Ringwald * @param connection_interval_max[i] * 1.25 ms 18750c1cf6c6SMatthias Ringwald * @param connection_latency[i] 18760c1cf6c6SMatthias Ringwald * @param supervision_timeout[i] * 10 ms 18770c1cf6c6SMatthias Ringwald * @param min_ce_length[i] * 0.625 ms 18780c1cf6c6SMatthias Ringwald * @param max_ce_length[i] * 0.625 ms 18790c1cf6c6SMatthias Ringwald */ 18800c1cf6c6SMatthias Ringwald 18810c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_extended_create_connection = { 18820c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_EXTENDED_CREATE_CONNECTION, "111Bb[22222222]" 18830c1cf6c6SMatthias Ringwald }; 18840c1cf6c6SMatthias Ringwald 18850c1cf6c6SMatthias Ringwald /** 18860c1cf6c6SMatthias Ringwald * @param options 18870c1cf6c6SMatthias Ringwald * @param advertising_sid 18880c1cf6c6SMatthias Ringwald * @param advertiser_address_type 18890c1cf6c6SMatthias Ringwald * @param advertiser_address 18900c1cf6c6SMatthias Ringwald * @param skip 18910c1cf6c6SMatthias Ringwald * @param sync_timeout * 10 ms 18920c1cf6c6SMatthias Ringwald * @param sync_cte_type 18930c1cf6c6SMatthias Ringwald */ 18940c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_create_sync = { 18950c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_CREATE_SYNC, "111B221" 18960c1cf6c6SMatthias Ringwald }; 18970c1cf6c6SMatthias Ringwald 18980c1cf6c6SMatthias Ringwald /** 18990c1cf6c6SMatthias Ringwald */ 19000c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_create_sync_cancel = { 19010c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_CREATE_SYNC_CANCEL, "" 19020c1cf6c6SMatthias Ringwald }; 19030c1cf6c6SMatthias Ringwald 19040c1cf6c6SMatthias Ringwald /** 19050c1cf6c6SMatthias Ringwald * @param sync_handle 19060c1cf6c6SMatthias Ringwald */ 19070c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_terminate_sync = { 1908c0112d43SMatthias Ringwald HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_TERMINATE_SYNC, "2" 19090c1cf6c6SMatthias Ringwald }; 19100c1cf6c6SMatthias Ringwald 19110c1cf6c6SMatthias Ringwald /** 19120c1cf6c6SMatthias Ringwald * @param advertiser_address_type 19130c1cf6c6SMatthias Ringwald * @param advertiser_address 19140c1cf6c6SMatthias Ringwald * @param advertising_sid 19150c1cf6c6SMatthias Ringwald */ 19160c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_add_device_to_periodic_advertiser_list = { 19170c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_ADD_DEVICE_TO_PERIODIC_ADVERTISER_LIST, "1B1" 19180c1cf6c6SMatthias Ringwald }; 19190c1cf6c6SMatthias Ringwald 19200c1cf6c6SMatthias Ringwald /** 19210c1cf6c6SMatthias Ringwald * @param advertiser_address_type 19220c1cf6c6SMatthias Ringwald * @param advertiser_address 19230c1cf6c6SMatthias Ringwald * @param advertising_sid 19240c1cf6c6SMatthias Ringwald */ 19250c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_device_from_periodic_advertiser_list = { 19260c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISER_LIST, "1B1" 19270c1cf6c6SMatthias Ringwald }; 19280c1cf6c6SMatthias Ringwald 19290c1cf6c6SMatthias Ringwald /** 19300c1cf6c6SMatthias Ringwald */ 19310c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_clear_periodic_advertiser_list = { 19320c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_CLEAR_PERIODIC_ADVERTISER_LIST, "" 19330c1cf6c6SMatthias Ringwald }; 19340c1cf6c6SMatthias Ringwald 19350c1cf6c6SMatthias Ringwald /** 19360c1cf6c6SMatthias Ringwald */ 19370c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_periodic_advertiser_list_size = { 19380c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_PERIODIC_ADVERTISER_LIST_SIZE, "" 19390c1cf6c6SMatthias Ringwald }; 19400c1cf6c6SMatthias Ringwald 19410c1cf6c6SMatthias Ringwald /** 19420c1cf6c6SMatthias Ringwald */ 19430c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_transmit_power = { 19440c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_TRANSMIT_POWER, "" 19450c1cf6c6SMatthias Ringwald }; 19460c1cf6c6SMatthias Ringwald 19470c1cf6c6SMatthias Ringwald /** 19480c1cf6c6SMatthias Ringwald */ 19490c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_rf_path_compensation = { 19500c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_RF_PATH_COMPENSATION, "" 19510c1cf6c6SMatthias Ringwald }; 19520c1cf6c6SMatthias Ringwald 19530c1cf6c6SMatthias Ringwald /** 19540c1cf6c6SMatthias Ringwald * @param rf_tx_path_compensation_value * 0.1 dB, signed 19550c1cf6c6SMatthias Ringwald * @param rf_rx_path_compensation_value * 0.1 dB, signed 19560c1cf6c6SMatthias Ringwald */ 19570c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_write_rf_path_compensation = { 19580c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_WRITE_RF_PATH_COMPENSATION, "22" 19590c1cf6c6SMatthias Ringwald }; 19600c1cf6c6SMatthias Ringwald 19610c1cf6c6SMatthias Ringwald /** 19620c1cf6c6SMatthias Ringwald * @param peer_identity_address_type 19630c1cf6c6SMatthias Ringwald * @param peer_identity_address 19640c1cf6c6SMatthias Ringwald * @param privacy_mode 19650c1cf6c6SMatthias Ringwald */ 19660c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_privacy_mode = { 19670c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PRIVACY_MODE, "1B1" 19680c1cf6c6SMatthias Ringwald }; 19690c1cf6c6SMatthias Ringwald 19700c1cf6c6SMatthias Ringwald /** 19710c1cf6c6SMatthias Ringwald * @param rx_channel 19720c1cf6c6SMatthias Ringwald * @param phy 19730c1cf6c6SMatthias Ringwald * @param modulation_index 19740c1cf6c6SMatthias Ringwald * @param expected_cte_length 19750c1cf6c6SMatthias Ringwald * @param expected_cte_type 19760c1cf6c6SMatthias Ringwald * @param slot_durations 19770c1cf6c6SMatthias Ringwald * @param switching_pattern_length 19780c1cf6c6SMatthias Ringwald * @param antenna_ids[i] 19790c1cf6c6SMatthias Ringwald */ 19800c1cf6c6SMatthias Ringwald 19810c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_receiver_test_v3 = { 19820c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_RECEIVER_TEST_V3, "111111a[1]" 19830c1cf6c6SMatthias Ringwald }; 19840c1cf6c6SMatthias Ringwald 19850c1cf6c6SMatthias Ringwald /** 19860c1cf6c6SMatthias Ringwald * @param tx_channel 19870c1cf6c6SMatthias Ringwald * @param test_data_length 19880c1cf6c6SMatthias Ringwald * @param packet_payload 19890c1cf6c6SMatthias Ringwald * @param phy 19900c1cf6c6SMatthias Ringwald * @param cte_length 19910c1cf6c6SMatthias Ringwald * @param cte_type 19920c1cf6c6SMatthias Ringwald * @param switching_pattern_length 19930c1cf6c6SMatthias Ringwald * @param antenna_ids[i] 19940c1cf6c6SMatthias Ringwald */ 19950c1cf6c6SMatthias Ringwald 19960c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test_v3 = { 19970c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_TRANSMITTER_TEST_V3, "111111a[1]" 19980c1cf6c6SMatthias Ringwald }; 19990c1cf6c6SMatthias Ringwald 20000c1cf6c6SMatthias Ringwald /** 20010c1cf6c6SMatthias Ringwald * @param advertising_handle 20020c1cf6c6SMatthias Ringwald * @param cte_length 20030c1cf6c6SMatthias Ringwald * @param cte_type 20040c1cf6c6SMatthias Ringwald * @param cte_count 20050c1cf6c6SMatthias Ringwald * @param switching_pattern_length 20060c1cf6c6SMatthias Ringwald * @param antenna_ids[i] 20070c1cf6c6SMatthias Ringwald */ 20080c1cf6c6SMatthias Ringwald 20090c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connectionless_cte_transmit_parameters = { 20100c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_CONNECTIONLESS_CTE_TRANSMIT_PARAMETERS, "1111a[1]" 20110c1cf6c6SMatthias Ringwald }; 20120c1cf6c6SMatthias Ringwald 20130c1cf6c6SMatthias Ringwald /** 20140c1cf6c6SMatthias Ringwald * @param advertising_handle 20150c1cf6c6SMatthias Ringwald * @param cte_enable 20160c1cf6c6SMatthias Ringwald */ 20170c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connectionless_cte_transmit_enable = { 20180c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_CONNECTIONLESS_CTE_TRANSMIT_ENABLE, "11" 20190c1cf6c6SMatthias Ringwald }; 20200c1cf6c6SMatthias Ringwald 20210c1cf6c6SMatthias Ringwald /** 20220c1cf6c6SMatthias Ringwald * @param sync_handle 20230c1cf6c6SMatthias Ringwald * @param sampling_enable 20240c1cf6c6SMatthias Ringwald * @param slot_durations 20250c1cf6c6SMatthias Ringwald * @param max_sampled_ctes 20260c1cf6c6SMatthias Ringwald * @param switching_pattern_length 20270c1cf6c6SMatthias Ringwald * @param antenna_ids[i] 20280c1cf6c6SMatthias Ringwald */ 20290c1cf6c6SMatthias Ringwald 20300c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connectionless_iq_sampling_enable = { 20310c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_CONNECTIONLESS_IQ_SAMPLING_ENABLE, "2111a[i]" 20320c1cf6c6SMatthias Ringwald }; 20330c1cf6c6SMatthias Ringwald 20340c1cf6c6SMatthias Ringwald /** 20350c1cf6c6SMatthias Ringwald * @param connection_handle 20360c1cf6c6SMatthias Ringwald * @param sampling_enable 20370c1cf6c6SMatthias Ringwald * @param slot_durations 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_connection_cte_receive_parameters = { 20430c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_CONNECTION_CTE_RECEIVE_PARAMETERS, "211a[1]" 20440c1cf6c6SMatthias Ringwald }; 20450c1cf6c6SMatthias Ringwald 20460c1cf6c6SMatthias Ringwald /** 20470c1cf6c6SMatthias Ringwald * @param connection_handle 20480c1cf6c6SMatthias Ringwald * @param cte_types 20490c1cf6c6SMatthias Ringwald * @param switching_pattern_length 20500c1cf6c6SMatthias Ringwald * @param antenna_ids[i] 20510c1cf6c6SMatthias Ringwald */ 20520c1cf6c6SMatthias Ringwald 20530c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connection_cte_transmit_parameters = { 20540c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_CONNECTION_CTE_TRANSMIT_PARAMETERS, "21a[1]" 20550c1cf6c6SMatthias Ringwald }; 20560c1cf6c6SMatthias Ringwald 20570c1cf6c6SMatthias Ringwald /** 20580c1cf6c6SMatthias Ringwald * @param connection_handle 20590c1cf6c6SMatthias Ringwald * @param enable 20600c1cf6c6SMatthias Ringwald * @param cte_request_interval 20610c1cf6c6SMatthias Ringwald * @param requested_cte_length 20620c1cf6c6SMatthias Ringwald * @param requested_cte_type 20630c1cf6c6SMatthias Ringwald */ 20640c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_connection_cte_request_enable = { 20650c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_CONNECTION_CTE_REQUEST_ENABLE, "H1211" 20660c1cf6c6SMatthias Ringwald }; 20670c1cf6c6SMatthias Ringwald 20680c1cf6c6SMatthias Ringwald /** 20690c1cf6c6SMatthias Ringwald * @param connection_handle 20700c1cf6c6SMatthias Ringwald * @param enable 20710c1cf6c6SMatthias Ringwald */ 20720c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_connection_cte_response_enable = { 20730c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_CONNECTION_CTE_RESPONSE_ENABLE, "H1" 20740c1cf6c6SMatthias Ringwald }; 20750c1cf6c6SMatthias Ringwald 20760c1cf6c6SMatthias Ringwald /** 20770c1cf6c6SMatthias Ringwald */ 20780c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_antenna_information = { 20790c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_ANTENNA_INFORMATION, "" 20800c1cf6c6SMatthias Ringwald }; 20810c1cf6c6SMatthias Ringwald 20820c1cf6c6SMatthias Ringwald /** 20830c1cf6c6SMatthias Ringwald * @param sync_handle 20840c1cf6c6SMatthias Ringwald * @param enable 20850c1cf6c6SMatthias Ringwald */ 20860c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_receive_enable = { 20870c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_RECEIVE_ENABLE, "H1" 20880c1cf6c6SMatthias Ringwald }; 20890c1cf6c6SMatthias Ringwald 20900c1cf6c6SMatthias Ringwald /** 20910c1cf6c6SMatthias Ringwald * @param connection_handle 20920c1cf6c6SMatthias Ringwald * @param service_data 20930c1cf6c6SMatthias Ringwald * @param sync_handle 20940c1cf6c6SMatthias Ringwald */ 20950c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_sync_transfer = { 20960c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_SYNC_TRANSFER, "H22" 20970c1cf6c6SMatthias Ringwald }; 20980c1cf6c6SMatthias Ringwald 20990c1cf6c6SMatthias Ringwald /** 21000c1cf6c6SMatthias Ringwald * @param connection_handle 21010c1cf6c6SMatthias Ringwald * @param service_data 21020c1cf6c6SMatthias Ringwald * @param advertising_handle 21030c1cf6c6SMatthias Ringwald */ 21040c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_set_info_transfer = { 21050c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_SET_INFO_TRANSFER, "H21" 21060c1cf6c6SMatthias Ringwald }; 21070c1cf6c6SMatthias Ringwald 21080c1cf6c6SMatthias Ringwald /** 21090c1cf6c6SMatthias Ringwald * @param connection_handle 21100c1cf6c6SMatthias Ringwald * @param mode 21110c1cf6c6SMatthias Ringwald * @param skip 21120c1cf6c6SMatthias Ringwald * @param sync_timeout 21130c1cf6c6SMatthias Ringwald * @param cte_type 21140c1cf6c6SMatthias Ringwald */ 21150c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_sync_transfer_parameters = { 21160c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_SYNC_TRANSFER_PARAMETERS, "H1221" 21170c1cf6c6SMatthias Ringwald }; 21180c1cf6c6SMatthias Ringwald 21190c1cf6c6SMatthias Ringwald /** 21200c1cf6c6SMatthias Ringwald * @param mode 21210c1cf6c6SMatthias Ringwald * @param skip 21220c1cf6c6SMatthias Ringwald * @param sync_timeout 21230c1cf6c6SMatthias Ringwald * @param cte_type 21240c1cf6c6SMatthias Ringwald */ 21250c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_default_periodic_advertising_sync_transfer_parameters = { 21260c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_DEFAULT_PERIODIC_ADVERTISING_SYNC_TRANSFER_PARAMETERS, "1221" 21270c1cf6c6SMatthias Ringwald }; 21280c1cf6c6SMatthias Ringwald 21290c1cf6c6SMatthias Ringwald /** 21300c1cf6c6SMatthias Ringwald * @param 256Remote_P-256_public_key_x 21310c1cf6c6SMatthias Ringwald * @param 256Remote_P-256_public_key_y 21320c1cf6c6SMatthias Ringwald * @param key_type 21330c1cf6c6SMatthias Ringwald */ 21340c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_generate_dhkey_v2 = { 21350c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_GENERATE_DHKEY_V2, "QQ1" 21360c1cf6c6SMatthias Ringwald }; 21370c1cf6c6SMatthias Ringwald 21380c1cf6c6SMatthias Ringwald /** 21390c1cf6c6SMatthias Ringwald * @param action 21400c1cf6c6SMatthias Ringwald */ 21410c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_modify_sleep_clock_accuracy = { 21420c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_MODIFY_SLEEP_CLOCK_ACCURACY, "1" 21430c1cf6c6SMatthias Ringwald }; 21440c1cf6c6SMatthias Ringwald 21450c1cf6c6SMatthias Ringwald /** 21460c1cf6c6SMatthias Ringwald */ 2147b3e0a1b9SMatthias Ringwald const hci_cmd_t hci_le_read_buffer_size_v2 = { 2148b3e0a1b9SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_BUFFER_SIZE_V2, "" 21490c1cf6c6SMatthias Ringwald }; 21500c1cf6c6SMatthias Ringwald 21510c1cf6c6SMatthias Ringwald /** 21520c1cf6c6SMatthias Ringwald * @param connection_handle 21530c1cf6c6SMatthias Ringwald */ 21540c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_iso_tx_sync = { 21550c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_ISO_TX_SYNC, "H" 21560c1cf6c6SMatthias Ringwald }; 21570c1cf6c6SMatthias Ringwald 21580c1cf6c6SMatthias Ringwald /** 21590c1cf6c6SMatthias Ringwald * @param cig_id 21600c1cf6c6SMatthias Ringwald * @param sdu_interval_m_to_s 21610c1cf6c6SMatthias Ringwald * @param sdu_interval_s_to_m 21620c1cf6c6SMatthias Ringwald * @param slaves_clock_accuracy 21630c1cf6c6SMatthias Ringwald * @param packing 21640c1cf6c6SMatthias Ringwald * @param framing 21650c1cf6c6SMatthias Ringwald * @param max_transport_latency_m_to_s 21660c1cf6c6SMatthias Ringwald * @param max_transport_latency_s_to_m 21670c1cf6c6SMatthias Ringwald * @param cis_count 21680c1cf6c6SMatthias Ringwald * @param cis_id[i] 21690c1cf6c6SMatthias Ringwald * @param max_sdu_m_to_s[i] 21700c1cf6c6SMatthias Ringwald * @param max_sdu_s_to_m[i] 21710c1cf6c6SMatthias Ringwald * @param phy_m_to_s[i] 21720c1cf6c6SMatthias Ringwald * @param phy_s_to_m[i] 21730c1cf6c6SMatthias Ringwald * @param rtn_m_to_s[i] 21740c1cf6c6SMatthias Ringwald * @param rtn_s_to_m[i] 21750c1cf6c6SMatthias Ringwald */ 21760c1cf6c6SMatthias Ringwald 21770c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_cig_parameters = { 21780c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_CIG_PARAMETERS, "13311122a[1221111]" 21790c1cf6c6SMatthias Ringwald }; 21800c1cf6c6SMatthias Ringwald 21810c1cf6c6SMatthias Ringwald /** 21820c1cf6c6SMatthias Ringwald * @param cig_id 21830c1cf6c6SMatthias Ringwald * @param sdu_interval_m_to_s 21840c1cf6c6SMatthias Ringwald * @param sdu_interval_s_to_m 21850c1cf6c6SMatthias Ringwald * @param ft_m_to_s 21860c1cf6c6SMatthias Ringwald * @param ft_s_to_m 21870c1cf6c6SMatthias Ringwald * @param iso_interval 21880c1cf6c6SMatthias Ringwald * @param slaves_clock_accuracy 21890c1cf6c6SMatthias Ringwald * @param packing 21900c1cf6c6SMatthias Ringwald * @param framing 21910c1cf6c6SMatthias Ringwald * @param max_transport_latency_m_to_s 21920c1cf6c6SMatthias Ringwald * @param max_transport_latency_s_to_m 21930c1cf6c6SMatthias Ringwald * @param cis_count 21940c1cf6c6SMatthias Ringwald * @param cis_id[i] 21950c1cf6c6SMatthias Ringwald * @param nse[i] 21960c1cf6c6SMatthias Ringwald * @param max_sdu_m_to_s[i] 21970c1cf6c6SMatthias Ringwald * @param max_sdu_s_to_m[i] 21980c1cf6c6SMatthias Ringwald * @param max_pdu_m_to_s[i] 21990c1cf6c6SMatthias Ringwald * @param max_pdu_s_to_m[i] 22000c1cf6c6SMatthias Ringwald * @param phy_m_to_s[i] 22010c1cf6c6SMatthias Ringwald * @param phy_s_to_m[i] 22020c1cf6c6SMatthias Ringwald * @param bn_m_to_s[i] 22030c1cf6c6SMatthias Ringwald * @param bn_s_to_m[i] 22040c1cf6c6SMatthias Ringwald */ 22050c1cf6c6SMatthias Ringwald 22060c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_cig_parameters_test = { 22070c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_CIG_PARAMETERS_TEST, "133112111a[1122221111]" 22080c1cf6c6SMatthias Ringwald }; 22090c1cf6c6SMatthias Ringwald 22100c1cf6c6SMatthias Ringwald /** 22110c1cf6c6SMatthias Ringwald * @param cis_count 22120c1cf6c6SMatthias Ringwald * @param cis_connection_handle[i] 22130c1cf6c6SMatthias Ringwald * @param acl_connection_handle[i] 22140c1cf6c6SMatthias Ringwald */ 22150c1cf6c6SMatthias Ringwald 22160c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_create_cis = { 22170c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_CREATE_CIS, "a[22]" 22180c1cf6c6SMatthias Ringwald }; 22190c1cf6c6SMatthias Ringwald 22200c1cf6c6SMatthias Ringwald /** 22210c1cf6c6SMatthias Ringwald * @param cig_id 22220c1cf6c6SMatthias Ringwald */ 22230c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_cig = { 22240c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOVE_CIG, "1" 22250c1cf6c6SMatthias Ringwald }; 22260c1cf6c6SMatthias Ringwald 22270c1cf6c6SMatthias Ringwald /** 22280c1cf6c6SMatthias Ringwald * @param connection_handle 22290c1cf6c6SMatthias Ringwald */ 22300c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_accept_cis_request = { 22310c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_ACCEPT_CIS_REQUEST, "H" 22320c1cf6c6SMatthias Ringwald }; 22330c1cf6c6SMatthias Ringwald 22340c1cf6c6SMatthias Ringwald /** 22350c1cf6c6SMatthias Ringwald * @param connection_handle 22360c1cf6c6SMatthias Ringwald */ 22370c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_reject_cis_request = { 22381a2fdeb3SMatthias Ringwald HCI_OPCODE_HCI_LE_REJECT_CIS_REQUEST, "H1" 22390c1cf6c6SMatthias Ringwald }; 22400c1cf6c6SMatthias Ringwald 22410c1cf6c6SMatthias Ringwald /** 22420c1cf6c6SMatthias Ringwald * @param big_handle 22430c1cf6c6SMatthias Ringwald * @param advertising_handle 22440c1cf6c6SMatthias Ringwald * @param num_bis 22450c1cf6c6SMatthias Ringwald * @param sdu_interval 22460c1cf6c6SMatthias Ringwald * @param max_sdu 22470c1cf6c6SMatthias Ringwald * @param max_transport_latency 22480c1cf6c6SMatthias Ringwald * @param rtn 22490c1cf6c6SMatthias Ringwald * @param phy 22500c1cf6c6SMatthias Ringwald * @param packing 22510c1cf6c6SMatthias Ringwald * @param framing 22520c1cf6c6SMatthias Ringwald * @param encryption 22530c1cf6c6SMatthias Ringwald * @param broadcast_code 22540c1cf6c6SMatthias Ringwald */ 22550c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_create_big = { 2256a10fc198SMatthias Ringwald HCI_OPCODE_HCI_LE_CREATE_BIG, "11132211111K" 22570c1cf6c6SMatthias Ringwald }; 22580c1cf6c6SMatthias Ringwald 22590c1cf6c6SMatthias Ringwald /** 22600c1cf6c6SMatthias Ringwald * @param big_handle 22610c1cf6c6SMatthias Ringwald * @param advertising_handle 22620c1cf6c6SMatthias Ringwald * @param num_bis 22630c1cf6c6SMatthias Ringwald * @param sdu_interval 22640c1cf6c6SMatthias Ringwald * @param iso_interval 22650c1cf6c6SMatthias Ringwald * @param nse 22660c1cf6c6SMatthias Ringwald * @param max_sdu 22670c1cf6c6SMatthias Ringwald * @param max_PDU 22680c1cf6c6SMatthias Ringwald * @param phy 22690c1cf6c6SMatthias Ringwald * @param packing 22700c1cf6c6SMatthias Ringwald * @param framing 22710c1cf6c6SMatthias Ringwald * @param bn 22720c1cf6c6SMatthias Ringwald * @param irc 22730c1cf6c6SMatthias Ringwald * @param pto 22740c1cf6c6SMatthias Ringwald * @param encryption 22750c1cf6c6SMatthias Ringwald * @param broadcast_code 22760c1cf6c6SMatthias Ringwald */ 22770c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_create_big_test = { 2278a10fc198SMatthias Ringwald HCI_OPCODE_HCI_LE_CREATE_BIG_TEST, "111321221111111K" 22790c1cf6c6SMatthias Ringwald }; 22800c1cf6c6SMatthias Ringwald 22810c1cf6c6SMatthias Ringwald /** 22820c1cf6c6SMatthias Ringwald * @param big_handle 22830c1cf6c6SMatthias Ringwald * @param reason 22840c1cf6c6SMatthias Ringwald */ 22850c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_terminate_big = { 22860c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_TERMINATE_BIG, "11" 22870c1cf6c6SMatthias Ringwald }; 22880c1cf6c6SMatthias Ringwald 22890c1cf6c6SMatthias Ringwald /** 22900c1cf6c6SMatthias Ringwald * @param big_handle 22910c1cf6c6SMatthias Ringwald * @param sync_handle 22920c1cf6c6SMatthias Ringwald * @param encryption 22930c1cf6c6SMatthias Ringwald * @param broadcast_code 22940c1cf6c6SMatthias Ringwald * @param mse 22950c1cf6c6SMatthias Ringwald * @param big_sync_timeout 22960c1cf6c6SMatthias Ringwald * @param num_bis 22970c1cf6c6SMatthias Ringwald * @param bis[i] 22980c1cf6c6SMatthias Ringwald */ 22990c1cf6c6SMatthias Ringwald 23000c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_big_create_sync = { 2301a10fc198SMatthias Ringwald HCI_OPCODE_HCI_LE_BIG_CREATE_SYNC, "1H1K12a[1]" 23020c1cf6c6SMatthias Ringwald }; 23030c1cf6c6SMatthias Ringwald 23040c1cf6c6SMatthias Ringwald /** 23050c1cf6c6SMatthias Ringwald * @param big_handle 23060c1cf6c6SMatthias Ringwald */ 23070c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_big_terminate_sync = { 2308c0112d43SMatthias Ringwald HCI_OPCODE_HCI_LE_BIG_TERMINATE_SYNC, "1" 23090c1cf6c6SMatthias Ringwald }; 23100c1cf6c6SMatthias Ringwald 23110c1cf6c6SMatthias Ringwald /** 23120c1cf6c6SMatthias Ringwald * @param connection_handle 23130c1cf6c6SMatthias Ringwald */ 23140c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_request_peer_sca = { 23150c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_REQUEST_PEER_SCA, "H" 23160c1cf6c6SMatthias Ringwald }; 23170c1cf6c6SMatthias Ringwald 23180c1cf6c6SMatthias Ringwald /** 23190c1cf6c6SMatthias Ringwald * @param connection_handle 23200c1cf6c6SMatthias Ringwald * @param data_path_direction 23210c1cf6c6SMatthias Ringwald * @param data_path_id 23220c1cf6c6SMatthias Ringwald * @param codec_id_coding_format 23230c1cf6c6SMatthias Ringwald * @param codec_id_company_identifier (Shall be ignored if codec_id_coding_format is not 0xFF) 23240c1cf6c6SMatthias Ringwald * @param codec_id_vendor_codec_id (Shall be ignored if codec_id_coding_format is not 0xFF) 23250c1cf6c6SMatthias Ringwald * @param controller_delay 23260c1cf6c6SMatthias Ringwald * @param codec_configuration_length 23270c1cf6c6SMatthias Ringwald * @param codec_configuration 23280c1cf6c6SMatthias Ringwald */ 23290c1cf6c6SMatthias Ringwald 23300c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_setup_iso_data_path = { 23310c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SETUP_ISO_DATA_PATH, "H111223JV" 23320c1cf6c6SMatthias Ringwald }; 23330c1cf6c6SMatthias Ringwald 23340c1cf6c6SMatthias Ringwald /** 23350c1cf6c6SMatthias Ringwald * @param connection_handle 23360c1cf6c6SMatthias Ringwald */ 23370c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_iso_data_path = { 23380c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOVE_ISO_DATA_PATH, "H1" 23390c1cf6c6SMatthias Ringwald }; 23400c1cf6c6SMatthias Ringwald 23410c1cf6c6SMatthias Ringwald /** 23420c1cf6c6SMatthias Ringwald * @param connection_handle 23430c1cf6c6SMatthias Ringwald * @param paylaod_type 23440c1cf6c6SMatthias Ringwald */ 23450c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_transmit_test = { 23460c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_ISO_TRANSMIT_TEST, "H1" 23470c1cf6c6SMatthias Ringwald }; 23480c1cf6c6SMatthias Ringwald 23490c1cf6c6SMatthias Ringwald /** 23500c1cf6c6SMatthias Ringwald * @param connection_handle 23510c1cf6c6SMatthias Ringwald * @param paylaod_type 23520c1cf6c6SMatthias Ringwald */ 23530c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_receive_test = { 23540c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_ISO_RECEIVE_TEST, "H1" 23550c1cf6c6SMatthias Ringwald }; 23560c1cf6c6SMatthias Ringwald 23570c1cf6c6SMatthias Ringwald /** 23580c1cf6c6SMatthias Ringwald * @param connection_handle 23590c1cf6c6SMatthias Ringwald */ 23600c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_read_test_counters = { 23610c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_ISO_READ_TEST_COUNTERS, "H" 23620c1cf6c6SMatthias Ringwald }; 23630c1cf6c6SMatthias Ringwald 23640c1cf6c6SMatthias Ringwald /** 23650c1cf6c6SMatthias Ringwald * @param connection_handle 23660c1cf6c6SMatthias Ringwald */ 23670c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_test_end = { 23680c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_ISO_TEST_END, "H" 23690c1cf6c6SMatthias Ringwald }; 23700c1cf6c6SMatthias Ringwald 23710c1cf6c6SMatthias Ringwald /** 23720c1cf6c6SMatthias Ringwald * @param bit_number 23730c1cf6c6SMatthias Ringwald * @param bit_value 23740c1cf6c6SMatthias Ringwald */ 23750c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_host_feature = { 23760c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_HOST_FEATURE, "11" 23770c1cf6c6SMatthias Ringwald }; 23780c1cf6c6SMatthias Ringwald 23790c1cf6c6SMatthias Ringwald /** 23800c1cf6c6SMatthias Ringwald * @param connection_handle 23810c1cf6c6SMatthias Ringwald */ 23820c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_iso_link_quality = { 23830c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_ISO_LINK_QUALITY, "H" 23840c1cf6c6SMatthias Ringwald }; 23850c1cf6c6SMatthias Ringwald 23860c1cf6c6SMatthias Ringwald /** 23870c1cf6c6SMatthias Ringwald * @param connection_handle 23880c1cf6c6SMatthias Ringwald * @param phy 23890c1cf6c6SMatthias Ringwald */ 23900c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_enhanced_read_transmit_power_level = { 23910c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_ENHANCED_READ_TRANSMIT_POWER_LEVEL, "H1" 23920c1cf6c6SMatthias Ringwald }; 23930c1cf6c6SMatthias Ringwald 23940c1cf6c6SMatthias Ringwald /** 23950c1cf6c6SMatthias Ringwald * @param connection_handle 23960c1cf6c6SMatthias Ringwald * @param phy 23970c1cf6c6SMatthias Ringwald */ 23980c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_remote_transmit_power_level = { 23990c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_REMOTE_TRANSMIT_POWER_LEVEL, "H1" 24000c1cf6c6SMatthias Ringwald }; 24010c1cf6c6SMatthias Ringwald 24020c1cf6c6SMatthias Ringwald /** 24030c1cf6c6SMatthias Ringwald * @param connection_handle 24040c1cf6c6SMatthias Ringwald * @param high_threshold 24050c1cf6c6SMatthias Ringwald * @param high_hysteresis 24060c1cf6c6SMatthias Ringwald * @param low_threshold 24070c1cf6c6SMatthias Ringwald * @param low_hysteresis 24080c1cf6c6SMatthias Ringwald * @param min_time_spent 24090c1cf6c6SMatthias Ringwald */ 24100c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_path_loss_reporting_parameters = { 24110c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PATH_LOSS_REPORTING_PARAMETERS, "211112" 24120c1cf6c6SMatthias Ringwald }; 24130c1cf6c6SMatthias Ringwald 24140c1cf6c6SMatthias Ringwald /** 24150c1cf6c6SMatthias Ringwald * @param connection_handle 24160c1cf6c6SMatthias Ringwald * @param enable 24170c1cf6c6SMatthias Ringwald */ 24180c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_path_loss_reporting_enable = { 24190c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PATH_LOSS_REPORTING_ENABLE, "H1" 24200c1cf6c6SMatthias Ringwald }; 24210c1cf6c6SMatthias Ringwald 24220c1cf6c6SMatthias Ringwald /** 24230c1cf6c6SMatthias Ringwald * @param connection_handle 24240c1cf6c6SMatthias Ringwald * @param local_enable 24250c1cf6c6SMatthias Ringwald * @param remote_enable 24260c1cf6c6SMatthias Ringwald */ 24270c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_transmit_power_reporting_enable = { 24280c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_TRANSMIT_POWER_REPORTING_ENABLE, "H11" 24290c1cf6c6SMatthias Ringwald }; 24300c1cf6c6SMatthias Ringwald 24310c1cf6c6SMatthias Ringwald /** 24320c1cf6c6SMatthias Ringwald * @param tx_channel 24330c1cf6c6SMatthias Ringwald * @param test_data_length 24340c1cf6c6SMatthias Ringwald * @param packet_payload 24350c1cf6c6SMatthias Ringwald * @param phy 24360c1cf6c6SMatthias Ringwald * @param cte_length 24370c1cf6c6SMatthias Ringwald * @param cte_type 24380c1cf6c6SMatthias Ringwald * @param switching_pattern_length 24390c1cf6c6SMatthias Ringwald * @param antenna_ids[i] 24400c1cf6c6SMatthias Ringwald * @param transmit_power_level 24410c1cf6c6SMatthias Ringwald */ 24420c1cf6c6SMatthias Ringwald 24430c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test_v4 = { 24440c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_TRANSMITTER_TEST_V4, "111111a[1]1" 24450c1cf6c6SMatthias Ringwald }; 2446ca13daefSMatthias Ringwald 244756042629SMatthias Ringwald #endif 2448a42798c3SMatthias Ringwald 2449a42798c3SMatthias Ringwald // Broadcom / Cypress specific HCI commands 2450a42798c3SMatthias Ringwald 2451a42798c3SMatthias Ringwald /** 2452067ecc36SMatthias Ringwald * @brief Enable Wide-Band Speech / mSBC decoding for PCM 2453067ecc36SMatthias Ringwald * @param enable_wbs is 0 for disable, 1 for enable 2454067ecc36SMatthias Ringwald * @param uuid_wbs is 2 for EV2/EV3 2455067ecc36SMatthias Ringwald */ 2456067ecc36SMatthias Ringwald const hci_cmd_t hci_bcm_enable_wbs = { 2457067ecc36SMatthias Ringwald HCI_OPCODE_HCI_BCM_ENABLE_WBS, "12" 2458067ecc36SMatthias Ringwald // return: status 2459067ecc36SMatthias Ringwald }; 2460067ecc36SMatthias Ringwald 2461067ecc36SMatthias Ringwald /** 2462d7ae48d5SMatthias Ringwald * @brief Configure PCM2, see Cypress AN214937 2463d7ae48d5SMatthias Ringwald * @param action 2464d7ae48d5SMatthias Ringwald * @param test_options 2465d7ae48d5SMatthias Ringwald * @param op_mode 2466d7ae48d5SMatthias Ringwald * @param sync_and_clock_options 2467d7ae48d5SMatthias Ringwald * @param pcm_clock_freq 2468d7ae48d5SMatthias Ringwald * @param sync_signal_width 2469d7ae48d5SMatthias Ringwald * @param slot_width 2470d7ae48d5SMatthias Ringwald * @param number_of_slots 2471d7ae48d5SMatthias Ringwald * @param bank_0_fill_mode 2472d7ae48d5SMatthias Ringwald * @param bank_0_number_of_fill_bits 2473d7ae48d5SMatthias Ringwald * @param bank_0_programmable_fill_data 2474d7ae48d5SMatthias Ringwald * @param bank_1_fill_mode 2475d7ae48d5SMatthias Ringwald * @param bank_1_number_of_fill_bits 2476d7ae48d5SMatthias Ringwald * @param bank_1_programmable_fill_data 2477d7ae48d5SMatthias Ringwald * @param data_justify_and_bit_order_options 2478d7ae48d5SMatthias Ringwald * @param ch_0_slot_number 2479d7ae48d5SMatthias Ringwald * @param ch_1_slot_number 2480d7ae48d5SMatthias Ringwald * @param ch_2_slot_number 2481d7ae48d5SMatthias Ringwald * @param ch_3_slot_number 2482d7ae48d5SMatthias Ringwald * @param ch_4_slot_number 2483d7ae48d5SMatthias Ringwald * @param ch_0_period 2484d7ae48d5SMatthias Ringwald * @param ch_1_period 2485d7ae48d5SMatthias Ringwald * @param ch_2_period 2486d7ae48d5SMatthias Ringwald * 2487d7ae48d5SMatthias Ringwald */ 2488d7ae48d5SMatthias Ringwald const hci_cmd_t hci_bcm_pcm2_setup = { 2489d7ae48d5SMatthias Ringwald HCI_OPCODE_HCI_BCM_PCM2_SETUP, "11114111111111111111111" 2490d7ae48d5SMatthias Ringwald }; 2491d7ae48d5SMatthias Ringwald 2492d7ae48d5SMatthias Ringwald /** 2493a42798c3SMatthias Ringwald * @brief Configure SCO Routing (BCM) 2494a42798c3SMatthias Ringwald * @param sco_routing is 0 for PCM, 1 for Transport, 2 for Codec and 3 for I2S 2495a42798c3SMatthias Ringwald * @param pcm_interface_rate is 0 for 128KBps, 1 for 256 KBps, 2 for 512KBps, 3 for 1024KBps, and 4 for 2048Kbps 2496a42798c3SMatthias Ringwald * @param frame_type is 0 for short and 1 for long 2497a42798c3SMatthias Ringwald * @param sync_mode is 0 for slave and 1 for master 2498a42798c3SMatthias Ringwald * @param clock_mode is 0 for slabe and 1 for master 2499a42798c3SMatthias Ringwald */ 2500a42798c3SMatthias Ringwald const hci_cmd_t hci_bcm_write_sco_pcm_int = { 2501ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_BCM_WRITE_SCO_PCM_INT, "11111" 2502a42798c3SMatthias Ringwald // return: status 2503a42798c3SMatthias Ringwald }; 2504eab6959fSMatthias Ringwald 2505eab6959fSMatthias Ringwald /** 2506762c3e10SMatthias Ringwald * @brief Configure PCM Data Format (BCM) 2507762c3e10SMatthias Ringwald * @param lsb_position 0x00 – LSB last/MSB first, 0x01 – LSB first/MSB last 2508762c3e10SMatthias Ringwald * @param fill_bits_value three bit value defines the fill bits used by the PCM interface,only if fill_data_selection == programmable 2509762c3e10SMatthias Ringwald * @param fill_data_selection 0x00 zeros, 0x01 ones, 0x02 sign bit, 0x03 programmable 2510762c3e10SMatthias Ringwald * @param number_of_fill_bits 0..3 2511762c3e10SMatthias Ringwald * @param right_left_justification 0x00 left justified, 0x01 right justified 2512762c3e10SMatthias Ringwald */ 2513762c3e10SMatthias Ringwald const hci_cmd_t hci_bcm_write_pcm_data_format_param = { 2514762c3e10SMatthias Ringwald HCI_OPCODE_HCI_BCM_WRITE_PCM_DATA_FORMAT_PARAM, "11111" 2515762c3e10SMatthias Ringwald // return: status 2516762c3e10SMatthias Ringwald }; 2517762c3e10SMatthias Ringwald 2518762c3e10SMatthias Ringwald /** 2519067ecc36SMatthias Ringwald * @brief Configure the I2S/PCM interface (BCM) 2520067ecc36SMatthias Ringwald * @param i2s_enable is 0 for off, 1 for on 2521067ecc36SMatthias Ringwald * @param is_master is 0 for slave, is 1 for master 2522067ecc36SMatthias Ringwald * @param sample_rate is 0 for 8 kHz, 1 for 16 kHz, 2 for 4 kHz 2523067ecc36SMatthias 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 2524067ecc36SMatthias Ringwald */ 2525067ecc36SMatthias Ringwald const hci_cmd_t hci_bcm_write_i2spcm_interface_param = { 252658323d58SMatthias Ringwald HCI_OPCODE_HCI_BCM_WRITE_I2SPCM_INTERFACE_PARAM, "1111" 2527067ecc36SMatthias Ringwald // return: status 2528067ecc36SMatthias Ringwald }; 2529067ecc36SMatthias Ringwald 2530067ecc36SMatthias Ringwald 2531067ecc36SMatthias Ringwald /** 2532eab6959fSMatthias Ringwald * @brief Activates selected Sleep Mode 2533eab6959fSMatthias 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 2534eab6959fSMatthias Ringwald * @param idle_threshold_host (modes 1,2,5,7) time until considered idle, unit roughly 300 ms 2535eab6959fSMatthias Ringwald * @param idle_threshold_controller (modes 1-7,9) time until considered idle, unit roughly 300 ms 2536eab6959fSMatthias Ringwald * @param bt_wake_active_mode (modes 1,2,7) 0 = BT_WAKE line is active high, 1 = BT_WAKE is active low 2537eab6959fSMatthias Ringwald * @param host_wake_active_mode (modes 1,2,5,7) 0 = HOST_WAKE line is active high, 1 = HOST_WAKE is active low 2538eab6959fSMatthias Ringwald * @param allow_host_sleep_during_sco (modes 1,2,3,5,7) 2539eab6959fSMatthias Ringwald * @param combine_sleep_mode_and_lpm (modes 1,2,3,5,7) 2540eab6959fSMatthias Ringwald * @param enable_tristate_control_of_uart_tx_line (modes 1,2,7) 2541eab6959fSMatthias Ringwald * @param active_connection_handling_on_suspend (modes 3,5) 2542eab6959fSMatthias Ringwald * @param resume_timeout (modes 3,5) 2543eab6959fSMatthias Ringwald * @param enable_break_to_host (mode 12) 2544eab6959fSMatthias Ringwald * @param pulsed_host_wake (modes 1,12) 2545eab6959fSMatthias Ringwald */ 2546eab6959fSMatthias Ringwald const hci_cmd_t hci_bcm_set_sleep_mode = { 2547ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_BCM_SET_SLEEP_MODE, "111111111111" 2548eab6959fSMatthias Ringwald }; 25495cdaddfaSMatthias Ringwald 25505cdaddfaSMatthias Ringwald /** 25515cdaddfaSMatthias Ringwald * @brief Set TX Power Table 25525cdaddfaSMatthias Ringwald * @param is_le 0=classic, 1=LE 25535cdaddfaSMatthias Ringwald * @param chip_max_tx_pwr_db chip level max TX power in dBM 25545cdaddfaSMatthias Ringwald */ 25555cdaddfaSMatthias Ringwald const hci_cmd_t hci_bcm_write_tx_power_table = { 2556ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_BCM_WRITE_TX_POWER_TABLE, "11" 25575cdaddfaSMatthias Ringwald }; 25585cdaddfaSMatthias Ringwald 25595cdaddfaSMatthias Ringwald const hci_cmd_t hci_bcm_set_tx_pwr = { 2560ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_BCM_SET_TX_PWR, "11H" 25615cdaddfaSMatthias Ringwald }; 2562ba39ed56SMatthias Ringwald 2563ba39ed56SMatthias Ringwald /** 256415fca961SMatthias Ringwald * @brief This command starts receiving packets using packet transmission parameters such as 256515fca961SMatthias Ringwald * frequency channel, packet type, and packet length. It is used for Packet RX. 25666f029df8SMatthias Ringwald * @see processors.wiki.ti.com/index.php/CC256x_Testing_Guide#Continuous_RX 256715fca961SMatthias Ringwald * @param frequency 256815fca961SMatthias Ringwald * @param ADPLL loop mode 256915fca961SMatthias Ringwald */ 257015fca961SMatthias Ringwald const hci_cmd_t hci_ti_drpb_tester_con_rx = { 257115fca961SMatthias Ringwald 0xFD17, "11" 257215fca961SMatthias Ringwald }; 257315fca961SMatthias Ringwald 257415fca961SMatthias Ringwald /** 2575ba39ed56SMatthias Ringwald * 2576ba39ed56SMatthias Ringwald * 2577ba39ed56SMatthias Ringwald * @brief This command tests the RF transceiver in continuous transmission mode. 2578ba39ed56SMatthias Ringwald * The transmitter is activated by configuring the transmission parameters such as pattern, 2579ba39ed56SMatthias Ringwald * modulation, and frequency. 2580ba39ed56SMatthias Ringwald * @see processors.wiki.ti.com/index.php/CC256x_VS_HCI_Commands#HCI_VS_DRPb_Tester_Con_TX.280xFD84.29 2581ba39ed56SMatthias Ringwald * @param modulation 258215fca961SMatthias Ringwald * @param test_pattern 2583ba39ed56SMatthias Ringwald * @param frequency 2584ba39ed56SMatthias Ringwald * @param power_level 2585ba39ed56SMatthias Ringwald * @param reserved1 2586ba39ed56SMatthias Ringwald * @param reserved2 2587ba39ed56SMatthias Ringwald */ 2588ba39ed56SMatthias Ringwald const hci_cmd_t hci_ti_drpb_tester_con_tx = { 2589ba39ed56SMatthias Ringwald 0xFD84, "111144" 2590ba39ed56SMatthias Ringwald }; 2591ba39ed56SMatthias Ringwald 2592ba39ed56SMatthias Ringwald /** 2593ba39ed56SMatthias Ringwald * @brief This command starts sending/receiving packets using packet transmission parameters such as 2594ba39ed56SMatthias Ringwald * frequency channel, packet type, and packet length. It is used for Packet TX/RX. 2595ba39ed56SMatthias Ringwald * @see processors.wiki.ti.com/index.php/CC256x_VS_HCI_Commands#HCI_VS_DRPb_Tester_Packet_TX_RX_.280xFD85.29 2596ba39ed56SMatthias Ringwald * @param frequency_mode 2597ba39ed56SMatthias Ringwald * @param tx_single_frequency 2598ba39ed56SMatthias Ringwald * @param rx_single_frequency 2599ba39ed56SMatthias Ringwald * @param acl_packet_type 2600ba39ed56SMatthias Ringwald * @paarm acl_packet_data_pattern 2601ba39ed56SMatthias Ringwald * @param reserved 2602ba39ed56SMatthias Ringwald * @param power_level 2603ba39ed56SMatthias Ringwald * @param disable_whitening 2604ba39ed56SMatthias Ringwald * @param prbs9_initialization_value 2605ba39ed56SMatthias Ringwald */ 2606ba39ed56SMatthias Ringwald const hci_cmd_t hci_ti_drpb_tester_packet_tx_rx = { 2607ba39ed56SMatthias Ringwald 0xFD85, "1111112112" 2608ba39ed56SMatthias Ringwald }; 2609365a7dd1SMatthias Ringwald 2610733a7793SMatthias Ringwald 2611733a7793SMatthias Ringwald /** 2612733a7793SMatthias Ringwald * @param best effort access percentage 2613733a7793SMatthias Ringwald * @param guaranteed access percentage 2614733a7793SMatthias Ringwald * @param poll period 2615733a7793SMatthias Ringwald * @param slave burst after tx 2616733a7793SMatthias Ringwald * @param slave master search count 2617733a7793SMatthias Ringwald * @param master burst after tx enable 2618733a7793SMatthias Ringwald * @param master burst after rx limit 2619733a7793SMatthias Ringwald */ 2620cf26f982SMatthias Ringwald const hci_cmd_t hci_ti_configure_ddip = { 2621733a7793SMatthias Ringwald HCI_OPCODE_HCI_TI_VS_CONFIGURE_DDIP, "1111111" 2622733a7793SMatthias Ringwald }; 2623733a7793SMatthias Ringwald 2624365a7dd1SMatthias Ringwald /** 2625365a7dd1SMatthias Ringwald * @brief This command is used to associate the requested ACL handle with Wide Band Speech configuration. 2626365a7dd1SMatthias Ringwald * @param enable 0=disable, 1=enable 2627365a7dd1SMatthias Ringwald * @param a3dp_role (NL5500, WL128x only) 0=source,1=sink 2628365a7dd1SMatthias Ringwald * @param code_upload (NL5500, WL128x only) 0=do not load a3dp code, 1=load a3dp code 2629365a7dd1SMatthias Ringwald * @param reserved for future use 2630365a7dd1SMatthias Ringwald */ 2631365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_avrp_enable = { 2632365a7dd1SMatthias Ringwald 0xFD92, "1112" 2633365a7dd1SMatthias Ringwald }; 2634365a7dd1SMatthias Ringwald 2635365a7dd1SMatthias Ringwald /** 2636365a7dd1SMatthias Ringwald * @brief This command is used to associate the requested ACL handle with Wide Band Speech configuration. 2637365a7dd1SMatthias Ringwald * @param acl_con_handle 2638365a7dd1SMatthias Ringwald */ 2639365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_wbs_associate = { 2640365a7dd1SMatthias Ringwald 0xFD78, "H" 2641365a7dd1SMatthias Ringwald }; 2642365a7dd1SMatthias Ringwald 2643365a7dd1SMatthias Ringwald /** 2644365a7dd1SMatthias Ringwald * @brief This command is used to disassociate Wide Band Speech configuration from any ACL handle. 2645365a7dd1SMatthias Ringwald */ 2646365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_wbs_disassociate = { 2647365a7dd1SMatthias Ringwald 0xFD79, "" 2648365a7dd1SMatthias Ringwald }; 2649365a7dd1SMatthias Ringwald 2650365a7dd1SMatthias Ringwald /** 2651365a7dd1SMatthias Ringwald * @brief This command configures the codec interface parameters and the PCM clock rate, which is relevant when 2652365a7dd1SMatthias Ringwald the Bluetooth core generates the clock. This command must be used by the host to use the PCM 2653365a7dd1SMatthias Ringwald interface. 2654365a7dd1SMatthias Ringwald * @param clock_rate in kHz 2655365a7dd1SMatthias Ringwald * @param clock_direction 0=master/output, 1=slave/input 2656365a7dd1SMatthias Ringwald * @param frame_sync_frequency in Hz 2657365a7dd1SMatthias Ringwald * @param frame_sync_duty_cycle 0=50% (I2S Format), 0x0001-0xffff number of cycles of PCM clock 2658365a7dd1SMatthias Ringwald * @param frame_sync_edge 0=driven/sampled at rising edge, 1=driven/sampled at falling edge of PCM clock 2659365a7dd1SMatthias Ringwald * @param frame_sync_polariy 0=active high, 1=active low 2660365a7dd1SMatthias Ringwald * @param reserved1 2661365a7dd1SMatthias Ringwald * @param channel_1_data_out_size sample size in bits 2662365a7dd1SMatthias Ringwald * @param channel_1_data_out_offset number of PCM clock cycles between rising of frame sync and data start 2663365a7dd1SMatthias Ringwald * @param channel_1_data_out_edge 0=data driven at rising edge, 1=data driven at falling edge of PCM clock 2664365a7dd1SMatthias Ringwald * @param channel_1_data_in_size sample size in bits 2665365a7dd1SMatthias Ringwald * @param channel_1_data_in_offset number of PCM clock cycles between rising of frame sync and data start 2666365a7dd1SMatthias Ringwald * @param channel_1_data_in_edge 0=data sampled at rising edge, 1=data sampled at falling edge of PCM clock 2667365a7dd1SMatthias Ringwald * @param fsync_multiplier this field is only relevant to CC256XB from service pack 0.2 !!! -> use 0x00 2668365a7dd1SMatthias Ringwald * @param channel_2_data_out_size sample size in bits 2669365a7dd1SMatthias Ringwald * @param channel_2_data_out_offset number of PCM clock cycles between rising of frame sync and data start 2670365a7dd1SMatthias Ringwald * @param channel_2_data_out_edge 0=data driven at rising edge, 1=data driven at falling edge of PCM clock 2671365a7dd1SMatthias Ringwald * @param channel_2_data_in_size sample size in bits 2672365a7dd1SMatthias Ringwald * @param channel_2_data_in_offset number of PCM clock cycles between rising of frame sync and data start 2673365a7dd1SMatthias Ringwald * @param channel_2_data_in_edge 0=data sampled at rising edge, 1=data sampled at falling edge of PCM clock 2674365a7dd1SMatthias Ringwald * @param reserved2 2675365a7dd1SMatthias Ringwald * 2676365a7dd1SMatthias Ringwald */ 2677365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_write_codec_config = { 2678365a7dd1SMatthias Ringwald 0xFD06, "214211122122112212211" 2679365a7dd1SMatthias Ringwald }; 268015fca961SMatthias Ringwald 268115fca961SMatthias Ringwald /** 268215fca961SMatthias Ringwald * @brief This command is used only for internal testing. 26836f029df8SMatthias Ringwald * @see processors.wiki.ti.com/index.php/CC256x_Testing_Guide#Continuous_TX 268415fca961SMatthias Ringwald * @param frequency 268515fca961SMatthias Ringwald * @param ADPLL loop mode 268615fca961SMatthias Ringwald */ 268715fca961SMatthias Ringwald const hci_cmd_t hci_ti_drpb_enable_rf_calibration = { 268815fca961SMatthias Ringwald 0xFD80, "141" 268915fca961SMatthias Ringwald }; 269015fca961SMatthias Ringwald 269115fca961SMatthias Ringwald /** 269215fca961SMatthias Ringwald * @brief This command command is only required for the continuous TX test of modulated 269315fca961SMatthias Ringwald * (GFSK, π/4-DQPSK or 8DPSK) signal. This command should be skipped when performing continuous TX test for CW. 26946f029df8SMatthias Ringwald * @see processors.wiki.ti.com/index.php/CC256x_Testing_Guide#Continuous_RX 269515fca961SMatthias Ringwald * @param frequency 269615fca961SMatthias Ringwald * @param ADPLL loop mode 269715fca961SMatthias Ringwald */ 269815fca961SMatthias Ringwald const hci_cmd_t hci_ti_write_hardware_register = { 269915fca961SMatthias Ringwald 0xFF01, "42" 270015fca961SMatthias Ringwald }; 27011645c45cSMatthias Ringwald 27021645c45cSMatthias Ringwald /** 27031645c45cSMatthias Ringwald * @brief Configure SCO routing on Realtek Controllers 27041645c45cSMatthias Ringwald */ 27051645c45cSMatthias Ringwald const hci_cmd_t hci_rtk_configure_sco_routing = { 270692ce4e6aSMatthias Ringwald HCI_OPCODE_HCI_RTK_CONFIGURE_SCO_ROUTING, "111111111" 270792ce4e6aSMatthias Ringwald }; 270892ce4e6aSMatthias Ringwald 270992ce4e6aSMatthias Ringwald /** 271092ce4e6aSMatthias Ringwald * @brief Read Card Information 271192ce4e6aSMatthias Ringwald */ 271292ce4e6aSMatthias Ringwald const hci_cmd_t hci_rtk_read_card_info = { 271392ce4e6aSMatthias Ringwald HCI_OPCODE_HCI_RTK_READ_CARD_INFO, "11111" 27141645c45cSMatthias Ringwald }; 27150e1c28d5SMatthias Ringwald 27160e1c28d5SMatthias Ringwald 27170e1c28d5SMatthias Ringwald /** 27180e1c28d5SMatthias Ringwald * @param voice_path 0x00 - transport, 0x01 - I2S/PCM 27190e1c28d5SMatthias Ringwald */ 27200e1c28d5SMatthias Ringwald const hci_cmd_t hci_nxp_set_sco_data_path = { 27210e1c28d5SMatthias Ringwald HCI_OPCODE_HCI_NXP_SET_SCO_DATA_PATH, "1" 27220e1c28d5SMatthias Ringwald }; 27230e1c28d5SMatthias Ringwald 27240e1c28d5SMatthias Ringwald /** 27250e1c28d5SMatthias 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 27260e1c28d5SMatthias Ringwald */ 27270e1c28d5SMatthias Ringwald const hci_cmd_t hci_nxp_write_pcm_i2s_settings = { 27280e1c28d5SMatthias Ringwald HCI_OPCODE_HCI_NXP_WRITE_PCM_I2S_SETTINGS, "1" 27290e1c28d5SMatthias Ringwald }; 27300e1c28d5SMatthias Ringwald 27310e1c28d5SMatthias Ringwald /** 27320e1c28d5SMatthias Ringwald * @param sync_settings_1 bits 7-2: reserved, bit 1: ISR, bit 0: ISR 27330e1c28d5SMatthias 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 27340e1c28d5SMatthias Ringwald */ 27350e1c28d5SMatthias Ringwald const hci_cmd_t hci_nxp_write_pcm_i2s_sync_settings = { 27360e1c28d5SMatthias Ringwald HCI_OPCODE_HCI_NXP_WRITE_PCM_I2S_SYNC_SETTINGS, "12" 27370e1c28d5SMatthias Ringwald }; 27380e1c28d5SMatthias Ringwald 27390e1c28d5SMatthias Ringwald /** 27400e1c28d5SMatthias 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 27410e1c28d5SMatthias Ringwald */ 27420e1c28d5SMatthias Ringwald const hci_cmd_t hci_nxp_write_pcm_link_settings = { 27430e1c28d5SMatthias Ringwald HCI_OPCODE_HCI_NXP_WRITE_PCM_LINK_SETTINGS, "2" 27440e1c28d5SMatthias Ringwald }; 27450e1c28d5SMatthias Ringwald 27460e1c28d5SMatthias Ringwald /** 27470e1c28d5SMatthias Ringwald * @param next_connection_wbs 0: CVSD, 1: mSBC 27480e1c28d5SMatthias Ringwald */ 27490e1c28d5SMatthias Ringwald const hci_cmd_t hci_nxp_set_wbs_connection = { 27500e1c28d5SMatthias Ringwald HCI_OPCODE_HCI_NXP_SET_WBS_CONNECTION, "1" 27510e1c28d5SMatthias Ringwald }; 27520e1c28d5SMatthias Ringwald 27530e1c28d5SMatthias Ringwald /** 27540e1c28d5SMatthias Ringwald * @param action 27550e1c28d5SMatthias Ringwald * @param operation mode 27560e1c28d5SMatthias Ringwald * @param sco_handle_1 27570e1c28d5SMatthias Ringwald * @param sco_handle_2 27580e1c28d5SMatthias Ringwald */ 27590e1c28d5SMatthias Ringwald const hci_cmd_t hci_nxp_host_pcm_i2s_audio_config = { 27600e1c28d5SMatthias Ringwald HCI_OPCODE_HCI_NXP_HOST_PCM_I2S_AUDIO_CONFIG, "11HH" 27610e1c28d5SMatthias Ringwald }; 27620e1c28d5SMatthias Ringwald 27630e1c28d5SMatthias Ringwald /** 27640e1c28d5SMatthias Ringwald * @param action 27650e1c28d5SMatthias Ringwald */ 27660e1c28d5SMatthias Ringwald const hci_cmd_t hci_nxp_host_pcm_i2s_control_enable = { 27670e1c28d5SMatthias Ringwald HCI_OPCODE_HCI_NXP_HOST_PCM_I2S_CONTROL_ENABLE, "1" 27680e1c28d5SMatthias Ringwald }; 2769