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 2356042629SMatthias Ringwald * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MATTHIAS 2456042629SMatthias Ringwald * RINGWALD 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 "classic/sdp_util.h" 4956042629SMatthias Ringwald #include "hci.h" 5056042629SMatthias Ringwald #include "hci_cmd.h" 51f9f2075cSMatthias Ringwald #include "btstack_debug.h" 5256042629SMatthias Ringwald 5356042629SMatthias Ringwald #include <string.h> 5456042629SMatthias Ringwald 5556042629SMatthias Ringwald // calculate combined ogf/ocf value 565efd5011SMatthias Ringwald #define OPCODE(ogf, ocf) ((ocf) | ((ogf) << 10)) 5756042629SMatthias Ringwald 5856042629SMatthias Ringwald /** 5956042629SMatthias Ringwald * construct HCI Command based on template 6056042629SMatthias Ringwald * 6156042629SMatthias Ringwald * Format: 6256042629SMatthias Ringwald * 1,2,3,4: one to four byte value 6356042629SMatthias Ringwald * H: HCI connection handle 6456042629SMatthias Ringwald * B: Bluetooth Baseband Address (BD_ADDR) 6556042629SMatthias Ringwald * D: 8 byte data block 6656042629SMatthias Ringwald * E: Extended Inquiry Result 6756042629SMatthias Ringwald * N: Name up to 248 chars, \0 terminated 68237daac5SMatthias Ringwald * P: 16 byte data block. Pairing code, Simple Pairing Hash and Randomizer 6956042629SMatthias Ringwald * A: 31 bytes advertising data 7056042629SMatthias Ringwald * S: Service Record (Data Element Sequence) 7182180fcaSMatthias Ringwald * Q: 32 byte data block, e.g. for X and Y coordinates of P-256 public key 7256042629SMatthias Ringwald */ 7356042629SMatthias Ringwald uint16_t hci_cmd_create_from_template(uint8_t *hci_cmd_buffer, const hci_cmd_t *cmd, va_list argptr){ 7456042629SMatthias Ringwald 754ea43905SMatthias Ringwald hci_cmd_buffer[0] = cmd->opcode & 0xffu; 7656042629SMatthias Ringwald hci_cmd_buffer[1] = cmd->opcode >> 8; 7756042629SMatthias Ringwald int pos = 3; 7856042629SMatthias Ringwald 7956042629SMatthias Ringwald const char *format = cmd->format; 8056042629SMatthias Ringwald uint16_t word; 8156042629SMatthias Ringwald uint32_t longword; 8256042629SMatthias Ringwald uint8_t * ptr; 8356042629SMatthias Ringwald while (*format) { 8456042629SMatthias Ringwald switch(*format) { 8556042629SMatthias Ringwald case '1': // 8 bit value 8656042629SMatthias Ringwald case '2': // 16 bit value 8756042629SMatthias Ringwald case 'H': // hci_handle 8856042629SMatthias Ringwald word = va_arg(argptr, int); // minimal va_arg is int: 2 bytes on 8+16 bit CPUs 894ea43905SMatthias Ringwald hci_cmd_buffer[pos++] = word & 0xffu; 9056042629SMatthias Ringwald if (*format == '2') { 9156042629SMatthias Ringwald hci_cmd_buffer[pos++] = word >> 8; 9256042629SMatthias Ringwald } else if (*format == 'H') { 9356042629SMatthias Ringwald // TODO implement opaque client connection handles 9456042629SMatthias Ringwald // pass module handle for now 9556042629SMatthias Ringwald hci_cmd_buffer[pos++] = word >> 8; 9656042629SMatthias Ringwald } 9756042629SMatthias Ringwald break; 9856042629SMatthias Ringwald case '3': 9956042629SMatthias Ringwald case '4': 10056042629SMatthias Ringwald longword = va_arg(argptr, uint32_t); 10156042629SMatthias Ringwald // longword = va_arg(argptr, int); 10256042629SMatthias Ringwald hci_cmd_buffer[pos++] = longword; 10356042629SMatthias Ringwald hci_cmd_buffer[pos++] = longword >> 8; 10456042629SMatthias Ringwald hci_cmd_buffer[pos++] = longword >> 16; 10556042629SMatthias Ringwald if (*format == '4'){ 10656042629SMatthias Ringwald hci_cmd_buffer[pos++] = longword >> 24; 10756042629SMatthias Ringwald } 10856042629SMatthias Ringwald break; 10956042629SMatthias Ringwald case 'B': // bt-addr 11056042629SMatthias Ringwald ptr = va_arg(argptr, uint8_t *); 11156042629SMatthias Ringwald hci_cmd_buffer[pos++] = ptr[5]; 11256042629SMatthias Ringwald hci_cmd_buffer[pos++] = ptr[4]; 11356042629SMatthias Ringwald hci_cmd_buffer[pos++] = ptr[3]; 11456042629SMatthias Ringwald hci_cmd_buffer[pos++] = ptr[2]; 11556042629SMatthias Ringwald hci_cmd_buffer[pos++] = ptr[1]; 11656042629SMatthias Ringwald hci_cmd_buffer[pos++] = ptr[0]; 11756042629SMatthias Ringwald break; 11856042629SMatthias Ringwald case 'D': // 8 byte data block 11956042629SMatthias Ringwald ptr = va_arg(argptr, uint8_t *); 1206535961aSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, 8); 12156042629SMatthias Ringwald pos += 8; 12256042629SMatthias Ringwald break; 12356042629SMatthias Ringwald case 'E': // Extended Inquiry Information 240 octets 12456042629SMatthias Ringwald ptr = va_arg(argptr, uint8_t *); 1256535961aSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, 240); 12656042629SMatthias Ringwald pos += 240; 12756042629SMatthias Ringwald break; 12856042629SMatthias Ringwald case 'N': { // UTF-8 string, null terminated 12956042629SMatthias Ringwald ptr = va_arg(argptr, uint8_t *); 13056042629SMatthias Ringwald uint16_t len = strlen((const char*) ptr); 1314ea43905SMatthias Ringwald if (len > 248u) { 13256042629SMatthias Ringwald len = 248; 13356042629SMatthias Ringwald } 1346535961aSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, len); 1354ea43905SMatthias Ringwald if (len < 248u) { 13656042629SMatthias Ringwald // fill remaining space with zeroes 1374ea43905SMatthias Ringwald memset(&hci_cmd_buffer[pos+len], 0u, 248u-len); 13856042629SMatthias Ringwald } 13956042629SMatthias Ringwald pos += 248; 14056042629SMatthias Ringwald break; 14156042629SMatthias Ringwald } 142bb75dd7dSMatthias Ringwald case 'P': // 16 byte PIN code or link key in little endian 14356042629SMatthias Ringwald ptr = va_arg(argptr, uint8_t *); 1446535961aSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, 16); 14556042629SMatthias Ringwald pos += 16; 14656042629SMatthias Ringwald break; 147a9a4c409SMatthias Ringwald #ifdef ENABLE_BLE 14856042629SMatthias Ringwald case 'A': // 31 bytes advertising data 14956042629SMatthias Ringwald ptr = va_arg(argptr, uint8_t *); 1506535961aSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, 31); 15156042629SMatthias Ringwald pos += 31; 15256042629SMatthias Ringwald break; 15356042629SMatthias Ringwald #endif 154a9a4c409SMatthias Ringwald #ifdef ENABLE_SDP 15556042629SMatthias Ringwald case 'S': { // Service Record (Data Element Sequence) 15656042629SMatthias Ringwald ptr = va_arg(argptr, uint8_t *); 15756042629SMatthias Ringwald uint16_t len = de_get_len(ptr); 1586535961aSMatthias Ringwald (void)memcpy(&hci_cmd_buffer[pos], ptr, len); 15956042629SMatthias Ringwald pos += len; 16056042629SMatthias Ringwald break; 16156042629SMatthias Ringwald } 16256042629SMatthias Ringwald #endif 16382180fcaSMatthias Ringwald #ifdef ENABLE_LE_SECURE_CONNECTIONS 16482180fcaSMatthias Ringwald case 'Q': 16582180fcaSMatthias Ringwald ptr = va_arg(argptr, uint8_t *); 16682180fcaSMatthias Ringwald reverse_bytes(ptr, &hci_cmd_buffer[pos], 32); 16782180fcaSMatthias Ringwald pos += 32; 16882180fcaSMatthias Ringwald break; 16982180fcaSMatthias Ringwald #endif 170bb75dd7dSMatthias Ringwald case 'K': // 16 byte OOB Data or Link Key in big endian 171bb75dd7dSMatthias Ringwald ptr = va_arg(argptr, uint8_t *); 172bb75dd7dSMatthias Ringwald reverse_bytes(ptr, &hci_cmd_buffer[pos], 16); 173bb75dd7dSMatthias Ringwald pos += 16; 174bb75dd7dSMatthias Ringwald break; 17556042629SMatthias Ringwald default: 17656042629SMatthias Ringwald break; 17756042629SMatthias Ringwald } 17856042629SMatthias Ringwald format++; 17956042629SMatthias Ringwald }; 18056042629SMatthias Ringwald hci_cmd_buffer[2] = pos - 3; 18156042629SMatthias Ringwald return pos; 18256042629SMatthias Ringwald } 18356042629SMatthias Ringwald 18456042629SMatthias Ringwald /** 18556042629SMatthias Ringwald * Link Control Commands 18656042629SMatthias Ringwald */ 18756042629SMatthias Ringwald 18856042629SMatthias Ringwald /** 18956042629SMatthias Ringwald * @param lap 19056042629SMatthias Ringwald * @param inquiry_length 19156042629SMatthias Ringwald * @param num_responses 19256042629SMatthias Ringwald */ 19356042629SMatthias Ringwald const hci_cmd_t hci_inquiry = { 194ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_INQUIRY, "311" 19556042629SMatthias Ringwald }; 19656042629SMatthias Ringwald 19756042629SMatthias Ringwald /** 19856042629SMatthias Ringwald */ 19956042629SMatthias Ringwald const hci_cmd_t hci_inquiry_cancel = { 200ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_INQUIRY_CANCEL, "" 20156042629SMatthias Ringwald }; 20256042629SMatthias Ringwald 20356042629SMatthias Ringwald /** 20456042629SMatthias Ringwald * @param bd_addr 20556042629SMatthias Ringwald * @param packet_type 20656042629SMatthias Ringwald * @param page_scan_repetition_mode 20756042629SMatthias Ringwald * @param reserved 20856042629SMatthias Ringwald * @param clock_offset 20956042629SMatthias Ringwald * @param allow_role_switch 21056042629SMatthias Ringwald */ 21156042629SMatthias Ringwald const hci_cmd_t hci_create_connection = { 212ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_CREATE_CONNECTION, "B21121" 21356042629SMatthias Ringwald }; 21456042629SMatthias Ringwald 21556042629SMatthias Ringwald /** 21656042629SMatthias Ringwald * @param handle 21756042629SMatthias Ringwald * @param reason (0x05, 0x13-0x15, 0x1a, 0x29, see Errors Codes in BT Spec Part D) 21856042629SMatthias Ringwald */ 21956042629SMatthias Ringwald const hci_cmd_t hci_disconnect = { 220ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_DISCONNECT, "H1" 22156042629SMatthias Ringwald }; 22256042629SMatthias Ringwald 22356042629SMatthias Ringwald /** 22456042629SMatthias Ringwald * @param bd_addr 22556042629SMatthias Ringwald */ 22656042629SMatthias Ringwald const hci_cmd_t hci_create_connection_cancel = { 227ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_CREATE_CONNECTION_CANCEL, "B" 22856042629SMatthias Ringwald }; 22956042629SMatthias Ringwald 23056042629SMatthias Ringwald /** 23156042629SMatthias Ringwald * @param bd_addr 23256042629SMatthias Ringwald * @param role (become master, stay slave) 23356042629SMatthias Ringwald */ 23456042629SMatthias Ringwald const hci_cmd_t hci_accept_connection_request = { 235ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_ACCEPT_CONNECTION_REQUEST, "B1" 23656042629SMatthias Ringwald }; 23756042629SMatthias Ringwald 23856042629SMatthias Ringwald /** 23956042629SMatthias Ringwald * @param bd_addr 24056042629SMatthias Ringwald * @param reason (e.g. CONNECTION REJECTED DUE TO LIMITED RESOURCES (0x0d)) 24156042629SMatthias Ringwald */ 24256042629SMatthias Ringwald const hci_cmd_t hci_reject_connection_request = { 243ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_REJECT_CONNECTION_REQUEST, "B1" 24456042629SMatthias Ringwald }; 24556042629SMatthias Ringwald 24656042629SMatthias Ringwald /** 24756042629SMatthias Ringwald * @param bd_addr 24856042629SMatthias Ringwald * @param link_key 24956042629SMatthias Ringwald */ 25056042629SMatthias Ringwald const hci_cmd_t hci_link_key_request_reply = { 251ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LINK_KEY_REQUEST_REPLY, "BP" 25256042629SMatthias Ringwald }; 25356042629SMatthias Ringwald 25456042629SMatthias Ringwald /** 25556042629SMatthias Ringwald * @param bd_addr 25656042629SMatthias Ringwald */ 25756042629SMatthias Ringwald const hci_cmd_t hci_link_key_request_negative_reply = { 258ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LINK_KEY_REQUEST_NEGATIVE_REPLY, "B" 25956042629SMatthias Ringwald }; 26056042629SMatthias Ringwald 26156042629SMatthias Ringwald /** 26256042629SMatthias Ringwald * @param bd_addr 26356042629SMatthias Ringwald * @param pin_length 26456042629SMatthias Ringwald * @param pin (c-string) 26556042629SMatthias Ringwald */ 26656042629SMatthias Ringwald const hci_cmd_t hci_pin_code_request_reply = { 267ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_PIN_CODE_REQUEST_REPLY, "B1P" 26856042629SMatthias Ringwald }; 26956042629SMatthias Ringwald 27056042629SMatthias Ringwald /** 27156042629SMatthias Ringwald * @param bd_addr 27256042629SMatthias Ringwald */ 27356042629SMatthias Ringwald const hci_cmd_t hci_pin_code_request_negative_reply = { 274ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_PIN_CODE_REQUEST_NEGATIVE_REPLY, "B" 27556042629SMatthias Ringwald }; 27656042629SMatthias Ringwald 27756042629SMatthias Ringwald /** 27856042629SMatthias Ringwald * @param handle 27956042629SMatthias Ringwald * @param packet_type 28056042629SMatthias Ringwald */ 28156042629SMatthias Ringwald const hci_cmd_t hci_change_connection_packet_type = { 282ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_CHANGE_CONNECTION_PACKET_TYPE, "H2" 28356042629SMatthias Ringwald }; 28456042629SMatthias Ringwald 28556042629SMatthias Ringwald /** 28656042629SMatthias Ringwald * @param handle 28756042629SMatthias Ringwald */ 28856042629SMatthias Ringwald const hci_cmd_t hci_authentication_requested = { 289ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_AUTHENTICATION_REQUESTED, "H" 29056042629SMatthias Ringwald }; 29156042629SMatthias Ringwald 29256042629SMatthias Ringwald /** 29356042629SMatthias Ringwald * @param handle 29456042629SMatthias Ringwald * @param encryption_enable 29556042629SMatthias Ringwald */ 29656042629SMatthias Ringwald const hci_cmd_t hci_set_connection_encryption = { 297ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_SET_CONNECTION_ENCRYPTION, "H1" 29856042629SMatthias Ringwald }; 29956042629SMatthias Ringwald 30056042629SMatthias Ringwald /** 30156042629SMatthias Ringwald * @param handle 30256042629SMatthias Ringwald */ 30356042629SMatthias Ringwald const hci_cmd_t hci_change_connection_link_key = { 304ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_CHANGE_CONNECTION_LINK_KEY, "H" 30556042629SMatthias Ringwald }; 30656042629SMatthias Ringwald 30756042629SMatthias Ringwald /** 30856042629SMatthias Ringwald * @param bd_addr 30956042629SMatthias Ringwald * @param page_scan_repetition_mode 31056042629SMatthias Ringwald * @param reserved 31156042629SMatthias Ringwald * @param clock_offset 31256042629SMatthias Ringwald */ 31356042629SMatthias Ringwald const hci_cmd_t hci_remote_name_request = { 314ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_REMOTE_NAME_REQUEST, "B112" 31556042629SMatthias Ringwald }; 31656042629SMatthias Ringwald 31756042629SMatthias Ringwald 31856042629SMatthias Ringwald /** 31956042629SMatthias Ringwald * @param bd_addr 32056042629SMatthias Ringwald */ 32156042629SMatthias Ringwald const hci_cmd_t hci_remote_name_request_cancel = { 322ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_REMOTE_NAME_REQUEST_CANCEL, "B" 32356042629SMatthias Ringwald }; 32456042629SMatthias Ringwald 32556042629SMatthias Ringwald /** 32656042629SMatthias Ringwald * @param handle 32756042629SMatthias Ringwald */ 32856042629SMatthias Ringwald const hci_cmd_t hci_read_remote_supported_features_command = { 329ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_REMOTE_SUPPORTED_FEATURES_COMMAND, "H" 3308b22c04dSMatthias Ringwald }; 3318b22c04dSMatthias Ringwald 3328b22c04dSMatthias Ringwald /** 333d5057706SMatthias Ringwald * @param handle 334d5057706SMatthias Ringwald */ 335d5057706SMatthias Ringwald const hci_cmd_t hci_read_remote_extended_features_command = { 336ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_REMOTE_EXTENDED_FEATURES_COMMAND, "H1" 337d5057706SMatthias Ringwald }; 338d5057706SMatthias Ringwald 339d5057706SMatthias Ringwald /** 3408b22c04dSMatthias Ringwald * @param handle 3418b22c04dSMatthias Ringwald */ 3428b22c04dSMatthias Ringwald const hci_cmd_t hci_read_remote_version_information = { 343ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_REMOTE_VERSION_INFORMATION, "H" 34456042629SMatthias Ringwald }; 34556042629SMatthias Ringwald 34656042629SMatthias Ringwald /** 34756042629SMatthias Ringwald * @param handle 34856042629SMatthias Ringwald * @param transmit_bandwidth 8000(64kbps) 34956042629SMatthias Ringwald * @param receive_bandwidth 8000(64kbps) 35056042629SMatthias Ringwald * @param max_latency >= 7ms for eSCO, 0xFFFF do not care 35156042629SMatthias Ringwald * @param voice_settings e.g. CVSD, Input Coding: Linear, Input Data Format: 2’s complement, data 16bit: 00011000000 == 0x60 35256042629SMatthias Ringwald * @param retransmission_effort e.g. 0xFF do not care 35356042629SMatthias Ringwald * @param packet_type at least EV3 for eSCO 35456042629SMatthias Ringwald */ 35556042629SMatthias Ringwald const hci_cmd_t hci_setup_synchronous_connection = { 356ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_SETUP_SYNCHRONOUS_CONNECTION, "H442212" 35756042629SMatthias Ringwald }; 35856042629SMatthias Ringwald 35956042629SMatthias Ringwald /** 36056042629SMatthias Ringwald * @param bd_addr 36156042629SMatthias Ringwald * @param transmit_bandwidth 36256042629SMatthias Ringwald * @param receive_bandwidth 36356042629SMatthias Ringwald * @param max_latency 36456042629SMatthias Ringwald * @param voice_settings 36556042629SMatthias Ringwald * @param retransmission_effort 36656042629SMatthias Ringwald * @param packet_type 36756042629SMatthias Ringwald */ 36856042629SMatthias Ringwald const hci_cmd_t hci_accept_synchronous_connection = { 369ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_ACCEPT_SYNCHRONOUS_CONNECTION, "B442212" 37056042629SMatthias Ringwald }; 37156042629SMatthias Ringwald 37256042629SMatthias Ringwald /** 37356042629SMatthias Ringwald * @param bd_addr 37456042629SMatthias Ringwald * @param IO_capability 37556042629SMatthias Ringwald * @param OOB_data_present 37656042629SMatthias Ringwald * @param authentication_requirements 37756042629SMatthias Ringwald */ 37856042629SMatthias Ringwald const hci_cmd_t hci_io_capability_request_reply = { 379ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_IO_CAPABILITY_REQUEST_REPLY, "B111" 38056042629SMatthias Ringwald }; 38156042629SMatthias Ringwald 38256042629SMatthias Ringwald /** 38356042629SMatthias Ringwald * @param bd_addr 38456042629SMatthias Ringwald */ 38556042629SMatthias Ringwald const hci_cmd_t hci_user_confirmation_request_reply = { 386ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_USER_CONFIRMATION_REQUEST_REPLY, "B" 38756042629SMatthias Ringwald }; 38856042629SMatthias Ringwald 38956042629SMatthias Ringwald /** 39056042629SMatthias Ringwald * @param bd_addr 39156042629SMatthias Ringwald */ 39256042629SMatthias Ringwald const hci_cmd_t hci_user_confirmation_request_negative_reply = { 393ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_USER_CONFIRMATION_REQUEST_NEGATIVE_REPLY, "B" 39456042629SMatthias Ringwald }; 39556042629SMatthias Ringwald 39656042629SMatthias Ringwald /** 39756042629SMatthias Ringwald * @param bd_addr 39856042629SMatthias Ringwald * @param numeric_value 39956042629SMatthias Ringwald */ 40056042629SMatthias Ringwald const hci_cmd_t hci_user_passkey_request_reply = { 401ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_USER_PASSKEY_REQUEST_REPLY, "B4" 40256042629SMatthias Ringwald }; 40356042629SMatthias Ringwald 40456042629SMatthias Ringwald /** 40556042629SMatthias Ringwald * @param bd_addr 40656042629SMatthias Ringwald */ 40756042629SMatthias Ringwald const hci_cmd_t hci_user_passkey_request_negative_reply = { 408ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_USER_PASSKEY_REQUEST_NEGATIVE_REPLY, "B" 40956042629SMatthias Ringwald }; 41056042629SMatthias Ringwald 41156042629SMatthias Ringwald /** 41256042629SMatthias Ringwald * @param bd_addr 413237daac5SMatthias Ringwald * @param c Simple Pairing Hash C 414237daac5SMatthias Ringwald * @param r Simple Pairing Randomizer R 415237daac5SMatthias Ringwald */ 416237daac5SMatthias Ringwald const hci_cmd_t hci_remote_oob_data_request_reply = { 417bb75dd7dSMatthias Ringwald HCI_OPCODE_HCI_REMOTE_OOB_DATA_REQUEST_REPLY, "BKK" 418237daac5SMatthias Ringwald }; 419237daac5SMatthias Ringwald 420237daac5SMatthias Ringwald /** 421237daac5SMatthias Ringwald * @param bd_addr 42256042629SMatthias Ringwald */ 42356042629SMatthias Ringwald const hci_cmd_t hci_remote_oob_data_request_negative_reply = { 424ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_REMOTE_OOB_DATA_REQUEST_NEGATIVE_REPLY, "B" 42556042629SMatthias Ringwald }; 42656042629SMatthias Ringwald 42756042629SMatthias Ringwald /** 42856042629SMatthias Ringwald * @param bd_addr 42956042629SMatthias Ringwald * @param reason (Part D, Error codes) 43056042629SMatthias Ringwald */ 43156042629SMatthias Ringwald const hci_cmd_t hci_io_capability_request_negative_reply = { 432ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_IO_CAPABILITY_REQUEST_NEGATIVE_REPLY, "B1" 43356042629SMatthias Ringwald }; 43456042629SMatthias Ringwald 43556042629SMatthias Ringwald /** 43656042629SMatthias Ringwald * @param handle 43756042629SMatthias Ringwald * @param transmit_bandwidth 43856042629SMatthias Ringwald * @param receive_bandwidth 43956042629SMatthias Ringwald * @param transmit_coding_format_type 44056042629SMatthias Ringwald * @param transmit_coding_format_company 44156042629SMatthias Ringwald * @param transmit_coding_format_codec 44256042629SMatthias Ringwald * @param receive_coding_format_type 44356042629SMatthias Ringwald * @param receive_coding_format_company 44456042629SMatthias Ringwald * @param receive_coding_format_codec 44556042629SMatthias Ringwald * @param transmit_coding_frame_size 44656042629SMatthias Ringwald * @param receive_coding_frame_size 44756042629SMatthias Ringwald * @param input_bandwidth 44856042629SMatthias Ringwald * @param output_bandwidth 44956042629SMatthias Ringwald * @param input_coding_format_type 45056042629SMatthias Ringwald * @param input_coding_format_company 45156042629SMatthias Ringwald * @param input_coding_format_codec 45256042629SMatthias Ringwald * @param output_coding_format_type 45356042629SMatthias Ringwald * @param output_coding_format_company 45456042629SMatthias Ringwald * @param output_coding_format_codec 45556042629SMatthias Ringwald * @param input_coded_data_size 45656042629SMatthias Ringwald * @param outupt_coded_data_size 45756042629SMatthias Ringwald * @param input_pcm_data_format 45856042629SMatthias Ringwald * @param output_pcm_data_format 45956042629SMatthias Ringwald * @param input_pcm_sample_payload_msb_position 46056042629SMatthias Ringwald * @param output_pcm_sample_payload_msb_position 46156042629SMatthias Ringwald * @param input_data_path 46256042629SMatthias Ringwald * @param output_data_path 46356042629SMatthias Ringwald * @param input_transport_unit_size 46456042629SMatthias Ringwald * @param output_transport_unit_size 46556042629SMatthias Ringwald * @param max_latency 46656042629SMatthias Ringwald * @param packet_type 46756042629SMatthias Ringwald * @param retransmission_effort 46856042629SMatthias Ringwald */ 46956042629SMatthias Ringwald const hci_cmd_t hci_enhanced_setup_synchronous_connection = { 470ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_ENHANCED_SETUP_SYNCHRONOUS_CONNECTION, "H4412212222441221222211111111221" 47156042629SMatthias Ringwald }; 47256042629SMatthias Ringwald 47356042629SMatthias Ringwald /** 47456042629SMatthias Ringwald * @param bd_addr 47556042629SMatthias Ringwald * @param transmit_bandwidth 47656042629SMatthias Ringwald * @param receive_bandwidth 47756042629SMatthias Ringwald * @param transmit_coding_format_type 47856042629SMatthias Ringwald * @param transmit_coding_format_company 47956042629SMatthias Ringwald * @param transmit_coding_format_codec 48056042629SMatthias Ringwald * @param receive_coding_format_type 48156042629SMatthias Ringwald * @param receive_coding_format_company 48256042629SMatthias Ringwald * @param receive_coding_format_codec 48356042629SMatthias Ringwald * @param transmit_coding_frame_size 48456042629SMatthias Ringwald * @param receive_coding_frame_size 48556042629SMatthias Ringwald * @param input_bandwidth 48656042629SMatthias Ringwald * @param output_bandwidth 48756042629SMatthias Ringwald * @param input_coding_format_type 48856042629SMatthias Ringwald * @param input_coding_format_company 48956042629SMatthias Ringwald * @param input_coding_format_codec 49056042629SMatthias Ringwald * @param output_coding_format_type 49156042629SMatthias Ringwald * @param output_coding_format_company 49256042629SMatthias Ringwald * @param output_coding_format_codec 49356042629SMatthias Ringwald * @param input_coded_data_size 49456042629SMatthias Ringwald * @param outupt_coded_data_size 49556042629SMatthias Ringwald * @param input_pcm_data_format 49656042629SMatthias Ringwald * @param output_pcm_data_format 49756042629SMatthias Ringwald * @param input_pcm_sample_payload_msb_position 49856042629SMatthias Ringwald * @param output_pcm_sample_payload_msb_position 49956042629SMatthias Ringwald * @param input_data_path 50056042629SMatthias Ringwald * @param output_data_path 50156042629SMatthias Ringwald * @param input_transport_unit_size 50256042629SMatthias Ringwald * @param output_transport_unit_size 50356042629SMatthias Ringwald * @param max_latency 50456042629SMatthias Ringwald * @param packet_type 50556042629SMatthias Ringwald * @param retransmission_effort 50656042629SMatthias Ringwald */ 50756042629SMatthias Ringwald const hci_cmd_t hci_enhanced_accept_synchronous_connection = { 508ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_ENHANCED_ACCEPT_SYNCHRONOUS_CONNECTION, "B4412212222441221222211111111221" 50956042629SMatthias Ringwald }; 51056042629SMatthias Ringwald 51156042629SMatthias Ringwald /** 512bb75dd7dSMatthias Ringwald * @param bd_addr 513bb75dd7dSMatthias Ringwald * @param c_192 Simple Pairing Hash C derived from P-192 public key 514bb75dd7dSMatthias Ringwald * @param r_192 Simple Pairing Randomizer derived from P-192 public key 515bb75dd7dSMatthias Ringwald * @param c_256 Simple Pairing Hash C derived from P-256 public key 516bb75dd7dSMatthias Ringwald * @param r_256 Simple Pairing Randomizer derived from P-256 public key 517bb75dd7dSMatthias Ringwald */ 518bb75dd7dSMatthias Ringwald const hci_cmd_t hci_remote_oob_extended_data_request_reply = { 519bb75dd7dSMatthias Ringwald HCI_OPCODE_HCI_REMOTE_OOB_EXTENDED_DATA_REQUEST_REPLY, "BKKKK" 520bb75dd7dSMatthias Ringwald }; 521bb75dd7dSMatthias Ringwald 522bb75dd7dSMatthias Ringwald /** 52356042629SMatthias Ringwald * Link Policy Commands 52456042629SMatthias Ringwald */ 52556042629SMatthias Ringwald 52656042629SMatthias Ringwald /** 52756042629SMatthias Ringwald * @param handle 52856042629SMatthias Ringwald * @param sniff_max_interval 52956042629SMatthias Ringwald * @param sniff_min_interval 53056042629SMatthias Ringwald * @param sniff_attempt 53156042629SMatthias Ringwald * @param sniff_timeout 53256042629SMatthias Ringwald */ 53356042629SMatthias Ringwald const hci_cmd_t hci_sniff_mode = { 534ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_SNIFF_MODE, "H2222" 53556042629SMatthias Ringwald }; 53656042629SMatthias Ringwald 53756042629SMatthias Ringwald /** 53856042629SMatthias Ringwald * @param handle 5397cd21895SMatthias Ringwald */ 5407cd21895SMatthias Ringwald const hci_cmd_t hci_exit_sniff_mode = { 541ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_EXIT_SNIFF_MODE, "H" 5427cd21895SMatthias Ringwald }; 5437cd21895SMatthias Ringwald 5447cd21895SMatthias Ringwald /** 5457cd21895SMatthias Ringwald * @param handle 54656042629SMatthias Ringwald * @param flags 54756042629SMatthias Ringwald * @param service_type 54856042629SMatthias Ringwald * @param token_rate (bytes/s) 54956042629SMatthias Ringwald * @param peak_bandwith (bytes/s) 55056042629SMatthias Ringwald * @param latency (us) 55156042629SMatthias Ringwald * @param delay_variation (us) 55256042629SMatthias Ringwald */ 55356042629SMatthias Ringwald const hci_cmd_t hci_qos_setup = { 554ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_QOS_SETUP, "H114444" 55556042629SMatthias Ringwald }; 55656042629SMatthias Ringwald 55756042629SMatthias Ringwald /** 55856042629SMatthias Ringwald * @param handle 55956042629SMatthias Ringwald */ 56056042629SMatthias Ringwald const hci_cmd_t hci_role_discovery = { 561ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_ROLE_DISCOVERY, "H" 56256042629SMatthias Ringwald }; 56356042629SMatthias Ringwald 56456042629SMatthias Ringwald /** 56556042629SMatthias Ringwald * @param bd_addr 56656042629SMatthias Ringwald * @param role (0=master,1=slave) 56756042629SMatthias Ringwald */ 56856042629SMatthias Ringwald const hci_cmd_t hci_switch_role_command= { 569ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_SWITCH_ROLE_COMMAND, "B1" 57056042629SMatthias Ringwald }; 57156042629SMatthias Ringwald 57256042629SMatthias Ringwald /** 57356042629SMatthias Ringwald * @param handle 57456042629SMatthias Ringwald */ 57556042629SMatthias Ringwald const hci_cmd_t hci_read_link_policy_settings = { 576ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LINK_POLICY_SETTINGS, "H" 57756042629SMatthias Ringwald }; 57856042629SMatthias Ringwald 57956042629SMatthias Ringwald /** 58056042629SMatthias Ringwald * @param handle 58156042629SMatthias Ringwald * @param settings 58256042629SMatthias Ringwald */ 58356042629SMatthias Ringwald const hci_cmd_t hci_write_link_policy_settings = { 584ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_LINK_POLICY_SETTINGS, "H2" 58556042629SMatthias Ringwald }; 58656042629SMatthias Ringwald 587c4c88f1bSJakob Krantz /** 588c4c88f1bSJakob Krantz * @param policy 589c4c88f1bSJakob Krantz */ 59053138e7aSMatthias Ringwald const hci_cmd_t hci_write_default_link_policy_setting = { 591ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_DEFAULT_LINK_POLICY_SETTING, "2" 592c4c88f1bSJakob Krantz }; 593c4c88f1bSJakob Krantz 59456042629SMatthias Ringwald 59556042629SMatthias Ringwald /** 59656042629SMatthias Ringwald * Controller & Baseband Commands 59756042629SMatthias Ringwald */ 59856042629SMatthias Ringwald 5999119d792SMilanka Ringwald 60056042629SMatthias Ringwald /** 60156042629SMatthias Ringwald * @param event_mask_lover_octets 60256042629SMatthias Ringwald * @param event_mask_higher_octets 60356042629SMatthias Ringwald */ 60456042629SMatthias Ringwald const hci_cmd_t hci_set_event_mask = { 605ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_SET_EVENT_MASK, "44" 60656042629SMatthias Ringwald }; 60756042629SMatthias Ringwald 60856042629SMatthias Ringwald /** 60956042629SMatthias Ringwald */ 61056042629SMatthias Ringwald const hci_cmd_t hci_reset = { 611ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_RESET, "" 61256042629SMatthias Ringwald }; 61356042629SMatthias Ringwald 61456042629SMatthias Ringwald /** 615e49d496aSMatthias Ringwald * @param handle 616e49d496aSMatthias Ringwald */ 617e49d496aSMatthias Ringwald const hci_cmd_t hci_flush = { 618ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_FLUSH, "H" 6199af39d9fSMatthias Ringwald }; 6209af39d9fSMatthias Ringwald 6219af39d9fSMatthias Ringwald /** 6229af39d9fSMatthias Ringwald * @param handle 6239af39d9fSMatthias Ringwald */ 6249af39d9fSMatthias Ringwald const hci_cmd_t hci_read_pin_type = { 625ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_PIN_TYPE, "" 6269af39d9fSMatthias Ringwald }; 6279af39d9fSMatthias Ringwald 6289af39d9fSMatthias Ringwald /** 6299af39d9fSMatthias Ringwald * @param handle 6309af39d9fSMatthias Ringwald */ 6319af39d9fSMatthias Ringwald const hci_cmd_t hci_write_pin_type = { 632ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_PIN_TYPE, "1" 633e49d496aSMatthias Ringwald }; 634e49d496aSMatthias Ringwald 635e49d496aSMatthias Ringwald /** 63656042629SMatthias Ringwald * @param bd_addr 63756042629SMatthias Ringwald * @param delete_all_flags 63856042629SMatthias Ringwald */ 63956042629SMatthias Ringwald const hci_cmd_t hci_delete_stored_link_key = { 640ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_DELETE_STORED_LINK_KEY, "B1" 64156042629SMatthias Ringwald }; 64256042629SMatthias Ringwald 643f9f2075cSMatthias Ringwald #ifdef ENABLE_CLASSIC 64456042629SMatthias Ringwald /** 64556042629SMatthias Ringwald * @param local_name (UTF-8, Null Terminated, max 248 octets) 64656042629SMatthias Ringwald */ 64756042629SMatthias Ringwald const hci_cmd_t hci_write_local_name = { 648ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_LOCAL_NAME, "N" 64956042629SMatthias Ringwald }; 650f9f2075cSMatthias Ringwald #endif 65156042629SMatthias Ringwald 65256042629SMatthias Ringwald /** 653e90bae01SMatthias Ringwald */ 654e90bae01SMatthias Ringwald const hci_cmd_t hci_read_local_name = { 655ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LOCAL_NAME, "" 656e90bae01SMatthias Ringwald }; 657e90bae01SMatthias Ringwald 658e90bae01SMatthias Ringwald /** 659195e82f3Sskoperst */ 660195e82f3Sskoperst const hci_cmd_t hci_read_page_timeout = { 661ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_PAGE_TIMEOUT, "" 662195e82f3Sskoperst }; 663195e82f3Sskoperst 664195e82f3Sskoperst /** 66556042629SMatthias Ringwald * @param page_timeout (* 0.625 ms) 66656042629SMatthias Ringwald */ 66756042629SMatthias Ringwald const hci_cmd_t hci_write_page_timeout = { 668ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_PAGE_TIMEOUT, "2" 66956042629SMatthias Ringwald }; 67056042629SMatthias Ringwald 67156042629SMatthias Ringwald /** 6724eac2391SMatthias Ringwald * @param scan_enable (no, inq, page, inq+page) 6734eac2391SMatthias Ringwald */ 6744eac2391SMatthias Ringwald const hci_cmd_t hci_write_scan_enable = { 675ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_SCAN_ENABLE, "1" 6764eac2391SMatthias Ringwald }; 6774eac2391SMatthias Ringwald 6784eac2391SMatthias Ringwald /** 679195e82f3Sskoperst */ 680195e82f3Sskoperst const hci_cmd_t hci_read_page_scan_activity = { 681ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_PAGE_SCAN_ACTIVITY, "" 682195e82f3Sskoperst }; 683195e82f3Sskoperst 684195e82f3Sskoperst /** 685195e82f3Sskoperst * @param page_scan_interval (* 0.625 ms) 686195e82f3Sskoperst * @param page_scan_window (* 0.625 ms, must be <= page_scan_interval) 687195e82f3Sskoperst */ 688195e82f3Sskoperst const hci_cmd_t hci_write_page_scan_activity = { 689ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_PAGE_SCAN_ACTIVITY, "22" 690195e82f3Sskoperst }; 691195e82f3Sskoperst 692195e82f3Sskoperst /** 69356042629SMatthias Ringwald */ 6944eac2391SMatthias Ringwald const hci_cmd_t hci_read_inquiry_scan_activity = { 695ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_INQUIRY_SCAN_ACTIVITY, "" 6964eac2391SMatthias Ringwald }; 6974eac2391SMatthias Ringwald 6984eac2391SMatthias Ringwald /** 6994eac2391SMatthias Ringwald * @param inquiry_scan_interval (* 0.625 ms) 7004eac2391SMatthias Ringwald * @param inquiry_scan_window (* 0.625 ms, must be <= inquiry_scan_interval) 7014eac2391SMatthias Ringwald */ 7024eac2391SMatthias Ringwald const hci_cmd_t hci_write_inquiry_scan_activity = { 703ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_INQUIRY_SCAN_ACTIVITY, "22" 70456042629SMatthias Ringwald }; 70556042629SMatthias Ringwald 70656042629SMatthias Ringwald /** 70756042629SMatthias Ringwald * @param authentication_enable 70856042629SMatthias Ringwald */ 70956042629SMatthias Ringwald const hci_cmd_t hci_write_authentication_enable = { 710ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_AUTHENTICATION_ENABLE, "1" 71156042629SMatthias Ringwald }; 71256042629SMatthias Ringwald 71356042629SMatthias Ringwald /** 71456042629SMatthias Ringwald * @param class_of_device 71556042629SMatthias Ringwald */ 71656042629SMatthias Ringwald const hci_cmd_t hci_write_class_of_device = { 717ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_CLASS_OF_DEVICE, "3" 71856042629SMatthias Ringwald }; 71956042629SMatthias Ringwald 72056042629SMatthias Ringwald /** 72156042629SMatthias Ringwald */ 72256042629SMatthias Ringwald const hci_cmd_t hci_read_num_broadcast_retransmissions = { 723ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_NUM_BROADCAST_RETRANSMISSIONS, "" 72456042629SMatthias Ringwald }; 72556042629SMatthias Ringwald 72656042629SMatthias Ringwald /** 72756042629SMatthias Ringwald * @param num_broadcast_retransmissions (e.g. 0 for a single broadcast) 72856042629SMatthias Ringwald */ 72956042629SMatthias Ringwald const hci_cmd_t hci_write_num_broadcast_retransmissions = { 730ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_NUM_BROADCAST_RETRANSMISSIONS, "1" 73156042629SMatthias Ringwald }; 73256042629SMatthias Ringwald 73356042629SMatthias Ringwald /** 73444751e25SMatthias Ringwald * @param connection_handle 73544751e25SMatthias Ringwald * @param type 0 = current transmit level, 1 = max transmit level 73644751e25SMatthias Ringwald */ 73744751e25SMatthias Ringwald const hci_cmd_t hci_read_transmit_power_level = { 738ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_TRANSMIT_POWER_LEVEL, "11" 73944751e25SMatthias Ringwald }; 74044751e25SMatthias Ringwald 74144751e25SMatthias Ringwald /** 74256042629SMatthias Ringwald * @param synchronous_flow_control_enable - if yes, num completed packet everts are sent for SCO packets 74356042629SMatthias Ringwald */ 74456042629SMatthias Ringwald const hci_cmd_t hci_write_synchronous_flow_control_enable = { 745ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_SYNCHRONOUS_FLOW_CONTROL_ENABLE, "1" 74656042629SMatthias Ringwald }; 74756042629SMatthias Ringwald 7482b838201SMatthias Ringwald #ifdef ENABLE_HCI_CONTROLLER_TO_HOST_FLOW_CONTROL 7492b838201SMatthias Ringwald 7502b838201SMatthias Ringwald /** 7512b838201SMatthias Ringwald * @param flow_control_enable - 0: off, 1: ACL only, 2: SCO only, 3: ACL + SCO 7522b838201SMatthias Ringwald */ 7532b838201SMatthias Ringwald const hci_cmd_t hci_set_controller_to_host_flow_control = { 754ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_SET_CONTROLLER_TO_HOST_FLOW_CONTROL, "1" 7552b838201SMatthias Ringwald }; 7562b838201SMatthias Ringwald 75756042629SMatthias Ringwald /** 75856042629SMatthias Ringwald * @param host_acl_data_packet_length 75956042629SMatthias Ringwald * @param host_synchronous_data_packet_length 76056042629SMatthias Ringwald * @param host_total_num_acl_data_packets 76156042629SMatthias Ringwald * @param host_total_num_synchronous_data_packets 76256042629SMatthias Ringwald */ 76356042629SMatthias Ringwald const hci_cmd_t hci_host_buffer_size = { 764ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_HOST_BUFFER_SIZE, "2122" 76556042629SMatthias Ringwald }; 76656042629SMatthias Ringwald 7679119d792SMilanka Ringwald 7682b838201SMatthias Ringwald #if 0 7692b838201SMatthias Ringwald // 7702b838201SMatthias Ringwald // command sent manually sent by hci_host_num_completed_packets 7712b838201SMatthias Ringwald // 7722b838201SMatthias Ringwald /** 7732b838201SMatthias Ringwald * @note only single handle supported by BTstack command generator 7742b838201SMatthias Ringwald * @param number_of_handles must be 1 7752b838201SMatthias Ringwald * @param connection_handle 7762b838201SMatthias Ringwald * @param host_num_of_completed_packets for the given connection handle 7772b838201SMatthias Ringwald */ 7782b838201SMatthias Ringwald const hci_cmd_t hci_host_number_of_completed_packets = { 779ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_HOST_NUMBER_OF_COMPLETED_PACKETS, "1H2" 7802b838201SMatthias Ringwald }; 7812b838201SMatthias Ringwald #endif 7822b838201SMatthias Ringwald 7832b838201SMatthias Ringwald #endif 7842b838201SMatthias Ringwald 78556042629SMatthias Ringwald /** 78656042629SMatthias Ringwald * @param handle 78756042629SMatthias Ringwald */ 78856042629SMatthias Ringwald const hci_cmd_t hci_read_link_supervision_timeout = { 789ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LINK_SUPERVISION_TIMEOUT, "H" 79056042629SMatthias Ringwald }; 79156042629SMatthias Ringwald 79256042629SMatthias Ringwald /** 79356042629SMatthias Ringwald * @param handle 79456042629SMatthias Ringwald * @param timeout (0x0001 - 0xFFFF Time -> Range: 0.625ms - 40.9 sec) 79556042629SMatthias Ringwald */ 79656042629SMatthias Ringwald const hci_cmd_t hci_write_link_supervision_timeout = { 797ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_LINK_SUPERVISION_TIMEOUT, "H2" 79856042629SMatthias Ringwald }; 79956042629SMatthias Ringwald 80056042629SMatthias Ringwald /** 8019119d792SMilanka Ringwald * @param num_current_iac must be 2 8029119d792SMilanka Ringwald * @param iac_lap1 8039119d792SMilanka Ringwald * @param iac_lap2 8049119d792SMilanka Ringwald */ 8059119d792SMilanka Ringwald const hci_cmd_t hci_write_current_iac_lap_two_iacs = { 806ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_CURRENT_IAC_LAP_TWO_IACS, "133" 8079119d792SMilanka Ringwald }; 8089119d792SMilanka Ringwald 8099119d792SMilanka Ringwald /** 81056042629SMatthias Ringwald * @param inquiry_mode (0x00 = standard, 0x01 = with RSSI, 0x02 = extended) 81156042629SMatthias Ringwald */ 81256042629SMatthias Ringwald const hci_cmd_t hci_write_inquiry_mode = { 813ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_INQUIRY_MODE, "1" 81456042629SMatthias Ringwald }; 81556042629SMatthias Ringwald 81656042629SMatthias Ringwald /** 81756042629SMatthias Ringwald * @param fec_required 81856042629SMatthias Ringwald * @param exstended_inquiry_response 81956042629SMatthias Ringwald */ 82056042629SMatthias Ringwald const hci_cmd_t hci_write_extended_inquiry_response = { 821ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_EXTENDED_INQUIRY_RESPONSE, "1E" 82256042629SMatthias Ringwald }; 82356042629SMatthias Ringwald 82456042629SMatthias Ringwald /** 82556042629SMatthias Ringwald * @param mode (0 = off, 1 = on) 82656042629SMatthias Ringwald */ 82756042629SMatthias Ringwald const hci_cmd_t hci_write_simple_pairing_mode = { 828ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_SIMPLE_PAIRING_MODE, "1" 82956042629SMatthias Ringwald }; 83056042629SMatthias Ringwald 831237daac5SMatthias Ringwald /** 832237daac5SMatthias Ringwald */ 833237daac5SMatthias Ringwald const hci_cmd_t hci_read_local_oob_data = { 834ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LOCAL_OOB_DATA, "" 835237daac5SMatthias Ringwald // return status, C, R 836237daac5SMatthias Ringwald }; 837483c5078SMatthias Ringwald 838483c5078SMatthias Ringwald /** 839483c5078SMatthias Ringwald * @param mode (0 = off, 1 = on) 840483c5078SMatthias Ringwald */ 841483c5078SMatthias Ringwald const hci_cmd_t hci_write_default_erroneous_data_reporting = { 842ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_DEFAULT_ERRONEOUS_DATA_REPORTING, "1" 843483c5078SMatthias Ringwald }; 844483c5078SMatthias Ringwald 84556042629SMatthias Ringwald /** 84656042629SMatthias Ringwald */ 84756042629SMatthias Ringwald const hci_cmd_t hci_read_le_host_supported = { 848ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LE_HOST_SUPPORTED, "" 84956042629SMatthias Ringwald // return: status, le supported host, simultaneous le host 85056042629SMatthias Ringwald }; 85156042629SMatthias Ringwald 85256042629SMatthias Ringwald /** 85356042629SMatthias Ringwald * @param le_supported_host 85456042629SMatthias Ringwald * @param simultaneous_le_host 85556042629SMatthias Ringwald */ 85656042629SMatthias Ringwald const hci_cmd_t hci_write_le_host_supported = { 857ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_LE_HOST_SUPPORTED, "11" 85856042629SMatthias Ringwald // return: status 85956042629SMatthias Ringwald }; 86056042629SMatthias Ringwald 86156042629SMatthias Ringwald /** 862b002ae8cSMatthias Ringwald * @param secure_connections_host_support 863b002ae8cSMatthias Ringwald */ 864b002ae8cSMatthias Ringwald const hci_cmd_t hci_write_secure_connections_host_support = { 865ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_SECURE_CONNECTIONS_HOST_SUPPORT, "1" 866b002ae8cSMatthias Ringwald // return: status 867b002ae8cSMatthias Ringwald }; 868b002ae8cSMatthias Ringwald 869b002ae8cSMatthias Ringwald /** 870237daac5SMatthias Ringwald */ 871bb75dd7dSMatthias Ringwald const hci_cmd_t hci_read_local_extended_oob_data = { 872*1849becdSMatthias Ringwald HCI_OPCODE_HCI_READ_LOCAL_EXTENDED_OOB_DATA, "" 873237daac5SMatthias Ringwald // return status, C_192, R_192, R_256, C_256 874237daac5SMatthias Ringwald }; 875237daac5SMatthias Ringwald 876237daac5SMatthias Ringwald 877237daac5SMatthias Ringwald /** 87856042629SMatthias Ringwald * Testing Commands 87956042629SMatthias Ringwald */ 88056042629SMatthias Ringwald 88156042629SMatthias Ringwald 88256042629SMatthias Ringwald /** 88356042629SMatthias Ringwald */ 88456042629SMatthias Ringwald const hci_cmd_t hci_read_loopback_mode = { 885ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LOOPBACK_MODE, "" 88656042629SMatthias Ringwald // return: status, loopback mode (0 = off, 1 = local loopback, 2 = remote loopback) 88756042629SMatthias Ringwald }; 88856042629SMatthias Ringwald 88956042629SMatthias Ringwald /** 89056042629SMatthias Ringwald * @param loopback_mode 89156042629SMatthias Ringwald */ 89256042629SMatthias Ringwald const hci_cmd_t hci_write_loopback_mode = { 893ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_LOOPBACK_MODE, "1" 89456042629SMatthias Ringwald // return: status 89556042629SMatthias Ringwald }; 89656042629SMatthias Ringwald 89784ca9bd8SMatthias Ringwald /** 89884ca9bd8SMatthias Ringwald */ 89984ca9bd8SMatthias Ringwald const hci_cmd_t hci_enable_device_under_test_mode = { 900ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_ENABLE_DEVICE_UNDER_TEST_MODE, "" 90184ca9bd8SMatthias Ringwald // return: status 90284ca9bd8SMatthias Ringwald }; 90384ca9bd8SMatthias Ringwald 90484ca9bd8SMatthias Ringwald /** 90584ca9bd8SMatthias Ringwald * @param simple_pairing_debug_mode 90684ca9bd8SMatthias Ringwald */ 90784ca9bd8SMatthias Ringwald const hci_cmd_t hci_write_simple_pairing_debug_mode = { 908ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_SIMPLE_PAIRING_DEBUG_MODE, "1" 90984ca9bd8SMatthias Ringwald // return: status 91084ca9bd8SMatthias Ringwald }; 91184ca9bd8SMatthias Ringwald 91284ca9bd8SMatthias Ringwald /** 91384ca9bd8SMatthias Ringwald * @param handle 91484ca9bd8SMatthias Ringwald * @param dm1_acl_u_mode 91584ca9bd8SMatthias Ringwald * @param esco_loopback_mode 91684ca9bd8SMatthias Ringwald */ 91784ca9bd8SMatthias Ringwald const hci_cmd_t hci_write_secure_connections_test_mode = { 918ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_WRITE_SECURE_CONNECTIONS_TEST_MODE, "H11" 91984ca9bd8SMatthias Ringwald // return: status 92084ca9bd8SMatthias Ringwald }; 92184ca9bd8SMatthias Ringwald 92256042629SMatthias Ringwald 92356042629SMatthias Ringwald /** 92456042629SMatthias Ringwald * Informational Parameters 92556042629SMatthias Ringwald */ 92656042629SMatthias Ringwald 92756042629SMatthias Ringwald const hci_cmd_t hci_read_local_version_information = { 928ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LOCAL_VERSION_INFORMATION, "" 92956042629SMatthias Ringwald }; 93056042629SMatthias Ringwald const hci_cmd_t hci_read_local_supported_commands = { 931ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LOCAL_SUPPORTED_COMMANDS, "" 93256042629SMatthias Ringwald }; 93356042629SMatthias Ringwald const hci_cmd_t hci_read_local_supported_features = { 934ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_LOCAL_SUPPORTED_FEATURES, "" 93556042629SMatthias Ringwald }; 93656042629SMatthias Ringwald const hci_cmd_t hci_read_buffer_size = { 937ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_BUFFER_SIZE, "" 93856042629SMatthias Ringwald }; 93956042629SMatthias Ringwald const hci_cmd_t hci_read_bd_addr = { 940ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_BD_ADDR, "" 94156042629SMatthias Ringwald }; 94256042629SMatthias Ringwald 94356042629SMatthias Ringwald /** 94456042629SMatthias Ringwald * Status Paramters 94556042629SMatthias Ringwald */ 94656042629SMatthias Ringwald 94756042629SMatthias Ringwald /** 94856042629SMatthias Ringwald * @param handle 94956042629SMatthias Ringwald */ 95056042629SMatthias Ringwald const hci_cmd_t hci_read_rssi = { 951ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_RSSI, "H" 95256042629SMatthias Ringwald }; 95356042629SMatthias Ringwald 95497abfa24SMatthias Ringwald /** 95597abfa24SMatthias Ringwald * @param handle 95697abfa24SMatthias Ringwald */ 95797abfa24SMatthias Ringwald const hci_cmd_t hci_read_encryption_key_size = { 958ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_READ_ENCRYPTION_KEY_SIZE, "H" 95997abfa24SMatthias Ringwald }; 96056042629SMatthias Ringwald 96156042629SMatthias Ringwald 962a9a4c409SMatthias Ringwald #ifdef ENABLE_BLE 96356042629SMatthias Ringwald /** 96456042629SMatthias Ringwald * Low Energy Commands 96556042629SMatthias Ringwald */ 96656042629SMatthias Ringwald 96756042629SMatthias Ringwald /** 96856042629SMatthias Ringwald * @param event_mask_lower_octets 96956042629SMatthias Ringwald * @param event_mask_higher_octets 97056042629SMatthias Ringwald */ 97156042629SMatthias Ringwald const hci_cmd_t hci_le_set_event_mask = { 972ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_EVENT_MASK, "44" 97356042629SMatthias Ringwald // return: status 97456042629SMatthias Ringwald }; 97556042629SMatthias Ringwald 97656042629SMatthias Ringwald const hci_cmd_t hci_le_read_buffer_size = { 977ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_BUFFER_SIZE, "" 97856042629SMatthias Ringwald // return: status, le acl data packet len (16), total num le acl data packets(8) 97956042629SMatthias Ringwald }; 98056042629SMatthias Ringwald const hci_cmd_t hci_le_read_supported_features = { 981ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_SUPPORTED_FEATURES, "" 98256042629SMatthias Ringwald // return: LE_Features See [Vol 6] Part B, Section 4.6 98356042629SMatthias Ringwald }; 98456042629SMatthias Ringwald 98556042629SMatthias Ringwald /** 98656042629SMatthias Ringwald * @param random_bd_addr 98756042629SMatthias Ringwald */ 98856042629SMatthias Ringwald const hci_cmd_t hci_le_set_random_address = { 989ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_RANDOM_ADDRESS, "B" 99056042629SMatthias Ringwald // return: status 99156042629SMatthias Ringwald }; 99256042629SMatthias Ringwald 99356042629SMatthias Ringwald /** 99456042629SMatthias Ringwald * @param advertising_interval_min ([0x0020,0x4000], default: 0x0800, unit: 0.625 msec) 99556042629SMatthias Ringwald * @param advertising_interval_max ([0x0020,0x4000], default: 0x0800, unit: 0.625 msec) 99656042629SMatthias Ringwald * @param advertising_type (enum from 0: ADV_IND, ADC_DIRECT_IND, ADV_SCAN_IND, ADV_NONCONN_IND) 99756042629SMatthias Ringwald * @param own_address_type (enum from 0: public device address, random device address) 99856042629SMatthias Ringwald * @param direct_address_type () 99956042629SMatthias Ringwald * @param direct_address (public or random address of device to be connecteed) 100056042629SMatthias Ringwald * @param advertising_channel_map (flags: chan_37(1), chan_38(2), chan_39(4)) 100156042629SMatthias Ringwald * @param advertising_filter_policy (enum from 0: scan any conn any, scan whitelist, con any, scan any conn whitelist, scan whitelist, con whitelist) 100256042629SMatthias Ringwald */ 100356042629SMatthias Ringwald const hci_cmd_t hci_le_set_advertising_parameters = { 1004ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_ADVERTISING_PARAMETERS, "22111B11" 100556042629SMatthias Ringwald // return: status 100656042629SMatthias Ringwald }; 100756042629SMatthias Ringwald 100856042629SMatthias Ringwald const hci_cmd_t hci_le_read_advertising_channel_tx_power = { 1009ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_ADVERTISING_CHANNEL_TX_POWER, "" 101056042629SMatthias Ringwald // return: status, level [-20,10] signed int (8), units dBm 101156042629SMatthias Ringwald }; 101256042629SMatthias Ringwald 101356042629SMatthias Ringwald /** 101456042629SMatthias Ringwald * @param advertising_data_length 101556042629SMatthias Ringwald * @param advertising_data (31 bytes) 101656042629SMatthias Ringwald */ 101756042629SMatthias Ringwald const hci_cmd_t hci_le_set_advertising_data= { 1018ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_ADVERTISING_DATA, "1A" 101956042629SMatthias Ringwald // return: status 102056042629SMatthias Ringwald }; 102156042629SMatthias Ringwald 102256042629SMatthias Ringwald /** 102356042629SMatthias Ringwald * @param scan_response_data_length 102456042629SMatthias Ringwald * @param scan_response_data (31 bytes) 102556042629SMatthias Ringwald */ 102656042629SMatthias Ringwald const hci_cmd_t hci_le_set_scan_response_data= { 1027ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_SCAN_RESPONSE_DATA, "1A" 102856042629SMatthias Ringwald // return: status 102956042629SMatthias Ringwald }; 103056042629SMatthias Ringwald 103156042629SMatthias Ringwald /** 103256042629SMatthias Ringwald * @param advertise_enable (off: 0, on: 1) 103356042629SMatthias Ringwald */ 103456042629SMatthias Ringwald const hci_cmd_t hci_le_set_advertise_enable = { 1035ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_ADVERTISE_ENABLE, "1" 103656042629SMatthias Ringwald // return: status 103756042629SMatthias Ringwald }; 103856042629SMatthias Ringwald 103956042629SMatthias Ringwald /** 104056042629SMatthias Ringwald * @param le_scan_type (passive (0), active (1)) 104156042629SMatthias Ringwald * @param le_scan_interval ([0x0004,0x4000], unit: 0.625 msec) 104256042629SMatthias Ringwald * @param le_scan_window ([0x0004,0x4000], unit: 0.625 msec) 104356042629SMatthias Ringwald * @param own_address_type (public (0), random (1)) 104456042629SMatthias Ringwald * @param scanning_filter_policy (any (0), only whitelist (1)) 104556042629SMatthias Ringwald */ 104656042629SMatthias Ringwald const hci_cmd_t hci_le_set_scan_parameters = { 1047ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_SCAN_PARAMETERS, "12211" 104856042629SMatthias Ringwald // return: status 104956042629SMatthias Ringwald }; 105056042629SMatthias Ringwald 105156042629SMatthias Ringwald /** 105256042629SMatthias Ringwald * @param le_scan_enable (disabled (0), enabled (1)) 105356042629SMatthias Ringwald * @param filter_duplices (disabled (0), enabled (1)) 105456042629SMatthias Ringwald */ 105556042629SMatthias Ringwald const hci_cmd_t hci_le_set_scan_enable = { 1056ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_SCAN_ENABLE, "11" 105756042629SMatthias Ringwald // return: status 105856042629SMatthias Ringwald }; 105956042629SMatthias Ringwald 106056042629SMatthias Ringwald /** 106156042629SMatthias Ringwald * @param le_scan_interval ([0x0004, 0x4000], unit: 0.625 msec) 106256042629SMatthias Ringwald * @param le_scan_window ([0x0004, 0x4000], unit: 0.625 msec) 106356042629SMatthias Ringwald * @param initiator_filter_policy (peer address type + peer address (0), whitelist (1)) 106456042629SMatthias Ringwald * @param peer_address_type (public (0), random (1)) 106556042629SMatthias Ringwald * @param peer_address 106656042629SMatthias Ringwald * @param own_address_type (public (0), random (1)) 106756042629SMatthias Ringwald * @param conn_interval_min ([0x0006, 0x0c80], unit: 1.25 msec) 106856042629SMatthias Ringwald * @param conn_interval_max ([0x0006, 0x0c80], unit: 1.25 msec) 106956042629SMatthias Ringwald * @param conn_latency (number of connection events [0x0000, 0x01f4]) 107056042629SMatthias Ringwald * @param supervision_timeout ([0x000a, 0x0c80], unit: 10 msec) 107156042629SMatthias Ringwald * @param minimum_CE_length ([0x0000, 0xffff], unit: 0.625 msec) 107256042629SMatthias Ringwald * @param maximum_CE_length ([0x0000, 0xffff], unit: 0.625 msec) 107356042629SMatthias Ringwald */ 107456042629SMatthias Ringwald const hci_cmd_t hci_le_create_connection= { 1075ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_CREATE_CONNECTION, "2211B1222222" 107656042629SMatthias Ringwald // return: none -> le create connection complete event 107756042629SMatthias Ringwald }; 107856042629SMatthias Ringwald 107956042629SMatthias Ringwald const hci_cmd_t hci_le_create_connection_cancel = { 1080ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_CREATE_CONNECTION_CANCEL, "" 108156042629SMatthias Ringwald // return: status 108256042629SMatthias Ringwald }; 108356042629SMatthias Ringwald 108456042629SMatthias Ringwald const hci_cmd_t hci_le_read_white_list_size = { 1085ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_WHITE_LIST_SIZE, "" 108656042629SMatthias Ringwald // return: status, number of entries in controller whitelist 108756042629SMatthias Ringwald }; 108856042629SMatthias Ringwald 108956042629SMatthias Ringwald const hci_cmd_t hci_le_clear_white_list = { 1090ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_CLEAR_WHITE_LIST, "" 109156042629SMatthias Ringwald // return: status 109256042629SMatthias Ringwald }; 109356042629SMatthias Ringwald 109456042629SMatthias Ringwald /** 109556042629SMatthias Ringwald * @param address_type (public (0), random (1)) 109656042629SMatthias Ringwald * @param bd_addr 109756042629SMatthias Ringwald */ 109856042629SMatthias Ringwald const hci_cmd_t hci_le_add_device_to_white_list = { 1099ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_ADD_DEVICE_TO_WHITE_LIST, "1B" 110056042629SMatthias Ringwald // return: status 110156042629SMatthias Ringwald }; 110256042629SMatthias Ringwald 110356042629SMatthias Ringwald /** 110456042629SMatthias Ringwald * @param address_type (public (0), random (1)) 110556042629SMatthias Ringwald * @param bd_addr 110656042629SMatthias Ringwald */ 110756042629SMatthias Ringwald const hci_cmd_t hci_le_remove_device_from_white_list = { 1108ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOVE_DEVICE_FROM_WHITE_LIST, "1B" 110956042629SMatthias Ringwald // return: status 111056042629SMatthias Ringwald }; 111156042629SMatthias Ringwald 111256042629SMatthias Ringwald /** 111356042629SMatthias Ringwald * @param conn_handle 111456042629SMatthias Ringwald * @param conn_interval_min ([0x0006,0x0c80], unit: 1.25 msec) 111556042629SMatthias Ringwald * @param conn_interval_max ([0x0006,0x0c80], unit: 1.25 msec) 111656042629SMatthias Ringwald * @param conn_latency ([0x0000,0x03e8], number of connection events) 111756042629SMatthias Ringwald * @param supervision_timeout ([0x000a,0x0c80], unit: 10 msec) 111856042629SMatthias Ringwald * @param minimum_CE_length ([0x0000,0xffff], unit: 0.625 msec) 111956042629SMatthias Ringwald * @param maximum_CE_length ([0x0000,0xffff], unit: 0.625 msec) 112056042629SMatthias Ringwald */ 112156042629SMatthias Ringwald const hci_cmd_t hci_le_connection_update = { 1122ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_CONNECTION_UPDATE, "H222222" 112356042629SMatthias Ringwald // return: none -> le connection update complete event 112456042629SMatthias Ringwald }; 112556042629SMatthias Ringwald 112656042629SMatthias Ringwald /** 112756042629SMatthias Ringwald * @param channel_map_lower_32bits 112856042629SMatthias Ringwald * @param channel_map_higher_5bits 112956042629SMatthias Ringwald */ 113056042629SMatthias Ringwald const hci_cmd_t hci_le_set_host_channel_classification = { 1131ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_HOST_CHANNEL_CLASSIFICATION, "41" 113256042629SMatthias Ringwald // return: status 113356042629SMatthias Ringwald }; 113456042629SMatthias Ringwald 113556042629SMatthias Ringwald /** 113656042629SMatthias Ringwald * @param conn_handle 113756042629SMatthias Ringwald */ 113856042629SMatthias Ringwald const hci_cmd_t hci_le_read_channel_map = { 1139ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_CHANNEL_MAP, "H" 114056042629SMatthias Ringwald // return: status, connection handle, channel map (5 bytes, 37 used) 114156042629SMatthias Ringwald }; 114256042629SMatthias Ringwald 114356042629SMatthias Ringwald /** 114456042629SMatthias Ringwald * @param conn_handle 114556042629SMatthias Ringwald */ 114656042629SMatthias Ringwald const hci_cmd_t hci_le_read_remote_used_features = { 1147ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_REMOTE_USED_FEATURES, "H" 114856042629SMatthias Ringwald // return: none -> le read remote used features complete event 114956042629SMatthias Ringwald }; 115056042629SMatthias Ringwald 115156042629SMatthias Ringwald /** 115256042629SMatthias Ringwald * @param key ((128) for AES-128) 115356042629SMatthias Ringwald * @param plain_text (128) 115456042629SMatthias Ringwald */ 115556042629SMatthias Ringwald const hci_cmd_t hci_le_encrypt = { 1156ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_ENCRYPT, "PP" 115756042629SMatthias Ringwald // return: status, encrypted data (128) 115856042629SMatthias Ringwald }; 115956042629SMatthias Ringwald 116056042629SMatthias Ringwald const hci_cmd_t hci_le_rand = { 1161ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_RAND, "" 116256042629SMatthias Ringwald // return: status, random number (64) 116356042629SMatthias Ringwald }; 116456042629SMatthias Ringwald 116556042629SMatthias Ringwald /** 116656042629SMatthias Ringwald * @param conn_handle 116756042629SMatthias Ringwald * @param random_number_lower_32bits 116856042629SMatthias Ringwald * @param random_number_higher_32bits 116956042629SMatthias Ringwald * @param encryption_diversifier (16) 117056042629SMatthias Ringwald * @param long_term_key (128) 117156042629SMatthias Ringwald */ 117256042629SMatthias Ringwald const hci_cmd_t hci_le_start_encryption = { 1173ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_START_ENCRYPTION, "H442P" 117456042629SMatthias Ringwald // return: none -> encryption changed or encryption key refresh complete event 117556042629SMatthias Ringwald }; 117656042629SMatthias Ringwald 117756042629SMatthias Ringwald /** 117856042629SMatthias Ringwald * @param connection_handle 117956042629SMatthias Ringwald * @param long_term_key (128) 118056042629SMatthias Ringwald */ 118156042629SMatthias Ringwald const hci_cmd_t hci_le_long_term_key_request_reply = { 1182ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_LONG_TERM_KEY_REQUEST_REPLY, "HP" 118356042629SMatthias Ringwald // return: status, connection handle 118456042629SMatthias Ringwald }; 118556042629SMatthias Ringwald 118656042629SMatthias Ringwald /** 118756042629SMatthias Ringwald * @param conn_handle 118856042629SMatthias Ringwald */ 118956042629SMatthias Ringwald const hci_cmd_t hci_le_long_term_key_negative_reply = { 1190ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_LONG_TERM_KEY_NEGATIVE_REPLY, "H" 119156042629SMatthias Ringwald // return: status, connection handle 119256042629SMatthias Ringwald }; 119356042629SMatthias Ringwald 119456042629SMatthias Ringwald /** 119556042629SMatthias Ringwald * @param conn_handle 119656042629SMatthias Ringwald */ 119756042629SMatthias Ringwald const hci_cmd_t hci_le_read_supported_states = { 1198ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_SUPPORTED_STATES, "H" 119956042629SMatthias Ringwald // return: status, LE states (64) 120056042629SMatthias Ringwald }; 120156042629SMatthias Ringwald 120256042629SMatthias Ringwald /** 120356042629SMatthias Ringwald * @param rx_frequency ([0x00 0x27], frequency (MHz): 2420 + N*2) 120456042629SMatthias Ringwald */ 120556042629SMatthias Ringwald const hci_cmd_t hci_le_receiver_test = { 1206ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_RECEIVER_TEST, "1" 120756042629SMatthias Ringwald // return: status 120856042629SMatthias Ringwald }; 120956042629SMatthias Ringwald 121056042629SMatthias Ringwald /** 121156042629SMatthias Ringwald * @param tx_frequency ([0x00 0x27], frequency (MHz): 2420 + N*2) 121256042629SMatthias Ringwald * @param test_payload_lengh ([0x00,0x25]) 121356042629SMatthias Ringwald * @param packet_payload ([0,7] different patterns) 121456042629SMatthias Ringwald */ 121556042629SMatthias Ringwald const hci_cmd_t hci_le_transmitter_test = { 1216ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_TRANSMITTER_TEST, "111" 121756042629SMatthias Ringwald // return: status 121856042629SMatthias Ringwald }; 121956042629SMatthias Ringwald 122056042629SMatthias Ringwald /** 122156042629SMatthias Ringwald * @param end_test_cmd 122256042629SMatthias Ringwald */ 122356042629SMatthias Ringwald const hci_cmd_t hci_le_test_end = { 1224ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_TEST_END, "1" 122556042629SMatthias Ringwald // return: status, number of packets (8) 122656042629SMatthias Ringwald }; 122782180fcaSMatthias Ringwald 122882180fcaSMatthias Ringwald /** 1229fe704c95SMatthias Ringwald * @param conn_handle 1230fe704c95SMatthias Ringwald * @param conn_interval_min ([0x0006,0x0c80], unit: 1.25 msec) 1231fe704c95SMatthias Ringwald * @param conn_interval_max ([0x0006,0x0c80], unit: 1.25 msec) 1232fe704c95SMatthias Ringwald * @param conn_latency ([0x0000,0x03e8], number of connection events) 1233fe704c95SMatthias Ringwald * @param supervision_timeout ([0x000a,0x0c80], unit: 10 msec) 1234fe704c95SMatthias Ringwald * @param minimum_CE_length ([0x0000,0xffff], unit: 0.625 msec) 1235fe704c95SMatthias Ringwald * @param maximum_CE_length ([0x0000,0xffff], unit: 0.625 msec) 1236fe704c95SMatthias Ringwald */ 1237fe704c95SMatthias Ringwald const hci_cmd_t hci_le_remote_connection_parameter_request_reply = { 1238ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_REPLY, "H222222" 1239fe704c95SMatthias Ringwald // return: status, connection handle 1240fe704c95SMatthias Ringwald }; 1241fe704c95SMatthias Ringwald 1242fe704c95SMatthias Ringwald /** 1243fe704c95SMatthias Ringwald * @param con_handle 1244fe704c95SMatthias Ringwald * @param reason 1245fe704c95SMatthias Ringwald */ 1246fe704c95SMatthias Ringwald const hci_cmd_t hci_le_remote_connection_parameter_request_negative_reply = { 1247ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_NEGATIVE_REPLY, "H1" 1248fe704c95SMatthias Ringwald // return: status, connection handle 1249fe704c95SMatthias Ringwald }; 1250fe704c95SMatthias Ringwald 1251fe704c95SMatthias Ringwald /** 12520ea2847fSMatthias Ringwald * @param con_handle 12530ea2847fSMatthias Ringwald * @param tx_octets 12540ea2847fSMatthias Ringwald * @param tx_time 12550ea2847fSMatthias Ringwald */ 12560ea2847fSMatthias Ringwald const hci_cmd_t hci_le_set_data_length = { 1257ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_DATA_LENGTH, "H22" 12580ea2847fSMatthias Ringwald // return: status, connection handle 12590ea2847fSMatthias Ringwald }; 12600ea2847fSMatthias Ringwald 12610ea2847fSMatthias Ringwald /** 12620ea2847fSMatthias Ringwald */ 12630ea2847fSMatthias Ringwald const hci_cmd_t hci_le_read_suggested_default_data_length = { 1264ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_SUGGESTED_DEFAULT_DATA_LENGTH, "" 12650ea2847fSMatthias Ringwald // return: status, suggested max tx octets, suggested max tx time 12660ea2847fSMatthias Ringwald }; 12670ea2847fSMatthias Ringwald 12680ea2847fSMatthias Ringwald /** 12690ea2847fSMatthias Ringwald * @param suggested_max_tx_octets 12700ea2847fSMatthias Ringwald * @param suggested_max_tx_time 12710ea2847fSMatthias Ringwald */ 12720ea2847fSMatthias Ringwald const hci_cmd_t hci_le_write_suggested_default_data_length = { 1273ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_WRITE_SUGGESTED_DEFAULT_DATA_LENGTH, "22" 12740ea2847fSMatthias Ringwald // return: status 12750ea2847fSMatthias Ringwald }; 12760ea2847fSMatthias Ringwald 12770ea2847fSMatthias Ringwald /** 127882180fcaSMatthias Ringwald */ 127982180fcaSMatthias Ringwald const hci_cmd_t hci_le_read_local_p256_public_key = { 1280ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_LOCAL_P256_PUBLIC_KEY, "" 128182180fcaSMatthias Ringwald // LE Read Local P-256 Public Key Complete is generated on completion 128282180fcaSMatthias Ringwald }; 128382180fcaSMatthias Ringwald 128482180fcaSMatthias Ringwald /** 1285fcae305fSMatthias Ringwald * @param public key 1286fcae305fSMatthias Ringwald * @param private key 128782180fcaSMatthias Ringwald */ 128882180fcaSMatthias Ringwald const hci_cmd_t hci_le_generate_dhkey = { 1289ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_GENERATE_DHKEY, "QQ" 129082180fcaSMatthias Ringwald // LE Generate DHKey Complete is generated on completion 129182180fcaSMatthias Ringwald }; 129282180fcaSMatthias Ringwald 12930ea2847fSMatthias Ringwald /** 1294173ed1a3SMatthias Ringwald * @param Peer_Identity_Address_Type 1295173ed1a3SMatthias Ringwald * @param Peer_Identity_Address 1296173ed1a3SMatthias Ringwald * @param Peer_IRK 1297173ed1a3SMatthias Ringwald * @param Local_IRK 1298173ed1a3SMatthias Ringwald */ 1299173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_add_device_to_resolving_list = { 1300173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_ADD_DEVICE_TO_RESOLVING_LIST, "1BPP" 1301173ed1a3SMatthias Ringwald }; 1302173ed1a3SMatthias Ringwald 1303173ed1a3SMatthias Ringwald /** 1304173ed1a3SMatthias Ringwald * @param Peer_Identity_Address_Type 1305173ed1a3SMatthias Ringwald * @param Peer_Identity_Address 1306173ed1a3SMatthias Ringwald */ 1307173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_remove_device_from_resolving_list = { 1308173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_REMOVE_DEVICE_FROM_RESOLVING_LIST, "1B" 1309173ed1a3SMatthias Ringwald }; 1310173ed1a3SMatthias Ringwald 1311173ed1a3SMatthias Ringwald /** 1312173ed1a3SMatthias Ringwald */ 1313173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_clear_resolving_list = { 1314173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_CLEAR_RESOLVING_LIST, "" 1315173ed1a3SMatthias Ringwald }; 1316173ed1a3SMatthias Ringwald 1317173ed1a3SMatthias Ringwald /** 1318173ed1a3SMatthias Ringwald */ 1319173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_read_resolving_list_size = { 1320173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_RESOLVING_LIST_SIZE, "" 1321173ed1a3SMatthias Ringwald }; 1322173ed1a3SMatthias Ringwald 1323173ed1a3SMatthias Ringwald /** 1324173ed1a3SMatthias Ringwald * @param Peer_Identity_Address_Type 1325173ed1a3SMatthias Ringwald * @param Peer_Identity_Address 1326173ed1a3SMatthias Ringwald */ 1327173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_read_peer_resolvable_address = { 1328173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_PEER_RESOLVABLE_ADDRESS, "" 1329173ed1a3SMatthias Ringwald }; 1330173ed1a3SMatthias Ringwald 1331173ed1a3SMatthias Ringwald /** 1332173ed1a3SMatthias Ringwald * @param Peer_Identity_Address_Type 1333173ed1a3SMatthias Ringwald * @param Peer_Identity_Address 1334173ed1a3SMatthias Ringwald */ 1335173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_read_local_resolvable_address = { 1336173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_LOCAL_RESOLVABLE_ADDRESS, "" 1337173ed1a3SMatthias Ringwald }; 1338173ed1a3SMatthias Ringwald 1339173ed1a3SMatthias Ringwald /** 1340173ed1a3SMatthias Ringwald * @param Address_Resolution_Enable 1341173ed1a3SMatthias Ringwald */ 1342173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_set_address_resolution_enabled= { 1343173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_ADDRESS_RESOLUTION_ENABLED, "1" 1344173ed1a3SMatthias Ringwald }; 1345173ed1a3SMatthias Ringwald 1346173ed1a3SMatthias Ringwald /** 1347173ed1a3SMatthias Ringwald * @param RPA_Timeout in seconds, range 0x0001 to 0x0E10, default: 900 s 1348173ed1a3SMatthias Ringwald */ 1349173ed1a3SMatthias Ringwald const hci_cmd_t hci_le_set_resolvable_private_address_timeout= { 1350173ed1a3SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_RESOLVABLE_PRIVATE_ADDRESS_TIMEOUT, "2" 1351173ed1a3SMatthias Ringwald }; 1352173ed1a3SMatthias Ringwald 1353173ed1a3SMatthias Ringwald /** 13540ea2847fSMatthias Ringwald */ 13550ea2847fSMatthias Ringwald const hci_cmd_t hci_le_read_maximum_data_length = { 1356ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_MAXIMUM_DATA_LENGTH, "" 13570ea2847fSMatthias Ringwald // return: status, supported max tx octets, supported max tx time, supported max rx octets, supported max rx time 13580ea2847fSMatthias Ringwald }; 13590ea2847fSMatthias Ringwald 1360ca13daefSMatthias Ringwald /** 1361ca13daefSMatthias Ringwald * @param con_handle 1362ca13daefSMatthias Ringwald */ 1363ca13daefSMatthias Ringwald const hci_cmd_t hci_le_read_phy = { 1364ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_READ_PHY, "H" 1365ca13daefSMatthias Ringwald // return: status, connection handler, tx phy, rx phy 1366ca13daefSMatthias Ringwald }; 1367ca13daefSMatthias Ringwald 1368ca13daefSMatthias Ringwald /** 1369ca13daefSMatthias Ringwald * @param all_phys 1370ca13daefSMatthias Ringwald * @param tx_phys 1371ca13daefSMatthias Ringwald * @param rx_phys 1372ca13daefSMatthias Ringwald */ 1373ca13daefSMatthias Ringwald const hci_cmd_t hci_le_set_default_phy = { 1374ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_DEFAULT_PHY, "111" 1375ca13daefSMatthias Ringwald // return: status 1376ca13daefSMatthias Ringwald }; 1377ca13daefSMatthias Ringwald 1378ca13daefSMatthias Ringwald /** 1379ca13daefSMatthias Ringwald * @param con_handle 1380ca13daefSMatthias Ringwald * @param all_phys 1381ca13daefSMatthias Ringwald * @param tx_phys 1382ca13daefSMatthias Ringwald * @param rx_phys 1383ca13daefSMatthias Ringwald * @param phy_options 1384ca13daefSMatthias Ringwald */ 1385ca13daefSMatthias Ringwald const hci_cmd_t hci_le_set_phy = { 1386ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_LE_SET_PHY, "H1111" 1387ca13daefSMatthias Ringwald // LE PHY Update Complete is generated on completion 1388ca13daefSMatthias Ringwald }; 1389ca13daefSMatthias Ringwald 1390ca13daefSMatthias Ringwald 139156042629SMatthias Ringwald #endif 1392a42798c3SMatthias Ringwald 1393a42798c3SMatthias Ringwald // Broadcom / Cypress specific HCI commands 1394a42798c3SMatthias Ringwald 1395a42798c3SMatthias Ringwald /** 1396067ecc36SMatthias Ringwald * @brief Enable Wide-Band Speech / mSBC decoding for PCM 1397067ecc36SMatthias Ringwald * @param enable_wbs is 0 for disable, 1 for enable 1398067ecc36SMatthias Ringwald * @param uuid_wbs is 2 for EV2/EV3 1399067ecc36SMatthias Ringwald */ 1400067ecc36SMatthias Ringwald const hci_cmd_t hci_bcm_enable_wbs = { 1401067ecc36SMatthias Ringwald HCI_OPCODE_HCI_BCM_ENABLE_WBS, "12" 1402067ecc36SMatthias Ringwald // return: status 1403067ecc36SMatthias Ringwald }; 1404067ecc36SMatthias Ringwald 1405067ecc36SMatthias Ringwald /** 1406a42798c3SMatthias Ringwald * @brief Configure SCO Routing (BCM) 1407a42798c3SMatthias Ringwald * @param sco_routing is 0 for PCM, 1 for Transport, 2 for Codec and 3 for I2S 1408a42798c3SMatthias Ringwald * @param pcm_interface_rate is 0 for 128KBps, 1 for 256 KBps, 2 for 512KBps, 3 for 1024KBps, and 4 for 2048Kbps 1409a42798c3SMatthias Ringwald * @param frame_type is 0 for short and 1 for long 1410a42798c3SMatthias Ringwald * @param sync_mode is 0 for slave and 1 for master 1411a42798c3SMatthias Ringwald * @param clock_mode is 0 for slabe and 1 for master 1412a42798c3SMatthias Ringwald */ 1413a42798c3SMatthias Ringwald const hci_cmd_t hci_bcm_write_sco_pcm_int = { 1414ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_BCM_WRITE_SCO_PCM_INT, "11111" 1415a42798c3SMatthias Ringwald // return: status 1416a42798c3SMatthias Ringwald }; 1417eab6959fSMatthias Ringwald 1418eab6959fSMatthias Ringwald /** 1419067ecc36SMatthias Ringwald * @brief Configure the I2S/PCM interface (BCM) 1420067ecc36SMatthias Ringwald * @param i2s_enable is 0 for off, 1 for on 1421067ecc36SMatthias Ringwald * @param is_master is 0 for slave, is 1 for master 1422067ecc36SMatthias Ringwald * @param sample_rate is 0 for 8 kHz, 1 for 16 kHz, 2 for 4 kHz 1423067ecc36SMatthias 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 1424067ecc36SMatthias Ringwald * @param clock_mode is 0 for slabe and 1 for master 1425067ecc36SMatthias Ringwald */ 1426067ecc36SMatthias Ringwald const hci_cmd_t hci_bcm_write_i2spcm_interface_param = { 1427067ecc36SMatthias Ringwald HCI_OPCODE_HCI_BCM_WRITE_I2SPCM_INTERFACE_PARAM, "1111" 1428067ecc36SMatthias Ringwald // return: status 1429067ecc36SMatthias Ringwald }; 1430067ecc36SMatthias Ringwald 1431067ecc36SMatthias Ringwald 1432067ecc36SMatthias Ringwald /** 1433eab6959fSMatthias Ringwald * @brief Activates selected Sleep Mode 1434eab6959fSMatthias 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 1435eab6959fSMatthias Ringwald * @param idle_threshold_host (modes 1,2,5,7) time until considered idle, unit roughly 300 ms 1436eab6959fSMatthias Ringwald * @param idle_threshold_controller (modes 1-7,9) time until considered idle, unit roughly 300 ms 1437eab6959fSMatthias Ringwald * @param bt_wake_active_mode (modes 1,2,7) 0 = BT_WAKE line is active high, 1 = BT_WAKE is active low 1438eab6959fSMatthias Ringwald * @param host_wake_active_mode (modes 1,2,5,7) 0 = HOST_WAKE line is active high, 1 = HOST_WAKE is active low 1439eab6959fSMatthias Ringwald * @param allow_host_sleep_during_sco (modes 1,2,3,5,7) 1440eab6959fSMatthias Ringwald * @param combine_sleep_mode_and_lpm (modes 1,2,3,5,7) 1441eab6959fSMatthias Ringwald * @param enable_tristate_control_of_uart_tx_line (modes 1,2,7) 1442eab6959fSMatthias Ringwald * @param active_connection_handling_on_suspend (modes 3,5) 1443eab6959fSMatthias Ringwald * @param resume_timeout (modes 3,5) 1444eab6959fSMatthias Ringwald * @param enable_break_to_host (mode 12) 1445eab6959fSMatthias Ringwald * @param pulsed_host_wake (modes 1,12) 1446eab6959fSMatthias Ringwald */ 1447eab6959fSMatthias Ringwald const hci_cmd_t hci_bcm_set_sleep_mode = { 1448ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_BCM_SET_SLEEP_MODE, "111111111111" 1449eab6959fSMatthias Ringwald }; 14505cdaddfaSMatthias Ringwald 14515cdaddfaSMatthias Ringwald /** 14525cdaddfaSMatthias Ringwald * @brief Set TX Power Table 14535cdaddfaSMatthias Ringwald * @param is_le 0=classic, 1=LE 14545cdaddfaSMatthias Ringwald * @param chip_max_tx_pwr_db chip level max TX power in dBM 14555cdaddfaSMatthias Ringwald */ 14565cdaddfaSMatthias Ringwald const hci_cmd_t hci_bcm_write_tx_power_table = { 1457ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_BCM_WRITE_TX_POWER_TABLE, "11" 14585cdaddfaSMatthias Ringwald }; 14595cdaddfaSMatthias Ringwald 14605cdaddfaSMatthias Ringwald const hci_cmd_t hci_bcm_set_tx_pwr = { 1461ea5cc3a8SMatthias Ringwald HCI_OPCODE_HCI_BCM_SET_TX_PWR, "11H" 14625cdaddfaSMatthias Ringwald }; 1463ba39ed56SMatthias Ringwald 1464ba39ed56SMatthias Ringwald /** 1465ba39ed56SMatthias Ringwald * 1466ba39ed56SMatthias Ringwald * 1467ba39ed56SMatthias Ringwald * @brief This command tests the RF transceiver in continuous transmission mode. 1468ba39ed56SMatthias Ringwald * The transmitter is activated by configuring the transmission parameters such as pattern, 1469ba39ed56SMatthias Ringwald * modulation, and frequency. 1470ba39ed56SMatthias Ringwald * @see processors.wiki.ti.com/index.php/CC256x_VS_HCI_Commands#HCI_VS_DRPb_Tester_Con_TX.280xFD84.29 1471ba39ed56SMatthias Ringwald * @param modulation 1472ba39ed56SMatthias Ringwald * @param test_patern 1473ba39ed56SMatthias Ringwald * @param frequency 1474ba39ed56SMatthias Ringwald * @param power_level 1475ba39ed56SMatthias Ringwald * @param reserved1 1476ba39ed56SMatthias Ringwald * @param reserved2 1477ba39ed56SMatthias Ringwald */ 1478ba39ed56SMatthias Ringwald const hci_cmd_t hci_ti_drpb_tester_con_tx = { 1479ba39ed56SMatthias Ringwald 0xFD84, "111144" 1480ba39ed56SMatthias Ringwald }; 1481ba39ed56SMatthias Ringwald 1482ba39ed56SMatthias Ringwald /** 1483ba39ed56SMatthias Ringwald * @brief This command starts sending/receiving packets using packet transmission parameters such as 1484ba39ed56SMatthias Ringwald * frequency channel, packet type, and packet length. It is used for Packet TX/RX. 1485ba39ed56SMatthias Ringwald * @see processors.wiki.ti.com/index.php/CC256x_VS_HCI_Commands#HCI_VS_DRPb_Tester_Packet_TX_RX_.280xFD85.29 1486ba39ed56SMatthias Ringwald * @param frequency_mode 1487ba39ed56SMatthias Ringwald * @param tx_single_frequency 1488ba39ed56SMatthias Ringwald * @param rx_single_frequency 1489ba39ed56SMatthias Ringwald * @param acl_packet_type 1490ba39ed56SMatthias Ringwald * @paarm acl_packet_data_pattern 1491ba39ed56SMatthias Ringwald * @param reserved 1492ba39ed56SMatthias Ringwald * @param power_level 1493ba39ed56SMatthias Ringwald * @param disable_whitening 1494ba39ed56SMatthias Ringwald * @param prbs9_initialization_value 1495ba39ed56SMatthias Ringwald */ 1496ba39ed56SMatthias Ringwald const hci_cmd_t hci_ti_drpb_tester_packet_tx_rx = { 1497ba39ed56SMatthias Ringwald 0xFD85, "1111112112" 1498ba39ed56SMatthias Ringwald }; 1499365a7dd1SMatthias Ringwald 1500365a7dd1SMatthias Ringwald /** 1501365a7dd1SMatthias Ringwald * @brief This command is used to associate the requested ACL handle with Wide Band Speech configuration. 1502365a7dd1SMatthias Ringwald * @param enable 0=disable, 1=enable 1503365a7dd1SMatthias Ringwald * @param a3dp_role (NL5500, WL128x only) 0=source,1=sink 1504365a7dd1SMatthias Ringwald * @param code_upload (NL5500, WL128x only) 0=do not load a3dp code, 1=load a3dp code 1505365a7dd1SMatthias Ringwald * @param reserved for future use 1506365a7dd1SMatthias Ringwald */ 1507365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_avrp_enable = { 1508365a7dd1SMatthias Ringwald 0xFD92, "1112" 1509365a7dd1SMatthias Ringwald }; 1510365a7dd1SMatthias Ringwald 1511365a7dd1SMatthias Ringwald /** 1512365a7dd1SMatthias Ringwald * @brief This command is used to associate the requested ACL handle with Wide Band Speech configuration. 1513365a7dd1SMatthias Ringwald * @param acl_con_handle 1514365a7dd1SMatthias Ringwald */ 1515365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_wbs_associate = { 1516365a7dd1SMatthias Ringwald 0xFD78, "H" 1517365a7dd1SMatthias Ringwald }; 1518365a7dd1SMatthias Ringwald 1519365a7dd1SMatthias Ringwald /** 1520365a7dd1SMatthias Ringwald * @brief This command is used to disassociate Wide Band Speech configuration from any ACL handle. 1521365a7dd1SMatthias Ringwald */ 1522365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_wbs_disassociate = { 1523365a7dd1SMatthias Ringwald 0xFD79, "" 1524365a7dd1SMatthias Ringwald }; 1525365a7dd1SMatthias Ringwald 1526365a7dd1SMatthias Ringwald /** 1527365a7dd1SMatthias Ringwald * @brief This command configures the codec interface parameters and the PCM clock rate, which is relevant when 1528365a7dd1SMatthias Ringwald the Bluetooth core generates the clock. This command must be used by the host to use the PCM 1529365a7dd1SMatthias Ringwald interface. 1530365a7dd1SMatthias Ringwald * @param clock_rate in kHz 1531365a7dd1SMatthias Ringwald * @param clock_direction 0=master/output, 1=slave/input 1532365a7dd1SMatthias Ringwald * @param frame_sync_frequency in Hz 1533365a7dd1SMatthias Ringwald * @param frame_sync_duty_cycle 0=50% (I2S Format), 0x0001-0xffff number of cycles of PCM clock 1534365a7dd1SMatthias Ringwald * @param frame_sync_edge 0=driven/sampled at rising edge, 1=driven/sampled at falling edge of PCM clock 1535365a7dd1SMatthias Ringwald * @param frame_sync_polariy 0=active high, 1=active low 1536365a7dd1SMatthias Ringwald * @param reserved1 1537365a7dd1SMatthias Ringwald * @param channel_1_data_out_size sample size in bits 1538365a7dd1SMatthias Ringwald * @param channel_1_data_out_offset number of PCM clock cycles between rising of frame sync and data start 1539365a7dd1SMatthias Ringwald * @param channel_1_data_out_edge 0=data driven at rising edge, 1=data driven at falling edge of PCM clock 1540365a7dd1SMatthias Ringwald * @param channel_1_data_in_size sample size in bits 1541365a7dd1SMatthias Ringwald * @param channel_1_data_in_offset number of PCM clock cycles between rising of frame sync and data start 1542365a7dd1SMatthias Ringwald * @param channel_1_data_in_edge 0=data sampled at rising edge, 1=data sampled at falling edge of PCM clock 1543365a7dd1SMatthias Ringwald * @param fsync_multiplier this field is only relevant to CC256XB from service pack 0.2 !!! -> use 0x00 1544365a7dd1SMatthias Ringwald * @param channel_2_data_out_size sample size in bits 1545365a7dd1SMatthias Ringwald * @param channel_2_data_out_offset number of PCM clock cycles between rising of frame sync and data start 1546365a7dd1SMatthias Ringwald * @param channel_2_data_out_edge 0=data driven at rising edge, 1=data driven at falling edge of PCM clock 1547365a7dd1SMatthias Ringwald * @param channel_2_data_in_size sample size in bits 1548365a7dd1SMatthias Ringwald * @param channel_2_data_in_offset number of PCM clock cycles between rising of frame sync and data start 1549365a7dd1SMatthias Ringwald * @param channel_2_data_in_edge 0=data sampled at rising edge, 1=data sampled at falling edge of PCM clock 1550365a7dd1SMatthias Ringwald * @param reserved2 1551365a7dd1SMatthias Ringwald * 1552365a7dd1SMatthias Ringwald */ 1553365a7dd1SMatthias Ringwald const hci_cmd_t hci_ti_write_codec_config = { 1554365a7dd1SMatthias Ringwald 0xFD06, "214211122122112212211" 1555365a7dd1SMatthias Ringwald }; 1556