156042629SMatthias Ringwald /* 256042629SMatthias Ringwald * Copyright (C) 2014 BlueKitchen GmbH 356042629SMatthias Ringwald * 456042629SMatthias Ringwald * Redistribution and use in source and binary forms, with or without 556042629SMatthias Ringwald * modification, are permitted provided that the following conditions 656042629SMatthias Ringwald * are met: 756042629SMatthias Ringwald * 856042629SMatthias Ringwald * 1. Redistributions of source code must retain the above copyright 956042629SMatthias Ringwald * notice, this list of conditions and the following disclaimer. 1056042629SMatthias Ringwald * 2. Redistributions in binary form must reproduce the above copyright 1156042629SMatthias Ringwald * notice, this list of conditions and the following disclaimer in the 1256042629SMatthias Ringwald * documentation and/or other materials provided with the distribution. 1356042629SMatthias Ringwald * 3. Neither the name of the copyright holders nor the names of 1456042629SMatthias Ringwald * contributors may be used to endorse or promote products derived 1556042629SMatthias Ringwald * from this software without specific prior written permission. 1656042629SMatthias Ringwald * 4. Any redistribution, use, or modification is done solely for 1756042629SMatthias Ringwald * personal benefit and not for any commercial purpose or for 1856042629SMatthias Ringwald * monetary gain. 1956042629SMatthias Ringwald * 2056042629SMatthias Ringwald * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS 2156042629SMatthias Ringwald * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2256042629SMatthias Ringwald * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 232fca4dadSMilanka Ringwald * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BLUEKITCHEN 242fca4dadSMilanka Ringwald * GMBH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 2556042629SMatthias Ringwald * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 2656042629SMatthias Ringwald * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 2756042629SMatthias Ringwald * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 2856042629SMatthias Ringwald * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 2956042629SMatthias Ringwald * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 3056042629SMatthias Ringwald * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3156042629SMatthias Ringwald * SUCH DAMAGE. 3256042629SMatthias Ringwald * 3356042629SMatthias Ringwald * Please inquire about commercial licensing options at 3456042629SMatthias Ringwald * [email protected] 3556042629SMatthias Ringwald * 3656042629SMatthias Ringwald */ 3756042629SMatthias Ringwald 38e501bae0SMatthias Ringwald #define BTSTACK_FILE__ "hci_cmd.c" 39ab2c6ae4SMatthias Ringwald 4056042629SMatthias Ringwald /* 4156042629SMatthias Ringwald * hci_cmd.c 4256042629SMatthias Ringwald * 4356042629SMatthias Ringwald * Created by Matthias Ringwald on 7/23/09. 4456042629SMatthias Ringwald */ 4556042629SMatthias Ringwald 467907f069SMatthias Ringwald #include "btstack_config.h" 4756042629SMatthias Ringwald 4856042629SMatthias Ringwald #include "hci.h" 4956042629SMatthias Ringwald #include "hci_cmd.h" 50f9f2075cSMatthias Ringwald #include "btstack_debug.h" 5156042629SMatthias Ringwald 5256042629SMatthias Ringwald #include <string.h> 5356042629SMatthias Ringwald 54c56de76bSMilanka Ringwald 5559c9672fSMatthias Ringwald #ifdef ENABLE_SDP 5659c9672fSMatthias Ringwald #include "classic/sdp_util.h" 5759c9672fSMatthias Ringwald #endif 5859c9672fSMatthias Ringwald 5956042629SMatthias Ringwald // calculate combined ogf/ocf value 605efd5011SMatthias Ringwald #define OPCODE(ogf, ocf) ((ocf) | ((ogf) << 10)) 6156042629SMatthias Ringwald 627f67490cSMatthias Ringwald #define INVALID_VAR_LEN 0xffffu 63931b436eSMatthias Ringwald // hci_le_set_cig_parameters_test has 10 arrayed parameters 64931b436eSMatthias Ringwald #define MAX_NR_ARRAY_FIELDS 10 65931b436eSMatthias Ringwald #define INVALID_ARRAY_LEN 0xff 667f67490cSMatthias Ringwald 6756042629SMatthias Ringwald /** 6856042629SMatthias Ringwald * construct HCI Command based on template 6956042629SMatthias Ringwald * 7056042629SMatthias Ringwald * Format: 7156042629SMatthias Ringwald * 1,2,3,4: one to four byte value 7256042629SMatthias Ringwald * H: HCI connection handle 7356042629SMatthias Ringwald * B: Bluetooth Baseband Address (BD_ADDR) 7456042629SMatthias Ringwald * D: 8 byte data block 7556042629SMatthias Ringwald * E: Extended Inquiry Result 7656042629SMatthias Ringwald * N: Name up to 248 chars, \0 terminated 77237daac5SMatthias Ringwald * P: 16 byte data block. Pairing code, Simple Pairing Hash and Randomizer 7856042629SMatthias Ringwald * A: 31 bytes advertising data 7956042629SMatthias Ringwald * S: Service Record (Data Element Sequence) 8082180fcaSMatthias Ringwald * Q: 32 byte data block, e.g. for X and Y coordinates of P-256 public key 817f67490cSMatthias Ringwald * J: 8-bit length of variable size element 827f67490cSMatthias Ringwald * V: variable size element, len was given with param 'J' 83931b436eSMatthias Ringwald * a: number of elements in following arrayed parameters(s), specified as '[...]' 84931b436eSMatthias Ringwald * b: bit field indicating number of arrayed parameters(s), specified as '[...]' 85931b436eSMatthias Ringwald * [: start of arrayed param sequence 86931b436eSMatthias Ringwald * ]: end of arrayed param sequence 8756042629SMatthias Ringwald */ 8856042629SMatthias Ringwald uint16_t hci_cmd_create_from_template(uint8_t *hci_cmd_buffer, const hci_cmd_t *cmd, va_list argptr){ 8956042629SMatthias Ringwald 904ea43905SMatthias Ringwald hci_cmd_buffer[0] = cmd->opcode & 0xffu; 9156042629SMatthias Ringwald hci_cmd_buffer[1] = cmd->opcode >> 8; 92931b436eSMatthias Ringwald uint16_t pos = 3; 9356042629SMatthias Ringwald 9456042629SMatthias Ringwald const char *format = cmd->format; 9556042629SMatthias Ringwald uint16_t word; 9656042629SMatthias Ringwald uint32_t longword; 9756042629SMatthias Ringwald uint8_t * ptr; 987f67490cSMatthias Ringwald 99c8b094b6SMatthias Ringwald #ifdef ENABLE_BLE 100c8b094b6SMatthias Ringwald // variable size data 101c8b094b6SMatthias Ringwald uint16_t var_len = INVALID_VAR_LEN; 102c8b094b6SMatthias Ringwald // array processing 103931b436eSMatthias Ringwald const char * array_format = NULL; 104931b436eSMatthias Ringwald void * array_data[MAX_NR_ARRAY_FIELDS]; 105931b436eSMatthias Ringwald uint8_t array_num_elements = INVALID_ARRAY_LEN; 106931b436eSMatthias Ringwald uint8_t array_num_fields; 107931b436eSMatthias Ringwald uint8_t array_element_index; 108c8b094b6SMatthias Ringwald bool array_done; 109c8b094b6SMatthias Ringwald #endif 110931b436eSMatthias Ringwald 111931b436eSMatthias Ringwald bool done_format = false; 112931b436eSMatthias Ringwald while (!done_format) { 11356042629SMatthias Ringwald switch(*format) { 114931b436eSMatthias Ringwald case 0: 115931b436eSMatthias Ringwald done_format = true; 116931b436eSMatthias Ringwald break; 11756042629SMatthias Ringwald case '1': // 8 bit value 118c56de76bSMilanka Ringwald word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE 1194ea43905SMatthias Ringwald hci_cmd_buffer[pos++] = word & 0xffu; 120c56de76bSMilanka Ringwald break; 121c56de76bSMilanka Ringwald case '2': // 16 bit value 122c56de76bSMilanka Ringwald word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE 123c56de76bSMilanka Ringwald hci_cmd_buffer[pos++] = word & 0xffu; 12456042629SMatthias Ringwald hci_cmd_buffer[pos++] = word >> 8; 125c56de76bSMilanka Ringwald break; 126c56de76bSMilanka Ringwald case 'H': // hci_handle 127c56de76bSMilanka Ringwald word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE 128c56de76bSMilanka Ringwald hci_cmd_buffer[pos++] = word & 0xffu; 12956042629SMatthias Ringwald hci_cmd_buffer[pos++] = word >> 8; 13056042629SMatthias Ringwald break; 13156042629SMatthias Ringwald case '3': 132c56de76bSMilanka Ringwald longword = va_arg(argptr, uint32_t); // LCOV_EXCL_BR_LINE 13356042629SMatthias Ringwald hci_cmd_buffer[pos++] = longword; 13456042629SMatthias Ringwald hci_cmd_buffer[pos++] = longword >> 8; 13556042629SMatthias Ringwald hci_cmd_buffer[pos++] = longword >> 16; 136c56de76bSMilanka Ringwald break; 137c56de76bSMilanka Ringwald case '4': 138c56de76bSMilanka Ringwald longword = va_arg(argptr, uint32_t); // LCOV_EXCL_BR_LINE 139c56de76bSMilanka Ringwald hci_cmd_buffer[pos++] = longword; 140c56de76bSMilanka Ringwald hci_cmd_buffer[pos++] = longword >> 8; 141c56de76bSMilanka Ringwald hci_cmd_buffer[pos++] = longword >> 16; 14256042629SMatthias Ringwald hci_cmd_buffer[pos++] = longword >> 24; 14356042629SMatthias Ringwald break; 14456042629SMatthias Ringwald case 'B': // bt-addr 145c56de76bSMilanka Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 14656042629SMatthias Ringwald hci_cmd_buffer[pos++] = ptr[5]; 14756042629SMatthias Ringwald hci_cmd_buffer[pos++] = ptr[4]; 14856042629SMatthias Ringwald hci_cmd_buffer[pos++] = ptr[3]; 14956042629SMatthias Ringwald hci_cmd_buffer[pos++] = ptr[2]; 15056042629SMatthias Ringwald hci_cmd_buffer[pos++] = ptr[1]; 15156042629SMatthias Ringwald hci_cmd_buffer[pos++] = ptr[0]; 15256042629SMatthias Ringwald break; 15356042629SMatthias Ringwald case 'D': // 8 byte data block 154c56de76bSMilanka Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 1556535961aSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, 8); 15656042629SMatthias Ringwald pos += 8; 15756042629SMatthias Ringwald break; 15856042629SMatthias Ringwald case 'E': // Extended Inquiry Information 240 octets 159c56de76bSMilanka Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 1606535961aSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, 240); 16156042629SMatthias Ringwald pos += 240; 16256042629SMatthias Ringwald break; 16356042629SMatthias Ringwald case 'N': { // UTF-8 string, null terminated 164c56de76bSMilanka Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 16556042629SMatthias Ringwald uint16_t len = strlen((const char*) ptr); 1664ea43905SMatthias Ringwald if (len > 248u) { 16756042629SMatthias Ringwald len = 248; 16856042629SMatthias Ringwald } 1696535961aSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, len); 1704ea43905SMatthias Ringwald if (len < 248u) { 17156042629SMatthias Ringwald // fill remaining space with zeroes 1724ea43905SMatthias Ringwald memset(&hci_cmd_buffer[pos+len], 0u, 248u-len); 17356042629SMatthias Ringwald } 17456042629SMatthias Ringwald pos += 248; 17556042629SMatthias Ringwald break; 17656042629SMatthias Ringwald } 177bb75dd7dSMatthias Ringwald case 'P': // 16 byte PIN code or link key in little endian 178c56de76bSMilanka Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 1796535961aSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, 16); 18056042629SMatthias Ringwald pos += 16; 18156042629SMatthias Ringwald break; 182931b436eSMatthias Ringwald case 'K': // 16 byte OOB Data or Link Key in big endian 183931b436eSMatthias Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 184931b436eSMatthias Ringwald reverse_bytes(ptr, &hci_cmd_buffer[pos], 16); 185931b436eSMatthias Ringwald pos += 16; 186931b436eSMatthias Ringwald break; 187a9a4c409SMatthias Ringwald #ifdef ENABLE_BLE 18856042629SMatthias Ringwald case 'A': // 31 bytes advertising data 189c56de76bSMilanka Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 1906535961aSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, 31); 19156042629SMatthias Ringwald pos += 31; 19256042629SMatthias Ringwald break; 193931b436eSMatthias Ringwald case 'J': // 8 bit variable length indicator for 'V' 194931b436eSMatthias Ringwald word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE 195931b436eSMatthias Ringwald var_len = word & 0xffu; 196931b436eSMatthias Ringwald hci_cmd_buffer[pos++] = var_len; 197bb75dd7dSMatthias Ringwald break; 1987f67490cSMatthias Ringwald case 'V': 1997f67490cSMatthias Ringwald btstack_assert(var_len != INVALID_VAR_LEN); 2007f67490cSMatthias Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 2017f67490cSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, var_len); 2027f67490cSMatthias Ringwald pos += var_len; 2037f67490cSMatthias Ringwald var_len = INVALID_VAR_LEN; 2047f67490cSMatthias Ringwald break; 205931b436eSMatthias Ringwald case 'a': 206931b436eSMatthias Ringwald btstack_assert(array_num_elements == INVALID_ARRAY_LEN); 207931b436eSMatthias Ringwald word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE 208931b436eSMatthias Ringwald hci_cmd_buffer[pos++] = word & 0xff; 209931b436eSMatthias Ringwald array_num_elements = word & 0xffu; 210931b436eSMatthias Ringwald break; 211931b436eSMatthias Ringwald case 'b': 212931b436eSMatthias Ringwald btstack_assert(array_num_elements == INVALID_ARRAY_LEN); 213931b436eSMatthias Ringwald word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE 214931b436eSMatthias Ringwald hci_cmd_buffer[pos++] = word & 0xff; 215931b436eSMatthias Ringwald array_num_elements = count_set_bits_uint32(word & 0xffu); 216931b436eSMatthias Ringwald break; 217931b436eSMatthias Ringwald case '[': 218931b436eSMatthias Ringwald btstack_assert(array_num_elements != INVALID_ARRAY_LEN); 219931b436eSMatthias Ringwald // process array 220931b436eSMatthias Ringwald format++; 221931b436eSMatthias Ringwald array_format = format; 222931b436eSMatthias Ringwald array_num_fields = 0; 223c8b094b6SMatthias Ringwald array_done = false; 224c8b094b6SMatthias Ringwald while (!array_done){ 225931b436eSMatthias Ringwald switch (*format){ 226931b436eSMatthias Ringwald case 0: 227c8b094b6SMatthias Ringwald array_done = true; 228931b436eSMatthias Ringwald done_format = true; 229931b436eSMatthias Ringwald break; 230931b436eSMatthias Ringwald case ']': 231c8b094b6SMatthias Ringwald array_done = true; 232931b436eSMatthias Ringwald break; 233931b436eSMatthias Ringwald case '1': 234931b436eSMatthias Ringwald case '2': 235931b436eSMatthias Ringwald // all arrayed parameters are passed in as arrays 236931b436eSMatthias Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 237931b436eSMatthias Ringwald array_data[array_num_fields++] = ptr; 238931b436eSMatthias Ringwald format++; 239931b436eSMatthias Ringwald break; 240931b436eSMatthias Ringwald default: 241931b436eSMatthias Ringwald btstack_unreachable(); 242931b436eSMatthias Ringwald break; 243931b436eSMatthias Ringwald } 244931b436eSMatthias Ringwald } 245931b436eSMatthias Ringwald for (array_element_index = 0; array_element_index < array_num_elements ; array_element_index++){ 246931b436eSMatthias Ringwald uint8_t array_field_index; 247931b436eSMatthias Ringwald for (array_field_index = 0; array_field_index < array_num_fields ; array_field_index++){ 248931b436eSMatthias Ringwald switch (array_format[array_field_index]){ 249931b436eSMatthias Ringwald case '1': 250931b436eSMatthias Ringwald hci_cmd_buffer[pos++] = ((const uint8_t *) array_data[array_field_index])[array_element_index]; 251931b436eSMatthias Ringwald break; 252931b436eSMatthias Ringwald case '2': 253931b436eSMatthias Ringwald little_endian_store_16(hci_cmd_buffer, pos, ((const uint16_t *) array_data[array_field_index])[array_element_index]); 254931b436eSMatthias Ringwald pos += 2; 255931b436eSMatthias Ringwald break; 256931b436eSMatthias Ringwald default: 257931b436eSMatthias Ringwald btstack_unreachable(); 258931b436eSMatthias Ringwald break; 259931b436eSMatthias Ringwald } 260931b436eSMatthias Ringwald } 261931b436eSMatthias Ringwald } 262931b436eSMatthias Ringwald break; 263931b436eSMatthias Ringwald #endif 264931b436eSMatthias Ringwald #ifdef ENABLE_LE_SECURE_CONNECTIONS 265931b436eSMatthias Ringwald case 'Q': 266931b436eSMatthias Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 267931b436eSMatthias Ringwald reverse_bytes(ptr, &hci_cmd_buffer[pos], 32); 268931b436eSMatthias Ringwald pos += 32; 269931b436eSMatthias Ringwald break; 270931b436eSMatthias Ringwald #endif 271931b436eSMatthias Ringwald #ifdef ENABLE_SDP 272931b436eSMatthias Ringwald // used by daemon 273931b436eSMatthias Ringwald case 'S': { // Service Record (Data Element Sequence) 274931b436eSMatthias Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 275931b436eSMatthias Ringwald uint16_t len = de_get_len(ptr); 276931b436eSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, len); 277931b436eSMatthias Ringwald pos += len; 278931b436eSMatthias Ringwald break; 279931b436eSMatthias Ringwald } 280931b436eSMatthias Ringwald #endif 28156042629SMatthias Ringwald default: 2827f67490cSMatthias Ringwald btstack_unreachable(); 28356042629SMatthias Ringwald break; 28456042629SMatthias Ringwald } 28556042629SMatthias Ringwald format++; 28656042629SMatthias Ringwald }; 28756042629SMatthias Ringwald hci_cmd_buffer[2] = pos - 3; 28856042629SMatthias Ringwald return pos; 28956042629SMatthias Ringwald } 29056042629SMatthias Ringwald 29156042629SMatthias Ringwald /** 29256042629SMatthias Ringwald * Link Control Commands 29356042629SMatthias Ringwald */ 29456042629SMatthias Ringwald 29556042629SMatthias Ringwald /** 29656042629SMatthias Ringwald * @param lap 29756042629SMatthias Ringwald * @param inquiry_length 29856042629SMatthias Ringwald * @param num_responses 29956042629SMatthias Ringwald */ 30056042629SMatthias Ringwald const hci_cmd_t hci_inquiry = { 301ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_INQUIRY, "311" 30256042629SMatthias Ringwald }; 30356042629SMatthias Ringwald 30456042629SMatthias Ringwald /** 30556042629SMatthias Ringwald */ 30656042629SMatthias Ringwald const hci_cmd_t hci_inquiry_cancel = { 307ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_INQUIRY_CANCEL, "" 30856042629SMatthias Ringwald }; 30956042629SMatthias Ringwald 31056042629SMatthias Ringwald /** 3116fe44815SRicardo Quesada * @param max_period_length 3126fe44815SRicardo Quesada * @param min_period_length 3136fe44815SRicardo Quesada * @param lap 3146fe44815SRicardo Quesada * @param inquiry_length 3156fe44815SRicardo Quesada * @param num_responses 3166fe44815SRicardo Quesada */ 3176fe44815SRicardo Quesada const hci_cmd_t hci_periodic_inquiry_mode = { 3186fe44815SRicardo Quesada HCI_OPCODE_HCI_PERIODIC_INQUIRY_MODE, "22311" 3196fe44815SRicardo Quesada }; 3206fe44815SRicardo Quesada 3216fe44815SRicardo Quesada /** 3226fe44815SRicardo Quesada */ 3236fe44815SRicardo Quesada const hci_cmd_t hci_exit_periodic_inquiry_mode = { 3246fe44815SRicardo Quesada HCI_OPCODE_HCI_EXIT_PERIODIC_INQUIRY_MODE, "" 3256fe44815SRicardo Quesada }; 3266fe44815SRicardo Quesada 3276fe44815SRicardo Quesada /** 32856042629SMatthias Ringwald * @param bd_addr 32956042629SMatthias Ringwald * @param packet_type 33056042629SMatthias Ringwald * @param page_scan_repetition_mode 33156042629SMatthias Ringwald * @param reserved 33256042629SMatthias Ringwald * @param clock_offset 33356042629SMatthias Ringwald * @param allow_role_switch 33456042629SMatthias Ringwald */ 33556042629SMatthias Ringwald const hci_cmd_t hci_create_connection = { 336ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_CREATE_CONNECTION, "B21121" 33756042629SMatthias Ringwald }; 33856042629SMatthias Ringwald 33956042629SMatthias Ringwald /** 34056042629SMatthias Ringwald * @param handle 34156042629SMatthias Ringwald * @param reason (0x05, 0x13-0x15, 0x1a, 0x29, see Errors Codes in BT Spec Part D) 34256042629SMatthias Ringwald */ 34356042629SMatthias Ringwald const hci_cmd_t hci_disconnect = { 344ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_DISCONNECT, "H1" 34556042629SMatthias Ringwald }; 34656042629SMatthias Ringwald 34756042629SMatthias Ringwald /** 34856042629SMatthias Ringwald * @param bd_addr 34956042629SMatthias Ringwald */ 35056042629SMatthias Ringwald const hci_cmd_t hci_create_connection_cancel = { 351ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_CREATE_CONNECTION_CANCEL, "B" 35256042629SMatthias Ringwald }; 35356042629SMatthias Ringwald 35456042629SMatthias Ringwald /** 35556042629SMatthias Ringwald * @param bd_addr 35656042629SMatthias Ringwald * @param role (become master, stay slave) 35756042629SMatthias Ringwald */ 35856042629SMatthias Ringwald const hci_cmd_t hci_accept_connection_request = { 359ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_ACCEPT_CONNECTION_REQUEST, "B1" 36056042629SMatthias Ringwald }; 36156042629SMatthias Ringwald 36256042629SMatthias Ringwald /** 36356042629SMatthias Ringwald * @param bd_addr 36456042629SMatthias Ringwald * @param reason (e.g. CONNECTION REJECTED DUE TO LIMITED RESOURCES (0x0d)) 36556042629SMatthias Ringwald */ 36656042629SMatthias Ringwald const hci_cmd_t hci_reject_connection_request = { 367ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_REJECT_CONNECTION_REQUEST, "B1" 36856042629SMatthias Ringwald }; 36956042629SMatthias Ringwald 37056042629SMatthias Ringwald /** 37156042629SMatthias Ringwald * @param bd_addr 37256042629SMatthias Ringwald * @param link_key 37356042629SMatthias Ringwald */ 37456042629SMatthias Ringwald const hci_cmd_t hci_link_key_request_reply = { 375ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LINK_KEY_REQUEST_REPLY, "BP" 37656042629SMatthias Ringwald }; 37756042629SMatthias Ringwald 37856042629SMatthias Ringwald /** 37956042629SMatthias Ringwald * @param bd_addr 38056042629SMatthias Ringwald */ 38156042629SMatthias Ringwald const hci_cmd_t hci_link_key_request_negative_reply = { 382ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LINK_KEY_REQUEST_NEGATIVE_REPLY, "B" 38356042629SMatthias Ringwald }; 38456042629SMatthias Ringwald 38556042629SMatthias Ringwald /** 38656042629SMatthias Ringwald * @param bd_addr 38756042629SMatthias Ringwald * @param pin_length 38856042629SMatthias Ringwald * @param pin (c-string) 38956042629SMatthias Ringwald */ 39056042629SMatthias Ringwald const hci_cmd_t hci_pin_code_request_reply = { 391ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_PIN_CODE_REQUEST_REPLY, "B1P" 39256042629SMatthias Ringwald }; 39356042629SMatthias Ringwald 39456042629SMatthias Ringwald /** 39556042629SMatthias Ringwald * @param bd_addr 39656042629SMatthias Ringwald */ 39756042629SMatthias Ringwald const hci_cmd_t hci_pin_code_request_negative_reply = { 398ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_PIN_CODE_REQUEST_NEGATIVE_REPLY, "B" 39956042629SMatthias Ringwald }; 40056042629SMatthias Ringwald 40156042629SMatthias Ringwald /** 40256042629SMatthias Ringwald * @param handle 40356042629SMatthias Ringwald * @param packet_type 40456042629SMatthias Ringwald */ 40556042629SMatthias Ringwald const hci_cmd_t hci_change_connection_packet_type = { 406ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_CHANGE_CONNECTION_PACKET_TYPE, "H2" 40756042629SMatthias Ringwald }; 40856042629SMatthias Ringwald 40956042629SMatthias Ringwald /** 41056042629SMatthias Ringwald * @param handle 41156042629SMatthias Ringwald */ 41256042629SMatthias Ringwald const hci_cmd_t hci_authentication_requested = { 413ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_AUTHENTICATION_REQUESTED, "H" 41456042629SMatthias Ringwald }; 41556042629SMatthias Ringwald 41656042629SMatthias Ringwald /** 41756042629SMatthias Ringwald * @param handle 41856042629SMatthias Ringwald * @param encryption_enable 41956042629SMatthias Ringwald */ 42056042629SMatthias Ringwald const hci_cmd_t hci_set_connection_encryption = { 421ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_SET_CONNECTION_ENCRYPTION, "H1" 42256042629SMatthias Ringwald }; 42356042629SMatthias Ringwald 42456042629SMatthias Ringwald /** 42556042629SMatthias Ringwald * @param handle 42656042629SMatthias Ringwald */ 42756042629SMatthias Ringwald const hci_cmd_t hci_change_connection_link_key = { 428ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_CHANGE_CONNECTION_LINK_KEY, "H" 42956042629SMatthias Ringwald }; 43056042629SMatthias Ringwald 43156042629SMatthias Ringwald /** 43256042629SMatthias Ringwald * @param bd_addr 43356042629SMatthias Ringwald * @param page_scan_repetition_mode 43456042629SMatthias Ringwald * @param reserved 43556042629SMatthias Ringwald * @param clock_offset 43656042629SMatthias Ringwald */ 43756042629SMatthias Ringwald const hci_cmd_t hci_remote_name_request = { 438ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_REMOTE_NAME_REQUEST, "B112" 43956042629SMatthias Ringwald }; 44056042629SMatthias Ringwald 44156042629SMatthias Ringwald 44256042629SMatthias Ringwald /** 44356042629SMatthias Ringwald * @param bd_addr 44456042629SMatthias Ringwald */ 44556042629SMatthias Ringwald const hci_cmd_t hci_remote_name_request_cancel = { 446ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_REMOTE_NAME_REQUEST_CANCEL, "B" 44756042629SMatthias Ringwald }; 44856042629SMatthias Ringwald 44956042629SMatthias Ringwald /** 45056042629SMatthias Ringwald * @param handle 45156042629SMatthias Ringwald */ 45256042629SMatthias Ringwald const hci_cmd_t hci_read_remote_supported_features_command = { 453ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_REMOTE_SUPPORTED_FEATURES_COMMAND, "H" 4548b22c04dSMatthias Ringwald }; 4558b22c04dSMatthias Ringwald 4568b22c04dSMatthias Ringwald /** 457d5057706SMatthias Ringwald * @param handle 458d5057706SMatthias Ringwald */ 459d5057706SMatthias Ringwald const hci_cmd_t hci_read_remote_extended_features_command = { 460ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_REMOTE_EXTENDED_FEATURES_COMMAND, "H1" 461d5057706SMatthias Ringwald }; 462d5057706SMatthias Ringwald 463d5057706SMatthias Ringwald /** 4648b22c04dSMatthias Ringwald * @param handle 4658b22c04dSMatthias Ringwald */ 4668b22c04dSMatthias Ringwald const hci_cmd_t hci_read_remote_version_information = { 467ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_REMOTE_VERSION_INFORMATION, "H" 46856042629SMatthias Ringwald }; 46956042629SMatthias Ringwald 47056042629SMatthias Ringwald /** 47156042629SMatthias Ringwald * @param handle 47256042629SMatthias Ringwald * @param transmit_bandwidth 8000(64kbps) 47356042629SMatthias Ringwald * @param receive_bandwidth 8000(64kbps) 47456042629SMatthias Ringwald * @param max_latency >= 7ms for eSCO, 0xFFFF do not care 47556042629SMatthias Ringwald * @param voice_settings e.g. CVSD, Input Coding: Linear, Input Data Format: 2’s complement, data 16bit: 00011000000 == 0x60 47656042629SMatthias Ringwald * @param retransmission_effort e.g. 0xFF do not care 47756042629SMatthias Ringwald * @param packet_type at least EV3 for eSCO 47856042629SMatthias Ringwald */ 47956042629SMatthias Ringwald const hci_cmd_t hci_setup_synchronous_connection = { 480ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_SETUP_SYNCHRONOUS_CONNECTION, "H442212" 48156042629SMatthias Ringwald }; 48256042629SMatthias Ringwald 48356042629SMatthias Ringwald /** 48456042629SMatthias Ringwald * @param bd_addr 48556042629SMatthias Ringwald * @param transmit_bandwidth 48656042629SMatthias Ringwald * @param receive_bandwidth 48756042629SMatthias Ringwald * @param max_latency 48856042629SMatthias Ringwald * @param voice_settings 48956042629SMatthias Ringwald * @param retransmission_effort 49056042629SMatthias Ringwald * @param packet_type 49156042629SMatthias Ringwald */ 49256042629SMatthias Ringwald const hci_cmd_t hci_accept_synchronous_connection = { 493ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_ACCEPT_SYNCHRONOUS_CONNECTION, "B442212" 49456042629SMatthias Ringwald }; 49556042629SMatthias Ringwald 49656042629SMatthias Ringwald /** 49756042629SMatthias Ringwald * @param bd_addr 49856042629SMatthias Ringwald * @param IO_capability 49956042629SMatthias Ringwald * @param OOB_data_present 50056042629SMatthias Ringwald * @param authentication_requirements 50156042629SMatthias Ringwald */ 50256042629SMatthias Ringwald const hci_cmd_t hci_io_capability_request_reply = { 503ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_IO_CAPABILITY_REQUEST_REPLY, "B111" 50456042629SMatthias Ringwald }; 50556042629SMatthias Ringwald 50656042629SMatthias Ringwald /** 50756042629SMatthias Ringwald * @param bd_addr 50856042629SMatthias Ringwald */ 50956042629SMatthias Ringwald const hci_cmd_t hci_user_confirmation_request_reply = { 510ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_USER_CONFIRMATION_REQUEST_REPLY, "B" 51156042629SMatthias Ringwald }; 51256042629SMatthias Ringwald 51356042629SMatthias Ringwald /** 51456042629SMatthias Ringwald * @param bd_addr 51556042629SMatthias Ringwald */ 51656042629SMatthias Ringwald const hci_cmd_t hci_user_confirmation_request_negative_reply = { 517ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_USER_CONFIRMATION_REQUEST_NEGATIVE_REPLY, "B" 51856042629SMatthias Ringwald }; 51956042629SMatthias Ringwald 52056042629SMatthias Ringwald /** 52156042629SMatthias Ringwald * @param bd_addr 52256042629SMatthias Ringwald * @param numeric_value 52356042629SMatthias Ringwald */ 52456042629SMatthias Ringwald const hci_cmd_t hci_user_passkey_request_reply = { 525ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_USER_PASSKEY_REQUEST_REPLY, "B4" 52656042629SMatthias Ringwald }; 52756042629SMatthias Ringwald 52856042629SMatthias Ringwald /** 52956042629SMatthias Ringwald * @param bd_addr 53056042629SMatthias Ringwald */ 53156042629SMatthias Ringwald const hci_cmd_t hci_user_passkey_request_negative_reply = { 532ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_USER_PASSKEY_REQUEST_NEGATIVE_REPLY, "B" 53356042629SMatthias Ringwald }; 53456042629SMatthias Ringwald 53556042629SMatthias Ringwald /** 53656042629SMatthias Ringwald * @param bd_addr 537237daac5SMatthias Ringwald * @param c Simple Pairing Hash C 538237daac5SMatthias Ringwald * @param r Simple Pairing Randomizer R 539237daac5SMatthias Ringwald */ 540237daac5SMatthias Ringwald const hci_cmd_t hci_remote_oob_data_request_reply = { 541bb75dd7dSMatthias Ringwald HCI_OPCODE_HCI_REMOTE_OOB_DATA_REQUEST_REPLY, "BKK" 542237daac5SMatthias Ringwald }; 543237daac5SMatthias Ringwald 544237daac5SMatthias Ringwald /** 545237daac5SMatthias Ringwald * @param bd_addr 54656042629SMatthias Ringwald */ 54756042629SMatthias Ringwald const hci_cmd_t hci_remote_oob_data_request_negative_reply = { 548ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_REMOTE_OOB_DATA_REQUEST_NEGATIVE_REPLY, "B" 54956042629SMatthias Ringwald }; 55056042629SMatthias Ringwald 55156042629SMatthias Ringwald /** 55256042629SMatthias Ringwald * @param bd_addr 55356042629SMatthias Ringwald * @param reason (Part D, Error codes) 55456042629SMatthias Ringwald */ 55556042629SMatthias Ringwald const hci_cmd_t hci_io_capability_request_negative_reply = { 556ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_IO_CAPABILITY_REQUEST_NEGATIVE_REPLY, "B1" 55756042629SMatthias Ringwald }; 55856042629SMatthias Ringwald 55956042629SMatthias Ringwald /** 56056042629SMatthias Ringwald * @param handle 56156042629SMatthias Ringwald * @param transmit_bandwidth 56256042629SMatthias Ringwald * @param receive_bandwidth 56356042629SMatthias Ringwald * @param transmit_coding_format_type 56456042629SMatthias Ringwald * @param transmit_coding_format_company 56556042629SMatthias Ringwald * @param transmit_coding_format_codec 56656042629SMatthias Ringwald * @param receive_coding_format_type 56756042629SMatthias Ringwald * @param receive_coding_format_company 56856042629SMatthias Ringwald * @param receive_coding_format_codec 56956042629SMatthias Ringwald * @param transmit_coding_frame_size 57056042629SMatthias Ringwald * @param receive_coding_frame_size 57156042629SMatthias Ringwald * @param input_bandwidth 57256042629SMatthias Ringwald * @param output_bandwidth 57356042629SMatthias Ringwald * @param input_coding_format_type 57456042629SMatthias Ringwald * @param input_coding_format_company 57556042629SMatthias Ringwald * @param input_coding_format_codec 57656042629SMatthias Ringwald * @param output_coding_format_type 57756042629SMatthias Ringwald * @param output_coding_format_company 57856042629SMatthias Ringwald * @param output_coding_format_codec 57956042629SMatthias Ringwald * @param input_coded_data_size 58056042629SMatthias Ringwald * @param outupt_coded_data_size 58156042629SMatthias Ringwald * @param input_pcm_data_format 58256042629SMatthias Ringwald * @param output_pcm_data_format 58356042629SMatthias Ringwald * @param input_pcm_sample_payload_msb_position 58456042629SMatthias Ringwald * @param output_pcm_sample_payload_msb_position 58556042629SMatthias Ringwald * @param input_data_path 58656042629SMatthias Ringwald * @param output_data_path 58756042629SMatthias Ringwald * @param input_transport_unit_size 58856042629SMatthias Ringwald * @param output_transport_unit_size 58956042629SMatthias Ringwald * @param max_latency 59056042629SMatthias Ringwald * @param packet_type 59156042629SMatthias Ringwald * @param retransmission_effort 59256042629SMatthias Ringwald */ 59356042629SMatthias Ringwald const hci_cmd_t hci_enhanced_setup_synchronous_connection = { 594ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_ENHANCED_SETUP_SYNCHRONOUS_CONNECTION, "H4412212222441221222211111111221" 59556042629SMatthias Ringwald }; 59656042629SMatthias Ringwald 59756042629SMatthias Ringwald /** 59856042629SMatthias Ringwald * @param bd_addr 59956042629SMatthias Ringwald * @param transmit_bandwidth 60056042629SMatthias Ringwald * @param receive_bandwidth 60156042629SMatthias Ringwald * @param transmit_coding_format_type 60256042629SMatthias Ringwald * @param transmit_coding_format_company 60356042629SMatthias Ringwald * @param transmit_coding_format_codec 60456042629SMatthias Ringwald * @param receive_coding_format_type 60556042629SMatthias Ringwald * @param receive_coding_format_company 60656042629SMatthias Ringwald * @param receive_coding_format_codec 60756042629SMatthias Ringwald * @param transmit_coding_frame_size 60856042629SMatthias Ringwald * @param receive_coding_frame_size 60956042629SMatthias Ringwald * @param input_bandwidth 61056042629SMatthias Ringwald * @param output_bandwidth 61156042629SMatthias Ringwald * @param input_coding_format_type 61256042629SMatthias Ringwald * @param input_coding_format_company 61356042629SMatthias Ringwald * @param input_coding_format_codec 61456042629SMatthias Ringwald * @param output_coding_format_type 61556042629SMatthias Ringwald * @param output_coding_format_company 61656042629SMatthias Ringwald * @param output_coding_format_codec 61756042629SMatthias Ringwald * @param input_coded_data_size 61856042629SMatthias Ringwald * @param outupt_coded_data_size 61956042629SMatthias Ringwald * @param input_pcm_data_format 62056042629SMatthias Ringwald * @param output_pcm_data_format 62156042629SMatthias Ringwald * @param input_pcm_sample_payload_msb_position 62256042629SMatthias Ringwald * @param output_pcm_sample_payload_msb_position 62356042629SMatthias Ringwald * @param input_data_path 62456042629SMatthias Ringwald * @param output_data_path 62556042629SMatthias Ringwald * @param input_transport_unit_size 62656042629SMatthias Ringwald * @param output_transport_unit_size 62756042629SMatthias Ringwald * @param max_latency 62856042629SMatthias Ringwald * @param packet_type 62956042629SMatthias Ringwald * @param retransmission_effort 63056042629SMatthias Ringwald */ 63156042629SMatthias Ringwald const hci_cmd_t hci_enhanced_accept_synchronous_connection = { 632ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_ENHANCED_ACCEPT_SYNCHRONOUS_CONNECTION, "B4412212222441221222211111111221" 63356042629SMatthias Ringwald }; 63456042629SMatthias Ringwald 63556042629SMatthias Ringwald /** 636bb75dd7dSMatthias Ringwald * @param bd_addr 637bb75dd7dSMatthias Ringwald * @param c_192 Simple Pairing Hash C derived from P-192 public key 638bb75dd7dSMatthias Ringwald * @param r_192 Simple Pairing Randomizer derived from P-192 public key 639bb75dd7dSMatthias Ringwald * @param c_256 Simple Pairing Hash C derived from P-256 public key 640bb75dd7dSMatthias Ringwald * @param r_256 Simple Pairing Randomizer derived from P-256 public key 641bb75dd7dSMatthias Ringwald */ 642bb75dd7dSMatthias Ringwald const hci_cmd_t hci_remote_oob_extended_data_request_reply = { 643bb75dd7dSMatthias Ringwald HCI_OPCODE_HCI_REMOTE_OOB_EXTENDED_DATA_REQUEST_REPLY, "BKKKK" 644bb75dd7dSMatthias Ringwald }; 645bb75dd7dSMatthias Ringwald 646bb75dd7dSMatthias Ringwald /** 64756042629SMatthias Ringwald * Link Policy Commands 64856042629SMatthias Ringwald */ 64956042629SMatthias Ringwald 65056042629SMatthias Ringwald /** 65156042629SMatthias Ringwald * @param handle 65229ae3d7dSMatthias Ringwald * @param hold_mode_max_interval * 0.625 ms, range: 0x0002..0xFFFE; only even values are valid. 65329ae3d7dSMatthias Ringwald * @param hold_mode_min_interval * 0.625 ms, range: 0x0002..0xFFFE; only even values are valid. 65429ae3d7dSMatthias Ringwald */ 65529ae3d7dSMatthias Ringwald const hci_cmd_t hci_hold_mode = { 65629ae3d7dSMatthias Ringwald HCI_OPCODE_HCI_HOLD_MODE, "H22" 65729ae3d7dSMatthias Ringwald }; 65829ae3d7dSMatthias Ringwald 65929ae3d7dSMatthias Ringwald /** 66029ae3d7dSMatthias Ringwald * @param handle 66156042629SMatthias Ringwald * @param sniff_max_interval 66256042629SMatthias Ringwald * @param sniff_min_interval 66356042629SMatthias Ringwald * @param sniff_attempt 66456042629SMatthias Ringwald * @param sniff_timeout 66556042629SMatthias Ringwald */ 66656042629SMatthias Ringwald const hci_cmd_t hci_sniff_mode = { 667ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_SNIFF_MODE, "H2222" 66856042629SMatthias Ringwald }; 66956042629SMatthias Ringwald 67056042629SMatthias Ringwald /** 67156042629SMatthias Ringwald * @param handle 6727cd21895SMatthias Ringwald */ 6737cd21895SMatthias Ringwald const hci_cmd_t hci_exit_sniff_mode = { 674ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_EXIT_SNIFF_MODE, "H" 6757cd21895SMatthias Ringwald }; 6767cd21895SMatthias Ringwald 6777cd21895SMatthias Ringwald /** 6786f351188SMatthias Ringwald * @note Removed in Bluetooth Core v5.0 6796f351188SMatthias Ringwald * @param handle 6806f351188SMatthias Ringwald * @param beacon_max_interval * 0.625 ms, range: 0x000E..0xFFFE; only even values are valid. 6816f351188SMatthias Ringwald * @param beacon_max_interval * 0.625 ms, range: 0x000E..0xFFFE; only even values are valid. 6826f351188SMatthias Ringwald */ 6836f351188SMatthias Ringwald const hci_cmd_t hci_park_state = { 6846f351188SMatthias Ringwald HCI_OPCODE_HCI_PARK_STATE, "H22" 6856f351188SMatthias Ringwald }; 6866f351188SMatthias Ringwald 6876f351188SMatthias Ringwald /** 6886f351188SMatthias Ringwald * @note Removed in Bluetooth Core v5.0 6896f351188SMatthias Ringwald * @param handle 6906f351188SMatthias Ringwald */ 6916f351188SMatthias Ringwald const hci_cmd_t hci_exit_park_state = { 6926f351188SMatthias Ringwald HCI_OPCODE_HCI_EXIT_PARK_STATE, "H" 6936f351188SMatthias Ringwald }; 6946f351188SMatthias Ringwald 6956f351188SMatthias Ringwald /** 6967cd21895SMatthias Ringwald * @param handle 69756042629SMatthias Ringwald * @param flags 69856042629SMatthias Ringwald * @param service_type 69956042629SMatthias Ringwald * @param token_rate (bytes/s) 70056042629SMatthias Ringwald * @param peak_bandwith (bytes/s) 70156042629SMatthias Ringwald * @param latency (us) 70256042629SMatthias Ringwald * @param delay_variation (us) 70356042629SMatthias Ringwald */ 70456042629SMatthias Ringwald const hci_cmd_t hci_qos_setup = { 705ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_QOS_SETUP, "H114444" 70656042629SMatthias Ringwald }; 70756042629SMatthias Ringwald 70856042629SMatthias Ringwald /** 70956042629SMatthias Ringwald * @param handle 71056042629SMatthias Ringwald */ 71156042629SMatthias Ringwald const hci_cmd_t hci_role_discovery = { 712ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_ROLE_DISCOVERY, "H" 71356042629SMatthias Ringwald }; 71456042629SMatthias Ringwald 71556042629SMatthias Ringwald /** 71656042629SMatthias Ringwald * @param bd_addr 71756042629SMatthias Ringwald * @param role (0=master,1=slave) 71856042629SMatthias Ringwald */ 71956042629SMatthias Ringwald const hci_cmd_t hci_switch_role_command= { 720ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_SWITCH_ROLE_COMMAND, "B1" 72156042629SMatthias Ringwald }; 72256042629SMatthias Ringwald 72356042629SMatthias Ringwald /** 72456042629SMatthias Ringwald * @param handle 72556042629SMatthias Ringwald */ 72656042629SMatthias Ringwald const hci_cmd_t hci_read_link_policy_settings = { 727ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LINK_POLICY_SETTINGS, "H" 72856042629SMatthias Ringwald }; 72956042629SMatthias Ringwald 73056042629SMatthias Ringwald /** 73156042629SMatthias Ringwald * @param handle 73256042629SMatthias Ringwald * @param settings 73356042629SMatthias Ringwald */ 73456042629SMatthias Ringwald const hci_cmd_t hci_write_link_policy_settings = { 735ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_LINK_POLICY_SETTINGS, "H2" 73656042629SMatthias Ringwald }; 73756042629SMatthias Ringwald 738c4c88f1bSJakob Krantz /** 73932e2f27fSMatthias Ringwald * @param handle 74032e2f27fSMatthias Ringwald * @param max_latency 74132e2f27fSMatthias Ringwald * @param min_remote_timeout 74232e2f27fSMatthias Ringwald * @param min_local_timeout 74332e2f27fSMatthias Ringwald */ 74432e2f27fSMatthias Ringwald const hci_cmd_t hci_sniff_subrating = { 74550fe3a99SMilanka Ringwald HCI_OPCODE_HCI_SNIFF_SUBRATING, "H222" 74632e2f27fSMatthias Ringwald }; 74732e2f27fSMatthias Ringwald 74832e2f27fSMatthias Ringwald /** 749c4c88f1bSJakob Krantz * @param policy 750c4c88f1bSJakob Krantz */ 75153138e7aSMatthias Ringwald const hci_cmd_t hci_write_default_link_policy_setting = { 752ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_DEFAULT_LINK_POLICY_SETTING, "2" 753c4c88f1bSJakob Krantz }; 754c4c88f1bSJakob Krantz 755733a7793SMatthias Ringwald /** 756733a7793SMatthias Ringwald * @param handle 757733a7793SMatthias Ringwald * @param unused 758733a7793SMatthias Ringwald * @param flow_direction 759733a7793SMatthias Ringwald * @param service_type 760733a7793SMatthias Ringwald * @param token_rate 761733a7793SMatthias Ringwald * @param token_bucket_size 762733a7793SMatthias Ringwald * @param peak_bandwidth 763733a7793SMatthias Ringwald * @param access_latency 764733a7793SMatthias Ringwald */ 765733a7793SMatthias Ringwald const hci_cmd_t hci_flow_specification = { 766733a7793SMatthias Ringwald HCI_OPCODE_HCI_FLOW_SPECIFICATION, "H1114444" 767733a7793SMatthias Ringwald }; 768733a7793SMatthias Ringwald 76956042629SMatthias Ringwald 77056042629SMatthias Ringwald /** 77156042629SMatthias Ringwald * Controller & Baseband Commands 77256042629SMatthias Ringwald */ 77356042629SMatthias Ringwald 7749119d792SMilanka Ringwald 77556042629SMatthias Ringwald /** 77656042629SMatthias Ringwald * @param event_mask_lover_octets 77756042629SMatthias Ringwald * @param event_mask_higher_octets 77856042629SMatthias Ringwald */ 77956042629SMatthias Ringwald const hci_cmd_t hci_set_event_mask = { 780ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_SET_EVENT_MASK, "44" 78156042629SMatthias Ringwald }; 78256042629SMatthias Ringwald 78356042629SMatthias Ringwald /** 78456042629SMatthias Ringwald */ 78556042629SMatthias Ringwald const hci_cmd_t hci_reset = { 786ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_RESET, "" 78756042629SMatthias Ringwald }; 78856042629SMatthias Ringwald 78956042629SMatthias Ringwald /** 790e49d496aSMatthias Ringwald * @param handle 791e49d496aSMatthias Ringwald */ 792e49d496aSMatthias Ringwald const hci_cmd_t hci_flush = { 793ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_FLUSH, "H" 7949af39d9fSMatthias Ringwald }; 7959af39d9fSMatthias Ringwald 7969af39d9fSMatthias Ringwald /** 7979af39d9fSMatthias Ringwald * @param handle 7989af39d9fSMatthias Ringwald */ 7999af39d9fSMatthias Ringwald const hci_cmd_t hci_read_pin_type = { 800ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_PIN_TYPE, "" 8019af39d9fSMatthias Ringwald }; 8029af39d9fSMatthias Ringwald 8039af39d9fSMatthias Ringwald /** 8049af39d9fSMatthias Ringwald * @param handle 8059af39d9fSMatthias Ringwald */ 8069af39d9fSMatthias Ringwald const hci_cmd_t hci_write_pin_type = { 807ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_PIN_TYPE, "1" 808e49d496aSMatthias Ringwald }; 809e49d496aSMatthias Ringwald 810e49d496aSMatthias Ringwald /** 81156042629SMatthias Ringwald * @param bd_addr 81256042629SMatthias Ringwald * @param delete_all_flags 81356042629SMatthias Ringwald */ 81456042629SMatthias Ringwald const hci_cmd_t hci_delete_stored_link_key = { 815ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_DELETE_STORED_LINK_KEY, "B1" 81656042629SMatthias Ringwald }; 81756042629SMatthias Ringwald 818f9f2075cSMatthias Ringwald #ifdef ENABLE_CLASSIC 81956042629SMatthias Ringwald /** 82056042629SMatthias Ringwald * @param local_name (UTF-8, Null Terminated, max 248 octets) 82156042629SMatthias Ringwald */ 82256042629SMatthias Ringwald const hci_cmd_t hci_write_local_name = { 823ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_LOCAL_NAME, "N" 82456042629SMatthias Ringwald }; 825f9f2075cSMatthias Ringwald #endif 82656042629SMatthias Ringwald 82756042629SMatthias Ringwald /** 828e90bae01SMatthias Ringwald */ 829e90bae01SMatthias Ringwald const hci_cmd_t hci_read_local_name = { 830ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LOCAL_NAME, "" 831e90bae01SMatthias Ringwald }; 832e90bae01SMatthias Ringwald 833e90bae01SMatthias Ringwald /** 834195e82f3Sskoperst */ 835195e82f3Sskoperst const hci_cmd_t hci_read_page_timeout = { 836ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_PAGE_TIMEOUT, "" 837195e82f3Sskoperst }; 838195e82f3Sskoperst 839195e82f3Sskoperst /** 84056042629SMatthias Ringwald * @param page_timeout (* 0.625 ms) 84156042629SMatthias Ringwald */ 84256042629SMatthias Ringwald const hci_cmd_t hci_write_page_timeout = { 843ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_PAGE_TIMEOUT, "2" 84456042629SMatthias Ringwald }; 84556042629SMatthias Ringwald 84656042629SMatthias Ringwald /** 8474eac2391SMatthias Ringwald * @param scan_enable (no, inq, page, inq+page) 8484eac2391SMatthias Ringwald */ 8494eac2391SMatthias Ringwald const hci_cmd_t hci_write_scan_enable = { 850ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_SCAN_ENABLE, "1" 8514eac2391SMatthias Ringwald }; 8524eac2391SMatthias Ringwald 8534eac2391SMatthias Ringwald /** 854195e82f3Sskoperst */ 855195e82f3Sskoperst const hci_cmd_t hci_read_page_scan_activity = { 856ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_PAGE_SCAN_ACTIVITY, "" 857195e82f3Sskoperst }; 858195e82f3Sskoperst 859195e82f3Sskoperst /** 860195e82f3Sskoperst * @param page_scan_interval (* 0.625 ms) 861195e82f3Sskoperst * @param page_scan_window (* 0.625 ms, must be <= page_scan_interval) 862195e82f3Sskoperst */ 863195e82f3Sskoperst const hci_cmd_t hci_write_page_scan_activity = { 864ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_PAGE_SCAN_ACTIVITY, "22" 865195e82f3Sskoperst }; 866195e82f3Sskoperst 867195e82f3Sskoperst /** 86856042629SMatthias Ringwald */ 8694eac2391SMatthias Ringwald const hci_cmd_t hci_read_inquiry_scan_activity = { 870ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_INQUIRY_SCAN_ACTIVITY, "" 8714eac2391SMatthias Ringwald }; 8724eac2391SMatthias Ringwald 8734eac2391SMatthias Ringwald /** 8744eac2391SMatthias Ringwald * @param inquiry_scan_interval (* 0.625 ms) 8754eac2391SMatthias Ringwald * @param inquiry_scan_window (* 0.625 ms, must be <= inquiry_scan_interval) 8764eac2391SMatthias Ringwald */ 8774eac2391SMatthias Ringwald const hci_cmd_t hci_write_inquiry_scan_activity = { 878ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_INQUIRY_SCAN_ACTIVITY, "22" 87956042629SMatthias Ringwald }; 88056042629SMatthias Ringwald 88156042629SMatthias Ringwald /** 88256042629SMatthias Ringwald * @param authentication_enable 88356042629SMatthias Ringwald */ 88456042629SMatthias Ringwald const hci_cmd_t hci_write_authentication_enable = { 885ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_AUTHENTICATION_ENABLE, "1" 88656042629SMatthias Ringwald }; 88756042629SMatthias Ringwald 88856042629SMatthias Ringwald /** 88939bcce03SMatthias Ringwald * @param handle 89039bcce03SMatthias Ringwald * @param timeout, max 0x07FF 89139bcce03SMatthias Ringwald */ 89239bcce03SMatthias Ringwald const hci_cmd_t hci_write_automatic_flush_timeout = { 89339bcce03SMatthias Ringwald HCI_OPCODE_HCI_WRITE_AUTOMATIC_FLUSH_TIMEOUT, "H2" 89439bcce03SMatthias Ringwald }; 89539bcce03SMatthias Ringwald 89639bcce03SMatthias Ringwald /** 89756042629SMatthias Ringwald * @param class_of_device 89856042629SMatthias Ringwald */ 89956042629SMatthias Ringwald const hci_cmd_t hci_write_class_of_device = { 900ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_CLASS_OF_DEVICE, "3" 90156042629SMatthias Ringwald }; 90256042629SMatthias Ringwald 90356042629SMatthias Ringwald /** 90456042629SMatthias Ringwald */ 90556042629SMatthias Ringwald const hci_cmd_t hci_read_num_broadcast_retransmissions = { 906ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_NUM_BROADCAST_RETRANSMISSIONS, "" 90756042629SMatthias Ringwald }; 90856042629SMatthias Ringwald 90956042629SMatthias Ringwald /** 91056042629SMatthias Ringwald * @param num_broadcast_retransmissions (e.g. 0 for a single broadcast) 91156042629SMatthias Ringwald */ 91256042629SMatthias Ringwald const hci_cmd_t hci_write_num_broadcast_retransmissions = { 913ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_NUM_BROADCAST_RETRANSMISSIONS, "1" 91456042629SMatthias Ringwald }; 91556042629SMatthias Ringwald 91656042629SMatthias Ringwald /** 91744751e25SMatthias Ringwald * @param connection_handle 91844751e25SMatthias Ringwald * @param type 0 = current transmit level, 1 = max transmit level 91944751e25SMatthias Ringwald */ 92044751e25SMatthias Ringwald const hci_cmd_t hci_read_transmit_power_level = { 921ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_TRANSMIT_POWER_LEVEL, "11" 92244751e25SMatthias Ringwald }; 92344751e25SMatthias Ringwald 92444751e25SMatthias Ringwald /** 92556042629SMatthias Ringwald * @param synchronous_flow_control_enable - if yes, num completed packet everts are sent for SCO packets 92656042629SMatthias Ringwald */ 92756042629SMatthias Ringwald const hci_cmd_t hci_write_synchronous_flow_control_enable = { 928ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_SYNCHRONOUS_FLOW_CONTROL_ENABLE, "1" 92956042629SMatthias Ringwald }; 93056042629SMatthias Ringwald 9312b838201SMatthias Ringwald #ifdef ENABLE_HCI_CONTROLLER_TO_HOST_FLOW_CONTROL 9322b838201SMatthias Ringwald 9332b838201SMatthias Ringwald /** 9342b838201SMatthias Ringwald * @param flow_control_enable - 0: off, 1: ACL only, 2: SCO only, 3: ACL + SCO 9352b838201SMatthias Ringwald */ 9362b838201SMatthias Ringwald const hci_cmd_t hci_set_controller_to_host_flow_control = { 937ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_SET_CONTROLLER_TO_HOST_FLOW_CONTROL, "1" 9382b838201SMatthias Ringwald }; 9392b838201SMatthias Ringwald 94056042629SMatthias Ringwald /** 94156042629SMatthias Ringwald * @param host_acl_data_packet_length 94256042629SMatthias Ringwald * @param host_synchronous_data_packet_length 94356042629SMatthias Ringwald * @param host_total_num_acl_data_packets 94456042629SMatthias Ringwald * @param host_total_num_synchronous_data_packets 94556042629SMatthias Ringwald */ 94656042629SMatthias Ringwald const hci_cmd_t hci_host_buffer_size = { 947ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_HOST_BUFFER_SIZE, "2122" 94856042629SMatthias Ringwald }; 94956042629SMatthias Ringwald 9509119d792SMilanka Ringwald 9512b838201SMatthias Ringwald #if 0 9522b838201SMatthias Ringwald // 9532b838201SMatthias Ringwald // command sent manually sent by hci_host_num_completed_packets 9542b838201SMatthias Ringwald // 9552b838201SMatthias Ringwald /** 9562b838201SMatthias Ringwald * @note only single handle supported by BTstack command generator 9572b838201SMatthias Ringwald * @param number_of_handles must be 1 9582b838201SMatthias Ringwald * @param connection_handle 9592b838201SMatthias Ringwald * @param host_num_of_completed_packets for the given connection handle 9602b838201SMatthias Ringwald */ 9612b838201SMatthias Ringwald const hci_cmd_t hci_host_number_of_completed_packets = { 962ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_HOST_NUMBER_OF_COMPLETED_PACKETS, "1H2" 9632b838201SMatthias Ringwald }; 9642b838201SMatthias Ringwald #endif 9652b838201SMatthias Ringwald 9662b838201SMatthias Ringwald #endif 9672b838201SMatthias Ringwald 96856042629SMatthias Ringwald /** 96956042629SMatthias Ringwald * @param handle 97056042629SMatthias Ringwald */ 97156042629SMatthias Ringwald const hci_cmd_t hci_read_link_supervision_timeout = { 972ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LINK_SUPERVISION_TIMEOUT, "H" 97356042629SMatthias Ringwald }; 97456042629SMatthias Ringwald 97556042629SMatthias Ringwald /** 97656042629SMatthias Ringwald * @param handle 97756042629SMatthias Ringwald * @param timeout (0x0001 - 0xFFFF Time -> Range: 0.625ms - 40.9 sec) 97856042629SMatthias Ringwald */ 97956042629SMatthias Ringwald const hci_cmd_t hci_write_link_supervision_timeout = { 980ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_LINK_SUPERVISION_TIMEOUT, "H2" 98156042629SMatthias Ringwald }; 98256042629SMatthias Ringwald 98356042629SMatthias Ringwald /** 9849119d792SMilanka Ringwald * @param num_current_iac must be 2 9859119d792SMilanka Ringwald * @param iac_lap1 9869119d792SMilanka Ringwald * @param iac_lap2 9879119d792SMilanka Ringwald */ 9889119d792SMilanka Ringwald const hci_cmd_t hci_write_current_iac_lap_two_iacs = { 989ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_CURRENT_IAC_LAP_TWO_IACS, "133" 9909119d792SMilanka Ringwald }; 9919119d792SMilanka Ringwald 9929119d792SMilanka Ringwald /** 9935769fd77SMatthias Ringwald * @param inquiry_scan_type (0x00 = standard, 0x01 = interlaced) 9945769fd77SMatthias Ringwald */ 9955769fd77SMatthias Ringwald const hci_cmd_t hci_write_inquiry_scan_type = { 9965769fd77SMatthias Ringwald HCI_OPCODE_HCI_WRITE_INQUIRY_SCAN_TYPE, "1" 9975769fd77SMatthias Ringwald }; 9985769fd77SMatthias Ringwald 9995769fd77SMatthias Ringwald /** 100056042629SMatthias Ringwald * @param inquiry_mode (0x00 = standard, 0x01 = with RSSI, 0x02 = extended) 100156042629SMatthias Ringwald */ 100256042629SMatthias Ringwald const hci_cmd_t hci_write_inquiry_mode = { 1003ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_INQUIRY_MODE, "1" 100456042629SMatthias Ringwald }; 100556042629SMatthias Ringwald 100656042629SMatthias Ringwald /** 10075769fd77SMatthias Ringwald * @param page_scan_type (0x00 = standard, 0x01 = interlaced) 10085769fd77SMatthias Ringwald */ 10095769fd77SMatthias Ringwald const hci_cmd_t hci_write_page_scan_type = { 10105769fd77SMatthias Ringwald HCI_OPCODE_HCI_WRITE_PAGE_SCAN_TYPE, "1" 10115769fd77SMatthias Ringwald }; 10125769fd77SMatthias Ringwald 10135769fd77SMatthias Ringwald /** 101456042629SMatthias Ringwald * @param fec_required 101556042629SMatthias Ringwald * @param exstended_inquiry_response 101656042629SMatthias Ringwald */ 101756042629SMatthias Ringwald const hci_cmd_t hci_write_extended_inquiry_response = { 1018ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_EXTENDED_INQUIRY_RESPONSE, "1E" 101956042629SMatthias Ringwald }; 102056042629SMatthias Ringwald 102156042629SMatthias Ringwald /** 102256042629SMatthias Ringwald * @param mode (0 = off, 1 = on) 102356042629SMatthias Ringwald */ 102456042629SMatthias Ringwald const hci_cmd_t hci_write_simple_pairing_mode = { 1025ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_SIMPLE_PAIRING_MODE, "1" 102656042629SMatthias Ringwald }; 102756042629SMatthias Ringwald 1028237daac5SMatthias Ringwald /** 1029237daac5SMatthias Ringwald */ 1030237daac5SMatthias Ringwald const hci_cmd_t hci_read_local_oob_data = { 1031ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LOCAL_OOB_DATA, "" 1032237daac5SMatthias Ringwald // return status, C, R 1033237daac5SMatthias Ringwald }; 1034483c5078SMatthias Ringwald 1035483c5078SMatthias Ringwald /** 1036483c5078SMatthias Ringwald * @param mode (0 = off, 1 = on) 1037483c5078SMatthias Ringwald */ 1038483c5078SMatthias Ringwald const hci_cmd_t hci_write_default_erroneous_data_reporting = { 1039ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_DEFAULT_ERRONEOUS_DATA_REPORTING, "1" 1040483c5078SMatthias Ringwald }; 1041483c5078SMatthias Ringwald 104256042629SMatthias Ringwald /** 104356042629SMatthias Ringwald */ 104456042629SMatthias Ringwald const hci_cmd_t hci_read_le_host_supported = { 1045ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LE_HOST_SUPPORTED, "" 104656042629SMatthias Ringwald // return: status, le supported host, simultaneous le host 104756042629SMatthias Ringwald }; 104856042629SMatthias Ringwald 104956042629SMatthias Ringwald /** 105056042629SMatthias Ringwald * @param le_supported_host 105156042629SMatthias Ringwald * @param simultaneous_le_host 105256042629SMatthias Ringwald */ 105356042629SMatthias Ringwald const hci_cmd_t hci_write_le_host_supported = { 1054ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_LE_HOST_SUPPORTED, "11" 105556042629SMatthias Ringwald // return: status 105656042629SMatthias Ringwald }; 105756042629SMatthias Ringwald 105856042629SMatthias Ringwald /** 1059b002ae8cSMatthias Ringwald * @param secure_connections_host_support 1060b002ae8cSMatthias Ringwald */ 1061b002ae8cSMatthias Ringwald const hci_cmd_t hci_write_secure_connections_host_support = { 1062ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_SECURE_CONNECTIONS_HOST_SUPPORT, "1" 1063b002ae8cSMatthias Ringwald // return: status 1064b002ae8cSMatthias Ringwald }; 1065b002ae8cSMatthias Ringwald 1066b002ae8cSMatthias Ringwald /** 1067237daac5SMatthias Ringwald */ 1068bb75dd7dSMatthias Ringwald const hci_cmd_t hci_read_local_extended_oob_data = { 10691849becdSMatthias Ringwald HCI_OPCODE_HCI_READ_LOCAL_EXTENDED_OOB_DATA, "" 1070237daac5SMatthias Ringwald // return status, C_192, R_192, R_256, C_256 1071237daac5SMatthias Ringwald }; 1072237daac5SMatthias Ringwald 1073*6d2375e9SMatthias Ringwald /** 1074*6d2375e9SMatthias Ringwald */ 1075*6d2375e9SMatthias Ringwald const hci_cmd_t hci_read_extended_page_timeout = { 1076*6d2375e9SMatthias Ringwald HCI_OPCODE_HCI_READ_EXTENDED_PAGE_TIMEOUT, "" 1077*6d2375e9SMatthias Ringwald // return: status, extender page timeout 1078*6d2375e9SMatthias Ringwald }; 1079*6d2375e9SMatthias Ringwald 1080*6d2375e9SMatthias Ringwald /** 1081*6d2375e9SMatthias Ringwald * @param extended_page_timeout 1082*6d2375e9SMatthias Ringwald */ 1083*6d2375e9SMatthias Ringwald const hci_cmd_t hci_write_extended_page_timeout = { 1084*6d2375e9SMatthias Ringwald HCI_OPCODE_HCI_WRITE_EXTENDED_PAGE_TIMEOUT, "2" 1085*6d2375e9SMatthias Ringwald // return: status 1086*6d2375e9SMatthias Ringwald }; 1087*6d2375e9SMatthias Ringwald 1088*6d2375e9SMatthias Ringwald /** 1089*6d2375e9SMatthias Ringwald */ 1090*6d2375e9SMatthias Ringwald const hci_cmd_t hci_read_extended_inquiry_length = { 1091*6d2375e9SMatthias Ringwald HCI_OPCODE_HCI_READ_EXTENDED_INQUIRY_LENGTH, "" 1092*6d2375e9SMatthias Ringwald // return: status, extended_inquiry_length 1093*6d2375e9SMatthias Ringwald }; 1094*6d2375e9SMatthias Ringwald 1095*6d2375e9SMatthias Ringwald /** 1096*6d2375e9SMatthias Ringwald * @param extended_inquiry_length 1097*6d2375e9SMatthias Ringwald */ 1098*6d2375e9SMatthias Ringwald const hci_cmd_t hci_write_extended_inquiry_length = { 1099*6d2375e9SMatthias Ringwald HCI_OPCODE_HCI_WRITE_EXTENDED_INQUIRY_LENGTH, "2" 1100*6d2375e9SMatthias Ringwald // return: status 1101*6d2375e9SMatthias Ringwald }; 1102*6d2375e9SMatthias Ringwald 1103*6d2375e9SMatthias Ringwald /** 1104*6d2375e9SMatthias Ringwald * @param interval 1105*6d2375e9SMatthias Ringwald */ 1106*6d2375e9SMatthias Ringwald const hci_cmd_t hci_set_ecosystem_base_interval = { 1107*6d2375e9SMatthias Ringwald HCI_OPCODE_HCI_SET_ECOSYSTEM_BASE_INTERVAL, "2" 1108*6d2375e9SMatthias Ringwald // return: status 1109*6d2375e9SMatthias Ringwald }; 1110*6d2375e9SMatthias Ringwald 1111*6d2375e9SMatthias Ringwald /** 1112*6d2375e9SMatthias Ringwald * @param data_path_direction 1113*6d2375e9SMatthias Ringwald * @param data_path_id 1114*6d2375e9SMatthias Ringwald * @param vendor_specific_config_length 1115*6d2375e9SMatthias Ringwald * @param vendor_specific_config 1116*6d2375e9SMatthias Ringwald */ 1117*6d2375e9SMatthias Ringwald const hci_cmd_t hci_configure_data_path = { 1118*6d2375e9SMatthias Ringwald HCI_OPCODE_HCI_CONFIGURE_DATA_PATH, "11JV" 1119*6d2375e9SMatthias Ringwald // return: status 1120*6d2375e9SMatthias Ringwald }; 1121*6d2375e9SMatthias Ringwald 1122*6d2375e9SMatthias Ringwald /** 1123*6d2375e9SMatthias Ringwald * @param min_encryption_key_size 1124*6d2375e9SMatthias Ringwald */ 1125*6d2375e9SMatthias Ringwald const hci_cmd_t hci_set_min_encryption_key_size = { 1126*6d2375e9SMatthias Ringwald HCI_OPCODE_HCI_SET_MIN_ENCRYPTION_KEY_SIZE, "1" 1127*6d2375e9SMatthias Ringwald // return: status 1128*6d2375e9SMatthias Ringwald }; 1129*6d2375e9SMatthias Ringwald 1130237daac5SMatthias Ringwald 1131237daac5SMatthias Ringwald /** 113256042629SMatthias Ringwald * Testing Commands 113356042629SMatthias Ringwald */ 113456042629SMatthias Ringwald 113556042629SMatthias Ringwald 113656042629SMatthias Ringwald /** 113756042629SMatthias Ringwald */ 113856042629SMatthias Ringwald const hci_cmd_t hci_read_loopback_mode = { 1139ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LOOPBACK_MODE, "" 114056042629SMatthias Ringwald // return: status, loopback mode (0 = off, 1 = local loopback, 2 = remote loopback) 114156042629SMatthias Ringwald }; 114256042629SMatthias Ringwald 114356042629SMatthias Ringwald /** 114456042629SMatthias Ringwald * @param loopback_mode 114556042629SMatthias Ringwald */ 114656042629SMatthias Ringwald const hci_cmd_t hci_write_loopback_mode = { 1147ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_LOOPBACK_MODE, "1" 114856042629SMatthias Ringwald // return: status 114956042629SMatthias Ringwald }; 115056042629SMatthias Ringwald 115184ca9bd8SMatthias Ringwald /** 115284ca9bd8SMatthias Ringwald */ 115384ca9bd8SMatthias Ringwald const hci_cmd_t hci_enable_device_under_test_mode = { 1154ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_ENABLE_DEVICE_UNDER_TEST_MODE, "" 115584ca9bd8SMatthias Ringwald // return: status 115684ca9bd8SMatthias Ringwald }; 115784ca9bd8SMatthias Ringwald 115884ca9bd8SMatthias Ringwald /** 115984ca9bd8SMatthias Ringwald * @param simple_pairing_debug_mode 116084ca9bd8SMatthias Ringwald */ 116184ca9bd8SMatthias Ringwald const hci_cmd_t hci_write_simple_pairing_debug_mode = { 1162ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_SIMPLE_PAIRING_DEBUG_MODE, "1" 116384ca9bd8SMatthias Ringwald // return: status 116484ca9bd8SMatthias Ringwald }; 116584ca9bd8SMatthias Ringwald 116684ca9bd8SMatthias Ringwald /** 116784ca9bd8SMatthias Ringwald * @param handle 116884ca9bd8SMatthias Ringwald * @param dm1_acl_u_mode 116984ca9bd8SMatthias Ringwald * @param esco_loopback_mode 117084ca9bd8SMatthias Ringwald */ 117184ca9bd8SMatthias Ringwald const hci_cmd_t hci_write_secure_connections_test_mode = { 1172ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_SECURE_CONNECTIONS_TEST_MODE, "H11" 117384ca9bd8SMatthias Ringwald // return: status 117484ca9bd8SMatthias Ringwald }; 117584ca9bd8SMatthias Ringwald 117656042629SMatthias Ringwald 117756042629SMatthias Ringwald /** 117856042629SMatthias Ringwald * Informational Parameters 117956042629SMatthias Ringwald */ 118056042629SMatthias Ringwald 118156042629SMatthias Ringwald const hci_cmd_t hci_read_local_version_information = { 1182ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LOCAL_VERSION_INFORMATION, "" 118356042629SMatthias Ringwald }; 118456042629SMatthias Ringwald const hci_cmd_t hci_read_local_supported_commands = { 1185ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LOCAL_SUPPORTED_COMMANDS, "" 118656042629SMatthias Ringwald }; 118756042629SMatthias Ringwald const hci_cmd_t hci_read_local_supported_features = { 1188ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LOCAL_SUPPORTED_FEATURES, "" 118956042629SMatthias Ringwald }; 119056042629SMatthias Ringwald const hci_cmd_t hci_read_buffer_size = { 1191ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_BUFFER_SIZE, "" 119256042629SMatthias Ringwald }; 119356042629SMatthias Ringwald const hci_cmd_t hci_read_bd_addr = { 1194ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_BD_ADDR, "" 119556042629SMatthias Ringwald }; 119656042629SMatthias Ringwald 119756042629SMatthias Ringwald /** 119856042629SMatthias Ringwald * Status Paramters 119956042629SMatthias Ringwald */ 120056042629SMatthias Ringwald 120156042629SMatthias Ringwald /** 120256042629SMatthias Ringwald * @param handle 120356042629SMatthias Ringwald */ 120456042629SMatthias Ringwald const hci_cmd_t hci_read_rssi = { 1205ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_RSSI, "H" 120656042629SMatthias Ringwald }; 120756042629SMatthias Ringwald 120897abfa24SMatthias Ringwald /** 120997abfa24SMatthias Ringwald * @param handle 121097abfa24SMatthias Ringwald */ 121197abfa24SMatthias Ringwald const hci_cmd_t hci_read_encryption_key_size = { 1212ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_ENCRYPTION_KEY_SIZE, "H" 121397abfa24SMatthias Ringwald }; 121456042629SMatthias Ringwald 121556042629SMatthias Ringwald 1216a9a4c409SMatthias Ringwald #ifdef ENABLE_BLE 121756042629SMatthias Ringwald /** 121856042629SMatthias Ringwald * Low Energy Commands 121956042629SMatthias Ringwald */ 122056042629SMatthias Ringwald 122156042629SMatthias Ringwald /** 122256042629SMatthias Ringwald * @param event_mask_lower_octets 122356042629SMatthias Ringwald * @param event_mask_higher_octets 122456042629SMatthias Ringwald */ 122556042629SMatthias Ringwald const hci_cmd_t hci_le_set_event_mask = { 1226ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_EVENT_MASK, "44" 122756042629SMatthias Ringwald // return: status 122856042629SMatthias Ringwald }; 122956042629SMatthias Ringwald 123056042629SMatthias Ringwald const hci_cmd_t hci_le_read_buffer_size = { 1231ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_BUFFER_SIZE, "" 123256042629SMatthias Ringwald // return: status, le acl data packet len (16), total num le acl data packets(8) 123356042629SMatthias Ringwald }; 12340c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_local_supported_features = { 12350c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_LOCAL_SUPPORTED_FEATURES, "" 123656042629SMatthias Ringwald // return: LE_Features See [Vol 6] Part B, Section 4.6 123756042629SMatthias Ringwald }; 123856042629SMatthias Ringwald 123956042629SMatthias Ringwald /** 124056042629SMatthias Ringwald * @param random_bd_addr 124156042629SMatthias Ringwald */ 124256042629SMatthias Ringwald const hci_cmd_t hci_le_set_random_address = { 1243ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_RANDOM_ADDRESS, "B" 124456042629SMatthias Ringwald // return: status 124556042629SMatthias Ringwald }; 124656042629SMatthias Ringwald 124756042629SMatthias Ringwald /** 124856042629SMatthias Ringwald * @param advertising_interval_min ([0x0020,0x4000], default: 0x0800, unit: 0.625 msec) 124956042629SMatthias Ringwald * @param advertising_interval_max ([0x0020,0x4000], default: 0x0800, unit: 0.625 msec) 125056042629SMatthias Ringwald * @param advertising_type (enum from 0: ADV_IND, ADC_DIRECT_IND, ADV_SCAN_IND, ADV_NONCONN_IND) 125156042629SMatthias Ringwald * @param own_address_type (enum from 0: public device address, random device address) 125256042629SMatthias Ringwald * @param direct_address_type () 125356042629SMatthias Ringwald * @param direct_address (public or random address of device to be connecteed) 125456042629SMatthias Ringwald * @param advertising_channel_map (flags: chan_37(1), chan_38(2), chan_39(4)) 125556042629SMatthias Ringwald * @param advertising_filter_policy (enum from 0: scan any conn any, scan whitelist, con any, scan any conn whitelist, scan whitelist, con whitelist) 125656042629SMatthias Ringwald */ 125756042629SMatthias Ringwald const hci_cmd_t hci_le_set_advertising_parameters = { 1258ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_ADVERTISING_PARAMETERS, "22111B11" 125956042629SMatthias Ringwald // return: status 126056042629SMatthias Ringwald }; 126156042629SMatthias Ringwald 126256042629SMatthias Ringwald const hci_cmd_t hci_le_read_advertising_channel_tx_power = { 1263ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_ADVERTISING_CHANNEL_TX_POWER, "" 126456042629SMatthias Ringwald // return: status, level [-20,10] signed int (8), units dBm 126556042629SMatthias Ringwald }; 126656042629SMatthias Ringwald 126756042629SMatthias Ringwald /** 126856042629SMatthias Ringwald * @param advertising_data_length 126956042629SMatthias Ringwald * @param advertising_data (31 bytes) 127056042629SMatthias Ringwald */ 127156042629SMatthias Ringwald const hci_cmd_t hci_le_set_advertising_data= { 1272ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_ADVERTISING_DATA, "1A" 127356042629SMatthias Ringwald // return: status 127456042629SMatthias Ringwald }; 127556042629SMatthias Ringwald 127656042629SMatthias Ringwald /** 127756042629SMatthias Ringwald * @param scan_response_data_length 127856042629SMatthias Ringwald * @param scan_response_data (31 bytes) 127956042629SMatthias Ringwald */ 128056042629SMatthias Ringwald const hci_cmd_t hci_le_set_scan_response_data= { 1281ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_SCAN_RESPONSE_DATA, "1A" 128256042629SMatthias Ringwald // return: status 128356042629SMatthias Ringwald }; 128456042629SMatthias Ringwald 128556042629SMatthias Ringwald /** 128656042629SMatthias Ringwald * @param advertise_enable (off: 0, on: 1) 128756042629SMatthias Ringwald */ 128856042629SMatthias Ringwald const hci_cmd_t hci_le_set_advertise_enable = { 1289ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_ADVERTISE_ENABLE, "1" 129056042629SMatthias Ringwald // return: status 129156042629SMatthias Ringwald }; 129256042629SMatthias Ringwald 129356042629SMatthias Ringwald /** 129456042629SMatthias Ringwald * @param le_scan_type (passive (0), active (1)) 129556042629SMatthias Ringwald * @param le_scan_interval ([0x0004,0x4000], unit: 0.625 msec) 129656042629SMatthias Ringwald * @param le_scan_window ([0x0004,0x4000], unit: 0.625 msec) 129756042629SMatthias Ringwald * @param own_address_type (public (0), random (1)) 129856042629SMatthias Ringwald * @param scanning_filter_policy (any (0), only whitelist (1)) 129956042629SMatthias Ringwald */ 130056042629SMatthias Ringwald const hci_cmd_t hci_le_set_scan_parameters = { 1301ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_SCAN_PARAMETERS, "12211" 130256042629SMatthias Ringwald // return: status 130356042629SMatthias Ringwald }; 130456042629SMatthias Ringwald 130556042629SMatthias Ringwald /** 130656042629SMatthias Ringwald * @param le_scan_enable (disabled (0), enabled (1)) 130756042629SMatthias Ringwald * @param filter_duplices (disabled (0), enabled (1)) 130856042629SMatthias Ringwald */ 130956042629SMatthias Ringwald const hci_cmd_t hci_le_set_scan_enable = { 1310ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_SCAN_ENABLE, "11" 131156042629SMatthias Ringwald // return: status 131256042629SMatthias Ringwald }; 131356042629SMatthias Ringwald 131456042629SMatthias Ringwald /** 131556042629SMatthias Ringwald * @param le_scan_interval ([0x0004, 0x4000], unit: 0.625 msec) 131656042629SMatthias Ringwald * @param le_scan_window ([0x0004, 0x4000], unit: 0.625 msec) 131756042629SMatthias Ringwald * @param initiator_filter_policy (peer address type + peer address (0), whitelist (1)) 131856042629SMatthias Ringwald * @param peer_address_type (public (0), random (1)) 131956042629SMatthias Ringwald * @param peer_address 132056042629SMatthias Ringwald * @param own_address_type (public (0), random (1)) 132156042629SMatthias Ringwald * @param conn_interval_min ([0x0006, 0x0c80], unit: 1.25 msec) 132256042629SMatthias Ringwald * @param conn_interval_max ([0x0006, 0x0c80], unit: 1.25 msec) 132356042629SMatthias Ringwald * @param conn_latency (number of connection events [0x0000, 0x01f4]) 132456042629SMatthias Ringwald * @param supervision_timeout ([0x000a, 0x0c80], unit: 10 msec) 132556042629SMatthias Ringwald * @param minimum_CE_length ([0x0000, 0xffff], unit: 0.625 msec) 132656042629SMatthias Ringwald * @param maximum_CE_length ([0x0000, 0xffff], unit: 0.625 msec) 132756042629SMatthias Ringwald */ 132856042629SMatthias Ringwald const hci_cmd_t hci_le_create_connection= { 1329ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_CREATE_CONNECTION, "2211B1222222" 133056042629SMatthias Ringwald // return: none -> le create connection complete event 133156042629SMatthias Ringwald }; 133256042629SMatthias Ringwald 133356042629SMatthias Ringwald const hci_cmd_t hci_le_create_connection_cancel = { 1334ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_CREATE_CONNECTION_CANCEL, "" 133556042629SMatthias Ringwald // return: status 133656042629SMatthias Ringwald }; 133756042629SMatthias Ringwald 133856042629SMatthias Ringwald const hci_cmd_t hci_le_read_white_list_size = { 1339ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_WHITE_LIST_SIZE, "" 134056042629SMatthias Ringwald // return: status, number of entries in controller whitelist 134156042629SMatthias Ringwald }; 134256042629SMatthias Ringwald 134356042629SMatthias Ringwald const hci_cmd_t hci_le_clear_white_list = { 1344ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_CLEAR_WHITE_LIST, "" 134556042629SMatthias Ringwald // return: status 134656042629SMatthias Ringwald }; 134756042629SMatthias Ringwald 134856042629SMatthias Ringwald /** 134956042629SMatthias Ringwald * @param address_type (public (0), random (1)) 135056042629SMatthias Ringwald * @param bd_addr 135156042629SMatthias Ringwald */ 135256042629SMatthias Ringwald const hci_cmd_t hci_le_add_device_to_white_list = { 1353ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_ADD_DEVICE_TO_WHITE_LIST, "1B" 135456042629SMatthias Ringwald // return: status 135556042629SMatthias Ringwald }; 135656042629SMatthias Ringwald 135756042629SMatthias Ringwald /** 135856042629SMatthias Ringwald * @param address_type (public (0), random (1)) 135956042629SMatthias Ringwald * @param bd_addr 136056042629SMatthias Ringwald */ 136156042629SMatthias Ringwald const hci_cmd_t hci_le_remove_device_from_white_list = { 1362ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOVE_DEVICE_FROM_WHITE_LIST, "1B" 136356042629SMatthias Ringwald // return: status 136456042629SMatthias Ringwald }; 136556042629SMatthias Ringwald 136656042629SMatthias Ringwald /** 136756042629SMatthias Ringwald * @param conn_handle 136856042629SMatthias Ringwald * @param conn_interval_min ([0x0006,0x0c80], unit: 1.25 msec) 136956042629SMatthias Ringwald * @param conn_interval_max ([0x0006,0x0c80], unit: 1.25 msec) 137056042629SMatthias Ringwald * @param conn_latency ([0x0000,0x03e8], number of connection events) 137156042629SMatthias Ringwald * @param supervision_timeout ([0x000a,0x0c80], unit: 10 msec) 137256042629SMatthias Ringwald * @param minimum_CE_length ([0x0000,0xffff], unit: 0.625 msec) 137356042629SMatthias Ringwald * @param maximum_CE_length ([0x0000,0xffff], unit: 0.625 msec) 137456042629SMatthias Ringwald */ 137556042629SMatthias Ringwald const hci_cmd_t hci_le_connection_update = { 1376ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_CONNECTION_UPDATE, "H222222" 137756042629SMatthias Ringwald // return: none -> le connection update complete event 137856042629SMatthias Ringwald }; 137956042629SMatthias Ringwald 138056042629SMatthias Ringwald /** 138156042629SMatthias Ringwald * @param channel_map_lower_32bits 138256042629SMatthias Ringwald * @param channel_map_higher_5bits 138356042629SMatthias Ringwald */ 138456042629SMatthias Ringwald const hci_cmd_t hci_le_set_host_channel_classification = { 1385ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_HOST_CHANNEL_CLASSIFICATION, "41" 138656042629SMatthias Ringwald // return: status 138756042629SMatthias Ringwald }; 138856042629SMatthias Ringwald 138956042629SMatthias Ringwald /** 139056042629SMatthias Ringwald * @param conn_handle 139156042629SMatthias Ringwald */ 139256042629SMatthias Ringwald const hci_cmd_t hci_le_read_channel_map = { 1393ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_CHANNEL_MAP, "H" 139456042629SMatthias Ringwald // return: status, connection handle, channel map (5 bytes, 37 used) 139556042629SMatthias Ringwald }; 139656042629SMatthias Ringwald 139756042629SMatthias Ringwald /** 139856042629SMatthias Ringwald * @param conn_handle 139956042629SMatthias Ringwald */ 140056042629SMatthias Ringwald const hci_cmd_t hci_le_read_remote_used_features = { 1401ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_REMOTE_USED_FEATURES, "H" 140256042629SMatthias Ringwald // return: none -> le read remote used features complete event 140356042629SMatthias Ringwald }; 140456042629SMatthias Ringwald 140556042629SMatthias Ringwald /** 140656042629SMatthias Ringwald * @param key ((128) for AES-128) 140756042629SMatthias Ringwald * @param plain_text (128) 140856042629SMatthias Ringwald */ 140956042629SMatthias Ringwald const hci_cmd_t hci_le_encrypt = { 1410ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_ENCRYPT, "PP" 141156042629SMatthias Ringwald // return: status, encrypted data (128) 141256042629SMatthias Ringwald }; 141356042629SMatthias Ringwald 141456042629SMatthias Ringwald const hci_cmd_t hci_le_rand = { 1415ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_RAND, "" 141656042629SMatthias Ringwald // return: status, random number (64) 141756042629SMatthias Ringwald }; 141856042629SMatthias Ringwald 141956042629SMatthias Ringwald /** 142056042629SMatthias Ringwald * @param conn_handle 142156042629SMatthias Ringwald * @param random_number_lower_32bits 142256042629SMatthias Ringwald * @param random_number_higher_32bits 142356042629SMatthias Ringwald * @param encryption_diversifier (16) 142456042629SMatthias Ringwald * @param long_term_key (128) 142556042629SMatthias Ringwald */ 142656042629SMatthias Ringwald const hci_cmd_t hci_le_start_encryption = { 1427ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_START_ENCRYPTION, "H442P" 142856042629SMatthias Ringwald // return: none -> encryption changed or encryption key refresh complete event 142956042629SMatthias Ringwald }; 143056042629SMatthias Ringwald 143156042629SMatthias Ringwald /** 143256042629SMatthias Ringwald * @param connection_handle 143356042629SMatthias Ringwald * @param long_term_key (128) 143456042629SMatthias Ringwald */ 143556042629SMatthias Ringwald const hci_cmd_t hci_le_long_term_key_request_reply = { 1436ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_LONG_TERM_KEY_REQUEST_REPLY, "HP" 143756042629SMatthias Ringwald // return: status, connection handle 143856042629SMatthias Ringwald }; 143956042629SMatthias Ringwald 144056042629SMatthias Ringwald /** 144156042629SMatthias Ringwald * @param conn_handle 144256042629SMatthias Ringwald */ 144356042629SMatthias Ringwald const hci_cmd_t hci_le_long_term_key_negative_reply = { 1444ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_LONG_TERM_KEY_NEGATIVE_REPLY, "H" 144556042629SMatthias Ringwald // return: status, connection handle 144656042629SMatthias Ringwald }; 144756042629SMatthias Ringwald 144856042629SMatthias Ringwald /** 144956042629SMatthias Ringwald * @param conn_handle 145056042629SMatthias Ringwald */ 145156042629SMatthias Ringwald const hci_cmd_t hci_le_read_supported_states = { 1452ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_SUPPORTED_STATES, "H" 145356042629SMatthias Ringwald // return: status, LE states (64) 145456042629SMatthias Ringwald }; 145556042629SMatthias Ringwald 145656042629SMatthias Ringwald /** 145756042629SMatthias Ringwald * @param rx_frequency ([0x00 0x27], frequency (MHz): 2420 + N*2) 145856042629SMatthias Ringwald */ 145956042629SMatthias Ringwald const hci_cmd_t hci_le_receiver_test = { 1460ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_RECEIVER_TEST, "1" 146156042629SMatthias Ringwald // return: status 146256042629SMatthias Ringwald }; 146356042629SMatthias Ringwald 146456042629SMatthias Ringwald /** 146556042629SMatthias Ringwald * @param tx_frequency ([0x00 0x27], frequency (MHz): 2420 + N*2) 146656042629SMatthias Ringwald * @param test_payload_lengh ([0x00,0x25]) 146756042629SMatthias Ringwald * @param packet_payload ([0,7] different patterns) 146856042629SMatthias Ringwald */ 146956042629SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test = { 1470ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_TRANSMITTER_TEST, "111" 147156042629SMatthias Ringwald // return: status 147256042629SMatthias Ringwald }; 147356042629SMatthias Ringwald 147456042629SMatthias Ringwald /** 147556042629SMatthias Ringwald * @param end_test_cmd 147656042629SMatthias Ringwald */ 147756042629SMatthias Ringwald const hci_cmd_t hci_le_test_end = { 1478ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_TEST_END, "1" 147956042629SMatthias Ringwald // return: status, number of packets (8) 148056042629SMatthias Ringwald }; 148182180fcaSMatthias Ringwald 148282180fcaSMatthias Ringwald /** 1483fe704c95SMatthias Ringwald * @param conn_handle 1484fe704c95SMatthias Ringwald * @param conn_interval_min ([0x0006,0x0c80], unit: 1.25 msec) 1485fe704c95SMatthias Ringwald * @param conn_interval_max ([0x0006,0x0c80], unit: 1.25 msec) 1486fe704c95SMatthias Ringwald * @param conn_latency ([0x0000,0x03e8], number of connection events) 1487fe704c95SMatthias Ringwald * @param supervision_timeout ([0x000a,0x0c80], unit: 10 msec) 1488fe704c95SMatthias Ringwald * @param minimum_CE_length ([0x0000,0xffff], unit: 0.625 msec) 1489fe704c95SMatthias Ringwald * @param maximum_CE_length ([0x0000,0xffff], unit: 0.625 msec) 1490fe704c95SMatthias Ringwald */ 1491fe704c95SMatthias Ringwald const hci_cmd_t hci_le_remote_connection_parameter_request_reply = { 1492ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_REPLY, "H222222" 1493fe704c95SMatthias Ringwald // return: status, connection handle 1494fe704c95SMatthias Ringwald }; 1495fe704c95SMatthias Ringwald 1496fe704c95SMatthias Ringwald /** 1497fe704c95SMatthias Ringwald * @param con_handle 1498fe704c95SMatthias Ringwald * @param reason 1499fe704c95SMatthias Ringwald */ 1500fe704c95SMatthias Ringwald const hci_cmd_t hci_le_remote_connection_parameter_request_negative_reply = { 1501ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_NEGATIVE_REPLY, "H1" 1502fe704c95SMatthias Ringwald // return: status, connection handle 1503fe704c95SMatthias Ringwald }; 1504fe704c95SMatthias Ringwald 1505fe704c95SMatthias Ringwald /** 15060ea2847fSMatthias Ringwald * @param con_handle 15070ea2847fSMatthias Ringwald * @param tx_octets 15080ea2847fSMatthias Ringwald * @param tx_time 15090ea2847fSMatthias Ringwald */ 15100ea2847fSMatthias Ringwald const hci_cmd_t hci_le_set_data_length = { 1511ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_DATA_LENGTH, "H22" 15120ea2847fSMatthias Ringwald // return: status, connection handle 15130ea2847fSMatthias Ringwald }; 15140ea2847fSMatthias Ringwald 15150ea2847fSMatthias Ringwald /** 15160ea2847fSMatthias Ringwald */ 15170ea2847fSMatthias Ringwald const hci_cmd_t hci_le_read_suggested_default_data_length = { 1518ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_SUGGESTED_DEFAULT_DATA_LENGTH, "" 15190ea2847fSMatthias Ringwald // return: status, suggested max tx octets, suggested max tx time 15200ea2847fSMatthias Ringwald }; 15210ea2847fSMatthias Ringwald 15220ea2847fSMatthias Ringwald /** 15230ea2847fSMatthias Ringwald * @param suggested_max_tx_octets 15240ea2847fSMatthias Ringwald * @param suggested_max_tx_time 15250ea2847fSMatthias Ringwald */ 15260ea2847fSMatthias Ringwald const hci_cmd_t hci_le_write_suggested_default_data_length = { 1527ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_WRITE_SUGGESTED_DEFAULT_DATA_LENGTH, "22" 15280ea2847fSMatthias Ringwald // return: status 15290ea2847fSMatthias Ringwald }; 15300ea2847fSMatthias Ringwald 15310ea2847fSMatthias Ringwald /** 153282180fcaSMatthias Ringwald */ 153382180fcaSMatthias Ringwald const hci_cmd_t hci_le_read_local_p256_public_key = { 1534ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_LOCAL_P256_PUBLIC_KEY, "" 153582180fcaSMatthias Ringwald // LE Read Local P-256 Public Key Complete is generated on completion 153682180fcaSMatthias Ringwald }; 153782180fcaSMatthias Ringwald 153882180fcaSMatthias Ringwald /** 1539fcae305fSMatthias Ringwald * @param public key 1540fcae305fSMatthias Ringwald * @param private key 154182180fcaSMatthias Ringwald */ 154282180fcaSMatthias Ringwald const hci_cmd_t hci_le_generate_dhkey = { 1543ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_GENERATE_DHKEY, "QQ" 154482180fcaSMatthias Ringwald // LE Generate DHKey Complete is generated on completion 154582180fcaSMatthias Ringwald }; 154682180fcaSMatthias Ringwald 15470ea2847fSMatthias Ringwald /** 1548173ed1a3SMatthias Ringwald * @param Peer_Identity_Address_Type 1549173ed1a3SMatthias Ringwald * @param Peer_Identity_Address 1550173ed1a3SMatthias Ringwald * @param Peer_IRK 1551173ed1a3SMatthias Ringwald * @param Local_IRK 1552173ed1a3SMatthias Ringwald */ 1553173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_add_device_to_resolving_list = { 1554173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_ADD_DEVICE_TO_RESOLVING_LIST, "1BPP" 1555173ed1a3SMatthias Ringwald }; 1556173ed1a3SMatthias Ringwald 1557173ed1a3SMatthias Ringwald /** 1558173ed1a3SMatthias Ringwald * @param Peer_Identity_Address_Type 1559173ed1a3SMatthias Ringwald * @param Peer_Identity_Address 1560173ed1a3SMatthias Ringwald */ 1561173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_remove_device_from_resolving_list = { 1562173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOVE_DEVICE_FROM_RESOLVING_LIST, "1B" 1563173ed1a3SMatthias Ringwald }; 1564173ed1a3SMatthias Ringwald 1565173ed1a3SMatthias Ringwald /** 1566173ed1a3SMatthias Ringwald */ 1567173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_clear_resolving_list = { 1568173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_CLEAR_RESOLVING_LIST, "" 1569173ed1a3SMatthias Ringwald }; 1570173ed1a3SMatthias Ringwald 1571173ed1a3SMatthias Ringwald /** 1572173ed1a3SMatthias Ringwald */ 1573173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_read_resolving_list_size = { 1574173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_RESOLVING_LIST_SIZE, "" 1575173ed1a3SMatthias Ringwald }; 1576173ed1a3SMatthias Ringwald 1577173ed1a3SMatthias Ringwald /** 1578173ed1a3SMatthias Ringwald * @param Peer_Identity_Address_Type 1579173ed1a3SMatthias Ringwald * @param Peer_Identity_Address 1580173ed1a3SMatthias Ringwald */ 1581173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_read_peer_resolvable_address = { 1582173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_PEER_RESOLVABLE_ADDRESS, "" 1583173ed1a3SMatthias Ringwald }; 1584173ed1a3SMatthias Ringwald 1585173ed1a3SMatthias Ringwald /** 1586173ed1a3SMatthias Ringwald * @param Peer_Identity_Address_Type 1587173ed1a3SMatthias Ringwald * @param Peer_Identity_Address 1588173ed1a3SMatthias Ringwald */ 1589173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_read_local_resolvable_address = { 1590173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_LOCAL_RESOLVABLE_ADDRESS, "" 1591173ed1a3SMatthias Ringwald }; 1592173ed1a3SMatthias Ringwald 1593173ed1a3SMatthias Ringwald /** 1594173ed1a3SMatthias Ringwald * @param Address_Resolution_Enable 1595173ed1a3SMatthias Ringwald */ 1596173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_set_address_resolution_enabled= { 1597173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_ADDRESS_RESOLUTION_ENABLED, "1" 1598173ed1a3SMatthias Ringwald }; 1599173ed1a3SMatthias Ringwald 1600173ed1a3SMatthias Ringwald /** 1601173ed1a3SMatthias Ringwald * @param RPA_Timeout in seconds, range 0x0001 to 0x0E10, default: 900 s 1602173ed1a3SMatthias Ringwald */ 1603173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_set_resolvable_private_address_timeout= { 1604173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_RESOLVABLE_PRIVATE_ADDRESS_TIMEOUT, "2" 1605173ed1a3SMatthias Ringwald }; 1606173ed1a3SMatthias Ringwald 1607173ed1a3SMatthias Ringwald /** 16080ea2847fSMatthias Ringwald */ 16090ea2847fSMatthias Ringwald const hci_cmd_t hci_le_read_maximum_data_length = { 1610ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_MAXIMUM_DATA_LENGTH, "" 16110ea2847fSMatthias Ringwald // return: status, supported max tx octets, supported max tx time, supported max rx octets, supported max rx time 16120ea2847fSMatthias Ringwald }; 16130ea2847fSMatthias Ringwald 1614ca13daefSMatthias Ringwald /** 1615ca13daefSMatthias Ringwald * @param con_handle 1616ca13daefSMatthias Ringwald */ 1617ca13daefSMatthias Ringwald const hci_cmd_t hci_le_read_phy = { 1618ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_PHY, "H" 1619ca13daefSMatthias Ringwald // return: status, connection handler, tx phy, rx phy 1620ca13daefSMatthias Ringwald }; 1621ca13daefSMatthias Ringwald 1622ca13daefSMatthias Ringwald /** 1623ca13daefSMatthias Ringwald * @param all_phys 1624ca13daefSMatthias Ringwald * @param tx_phys 1625ca13daefSMatthias Ringwald * @param rx_phys 1626ca13daefSMatthias Ringwald */ 1627ca13daefSMatthias Ringwald const hci_cmd_t hci_le_set_default_phy = { 1628ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_DEFAULT_PHY, "111" 1629ca13daefSMatthias Ringwald // return: status 1630ca13daefSMatthias Ringwald }; 1631ca13daefSMatthias Ringwald 1632ca13daefSMatthias Ringwald /** 1633ca13daefSMatthias Ringwald * @param con_handle 1634ca13daefSMatthias Ringwald * @param all_phys 1635ca13daefSMatthias Ringwald * @param tx_phys 1636ca13daefSMatthias Ringwald * @param rx_phys 1637ca13daefSMatthias Ringwald * @param phy_options 1638ca13daefSMatthias Ringwald */ 1639ca13daefSMatthias Ringwald const hci_cmd_t hci_le_set_phy = { 1640ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PHY, "H1111" 1641ca13daefSMatthias Ringwald // LE PHY Update Complete is generated on completion 1642ca13daefSMatthias Ringwald }; 1643ca13daefSMatthias Ringwald 16440c1cf6c6SMatthias Ringwald /** 16450c1cf6c6SMatthias Ringwald * @param rx_channel 16460c1cf6c6SMatthias Ringwald * @param phy 16470c1cf6c6SMatthias Ringwald * @param modulation_index 16480c1cf6c6SMatthias Ringwald */ 16490c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_receiver_test_v2 = { 16500c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_RECEIVER_TEST_V2, "111" 16510c1cf6c6SMatthias Ringwald }; 16520c1cf6c6SMatthias Ringwald 16530c1cf6c6SMatthias Ringwald /** 16540c1cf6c6SMatthias Ringwald * @param tx_channel 16550c1cf6c6SMatthias Ringwald * @param test_data_length 16560c1cf6c6SMatthias Ringwald * @param packet_payload 16570c1cf6c6SMatthias Ringwald * @param phy 16580c1cf6c6SMatthias Ringwald */ 16590c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test_v2 = { 16600c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_TRANSMITTER_TEST_V2, "1111" 16610c1cf6c6SMatthias Ringwald }; 16620c1cf6c6SMatthias Ringwald 16630c1cf6c6SMatthias Ringwald /** 16640c1cf6c6SMatthias Ringwald * @param advertising_handle 16650c1cf6c6SMatthias Ringwald * @param random_address 16660c1cf6c6SMatthias Ringwald */ 16670c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_advertising_set_random_address = { 16680c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_ADVERTISING_SET_RANDOM_ADDRESS, "1B" 16690c1cf6c6SMatthias Ringwald }; 16700c1cf6c6SMatthias Ringwald 16710c1cf6c6SMatthias Ringwald /** 16720c1cf6c6SMatthias Ringwald * @param advertising_handle 16730c1cf6c6SMatthias Ringwald * @param advertising_event_properties 16740c1cf6c6SMatthias Ringwald * @param primary_advertising_interval_min in 0.625 ms, range: 0x000020..0xffffff 16750c1cf6c6SMatthias Ringwald * @param primary_advertising_interval_max in 0.625 ms, range: 0x000020..0xffffff 16760c1cf6c6SMatthias Ringwald * @param primary_advertising_channel_map 16770c1cf6c6SMatthias Ringwald * @param own_address_type 16780c1cf6c6SMatthias Ringwald * @param peer_address_type 16790c1cf6c6SMatthias Ringwald * @param peer_address 16800c1cf6c6SMatthias Ringwald * @param advertising_filter_policy 16810c1cf6c6SMatthias Ringwald * @param advertising_tx_power in dBm, range: -127..20 16820c1cf6c6SMatthias Ringwald * @param primary_advertising_phy 16830c1cf6c6SMatthias Ringwald * @param secondary_advertising_max_skip 16840c1cf6c6SMatthias Ringwald * @param secondary_advertising_phy 16850c1cf6c6SMatthias Ringwald * @param advertising_sid 16860c1cf6c6SMatthias Ringwald * @param scan_request_notification_enable 16870c1cf6c6SMatthias Ringwald */ 16880c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_advertising_parameters = { 16890c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_EXTENDED_ADVERTISING_PARAMETERS, "1233111B1111111" 16900c1cf6c6SMatthias Ringwald }; 16910c1cf6c6SMatthias Ringwald 16920c1cf6c6SMatthias Ringwald /** 16930c1cf6c6SMatthias Ringwald * @param advertising_handle 16940c1cf6c6SMatthias Ringwald * @param operation 16950c1cf6c6SMatthias Ringwald * @param fragment_preference 16960c1cf6c6SMatthias Ringwald * @param advertising_data_length 16970c1cf6c6SMatthias Ringwald * @param advertising_data 16980c1cf6c6SMatthias Ringwald */ 16990c1cf6c6SMatthias Ringwald 17000c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_advertising_data = { 17010c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_EXTENDED_ADVERTISING_DATA, "111JV" 17020c1cf6c6SMatthias Ringwald }; 17030c1cf6c6SMatthias Ringwald 17040c1cf6c6SMatthias Ringwald /** 17050c1cf6c6SMatthias Ringwald * @param advertising_handle 17060c1cf6c6SMatthias Ringwald * @param operation 17070c1cf6c6SMatthias Ringwald * @param fragment_preference 17080c1cf6c6SMatthias Ringwald * @param scan_response_data_length 17090c1cf6c6SMatthias Ringwald * @param scan_response_data 17100c1cf6c6SMatthias Ringwald */ 17110c1cf6c6SMatthias Ringwald 17120c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_scan_response_data = { 17130c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_EXTENDED_SCAN_RESPONSE_DATA, "111JV" 17140c1cf6c6SMatthias Ringwald }; 17150c1cf6c6SMatthias Ringwald 17160c1cf6c6SMatthias Ringwald /** 17170c1cf6c6SMatthias Ringwald * @param enable 17180c1cf6c6SMatthias Ringwald * @param num_sets 17190c1cf6c6SMatthias Ringwald * @param advertising_handle[i] 17200c1cf6c6SMatthias Ringwald * @param duration[i] 17210c1cf6c6SMatthias Ringwald * @param max_extended_advertising_events[i] 17220c1cf6c6SMatthias Ringwald */ 17230c1cf6c6SMatthias Ringwald 17240c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_advertising_enable = { 172527f212a7SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_EXTENDED_ADVERTISING_ENABLE, "1a[121]" 17260c1cf6c6SMatthias Ringwald }; 17270c1cf6c6SMatthias Ringwald 17280c1cf6c6SMatthias Ringwald /** 17290c1cf6c6SMatthias Ringwald */ 17300c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_maximum_advertising_data_length = { 17310c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_MAXIMUM_ADVERTISING_DATA_LENGTH, "" 17320c1cf6c6SMatthias Ringwald }; 17330c1cf6c6SMatthias Ringwald 17340c1cf6c6SMatthias Ringwald /** 17350c1cf6c6SMatthias Ringwald */ 17360c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_number_of_supported_advertising_sets = { 17370c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_NUMBER_OF_SUPPORTED_ADVERTISING_SETS, "" 17380c1cf6c6SMatthias Ringwald }; 17390c1cf6c6SMatthias Ringwald 17400c1cf6c6SMatthias Ringwald /** 17410c1cf6c6SMatthias Ringwald * @param advertising_handle 17420c1cf6c6SMatthias Ringwald */ 17430c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_advertising_set = { 17440c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOVE_ADVERTISING_SET, "1" 17450c1cf6c6SMatthias Ringwald }; 17460c1cf6c6SMatthias Ringwald 17470c1cf6c6SMatthias Ringwald /** 17480c1cf6c6SMatthias Ringwald */ 17490c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_clear_advertising_sets = { 17500c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_CLEAR_ADVERTISING_SETS, "" 17510c1cf6c6SMatthias Ringwald }; 17520c1cf6c6SMatthias Ringwald 17530c1cf6c6SMatthias Ringwald /** 17540c1cf6c6SMatthias Ringwald * @param advertising_handle 17550c1cf6c6SMatthias Ringwald * @param periodic_advertising_interval_min * 1.25 ms, range 0x0006..0xffff 17560c1cf6c6SMatthias Ringwald * @param periodic_advertising_interval_max * 1.25 ms, range 0x0006..0xffff 17570c1cf6c6SMatthias Ringwald * @param periodic_advertising_properties 17580c1cf6c6SMatthias Ringwald */ 17590c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_parameters = { 17600c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_PARAMETERS, "1222" 17610c1cf6c6SMatthias Ringwald }; 17620c1cf6c6SMatthias Ringwald 17630c1cf6c6SMatthias Ringwald /** 17640c1cf6c6SMatthias Ringwald * @param advertising_handle 17650c1cf6c6SMatthias Ringwald * @param operation 17660c1cf6c6SMatthias Ringwald * @param advertising_data_length 17670c1cf6c6SMatthias Ringwald * @param advertising_data 17680c1cf6c6SMatthias Ringwald */ 17690c1cf6c6SMatthias Ringwald 17700c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_data = { 17710c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_DATA, "11JV" 17720c1cf6c6SMatthias Ringwald }; 17730c1cf6c6SMatthias Ringwald 17740c1cf6c6SMatthias Ringwald /** 17750c1cf6c6SMatthias Ringwald * @param enable 17760c1cf6c6SMatthias Ringwald * @param advertising_handle 17770c1cf6c6SMatthias Ringwald */ 17780c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_enable = { 17790c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_ENABLE, "11" 17800c1cf6c6SMatthias Ringwald }; 17810c1cf6c6SMatthias Ringwald 17820c1cf6c6SMatthias Ringwald /** 17830c1cf6c6SMatthias Ringwald * @param own_address_type 17840c1cf6c6SMatthias Ringwald * @param scanning_filter_policy 17850c1cf6c6SMatthias Ringwald * @param scanning_phys 0 = LE 1M PHY | 2 = LE Coded PHY 178627f212a7SMatthias Ringwald * @param scan_type[i] 178727f212a7SMatthias Ringwald * @param scan_interval[i] * 0.625, range = 0x0004..0xffff 178827f212a7SMatthias Ringwald * @param scan_window[i] * 0.625, range = 0x0004..0xffff 17890c1cf6c6SMatthias Ringwald */ 17900c1cf6c6SMatthias Ringwald 17916ea37a0fSMatthias Ringwald const hci_cmd_t hci_le_set_extended_scan_parameters = { 17926ea37a0fSMatthias Ringwald HCI_OPCODE_HCI_LE_SET_EXTENDED_SCAN_PARAMETERS, "11b[122]" 17930c1cf6c6SMatthias Ringwald }; 17940c1cf6c6SMatthias Ringwald 17950c1cf6c6SMatthias Ringwald /** 17960c1cf6c6SMatthias Ringwald * @param enable 17970c1cf6c6SMatthias Ringwald * @param filter_duplicates 17980c1cf6c6SMatthias Ringwald * @param duration 0 = Scan continuously until explicitly disable, 10 ms 17990c1cf6c6SMatthias Ringwald * @param period 0 = Scan continuously, 1.28 s 18000c1cf6c6SMatthias Ringwald */ 18010c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_scan_enable = { 18020c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_EXTENDED_SCAN_ENABLE, "1122" 18030c1cf6c6SMatthias Ringwald }; 18040c1cf6c6SMatthias Ringwald 18050c1cf6c6SMatthias Ringwald /** 18060c1cf6c6SMatthias Ringwald * @param initiator_filter_policy 18070c1cf6c6SMatthias Ringwald * @param own_address_type 18080c1cf6c6SMatthias Ringwald * @param peer_address_type 18090c1cf6c6SMatthias Ringwald * @param peer_address 18100c1cf6c6SMatthias Ringwald * @param initiating_phys with bit 0 = LE 1M PHY, bit 1 = LE 2M PHY, bit 2 = Coded PHY 18110c1cf6c6SMatthias Ringwald * @param scan_interval[i] * 0.625 ms 18120c1cf6c6SMatthias Ringwald * @param scan_window[i] * 0.625 ms 18130c1cf6c6SMatthias Ringwald * @param connection_interval_min[i] * 1.25 ms 18140c1cf6c6SMatthias Ringwald * @param connection_interval_max[i] * 1.25 ms 18150c1cf6c6SMatthias Ringwald * @param connection_latency[i] 18160c1cf6c6SMatthias Ringwald * @param supervision_timeout[i] * 10 ms 18170c1cf6c6SMatthias Ringwald * @param min_ce_length[i] * 0.625 ms 18180c1cf6c6SMatthias Ringwald * @param max_ce_length[i] * 0.625 ms 18190c1cf6c6SMatthias Ringwald */ 18200c1cf6c6SMatthias Ringwald 18210c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_extended_create_connection = { 18220c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_EXTENDED_CREATE_CONNECTION, "111Bb[22222222]" 18230c1cf6c6SMatthias Ringwald }; 18240c1cf6c6SMatthias Ringwald 18250c1cf6c6SMatthias Ringwald /** 18260c1cf6c6SMatthias Ringwald * @param options 18270c1cf6c6SMatthias Ringwald * @param advertising_sid 18280c1cf6c6SMatthias Ringwald * @param advertiser_address_type 18290c1cf6c6SMatthias Ringwald * @param advertiser_address 18300c1cf6c6SMatthias Ringwald * @param skip 18310c1cf6c6SMatthias Ringwald * @param sync_timeout * 10 ms 18320c1cf6c6SMatthias Ringwald * @param sync_cte_type 18330c1cf6c6SMatthias Ringwald */ 18340c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_create_sync = { 18350c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_CREATE_SYNC, "111B221" 18360c1cf6c6SMatthias Ringwald }; 18370c1cf6c6SMatthias Ringwald 18380c1cf6c6SMatthias Ringwald /** 18390c1cf6c6SMatthias Ringwald */ 18400c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_create_sync_cancel = { 18410c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_CREATE_SYNC_CANCEL, "" 18420c1cf6c6SMatthias Ringwald }; 18430c1cf6c6SMatthias Ringwald 18440c1cf6c6SMatthias Ringwald /** 18450c1cf6c6SMatthias Ringwald * @param sync_handle 18460c1cf6c6SMatthias Ringwald */ 18470c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_terminate_sync = { 1848c0112d43SMatthias Ringwald HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_TERMINATE_SYNC, "2" 18490c1cf6c6SMatthias Ringwald }; 18500c1cf6c6SMatthias Ringwald 18510c1cf6c6SMatthias Ringwald /** 18520c1cf6c6SMatthias Ringwald * @param advertiser_address_type 18530c1cf6c6SMatthias Ringwald * @param advertiser_address 18540c1cf6c6SMatthias Ringwald * @param advertising_sid 18550c1cf6c6SMatthias Ringwald */ 18560c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_add_device_to_periodic_advertiser_list = { 18570c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_ADD_DEVICE_TO_PERIODIC_ADVERTISER_LIST, "1B1" 18580c1cf6c6SMatthias Ringwald }; 18590c1cf6c6SMatthias Ringwald 18600c1cf6c6SMatthias Ringwald /** 18610c1cf6c6SMatthias Ringwald * @param advertiser_address_type 18620c1cf6c6SMatthias Ringwald * @param advertiser_address 18630c1cf6c6SMatthias Ringwald * @param advertising_sid 18640c1cf6c6SMatthias Ringwald */ 18650c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_device_from_periodic_advertiser_list = { 18660c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISER_LIST, "1B1" 18670c1cf6c6SMatthias Ringwald }; 18680c1cf6c6SMatthias Ringwald 18690c1cf6c6SMatthias Ringwald /** 18700c1cf6c6SMatthias Ringwald */ 18710c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_clear_periodic_advertiser_list = { 18720c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_CLEAR_PERIODIC_ADVERTISER_LIST, "" 18730c1cf6c6SMatthias Ringwald }; 18740c1cf6c6SMatthias Ringwald 18750c1cf6c6SMatthias Ringwald /** 18760c1cf6c6SMatthias Ringwald */ 18770c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_periodic_advertiser_list_size = { 18780c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_PERIODIC_ADVERTISER_LIST_SIZE, "" 18790c1cf6c6SMatthias Ringwald }; 18800c1cf6c6SMatthias Ringwald 18810c1cf6c6SMatthias Ringwald /** 18820c1cf6c6SMatthias Ringwald */ 18830c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_transmit_power = { 18840c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_TRANSMIT_POWER, "" 18850c1cf6c6SMatthias Ringwald }; 18860c1cf6c6SMatthias Ringwald 18870c1cf6c6SMatthias Ringwald /** 18880c1cf6c6SMatthias Ringwald */ 18890c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_rf_path_compensation = { 18900c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_RF_PATH_COMPENSATION, "" 18910c1cf6c6SMatthias Ringwald }; 18920c1cf6c6SMatthias Ringwald 18930c1cf6c6SMatthias Ringwald /** 18940c1cf6c6SMatthias Ringwald * @param rf_tx_path_compensation_value * 0.1 dB, signed 18950c1cf6c6SMatthias Ringwald * @param rf_rx_path_compensation_value * 0.1 dB, signed 18960c1cf6c6SMatthias Ringwald */ 18970c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_write_rf_path_compensation = { 18980c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_WRITE_RF_PATH_COMPENSATION, "22" 18990c1cf6c6SMatthias Ringwald }; 19000c1cf6c6SMatthias Ringwald 19010c1cf6c6SMatthias Ringwald /** 19020c1cf6c6SMatthias Ringwald * @param peer_identity_address_type 19030c1cf6c6SMatthias Ringwald * @param peer_identity_address 19040c1cf6c6SMatthias Ringwald * @param privacy_mode 19050c1cf6c6SMatthias Ringwald */ 19060c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_privacy_mode = { 19070c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PRIVACY_MODE, "1B1" 19080c1cf6c6SMatthias Ringwald }; 19090c1cf6c6SMatthias Ringwald 19100c1cf6c6SMatthias Ringwald /** 19110c1cf6c6SMatthias Ringwald * @param rx_channel 19120c1cf6c6SMatthias Ringwald * @param phy 19130c1cf6c6SMatthias Ringwald * @param modulation_index 19140c1cf6c6SMatthias Ringwald * @param expected_cte_length 19150c1cf6c6SMatthias Ringwald * @param expected_cte_type 19160c1cf6c6SMatthias Ringwald * @param slot_durations 19170c1cf6c6SMatthias Ringwald * @param switching_pattern_length 19180c1cf6c6SMatthias Ringwald * @param antenna_ids[i] 19190c1cf6c6SMatthias Ringwald */ 19200c1cf6c6SMatthias Ringwald 19210c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_receiver_test_v3 = { 19220c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_RECEIVER_TEST_V3, "111111a[1]" 19230c1cf6c6SMatthias Ringwald }; 19240c1cf6c6SMatthias Ringwald 19250c1cf6c6SMatthias Ringwald /** 19260c1cf6c6SMatthias Ringwald * @param tx_channel 19270c1cf6c6SMatthias Ringwald * @param test_data_length 19280c1cf6c6SMatthias Ringwald * @param packet_payload 19290c1cf6c6SMatthias Ringwald * @param phy 19300c1cf6c6SMatthias Ringwald * @param cte_length 19310c1cf6c6SMatthias Ringwald * @param cte_type 19320c1cf6c6SMatthias Ringwald * @param switching_pattern_length 19330c1cf6c6SMatthias Ringwald * @param antenna_ids[i] 19340c1cf6c6SMatthias Ringwald */ 19350c1cf6c6SMatthias Ringwald 19360c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test_v3 = { 19370c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_TRANSMITTER_TEST_V3, "111111a[1]" 19380c1cf6c6SMatthias Ringwald }; 19390c1cf6c6SMatthias Ringwald 19400c1cf6c6SMatthias Ringwald /** 19410c1cf6c6SMatthias Ringwald * @param advertising_handle 19420c1cf6c6SMatthias Ringwald * @param cte_length 19430c1cf6c6SMatthias Ringwald * @param cte_type 19440c1cf6c6SMatthias Ringwald * @param cte_count 19450c1cf6c6SMatthias Ringwald * @param switching_pattern_length 19460c1cf6c6SMatthias Ringwald * @param antenna_ids[i] 19470c1cf6c6SMatthias Ringwald */ 19480c1cf6c6SMatthias Ringwald 19490c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connectionless_cte_transmit_parameters = { 19500c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_CONNECTIONLESS_CTE_TRANSMIT_PARAMETERS, "1111a[1]" 19510c1cf6c6SMatthias Ringwald }; 19520c1cf6c6SMatthias Ringwald 19530c1cf6c6SMatthias Ringwald /** 19540c1cf6c6SMatthias Ringwald * @param advertising_handle 19550c1cf6c6SMatthias Ringwald * @param cte_enable 19560c1cf6c6SMatthias Ringwald */ 19570c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connectionless_cte_transmit_enable = { 19580c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_CONNECTIONLESS_CTE_TRANSMIT_ENABLE, "11" 19590c1cf6c6SMatthias Ringwald }; 19600c1cf6c6SMatthias Ringwald 19610c1cf6c6SMatthias Ringwald /** 19620c1cf6c6SMatthias Ringwald * @param sync_handle 19630c1cf6c6SMatthias Ringwald * @param sampling_enable 19640c1cf6c6SMatthias Ringwald * @param slot_durations 19650c1cf6c6SMatthias Ringwald * @param max_sampled_ctes 19660c1cf6c6SMatthias Ringwald * @param switching_pattern_length 19670c1cf6c6SMatthias Ringwald * @param antenna_ids[i] 19680c1cf6c6SMatthias Ringwald */ 19690c1cf6c6SMatthias Ringwald 19700c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connectionless_iq_sampling_enable = { 19710c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_CONNECTIONLESS_IQ_SAMPLING_ENABLE, "2111a[i]" 19720c1cf6c6SMatthias Ringwald }; 19730c1cf6c6SMatthias Ringwald 19740c1cf6c6SMatthias Ringwald /** 19750c1cf6c6SMatthias Ringwald * @param connection_handle 19760c1cf6c6SMatthias Ringwald * @param sampling_enable 19770c1cf6c6SMatthias Ringwald * @param slot_durations 19780c1cf6c6SMatthias Ringwald * @param switching_pattern_length 19790c1cf6c6SMatthias Ringwald * @param antenna_ids[i] 19800c1cf6c6SMatthias Ringwald */ 19810c1cf6c6SMatthias Ringwald 19820c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connection_cte_receive_parameters = { 19830c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_CONNECTION_CTE_RECEIVE_PARAMETERS, "211a[1]" 19840c1cf6c6SMatthias Ringwald }; 19850c1cf6c6SMatthias Ringwald 19860c1cf6c6SMatthias Ringwald /** 19870c1cf6c6SMatthias Ringwald * @param connection_handle 19880c1cf6c6SMatthias Ringwald * @param cte_types 19890c1cf6c6SMatthias Ringwald * @param switching_pattern_length 19900c1cf6c6SMatthias Ringwald * @param antenna_ids[i] 19910c1cf6c6SMatthias Ringwald */ 19920c1cf6c6SMatthias Ringwald 19930c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connection_cte_transmit_parameters = { 19940c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_CONNECTION_CTE_TRANSMIT_PARAMETERS, "21a[1]" 19950c1cf6c6SMatthias Ringwald }; 19960c1cf6c6SMatthias Ringwald 19970c1cf6c6SMatthias Ringwald /** 19980c1cf6c6SMatthias Ringwald * @param connection_handle 19990c1cf6c6SMatthias Ringwald * @param enable 20000c1cf6c6SMatthias Ringwald * @param cte_request_interval 20010c1cf6c6SMatthias Ringwald * @param requested_cte_length 20020c1cf6c6SMatthias Ringwald * @param requested_cte_type 20030c1cf6c6SMatthias Ringwald */ 20040c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_connection_cte_request_enable = { 20050c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_CONNECTION_CTE_REQUEST_ENABLE, "H1211" 20060c1cf6c6SMatthias Ringwald }; 20070c1cf6c6SMatthias Ringwald 20080c1cf6c6SMatthias Ringwald /** 20090c1cf6c6SMatthias Ringwald * @param connection_handle 20100c1cf6c6SMatthias Ringwald * @param enable 20110c1cf6c6SMatthias Ringwald */ 20120c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_connection_cte_response_enable = { 20130c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_CONNECTION_CTE_RESPONSE_ENABLE, "H1" 20140c1cf6c6SMatthias Ringwald }; 20150c1cf6c6SMatthias Ringwald 20160c1cf6c6SMatthias Ringwald /** 20170c1cf6c6SMatthias Ringwald */ 20180c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_antenna_information = { 20190c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_ANTENNA_INFORMATION, "" 20200c1cf6c6SMatthias Ringwald }; 20210c1cf6c6SMatthias Ringwald 20220c1cf6c6SMatthias Ringwald /** 20230c1cf6c6SMatthias Ringwald * @param sync_handle 20240c1cf6c6SMatthias Ringwald * @param enable 20250c1cf6c6SMatthias Ringwald */ 20260c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_receive_enable = { 20270c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_RECEIVE_ENABLE, "H1" 20280c1cf6c6SMatthias Ringwald }; 20290c1cf6c6SMatthias Ringwald 20300c1cf6c6SMatthias Ringwald /** 20310c1cf6c6SMatthias Ringwald * @param connection_handle 20320c1cf6c6SMatthias Ringwald * @param service_data 20330c1cf6c6SMatthias Ringwald * @param sync_handle 20340c1cf6c6SMatthias Ringwald */ 20350c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_sync_transfer = { 20360c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_SYNC_TRANSFER, "H22" 20370c1cf6c6SMatthias Ringwald }; 20380c1cf6c6SMatthias Ringwald 20390c1cf6c6SMatthias Ringwald /** 20400c1cf6c6SMatthias Ringwald * @param connection_handle 20410c1cf6c6SMatthias Ringwald * @param service_data 20420c1cf6c6SMatthias Ringwald * @param advertising_handle 20430c1cf6c6SMatthias Ringwald */ 20440c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_set_info_transfer = { 20450c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_SET_INFO_TRANSFER, "H21" 20460c1cf6c6SMatthias Ringwald }; 20470c1cf6c6SMatthias Ringwald 20480c1cf6c6SMatthias Ringwald /** 20490c1cf6c6SMatthias Ringwald * @param connection_handle 20500c1cf6c6SMatthias Ringwald * @param mode 20510c1cf6c6SMatthias Ringwald * @param skip 20520c1cf6c6SMatthias Ringwald * @param sync_timeout 20530c1cf6c6SMatthias Ringwald * @param cte_type 20540c1cf6c6SMatthias Ringwald */ 20550c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_sync_transfer_parameters = { 20560c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_SYNC_TRANSFER_PARAMETERS, "H1221" 20570c1cf6c6SMatthias Ringwald }; 20580c1cf6c6SMatthias Ringwald 20590c1cf6c6SMatthias Ringwald /** 20600c1cf6c6SMatthias Ringwald * @param mode 20610c1cf6c6SMatthias Ringwald * @param skip 20620c1cf6c6SMatthias Ringwald * @param sync_timeout 20630c1cf6c6SMatthias Ringwald * @param cte_type 20640c1cf6c6SMatthias Ringwald */ 20650c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_default_periodic_advertising_sync_transfer_parameters = { 20660c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_DEFAULT_PERIODIC_ADVERTISING_SYNC_TRANSFER_PARAMETERS, "1221" 20670c1cf6c6SMatthias Ringwald }; 20680c1cf6c6SMatthias Ringwald 20690c1cf6c6SMatthias Ringwald /** 20700c1cf6c6SMatthias Ringwald * @param 256Remote_P-256_public_key_x 20710c1cf6c6SMatthias Ringwald * @param 256Remote_P-256_public_key_y 20720c1cf6c6SMatthias Ringwald * @param key_type 20730c1cf6c6SMatthias Ringwald */ 20740c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_generate_dhkey_v2 = { 20750c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_GENERATE_DHKEY_V2, "QQ1" 20760c1cf6c6SMatthias Ringwald }; 20770c1cf6c6SMatthias Ringwald 20780c1cf6c6SMatthias Ringwald /** 20790c1cf6c6SMatthias Ringwald * @param action 20800c1cf6c6SMatthias Ringwald */ 20810c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_modify_sleep_clock_accuracy = { 20820c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_MODIFY_SLEEP_CLOCK_ACCURACY, "1" 20830c1cf6c6SMatthias Ringwald }; 20840c1cf6c6SMatthias Ringwald 20850c1cf6c6SMatthias Ringwald /** 20860c1cf6c6SMatthias Ringwald */ 2087b3e0a1b9SMatthias Ringwald const hci_cmd_t hci_le_read_buffer_size_v2 = { 2088b3e0a1b9SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_BUFFER_SIZE_V2, "" 20890c1cf6c6SMatthias Ringwald }; 20900c1cf6c6SMatthias Ringwald 20910c1cf6c6SMatthias Ringwald /** 20920c1cf6c6SMatthias Ringwald * @param connection_handle 20930c1cf6c6SMatthias Ringwald */ 20940c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_iso_tx_sync = { 20950c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_ISO_TX_SYNC, "H" 20960c1cf6c6SMatthias Ringwald }; 20970c1cf6c6SMatthias Ringwald 20980c1cf6c6SMatthias Ringwald /** 20990c1cf6c6SMatthias Ringwald * @param cig_id 21000c1cf6c6SMatthias Ringwald * @param sdu_interval_m_to_s 21010c1cf6c6SMatthias Ringwald * @param sdu_interval_s_to_m 21020c1cf6c6SMatthias Ringwald * @param slaves_clock_accuracy 21030c1cf6c6SMatthias Ringwald * @param packing 21040c1cf6c6SMatthias Ringwald * @param framing 21050c1cf6c6SMatthias Ringwald * @param max_transport_latency_m_to_s 21060c1cf6c6SMatthias Ringwald * @param max_transport_latency_s_to_m 21070c1cf6c6SMatthias Ringwald * @param cis_count 21080c1cf6c6SMatthias Ringwald * @param cis_id[i] 21090c1cf6c6SMatthias Ringwald * @param max_sdu_m_to_s[i] 21100c1cf6c6SMatthias Ringwald * @param max_sdu_s_to_m[i] 21110c1cf6c6SMatthias Ringwald * @param phy_m_to_s[i] 21120c1cf6c6SMatthias Ringwald * @param phy_s_to_m[i] 21130c1cf6c6SMatthias Ringwald * @param rtn_m_to_s[i] 21140c1cf6c6SMatthias Ringwald * @param rtn_s_to_m[i] 21150c1cf6c6SMatthias Ringwald */ 21160c1cf6c6SMatthias Ringwald 21170c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_cig_parameters = { 21180c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_CIG_PARAMETERS, "13311122a[1221111]" 21190c1cf6c6SMatthias Ringwald }; 21200c1cf6c6SMatthias Ringwald 21210c1cf6c6SMatthias Ringwald /** 21220c1cf6c6SMatthias Ringwald * @param cig_id 21230c1cf6c6SMatthias Ringwald * @param sdu_interval_m_to_s 21240c1cf6c6SMatthias Ringwald * @param sdu_interval_s_to_m 21250c1cf6c6SMatthias Ringwald * @param ft_m_to_s 21260c1cf6c6SMatthias Ringwald * @param ft_s_to_m 21270c1cf6c6SMatthias Ringwald * @param iso_interval 21280c1cf6c6SMatthias Ringwald * @param slaves_clock_accuracy 21290c1cf6c6SMatthias Ringwald * @param packing 21300c1cf6c6SMatthias Ringwald * @param framing 21310c1cf6c6SMatthias Ringwald * @param max_transport_latency_m_to_s 21320c1cf6c6SMatthias Ringwald * @param max_transport_latency_s_to_m 21330c1cf6c6SMatthias Ringwald * @param cis_count 21340c1cf6c6SMatthias Ringwald * @param cis_id[i] 21350c1cf6c6SMatthias Ringwald * @param nse[i] 21360c1cf6c6SMatthias Ringwald * @param max_sdu_m_to_s[i] 21370c1cf6c6SMatthias Ringwald * @param max_sdu_s_to_m[i] 21380c1cf6c6SMatthias Ringwald * @param max_pdu_m_to_s[i] 21390c1cf6c6SMatthias Ringwald * @param max_pdu_s_to_m[i] 21400c1cf6c6SMatthias Ringwald * @param phy_m_to_s[i] 21410c1cf6c6SMatthias Ringwald * @param phy_s_to_m[i] 21420c1cf6c6SMatthias Ringwald * @param bn_m_to_s[i] 21430c1cf6c6SMatthias Ringwald * @param bn_s_to_m[i] 21440c1cf6c6SMatthias Ringwald */ 21450c1cf6c6SMatthias Ringwald 21460c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_cig_parameters_test = { 21470c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_CIG_PARAMETERS_TEST, "133112111a[1122221111]" 21480c1cf6c6SMatthias Ringwald }; 21490c1cf6c6SMatthias Ringwald 21500c1cf6c6SMatthias Ringwald /** 21510c1cf6c6SMatthias Ringwald * @param cis_count 21520c1cf6c6SMatthias Ringwald * @param cis_connection_handle[i] 21530c1cf6c6SMatthias Ringwald * @param acl_connection_handle[i] 21540c1cf6c6SMatthias Ringwald */ 21550c1cf6c6SMatthias Ringwald 21560c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_create_cis = { 21570c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_CREATE_CIS, "a[22]" 21580c1cf6c6SMatthias Ringwald }; 21590c1cf6c6SMatthias Ringwald 21600c1cf6c6SMatthias Ringwald /** 21610c1cf6c6SMatthias Ringwald * @param cig_id 21620c1cf6c6SMatthias Ringwald */ 21630c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_cig = { 21640c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOVE_CIG, "1" 21650c1cf6c6SMatthias Ringwald }; 21660c1cf6c6SMatthias Ringwald 21670c1cf6c6SMatthias Ringwald /** 21680c1cf6c6SMatthias Ringwald * @param connection_handle 21690c1cf6c6SMatthias Ringwald */ 21700c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_accept_cis_request = { 21710c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_ACCEPT_CIS_REQUEST, "H" 21720c1cf6c6SMatthias Ringwald }; 21730c1cf6c6SMatthias Ringwald 21740c1cf6c6SMatthias Ringwald /** 21750c1cf6c6SMatthias Ringwald * @param connection_handle 21760c1cf6c6SMatthias Ringwald */ 21770c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_reject_cis_request = { 21780c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_REJECT_CIS_REQUEST, "H" 21790c1cf6c6SMatthias Ringwald }; 21800c1cf6c6SMatthias Ringwald 21810c1cf6c6SMatthias Ringwald /** 21820c1cf6c6SMatthias Ringwald * @param big_handle 21830c1cf6c6SMatthias Ringwald * @param advertising_handle 21840c1cf6c6SMatthias Ringwald * @param num_bis 21850c1cf6c6SMatthias Ringwald * @param sdu_interval 21860c1cf6c6SMatthias Ringwald * @param max_sdu 21870c1cf6c6SMatthias Ringwald * @param max_transport_latency 21880c1cf6c6SMatthias Ringwald * @param rtn 21890c1cf6c6SMatthias Ringwald * @param phy 21900c1cf6c6SMatthias Ringwald * @param packing 21910c1cf6c6SMatthias Ringwald * @param framing 21920c1cf6c6SMatthias Ringwald * @param encryption 21930c1cf6c6SMatthias Ringwald * @param broadcast_code 21940c1cf6c6SMatthias Ringwald */ 21950c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_create_big = { 21960c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_CREATE_BIG, "11132211111P" 21970c1cf6c6SMatthias Ringwald }; 21980c1cf6c6SMatthias Ringwald 21990c1cf6c6SMatthias Ringwald /** 22000c1cf6c6SMatthias Ringwald * @param big_handle 22010c1cf6c6SMatthias Ringwald * @param advertising_handle 22020c1cf6c6SMatthias Ringwald * @param num_bis 22030c1cf6c6SMatthias Ringwald * @param sdu_interval 22040c1cf6c6SMatthias Ringwald * @param iso_interval 22050c1cf6c6SMatthias Ringwald * @param nse 22060c1cf6c6SMatthias Ringwald * @param max_sdu 22070c1cf6c6SMatthias Ringwald * @param max_PDU 22080c1cf6c6SMatthias Ringwald * @param phy 22090c1cf6c6SMatthias Ringwald * @param packing 22100c1cf6c6SMatthias Ringwald * @param framing 22110c1cf6c6SMatthias Ringwald * @param bn 22120c1cf6c6SMatthias Ringwald * @param irc 22130c1cf6c6SMatthias Ringwald * @param pto 22140c1cf6c6SMatthias Ringwald * @param encryption 22150c1cf6c6SMatthias Ringwald * @param broadcast_code 22160c1cf6c6SMatthias Ringwald */ 22170c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_create_big_test = { 22180c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_CREATE_BIG_TEST, "111321221111111P" 22190c1cf6c6SMatthias Ringwald }; 22200c1cf6c6SMatthias Ringwald 22210c1cf6c6SMatthias Ringwald /** 22220c1cf6c6SMatthias Ringwald * @param big_handle 22230c1cf6c6SMatthias Ringwald * @param reason 22240c1cf6c6SMatthias Ringwald */ 22250c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_terminate_big = { 22260c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_TERMINATE_BIG, "11" 22270c1cf6c6SMatthias Ringwald }; 22280c1cf6c6SMatthias Ringwald 22290c1cf6c6SMatthias Ringwald /** 22300c1cf6c6SMatthias Ringwald * @param big_handle 22310c1cf6c6SMatthias Ringwald * @param sync_handle 22320c1cf6c6SMatthias Ringwald * @param encryption 22330c1cf6c6SMatthias Ringwald * @param broadcast_code 22340c1cf6c6SMatthias Ringwald * @param mse 22350c1cf6c6SMatthias Ringwald * @param big_sync_timeout 22360c1cf6c6SMatthias Ringwald * @param num_bis 22370c1cf6c6SMatthias Ringwald * @param bis[i] 22380c1cf6c6SMatthias Ringwald */ 22390c1cf6c6SMatthias Ringwald 22400c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_big_create_sync = { 22410c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_BIG_CREATE_SYNC, "1H1P12a[1]" 22420c1cf6c6SMatthias Ringwald }; 22430c1cf6c6SMatthias Ringwald 22440c1cf6c6SMatthias Ringwald /** 22450c1cf6c6SMatthias Ringwald * @param big_handle 22460c1cf6c6SMatthias Ringwald */ 22470c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_big_terminate_sync = { 2248c0112d43SMatthias Ringwald HCI_OPCODE_HCI_LE_BIG_TERMINATE_SYNC, "1" 22490c1cf6c6SMatthias Ringwald }; 22500c1cf6c6SMatthias Ringwald 22510c1cf6c6SMatthias Ringwald /** 22520c1cf6c6SMatthias Ringwald * @param connection_handle 22530c1cf6c6SMatthias Ringwald */ 22540c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_request_peer_sca = { 22550c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_REQUEST_PEER_SCA, "H" 22560c1cf6c6SMatthias Ringwald }; 22570c1cf6c6SMatthias Ringwald 22580c1cf6c6SMatthias Ringwald /** 22590c1cf6c6SMatthias Ringwald * @param connection_handle 22600c1cf6c6SMatthias Ringwald * @param data_path_direction 22610c1cf6c6SMatthias Ringwald * @param data_path_id 22620c1cf6c6SMatthias Ringwald * @param codec_id_coding_format 22630c1cf6c6SMatthias Ringwald * @param codec_id_company_identifier (Shall be ignored if codec_id_coding_format is not 0xFF) 22640c1cf6c6SMatthias Ringwald * @param codec_id_vendor_codec_id (Shall be ignored if codec_id_coding_format is not 0xFF) 22650c1cf6c6SMatthias Ringwald * @param controller_delay 22660c1cf6c6SMatthias Ringwald * @param codec_configuration_length 22670c1cf6c6SMatthias Ringwald * @param codec_configuration 22680c1cf6c6SMatthias Ringwald */ 22690c1cf6c6SMatthias Ringwald 22700c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_setup_iso_data_path = { 22710c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SETUP_ISO_DATA_PATH, "H111223JV" 22720c1cf6c6SMatthias Ringwald }; 22730c1cf6c6SMatthias Ringwald 22740c1cf6c6SMatthias Ringwald /** 22750c1cf6c6SMatthias Ringwald * @param connection_handle 22760c1cf6c6SMatthias Ringwald */ 22770c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_iso_data_path = { 22780c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOVE_ISO_DATA_PATH, "H1" 22790c1cf6c6SMatthias Ringwald }; 22800c1cf6c6SMatthias Ringwald 22810c1cf6c6SMatthias Ringwald /** 22820c1cf6c6SMatthias Ringwald * @param connection_handle 22830c1cf6c6SMatthias Ringwald * @param paylaod_type 22840c1cf6c6SMatthias Ringwald */ 22850c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_transmit_test = { 22860c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_ISO_TRANSMIT_TEST, "H1" 22870c1cf6c6SMatthias Ringwald }; 22880c1cf6c6SMatthias Ringwald 22890c1cf6c6SMatthias Ringwald /** 22900c1cf6c6SMatthias Ringwald * @param connection_handle 22910c1cf6c6SMatthias Ringwald * @param paylaod_type 22920c1cf6c6SMatthias Ringwald */ 22930c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_receive_test = { 22940c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_ISO_RECEIVE_TEST, "H1" 22950c1cf6c6SMatthias Ringwald }; 22960c1cf6c6SMatthias Ringwald 22970c1cf6c6SMatthias Ringwald /** 22980c1cf6c6SMatthias Ringwald * @param connection_handle 22990c1cf6c6SMatthias Ringwald */ 23000c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_read_test_counters = { 23010c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_ISO_READ_TEST_COUNTERS, "H" 23020c1cf6c6SMatthias Ringwald }; 23030c1cf6c6SMatthias Ringwald 23040c1cf6c6SMatthias Ringwald /** 23050c1cf6c6SMatthias Ringwald * @param connection_handle 23060c1cf6c6SMatthias Ringwald */ 23070c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_test_end = { 23080c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_ISO_TEST_END, "H" 23090c1cf6c6SMatthias Ringwald }; 23100c1cf6c6SMatthias Ringwald 23110c1cf6c6SMatthias Ringwald /** 23120c1cf6c6SMatthias Ringwald * @param bit_number 23130c1cf6c6SMatthias Ringwald * @param bit_value 23140c1cf6c6SMatthias Ringwald */ 23150c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_host_feature = { 23160c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_HOST_FEATURE, "11" 23170c1cf6c6SMatthias Ringwald }; 23180c1cf6c6SMatthias Ringwald 23190c1cf6c6SMatthias Ringwald /** 23200c1cf6c6SMatthias Ringwald * @param connection_handle 23210c1cf6c6SMatthias Ringwald */ 23220c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_iso_link_quality = { 23230c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_ISO_LINK_QUALITY, "H" 23240c1cf6c6SMatthias Ringwald }; 23250c1cf6c6SMatthias Ringwald 23260c1cf6c6SMatthias Ringwald /** 23270c1cf6c6SMatthias Ringwald * @param connection_handle 23280c1cf6c6SMatthias Ringwald * @param phy 23290c1cf6c6SMatthias Ringwald */ 23300c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_enhanced_read_transmit_power_level = { 23310c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_ENHANCED_READ_TRANSMIT_POWER_LEVEL, "H1" 23320c1cf6c6SMatthias Ringwald }; 23330c1cf6c6SMatthias Ringwald 23340c1cf6c6SMatthias Ringwald /** 23350c1cf6c6SMatthias Ringwald * @param connection_handle 23360c1cf6c6SMatthias Ringwald * @param phy 23370c1cf6c6SMatthias Ringwald */ 23380c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_remote_transmit_power_level = { 23390c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_REMOTE_TRANSMIT_POWER_LEVEL, "H1" 23400c1cf6c6SMatthias Ringwald }; 23410c1cf6c6SMatthias Ringwald 23420c1cf6c6SMatthias Ringwald /** 23430c1cf6c6SMatthias Ringwald * @param connection_handle 23440c1cf6c6SMatthias Ringwald * @param high_threshold 23450c1cf6c6SMatthias Ringwald * @param high_hysteresis 23460c1cf6c6SMatthias Ringwald * @param low_threshold 23470c1cf6c6SMatthias Ringwald * @param low_hysteresis 23480c1cf6c6SMatthias Ringwald * @param min_time_spent 23490c1cf6c6SMatthias Ringwald */ 23500c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_path_loss_reporting_parameters = { 23510c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PATH_LOSS_REPORTING_PARAMETERS, "211112" 23520c1cf6c6SMatthias Ringwald }; 23530c1cf6c6SMatthias Ringwald 23540c1cf6c6SMatthias Ringwald /** 23550c1cf6c6SMatthias Ringwald * @param connection_handle 23560c1cf6c6SMatthias Ringwald * @param enable 23570c1cf6c6SMatthias Ringwald */ 23580c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_path_loss_reporting_enable = { 23590c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PATH_LOSS_REPORTING_ENABLE, "H1" 23600c1cf6c6SMatthias Ringwald }; 23610c1cf6c6SMatthias Ringwald 23620c1cf6c6SMatthias Ringwald /** 23630c1cf6c6SMatthias Ringwald * @param connection_handle 23640c1cf6c6SMatthias Ringwald * @param local_enable 23650c1cf6c6SMatthias Ringwald * @param remote_enable 23660c1cf6c6SMatthias Ringwald */ 23670c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_transmit_power_reporting_enable = { 23680c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_TRANSMIT_POWER_REPORTING_ENABLE, "H11" 23690c1cf6c6SMatthias Ringwald }; 23700c1cf6c6SMatthias Ringwald 23710c1cf6c6SMatthias Ringwald /** 23720c1cf6c6SMatthias Ringwald * @param tx_channel 23730c1cf6c6SMatthias Ringwald * @param test_data_length 23740c1cf6c6SMatthias Ringwald * @param packet_payload 23750c1cf6c6SMatthias Ringwald * @param phy 23760c1cf6c6SMatthias Ringwald * @param cte_length 23770c1cf6c6SMatthias Ringwald * @param cte_type 23780c1cf6c6SMatthias Ringwald * @param switching_pattern_length 23790c1cf6c6SMatthias Ringwald * @param antenna_ids[i] 23800c1cf6c6SMatthias Ringwald * @param transmit_power_level 23810c1cf6c6SMatthias Ringwald */ 23820c1cf6c6SMatthias Ringwald 23830c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test_v4 = { 23840c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_TRANSMITTER_TEST_V4, "111111a[1]1" 23850c1cf6c6SMatthias Ringwald }; 2386ca13daefSMatthias Ringwald 238756042629SMatthias Ringwald #endif 2388a42798c3SMatthias Ringwald 2389a42798c3SMatthias Ringwald // Broadcom / Cypress specific HCI commands 2390a42798c3SMatthias Ringwald 2391a42798c3SMatthias Ringwald /** 2392067ecc36SMatthias Ringwald * @brief Enable Wide-Band Speech / mSBC decoding for PCM 2393067ecc36SMatthias Ringwald * @param enable_wbs is 0 for disable, 1 for enable 2394067ecc36SMatthias Ringwald * @param uuid_wbs is 2 for EV2/EV3 2395067ecc36SMatthias Ringwald */ 2396067ecc36SMatthias Ringwald const hci_cmd_t hci_bcm_enable_wbs = { 2397067ecc36SMatthias Ringwald HCI_OPCODE_HCI_BCM_ENABLE_WBS, "12" 2398067ecc36SMatthias Ringwald // return: status 2399067ecc36SMatthias Ringwald }; 2400067ecc36SMatthias Ringwald 2401067ecc36SMatthias Ringwald /** 2402a42798c3SMatthias Ringwald * @brief Configure SCO Routing (BCM) 2403a42798c3SMatthias Ringwald * @param sco_routing is 0 for PCM, 1 for Transport, 2 for Codec and 3 for I2S 2404a42798c3SMatthias Ringwald * @param pcm_interface_rate is 0 for 128KBps, 1 for 256 KBps, 2 for 512KBps, 3 for 1024KBps, and 4 for 2048Kbps 2405a42798c3SMatthias Ringwald * @param frame_type is 0 for short and 1 for long 2406a42798c3SMatthias Ringwald * @param sync_mode is 0 for slave and 1 for master 2407a42798c3SMatthias Ringwald * @param clock_mode is 0 for slabe and 1 for master 2408a42798c3SMatthias Ringwald */ 2409a42798c3SMatthias Ringwald const hci_cmd_t hci_bcm_write_sco_pcm_int = { 2410ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_BCM_WRITE_SCO_PCM_INT, "11111" 2411a42798c3SMatthias Ringwald // return: status 2412a42798c3SMatthias Ringwald }; 2413eab6959fSMatthias Ringwald 2414eab6959fSMatthias Ringwald /** 2415067ecc36SMatthias Ringwald * @brief Configure the I2S/PCM interface (BCM) 2416067ecc36SMatthias Ringwald * @param i2s_enable is 0 for off, 1 for on 2417067ecc36SMatthias Ringwald * @param is_master is 0 for slave, is 1 for master 2418067ecc36SMatthias Ringwald * @param sample_rate is 0 for 8 kHz, 1 for 16 kHz, 2 for 4 kHz 2419067ecc36SMatthias 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 2420067ecc36SMatthias Ringwald * @param clock_mode is 0 for slabe and 1 for master 2421067ecc36SMatthias Ringwald */ 2422067ecc36SMatthias Ringwald const hci_cmd_t hci_bcm_write_i2spcm_interface_param = { 2423067ecc36SMatthias Ringwald HCI_OPCODE_HCI_BCM_WRITE_I2SPCM_INTERFACE_PARAM, "1111" 2424067ecc36SMatthias Ringwald // return: status 2425067ecc36SMatthias Ringwald }; 2426067ecc36SMatthias Ringwald 2427067ecc36SMatthias Ringwald 2428067ecc36SMatthias Ringwald /** 2429eab6959fSMatthias Ringwald * @brief Activates selected Sleep Mode 2430eab6959fSMatthias 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 2431eab6959fSMatthias Ringwald * @param idle_threshold_host (modes 1,2,5,7) time until considered idle, unit roughly 300 ms 2432eab6959fSMatthias Ringwald * @param idle_threshold_controller (modes 1-7,9) time until considered idle, unit roughly 300 ms 2433eab6959fSMatthias Ringwald * @param bt_wake_active_mode (modes 1,2,7) 0 = BT_WAKE line is active high, 1 = BT_WAKE is active low 2434eab6959fSMatthias Ringwald * @param host_wake_active_mode (modes 1,2,5,7) 0 = HOST_WAKE line is active high, 1 = HOST_WAKE is active low 2435eab6959fSMatthias Ringwald * @param allow_host_sleep_during_sco (modes 1,2,3,5,7) 2436eab6959fSMatthias Ringwald * @param combine_sleep_mode_and_lpm (modes 1,2,3,5,7) 2437eab6959fSMatthias Ringwald * @param enable_tristate_control_of_uart_tx_line (modes 1,2,7) 2438eab6959fSMatthias Ringwald * @param active_connection_handling_on_suspend (modes 3,5) 2439eab6959fSMatthias Ringwald * @param resume_timeout (modes 3,5) 2440eab6959fSMatthias Ringwald * @param enable_break_to_host (mode 12) 2441eab6959fSMatthias Ringwald * @param pulsed_host_wake (modes 1,12) 2442eab6959fSMatthias Ringwald */ 2443eab6959fSMatthias Ringwald const hci_cmd_t hci_bcm_set_sleep_mode = { 2444ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_BCM_SET_SLEEP_MODE, "111111111111" 2445eab6959fSMatthias Ringwald }; 24465cdaddfaSMatthias Ringwald 24475cdaddfaSMatthias Ringwald /** 24485cdaddfaSMatthias Ringwald * @brief Set TX Power Table 24495cdaddfaSMatthias Ringwald * @param is_le 0=classic, 1=LE 24505cdaddfaSMatthias Ringwald * @param chip_max_tx_pwr_db chip level max TX power in dBM 24515cdaddfaSMatthias Ringwald */ 24525cdaddfaSMatthias Ringwald const hci_cmd_t hci_bcm_write_tx_power_table = { 2453ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_BCM_WRITE_TX_POWER_TABLE, "11" 24545cdaddfaSMatthias Ringwald }; 24555cdaddfaSMatthias Ringwald 24565cdaddfaSMatthias Ringwald const hci_cmd_t hci_bcm_set_tx_pwr = { 2457ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_BCM_SET_TX_PWR, "11H" 24585cdaddfaSMatthias Ringwald }; 2459ba39ed56SMatthias Ringwald 2460ba39ed56SMatthias Ringwald /** 246115fca961SMatthias Ringwald * @brief This command starts receiving packets using packet transmission parameters such as 246215fca961SMatthias Ringwald * frequency channel, packet type, and packet length. It is used for Packet RX. 246315fca961SMatthias Ringwald * @see https://processors.wiki.ti.com/index.php/CC256x_Testing_Guide#Continuous_RX 246415fca961SMatthias Ringwald * @param frequency 246515fca961SMatthias Ringwald * @param ADPLL loop mode 246615fca961SMatthias Ringwald */ 246715fca961SMatthias Ringwald const hci_cmd_t hci_ti_drpb_tester_con_rx = { 246815fca961SMatthias Ringwald 0xFD17, "11" 246915fca961SMatthias Ringwald }; 247015fca961SMatthias Ringwald 247115fca961SMatthias Ringwald /** 2472ba39ed56SMatthias Ringwald * 2473ba39ed56SMatthias Ringwald * 2474ba39ed56SMatthias Ringwald * @brief This command tests the RF transceiver in continuous transmission mode. 2475ba39ed56SMatthias Ringwald * The transmitter is activated by configuring the transmission parameters such as pattern, 2476ba39ed56SMatthias Ringwald * modulation, and frequency. 2477ba39ed56SMatthias Ringwald * @see processors.wiki.ti.com/index.php/CC256x_VS_HCI_Commands#HCI_VS_DRPb_Tester_Con_TX.280xFD84.29 2478ba39ed56SMatthias Ringwald * @param modulation 247915fca961SMatthias Ringwald * @param test_pattern 2480ba39ed56SMatthias Ringwald * @param frequency 2481ba39ed56SMatthias Ringwald * @param power_level 2482ba39ed56SMatthias Ringwald * @param reserved1 2483ba39ed56SMatthias Ringwald * @param reserved2 2484ba39ed56SMatthias Ringwald */ 2485ba39ed56SMatthias Ringwald const hci_cmd_t hci_ti_drpb_tester_con_tx = { 2486ba39ed56SMatthias Ringwald 0xFD84, "111144" 2487ba39ed56SMatthias Ringwald }; 2488ba39ed56SMatthias Ringwald 2489ba39ed56SMatthias Ringwald /** 2490ba39ed56SMatthias Ringwald * @brief This command starts sending/receiving packets using packet transmission parameters such as 2491ba39ed56SMatthias Ringwald * frequency channel, packet type, and packet length. It is used for Packet TX/RX. 2492ba39ed56SMatthias Ringwald * @see processors.wiki.ti.com/index.php/CC256x_VS_HCI_Commands#HCI_VS_DRPb_Tester_Packet_TX_RX_.280xFD85.29 2493ba39ed56SMatthias Ringwald * @param frequency_mode 2494ba39ed56SMatthias Ringwald * @param tx_single_frequency 2495ba39ed56SMatthias Ringwald * @param rx_single_frequency 2496ba39ed56SMatthias Ringwald * @param acl_packet_type 2497ba39ed56SMatthias Ringwald * @paarm acl_packet_data_pattern 2498ba39ed56SMatthias Ringwald * @param reserved 2499ba39ed56SMatthias Ringwald * @param power_level 2500ba39ed56SMatthias Ringwald * @param disable_whitening 2501ba39ed56SMatthias Ringwald * @param prbs9_initialization_value 2502ba39ed56SMatthias Ringwald */ 2503ba39ed56SMatthias Ringwald const hci_cmd_t hci_ti_drpb_tester_packet_tx_rx = { 2504ba39ed56SMatthias Ringwald 0xFD85, "1111112112" 2505ba39ed56SMatthias Ringwald }; 2506365a7dd1SMatthias Ringwald 2507733a7793SMatthias Ringwald 2508733a7793SMatthias Ringwald /** 2509733a7793SMatthias Ringwald * @param best effort access percentage 2510733a7793SMatthias Ringwald * @param guaranteed access percentage 2511733a7793SMatthias Ringwald * @param poll period 2512733a7793SMatthias Ringwald * @param slave burst after tx 2513733a7793SMatthias Ringwald * @param slave master search count 2514733a7793SMatthias Ringwald * @param master burst after tx enable 2515733a7793SMatthias Ringwald * @param master burst after rx limit 2516733a7793SMatthias Ringwald */ 2517cf26f982SMatthias Ringwald const hci_cmd_t hci_ti_configure_ddip = { 2518733a7793SMatthias Ringwald HCI_OPCODE_HCI_TI_VS_CONFIGURE_DDIP, "1111111" 2519733a7793SMatthias Ringwald }; 2520733a7793SMatthias Ringwald 2521365a7dd1SMatthias Ringwald /** 2522365a7dd1SMatthias Ringwald * @brief This command is used to associate the requested ACL handle with Wide Band Speech configuration. 2523365a7dd1SMatthias Ringwald * @param enable 0=disable, 1=enable 2524365a7dd1SMatthias Ringwald * @param a3dp_role (NL5500, WL128x only) 0=source,1=sink 2525365a7dd1SMatthias Ringwald * @param code_upload (NL5500, WL128x only) 0=do not load a3dp code, 1=load a3dp code 2526365a7dd1SMatthias Ringwald * @param reserved for future use 2527365a7dd1SMatthias Ringwald */ 2528365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_avrp_enable = { 2529365a7dd1SMatthias Ringwald 0xFD92, "1112" 2530365a7dd1SMatthias Ringwald }; 2531365a7dd1SMatthias Ringwald 2532365a7dd1SMatthias Ringwald /** 2533365a7dd1SMatthias Ringwald * @brief This command is used to associate the requested ACL handle with Wide Band Speech configuration. 2534365a7dd1SMatthias Ringwald * @param acl_con_handle 2535365a7dd1SMatthias Ringwald */ 2536365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_wbs_associate = { 2537365a7dd1SMatthias Ringwald 0xFD78, "H" 2538365a7dd1SMatthias Ringwald }; 2539365a7dd1SMatthias Ringwald 2540365a7dd1SMatthias Ringwald /** 2541365a7dd1SMatthias Ringwald * @brief This command is used to disassociate Wide Band Speech configuration from any ACL handle. 2542365a7dd1SMatthias Ringwald */ 2543365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_wbs_disassociate = { 2544365a7dd1SMatthias Ringwald 0xFD79, "" 2545365a7dd1SMatthias Ringwald }; 2546365a7dd1SMatthias Ringwald 2547365a7dd1SMatthias Ringwald /** 2548365a7dd1SMatthias Ringwald * @brief This command configures the codec interface parameters and the PCM clock rate, which is relevant when 2549365a7dd1SMatthias Ringwald the Bluetooth core generates the clock. This command must be used by the host to use the PCM 2550365a7dd1SMatthias Ringwald interface. 2551365a7dd1SMatthias Ringwald * @param clock_rate in kHz 2552365a7dd1SMatthias Ringwald * @param clock_direction 0=master/output, 1=slave/input 2553365a7dd1SMatthias Ringwald * @param frame_sync_frequency in Hz 2554365a7dd1SMatthias Ringwald * @param frame_sync_duty_cycle 0=50% (I2S Format), 0x0001-0xffff number of cycles of PCM clock 2555365a7dd1SMatthias Ringwald * @param frame_sync_edge 0=driven/sampled at rising edge, 1=driven/sampled at falling edge of PCM clock 2556365a7dd1SMatthias Ringwald * @param frame_sync_polariy 0=active high, 1=active low 2557365a7dd1SMatthias Ringwald * @param reserved1 2558365a7dd1SMatthias Ringwald * @param channel_1_data_out_size sample size in bits 2559365a7dd1SMatthias Ringwald * @param channel_1_data_out_offset number of PCM clock cycles between rising of frame sync and data start 2560365a7dd1SMatthias Ringwald * @param channel_1_data_out_edge 0=data driven at rising edge, 1=data driven at falling edge of PCM clock 2561365a7dd1SMatthias Ringwald * @param channel_1_data_in_size sample size in bits 2562365a7dd1SMatthias Ringwald * @param channel_1_data_in_offset number of PCM clock cycles between rising of frame sync and data start 2563365a7dd1SMatthias Ringwald * @param channel_1_data_in_edge 0=data sampled at rising edge, 1=data sampled at falling edge of PCM clock 2564365a7dd1SMatthias Ringwald * @param fsync_multiplier this field is only relevant to CC256XB from service pack 0.2 !!! -> use 0x00 2565365a7dd1SMatthias Ringwald * @param channel_2_data_out_size sample size in bits 2566365a7dd1SMatthias Ringwald * @param channel_2_data_out_offset number of PCM clock cycles between rising of frame sync and data start 2567365a7dd1SMatthias Ringwald * @param channel_2_data_out_edge 0=data driven at rising edge, 1=data driven at falling edge of PCM clock 2568365a7dd1SMatthias Ringwald * @param channel_2_data_in_size sample size in bits 2569365a7dd1SMatthias Ringwald * @param channel_2_data_in_offset number of PCM clock cycles between rising of frame sync and data start 2570365a7dd1SMatthias Ringwald * @param channel_2_data_in_edge 0=data sampled at rising edge, 1=data sampled at falling edge of PCM clock 2571365a7dd1SMatthias Ringwald * @param reserved2 2572365a7dd1SMatthias Ringwald * 2573365a7dd1SMatthias Ringwald */ 2574365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_write_codec_config = { 2575365a7dd1SMatthias Ringwald 0xFD06, "214211122122112212211" 2576365a7dd1SMatthias Ringwald }; 257715fca961SMatthias Ringwald 257815fca961SMatthias Ringwald /** 257915fca961SMatthias Ringwald * @brief This command is used only for internal testing. 258015fca961SMatthias Ringwald * @see https://processors.wiki.ti.com/index.php/CC256x_Testing_Guide#Continuous_TX 258115fca961SMatthias Ringwald * @param frequency 258215fca961SMatthias Ringwald * @param ADPLL loop mode 258315fca961SMatthias Ringwald */ 258415fca961SMatthias Ringwald const hci_cmd_t hci_ti_drpb_enable_rf_calibration = { 258515fca961SMatthias Ringwald 0xFD80, "141" 258615fca961SMatthias Ringwald }; 258715fca961SMatthias Ringwald 258815fca961SMatthias Ringwald /** 258915fca961SMatthias Ringwald * @brief This command command is only required for the continuous TX test of modulated 259015fca961SMatthias Ringwald * (GFSK, π/4-DQPSK or 8DPSK) signal. This command should be skipped when performing continuous TX test for CW. 259115fca961SMatthias Ringwald * @see https://processors.wiki.ti.com/index.php/CC256x_Testing_Guide#Continuous_RX 259215fca961SMatthias Ringwald * @param frequency 259315fca961SMatthias Ringwald * @param ADPLL loop mode 259415fca961SMatthias Ringwald */ 259515fca961SMatthias Ringwald const hci_cmd_t hci_ti_write_hardware_register = { 259615fca961SMatthias Ringwald 0xFF01, "42" 259715fca961SMatthias Ringwald }; 25981645c45cSMatthias Ringwald 25991645c45cSMatthias Ringwald /** 26001645c45cSMatthias Ringwald * @brief Configure SCO routing on Realtek Controllers 26011645c45cSMatthias Ringwald */ 26021645c45cSMatthias Ringwald const hci_cmd_t hci_rtk_configure_sco_routing = { 26031645c45cSMatthias Ringwald HCI_OPCODE (0x3f, 0x93), "111111111" 26041645c45cSMatthias Ringwald }; 2605