156042629SMatthias Ringwald /* 256042629SMatthias Ringwald * Copyright (C) 2014 BlueKitchen GmbH 356042629SMatthias Ringwald * 456042629SMatthias Ringwald * Redistribution and use in source and binary forms, with or without 556042629SMatthias Ringwald * modification, are permitted provided that the following conditions 656042629SMatthias Ringwald * are met: 756042629SMatthias Ringwald * 856042629SMatthias Ringwald * 1. Redistributions of source code must retain the above copyright 956042629SMatthias Ringwald * notice, this list of conditions and the following disclaimer. 1056042629SMatthias Ringwald * 2. Redistributions in binary form must reproduce the above copyright 1156042629SMatthias Ringwald * notice, this list of conditions and the following disclaimer in the 1256042629SMatthias Ringwald * documentation and/or other materials provided with the distribution. 1356042629SMatthias Ringwald * 3. Neither the name of the copyright holders nor the names of 1456042629SMatthias Ringwald * contributors may be used to endorse or promote products derived 1556042629SMatthias Ringwald * from this software without specific prior written permission. 1656042629SMatthias Ringwald * 4. Any redistribution, use, or modification is done solely for 1756042629SMatthias Ringwald * personal benefit and not for any commercial purpose or for 1856042629SMatthias Ringwald * monetary gain. 1956042629SMatthias Ringwald * 2056042629SMatthias Ringwald * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS 2156042629SMatthias Ringwald * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2256042629SMatthias Ringwald * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 232fca4dadSMilanka Ringwald * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BLUEKITCHEN 242fca4dadSMilanka Ringwald * GMBH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 2556042629SMatthias Ringwald * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 2656042629SMatthias Ringwald * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 2756042629SMatthias Ringwald * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 2856042629SMatthias Ringwald * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 2956042629SMatthias Ringwald * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 3056042629SMatthias Ringwald * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3156042629SMatthias Ringwald * SUCH DAMAGE. 3256042629SMatthias Ringwald * 3356042629SMatthias Ringwald * Please inquire about commercial licensing options at 3456042629SMatthias Ringwald * [email protected] 3556042629SMatthias Ringwald * 3656042629SMatthias Ringwald */ 3756042629SMatthias Ringwald 38e501bae0SMatthias Ringwald #define BTSTACK_FILE__ "hci_cmd.c" 39ab2c6ae4SMatthias Ringwald 4056042629SMatthias Ringwald /* 4156042629SMatthias Ringwald * hci_cmd.c 4256042629SMatthias Ringwald * 4356042629SMatthias Ringwald * Created by Matthias Ringwald on 7/23/09. 4456042629SMatthias Ringwald */ 4556042629SMatthias Ringwald 467907f069SMatthias Ringwald #include "btstack_config.h" 4756042629SMatthias Ringwald 4856042629SMatthias Ringwald #include "hci.h" 4956042629SMatthias Ringwald #include "hci_cmd.h" 50f9f2075cSMatthias Ringwald #include "btstack_debug.h" 5156042629SMatthias Ringwald 5256042629SMatthias Ringwald #include <string.h> 5356042629SMatthias Ringwald 54c56de76bSMilanka Ringwald 5559c9672fSMatthias Ringwald #ifdef ENABLE_SDP 5659c9672fSMatthias Ringwald #include "classic/sdp_util.h" 5759c9672fSMatthias Ringwald #endif 5859c9672fSMatthias Ringwald 5956042629SMatthias Ringwald // calculate combined ogf/ocf value 605efd5011SMatthias Ringwald #define OPCODE(ogf, ocf) ((ocf) | ((ogf) << 10)) 6156042629SMatthias Ringwald 627f67490cSMatthias Ringwald #define INVALID_VAR_LEN 0xffffu 63931b436eSMatthias Ringwald // hci_le_set_cig_parameters_test has 10 arrayed parameters 64931b436eSMatthias Ringwald #define MAX_NR_ARRAY_FIELDS 10 65931b436eSMatthias Ringwald #define INVALID_ARRAY_LEN 0xff 667f67490cSMatthias Ringwald 6756042629SMatthias Ringwald /** 6856042629SMatthias Ringwald * construct HCI Command based on template 6956042629SMatthias Ringwald * 7056042629SMatthias Ringwald * Format: 7156042629SMatthias Ringwald * 1,2,3,4: one to four byte value 7256042629SMatthias Ringwald * H: HCI connection handle 7356042629SMatthias Ringwald * B: Bluetooth Baseband Address (BD_ADDR) 7456042629SMatthias Ringwald * D: 8 byte data block 7556042629SMatthias Ringwald * E: Extended Inquiry Result 7656042629SMatthias Ringwald * N: Name up to 248 chars, \0 terminated 77237daac5SMatthias Ringwald * P: 16 byte data block. Pairing code, Simple Pairing Hash and Randomizer 7856042629SMatthias Ringwald * A: 31 bytes advertising data 7956042629SMatthias Ringwald * S: Service Record (Data Element Sequence) 8082180fcaSMatthias Ringwald * Q: 32 byte data block, e.g. for X and Y coordinates of P-256 public key 817f67490cSMatthias Ringwald * J: 8-bit length of variable size element 827f67490cSMatthias Ringwald * V: variable size element, len was given with param 'J' 83931b436eSMatthias Ringwald * a: number of elements in following arrayed parameters(s), specified as '[...]' 84931b436eSMatthias Ringwald * b: bit field indicating number of arrayed parameters(s), specified as '[...]' 85931b436eSMatthias Ringwald * [: start of arrayed param sequence 86931b436eSMatthias Ringwald * ]: end of arrayed param sequence 8756042629SMatthias Ringwald */ 8856042629SMatthias Ringwald uint16_t hci_cmd_create_from_template(uint8_t *hci_cmd_buffer, const hci_cmd_t *cmd, va_list argptr){ 8956042629SMatthias Ringwald 904ea43905SMatthias Ringwald hci_cmd_buffer[0] = cmd->opcode & 0xffu; 9156042629SMatthias Ringwald hci_cmd_buffer[1] = cmd->opcode >> 8; 92931b436eSMatthias Ringwald uint16_t pos = 3; 9356042629SMatthias Ringwald 9456042629SMatthias Ringwald const char *format = cmd->format; 9556042629SMatthias Ringwald uint16_t word; 9656042629SMatthias Ringwald uint32_t longword; 9756042629SMatthias Ringwald uint8_t * ptr; 987f67490cSMatthias Ringwald 99c8b094b6SMatthias Ringwald #ifdef ENABLE_BLE 100c8b094b6SMatthias Ringwald // variable size data 101c8b094b6SMatthias Ringwald uint16_t var_len = INVALID_VAR_LEN; 102c8b094b6SMatthias Ringwald // array processing 103931b436eSMatthias Ringwald const char * array_format = NULL; 104931b436eSMatthias Ringwald void * array_data[MAX_NR_ARRAY_FIELDS]; 105931b436eSMatthias Ringwald uint8_t array_num_elements = INVALID_ARRAY_LEN; 106931b436eSMatthias Ringwald uint8_t array_num_fields; 107931b436eSMatthias Ringwald uint8_t array_element_index; 108c8b094b6SMatthias Ringwald bool array_done; 109c8b094b6SMatthias Ringwald #endif 110931b436eSMatthias Ringwald 111931b436eSMatthias Ringwald bool done_format = false; 112931b436eSMatthias Ringwald while (!done_format) { 11356042629SMatthias Ringwald switch(*format) { 114931b436eSMatthias Ringwald case 0: 115931b436eSMatthias Ringwald done_format = true; 116931b436eSMatthias Ringwald break; 11756042629SMatthias Ringwald case '1': // 8 bit value 118c56de76bSMilanka Ringwald word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE 1194ea43905SMatthias Ringwald hci_cmd_buffer[pos++] = word & 0xffu; 120c56de76bSMilanka Ringwald break; 121c56de76bSMilanka Ringwald case '2': // 16 bit value 122c56de76bSMilanka Ringwald word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE 123c56de76bSMilanka Ringwald hci_cmd_buffer[pos++] = word & 0xffu; 12456042629SMatthias Ringwald hci_cmd_buffer[pos++] = word >> 8; 125c56de76bSMilanka Ringwald break; 126c56de76bSMilanka Ringwald case 'H': // hci_handle 127c56de76bSMilanka Ringwald word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE 128c56de76bSMilanka Ringwald hci_cmd_buffer[pos++] = word & 0xffu; 12956042629SMatthias Ringwald hci_cmd_buffer[pos++] = word >> 8; 13056042629SMatthias Ringwald break; 13156042629SMatthias Ringwald case '3': 132c56de76bSMilanka Ringwald longword = va_arg(argptr, uint32_t); // LCOV_EXCL_BR_LINE 13356042629SMatthias Ringwald hci_cmd_buffer[pos++] = longword; 13456042629SMatthias Ringwald hci_cmd_buffer[pos++] = longword >> 8; 13556042629SMatthias Ringwald hci_cmd_buffer[pos++] = longword >> 16; 136c56de76bSMilanka Ringwald break; 137c56de76bSMilanka Ringwald case '4': 138c56de76bSMilanka Ringwald longword = va_arg(argptr, uint32_t); // LCOV_EXCL_BR_LINE 139c56de76bSMilanka Ringwald hci_cmd_buffer[pos++] = longword; 140c56de76bSMilanka Ringwald hci_cmd_buffer[pos++] = longword >> 8; 141c56de76bSMilanka Ringwald hci_cmd_buffer[pos++] = longword >> 16; 14256042629SMatthias Ringwald hci_cmd_buffer[pos++] = longword >> 24; 14356042629SMatthias Ringwald break; 14456042629SMatthias Ringwald case 'B': // bt-addr 145c56de76bSMilanka Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 14656042629SMatthias Ringwald hci_cmd_buffer[pos++] = ptr[5]; 14756042629SMatthias Ringwald hci_cmd_buffer[pos++] = ptr[4]; 14856042629SMatthias Ringwald hci_cmd_buffer[pos++] = ptr[3]; 14956042629SMatthias Ringwald hci_cmd_buffer[pos++] = ptr[2]; 15056042629SMatthias Ringwald hci_cmd_buffer[pos++] = ptr[1]; 15156042629SMatthias Ringwald hci_cmd_buffer[pos++] = ptr[0]; 15256042629SMatthias Ringwald break; 15356042629SMatthias Ringwald case 'D': // 8 byte data block 154c56de76bSMilanka Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 1556535961aSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, 8); 15656042629SMatthias Ringwald pos += 8; 15756042629SMatthias Ringwald break; 15856042629SMatthias Ringwald case 'E': // Extended Inquiry Information 240 octets 159c56de76bSMilanka Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 1606535961aSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, 240); 16156042629SMatthias Ringwald pos += 240; 16256042629SMatthias Ringwald break; 16356042629SMatthias Ringwald case 'N': { // UTF-8 string, null terminated 164c56de76bSMilanka Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 16556042629SMatthias Ringwald uint16_t len = strlen((const char*) ptr); 1664ea43905SMatthias Ringwald if (len > 248u) { 16756042629SMatthias Ringwald len = 248; 16856042629SMatthias Ringwald } 1696535961aSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, len); 1704ea43905SMatthias Ringwald if (len < 248u) { 17156042629SMatthias Ringwald // fill remaining space with zeroes 1724ea43905SMatthias Ringwald memset(&hci_cmd_buffer[pos+len], 0u, 248u-len); 17356042629SMatthias Ringwald } 17456042629SMatthias Ringwald pos += 248; 17556042629SMatthias Ringwald break; 17656042629SMatthias Ringwald } 177bb75dd7dSMatthias Ringwald case 'P': // 16 byte PIN code or link key in little endian 178c56de76bSMilanka Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 1796535961aSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, 16); 18056042629SMatthias Ringwald pos += 16; 18156042629SMatthias Ringwald break; 182931b436eSMatthias Ringwald case 'K': // 16 byte OOB Data or Link Key in big endian 183931b436eSMatthias Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 184931b436eSMatthias Ringwald reverse_bytes(ptr, &hci_cmd_buffer[pos], 16); 185931b436eSMatthias Ringwald pos += 16; 186931b436eSMatthias Ringwald break; 187a9a4c409SMatthias Ringwald #ifdef ENABLE_BLE 18856042629SMatthias Ringwald case 'A': // 31 bytes advertising data 189c56de76bSMilanka Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 1906535961aSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, 31); 19156042629SMatthias Ringwald pos += 31; 19256042629SMatthias Ringwald break; 193931b436eSMatthias Ringwald case 'J': // 8 bit variable length indicator for 'V' 194931b436eSMatthias Ringwald word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE 195931b436eSMatthias Ringwald var_len = word & 0xffu; 196931b436eSMatthias Ringwald hci_cmd_buffer[pos++] = var_len; 197bb75dd7dSMatthias Ringwald break; 1987f67490cSMatthias Ringwald case 'V': 1997f67490cSMatthias Ringwald btstack_assert(var_len != INVALID_VAR_LEN); 2007f67490cSMatthias Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 2017f67490cSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, var_len); 2027f67490cSMatthias Ringwald pos += var_len; 2037f67490cSMatthias Ringwald var_len = INVALID_VAR_LEN; 2047f67490cSMatthias Ringwald break; 205931b436eSMatthias Ringwald case 'a': 206931b436eSMatthias Ringwald btstack_assert(array_num_elements == INVALID_ARRAY_LEN); 207931b436eSMatthias Ringwald word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE 208931b436eSMatthias Ringwald hci_cmd_buffer[pos++] = word & 0xff; 209931b436eSMatthias Ringwald array_num_elements = word & 0xffu; 210931b436eSMatthias Ringwald break; 211931b436eSMatthias Ringwald case 'b': 212931b436eSMatthias Ringwald btstack_assert(array_num_elements == INVALID_ARRAY_LEN); 213931b436eSMatthias Ringwald word = va_arg(argptr, int); // LCOV_EXCL_BR_LINE 214931b436eSMatthias Ringwald hci_cmd_buffer[pos++] = word & 0xff; 215931b436eSMatthias Ringwald array_num_elements = count_set_bits_uint32(word & 0xffu); 216931b436eSMatthias Ringwald break; 217931b436eSMatthias Ringwald case '[': 218931b436eSMatthias Ringwald btstack_assert(array_num_elements != INVALID_ARRAY_LEN); 219931b436eSMatthias Ringwald // process array 220931b436eSMatthias Ringwald format++; 221931b436eSMatthias Ringwald array_format = format; 222931b436eSMatthias Ringwald array_num_fields = 0; 223c8b094b6SMatthias Ringwald array_done = false; 224c8b094b6SMatthias Ringwald while (!array_done){ 225931b436eSMatthias Ringwald switch (*format){ 226931b436eSMatthias Ringwald case 0: 227c8b094b6SMatthias Ringwald array_done = true; 228931b436eSMatthias Ringwald done_format = true; 229931b436eSMatthias Ringwald break; 230931b436eSMatthias Ringwald case ']': 231c8b094b6SMatthias Ringwald array_done = true; 232931b436eSMatthias Ringwald break; 233931b436eSMatthias Ringwald case '1': 234931b436eSMatthias Ringwald case '2': 235931b436eSMatthias Ringwald // all arrayed parameters are passed in as arrays 236931b436eSMatthias Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 237931b436eSMatthias Ringwald array_data[array_num_fields++] = ptr; 238931b436eSMatthias Ringwald format++; 239931b436eSMatthias Ringwald break; 240931b436eSMatthias Ringwald default: 241931b436eSMatthias Ringwald btstack_unreachable(); 242931b436eSMatthias Ringwald break; 243931b436eSMatthias Ringwald } 244931b436eSMatthias Ringwald } 245931b436eSMatthias Ringwald for (array_element_index = 0; array_element_index < array_num_elements ; array_element_index++){ 246931b436eSMatthias Ringwald uint8_t array_field_index; 247931b436eSMatthias Ringwald for (array_field_index = 0; array_field_index < array_num_fields ; array_field_index++){ 248931b436eSMatthias Ringwald switch (array_format[array_field_index]){ 249931b436eSMatthias Ringwald case '1': 250931b436eSMatthias Ringwald hci_cmd_buffer[pos++] = ((const uint8_t *) array_data[array_field_index])[array_element_index]; 251931b436eSMatthias Ringwald break; 252931b436eSMatthias Ringwald case '2': 253931b436eSMatthias Ringwald little_endian_store_16(hci_cmd_buffer, pos, ((const uint16_t *) array_data[array_field_index])[array_element_index]); 254931b436eSMatthias Ringwald pos += 2; 255931b436eSMatthias Ringwald break; 256931b436eSMatthias Ringwald default: 257931b436eSMatthias Ringwald btstack_unreachable(); 258931b436eSMatthias Ringwald break; 259931b436eSMatthias Ringwald } 260931b436eSMatthias Ringwald } 261931b436eSMatthias Ringwald } 262931b436eSMatthias Ringwald break; 263931b436eSMatthias Ringwald #endif 264931b436eSMatthias Ringwald #ifdef ENABLE_LE_SECURE_CONNECTIONS 265931b436eSMatthias Ringwald case 'Q': 266931b436eSMatthias Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 267931b436eSMatthias Ringwald reverse_bytes(ptr, &hci_cmd_buffer[pos], 32); 268931b436eSMatthias Ringwald pos += 32; 269931b436eSMatthias Ringwald break; 270931b436eSMatthias Ringwald #endif 271931b436eSMatthias Ringwald #ifdef ENABLE_SDP 272931b436eSMatthias Ringwald // used by daemon 273931b436eSMatthias Ringwald case 'S': { // Service Record (Data Element Sequence) 274931b436eSMatthias Ringwald ptr = va_arg(argptr, uint8_t *); // LCOV_EXCL_BR_LINE 275931b436eSMatthias Ringwald uint16_t len = de_get_len(ptr); 276931b436eSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, len); 277931b436eSMatthias Ringwald pos += len; 278931b436eSMatthias Ringwald break; 279931b436eSMatthias Ringwald } 280931b436eSMatthias Ringwald #endif 28156042629SMatthias Ringwald default: 2827f67490cSMatthias Ringwald btstack_unreachable(); 28356042629SMatthias Ringwald break; 28456042629SMatthias Ringwald } 28556042629SMatthias Ringwald format++; 28656042629SMatthias Ringwald }; 28756042629SMatthias Ringwald hci_cmd_buffer[2] = pos - 3; 28856042629SMatthias Ringwald return pos; 28956042629SMatthias Ringwald } 29056042629SMatthias Ringwald 29156042629SMatthias Ringwald /** 29256042629SMatthias Ringwald * Link Control Commands 29356042629SMatthias Ringwald */ 29456042629SMatthias Ringwald 29556042629SMatthias Ringwald /** 29656042629SMatthias Ringwald * @param lap 29756042629SMatthias Ringwald * @param inquiry_length 29856042629SMatthias Ringwald * @param num_responses 29956042629SMatthias Ringwald */ 30056042629SMatthias Ringwald const hci_cmd_t hci_inquiry = { 301ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_INQUIRY, "311" 30256042629SMatthias Ringwald }; 30356042629SMatthias Ringwald 30456042629SMatthias Ringwald /** 30556042629SMatthias Ringwald */ 30656042629SMatthias Ringwald const hci_cmd_t hci_inquiry_cancel = { 307ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_INQUIRY_CANCEL, "" 30856042629SMatthias Ringwald }; 30956042629SMatthias Ringwald 31056042629SMatthias Ringwald /** 31156042629SMatthias Ringwald * @param bd_addr 31256042629SMatthias Ringwald * @param packet_type 31356042629SMatthias Ringwald * @param page_scan_repetition_mode 31456042629SMatthias Ringwald * @param reserved 31556042629SMatthias Ringwald * @param clock_offset 31656042629SMatthias Ringwald * @param allow_role_switch 31756042629SMatthias Ringwald */ 31856042629SMatthias Ringwald const hci_cmd_t hci_create_connection = { 319ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_CREATE_CONNECTION, "B21121" 32056042629SMatthias Ringwald }; 32156042629SMatthias Ringwald 32256042629SMatthias Ringwald /** 32356042629SMatthias Ringwald * @param handle 32456042629SMatthias Ringwald * @param reason (0x05, 0x13-0x15, 0x1a, 0x29, see Errors Codes in BT Spec Part D) 32556042629SMatthias Ringwald */ 32656042629SMatthias Ringwald const hci_cmd_t hci_disconnect = { 327ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_DISCONNECT, "H1" 32856042629SMatthias Ringwald }; 32956042629SMatthias Ringwald 33056042629SMatthias Ringwald /** 33156042629SMatthias Ringwald * @param bd_addr 33256042629SMatthias Ringwald */ 33356042629SMatthias Ringwald const hci_cmd_t hci_create_connection_cancel = { 334ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_CREATE_CONNECTION_CANCEL, "B" 33556042629SMatthias Ringwald }; 33656042629SMatthias Ringwald 33756042629SMatthias Ringwald /** 33856042629SMatthias Ringwald * @param bd_addr 33956042629SMatthias Ringwald * @param role (become master, stay slave) 34056042629SMatthias Ringwald */ 34156042629SMatthias Ringwald const hci_cmd_t hci_accept_connection_request = { 342ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_ACCEPT_CONNECTION_REQUEST, "B1" 34356042629SMatthias Ringwald }; 34456042629SMatthias Ringwald 34556042629SMatthias Ringwald /** 34656042629SMatthias Ringwald * @param bd_addr 34756042629SMatthias Ringwald * @param reason (e.g. CONNECTION REJECTED DUE TO LIMITED RESOURCES (0x0d)) 34856042629SMatthias Ringwald */ 34956042629SMatthias Ringwald const hci_cmd_t hci_reject_connection_request = { 350ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_REJECT_CONNECTION_REQUEST, "B1" 35156042629SMatthias Ringwald }; 35256042629SMatthias Ringwald 35356042629SMatthias Ringwald /** 35456042629SMatthias Ringwald * @param bd_addr 35556042629SMatthias Ringwald * @param link_key 35656042629SMatthias Ringwald */ 35756042629SMatthias Ringwald const hci_cmd_t hci_link_key_request_reply = { 358ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LINK_KEY_REQUEST_REPLY, "BP" 35956042629SMatthias Ringwald }; 36056042629SMatthias Ringwald 36156042629SMatthias Ringwald /** 36256042629SMatthias Ringwald * @param bd_addr 36356042629SMatthias Ringwald */ 36456042629SMatthias Ringwald const hci_cmd_t hci_link_key_request_negative_reply = { 365ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LINK_KEY_REQUEST_NEGATIVE_REPLY, "B" 36656042629SMatthias Ringwald }; 36756042629SMatthias Ringwald 36856042629SMatthias Ringwald /** 36956042629SMatthias Ringwald * @param bd_addr 37056042629SMatthias Ringwald * @param pin_length 37156042629SMatthias Ringwald * @param pin (c-string) 37256042629SMatthias Ringwald */ 37356042629SMatthias Ringwald const hci_cmd_t hci_pin_code_request_reply = { 374ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_PIN_CODE_REQUEST_REPLY, "B1P" 37556042629SMatthias Ringwald }; 37656042629SMatthias Ringwald 37756042629SMatthias Ringwald /** 37856042629SMatthias Ringwald * @param bd_addr 37956042629SMatthias Ringwald */ 38056042629SMatthias Ringwald const hci_cmd_t hci_pin_code_request_negative_reply = { 381ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_PIN_CODE_REQUEST_NEGATIVE_REPLY, "B" 38256042629SMatthias Ringwald }; 38356042629SMatthias Ringwald 38456042629SMatthias Ringwald /** 38556042629SMatthias Ringwald * @param handle 38656042629SMatthias Ringwald * @param packet_type 38756042629SMatthias Ringwald */ 38856042629SMatthias Ringwald const hci_cmd_t hci_change_connection_packet_type = { 389ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_CHANGE_CONNECTION_PACKET_TYPE, "H2" 39056042629SMatthias Ringwald }; 39156042629SMatthias Ringwald 39256042629SMatthias Ringwald /** 39356042629SMatthias Ringwald * @param handle 39456042629SMatthias Ringwald */ 39556042629SMatthias Ringwald const hci_cmd_t hci_authentication_requested = { 396ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_AUTHENTICATION_REQUESTED, "H" 39756042629SMatthias Ringwald }; 39856042629SMatthias Ringwald 39956042629SMatthias Ringwald /** 40056042629SMatthias Ringwald * @param handle 40156042629SMatthias Ringwald * @param encryption_enable 40256042629SMatthias Ringwald */ 40356042629SMatthias Ringwald const hci_cmd_t hci_set_connection_encryption = { 404ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_SET_CONNECTION_ENCRYPTION, "H1" 40556042629SMatthias Ringwald }; 40656042629SMatthias Ringwald 40756042629SMatthias Ringwald /** 40856042629SMatthias Ringwald * @param handle 40956042629SMatthias Ringwald */ 41056042629SMatthias Ringwald const hci_cmd_t hci_change_connection_link_key = { 411ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_CHANGE_CONNECTION_LINK_KEY, "H" 41256042629SMatthias Ringwald }; 41356042629SMatthias Ringwald 41456042629SMatthias Ringwald /** 41556042629SMatthias Ringwald * @param bd_addr 41656042629SMatthias Ringwald * @param page_scan_repetition_mode 41756042629SMatthias Ringwald * @param reserved 41856042629SMatthias Ringwald * @param clock_offset 41956042629SMatthias Ringwald */ 42056042629SMatthias Ringwald const hci_cmd_t hci_remote_name_request = { 421ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_REMOTE_NAME_REQUEST, "B112" 42256042629SMatthias Ringwald }; 42356042629SMatthias Ringwald 42456042629SMatthias Ringwald 42556042629SMatthias Ringwald /** 42656042629SMatthias Ringwald * @param bd_addr 42756042629SMatthias Ringwald */ 42856042629SMatthias Ringwald const hci_cmd_t hci_remote_name_request_cancel = { 429ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_REMOTE_NAME_REQUEST_CANCEL, "B" 43056042629SMatthias Ringwald }; 43156042629SMatthias Ringwald 43256042629SMatthias Ringwald /** 43356042629SMatthias Ringwald * @param handle 43456042629SMatthias Ringwald */ 43556042629SMatthias Ringwald const hci_cmd_t hci_read_remote_supported_features_command = { 436ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_REMOTE_SUPPORTED_FEATURES_COMMAND, "H" 4378b22c04dSMatthias Ringwald }; 4388b22c04dSMatthias Ringwald 4398b22c04dSMatthias Ringwald /** 440d5057706SMatthias Ringwald * @param handle 441d5057706SMatthias Ringwald */ 442d5057706SMatthias Ringwald const hci_cmd_t hci_read_remote_extended_features_command = { 443ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_REMOTE_EXTENDED_FEATURES_COMMAND, "H1" 444d5057706SMatthias Ringwald }; 445d5057706SMatthias Ringwald 446d5057706SMatthias Ringwald /** 4478b22c04dSMatthias Ringwald * @param handle 4488b22c04dSMatthias Ringwald */ 4498b22c04dSMatthias Ringwald const hci_cmd_t hci_read_remote_version_information = { 450ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_REMOTE_VERSION_INFORMATION, "H" 45156042629SMatthias Ringwald }; 45256042629SMatthias Ringwald 45356042629SMatthias Ringwald /** 45456042629SMatthias Ringwald * @param handle 45556042629SMatthias Ringwald * @param transmit_bandwidth 8000(64kbps) 45656042629SMatthias Ringwald * @param receive_bandwidth 8000(64kbps) 45756042629SMatthias Ringwald * @param max_latency >= 7ms for eSCO, 0xFFFF do not care 45856042629SMatthias Ringwald * @param voice_settings e.g. CVSD, Input Coding: Linear, Input Data Format: 2’s complement, data 16bit: 00011000000 == 0x60 45956042629SMatthias Ringwald * @param retransmission_effort e.g. 0xFF do not care 46056042629SMatthias Ringwald * @param packet_type at least EV3 for eSCO 46156042629SMatthias Ringwald */ 46256042629SMatthias Ringwald const hci_cmd_t hci_setup_synchronous_connection = { 463ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_SETUP_SYNCHRONOUS_CONNECTION, "H442212" 46456042629SMatthias Ringwald }; 46556042629SMatthias Ringwald 46656042629SMatthias Ringwald /** 46756042629SMatthias Ringwald * @param bd_addr 46856042629SMatthias Ringwald * @param transmit_bandwidth 46956042629SMatthias Ringwald * @param receive_bandwidth 47056042629SMatthias Ringwald * @param max_latency 47156042629SMatthias Ringwald * @param voice_settings 47256042629SMatthias Ringwald * @param retransmission_effort 47356042629SMatthias Ringwald * @param packet_type 47456042629SMatthias Ringwald */ 47556042629SMatthias Ringwald const hci_cmd_t hci_accept_synchronous_connection = { 476ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_ACCEPT_SYNCHRONOUS_CONNECTION, "B442212" 47756042629SMatthias Ringwald }; 47856042629SMatthias Ringwald 47956042629SMatthias Ringwald /** 48056042629SMatthias Ringwald * @param bd_addr 48156042629SMatthias Ringwald * @param IO_capability 48256042629SMatthias Ringwald * @param OOB_data_present 48356042629SMatthias Ringwald * @param authentication_requirements 48456042629SMatthias Ringwald */ 48556042629SMatthias Ringwald const hci_cmd_t hci_io_capability_request_reply = { 486ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_IO_CAPABILITY_REQUEST_REPLY, "B111" 48756042629SMatthias Ringwald }; 48856042629SMatthias Ringwald 48956042629SMatthias Ringwald /** 49056042629SMatthias Ringwald * @param bd_addr 49156042629SMatthias Ringwald */ 49256042629SMatthias Ringwald const hci_cmd_t hci_user_confirmation_request_reply = { 493ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_USER_CONFIRMATION_REQUEST_REPLY, "B" 49456042629SMatthias Ringwald }; 49556042629SMatthias Ringwald 49656042629SMatthias Ringwald /** 49756042629SMatthias Ringwald * @param bd_addr 49856042629SMatthias Ringwald */ 49956042629SMatthias Ringwald const hci_cmd_t hci_user_confirmation_request_negative_reply = { 500ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_USER_CONFIRMATION_REQUEST_NEGATIVE_REPLY, "B" 50156042629SMatthias Ringwald }; 50256042629SMatthias Ringwald 50356042629SMatthias Ringwald /** 50456042629SMatthias Ringwald * @param bd_addr 50556042629SMatthias Ringwald * @param numeric_value 50656042629SMatthias Ringwald */ 50756042629SMatthias Ringwald const hci_cmd_t hci_user_passkey_request_reply = { 508ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_USER_PASSKEY_REQUEST_REPLY, "B4" 50956042629SMatthias Ringwald }; 51056042629SMatthias Ringwald 51156042629SMatthias Ringwald /** 51256042629SMatthias Ringwald * @param bd_addr 51356042629SMatthias Ringwald */ 51456042629SMatthias Ringwald const hci_cmd_t hci_user_passkey_request_negative_reply = { 515ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_USER_PASSKEY_REQUEST_NEGATIVE_REPLY, "B" 51656042629SMatthias Ringwald }; 51756042629SMatthias Ringwald 51856042629SMatthias Ringwald /** 51956042629SMatthias Ringwald * @param bd_addr 520237daac5SMatthias Ringwald * @param c Simple Pairing Hash C 521237daac5SMatthias Ringwald * @param r Simple Pairing Randomizer R 522237daac5SMatthias Ringwald */ 523237daac5SMatthias Ringwald const hci_cmd_t hci_remote_oob_data_request_reply = { 524bb75dd7dSMatthias Ringwald HCI_OPCODE_HCI_REMOTE_OOB_DATA_REQUEST_REPLY, "BKK" 525237daac5SMatthias Ringwald }; 526237daac5SMatthias Ringwald 527237daac5SMatthias Ringwald /** 528237daac5SMatthias Ringwald * @param bd_addr 52956042629SMatthias Ringwald */ 53056042629SMatthias Ringwald const hci_cmd_t hci_remote_oob_data_request_negative_reply = { 531ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_REMOTE_OOB_DATA_REQUEST_NEGATIVE_REPLY, "B" 53256042629SMatthias Ringwald }; 53356042629SMatthias Ringwald 53456042629SMatthias Ringwald /** 53556042629SMatthias Ringwald * @param bd_addr 53656042629SMatthias Ringwald * @param reason (Part D, Error codes) 53756042629SMatthias Ringwald */ 53856042629SMatthias Ringwald const hci_cmd_t hci_io_capability_request_negative_reply = { 539ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_IO_CAPABILITY_REQUEST_NEGATIVE_REPLY, "B1" 54056042629SMatthias Ringwald }; 54156042629SMatthias Ringwald 54256042629SMatthias Ringwald /** 54356042629SMatthias Ringwald * @param handle 54456042629SMatthias Ringwald * @param transmit_bandwidth 54556042629SMatthias Ringwald * @param receive_bandwidth 54656042629SMatthias Ringwald * @param transmit_coding_format_type 54756042629SMatthias Ringwald * @param transmit_coding_format_company 54856042629SMatthias Ringwald * @param transmit_coding_format_codec 54956042629SMatthias Ringwald * @param receive_coding_format_type 55056042629SMatthias Ringwald * @param receive_coding_format_company 55156042629SMatthias Ringwald * @param receive_coding_format_codec 55256042629SMatthias Ringwald * @param transmit_coding_frame_size 55356042629SMatthias Ringwald * @param receive_coding_frame_size 55456042629SMatthias Ringwald * @param input_bandwidth 55556042629SMatthias Ringwald * @param output_bandwidth 55656042629SMatthias Ringwald * @param input_coding_format_type 55756042629SMatthias Ringwald * @param input_coding_format_company 55856042629SMatthias Ringwald * @param input_coding_format_codec 55956042629SMatthias Ringwald * @param output_coding_format_type 56056042629SMatthias Ringwald * @param output_coding_format_company 56156042629SMatthias Ringwald * @param output_coding_format_codec 56256042629SMatthias Ringwald * @param input_coded_data_size 56356042629SMatthias Ringwald * @param outupt_coded_data_size 56456042629SMatthias Ringwald * @param input_pcm_data_format 56556042629SMatthias Ringwald * @param output_pcm_data_format 56656042629SMatthias Ringwald * @param input_pcm_sample_payload_msb_position 56756042629SMatthias Ringwald * @param output_pcm_sample_payload_msb_position 56856042629SMatthias Ringwald * @param input_data_path 56956042629SMatthias Ringwald * @param output_data_path 57056042629SMatthias Ringwald * @param input_transport_unit_size 57156042629SMatthias Ringwald * @param output_transport_unit_size 57256042629SMatthias Ringwald * @param max_latency 57356042629SMatthias Ringwald * @param packet_type 57456042629SMatthias Ringwald * @param retransmission_effort 57556042629SMatthias Ringwald */ 57656042629SMatthias Ringwald const hci_cmd_t hci_enhanced_setup_synchronous_connection = { 577ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_ENHANCED_SETUP_SYNCHRONOUS_CONNECTION, "H4412212222441221222211111111221" 57856042629SMatthias Ringwald }; 57956042629SMatthias Ringwald 58056042629SMatthias Ringwald /** 58156042629SMatthias Ringwald * @param bd_addr 58256042629SMatthias Ringwald * @param transmit_bandwidth 58356042629SMatthias Ringwald * @param receive_bandwidth 58456042629SMatthias Ringwald * @param transmit_coding_format_type 58556042629SMatthias Ringwald * @param transmit_coding_format_company 58656042629SMatthias Ringwald * @param transmit_coding_format_codec 58756042629SMatthias Ringwald * @param receive_coding_format_type 58856042629SMatthias Ringwald * @param receive_coding_format_company 58956042629SMatthias Ringwald * @param receive_coding_format_codec 59056042629SMatthias Ringwald * @param transmit_coding_frame_size 59156042629SMatthias Ringwald * @param receive_coding_frame_size 59256042629SMatthias Ringwald * @param input_bandwidth 59356042629SMatthias Ringwald * @param output_bandwidth 59456042629SMatthias Ringwald * @param input_coding_format_type 59556042629SMatthias Ringwald * @param input_coding_format_company 59656042629SMatthias Ringwald * @param input_coding_format_codec 59756042629SMatthias Ringwald * @param output_coding_format_type 59856042629SMatthias Ringwald * @param output_coding_format_company 59956042629SMatthias Ringwald * @param output_coding_format_codec 60056042629SMatthias Ringwald * @param input_coded_data_size 60156042629SMatthias Ringwald * @param outupt_coded_data_size 60256042629SMatthias Ringwald * @param input_pcm_data_format 60356042629SMatthias Ringwald * @param output_pcm_data_format 60456042629SMatthias Ringwald * @param input_pcm_sample_payload_msb_position 60556042629SMatthias Ringwald * @param output_pcm_sample_payload_msb_position 60656042629SMatthias Ringwald * @param input_data_path 60756042629SMatthias Ringwald * @param output_data_path 60856042629SMatthias Ringwald * @param input_transport_unit_size 60956042629SMatthias Ringwald * @param output_transport_unit_size 61056042629SMatthias Ringwald * @param max_latency 61156042629SMatthias Ringwald * @param packet_type 61256042629SMatthias Ringwald * @param retransmission_effort 61356042629SMatthias Ringwald */ 61456042629SMatthias Ringwald const hci_cmd_t hci_enhanced_accept_synchronous_connection = { 615ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_ENHANCED_ACCEPT_SYNCHRONOUS_CONNECTION, "B4412212222441221222211111111221" 61656042629SMatthias Ringwald }; 61756042629SMatthias Ringwald 61856042629SMatthias Ringwald /** 619bb75dd7dSMatthias Ringwald * @param bd_addr 620bb75dd7dSMatthias Ringwald * @param c_192 Simple Pairing Hash C derived from P-192 public key 621bb75dd7dSMatthias Ringwald * @param r_192 Simple Pairing Randomizer derived from P-192 public key 622bb75dd7dSMatthias Ringwald * @param c_256 Simple Pairing Hash C derived from P-256 public key 623bb75dd7dSMatthias Ringwald * @param r_256 Simple Pairing Randomizer derived from P-256 public key 624bb75dd7dSMatthias Ringwald */ 625bb75dd7dSMatthias Ringwald const hci_cmd_t hci_remote_oob_extended_data_request_reply = { 626bb75dd7dSMatthias Ringwald HCI_OPCODE_HCI_REMOTE_OOB_EXTENDED_DATA_REQUEST_REPLY, "BKKKK" 627bb75dd7dSMatthias Ringwald }; 628bb75dd7dSMatthias Ringwald 629bb75dd7dSMatthias Ringwald /** 63056042629SMatthias Ringwald * Link Policy Commands 63156042629SMatthias Ringwald */ 63256042629SMatthias Ringwald 63356042629SMatthias Ringwald /** 63456042629SMatthias Ringwald * @param handle 635*29ae3d7dSMatthias Ringwald * @param hold_mode_max_interval * 0.625 ms, range: 0x0002..0xFFFE; only even values are valid. 636*29ae3d7dSMatthias Ringwald * @param hold_mode_min_interval * 0.625 ms, range: 0x0002..0xFFFE; only even values are valid. 637*29ae3d7dSMatthias Ringwald */ 638*29ae3d7dSMatthias Ringwald const hci_cmd_t hci_hold_mode = { 639*29ae3d7dSMatthias Ringwald HCI_OPCODE_HCI_HOLD_MODE, "H22" 640*29ae3d7dSMatthias Ringwald }; 641*29ae3d7dSMatthias Ringwald 642*29ae3d7dSMatthias Ringwald /** 643*29ae3d7dSMatthias Ringwald * @param handle 64456042629SMatthias Ringwald * @param sniff_max_interval 64556042629SMatthias Ringwald * @param sniff_min_interval 64656042629SMatthias Ringwald * @param sniff_attempt 64756042629SMatthias Ringwald * @param sniff_timeout 64856042629SMatthias Ringwald */ 64956042629SMatthias Ringwald const hci_cmd_t hci_sniff_mode = { 650ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_SNIFF_MODE, "H2222" 65156042629SMatthias Ringwald }; 65256042629SMatthias Ringwald 65356042629SMatthias Ringwald /** 65456042629SMatthias Ringwald * @param handle 6557cd21895SMatthias Ringwald */ 6567cd21895SMatthias Ringwald const hci_cmd_t hci_exit_sniff_mode = { 657ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_EXIT_SNIFF_MODE, "H" 6587cd21895SMatthias Ringwald }; 6597cd21895SMatthias Ringwald 6607cd21895SMatthias Ringwald /** 6617cd21895SMatthias Ringwald * @param handle 66256042629SMatthias Ringwald * @param flags 66356042629SMatthias Ringwald * @param service_type 66456042629SMatthias Ringwald * @param token_rate (bytes/s) 66556042629SMatthias Ringwald * @param peak_bandwith (bytes/s) 66656042629SMatthias Ringwald * @param latency (us) 66756042629SMatthias Ringwald * @param delay_variation (us) 66856042629SMatthias Ringwald */ 66956042629SMatthias Ringwald const hci_cmd_t hci_qos_setup = { 670ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_QOS_SETUP, "H114444" 67156042629SMatthias Ringwald }; 67256042629SMatthias Ringwald 67356042629SMatthias Ringwald /** 67456042629SMatthias Ringwald * @param handle 67556042629SMatthias Ringwald */ 67656042629SMatthias Ringwald const hci_cmd_t hci_role_discovery = { 677ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_ROLE_DISCOVERY, "H" 67856042629SMatthias Ringwald }; 67956042629SMatthias Ringwald 68056042629SMatthias Ringwald /** 68156042629SMatthias Ringwald * @param bd_addr 68256042629SMatthias Ringwald * @param role (0=master,1=slave) 68356042629SMatthias Ringwald */ 68456042629SMatthias Ringwald const hci_cmd_t hci_switch_role_command= { 685ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_SWITCH_ROLE_COMMAND, "B1" 68656042629SMatthias Ringwald }; 68756042629SMatthias Ringwald 68856042629SMatthias Ringwald /** 68956042629SMatthias Ringwald * @param handle 69056042629SMatthias Ringwald */ 69156042629SMatthias Ringwald const hci_cmd_t hci_read_link_policy_settings = { 692ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LINK_POLICY_SETTINGS, "H" 69356042629SMatthias Ringwald }; 69456042629SMatthias Ringwald 69556042629SMatthias Ringwald /** 69656042629SMatthias Ringwald * @param handle 69756042629SMatthias Ringwald * @param settings 69856042629SMatthias Ringwald */ 69956042629SMatthias Ringwald const hci_cmd_t hci_write_link_policy_settings = { 700ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_LINK_POLICY_SETTINGS, "H2" 70156042629SMatthias Ringwald }; 70256042629SMatthias Ringwald 703c4c88f1bSJakob Krantz /** 70432e2f27fSMatthias Ringwald * @param handle 70532e2f27fSMatthias Ringwald * @param max_latency 70632e2f27fSMatthias Ringwald * @param min_remote_timeout 70732e2f27fSMatthias Ringwald * @param min_local_timeout 70832e2f27fSMatthias Ringwald */ 70932e2f27fSMatthias Ringwald const hci_cmd_t hci_sniff_subrating = { 71050fe3a99SMilanka Ringwald HCI_OPCODE_HCI_SNIFF_SUBRATING, "H222" 71132e2f27fSMatthias Ringwald }; 71232e2f27fSMatthias Ringwald 71332e2f27fSMatthias Ringwald /** 714c4c88f1bSJakob Krantz * @param policy 715c4c88f1bSJakob Krantz */ 71653138e7aSMatthias Ringwald const hci_cmd_t hci_write_default_link_policy_setting = { 717ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_DEFAULT_LINK_POLICY_SETTING, "2" 718c4c88f1bSJakob Krantz }; 719c4c88f1bSJakob Krantz 720733a7793SMatthias Ringwald /** 721733a7793SMatthias Ringwald * @param handle 722733a7793SMatthias Ringwald * @param unused 723733a7793SMatthias Ringwald * @param flow_direction 724733a7793SMatthias Ringwald * @param service_type 725733a7793SMatthias Ringwald * @param token_rate 726733a7793SMatthias Ringwald * @param token_bucket_size 727733a7793SMatthias Ringwald * @param peak_bandwidth 728733a7793SMatthias Ringwald * @param access_latency 729733a7793SMatthias Ringwald */ 730733a7793SMatthias Ringwald const hci_cmd_t hci_flow_specification = { 731733a7793SMatthias Ringwald HCI_OPCODE_HCI_FLOW_SPECIFICATION, "H1114444" 732733a7793SMatthias Ringwald }; 733733a7793SMatthias Ringwald 73456042629SMatthias Ringwald 73556042629SMatthias Ringwald /** 73656042629SMatthias Ringwald * Controller & Baseband Commands 73756042629SMatthias Ringwald */ 73856042629SMatthias Ringwald 7399119d792SMilanka Ringwald 74056042629SMatthias Ringwald /** 74156042629SMatthias Ringwald * @param event_mask_lover_octets 74256042629SMatthias Ringwald * @param event_mask_higher_octets 74356042629SMatthias Ringwald */ 74456042629SMatthias Ringwald const hci_cmd_t hci_set_event_mask = { 745ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_SET_EVENT_MASK, "44" 74656042629SMatthias Ringwald }; 74756042629SMatthias Ringwald 74856042629SMatthias Ringwald /** 74956042629SMatthias Ringwald */ 75056042629SMatthias Ringwald const hci_cmd_t hci_reset = { 751ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_RESET, "" 75256042629SMatthias Ringwald }; 75356042629SMatthias Ringwald 75456042629SMatthias Ringwald /** 755e49d496aSMatthias Ringwald * @param handle 756e49d496aSMatthias Ringwald */ 757e49d496aSMatthias Ringwald const hci_cmd_t hci_flush = { 758ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_FLUSH, "H" 7599af39d9fSMatthias Ringwald }; 7609af39d9fSMatthias Ringwald 7619af39d9fSMatthias Ringwald /** 7629af39d9fSMatthias Ringwald * @param handle 7639af39d9fSMatthias Ringwald */ 7649af39d9fSMatthias Ringwald const hci_cmd_t hci_read_pin_type = { 765ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_PIN_TYPE, "" 7669af39d9fSMatthias Ringwald }; 7679af39d9fSMatthias Ringwald 7689af39d9fSMatthias Ringwald /** 7699af39d9fSMatthias Ringwald * @param handle 7709af39d9fSMatthias Ringwald */ 7719af39d9fSMatthias Ringwald const hci_cmd_t hci_write_pin_type = { 772ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_PIN_TYPE, "1" 773e49d496aSMatthias Ringwald }; 774e49d496aSMatthias Ringwald 775e49d496aSMatthias Ringwald /** 77656042629SMatthias Ringwald * @param bd_addr 77756042629SMatthias Ringwald * @param delete_all_flags 77856042629SMatthias Ringwald */ 77956042629SMatthias Ringwald const hci_cmd_t hci_delete_stored_link_key = { 780ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_DELETE_STORED_LINK_KEY, "B1" 78156042629SMatthias Ringwald }; 78256042629SMatthias Ringwald 783f9f2075cSMatthias Ringwald #ifdef ENABLE_CLASSIC 78456042629SMatthias Ringwald /** 78556042629SMatthias Ringwald * @param local_name (UTF-8, Null Terminated, max 248 octets) 78656042629SMatthias Ringwald */ 78756042629SMatthias Ringwald const hci_cmd_t hci_write_local_name = { 788ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_LOCAL_NAME, "N" 78956042629SMatthias Ringwald }; 790f9f2075cSMatthias Ringwald #endif 79156042629SMatthias Ringwald 79256042629SMatthias Ringwald /** 793e90bae01SMatthias Ringwald */ 794e90bae01SMatthias Ringwald const hci_cmd_t hci_read_local_name = { 795ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LOCAL_NAME, "" 796e90bae01SMatthias Ringwald }; 797e90bae01SMatthias Ringwald 798e90bae01SMatthias Ringwald /** 799195e82f3Sskoperst */ 800195e82f3Sskoperst const hci_cmd_t hci_read_page_timeout = { 801ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_PAGE_TIMEOUT, "" 802195e82f3Sskoperst }; 803195e82f3Sskoperst 804195e82f3Sskoperst /** 80556042629SMatthias Ringwald * @param page_timeout (* 0.625 ms) 80656042629SMatthias Ringwald */ 80756042629SMatthias Ringwald const hci_cmd_t hci_write_page_timeout = { 808ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_PAGE_TIMEOUT, "2" 80956042629SMatthias Ringwald }; 81056042629SMatthias Ringwald 81156042629SMatthias Ringwald /** 8124eac2391SMatthias Ringwald * @param scan_enable (no, inq, page, inq+page) 8134eac2391SMatthias Ringwald */ 8144eac2391SMatthias Ringwald const hci_cmd_t hci_write_scan_enable = { 815ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_SCAN_ENABLE, "1" 8164eac2391SMatthias Ringwald }; 8174eac2391SMatthias Ringwald 8184eac2391SMatthias Ringwald /** 819195e82f3Sskoperst */ 820195e82f3Sskoperst const hci_cmd_t hci_read_page_scan_activity = { 821ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_PAGE_SCAN_ACTIVITY, "" 822195e82f3Sskoperst }; 823195e82f3Sskoperst 824195e82f3Sskoperst /** 825195e82f3Sskoperst * @param page_scan_interval (* 0.625 ms) 826195e82f3Sskoperst * @param page_scan_window (* 0.625 ms, must be <= page_scan_interval) 827195e82f3Sskoperst */ 828195e82f3Sskoperst const hci_cmd_t hci_write_page_scan_activity = { 829ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_PAGE_SCAN_ACTIVITY, "22" 830195e82f3Sskoperst }; 831195e82f3Sskoperst 832195e82f3Sskoperst /** 83356042629SMatthias Ringwald */ 8344eac2391SMatthias Ringwald const hci_cmd_t hci_read_inquiry_scan_activity = { 835ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_INQUIRY_SCAN_ACTIVITY, "" 8364eac2391SMatthias Ringwald }; 8374eac2391SMatthias Ringwald 8384eac2391SMatthias Ringwald /** 8394eac2391SMatthias Ringwald * @param inquiry_scan_interval (* 0.625 ms) 8404eac2391SMatthias Ringwald * @param inquiry_scan_window (* 0.625 ms, must be <= inquiry_scan_interval) 8414eac2391SMatthias Ringwald */ 8424eac2391SMatthias Ringwald const hci_cmd_t hci_write_inquiry_scan_activity = { 843ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_INQUIRY_SCAN_ACTIVITY, "22" 84456042629SMatthias Ringwald }; 84556042629SMatthias Ringwald 84656042629SMatthias Ringwald /** 84756042629SMatthias Ringwald * @param authentication_enable 84856042629SMatthias Ringwald */ 84956042629SMatthias Ringwald const hci_cmd_t hci_write_authentication_enable = { 850ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_AUTHENTICATION_ENABLE, "1" 85156042629SMatthias Ringwald }; 85256042629SMatthias Ringwald 85356042629SMatthias Ringwald /** 85456042629SMatthias Ringwald * @param class_of_device 85556042629SMatthias Ringwald */ 85656042629SMatthias Ringwald const hci_cmd_t hci_write_class_of_device = { 857ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_CLASS_OF_DEVICE, "3" 85856042629SMatthias Ringwald }; 85956042629SMatthias Ringwald 86056042629SMatthias Ringwald /** 86156042629SMatthias Ringwald */ 86256042629SMatthias Ringwald const hci_cmd_t hci_read_num_broadcast_retransmissions = { 863ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_NUM_BROADCAST_RETRANSMISSIONS, "" 86456042629SMatthias Ringwald }; 86556042629SMatthias Ringwald 86656042629SMatthias Ringwald /** 86756042629SMatthias Ringwald * @param num_broadcast_retransmissions (e.g. 0 for a single broadcast) 86856042629SMatthias Ringwald */ 86956042629SMatthias Ringwald const hci_cmd_t hci_write_num_broadcast_retransmissions = { 870ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_NUM_BROADCAST_RETRANSMISSIONS, "1" 87156042629SMatthias Ringwald }; 87256042629SMatthias Ringwald 87356042629SMatthias Ringwald /** 87444751e25SMatthias Ringwald * @param connection_handle 87544751e25SMatthias Ringwald * @param type 0 = current transmit level, 1 = max transmit level 87644751e25SMatthias Ringwald */ 87744751e25SMatthias Ringwald const hci_cmd_t hci_read_transmit_power_level = { 878ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_TRANSMIT_POWER_LEVEL, "11" 87944751e25SMatthias Ringwald }; 88044751e25SMatthias Ringwald 88144751e25SMatthias Ringwald /** 88256042629SMatthias Ringwald * @param synchronous_flow_control_enable - if yes, num completed packet everts are sent for SCO packets 88356042629SMatthias Ringwald */ 88456042629SMatthias Ringwald const hci_cmd_t hci_write_synchronous_flow_control_enable = { 885ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_SYNCHRONOUS_FLOW_CONTROL_ENABLE, "1" 88656042629SMatthias Ringwald }; 88756042629SMatthias Ringwald 8882b838201SMatthias Ringwald #ifdef ENABLE_HCI_CONTROLLER_TO_HOST_FLOW_CONTROL 8892b838201SMatthias Ringwald 8902b838201SMatthias Ringwald /** 8912b838201SMatthias Ringwald * @param flow_control_enable - 0: off, 1: ACL only, 2: SCO only, 3: ACL + SCO 8922b838201SMatthias Ringwald */ 8932b838201SMatthias Ringwald const hci_cmd_t hci_set_controller_to_host_flow_control = { 894ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_SET_CONTROLLER_TO_HOST_FLOW_CONTROL, "1" 8952b838201SMatthias Ringwald }; 8962b838201SMatthias Ringwald 89756042629SMatthias Ringwald /** 89856042629SMatthias Ringwald * @param host_acl_data_packet_length 89956042629SMatthias Ringwald * @param host_synchronous_data_packet_length 90056042629SMatthias Ringwald * @param host_total_num_acl_data_packets 90156042629SMatthias Ringwald * @param host_total_num_synchronous_data_packets 90256042629SMatthias Ringwald */ 90356042629SMatthias Ringwald const hci_cmd_t hci_host_buffer_size = { 904ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_HOST_BUFFER_SIZE, "2122" 90556042629SMatthias Ringwald }; 90656042629SMatthias Ringwald 9079119d792SMilanka Ringwald 9082b838201SMatthias Ringwald #if 0 9092b838201SMatthias Ringwald // 9102b838201SMatthias Ringwald // command sent manually sent by hci_host_num_completed_packets 9112b838201SMatthias Ringwald // 9122b838201SMatthias Ringwald /** 9132b838201SMatthias Ringwald * @note only single handle supported by BTstack command generator 9142b838201SMatthias Ringwald * @param number_of_handles must be 1 9152b838201SMatthias Ringwald * @param connection_handle 9162b838201SMatthias Ringwald * @param host_num_of_completed_packets for the given connection handle 9172b838201SMatthias Ringwald */ 9182b838201SMatthias Ringwald const hci_cmd_t hci_host_number_of_completed_packets = { 919ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_HOST_NUMBER_OF_COMPLETED_PACKETS, "1H2" 9202b838201SMatthias Ringwald }; 9212b838201SMatthias Ringwald #endif 9222b838201SMatthias Ringwald 9232b838201SMatthias Ringwald #endif 9242b838201SMatthias Ringwald 92556042629SMatthias Ringwald /** 92656042629SMatthias Ringwald * @param handle 92756042629SMatthias Ringwald */ 92856042629SMatthias Ringwald const hci_cmd_t hci_read_link_supervision_timeout = { 929ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LINK_SUPERVISION_TIMEOUT, "H" 93056042629SMatthias Ringwald }; 93156042629SMatthias Ringwald 93256042629SMatthias Ringwald /** 93356042629SMatthias Ringwald * @param handle 93456042629SMatthias Ringwald * @param timeout (0x0001 - 0xFFFF Time -> Range: 0.625ms - 40.9 sec) 93556042629SMatthias Ringwald */ 93656042629SMatthias Ringwald const hci_cmd_t hci_write_link_supervision_timeout = { 937ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_LINK_SUPERVISION_TIMEOUT, "H2" 93856042629SMatthias Ringwald }; 93956042629SMatthias Ringwald 94056042629SMatthias Ringwald /** 9419119d792SMilanka Ringwald * @param num_current_iac must be 2 9429119d792SMilanka Ringwald * @param iac_lap1 9439119d792SMilanka Ringwald * @param iac_lap2 9449119d792SMilanka Ringwald */ 9459119d792SMilanka Ringwald const hci_cmd_t hci_write_current_iac_lap_two_iacs = { 946ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_CURRENT_IAC_LAP_TWO_IACS, "133" 9479119d792SMilanka Ringwald }; 9489119d792SMilanka Ringwald 9499119d792SMilanka Ringwald /** 9505769fd77SMatthias Ringwald * @param inquiry_scan_type (0x00 = standard, 0x01 = interlaced) 9515769fd77SMatthias Ringwald */ 9525769fd77SMatthias Ringwald const hci_cmd_t hci_write_inquiry_scan_type = { 9535769fd77SMatthias Ringwald HCI_OPCODE_HCI_WRITE_INQUIRY_SCAN_TYPE, "1" 9545769fd77SMatthias Ringwald }; 9555769fd77SMatthias Ringwald 9565769fd77SMatthias Ringwald /** 95756042629SMatthias Ringwald * @param inquiry_mode (0x00 = standard, 0x01 = with RSSI, 0x02 = extended) 95856042629SMatthias Ringwald */ 95956042629SMatthias Ringwald const hci_cmd_t hci_write_inquiry_mode = { 960ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_INQUIRY_MODE, "1" 96156042629SMatthias Ringwald }; 96256042629SMatthias Ringwald 96356042629SMatthias Ringwald /** 9645769fd77SMatthias Ringwald * @param page_scan_type (0x00 = standard, 0x01 = interlaced) 9655769fd77SMatthias Ringwald */ 9665769fd77SMatthias Ringwald const hci_cmd_t hci_write_page_scan_type = { 9675769fd77SMatthias Ringwald HCI_OPCODE_HCI_WRITE_PAGE_SCAN_TYPE, "1" 9685769fd77SMatthias Ringwald }; 9695769fd77SMatthias Ringwald 9705769fd77SMatthias Ringwald /** 97156042629SMatthias Ringwald * @param fec_required 97256042629SMatthias Ringwald * @param exstended_inquiry_response 97356042629SMatthias Ringwald */ 97456042629SMatthias Ringwald const hci_cmd_t hci_write_extended_inquiry_response = { 975ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_EXTENDED_INQUIRY_RESPONSE, "1E" 97656042629SMatthias Ringwald }; 97756042629SMatthias Ringwald 97856042629SMatthias Ringwald /** 97956042629SMatthias Ringwald * @param mode (0 = off, 1 = on) 98056042629SMatthias Ringwald */ 98156042629SMatthias Ringwald const hci_cmd_t hci_write_simple_pairing_mode = { 982ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_SIMPLE_PAIRING_MODE, "1" 98356042629SMatthias Ringwald }; 98456042629SMatthias Ringwald 985237daac5SMatthias Ringwald /** 986237daac5SMatthias Ringwald */ 987237daac5SMatthias Ringwald const hci_cmd_t hci_read_local_oob_data = { 988ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LOCAL_OOB_DATA, "" 989237daac5SMatthias Ringwald // return status, C, R 990237daac5SMatthias Ringwald }; 991483c5078SMatthias Ringwald 992483c5078SMatthias Ringwald /** 993483c5078SMatthias Ringwald * @param mode (0 = off, 1 = on) 994483c5078SMatthias Ringwald */ 995483c5078SMatthias Ringwald const hci_cmd_t hci_write_default_erroneous_data_reporting = { 996ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_DEFAULT_ERRONEOUS_DATA_REPORTING, "1" 997483c5078SMatthias Ringwald }; 998483c5078SMatthias Ringwald 99956042629SMatthias Ringwald /** 100056042629SMatthias Ringwald */ 100156042629SMatthias Ringwald const hci_cmd_t hci_read_le_host_supported = { 1002ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LE_HOST_SUPPORTED, "" 100356042629SMatthias Ringwald // return: status, le supported host, simultaneous le host 100456042629SMatthias Ringwald }; 100556042629SMatthias Ringwald 100656042629SMatthias Ringwald /** 100756042629SMatthias Ringwald * @param le_supported_host 100856042629SMatthias Ringwald * @param simultaneous_le_host 100956042629SMatthias Ringwald */ 101056042629SMatthias Ringwald const hci_cmd_t hci_write_le_host_supported = { 1011ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_LE_HOST_SUPPORTED, "11" 101256042629SMatthias Ringwald // return: status 101356042629SMatthias Ringwald }; 101456042629SMatthias Ringwald 101556042629SMatthias Ringwald /** 1016b002ae8cSMatthias Ringwald * @param secure_connections_host_support 1017b002ae8cSMatthias Ringwald */ 1018b002ae8cSMatthias Ringwald const hci_cmd_t hci_write_secure_connections_host_support = { 1019ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_SECURE_CONNECTIONS_HOST_SUPPORT, "1" 1020b002ae8cSMatthias Ringwald // return: status 1021b002ae8cSMatthias Ringwald }; 1022b002ae8cSMatthias Ringwald 1023b002ae8cSMatthias Ringwald /** 1024237daac5SMatthias Ringwald */ 1025bb75dd7dSMatthias Ringwald const hci_cmd_t hci_read_local_extended_oob_data = { 10261849becdSMatthias Ringwald HCI_OPCODE_HCI_READ_LOCAL_EXTENDED_OOB_DATA, "" 1027237daac5SMatthias Ringwald // return status, C_192, R_192, R_256, C_256 1028237daac5SMatthias Ringwald }; 1029237daac5SMatthias Ringwald 1030237daac5SMatthias Ringwald 1031237daac5SMatthias Ringwald /** 103256042629SMatthias Ringwald * Testing Commands 103356042629SMatthias Ringwald */ 103456042629SMatthias Ringwald 103556042629SMatthias Ringwald 103656042629SMatthias Ringwald /** 103756042629SMatthias Ringwald */ 103856042629SMatthias Ringwald const hci_cmd_t hci_read_loopback_mode = { 1039ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LOOPBACK_MODE, "" 104056042629SMatthias Ringwald // return: status, loopback mode (0 = off, 1 = local loopback, 2 = remote loopback) 104156042629SMatthias Ringwald }; 104256042629SMatthias Ringwald 104356042629SMatthias Ringwald /** 104456042629SMatthias Ringwald * @param loopback_mode 104556042629SMatthias Ringwald */ 104656042629SMatthias Ringwald const hci_cmd_t hci_write_loopback_mode = { 1047ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_LOOPBACK_MODE, "1" 104856042629SMatthias Ringwald // return: status 104956042629SMatthias Ringwald }; 105056042629SMatthias Ringwald 105184ca9bd8SMatthias Ringwald /** 105284ca9bd8SMatthias Ringwald */ 105384ca9bd8SMatthias Ringwald const hci_cmd_t hci_enable_device_under_test_mode = { 1054ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_ENABLE_DEVICE_UNDER_TEST_MODE, "" 105584ca9bd8SMatthias Ringwald // return: status 105684ca9bd8SMatthias Ringwald }; 105784ca9bd8SMatthias Ringwald 105884ca9bd8SMatthias Ringwald /** 105984ca9bd8SMatthias Ringwald * @param simple_pairing_debug_mode 106084ca9bd8SMatthias Ringwald */ 106184ca9bd8SMatthias Ringwald const hci_cmd_t hci_write_simple_pairing_debug_mode = { 1062ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_SIMPLE_PAIRING_DEBUG_MODE, "1" 106384ca9bd8SMatthias Ringwald // return: status 106484ca9bd8SMatthias Ringwald }; 106584ca9bd8SMatthias Ringwald 106684ca9bd8SMatthias Ringwald /** 106784ca9bd8SMatthias Ringwald * @param handle 106884ca9bd8SMatthias Ringwald * @param dm1_acl_u_mode 106984ca9bd8SMatthias Ringwald * @param esco_loopback_mode 107084ca9bd8SMatthias Ringwald */ 107184ca9bd8SMatthias Ringwald const hci_cmd_t hci_write_secure_connections_test_mode = { 1072ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_SECURE_CONNECTIONS_TEST_MODE, "H11" 107384ca9bd8SMatthias Ringwald // return: status 107484ca9bd8SMatthias Ringwald }; 107584ca9bd8SMatthias Ringwald 107656042629SMatthias Ringwald 107756042629SMatthias Ringwald /** 107856042629SMatthias Ringwald * Informational Parameters 107956042629SMatthias Ringwald */ 108056042629SMatthias Ringwald 108156042629SMatthias Ringwald const hci_cmd_t hci_read_local_version_information = { 1082ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LOCAL_VERSION_INFORMATION, "" 108356042629SMatthias Ringwald }; 108456042629SMatthias Ringwald const hci_cmd_t hci_read_local_supported_commands = { 1085ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LOCAL_SUPPORTED_COMMANDS, "" 108656042629SMatthias Ringwald }; 108756042629SMatthias Ringwald const hci_cmd_t hci_read_local_supported_features = { 1088ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LOCAL_SUPPORTED_FEATURES, "" 108956042629SMatthias Ringwald }; 109056042629SMatthias Ringwald const hci_cmd_t hci_read_buffer_size = { 1091ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_BUFFER_SIZE, "" 109256042629SMatthias Ringwald }; 109356042629SMatthias Ringwald const hci_cmd_t hci_read_bd_addr = { 1094ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_BD_ADDR, "" 109556042629SMatthias Ringwald }; 109656042629SMatthias Ringwald 109756042629SMatthias Ringwald /** 109856042629SMatthias Ringwald * Status Paramters 109956042629SMatthias Ringwald */ 110056042629SMatthias Ringwald 110156042629SMatthias Ringwald /** 110256042629SMatthias Ringwald * @param handle 110356042629SMatthias Ringwald */ 110456042629SMatthias Ringwald const hci_cmd_t hci_read_rssi = { 1105ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_RSSI, "H" 110656042629SMatthias Ringwald }; 110756042629SMatthias Ringwald 110897abfa24SMatthias Ringwald /** 110997abfa24SMatthias Ringwald * @param handle 111097abfa24SMatthias Ringwald */ 111197abfa24SMatthias Ringwald const hci_cmd_t hci_read_encryption_key_size = { 1112ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_ENCRYPTION_KEY_SIZE, "H" 111397abfa24SMatthias Ringwald }; 111456042629SMatthias Ringwald 111556042629SMatthias Ringwald 1116a9a4c409SMatthias Ringwald #ifdef ENABLE_BLE 111756042629SMatthias Ringwald /** 111856042629SMatthias Ringwald * Low Energy Commands 111956042629SMatthias Ringwald */ 112056042629SMatthias Ringwald 112156042629SMatthias Ringwald /** 112256042629SMatthias Ringwald * @param event_mask_lower_octets 112356042629SMatthias Ringwald * @param event_mask_higher_octets 112456042629SMatthias Ringwald */ 112556042629SMatthias Ringwald const hci_cmd_t hci_le_set_event_mask = { 1126ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_EVENT_MASK, "44" 112756042629SMatthias Ringwald // return: status 112856042629SMatthias Ringwald }; 112956042629SMatthias Ringwald 113056042629SMatthias Ringwald const hci_cmd_t hci_le_read_buffer_size = { 1131ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_BUFFER_SIZE, "" 113256042629SMatthias Ringwald // return: status, le acl data packet len (16), total num le acl data packets(8) 113356042629SMatthias Ringwald }; 11340c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_local_supported_features = { 11350c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_LOCAL_SUPPORTED_FEATURES, "" 113656042629SMatthias Ringwald // return: LE_Features See [Vol 6] Part B, Section 4.6 113756042629SMatthias Ringwald }; 113856042629SMatthias Ringwald 113956042629SMatthias Ringwald /** 114056042629SMatthias Ringwald * @param random_bd_addr 114156042629SMatthias Ringwald */ 114256042629SMatthias Ringwald const hci_cmd_t hci_le_set_random_address = { 1143ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_RANDOM_ADDRESS, "B" 114456042629SMatthias Ringwald // return: status 114556042629SMatthias Ringwald }; 114656042629SMatthias Ringwald 114756042629SMatthias Ringwald /** 114856042629SMatthias Ringwald * @param advertising_interval_min ([0x0020,0x4000], default: 0x0800, unit: 0.625 msec) 114956042629SMatthias Ringwald * @param advertising_interval_max ([0x0020,0x4000], default: 0x0800, unit: 0.625 msec) 115056042629SMatthias Ringwald * @param advertising_type (enum from 0: ADV_IND, ADC_DIRECT_IND, ADV_SCAN_IND, ADV_NONCONN_IND) 115156042629SMatthias Ringwald * @param own_address_type (enum from 0: public device address, random device address) 115256042629SMatthias Ringwald * @param direct_address_type () 115356042629SMatthias Ringwald * @param direct_address (public or random address of device to be connecteed) 115456042629SMatthias Ringwald * @param advertising_channel_map (flags: chan_37(1), chan_38(2), chan_39(4)) 115556042629SMatthias Ringwald * @param advertising_filter_policy (enum from 0: scan any conn any, scan whitelist, con any, scan any conn whitelist, scan whitelist, con whitelist) 115656042629SMatthias Ringwald */ 115756042629SMatthias Ringwald const hci_cmd_t hci_le_set_advertising_parameters = { 1158ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_ADVERTISING_PARAMETERS, "22111B11" 115956042629SMatthias Ringwald // return: status 116056042629SMatthias Ringwald }; 116156042629SMatthias Ringwald 116256042629SMatthias Ringwald const hci_cmd_t hci_le_read_advertising_channel_tx_power = { 1163ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_ADVERTISING_CHANNEL_TX_POWER, "" 116456042629SMatthias Ringwald // return: status, level [-20,10] signed int (8), units dBm 116556042629SMatthias Ringwald }; 116656042629SMatthias Ringwald 116756042629SMatthias Ringwald /** 116856042629SMatthias Ringwald * @param advertising_data_length 116956042629SMatthias Ringwald * @param advertising_data (31 bytes) 117056042629SMatthias Ringwald */ 117156042629SMatthias Ringwald const hci_cmd_t hci_le_set_advertising_data= { 1172ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_ADVERTISING_DATA, "1A" 117356042629SMatthias Ringwald // return: status 117456042629SMatthias Ringwald }; 117556042629SMatthias Ringwald 117656042629SMatthias Ringwald /** 117756042629SMatthias Ringwald * @param scan_response_data_length 117856042629SMatthias Ringwald * @param scan_response_data (31 bytes) 117956042629SMatthias Ringwald */ 118056042629SMatthias Ringwald const hci_cmd_t hci_le_set_scan_response_data= { 1181ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_SCAN_RESPONSE_DATA, "1A" 118256042629SMatthias Ringwald // return: status 118356042629SMatthias Ringwald }; 118456042629SMatthias Ringwald 118556042629SMatthias Ringwald /** 118656042629SMatthias Ringwald * @param advertise_enable (off: 0, on: 1) 118756042629SMatthias Ringwald */ 118856042629SMatthias Ringwald const hci_cmd_t hci_le_set_advertise_enable = { 1189ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_ADVERTISE_ENABLE, "1" 119056042629SMatthias Ringwald // return: status 119156042629SMatthias Ringwald }; 119256042629SMatthias Ringwald 119356042629SMatthias Ringwald /** 119456042629SMatthias Ringwald * @param le_scan_type (passive (0), active (1)) 119556042629SMatthias Ringwald * @param le_scan_interval ([0x0004,0x4000], unit: 0.625 msec) 119656042629SMatthias Ringwald * @param le_scan_window ([0x0004,0x4000], unit: 0.625 msec) 119756042629SMatthias Ringwald * @param own_address_type (public (0), random (1)) 119856042629SMatthias Ringwald * @param scanning_filter_policy (any (0), only whitelist (1)) 119956042629SMatthias Ringwald */ 120056042629SMatthias Ringwald const hci_cmd_t hci_le_set_scan_parameters = { 1201ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_SCAN_PARAMETERS, "12211" 120256042629SMatthias Ringwald // return: status 120356042629SMatthias Ringwald }; 120456042629SMatthias Ringwald 120556042629SMatthias Ringwald /** 120656042629SMatthias Ringwald * @param le_scan_enable (disabled (0), enabled (1)) 120756042629SMatthias Ringwald * @param filter_duplices (disabled (0), enabled (1)) 120856042629SMatthias Ringwald */ 120956042629SMatthias Ringwald const hci_cmd_t hci_le_set_scan_enable = { 1210ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_SCAN_ENABLE, "11" 121156042629SMatthias Ringwald // return: status 121256042629SMatthias Ringwald }; 121356042629SMatthias Ringwald 121456042629SMatthias Ringwald /** 121556042629SMatthias Ringwald * @param le_scan_interval ([0x0004, 0x4000], unit: 0.625 msec) 121656042629SMatthias Ringwald * @param le_scan_window ([0x0004, 0x4000], unit: 0.625 msec) 121756042629SMatthias Ringwald * @param initiator_filter_policy (peer address type + peer address (0), whitelist (1)) 121856042629SMatthias Ringwald * @param peer_address_type (public (0), random (1)) 121956042629SMatthias Ringwald * @param peer_address 122056042629SMatthias Ringwald * @param own_address_type (public (0), random (1)) 122156042629SMatthias Ringwald * @param conn_interval_min ([0x0006, 0x0c80], unit: 1.25 msec) 122256042629SMatthias Ringwald * @param conn_interval_max ([0x0006, 0x0c80], unit: 1.25 msec) 122356042629SMatthias Ringwald * @param conn_latency (number of connection events [0x0000, 0x01f4]) 122456042629SMatthias Ringwald * @param supervision_timeout ([0x000a, 0x0c80], unit: 10 msec) 122556042629SMatthias Ringwald * @param minimum_CE_length ([0x0000, 0xffff], unit: 0.625 msec) 122656042629SMatthias Ringwald * @param maximum_CE_length ([0x0000, 0xffff], unit: 0.625 msec) 122756042629SMatthias Ringwald */ 122856042629SMatthias Ringwald const hci_cmd_t hci_le_create_connection= { 1229ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_CREATE_CONNECTION, "2211B1222222" 123056042629SMatthias Ringwald // return: none -> le create connection complete event 123156042629SMatthias Ringwald }; 123256042629SMatthias Ringwald 123356042629SMatthias Ringwald const hci_cmd_t hci_le_create_connection_cancel = { 1234ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_CREATE_CONNECTION_CANCEL, "" 123556042629SMatthias Ringwald // return: status 123656042629SMatthias Ringwald }; 123756042629SMatthias Ringwald 123856042629SMatthias Ringwald const hci_cmd_t hci_le_read_white_list_size = { 1239ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_WHITE_LIST_SIZE, "" 124056042629SMatthias Ringwald // return: status, number of entries in controller whitelist 124156042629SMatthias Ringwald }; 124256042629SMatthias Ringwald 124356042629SMatthias Ringwald const hci_cmd_t hci_le_clear_white_list = { 1244ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_CLEAR_WHITE_LIST, "" 124556042629SMatthias Ringwald // return: status 124656042629SMatthias Ringwald }; 124756042629SMatthias Ringwald 124856042629SMatthias Ringwald /** 124956042629SMatthias Ringwald * @param address_type (public (0), random (1)) 125056042629SMatthias Ringwald * @param bd_addr 125156042629SMatthias Ringwald */ 125256042629SMatthias Ringwald const hci_cmd_t hci_le_add_device_to_white_list = { 1253ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_ADD_DEVICE_TO_WHITE_LIST, "1B" 125456042629SMatthias Ringwald // return: status 125556042629SMatthias Ringwald }; 125656042629SMatthias Ringwald 125756042629SMatthias Ringwald /** 125856042629SMatthias Ringwald * @param address_type (public (0), random (1)) 125956042629SMatthias Ringwald * @param bd_addr 126056042629SMatthias Ringwald */ 126156042629SMatthias Ringwald const hci_cmd_t hci_le_remove_device_from_white_list = { 1262ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOVE_DEVICE_FROM_WHITE_LIST, "1B" 126356042629SMatthias Ringwald // return: status 126456042629SMatthias Ringwald }; 126556042629SMatthias Ringwald 126656042629SMatthias Ringwald /** 126756042629SMatthias Ringwald * @param conn_handle 126856042629SMatthias Ringwald * @param conn_interval_min ([0x0006,0x0c80], unit: 1.25 msec) 126956042629SMatthias Ringwald * @param conn_interval_max ([0x0006,0x0c80], unit: 1.25 msec) 127056042629SMatthias Ringwald * @param conn_latency ([0x0000,0x03e8], number of connection events) 127156042629SMatthias Ringwald * @param supervision_timeout ([0x000a,0x0c80], unit: 10 msec) 127256042629SMatthias Ringwald * @param minimum_CE_length ([0x0000,0xffff], unit: 0.625 msec) 127356042629SMatthias Ringwald * @param maximum_CE_length ([0x0000,0xffff], unit: 0.625 msec) 127456042629SMatthias Ringwald */ 127556042629SMatthias Ringwald const hci_cmd_t hci_le_connection_update = { 1276ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_CONNECTION_UPDATE, "H222222" 127756042629SMatthias Ringwald // return: none -> le connection update complete event 127856042629SMatthias Ringwald }; 127956042629SMatthias Ringwald 128056042629SMatthias Ringwald /** 128156042629SMatthias Ringwald * @param channel_map_lower_32bits 128256042629SMatthias Ringwald * @param channel_map_higher_5bits 128356042629SMatthias Ringwald */ 128456042629SMatthias Ringwald const hci_cmd_t hci_le_set_host_channel_classification = { 1285ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_HOST_CHANNEL_CLASSIFICATION, "41" 128656042629SMatthias Ringwald // return: status 128756042629SMatthias Ringwald }; 128856042629SMatthias Ringwald 128956042629SMatthias Ringwald /** 129056042629SMatthias Ringwald * @param conn_handle 129156042629SMatthias Ringwald */ 129256042629SMatthias Ringwald const hci_cmd_t hci_le_read_channel_map = { 1293ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_CHANNEL_MAP, "H" 129456042629SMatthias Ringwald // return: status, connection handle, channel map (5 bytes, 37 used) 129556042629SMatthias Ringwald }; 129656042629SMatthias Ringwald 129756042629SMatthias Ringwald /** 129856042629SMatthias Ringwald * @param conn_handle 129956042629SMatthias Ringwald */ 130056042629SMatthias Ringwald const hci_cmd_t hci_le_read_remote_used_features = { 1301ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_REMOTE_USED_FEATURES, "H" 130256042629SMatthias Ringwald // return: none -> le read remote used features complete event 130356042629SMatthias Ringwald }; 130456042629SMatthias Ringwald 130556042629SMatthias Ringwald /** 130656042629SMatthias Ringwald * @param key ((128) for AES-128) 130756042629SMatthias Ringwald * @param plain_text (128) 130856042629SMatthias Ringwald */ 130956042629SMatthias Ringwald const hci_cmd_t hci_le_encrypt = { 1310ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_ENCRYPT, "PP" 131156042629SMatthias Ringwald // return: status, encrypted data (128) 131256042629SMatthias Ringwald }; 131356042629SMatthias Ringwald 131456042629SMatthias Ringwald const hci_cmd_t hci_le_rand = { 1315ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_RAND, "" 131656042629SMatthias Ringwald // return: status, random number (64) 131756042629SMatthias Ringwald }; 131856042629SMatthias Ringwald 131956042629SMatthias Ringwald /** 132056042629SMatthias Ringwald * @param conn_handle 132156042629SMatthias Ringwald * @param random_number_lower_32bits 132256042629SMatthias Ringwald * @param random_number_higher_32bits 132356042629SMatthias Ringwald * @param encryption_diversifier (16) 132456042629SMatthias Ringwald * @param long_term_key (128) 132556042629SMatthias Ringwald */ 132656042629SMatthias Ringwald const hci_cmd_t hci_le_start_encryption = { 1327ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_START_ENCRYPTION, "H442P" 132856042629SMatthias Ringwald // return: none -> encryption changed or encryption key refresh complete event 132956042629SMatthias Ringwald }; 133056042629SMatthias Ringwald 133156042629SMatthias Ringwald /** 133256042629SMatthias Ringwald * @param connection_handle 133356042629SMatthias Ringwald * @param long_term_key (128) 133456042629SMatthias Ringwald */ 133556042629SMatthias Ringwald const hci_cmd_t hci_le_long_term_key_request_reply = { 1336ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_LONG_TERM_KEY_REQUEST_REPLY, "HP" 133756042629SMatthias Ringwald // return: status, connection handle 133856042629SMatthias Ringwald }; 133956042629SMatthias Ringwald 134056042629SMatthias Ringwald /** 134156042629SMatthias Ringwald * @param conn_handle 134256042629SMatthias Ringwald */ 134356042629SMatthias Ringwald const hci_cmd_t hci_le_long_term_key_negative_reply = { 1344ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_LONG_TERM_KEY_NEGATIVE_REPLY, "H" 134556042629SMatthias Ringwald // return: status, connection handle 134656042629SMatthias Ringwald }; 134756042629SMatthias Ringwald 134856042629SMatthias Ringwald /** 134956042629SMatthias Ringwald * @param conn_handle 135056042629SMatthias Ringwald */ 135156042629SMatthias Ringwald const hci_cmd_t hci_le_read_supported_states = { 1352ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_SUPPORTED_STATES, "H" 135356042629SMatthias Ringwald // return: status, LE states (64) 135456042629SMatthias Ringwald }; 135556042629SMatthias Ringwald 135656042629SMatthias Ringwald /** 135756042629SMatthias Ringwald * @param rx_frequency ([0x00 0x27], frequency (MHz): 2420 + N*2) 135856042629SMatthias Ringwald */ 135956042629SMatthias Ringwald const hci_cmd_t hci_le_receiver_test = { 1360ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_RECEIVER_TEST, "1" 136156042629SMatthias Ringwald // return: status 136256042629SMatthias Ringwald }; 136356042629SMatthias Ringwald 136456042629SMatthias Ringwald /** 136556042629SMatthias Ringwald * @param tx_frequency ([0x00 0x27], frequency (MHz): 2420 + N*2) 136656042629SMatthias Ringwald * @param test_payload_lengh ([0x00,0x25]) 136756042629SMatthias Ringwald * @param packet_payload ([0,7] different patterns) 136856042629SMatthias Ringwald */ 136956042629SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test = { 1370ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_TRANSMITTER_TEST, "111" 137156042629SMatthias Ringwald // return: status 137256042629SMatthias Ringwald }; 137356042629SMatthias Ringwald 137456042629SMatthias Ringwald /** 137556042629SMatthias Ringwald * @param end_test_cmd 137656042629SMatthias Ringwald */ 137756042629SMatthias Ringwald const hci_cmd_t hci_le_test_end = { 1378ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_TEST_END, "1" 137956042629SMatthias Ringwald // return: status, number of packets (8) 138056042629SMatthias Ringwald }; 138182180fcaSMatthias Ringwald 138282180fcaSMatthias Ringwald /** 1383fe704c95SMatthias Ringwald * @param conn_handle 1384fe704c95SMatthias Ringwald * @param conn_interval_min ([0x0006,0x0c80], unit: 1.25 msec) 1385fe704c95SMatthias Ringwald * @param conn_interval_max ([0x0006,0x0c80], unit: 1.25 msec) 1386fe704c95SMatthias Ringwald * @param conn_latency ([0x0000,0x03e8], number of connection events) 1387fe704c95SMatthias Ringwald * @param supervision_timeout ([0x000a,0x0c80], unit: 10 msec) 1388fe704c95SMatthias Ringwald * @param minimum_CE_length ([0x0000,0xffff], unit: 0.625 msec) 1389fe704c95SMatthias Ringwald * @param maximum_CE_length ([0x0000,0xffff], unit: 0.625 msec) 1390fe704c95SMatthias Ringwald */ 1391fe704c95SMatthias Ringwald const hci_cmd_t hci_le_remote_connection_parameter_request_reply = { 1392ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_REPLY, "H222222" 1393fe704c95SMatthias Ringwald // return: status, connection handle 1394fe704c95SMatthias Ringwald }; 1395fe704c95SMatthias Ringwald 1396fe704c95SMatthias Ringwald /** 1397fe704c95SMatthias Ringwald * @param con_handle 1398fe704c95SMatthias Ringwald * @param reason 1399fe704c95SMatthias Ringwald */ 1400fe704c95SMatthias Ringwald const hci_cmd_t hci_le_remote_connection_parameter_request_negative_reply = { 1401ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_NEGATIVE_REPLY, "H1" 1402fe704c95SMatthias Ringwald // return: status, connection handle 1403fe704c95SMatthias Ringwald }; 1404fe704c95SMatthias Ringwald 1405fe704c95SMatthias Ringwald /** 14060ea2847fSMatthias Ringwald * @param con_handle 14070ea2847fSMatthias Ringwald * @param tx_octets 14080ea2847fSMatthias Ringwald * @param tx_time 14090ea2847fSMatthias Ringwald */ 14100ea2847fSMatthias Ringwald const hci_cmd_t hci_le_set_data_length = { 1411ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_DATA_LENGTH, "H22" 14120ea2847fSMatthias Ringwald // return: status, connection handle 14130ea2847fSMatthias Ringwald }; 14140ea2847fSMatthias Ringwald 14150ea2847fSMatthias Ringwald /** 14160ea2847fSMatthias Ringwald */ 14170ea2847fSMatthias Ringwald const hci_cmd_t hci_le_read_suggested_default_data_length = { 1418ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_SUGGESTED_DEFAULT_DATA_LENGTH, "" 14190ea2847fSMatthias Ringwald // return: status, suggested max tx octets, suggested max tx time 14200ea2847fSMatthias Ringwald }; 14210ea2847fSMatthias Ringwald 14220ea2847fSMatthias Ringwald /** 14230ea2847fSMatthias Ringwald * @param suggested_max_tx_octets 14240ea2847fSMatthias Ringwald * @param suggested_max_tx_time 14250ea2847fSMatthias Ringwald */ 14260ea2847fSMatthias Ringwald const hci_cmd_t hci_le_write_suggested_default_data_length = { 1427ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_WRITE_SUGGESTED_DEFAULT_DATA_LENGTH, "22" 14280ea2847fSMatthias Ringwald // return: status 14290ea2847fSMatthias Ringwald }; 14300ea2847fSMatthias Ringwald 14310ea2847fSMatthias Ringwald /** 143282180fcaSMatthias Ringwald */ 143382180fcaSMatthias Ringwald const hci_cmd_t hci_le_read_local_p256_public_key = { 1434ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_LOCAL_P256_PUBLIC_KEY, "" 143582180fcaSMatthias Ringwald // LE Read Local P-256 Public Key Complete is generated on completion 143682180fcaSMatthias Ringwald }; 143782180fcaSMatthias Ringwald 143882180fcaSMatthias Ringwald /** 1439fcae305fSMatthias Ringwald * @param public key 1440fcae305fSMatthias Ringwald * @param private key 144182180fcaSMatthias Ringwald */ 144282180fcaSMatthias Ringwald const hci_cmd_t hci_le_generate_dhkey = { 1443ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_GENERATE_DHKEY, "QQ" 144482180fcaSMatthias Ringwald // LE Generate DHKey Complete is generated on completion 144582180fcaSMatthias Ringwald }; 144682180fcaSMatthias Ringwald 14470ea2847fSMatthias Ringwald /** 1448173ed1a3SMatthias Ringwald * @param Peer_Identity_Address_Type 1449173ed1a3SMatthias Ringwald * @param Peer_Identity_Address 1450173ed1a3SMatthias Ringwald * @param Peer_IRK 1451173ed1a3SMatthias Ringwald * @param Local_IRK 1452173ed1a3SMatthias Ringwald */ 1453173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_add_device_to_resolving_list = { 1454173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_ADD_DEVICE_TO_RESOLVING_LIST, "1BPP" 1455173ed1a3SMatthias Ringwald }; 1456173ed1a3SMatthias Ringwald 1457173ed1a3SMatthias Ringwald /** 1458173ed1a3SMatthias Ringwald * @param Peer_Identity_Address_Type 1459173ed1a3SMatthias Ringwald * @param Peer_Identity_Address 1460173ed1a3SMatthias Ringwald */ 1461173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_remove_device_from_resolving_list = { 1462173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOVE_DEVICE_FROM_RESOLVING_LIST, "1B" 1463173ed1a3SMatthias Ringwald }; 1464173ed1a3SMatthias Ringwald 1465173ed1a3SMatthias Ringwald /** 1466173ed1a3SMatthias Ringwald */ 1467173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_clear_resolving_list = { 1468173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_CLEAR_RESOLVING_LIST, "" 1469173ed1a3SMatthias Ringwald }; 1470173ed1a3SMatthias Ringwald 1471173ed1a3SMatthias Ringwald /** 1472173ed1a3SMatthias Ringwald */ 1473173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_read_resolving_list_size = { 1474173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_RESOLVING_LIST_SIZE, "" 1475173ed1a3SMatthias Ringwald }; 1476173ed1a3SMatthias Ringwald 1477173ed1a3SMatthias Ringwald /** 1478173ed1a3SMatthias Ringwald * @param Peer_Identity_Address_Type 1479173ed1a3SMatthias Ringwald * @param Peer_Identity_Address 1480173ed1a3SMatthias Ringwald */ 1481173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_read_peer_resolvable_address = { 1482173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_PEER_RESOLVABLE_ADDRESS, "" 1483173ed1a3SMatthias Ringwald }; 1484173ed1a3SMatthias Ringwald 1485173ed1a3SMatthias Ringwald /** 1486173ed1a3SMatthias Ringwald * @param Peer_Identity_Address_Type 1487173ed1a3SMatthias Ringwald * @param Peer_Identity_Address 1488173ed1a3SMatthias Ringwald */ 1489173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_read_local_resolvable_address = { 1490173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_LOCAL_RESOLVABLE_ADDRESS, "" 1491173ed1a3SMatthias Ringwald }; 1492173ed1a3SMatthias Ringwald 1493173ed1a3SMatthias Ringwald /** 1494173ed1a3SMatthias Ringwald * @param Address_Resolution_Enable 1495173ed1a3SMatthias Ringwald */ 1496173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_set_address_resolution_enabled= { 1497173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_ADDRESS_RESOLUTION_ENABLED, "1" 1498173ed1a3SMatthias Ringwald }; 1499173ed1a3SMatthias Ringwald 1500173ed1a3SMatthias Ringwald /** 1501173ed1a3SMatthias Ringwald * @param RPA_Timeout in seconds, range 0x0001 to 0x0E10, default: 900 s 1502173ed1a3SMatthias Ringwald */ 1503173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_set_resolvable_private_address_timeout= { 1504173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_RESOLVABLE_PRIVATE_ADDRESS_TIMEOUT, "2" 1505173ed1a3SMatthias Ringwald }; 1506173ed1a3SMatthias Ringwald 1507173ed1a3SMatthias Ringwald /** 15080ea2847fSMatthias Ringwald */ 15090ea2847fSMatthias Ringwald const hci_cmd_t hci_le_read_maximum_data_length = { 1510ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_MAXIMUM_DATA_LENGTH, "" 15110ea2847fSMatthias Ringwald // return: status, supported max tx octets, supported max tx time, supported max rx octets, supported max rx time 15120ea2847fSMatthias Ringwald }; 15130ea2847fSMatthias Ringwald 1514ca13daefSMatthias Ringwald /** 1515ca13daefSMatthias Ringwald * @param con_handle 1516ca13daefSMatthias Ringwald */ 1517ca13daefSMatthias Ringwald const hci_cmd_t hci_le_read_phy = { 1518ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_PHY, "H" 1519ca13daefSMatthias Ringwald // return: status, connection handler, tx phy, rx phy 1520ca13daefSMatthias Ringwald }; 1521ca13daefSMatthias Ringwald 1522ca13daefSMatthias Ringwald /** 1523ca13daefSMatthias Ringwald * @param all_phys 1524ca13daefSMatthias Ringwald * @param tx_phys 1525ca13daefSMatthias Ringwald * @param rx_phys 1526ca13daefSMatthias Ringwald */ 1527ca13daefSMatthias Ringwald const hci_cmd_t hci_le_set_default_phy = { 1528ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_DEFAULT_PHY, "111" 1529ca13daefSMatthias Ringwald // return: status 1530ca13daefSMatthias Ringwald }; 1531ca13daefSMatthias Ringwald 1532ca13daefSMatthias Ringwald /** 1533ca13daefSMatthias Ringwald * @param con_handle 1534ca13daefSMatthias Ringwald * @param all_phys 1535ca13daefSMatthias Ringwald * @param tx_phys 1536ca13daefSMatthias Ringwald * @param rx_phys 1537ca13daefSMatthias Ringwald * @param phy_options 1538ca13daefSMatthias Ringwald */ 1539ca13daefSMatthias Ringwald const hci_cmd_t hci_le_set_phy = { 1540ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PHY, "H1111" 1541ca13daefSMatthias Ringwald // LE PHY Update Complete is generated on completion 1542ca13daefSMatthias Ringwald }; 1543ca13daefSMatthias Ringwald 15440c1cf6c6SMatthias Ringwald /** 15450c1cf6c6SMatthias Ringwald * @param rx_channel 15460c1cf6c6SMatthias Ringwald * @param phy 15470c1cf6c6SMatthias Ringwald * @param modulation_index 15480c1cf6c6SMatthias Ringwald */ 15490c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_receiver_test_v2 = { 15500c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_RECEIVER_TEST_V2, "111" 15510c1cf6c6SMatthias Ringwald }; 15520c1cf6c6SMatthias Ringwald 15530c1cf6c6SMatthias Ringwald /** 15540c1cf6c6SMatthias Ringwald * @param tx_channel 15550c1cf6c6SMatthias Ringwald * @param test_data_length 15560c1cf6c6SMatthias Ringwald * @param packet_payload 15570c1cf6c6SMatthias Ringwald * @param phy 15580c1cf6c6SMatthias Ringwald */ 15590c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test_v2 = { 15600c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_TRANSMITTER_TEST_V2, "1111" 15610c1cf6c6SMatthias Ringwald }; 15620c1cf6c6SMatthias Ringwald 15630c1cf6c6SMatthias Ringwald /** 15640c1cf6c6SMatthias Ringwald * @param advertising_handle 15650c1cf6c6SMatthias Ringwald * @param random_address 15660c1cf6c6SMatthias Ringwald */ 15670c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_advertising_set_random_address = { 15680c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_ADVERTISING_SET_RANDOM_ADDRESS, "1B" 15690c1cf6c6SMatthias Ringwald }; 15700c1cf6c6SMatthias Ringwald 15710c1cf6c6SMatthias Ringwald /** 15720c1cf6c6SMatthias Ringwald * @param advertising_handle 15730c1cf6c6SMatthias Ringwald * @param advertising_event_properties 15740c1cf6c6SMatthias Ringwald * @param primary_advertising_interval_min in 0.625 ms, range: 0x000020..0xffffff 15750c1cf6c6SMatthias Ringwald * @param primary_advertising_interval_max in 0.625 ms, range: 0x000020..0xffffff 15760c1cf6c6SMatthias Ringwald * @param primary_advertising_channel_map 15770c1cf6c6SMatthias Ringwald * @param own_address_type 15780c1cf6c6SMatthias Ringwald * @param peer_address_type 15790c1cf6c6SMatthias Ringwald * @param peer_address 15800c1cf6c6SMatthias Ringwald * @param advertising_filter_policy 15810c1cf6c6SMatthias Ringwald * @param advertising_tx_power in dBm, range: -127..20 15820c1cf6c6SMatthias Ringwald * @param primary_advertising_phy 15830c1cf6c6SMatthias Ringwald * @param secondary_advertising_max_skip 15840c1cf6c6SMatthias Ringwald * @param secondary_advertising_phy 15850c1cf6c6SMatthias Ringwald * @param advertising_sid 15860c1cf6c6SMatthias Ringwald * @param scan_request_notification_enable 15870c1cf6c6SMatthias Ringwald */ 15880c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_advertising_parameters = { 15890c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_EXTENDED_ADVERTISING_PARAMETERS, "1233111B1111111" 15900c1cf6c6SMatthias Ringwald }; 15910c1cf6c6SMatthias Ringwald 15920c1cf6c6SMatthias Ringwald /** 15930c1cf6c6SMatthias Ringwald * @param advertising_handle 15940c1cf6c6SMatthias Ringwald * @param operation 15950c1cf6c6SMatthias Ringwald * @param fragment_preference 15960c1cf6c6SMatthias Ringwald * @param advertising_data_length 15970c1cf6c6SMatthias Ringwald * @param advertising_data 15980c1cf6c6SMatthias Ringwald */ 15990c1cf6c6SMatthias Ringwald 16000c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_advertising_data = { 16010c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_EXTENDED_ADVERTISING_DATA, "111JV" 16020c1cf6c6SMatthias Ringwald }; 16030c1cf6c6SMatthias Ringwald 16040c1cf6c6SMatthias Ringwald /** 16050c1cf6c6SMatthias Ringwald * @param advertising_handle 16060c1cf6c6SMatthias Ringwald * @param operation 16070c1cf6c6SMatthias Ringwald * @param fragment_preference 16080c1cf6c6SMatthias Ringwald * @param scan_response_data_length 16090c1cf6c6SMatthias Ringwald * @param scan_response_data 16100c1cf6c6SMatthias Ringwald */ 16110c1cf6c6SMatthias Ringwald 16120c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_scan_response_data = { 16130c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_EXTENDED_SCAN_RESPONSE_DATA, "111JV" 16140c1cf6c6SMatthias Ringwald }; 16150c1cf6c6SMatthias Ringwald 16160c1cf6c6SMatthias Ringwald /** 16170c1cf6c6SMatthias Ringwald * @param enable 16180c1cf6c6SMatthias Ringwald * @param num_sets 16190c1cf6c6SMatthias Ringwald * @param advertising_handle[i] 16200c1cf6c6SMatthias Ringwald * @param duration[i] 16210c1cf6c6SMatthias Ringwald * @param max_extended_advertising_events[i] 16220c1cf6c6SMatthias Ringwald */ 16230c1cf6c6SMatthias Ringwald 16240c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_advertising_enable = { 16250c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_EXTENDED_ADVERTISING_ENABLE, "11[121]" 16260c1cf6c6SMatthias Ringwald }; 16270c1cf6c6SMatthias Ringwald 16280c1cf6c6SMatthias Ringwald /** 16290c1cf6c6SMatthias Ringwald */ 16300c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_maximum_advertising_data_length = { 16310c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_MAXIMUM_ADVERTISING_DATA_LENGTH, "" 16320c1cf6c6SMatthias Ringwald }; 16330c1cf6c6SMatthias Ringwald 16340c1cf6c6SMatthias Ringwald /** 16350c1cf6c6SMatthias Ringwald */ 16360c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_number_of_supported_advertising_sets = { 16370c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_NUMBER_OF_SUPPORTED_ADVERTISING_SETS, "" 16380c1cf6c6SMatthias Ringwald }; 16390c1cf6c6SMatthias Ringwald 16400c1cf6c6SMatthias Ringwald /** 16410c1cf6c6SMatthias Ringwald * @param advertising_handle 16420c1cf6c6SMatthias Ringwald */ 16430c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_advertising_set = { 16440c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOVE_ADVERTISING_SET, "1" 16450c1cf6c6SMatthias Ringwald }; 16460c1cf6c6SMatthias Ringwald 16470c1cf6c6SMatthias Ringwald /** 16480c1cf6c6SMatthias Ringwald */ 16490c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_clear_advertising_sets = { 16500c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_CLEAR_ADVERTISING_SETS, "" 16510c1cf6c6SMatthias Ringwald }; 16520c1cf6c6SMatthias Ringwald 16530c1cf6c6SMatthias Ringwald /** 16540c1cf6c6SMatthias Ringwald * @param advertising_handle 16550c1cf6c6SMatthias Ringwald * @param periodic_advertising_interval_min * 1.25 ms, range 0x0006..0xffff 16560c1cf6c6SMatthias Ringwald * @param periodic_advertising_interval_max * 1.25 ms, range 0x0006..0xffff 16570c1cf6c6SMatthias Ringwald * @param periodic_advertising_properties 16580c1cf6c6SMatthias Ringwald */ 16590c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_parameters = { 16600c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_PARAMETERS, "1222" 16610c1cf6c6SMatthias Ringwald }; 16620c1cf6c6SMatthias Ringwald 16630c1cf6c6SMatthias Ringwald /** 16640c1cf6c6SMatthias Ringwald * @param advertising_handle 16650c1cf6c6SMatthias Ringwald * @param operation 16660c1cf6c6SMatthias Ringwald * @param advertising_data_length 16670c1cf6c6SMatthias Ringwald * @param advertising_data 16680c1cf6c6SMatthias Ringwald */ 16690c1cf6c6SMatthias Ringwald 16700c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_data = { 16710c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_DATA, "11JV" 16720c1cf6c6SMatthias Ringwald }; 16730c1cf6c6SMatthias Ringwald 16740c1cf6c6SMatthias Ringwald /** 16750c1cf6c6SMatthias Ringwald * @param enable 16760c1cf6c6SMatthias Ringwald * @param advertising_handle 16770c1cf6c6SMatthias Ringwald */ 16780c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_enable = { 16790c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_ENABLE, "11" 16800c1cf6c6SMatthias Ringwald }; 16810c1cf6c6SMatthias Ringwald 16820c1cf6c6SMatthias Ringwald /** 16830c1cf6c6SMatthias Ringwald * @param own_address_type 16840c1cf6c6SMatthias Ringwald * @param scanning_filter_policy 16850c1cf6c6SMatthias Ringwald * @param scanning_phys 0 = LE 1M PHY | 2 = LE Coded PHY 16860c1cf6c6SMatthias Ringwald * @param scan_type 16870c1cf6c6SMatthias Ringwald * @param scan_interval * 0.625, range = 0x0004..0xffff 16880c1cf6c6SMatthias Ringwald * @param scan_window * 0.625, range = 0x0004..0xffff 16890c1cf6c6SMatthias Ringwald */ 16900c1cf6c6SMatthias Ringwald 16910c1cf6c6SMatthias Ringwald // Variants for 1 (1M or Coded) PHY 16920c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_scan_parameters_1 = { 16930c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_EXTENDED_SCAN_PARAMETERS, "111122" 16940c1cf6c6SMatthias Ringwald }; 16950c1cf6c6SMatthias Ringwald 16960c1cf6c6SMatthias Ringwald // Variants for 2 (1M and Coded) PHY 16970c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_scan_parameters_2 = { 16980c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_EXTENDED_SCAN_PARAMETERS, "111122122" 16990c1cf6c6SMatthias Ringwald }; 17000c1cf6c6SMatthias Ringwald 17010c1cf6c6SMatthias Ringwald /** 17020c1cf6c6SMatthias Ringwald * @param enable 17030c1cf6c6SMatthias Ringwald * @param filter_duplicates 17040c1cf6c6SMatthias Ringwald * @param duration 0 = Scan continuously until explicitly disable, 10 ms 17050c1cf6c6SMatthias Ringwald * @param period 0 = Scan continuously, 1.28 s 17060c1cf6c6SMatthias Ringwald */ 17070c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_extended_scan_enable = { 17080c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_EXTENDED_SCAN_ENABLE, "1122" 17090c1cf6c6SMatthias Ringwald }; 17100c1cf6c6SMatthias Ringwald 17110c1cf6c6SMatthias Ringwald /** 17120c1cf6c6SMatthias Ringwald * @param initiator_filter_policy 17130c1cf6c6SMatthias Ringwald * @param own_address_type 17140c1cf6c6SMatthias Ringwald * @param peer_address_type 17150c1cf6c6SMatthias Ringwald * @param peer_address 17160c1cf6c6SMatthias Ringwald * @param initiating_phys with bit 0 = LE 1M PHY, bit 1 = LE 2M PHY, bit 2 = Coded PHY 17170c1cf6c6SMatthias Ringwald * @param scan_interval[i] * 0.625 ms 17180c1cf6c6SMatthias Ringwald * @param scan_window[i] * 0.625 ms 17190c1cf6c6SMatthias Ringwald * @param connection_interval_min[i] * 1.25 ms 17200c1cf6c6SMatthias Ringwald * @param connection_interval_max[i] * 1.25 ms 17210c1cf6c6SMatthias Ringwald * @param connection_latency[i] 17220c1cf6c6SMatthias Ringwald * @param supervision_timeout[i] * 10 ms 17230c1cf6c6SMatthias Ringwald * @param min_ce_length[i] * 0.625 ms 17240c1cf6c6SMatthias Ringwald * @param max_ce_length[i] * 0.625 ms 17250c1cf6c6SMatthias Ringwald */ 17260c1cf6c6SMatthias Ringwald 17270c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_extended_create_connection = { 17280c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_EXTENDED_CREATE_CONNECTION, "111Bb[22222222]" 17290c1cf6c6SMatthias Ringwald }; 17300c1cf6c6SMatthias Ringwald 17310c1cf6c6SMatthias Ringwald /** 17320c1cf6c6SMatthias Ringwald * @param options 17330c1cf6c6SMatthias Ringwald * @param advertising_sid 17340c1cf6c6SMatthias Ringwald * @param advertiser_address_type 17350c1cf6c6SMatthias Ringwald * @param advertiser_address 17360c1cf6c6SMatthias Ringwald * @param skip 17370c1cf6c6SMatthias Ringwald * @param sync_timeout * 10 ms 17380c1cf6c6SMatthias Ringwald * @param sync_cte_type 17390c1cf6c6SMatthias Ringwald */ 17400c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_create_sync = { 17410c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_CREATE_SYNC, "111B221" 17420c1cf6c6SMatthias Ringwald }; 17430c1cf6c6SMatthias Ringwald 17440c1cf6c6SMatthias Ringwald /** 17450c1cf6c6SMatthias Ringwald */ 17460c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_create_sync_cancel = { 17470c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_CREATE_SYNC_CANCEL, "" 17480c1cf6c6SMatthias Ringwald }; 17490c1cf6c6SMatthias Ringwald 17500c1cf6c6SMatthias Ringwald /** 17510c1cf6c6SMatthias Ringwald * @param sync_handle 17520c1cf6c6SMatthias Ringwald */ 17530c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_terminate_sync = { 17540c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_TERMINATE_SYNC, "" 17550c1cf6c6SMatthias Ringwald }; 17560c1cf6c6SMatthias Ringwald 17570c1cf6c6SMatthias Ringwald /** 17580c1cf6c6SMatthias Ringwald * @param advertiser_address_type 17590c1cf6c6SMatthias Ringwald * @param advertiser_address 17600c1cf6c6SMatthias Ringwald * @param advertising_sid 17610c1cf6c6SMatthias Ringwald */ 17620c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_add_device_to_periodic_advertiser_list = { 17630c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_ADD_DEVICE_TO_PERIODIC_ADVERTISER_LIST, "1B1" 17640c1cf6c6SMatthias Ringwald }; 17650c1cf6c6SMatthias Ringwald 17660c1cf6c6SMatthias Ringwald /** 17670c1cf6c6SMatthias Ringwald * @param advertiser_address_type 17680c1cf6c6SMatthias Ringwald * @param advertiser_address 17690c1cf6c6SMatthias Ringwald * @param advertising_sid 17700c1cf6c6SMatthias Ringwald */ 17710c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_device_from_periodic_advertiser_list = { 17720c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISER_LIST, "1B1" 17730c1cf6c6SMatthias Ringwald }; 17740c1cf6c6SMatthias Ringwald 17750c1cf6c6SMatthias Ringwald /** 17760c1cf6c6SMatthias Ringwald */ 17770c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_clear_periodic_advertiser_list = { 17780c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_CLEAR_PERIODIC_ADVERTISER_LIST, "" 17790c1cf6c6SMatthias Ringwald }; 17800c1cf6c6SMatthias Ringwald 17810c1cf6c6SMatthias Ringwald /** 17820c1cf6c6SMatthias Ringwald */ 17830c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_periodic_advertiser_list_size = { 17840c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_PERIODIC_ADVERTISER_LIST_SIZE, "" 17850c1cf6c6SMatthias Ringwald }; 17860c1cf6c6SMatthias Ringwald 17870c1cf6c6SMatthias Ringwald /** 17880c1cf6c6SMatthias Ringwald */ 17890c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_transmit_power = { 17900c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_TRANSMIT_POWER, "" 17910c1cf6c6SMatthias Ringwald }; 17920c1cf6c6SMatthias Ringwald 17930c1cf6c6SMatthias Ringwald /** 17940c1cf6c6SMatthias Ringwald */ 17950c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_rf_path_compensation = { 17960c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_RF_PATH_COMPENSATION, "" 17970c1cf6c6SMatthias Ringwald }; 17980c1cf6c6SMatthias Ringwald 17990c1cf6c6SMatthias Ringwald /** 18000c1cf6c6SMatthias Ringwald * @param rf_tx_path_compensation_value * 0.1 dB, signed 18010c1cf6c6SMatthias Ringwald * @param rf_rx_path_compensation_value * 0.1 dB, signed 18020c1cf6c6SMatthias Ringwald */ 18030c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_write_rf_path_compensation = { 18040c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_WRITE_RF_PATH_COMPENSATION, "22" 18050c1cf6c6SMatthias Ringwald }; 18060c1cf6c6SMatthias Ringwald 18070c1cf6c6SMatthias Ringwald /** 18080c1cf6c6SMatthias Ringwald * @param peer_identity_address_type 18090c1cf6c6SMatthias Ringwald * @param peer_identity_address 18100c1cf6c6SMatthias Ringwald * @param privacy_mode 18110c1cf6c6SMatthias Ringwald */ 18120c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_privacy_mode = { 18130c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PRIVACY_MODE, "1B1" 18140c1cf6c6SMatthias Ringwald }; 18150c1cf6c6SMatthias Ringwald 18160c1cf6c6SMatthias Ringwald /** 18170c1cf6c6SMatthias Ringwald * @param rx_channel 18180c1cf6c6SMatthias Ringwald * @param phy 18190c1cf6c6SMatthias Ringwald * @param modulation_index 18200c1cf6c6SMatthias Ringwald * @param expected_cte_length 18210c1cf6c6SMatthias Ringwald * @param expected_cte_type 18220c1cf6c6SMatthias Ringwald * @param slot_durations 18230c1cf6c6SMatthias Ringwald * @param switching_pattern_length 18240c1cf6c6SMatthias Ringwald * @param antenna_ids[i] 18250c1cf6c6SMatthias Ringwald */ 18260c1cf6c6SMatthias Ringwald 18270c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_receiver_test_v3 = { 18280c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_RECEIVER_TEST_V3, "111111a[1]" 18290c1cf6c6SMatthias Ringwald }; 18300c1cf6c6SMatthias Ringwald 18310c1cf6c6SMatthias Ringwald /** 18320c1cf6c6SMatthias Ringwald * @param tx_channel 18330c1cf6c6SMatthias Ringwald * @param test_data_length 18340c1cf6c6SMatthias Ringwald * @param packet_payload 18350c1cf6c6SMatthias Ringwald * @param phy 18360c1cf6c6SMatthias Ringwald * @param cte_length 18370c1cf6c6SMatthias Ringwald * @param cte_type 18380c1cf6c6SMatthias Ringwald * @param switching_pattern_length 18390c1cf6c6SMatthias Ringwald * @param antenna_ids[i] 18400c1cf6c6SMatthias Ringwald */ 18410c1cf6c6SMatthias Ringwald 18420c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test_v3 = { 18430c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_TRANSMITTER_TEST_V3, "111111a[1]" 18440c1cf6c6SMatthias Ringwald }; 18450c1cf6c6SMatthias Ringwald 18460c1cf6c6SMatthias Ringwald /** 18470c1cf6c6SMatthias Ringwald * @param advertising_handle 18480c1cf6c6SMatthias Ringwald * @param cte_length 18490c1cf6c6SMatthias Ringwald * @param cte_type 18500c1cf6c6SMatthias Ringwald * @param cte_count 18510c1cf6c6SMatthias Ringwald * @param switching_pattern_length 18520c1cf6c6SMatthias Ringwald * @param antenna_ids[i] 18530c1cf6c6SMatthias Ringwald */ 18540c1cf6c6SMatthias Ringwald 18550c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connectionless_cte_transmit_parameters = { 18560c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_CONNECTIONLESS_CTE_TRANSMIT_PARAMETERS, "1111a[1]" 18570c1cf6c6SMatthias Ringwald }; 18580c1cf6c6SMatthias Ringwald 18590c1cf6c6SMatthias Ringwald /** 18600c1cf6c6SMatthias Ringwald * @param advertising_handle 18610c1cf6c6SMatthias Ringwald * @param cte_enable 18620c1cf6c6SMatthias Ringwald */ 18630c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connectionless_cte_transmit_enable = { 18640c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_CONNECTIONLESS_CTE_TRANSMIT_ENABLE, "11" 18650c1cf6c6SMatthias Ringwald }; 18660c1cf6c6SMatthias Ringwald 18670c1cf6c6SMatthias Ringwald /** 18680c1cf6c6SMatthias Ringwald * @param sync_handle 18690c1cf6c6SMatthias Ringwald * @param sampling_enable 18700c1cf6c6SMatthias Ringwald * @param slot_durations 18710c1cf6c6SMatthias Ringwald * @param max_sampled_ctes 18720c1cf6c6SMatthias Ringwald * @param switching_pattern_length 18730c1cf6c6SMatthias Ringwald * @param antenna_ids[i] 18740c1cf6c6SMatthias Ringwald */ 18750c1cf6c6SMatthias Ringwald 18760c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connectionless_iq_sampling_enable = { 18770c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_CONNECTIONLESS_IQ_SAMPLING_ENABLE, "2111a[i]" 18780c1cf6c6SMatthias Ringwald }; 18790c1cf6c6SMatthias Ringwald 18800c1cf6c6SMatthias Ringwald /** 18810c1cf6c6SMatthias Ringwald * @param connection_handle 18820c1cf6c6SMatthias Ringwald * @param sampling_enable 18830c1cf6c6SMatthias Ringwald * @param slot_durations 18840c1cf6c6SMatthias Ringwald * @param switching_pattern_length 18850c1cf6c6SMatthias Ringwald * @param antenna_ids[i] 18860c1cf6c6SMatthias Ringwald */ 18870c1cf6c6SMatthias Ringwald 18880c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connection_cte_receive_parameters = { 18890c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_CONNECTION_CTE_RECEIVE_PARAMETERS, "211a[1]" 18900c1cf6c6SMatthias Ringwald }; 18910c1cf6c6SMatthias Ringwald 18920c1cf6c6SMatthias Ringwald /** 18930c1cf6c6SMatthias Ringwald * @param connection_handle 18940c1cf6c6SMatthias Ringwald * @param cte_types 18950c1cf6c6SMatthias Ringwald * @param switching_pattern_length 18960c1cf6c6SMatthias Ringwald * @param antenna_ids[i] 18970c1cf6c6SMatthias Ringwald */ 18980c1cf6c6SMatthias Ringwald 18990c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_connection_cte_transmit_parameters = { 19000c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_CONNECTION_CTE_TRANSMIT_PARAMETERS, "21a[1]" 19010c1cf6c6SMatthias Ringwald }; 19020c1cf6c6SMatthias Ringwald 19030c1cf6c6SMatthias Ringwald /** 19040c1cf6c6SMatthias Ringwald * @param connection_handle 19050c1cf6c6SMatthias Ringwald * @param enable 19060c1cf6c6SMatthias Ringwald * @param cte_request_interval 19070c1cf6c6SMatthias Ringwald * @param requested_cte_length 19080c1cf6c6SMatthias Ringwald * @param requested_cte_type 19090c1cf6c6SMatthias Ringwald */ 19100c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_connection_cte_request_enable = { 19110c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_CONNECTION_CTE_REQUEST_ENABLE, "H1211" 19120c1cf6c6SMatthias Ringwald }; 19130c1cf6c6SMatthias Ringwald 19140c1cf6c6SMatthias Ringwald /** 19150c1cf6c6SMatthias Ringwald * @param connection_handle 19160c1cf6c6SMatthias Ringwald * @param enable 19170c1cf6c6SMatthias Ringwald */ 19180c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_connection_cte_response_enable = { 19190c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_CONNECTION_CTE_RESPONSE_ENABLE, "H1" 19200c1cf6c6SMatthias Ringwald }; 19210c1cf6c6SMatthias Ringwald 19220c1cf6c6SMatthias Ringwald /** 19230c1cf6c6SMatthias Ringwald */ 19240c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_antenna_information = { 19250c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_ANTENNA_INFORMATION, "" 19260c1cf6c6SMatthias Ringwald }; 19270c1cf6c6SMatthias Ringwald 19280c1cf6c6SMatthias Ringwald /** 19290c1cf6c6SMatthias Ringwald * @param sync_handle 19300c1cf6c6SMatthias Ringwald * @param enable 19310c1cf6c6SMatthias Ringwald */ 19320c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_receive_enable = { 19330c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_RECEIVE_ENABLE, "H1" 19340c1cf6c6SMatthias Ringwald }; 19350c1cf6c6SMatthias Ringwald 19360c1cf6c6SMatthias Ringwald /** 19370c1cf6c6SMatthias Ringwald * @param connection_handle 19380c1cf6c6SMatthias Ringwald * @param service_data 19390c1cf6c6SMatthias Ringwald * @param sync_handle 19400c1cf6c6SMatthias Ringwald */ 19410c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_sync_transfer = { 19420c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_SYNC_TRANSFER, "H22" 19430c1cf6c6SMatthias Ringwald }; 19440c1cf6c6SMatthias Ringwald 19450c1cf6c6SMatthias Ringwald /** 19460c1cf6c6SMatthias Ringwald * @param connection_handle 19470c1cf6c6SMatthias Ringwald * @param service_data 19480c1cf6c6SMatthias Ringwald * @param advertising_handle 19490c1cf6c6SMatthias Ringwald */ 19500c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_periodic_advertising_set_info_transfer = { 19510c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_PERIODIC_ADVERTISING_SET_INFO_TRANSFER, "H21" 19520c1cf6c6SMatthias Ringwald }; 19530c1cf6c6SMatthias Ringwald 19540c1cf6c6SMatthias Ringwald /** 19550c1cf6c6SMatthias Ringwald * @param connection_handle 19560c1cf6c6SMatthias Ringwald * @param mode 19570c1cf6c6SMatthias Ringwald * @param skip 19580c1cf6c6SMatthias Ringwald * @param sync_timeout 19590c1cf6c6SMatthias Ringwald * @param cte_type 19600c1cf6c6SMatthias Ringwald */ 19610c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_periodic_advertising_sync_transfer_parameters = { 19620c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PERIODIC_ADVERTISING_SYNC_TRANSFER_PARAMETERS, "H1221" 19630c1cf6c6SMatthias Ringwald }; 19640c1cf6c6SMatthias Ringwald 19650c1cf6c6SMatthias Ringwald /** 19660c1cf6c6SMatthias Ringwald * @param mode 19670c1cf6c6SMatthias Ringwald * @param skip 19680c1cf6c6SMatthias Ringwald * @param sync_timeout 19690c1cf6c6SMatthias Ringwald * @param cte_type 19700c1cf6c6SMatthias Ringwald */ 19710c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_default_periodic_advertising_sync_transfer_parameters = { 19720c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_DEFAULT_PERIODIC_ADVERTISING_SYNC_TRANSFER_PARAMETERS, "1221" 19730c1cf6c6SMatthias Ringwald }; 19740c1cf6c6SMatthias Ringwald 19750c1cf6c6SMatthias Ringwald /** 19760c1cf6c6SMatthias Ringwald * @param 256Remote_P-256_public_key_x 19770c1cf6c6SMatthias Ringwald * @param 256Remote_P-256_public_key_y 19780c1cf6c6SMatthias Ringwald * @param key_type 19790c1cf6c6SMatthias Ringwald */ 19800c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_generate_dhkey_v2 = { 19810c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_GENERATE_DHKEY_V2, "QQ1" 19820c1cf6c6SMatthias Ringwald }; 19830c1cf6c6SMatthias Ringwald 19840c1cf6c6SMatthias Ringwald /** 19850c1cf6c6SMatthias Ringwald * @param action 19860c1cf6c6SMatthias Ringwald */ 19870c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_modify_sleep_clock_accuracy = { 19880c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_MODIFY_SLEEP_CLOCK_ACCURACY, "1" 19890c1cf6c6SMatthias Ringwald }; 19900c1cf6c6SMatthias Ringwald 19910c1cf6c6SMatthias Ringwald /** 19920c1cf6c6SMatthias Ringwald */ 19930c1cf6c6SMatthias Ringwald const hci_cmd_t hci_opcode_hci_le_read_buffer_size_v2 = { 19940c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_OPCODE_HCI_LE_READ_BUFFER_SIZE_V2, "" 19950c1cf6c6SMatthias Ringwald }; 19960c1cf6c6SMatthias Ringwald 19970c1cf6c6SMatthias Ringwald /** 19980c1cf6c6SMatthias Ringwald * @param connection_handle 19990c1cf6c6SMatthias Ringwald */ 20000c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_iso_tx_sync = { 20010c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_ISO_TX_SYNC, "H" 20020c1cf6c6SMatthias Ringwald }; 20030c1cf6c6SMatthias Ringwald 20040c1cf6c6SMatthias Ringwald /** 20050c1cf6c6SMatthias Ringwald * @param cig_id 20060c1cf6c6SMatthias Ringwald * @param sdu_interval_m_to_s 20070c1cf6c6SMatthias Ringwald * @param sdu_interval_s_to_m 20080c1cf6c6SMatthias Ringwald * @param slaves_clock_accuracy 20090c1cf6c6SMatthias Ringwald * @param packing 20100c1cf6c6SMatthias Ringwald * @param framing 20110c1cf6c6SMatthias Ringwald * @param max_transport_latency_m_to_s 20120c1cf6c6SMatthias Ringwald * @param max_transport_latency_s_to_m 20130c1cf6c6SMatthias Ringwald * @param cis_count 20140c1cf6c6SMatthias Ringwald * @param cis_id[i] 20150c1cf6c6SMatthias Ringwald * @param max_sdu_m_to_s[i] 20160c1cf6c6SMatthias Ringwald * @param max_sdu_s_to_m[i] 20170c1cf6c6SMatthias Ringwald * @param phy_m_to_s[i] 20180c1cf6c6SMatthias Ringwald * @param phy_s_to_m[i] 20190c1cf6c6SMatthias Ringwald * @param rtn_m_to_s[i] 20200c1cf6c6SMatthias Ringwald * @param rtn_s_to_m[i] 20210c1cf6c6SMatthias Ringwald */ 20220c1cf6c6SMatthias Ringwald 20230c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_cig_parameters = { 20240c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_CIG_PARAMETERS, "13311122a[1221111]" 20250c1cf6c6SMatthias Ringwald }; 20260c1cf6c6SMatthias Ringwald 20270c1cf6c6SMatthias Ringwald /** 20280c1cf6c6SMatthias Ringwald * @param cig_id 20290c1cf6c6SMatthias Ringwald * @param sdu_interval_m_to_s 20300c1cf6c6SMatthias Ringwald * @param sdu_interval_s_to_m 20310c1cf6c6SMatthias Ringwald * @param ft_m_to_s 20320c1cf6c6SMatthias Ringwald * @param ft_s_to_m 20330c1cf6c6SMatthias Ringwald * @param iso_interval 20340c1cf6c6SMatthias Ringwald * @param slaves_clock_accuracy 20350c1cf6c6SMatthias Ringwald * @param packing 20360c1cf6c6SMatthias Ringwald * @param framing 20370c1cf6c6SMatthias Ringwald * @param max_transport_latency_m_to_s 20380c1cf6c6SMatthias Ringwald * @param max_transport_latency_s_to_m 20390c1cf6c6SMatthias Ringwald * @param cis_count 20400c1cf6c6SMatthias Ringwald * @param cis_id[i] 20410c1cf6c6SMatthias Ringwald * @param nse[i] 20420c1cf6c6SMatthias Ringwald * @param max_sdu_m_to_s[i] 20430c1cf6c6SMatthias Ringwald * @param max_sdu_s_to_m[i] 20440c1cf6c6SMatthias Ringwald * @param max_pdu_m_to_s[i] 20450c1cf6c6SMatthias Ringwald * @param max_pdu_s_to_m[i] 20460c1cf6c6SMatthias Ringwald * @param phy_m_to_s[i] 20470c1cf6c6SMatthias Ringwald * @param phy_s_to_m[i] 20480c1cf6c6SMatthias Ringwald * @param bn_m_to_s[i] 20490c1cf6c6SMatthias Ringwald * @param bn_s_to_m[i] 20500c1cf6c6SMatthias Ringwald */ 20510c1cf6c6SMatthias Ringwald 20520c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_cig_parameters_test = { 20530c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_CIG_PARAMETERS_TEST, "133112111a[1122221111]" 20540c1cf6c6SMatthias Ringwald }; 20550c1cf6c6SMatthias Ringwald 20560c1cf6c6SMatthias Ringwald /** 20570c1cf6c6SMatthias Ringwald * @param cis_count 20580c1cf6c6SMatthias Ringwald * @param cis_connection_handle[i] 20590c1cf6c6SMatthias Ringwald * @param acl_connection_handle[i] 20600c1cf6c6SMatthias Ringwald */ 20610c1cf6c6SMatthias Ringwald 20620c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_create_cis = { 20630c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_CREATE_CIS, "a[22]" 20640c1cf6c6SMatthias Ringwald }; 20650c1cf6c6SMatthias Ringwald 20660c1cf6c6SMatthias Ringwald /** 20670c1cf6c6SMatthias Ringwald * @param cig_id 20680c1cf6c6SMatthias Ringwald */ 20690c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_cig = { 20700c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOVE_CIG, "1" 20710c1cf6c6SMatthias Ringwald }; 20720c1cf6c6SMatthias Ringwald 20730c1cf6c6SMatthias Ringwald /** 20740c1cf6c6SMatthias Ringwald * @param connection_handle 20750c1cf6c6SMatthias Ringwald */ 20760c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_accept_cis_request = { 20770c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_ACCEPT_CIS_REQUEST, "H" 20780c1cf6c6SMatthias Ringwald }; 20790c1cf6c6SMatthias Ringwald 20800c1cf6c6SMatthias Ringwald /** 20810c1cf6c6SMatthias Ringwald * @param connection_handle 20820c1cf6c6SMatthias Ringwald */ 20830c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_reject_cis_request = { 20840c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_REJECT_CIS_REQUEST, "H" 20850c1cf6c6SMatthias Ringwald }; 20860c1cf6c6SMatthias Ringwald 20870c1cf6c6SMatthias Ringwald /** 20880c1cf6c6SMatthias Ringwald * @param big_handle 20890c1cf6c6SMatthias Ringwald * @param advertising_handle 20900c1cf6c6SMatthias Ringwald * @param num_bis 20910c1cf6c6SMatthias Ringwald * @param sdu_interval 20920c1cf6c6SMatthias Ringwald * @param max_sdu 20930c1cf6c6SMatthias Ringwald * @param max_transport_latency 20940c1cf6c6SMatthias Ringwald * @param rtn 20950c1cf6c6SMatthias Ringwald * @param phy 20960c1cf6c6SMatthias Ringwald * @param packing 20970c1cf6c6SMatthias Ringwald * @param framing 20980c1cf6c6SMatthias Ringwald * @param encryption 20990c1cf6c6SMatthias Ringwald * @param broadcast_code 21000c1cf6c6SMatthias Ringwald */ 21010c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_create_big = { 21020c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_CREATE_BIG, "11132211111P" 21030c1cf6c6SMatthias Ringwald }; 21040c1cf6c6SMatthias Ringwald 21050c1cf6c6SMatthias Ringwald /** 21060c1cf6c6SMatthias Ringwald * @param big_handle 21070c1cf6c6SMatthias Ringwald * @param advertising_handle 21080c1cf6c6SMatthias Ringwald * @param num_bis 21090c1cf6c6SMatthias Ringwald * @param sdu_interval 21100c1cf6c6SMatthias Ringwald * @param iso_interval 21110c1cf6c6SMatthias Ringwald * @param nse 21120c1cf6c6SMatthias Ringwald * @param max_sdu 21130c1cf6c6SMatthias Ringwald * @param max_PDU 21140c1cf6c6SMatthias Ringwald * @param phy 21150c1cf6c6SMatthias Ringwald * @param packing 21160c1cf6c6SMatthias Ringwald * @param framing 21170c1cf6c6SMatthias Ringwald * @param bn 21180c1cf6c6SMatthias Ringwald * @param irc 21190c1cf6c6SMatthias Ringwald * @param pto 21200c1cf6c6SMatthias Ringwald * @param encryption 21210c1cf6c6SMatthias Ringwald * @param broadcast_code 21220c1cf6c6SMatthias Ringwald */ 21230c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_create_big_test = { 21240c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_CREATE_BIG_TEST, "111321221111111P" 21250c1cf6c6SMatthias Ringwald }; 21260c1cf6c6SMatthias Ringwald 21270c1cf6c6SMatthias Ringwald /** 21280c1cf6c6SMatthias Ringwald * @param big_handle 21290c1cf6c6SMatthias Ringwald * @param reason 21300c1cf6c6SMatthias Ringwald */ 21310c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_terminate_big = { 21320c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_TERMINATE_BIG, "11" 21330c1cf6c6SMatthias Ringwald }; 21340c1cf6c6SMatthias Ringwald 21350c1cf6c6SMatthias Ringwald /** 21360c1cf6c6SMatthias Ringwald * @param big_handle 21370c1cf6c6SMatthias Ringwald * @param sync_handle 21380c1cf6c6SMatthias Ringwald * @param encryption 21390c1cf6c6SMatthias Ringwald * @param broadcast_code 21400c1cf6c6SMatthias Ringwald * @param mse 21410c1cf6c6SMatthias Ringwald * @param big_sync_timeout 21420c1cf6c6SMatthias Ringwald * @param num_bis 21430c1cf6c6SMatthias Ringwald * @param bis[i] 21440c1cf6c6SMatthias Ringwald */ 21450c1cf6c6SMatthias Ringwald 21460c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_big_create_sync = { 21470c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_BIG_CREATE_SYNC, "1H1P12a[1]" 21480c1cf6c6SMatthias Ringwald }; 21490c1cf6c6SMatthias Ringwald 21500c1cf6c6SMatthias Ringwald /** 21510c1cf6c6SMatthias Ringwald * @param big_handle 21520c1cf6c6SMatthias Ringwald */ 21530c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_big_terminate_sync = { 21540c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_BIG_TERMINATE_SYNC, "" 21550c1cf6c6SMatthias Ringwald }; 21560c1cf6c6SMatthias Ringwald 21570c1cf6c6SMatthias Ringwald /** 21580c1cf6c6SMatthias Ringwald * @param connection_handle 21590c1cf6c6SMatthias Ringwald */ 21600c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_request_peer_sca = { 21610c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_REQUEST_PEER_SCA, "H" 21620c1cf6c6SMatthias Ringwald }; 21630c1cf6c6SMatthias Ringwald 21640c1cf6c6SMatthias Ringwald /** 21650c1cf6c6SMatthias Ringwald * @param connection_handle 21660c1cf6c6SMatthias Ringwald * @param data_path_direction 21670c1cf6c6SMatthias Ringwald * @param data_path_id 21680c1cf6c6SMatthias Ringwald * @param codec_id_coding_format 21690c1cf6c6SMatthias Ringwald * @param codec_id_company_identifier (Shall be ignored if codec_id_coding_format is not 0xFF) 21700c1cf6c6SMatthias Ringwald * @param codec_id_vendor_codec_id (Shall be ignored if codec_id_coding_format is not 0xFF) 21710c1cf6c6SMatthias Ringwald * @param controller_delay 21720c1cf6c6SMatthias Ringwald * @param codec_configuration_length 21730c1cf6c6SMatthias Ringwald * @param codec_configuration 21740c1cf6c6SMatthias Ringwald */ 21750c1cf6c6SMatthias Ringwald 21760c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_setup_iso_data_path = { 21770c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SETUP_ISO_DATA_PATH, "H111223JV" 21780c1cf6c6SMatthias Ringwald }; 21790c1cf6c6SMatthias Ringwald 21800c1cf6c6SMatthias Ringwald /** 21810c1cf6c6SMatthias Ringwald * @param connection_handle 21820c1cf6c6SMatthias Ringwald */ 21830c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_remove_iso_data_path = { 21840c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOVE_ISO_DATA_PATH, "H1" 21850c1cf6c6SMatthias Ringwald }; 21860c1cf6c6SMatthias Ringwald 21870c1cf6c6SMatthias Ringwald /** 21880c1cf6c6SMatthias Ringwald * @param connection_handle 21890c1cf6c6SMatthias Ringwald * @param paylaod_type 21900c1cf6c6SMatthias Ringwald */ 21910c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_transmit_test = { 21920c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_ISO_TRANSMIT_TEST, "H1" 21930c1cf6c6SMatthias Ringwald }; 21940c1cf6c6SMatthias Ringwald 21950c1cf6c6SMatthias Ringwald /** 21960c1cf6c6SMatthias Ringwald * @param connection_handle 21970c1cf6c6SMatthias Ringwald * @param paylaod_type 21980c1cf6c6SMatthias Ringwald */ 21990c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_receive_test = { 22000c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_ISO_RECEIVE_TEST, "H1" 22010c1cf6c6SMatthias Ringwald }; 22020c1cf6c6SMatthias Ringwald 22030c1cf6c6SMatthias Ringwald /** 22040c1cf6c6SMatthias Ringwald * @param connection_handle 22050c1cf6c6SMatthias Ringwald */ 22060c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_read_test_counters = { 22070c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_ISO_READ_TEST_COUNTERS, "H" 22080c1cf6c6SMatthias Ringwald }; 22090c1cf6c6SMatthias Ringwald 22100c1cf6c6SMatthias Ringwald /** 22110c1cf6c6SMatthias Ringwald * @param connection_handle 22120c1cf6c6SMatthias Ringwald */ 22130c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_iso_test_end = { 22140c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_ISO_TEST_END, "H" 22150c1cf6c6SMatthias Ringwald }; 22160c1cf6c6SMatthias Ringwald 22170c1cf6c6SMatthias Ringwald /** 22180c1cf6c6SMatthias Ringwald * @param bit_number 22190c1cf6c6SMatthias Ringwald * @param bit_value 22200c1cf6c6SMatthias Ringwald */ 22210c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_host_feature = { 22220c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_HOST_FEATURE, "11" 22230c1cf6c6SMatthias Ringwald }; 22240c1cf6c6SMatthias Ringwald 22250c1cf6c6SMatthias Ringwald /** 22260c1cf6c6SMatthias Ringwald * @param connection_handle 22270c1cf6c6SMatthias Ringwald */ 22280c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_iso_link_quality = { 22290c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_ISO_LINK_QUALITY, "H" 22300c1cf6c6SMatthias Ringwald }; 22310c1cf6c6SMatthias Ringwald 22320c1cf6c6SMatthias Ringwald /** 22330c1cf6c6SMatthias Ringwald * @param connection_handle 22340c1cf6c6SMatthias Ringwald * @param phy 22350c1cf6c6SMatthias Ringwald */ 22360c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_enhanced_read_transmit_power_level = { 22370c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_ENHANCED_READ_TRANSMIT_POWER_LEVEL, "H1" 22380c1cf6c6SMatthias Ringwald }; 22390c1cf6c6SMatthias Ringwald 22400c1cf6c6SMatthias Ringwald /** 22410c1cf6c6SMatthias Ringwald * @param connection_handle 22420c1cf6c6SMatthias Ringwald * @param phy 22430c1cf6c6SMatthias Ringwald */ 22440c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_read_remote_transmit_power_level = { 22450c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_REMOTE_TRANSMIT_POWER_LEVEL, "H1" 22460c1cf6c6SMatthias Ringwald }; 22470c1cf6c6SMatthias Ringwald 22480c1cf6c6SMatthias Ringwald /** 22490c1cf6c6SMatthias Ringwald * @param connection_handle 22500c1cf6c6SMatthias Ringwald * @param high_threshold 22510c1cf6c6SMatthias Ringwald * @param high_hysteresis 22520c1cf6c6SMatthias Ringwald * @param low_threshold 22530c1cf6c6SMatthias Ringwald * @param low_hysteresis 22540c1cf6c6SMatthias Ringwald * @param min_time_spent 22550c1cf6c6SMatthias Ringwald */ 22560c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_path_loss_reporting_parameters = { 22570c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PATH_LOSS_REPORTING_PARAMETERS, "211112" 22580c1cf6c6SMatthias Ringwald }; 22590c1cf6c6SMatthias Ringwald 22600c1cf6c6SMatthias Ringwald /** 22610c1cf6c6SMatthias Ringwald * @param connection_handle 22620c1cf6c6SMatthias Ringwald * @param enable 22630c1cf6c6SMatthias Ringwald */ 22640c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_path_loss_reporting_enable = { 22650c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PATH_LOSS_REPORTING_ENABLE, "H1" 22660c1cf6c6SMatthias Ringwald }; 22670c1cf6c6SMatthias Ringwald 22680c1cf6c6SMatthias Ringwald /** 22690c1cf6c6SMatthias Ringwald * @param connection_handle 22700c1cf6c6SMatthias Ringwald * @param local_enable 22710c1cf6c6SMatthias Ringwald * @param remote_enable 22720c1cf6c6SMatthias Ringwald */ 22730c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_set_transmit_power_reporting_enable = { 22740c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_TRANSMIT_POWER_REPORTING_ENABLE, "H11" 22750c1cf6c6SMatthias Ringwald }; 22760c1cf6c6SMatthias Ringwald 22770c1cf6c6SMatthias Ringwald /** 22780c1cf6c6SMatthias Ringwald * @param tx_channel 22790c1cf6c6SMatthias Ringwald * @param test_data_length 22800c1cf6c6SMatthias Ringwald * @param packet_payload 22810c1cf6c6SMatthias Ringwald * @param phy 22820c1cf6c6SMatthias Ringwald * @param cte_length 22830c1cf6c6SMatthias Ringwald * @param cte_type 22840c1cf6c6SMatthias Ringwald * @param switching_pattern_length 22850c1cf6c6SMatthias Ringwald * @param antenna_ids[i] 22860c1cf6c6SMatthias Ringwald * @param transmit_power_level 22870c1cf6c6SMatthias Ringwald */ 22880c1cf6c6SMatthias Ringwald 22890c1cf6c6SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test_v4 = { 22900c1cf6c6SMatthias Ringwald HCI_OPCODE_HCI_LE_TRANSMITTER_TEST_V4, "111111a[1]1" 22910c1cf6c6SMatthias Ringwald }; 2292ca13daefSMatthias Ringwald 229356042629SMatthias Ringwald #endif 2294a42798c3SMatthias Ringwald 2295a42798c3SMatthias Ringwald // Broadcom / Cypress specific HCI commands 2296a42798c3SMatthias Ringwald 2297a42798c3SMatthias Ringwald /** 2298067ecc36SMatthias Ringwald * @brief Enable Wide-Band Speech / mSBC decoding for PCM 2299067ecc36SMatthias Ringwald * @param enable_wbs is 0 for disable, 1 for enable 2300067ecc36SMatthias Ringwald * @param uuid_wbs is 2 for EV2/EV3 2301067ecc36SMatthias Ringwald */ 2302067ecc36SMatthias Ringwald const hci_cmd_t hci_bcm_enable_wbs = { 2303067ecc36SMatthias Ringwald HCI_OPCODE_HCI_BCM_ENABLE_WBS, "12" 2304067ecc36SMatthias Ringwald // return: status 2305067ecc36SMatthias Ringwald }; 2306067ecc36SMatthias Ringwald 2307067ecc36SMatthias Ringwald /** 2308a42798c3SMatthias Ringwald * @brief Configure SCO Routing (BCM) 2309a42798c3SMatthias Ringwald * @param sco_routing is 0 for PCM, 1 for Transport, 2 for Codec and 3 for I2S 2310a42798c3SMatthias Ringwald * @param pcm_interface_rate is 0 for 128KBps, 1 for 256 KBps, 2 for 512KBps, 3 for 1024KBps, and 4 for 2048Kbps 2311a42798c3SMatthias Ringwald * @param frame_type is 0 for short and 1 for long 2312a42798c3SMatthias Ringwald * @param sync_mode is 0 for slave and 1 for master 2313a42798c3SMatthias Ringwald * @param clock_mode is 0 for slabe and 1 for master 2314a42798c3SMatthias Ringwald */ 2315a42798c3SMatthias Ringwald const hci_cmd_t hci_bcm_write_sco_pcm_int = { 2316ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_BCM_WRITE_SCO_PCM_INT, "11111" 2317a42798c3SMatthias Ringwald // return: status 2318a42798c3SMatthias Ringwald }; 2319eab6959fSMatthias Ringwald 2320eab6959fSMatthias Ringwald /** 2321067ecc36SMatthias Ringwald * @brief Configure the I2S/PCM interface (BCM) 2322067ecc36SMatthias Ringwald * @param i2s_enable is 0 for off, 1 for on 2323067ecc36SMatthias Ringwald * @param is_master is 0 for slave, is 1 for master 2324067ecc36SMatthias Ringwald * @param sample_rate is 0 for 8 kHz, 1 for 16 kHz, 2 for 4 kHz 2325067ecc36SMatthias 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 2326067ecc36SMatthias Ringwald * @param clock_mode is 0 for slabe and 1 for master 2327067ecc36SMatthias Ringwald */ 2328067ecc36SMatthias Ringwald const hci_cmd_t hci_bcm_write_i2spcm_interface_param = { 2329067ecc36SMatthias Ringwald HCI_OPCODE_HCI_BCM_WRITE_I2SPCM_INTERFACE_PARAM, "1111" 2330067ecc36SMatthias Ringwald // return: status 2331067ecc36SMatthias Ringwald }; 2332067ecc36SMatthias Ringwald 2333067ecc36SMatthias Ringwald 2334067ecc36SMatthias Ringwald /** 2335eab6959fSMatthias Ringwald * @brief Activates selected Sleep Mode 2336eab6959fSMatthias 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 2337eab6959fSMatthias Ringwald * @param idle_threshold_host (modes 1,2,5,7) time until considered idle, unit roughly 300 ms 2338eab6959fSMatthias Ringwald * @param idle_threshold_controller (modes 1-7,9) time until considered idle, unit roughly 300 ms 2339eab6959fSMatthias Ringwald * @param bt_wake_active_mode (modes 1,2,7) 0 = BT_WAKE line is active high, 1 = BT_WAKE is active low 2340eab6959fSMatthias Ringwald * @param host_wake_active_mode (modes 1,2,5,7) 0 = HOST_WAKE line is active high, 1 = HOST_WAKE is active low 2341eab6959fSMatthias Ringwald * @param allow_host_sleep_during_sco (modes 1,2,3,5,7) 2342eab6959fSMatthias Ringwald * @param combine_sleep_mode_and_lpm (modes 1,2,3,5,7) 2343eab6959fSMatthias Ringwald * @param enable_tristate_control_of_uart_tx_line (modes 1,2,7) 2344eab6959fSMatthias Ringwald * @param active_connection_handling_on_suspend (modes 3,5) 2345eab6959fSMatthias Ringwald * @param resume_timeout (modes 3,5) 2346eab6959fSMatthias Ringwald * @param enable_break_to_host (mode 12) 2347eab6959fSMatthias Ringwald * @param pulsed_host_wake (modes 1,12) 2348eab6959fSMatthias Ringwald */ 2349eab6959fSMatthias Ringwald const hci_cmd_t hci_bcm_set_sleep_mode = { 2350ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_BCM_SET_SLEEP_MODE, "111111111111" 2351eab6959fSMatthias Ringwald }; 23525cdaddfaSMatthias Ringwald 23535cdaddfaSMatthias Ringwald /** 23545cdaddfaSMatthias Ringwald * @brief Set TX Power Table 23555cdaddfaSMatthias Ringwald * @param is_le 0=classic, 1=LE 23565cdaddfaSMatthias Ringwald * @param chip_max_tx_pwr_db chip level max TX power in dBM 23575cdaddfaSMatthias Ringwald */ 23585cdaddfaSMatthias Ringwald const hci_cmd_t hci_bcm_write_tx_power_table = { 2359ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_BCM_WRITE_TX_POWER_TABLE, "11" 23605cdaddfaSMatthias Ringwald }; 23615cdaddfaSMatthias Ringwald 23625cdaddfaSMatthias Ringwald const hci_cmd_t hci_bcm_set_tx_pwr = { 2363ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_BCM_SET_TX_PWR, "11H" 23645cdaddfaSMatthias Ringwald }; 2365ba39ed56SMatthias Ringwald 2366ba39ed56SMatthias Ringwald /** 236715fca961SMatthias Ringwald * @brief This command starts receiving packets using packet transmission parameters such as 236815fca961SMatthias Ringwald * frequency channel, packet type, and packet length. It is used for Packet RX. 236915fca961SMatthias Ringwald * @see https://processors.wiki.ti.com/index.php/CC256x_Testing_Guide#Continuous_RX 237015fca961SMatthias Ringwald * @param frequency 237115fca961SMatthias Ringwald * @param ADPLL loop mode 237215fca961SMatthias Ringwald */ 237315fca961SMatthias Ringwald const hci_cmd_t hci_ti_drpb_tester_con_rx = { 237415fca961SMatthias Ringwald 0xFD17, "11" 237515fca961SMatthias Ringwald }; 237615fca961SMatthias Ringwald 237715fca961SMatthias Ringwald /** 2378ba39ed56SMatthias Ringwald * 2379ba39ed56SMatthias Ringwald * 2380ba39ed56SMatthias Ringwald * @brief This command tests the RF transceiver in continuous transmission mode. 2381ba39ed56SMatthias Ringwald * The transmitter is activated by configuring the transmission parameters such as pattern, 2382ba39ed56SMatthias Ringwald * modulation, and frequency. 2383ba39ed56SMatthias Ringwald * @see processors.wiki.ti.com/index.php/CC256x_VS_HCI_Commands#HCI_VS_DRPb_Tester_Con_TX.280xFD84.29 2384ba39ed56SMatthias Ringwald * @param modulation 238515fca961SMatthias Ringwald * @param test_pattern 2386ba39ed56SMatthias Ringwald * @param frequency 2387ba39ed56SMatthias Ringwald * @param power_level 2388ba39ed56SMatthias Ringwald * @param reserved1 2389ba39ed56SMatthias Ringwald * @param reserved2 2390ba39ed56SMatthias Ringwald */ 2391ba39ed56SMatthias Ringwald const hci_cmd_t hci_ti_drpb_tester_con_tx = { 2392ba39ed56SMatthias Ringwald 0xFD84, "111144" 2393ba39ed56SMatthias Ringwald }; 2394ba39ed56SMatthias Ringwald 2395ba39ed56SMatthias Ringwald /** 2396ba39ed56SMatthias Ringwald * @brief This command starts sending/receiving packets using packet transmission parameters such as 2397ba39ed56SMatthias Ringwald * frequency channel, packet type, and packet length. It is used for Packet TX/RX. 2398ba39ed56SMatthias Ringwald * @see processors.wiki.ti.com/index.php/CC256x_VS_HCI_Commands#HCI_VS_DRPb_Tester_Packet_TX_RX_.280xFD85.29 2399ba39ed56SMatthias Ringwald * @param frequency_mode 2400ba39ed56SMatthias Ringwald * @param tx_single_frequency 2401ba39ed56SMatthias Ringwald * @param rx_single_frequency 2402ba39ed56SMatthias Ringwald * @param acl_packet_type 2403ba39ed56SMatthias Ringwald * @paarm acl_packet_data_pattern 2404ba39ed56SMatthias Ringwald * @param reserved 2405ba39ed56SMatthias Ringwald * @param power_level 2406ba39ed56SMatthias Ringwald * @param disable_whitening 2407ba39ed56SMatthias Ringwald * @param prbs9_initialization_value 2408ba39ed56SMatthias Ringwald */ 2409ba39ed56SMatthias Ringwald const hci_cmd_t hci_ti_drpb_tester_packet_tx_rx = { 2410ba39ed56SMatthias Ringwald 0xFD85, "1111112112" 2411ba39ed56SMatthias Ringwald }; 2412365a7dd1SMatthias Ringwald 2413733a7793SMatthias Ringwald 2414733a7793SMatthias Ringwald /** 2415733a7793SMatthias Ringwald * @param best effort access percentage 2416733a7793SMatthias Ringwald * @param guaranteed access percentage 2417733a7793SMatthias Ringwald * @param poll period 2418733a7793SMatthias Ringwald * @param slave burst after tx 2419733a7793SMatthias Ringwald * @param slave master search count 2420733a7793SMatthias Ringwald * @param master burst after tx enable 2421733a7793SMatthias Ringwald * @param master burst after rx limit 2422733a7793SMatthias Ringwald */ 2423cf26f982SMatthias Ringwald const hci_cmd_t hci_ti_configure_ddip = { 2424733a7793SMatthias Ringwald HCI_OPCODE_HCI_TI_VS_CONFIGURE_DDIP, "1111111" 2425733a7793SMatthias Ringwald }; 2426733a7793SMatthias Ringwald 2427365a7dd1SMatthias Ringwald /** 2428365a7dd1SMatthias Ringwald * @brief This command is used to associate the requested ACL handle with Wide Band Speech configuration. 2429365a7dd1SMatthias Ringwald * @param enable 0=disable, 1=enable 2430365a7dd1SMatthias Ringwald * @param a3dp_role (NL5500, WL128x only) 0=source,1=sink 2431365a7dd1SMatthias Ringwald * @param code_upload (NL5500, WL128x only) 0=do not load a3dp code, 1=load a3dp code 2432365a7dd1SMatthias Ringwald * @param reserved for future use 2433365a7dd1SMatthias Ringwald */ 2434365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_avrp_enable = { 2435365a7dd1SMatthias Ringwald 0xFD92, "1112" 2436365a7dd1SMatthias Ringwald }; 2437365a7dd1SMatthias Ringwald 2438365a7dd1SMatthias Ringwald /** 2439365a7dd1SMatthias Ringwald * @brief This command is used to associate the requested ACL handle with Wide Band Speech configuration. 2440365a7dd1SMatthias Ringwald * @param acl_con_handle 2441365a7dd1SMatthias Ringwald */ 2442365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_wbs_associate = { 2443365a7dd1SMatthias Ringwald 0xFD78, "H" 2444365a7dd1SMatthias Ringwald }; 2445365a7dd1SMatthias Ringwald 2446365a7dd1SMatthias Ringwald /** 2447365a7dd1SMatthias Ringwald * @brief This command is used to disassociate Wide Band Speech configuration from any ACL handle. 2448365a7dd1SMatthias Ringwald */ 2449365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_wbs_disassociate = { 2450365a7dd1SMatthias Ringwald 0xFD79, "" 2451365a7dd1SMatthias Ringwald }; 2452365a7dd1SMatthias Ringwald 2453365a7dd1SMatthias Ringwald /** 2454365a7dd1SMatthias Ringwald * @brief This command configures the codec interface parameters and the PCM clock rate, which is relevant when 2455365a7dd1SMatthias Ringwald the Bluetooth core generates the clock. This command must be used by the host to use the PCM 2456365a7dd1SMatthias Ringwald interface. 2457365a7dd1SMatthias Ringwald * @param clock_rate in kHz 2458365a7dd1SMatthias Ringwald * @param clock_direction 0=master/output, 1=slave/input 2459365a7dd1SMatthias Ringwald * @param frame_sync_frequency in Hz 2460365a7dd1SMatthias Ringwald * @param frame_sync_duty_cycle 0=50% (I2S Format), 0x0001-0xffff number of cycles of PCM clock 2461365a7dd1SMatthias Ringwald * @param frame_sync_edge 0=driven/sampled at rising edge, 1=driven/sampled at falling edge of PCM clock 2462365a7dd1SMatthias Ringwald * @param frame_sync_polariy 0=active high, 1=active low 2463365a7dd1SMatthias Ringwald * @param reserved1 2464365a7dd1SMatthias Ringwald * @param channel_1_data_out_size sample size in bits 2465365a7dd1SMatthias Ringwald * @param channel_1_data_out_offset number of PCM clock cycles between rising of frame sync and data start 2466365a7dd1SMatthias Ringwald * @param channel_1_data_out_edge 0=data driven at rising edge, 1=data driven at falling edge of PCM clock 2467365a7dd1SMatthias Ringwald * @param channel_1_data_in_size sample size in bits 2468365a7dd1SMatthias Ringwald * @param channel_1_data_in_offset number of PCM clock cycles between rising of frame sync and data start 2469365a7dd1SMatthias Ringwald * @param channel_1_data_in_edge 0=data sampled at rising edge, 1=data sampled at falling edge of PCM clock 2470365a7dd1SMatthias Ringwald * @param fsync_multiplier this field is only relevant to CC256XB from service pack 0.2 !!! -> use 0x00 2471365a7dd1SMatthias Ringwald * @param channel_2_data_out_size sample size in bits 2472365a7dd1SMatthias Ringwald * @param channel_2_data_out_offset number of PCM clock cycles between rising of frame sync and data start 2473365a7dd1SMatthias Ringwald * @param channel_2_data_out_edge 0=data driven at rising edge, 1=data driven at falling edge of PCM clock 2474365a7dd1SMatthias Ringwald * @param channel_2_data_in_size sample size in bits 2475365a7dd1SMatthias Ringwald * @param channel_2_data_in_offset number of PCM clock cycles between rising of frame sync and data start 2476365a7dd1SMatthias Ringwald * @param channel_2_data_in_edge 0=data sampled at rising edge, 1=data sampled at falling edge of PCM clock 2477365a7dd1SMatthias Ringwald * @param reserved2 2478365a7dd1SMatthias Ringwald * 2479365a7dd1SMatthias Ringwald */ 2480365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_write_codec_config = { 2481365a7dd1SMatthias Ringwald 0xFD06, "214211122122112212211" 2482365a7dd1SMatthias Ringwald }; 248315fca961SMatthias Ringwald 248415fca961SMatthias Ringwald /** 248515fca961SMatthias Ringwald * @brief This command is used only for internal testing. 248615fca961SMatthias Ringwald * @see https://processors.wiki.ti.com/index.php/CC256x_Testing_Guide#Continuous_TX 248715fca961SMatthias Ringwald * @param frequency 248815fca961SMatthias Ringwald * @param ADPLL loop mode 248915fca961SMatthias Ringwald */ 249015fca961SMatthias Ringwald const hci_cmd_t hci_ti_drpb_enable_rf_calibration = { 249115fca961SMatthias Ringwald 0xFD80, "141" 249215fca961SMatthias Ringwald }; 249315fca961SMatthias Ringwald 249415fca961SMatthias Ringwald /** 249515fca961SMatthias Ringwald * @brief This command command is only required for the continuous TX test of modulated 249615fca961SMatthias Ringwald * (GFSK, π/4-DQPSK or 8DPSK) signal. This command should be skipped when performing continuous TX test for CW. 249715fca961SMatthias Ringwald * @see https://processors.wiki.ti.com/index.php/CC256x_Testing_Guide#Continuous_RX 249815fca961SMatthias Ringwald * @param frequency 249915fca961SMatthias Ringwald * @param ADPLL loop mode 250015fca961SMatthias Ringwald */ 250115fca961SMatthias Ringwald const hci_cmd_t hci_ti_write_hardware_register = { 250215fca961SMatthias Ringwald 0xFF01, "42" 250315fca961SMatthias Ringwald }; 2504