The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.
Dependents: hello SerialTestv11 SerialTestv12 Sierpinski ... more
mbed 2
This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.
TARGET_ARM_BEETLE_SOC/TOOLCHAIN_GCC_ARM/hci_defs.h
- Committer:
- AnnaBridge
- Date:
- 2019-02-20
- Revision:
- 172:65be27845400
- Parent:
- 171:3a7713b1edbc
File content as of revision 172:65be27845400:
/*************************************************************************************************/ /*! * \file hci_defs.h * * \brief HCI constants and definitions from the Bluetooth specification. * * $Date: 2016-04-18 22:05:04 -0700 (Mon, 18 Apr 2016) $ * $Revision: 6857 $ * * Copyright (c) 2009 Wicentric, Inc., all rights reserved. * Wicentric confidential and proprietary. * * IMPORTANT. Your use of this file is governed by a Software License Agreement * ("Agreement") that must be accepted in order to download or otherwise receive a * copy of this file. You may not use or copy this file for any purpose other than * as described in the Agreement. If you do not agree to all of the terms of the * Agreement do not use this file and delete all copies in your possession or control; * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior * to any use, copying or further distribution of this software. */ /*************************************************************************************************/ #ifndef HCI_DEFS_H #define HCI_DEFS_H #ifdef __cplusplus extern "C" { #endif /*! Packet definitions */ #define HCI_CMD_HDR_LEN 3 /*! Command packet header length */ #define HCI_ACL_HDR_LEN 4 /*! ACL packet header length */ #define HCI_EVT_HDR_LEN 2 /*! Event packet header length */ #define HCI_EVT_PARAM_MAX_LEN 255 /*! Maximum length of event packet parameters */ #define HCI_ACL_DEFAULT_LEN 27 /*! Default maximum ACL packet length */ #define HCI_PB_FLAG_MASK 0x3000 /*! ACL packet boundary flag mask */ #define HCI_PB_START_H2C 0x0000 /*! Packet boundary flag, start, host-to-controller */ #define HCI_PB_CONTINUE 0x1000 /*! Packet boundary flag, continue */ #define HCI_PB_START_C2H 0x2000 /*! Packet boundary flag, start, controller-to-host */ #define HCI_HANDLE_MASK 0x0FFF /*! Mask for handle bits in ACL packet */ #define HCI_HANDLE_NONE 0xFFFF /*! Value for invalid handle */ /*! Packet types */ #define HCI_CMD_TYPE 1 /*! HCI command packet */ #define HCI_ACL_TYPE 2 /*! HCI ACL data packet */ #define HCI_EVT_TYPE 4 /*! HCI event packet */ /*! Error codes */ #define HCI_SUCCESS 0x00 /*! Success */ #define HCI_ERR_UNKNOWN_CMD 0x01 /*! Unknown HCI command */ #define HCI_ERR_UNKNOWN_HANDLE 0x02 /*! Unknown connection identifier */ #define HCI_ERR_HARDWARE_FAILURE 0x03 /*! Hardware failure */ #define HCI_ERR_PAGE_TIMEOUT 0x04 /*! Page timeout */ #define HCI_ERR_AUTH_FAILURE 0x05 /*! Authentication failure */ #define HCI_ERR_KEY_MISSING 0x06 /*! PIN or key missing */ #define HCI_ERR_MEMORY_EXCEEDED 0x07 /*! Memory capacity exceeded */ #define HCI_ERR_CONN_TIMEOUT 0x08 /*! Connection timeout */ #define HCI_ERR_CONN_LIMIT 0x09 /*! Connection limit exceeded */ #define HCI_ERR_SYNCH_CONN_LIMIT 0x0A /*! Synchronous connection limit exceeded */ #define HCI_ERR_ACL_CONN_EXISTS 0x0B /*! ACL connection already exists */ #define HCI_ERR_CMD_DISALLOWED 0x0C /*! Command disallowed */ #define HCI_ERR_REJ_RESOURCES 0x0D /*! Connection rejected limited resources */ #define HCI_ERR_REJ_SECURITY 0x0E /*! Connection rejected security reasons */ #define HCI_ERR_REJ_BD_ADDR 0x0F /*! Connection rejected unacceptable BD_ADDR */ #define HCI_ERR_ACCEPT_TIMEOUT 0x10 /*! Connection accept timeout exceeded */ #define HCI_ERR_UNSUP_FEAT 0x11 /*! Unsupported feature or parameter value */ #define HCI_ERR_INVALID_PARAM 0x12 /*! Invalid HCI command parameters */ #define HCI_ERR_REMOTE_TERMINATED 0x13 /*! Remote user terminated connection */ #define HCI_ERR_REMOTE_RESOURCES 0x14 /*! Remote device low resources */ #define HCI_ERR_REMOTE_POWER_OFF 0x15 /*! Remote device power off */ #define HCI_ERR_LOCAL_TERMINATED 0x16 /*! Connection terminated by local host */ #define HCI_ERR_REPEATED_ATTEMPTS 0x17 /*! Repeated attempts */ #define HCI_ERR_PAIRING_NOT_ALLOWED 0x18 /*! Pairing not allowed */ #define HCI_ERR_UNKNOWN_LMP_PDU 0x19 /*! Unknown LMP PDU */ #define HCI_ERR_UNSUP_REMOTE_FEAT 0x1A /*! Unsupported remote feature */ #define HCI_ERR_SCO_OFFSET 0x1B /*! SCO offset rejected */ #define HCI_ERR_SCO_INTERVAL 0x1C /*! SCO interval rejected */ #define HCI_ERR_SCO_MODE 0x1D /*! SCO air mode rejected */ #define HCI_ERR_LMP_PARAM 0x1E /*! Invalid LMP parameters */ #define HCI_ERR_UNSPECIFIED 0x1F /*! Unspecified error */ #define HCI_ERR_UNSUP_LMP_PARAM 0x20 /*! Unsupported LMP parameter value */ #define HCI_ERR_ROLE_CHANGE 0x21 /*! Role change not allowed */ #define HCI_ERR_LL_RESP_TIMEOUT 0x22 /*! LL response timeout */ #define HCI_ERR_LMP_COLLISION 0x23 /*! LMP error transaction collision */ #define HCI_ERR_LMP_PDU 0x24 /*! LMP pdu not allowed */ #define HCI_ERR_ENCRYPT_MODE 0x25 /*! Encryption mode not acceptable */ #define HCI_ERR_LINK_KEY 0x26 /*! Link key can not be changed */ #define HCI_ERR_UNSUP_QOS 0x27 /*! Requested qos not supported */ #define HCI_ERR_INSTANT_PASSED 0x28 /*! Instant passed */ #define HCI_ERR_UNSUP_UNIT_KEY 0x29 /*! Pairing with unit key not supported */ #define HCI_ERR_TRANSACT_COLLISION 0x2A /*! Different transaction collision */ #define HCI_ERR_CHANNEL_CLASS 0x2E /*! Channel classification not supported */ #define HCI_ERR_MEMORY 0x2F /*! Insufficient security */ #define HCI_ERR_PARAMETER_RANGE 0x30 /*! Parameter out of mandatory range */ #define HCI_ERR_ROLE_SWITCH_PEND 0x32 /*! Role switch pending */ #define HCI_ERR_RESERVED_SLOT 0x34 /*! Reserved slot violation */ #define HCI_ERR_ROLE_SWITCH 0x35 /*! Role switch failed */ #define HCI_ERR_INQ_TOO_LARGE 0x36 /*! Extended inquiry response too large */ #define HCI_ERR_UNSUP_SSP 0x37 /*! Secure simple pairing not supported by host */ #define HCI_ERR_HOST_BUSY_PAIRING 0x38 /*! Host busy - pairing */ #define HCI_ERR_NO_CHANNEL 0x39 /*! Connection rejected no suitable channel */ #define HCI_ERR_CONTROLLER_BUSY 0x3A /*! Controller busy */ #define HCI_ERR_CONN_INTERVAL 0x3B /*! Unacceptable connection interval */ #define HCI_ERR_ADV_TIMEOUT 0x3C /*! Directed advertising timeout */ #define HCI_ERR_MIC_FAILURE 0x3D /*! Connection terminated due to MIC failure */ #define HCI_ERR_CONN_FAIL 0x3E /*! Connection failed to be established */ #define HCI_ERR_MAC_CONN_FAIL 0x3F /*! MAC connection failed */ /*! Command groups */ #define HCI_OGF_NOP 0x00 /*! No operation */ #define HCI_OGF_LINK_CONTROL 0x01 /*! Link control */ #define HCI_OGF_LINK_POLICY 0x02 /*! Link policy */ #define HCI_OGF_CONTROLLER 0x03 /*! Controller and baseband */ #define HCI_OGF_INFORMATIONAL 0x04 /*! Informational parameters */ #define HCI_OGF_STATUS 0x05 /*! Status parameters */ #define HCI_OGF_TESTING 0x06 /*! Testing */ #define HCI_OGF_LE_CONTROLLER 0x08 /*! LE controller */ #define HCI_OGF_VENDOR_SPEC 0x3F /*! Vendor specific */ /*! NOP command */ #define HCI_OCF_NOP 0x00 /*! Link control commands */ #define HCI_OCF_DISCONNECT 0x06 #define HCI_OCF_READ_REMOTE_VER_INFO 0x1D /*! Link policy commands (none used for LE) */ /*! Controller and baseband commands */ #define HCI_OCF_SET_EVENT_MASK 0x01 #define HCI_OCF_RESET 0x03 #define HCI_OCF_READ_TX_PWR_LVL 0x2D #define HCI_OCF_SET_CONTROLLER_TO_HOST_FC 0x31 #define HCI_OCF_HOST_BUFFER_SIZE 0x33 #define HCI_OCF_HOST_NUM_CMPL_PKTS 0x35 #define HCI_OCF_SET_EVENT_MASK_PAGE2 0x63 #define HCI_OCF_READ_AUTH_PAYLOAD_TO 0x7B #define HCI_OCF_WRITE_AUTH_PAYLOAD_TO 0x7C /*! Informational commands */ #define HCI_OCF_READ_LOCAL_VER_INFO 0x01 #define HCI_OCF_READ_LOCAL_SUP_CMDS 0x02 #define HCI_OCF_READ_LOCAL_SUP_FEAT 0x03 #define HCI_OCF_READ_BUF_SIZE 0x05 #define HCI_OCF_READ_BD_ADDR 0x09 /*! Status commands */ #define HCI_OCF_READ_RSSI 0x05 /*! LE controller commands */ #define HCI_OCF_LE_SET_EVENT_MASK 0x01 #define HCI_OCF_LE_READ_BUF_SIZE 0x02 #define HCI_OCF_LE_READ_LOCAL_SUP_FEAT 0x03 #define HCI_OCF_LE_SET_RAND_ADDR 0x05 #define HCI_OCF_LE_SET_ADV_PARAM 0x06 #define HCI_OCF_LE_READ_ADV_TX_POWER 0x07 #define HCI_OCF_LE_SET_ADV_DATA 0x08 #define HCI_OCF_LE_SET_SCAN_RESP_DATA 0x09 #define HCI_OCF_LE_SET_ADV_ENABLE 0x0A #define HCI_OCF_LE_SET_SCAN_PARAM 0x0B #define HCI_OCF_LE_SET_SCAN_ENABLE 0x0C #define HCI_OCF_LE_CREATE_CONN 0x0D #define HCI_OCF_LE_CREATE_CONN_CANCEL 0x0E #define HCI_OCF_LE_READ_WHITE_LIST_SIZE 0x0F #define HCI_OCF_LE_CLEAR_WHITE_LIST 0x10 #define HCI_OCF_LE_ADD_DEV_WHITE_LIST 0x11 #define HCI_OCF_LE_REMOVE_DEV_WHITE_LIST 0x12 #define HCI_OCF_LE_CONN_UPDATE 0x13 #define HCI_OCF_LE_SET_HOST_CHAN_CLASS 0x14 #define HCI_OCF_LE_READ_CHAN_MAP 0x15 #define HCI_OCF_LE_READ_REMOTE_FEAT 0x16 #define HCI_OCF_LE_ENCRYPT 0x17 #define HCI_OCF_LE_RAND 0x18 #define HCI_OCF_LE_START_ENCRYPTION 0x19 #define HCI_OCF_LE_LTK_REQ_REPL 0x1A #define HCI_OCF_LE_LTK_REQ_NEG_REPL 0x1B #define HCI_OCF_LE_READ_SUP_STATES 0x1C #define HCI_OCF_LE_RECEIVER_TEST 0x1D #define HCI_OCF_LE_TRANSMITTER_TEST 0x1E #define HCI_OCF_LE_TEST_END 0x1F /* New in version 4.1 */ #define HCI_OCF_LE_REM_CONN_PARAM_REP 0x20 #define HCI_OCF_LE_REM_CONN_PARAM_NEG_REP 0x21 /* New in version 4.2 */ #define HCI_OCF_LE_SET_DATA_LEN 0x22 #define HCI_OCF_LE_READ_DEF_DATA_LEN 0x23 #define HCI_OCF_LE_WRITE_DEF_DATA_LEN 0x24 #define HCI_OCF_LE_READ_LOCAL_P256_PUB_KEY 0x25 #define HCI_OCF_LE_GENERATE_DHKEY 0x26 #define HCI_OCF_LE_ADD_DEV_RES_LIST 0x27 #define HCI_OCF_LE_REMOVE_DEV_RES_LIST 0x28 #define HCI_OCF_LE_CLEAR_RES_LIST 0x29 #define HCI_OCF_LE_READ_RES_LIST_SIZE 0x2A #define HCI_OCF_LE_READ_PEER_RES_ADDR 0x2B #define HCI_OCF_LE_READ_LOCAL_RES_ADDR 0x2C #define HCI_OCF_LE_SET_ADDR_RES_ENABLE 0x2D #define HCI_OCF_LE_SET_RES_PRIV_ADDR_TO 0x2E #define HCI_OCF_LE_READ_MAX_DATA_LEN 0x2F /*! Opcode manipulation macros */ #define HCI_OPCODE(ogf, ocf) (((ogf) << 10) + (ocf)) #define HCI_OGF(opcode) ((opcode) >> 10) #define HCI_OCF(opcode) ((opcode) & 0x03FF) /*! Command opcodes */ #define HCI_OPCODE_NOP HCI_OPCODE(HCI_OGF_NOP, HCI_OCF_NOP) #define HCI_OPCODE_DISCONNECT HCI_OPCODE(HCI_OGF_LINK_CONTROL, HCI_OCF_DISCONNECT) #define HCI_OPCODE_READ_REMOTE_VER_INFO HCI_OPCODE(HCI_OGF_LINK_CONTROL, HCI_OCF_READ_REMOTE_VER_INFO) #define HCI_OPCODE_SET_EVENT_MASK HCI_OPCODE(HCI_OGF_CONTROLLER, HCI_OCF_SET_EVENT_MASK) #define HCI_OPCODE_RESET HCI_OPCODE(HCI_OGF_CONTROLLER, HCI_OCF_RESET) #define HCI_OPCODE_READ_TX_PWR_LVL HCI_OPCODE(HCI_OGF_CONTROLLER, HCI_OCF_READ_TX_PWR_LVL) #define HCI_OPCODE_SET_EVENT_MASK_PAGE2 HCI_OPCODE(HCI_OGF_CONTROLLER, HCI_OCF_SET_EVENT_MASK_PAGE2) #define HCI_OPCODE_READ_AUTH_PAYLOAD_TO HCI_OPCODE(HCI_OGF_CONTROLLER, HCI_OCF_READ_AUTH_PAYLOAD_TO) #define HCI_OPCODE_WRITE_AUTH_PAYLOAD_TO HCI_OPCODE(HCI_OGF_CONTROLLER, HCI_OCF_WRITE_AUTH_PAYLOAD_TO) #define HCI_OPCODE_READ_LOCAL_VER_INFO HCI_OPCODE(HCI_OGF_INFORMATIONAL, HCI_OCF_READ_LOCAL_VER_INFO) #define HCI_OPCODE_READ_LOCAL_SUP_CMDS HCI_OPCODE(HCI_OGF_INFORMATIONAL, HCI_OCF_READ_LOCAL_SUP_CMDS) #define HCI_OPCODE_READ_LOCAL_SUP_FEAT HCI_OPCODE(HCI_OGF_INFORMATIONAL, HCI_OCF_READ_LOCAL_SUP_FEAT) #define HCI_OPCODE_READ_BUF_SIZE HCI_OPCODE(HCI_OGF_INFORMATIONAL, HCI_OCF_READ_BUF_SIZE) #define HCI_OPCODE_READ_BD_ADDR HCI_OPCODE(HCI_OGF_INFORMATIONAL, HCI_OCF_READ_BD_ADDR) #define HCI_OPCODE_READ_RSSI HCI_OPCODE(HCI_OGF_STATUS, HCI_OCF_READ_RSSI) #define HCI_OPCODE_LE_SET_EVENT_MASK HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_SET_EVENT_MASK) #define HCI_OPCODE_LE_READ_BUF_SIZE HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_READ_BUF_SIZE) #define HCI_OPCODE_LE_READ_LOCAL_SUP_FEAT HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_READ_LOCAL_SUP_FEAT) #define HCI_OPCODE_LE_SET_RAND_ADDR HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_SET_RAND_ADDR) #define HCI_OPCODE_LE_SET_ADV_PARAM HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_SET_ADV_PARAM) #define HCI_OPCODE_LE_READ_ADV_TX_POWER HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_READ_ADV_TX_POWER) #define HCI_OPCODE_LE_SET_ADV_DATA HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_SET_ADV_DATA) #define HCI_OPCODE_LE_SET_SCAN_RESP_DATA HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_SET_SCAN_RESP_DATA) #define HCI_OPCODE_LE_SET_ADV_ENABLE HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_SET_ADV_ENABLE) #define HCI_OPCODE_LE_SET_SCAN_PARAM HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_SET_SCAN_PARAM) #define HCI_OPCODE_LE_SET_SCAN_ENABLE HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_SET_SCAN_ENABLE) #define HCI_OPCODE_LE_CREATE_CONN HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_CREATE_CONN) #define HCI_OPCODE_LE_CREATE_CONN_CANCEL HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_CREATE_CONN_CANCEL) #define HCI_OPCODE_LE_READ_WHITE_LIST_SIZE HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_READ_WHITE_LIST_SIZE) #define HCI_OPCODE_LE_CLEAR_WHITE_LIST HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_CLEAR_WHITE_LIST) #define HCI_OPCODE_LE_ADD_DEV_WHITE_LIST HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_ADD_DEV_WHITE_LIST) #define HCI_OPCODE_LE_REMOVE_DEV_WHITE_LIST HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_REMOVE_DEV_WHITE_LIST) #define HCI_OPCODE_LE_CONN_UPDATE HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_CONN_UPDATE) #define HCI_OPCODE_LE_SET_HOST_CHAN_CLASS HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_SET_HOST_CHAN_CLASS) #define HCI_OPCODE_LE_READ_CHAN_MAP HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_READ_CHAN_MAP) #define HCI_OPCODE_LE_READ_REMOTE_FEAT HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_READ_REMOTE_FEAT) #define HCI_OPCODE_LE_ENCRYPT HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_ENCRYPT) #define HCI_OPCODE_LE_RAND HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_RAND) #define HCI_OPCODE_LE_START_ENCRYPTION HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_START_ENCRYPTION) #define HCI_OPCODE_LE_LTK_REQ_REPL HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_LTK_REQ_REPL) #define HCI_OPCODE_LE_LTK_REQ_NEG_REPL HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_LTK_REQ_NEG_REPL) #define HCI_OPCODE_LE_READ_SUP_STATES HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_READ_SUP_STATES) #define HCI_OPCODE_LE_RECEIVER_TEST HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_RECEIVER_TEST) #define HCI_OPCODE_LE_TRANSMITTER_TEST HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_TRANSMITTER_TEST) #define HCI_OPCODE_LE_TEST_END HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_TEST_END) #define HCI_OPCODE_LE_REM_CONN_PARAM_REP HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_REM_CONN_PARAM_REP) #define HCI_OPCODE_LE_REM_CONN_PARAM_NEG_REP HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_REM_CONN_PARAM_NEG_REP) #define HCI_OPCODE_LE_SET_DATA_LEN HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_SET_DATA_LEN) #define HCI_OPCODE_LE_READ_DEF_DATA_LEN HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_READ_DEF_DATA_LEN) #define HCI_OPCODE_LE_WRITE_DEF_DATA_LEN HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_WRITE_DEF_DATA_LEN) #define HCI_OPCODE_LE_READ_LOCAL_P256_PUB_KEY HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_READ_LOCAL_P256_PUB_KEY) #define HCI_OPCODE_LE_GENERATE_DHKEY HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_GENERATE_DHKEY) #define HCI_OPCODE_LE_ADD_DEV_RES_LIST HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_ADD_DEV_RES_LIST) #define HCI_OPCODE_LE_REMOVE_DEV_RES_LIST HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_REMOVE_DEV_RES_LIST) #define HCI_OPCODE_LE_CLEAR_RES_LIST HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_CLEAR_RES_LIST) #define HCI_OPCODE_LE_READ_RES_LIST_SIZE HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_READ_RES_LIST_SIZE) #define HCI_OPCODE_LE_READ_PEER_RES_ADDR HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_READ_PEER_RES_ADDR) #define HCI_OPCODE_LE_READ_LOCAL_RES_ADDR HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_READ_LOCAL_RES_ADDR) #define HCI_OPCODE_LE_SET_ADDR_RES_ENABLE HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_SET_ADDR_RES_ENABLE) #define HCI_OPCODE_LE_SET_RES_PRIV_ADDR_TO HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_SET_RES_PRIV_ADDR_TO) #define HCI_OPCODE_LE_READ_MAX_DATA_LEN HCI_OPCODE(HCI_OGF_LE_CONTROLLER, HCI_OCF_LE_READ_MAX_DATA_LEN) /*! Command parameter lengths */ #define HCI_LEN_NOP 0 #define HCI_LEN_DISCONNECT 3 #define HCI_LEN_READ_REMOTE_VER_INFO 2 #define HCI_LEN_SET_EVENT_MASK 8 #define HCI_LEN_SET_EVENT_MASK_PAGE2 8 #define HCI_LEN_RESET 0 #define HCI_LEN_READ_TX_PWR_LVL 3 #define HCI_LEN_SET_CONTROLLER_TO_HOST_FC 1 #define HCI_LEN_HOST_BUFFER_SIZE 8 #define HCI_LEN_HOST_NUM_CMPL_PKTS 1 #define HCI_LEN_READ_LOCAL_VER_INFO 0 #define HCI_LEN_READ_LOCAL_SUP_CMDS 0 #define HCI_LEN_READ_LOCAL_SUP_FEAT 0 #define HCI_LEN_READ_BUF_SIZE 0 #define HCI_LEN_READ_BD_ADDR 0 #define HCI_LEN_READ_RSSI 2 #define HCI_LEN_READ_AUTH_PAYLOAD_TO 2 #define HCI_LEN_WRITE_AUTH_PAYLOAD_TO 4 #define HCI_LEN_LE_SET_EVENT_MASK 8 #define HCI_LEN_LE_READ_BUF_SIZE 0 #define HCI_LEN_LE_READ_LOCAL_SUP_FEAT 0 #define HCI_LEN_LE_SET_RAND_ADDR 6 #define HCI_LEN_LE_SET_ADV_PARAM 15 #define HCI_LEN_LE_READ_ADV_TX_POWER 0 #define HCI_LEN_LE_SET_ADV_DATA 32 #define HCI_LEN_LE_SET_SCAN_RESP_DATA 32 #define HCI_LEN_LE_SET_ADV_ENABLE 1 #define HCI_LEN_LE_SET_SCAN_PARAM 7 #define HCI_LEN_LE_SET_SCAN_ENABLE 2 #define HCI_LEN_LE_CREATE_CONN 25 #define HCI_LEN_LE_CREATE_CONN_CANCEL 0 #define HCI_LEN_LE_READ_WHITE_LIST_SIZE 0 #define HCI_LEN_LE_CLEAR_WHITE_LIST 0 #define HCI_LEN_LE_ADD_DEV_WHITE_LIST 7 #define HCI_LEN_LE_REMOVE_DEV_WHITE_LIST 7 #define HCI_LEN_LE_CONN_UPDATE 14 #define HCI_LEN_LE_SET_HOST_CHAN_CLASS 5 #define HCI_LEN_LE_READ_CHAN_MAP 2 #define HCI_LEN_LE_READ_REMOTE_FEAT 2 #define HCI_LEN_LE_ENCRYPT 32 #define HCI_LEN_LE_RAND 0 #define HCI_LEN_LE_START_ENCRYPTION 28 #define HCI_LEN_LE_LTK_REQ_REPL 18 #define HCI_LEN_LE_LTK_REQ_NEG_REPL 2 #define HCI_LEN_LE_READ_SUP_STATES 0 #define HCI_LEN_LE_RECEIVER_TEST 1 #define HCI_LEN_LE_TRANSMITTER_TEST 3 #define HCI_LEN_LE_TEST_END 0 #define HCI_LEN_LE_READ_LOCAL_P256_PUB_KEY 0 #define HCI_LEN_LE_GENERATE_MAX_DATA 64 #define HCI_LEN_LE_ADD_DEV_RES_LIST 39 #define HCI_LEN_LE_REMOVE_DEV_RES_LIST 7 #define HCI_LEN_LE_CLEAR_RES_LIST 0 #define HCI_LEN_LE_READ_RES_LIST_SIZE 0 #define HCI_LEN_LE_READ_PEER_RES_ADDR 7 #define HCI_LEN_LE_READ_LOCAL_RES_ADDR 7 #define HCI_LEN_LE_SET_ADDR_RES_ENABLE 1 #define HCI_LEN_LE_SET_RES_PRIV_ADDR_TO 2 #define HCI_LEN_LE_REM_CONN_PARAM_REP 14 #define HCI_LEN_LE_REM_CONN_PARAM_NEG_REP 3 #define HCI_LEN_LE_SET_DATA_LEN 6 #define HCI_LEN_LE_READ_DEF_DATA_LEN 0 #define HCI_LEN_LE_WRITE_DEF_DATA_LEN 4 #define HCI_LEN_LE_READ_LOCAL_P256_PUB_KEY 0 #define HCI_LEN_LE_GENERATE_DHKEY 64 #define HCI_LEN_LE_READ_MAX_DATA_LEN 0 /*! Events */ #define HCI_DISCONNECT_CMPL_EVT 0x05 #define HCI_ENC_CHANGE_EVT 0x08 #define HCI_READ_REMOTE_VER_INFO_CMPL_EVT 0x0C #define HCI_CMD_CMPL_EVT 0x0E #define HCI_CMD_STATUS_EVT 0x0F #define HCI_HW_ERROR_EVT 0x10 #define HCI_NUM_CMPL_PKTS_EVT 0x13 #define HCI_DATA_BUF_OVERFLOW_EVT 0x1A #define HCI_ENC_KEY_REFRESH_CMPL_EVT 0x30 #define HCI_LE_META_EVT 0x3E #define HCI_AUTH_PAYLOAD_TIMEOUT_EVT 0x57 #define HCI_VENDOR_SPEC_EVT 0xFF /*! LE Subevents */ #define HCI_LE_CONN_CMPL_EVT 0x01 #define HCI_LE_ADV_REPORT_EVT 0x02 #define HCI_LE_CONN_UPDATE_CMPL_EVT 0x03 #define HCI_LE_READ_REMOTE_FEAT_CMPL_EVT 0x04 #define HCI_LE_LTK_REQ_EVT 0x05 /* New in version 4.1 */ #define HCI_LE_REM_CONN_PARAM_REQ_EVT 0x06 /* New in version 4.2 */ #define HCI_LE_DATA_LEN_CHANGE_EVT 0x07 #define HCI_LE_READ_LOCAL_P256_PUB_KEY_CMPL_EVT 0x08 #define HCI_LE_GENERATE_DHKEY_CMPL_EVT 0x09 #define HCI_LE_ENHANCED_CONN_CMPL_EVT 0x0A #define HCI_LE_DIRECT_ADV_REPORT_EVT 0x0B /*! Event parameter lengths */ #define HCI_LEN_DISCONNECT_CMPL 4 #define HCI_LEN_CMD_CMPL 3 #define HCI_LEN_CMD_STATUS 4 #define HCI_LEN_HW_ERR 1 #define HCI_LEN_ENC_CHANGE 4 #define HCI_LEN_LE_CONN_CMPL 19 #define HCI_LEN_LE_CONN_UPDATE_CMPL 9 #define HCI_LEN_LE_READ_REMOTE_FEAT_CMPL 12 #define HCI_LEN_LE_LTK_REQ 13 /*! Supported commands */ #define HCI_SUP_DISCONNECT 0x20 /*! Byte 0 */ #define HCI_SUP_READ_REMOTE_VER_INFO 0x80 /*! Byte 2 */ #define HCI_SUP_SET_EVENT_MASK 0x40 /*! Byte 5 */ #define HCI_SUP_RESET 0x80 /*! Byte 5 */ #define HCI_SUP_READ_TX_PWR_LVL 0x04 /*! Byte 10 */ #define HCI_SUP_READ_LOCAL_VER_INFO 0x08 /*! Byte 14 */ #define HCI_SUP_READ_LOCAL_SUP_FEAT 0x20 /*! Byte 14 */ #define HCI_SUP_READ_BD_ADDR 0x02 /*! Byte 15 */ #define HCI_SUP_READ_RSSI 0x20 /*! Byte 15 */ #define HCI_SUP_SET_EVENT_MASK_PAGE2 0x04 /*! Byte 22 */ #define HCI_SUP_LE_SET_EVENT_MASK 0x01 /*! Byte 25 */ #define HCI_SUP_LE_READ_BUF_SIZE 0x02 /*! Byte 25 */ #define HCI_SUP_LE_READ_LOCAL_SUP_FEAT 0x04 /*! Byte 25 */ #define HCI_SUP_LE_SET_RAND_ADDR 0x10 /*! Byte 25 */ #define HCI_SUP_LE_SET_ADV_PARAM 0x20 /*! Byte 25 */ #define HCI_SUP_LE_READ_ADV_TX_POWER 0x40 /*! Byte 25 */ #define HCI_SUP_LE_SET_ADV_DATA 0x80 /*! Byte 25 */ #define HCI_SUP_LE_SET_SCAN_RESP_DATA 0x01 /*! Byte 26 */ #define HCI_SUP_LE_SET_ADV_ENABLE 0x02 /*! Byte 26 */ #define HCI_SUP_LE_SET_SCAN_PARAM 0x04 /*! Byte 26 */ #define HCI_SUP_LE_SET_SCAN_ENABLE 0x08 /*! Byte 26 */ #define HCI_SUP_LE_CREATE_CONN 0x10 /*! Byte 26 */ #define HCI_SUP_LE_CREATE_CONN_CANCEL 0x20 /*! Byte 26 */ #define HCI_SUP_LE_READ_WHITE_LIST_SIZE 0x40 /*! Byte 26 */ #define HCI_SUP_LE_CLEAR_WHITE_LIST 0x80 /*! Byte 26 */ #define HCI_SUP_LE_ADD_DEV_WHITE_LIST 0x01 /*! Byte 27 */ #define HCI_SUP_LE_REMOVE_DEV_WHITE_LIST 0x02 /*! Byte 27 */ #define HCI_SUP_LE_CONN_UPDATE 0x04 /*! Byte 27 */ #define HCI_SUP_LE_SET_HOST_CHAN_CLASS 0x08 /*! Byte 27 */ #define HCI_SUP_LE_READ_CHAN_MAP 0x10 /*! Byte 27 */ #define HCI_SUP_LE_READ_REMOTE_FEAT 0x20 /*! Byte 27 */ #define HCI_SUP_LE_ENCRYPT 0x40 /*! Byte 27 */ #define HCI_SUP_LE_RAND 0x80 /*! Byte 27 */ #define HCI_SUP_LE_START_ENCRYPTION 0x01 /*! Byte 28 */ #define HCI_SUP_LE_LTK_REQ_REPL 0x02 /*! Byte 28 */ #define HCI_SUP_LE_LTK_REQ_NEG_REPL 0x04 /*! Byte 28 */ #define HCI_SUP_LE_READ_SUP_STATES 0x08 /*! Byte 28 */ #define HCI_SUP_LE_RECEIVER_TEST 0x10 /*! Byte 28 */ #define HCI_SUP_LE_TRANSMITTER_TEST 0x20 /*! Byte 28 */ #define HCI_SUP_LE_TEST_END 0x40 /*! Byte 28 */ #define HCI_SUP_READ_AUTH_PAYLOAD_TO 0x10 /*! Byte 32 */ #define HCI_SUP_WRITE_AUTH_PAYLOAD_TO 0x20 /*! Byte 32 */ #define HCI_SUP_LE_REM_CONN_PARAM_REQ_REPL 0x10 /*! Byte 33 */ #define HCI_SUP_LE_REM_CONN_PARAM_REQ_NEG_REPL 0x20 /*! Byte 33 */ #define HCI_SUP_LE_SET_DATA_LEN 0x40 /*! Byte 33 */ #define HCI_SUP_LE_READ_DEF_DATA_LEN 0x80 /*! Byte 33 */ #define HCI_SUP_LE_WRITE_DEF_DATA_LEN 0x01 /*! Byte 34 */ #define HCI_SUP_LE_READ_LOCAL_P256_PUB_KEY 0x02 /*! Byte 34 */ #define HCI_SUP_LE_GENERATE_DHKEY 0x04 /*! Byte 34 */ #define HCI_SUP_LE_ADD_DEV_RES_LIST_EVT 0x08 /*! Byte 34 */ #define HCI_SUP_LE_REMOVE_DEV_RES_LIST 0x10 /*! Byte 34 */ #define HCI_SUP_LE_CLEAR_RES_LIST 0x20 /*! Byte 34 */ #define HCI_SUP_LE_READ_RES_LIST_SIZE 0x40 /*! Byte 34 */ #define HCI_SUP_LE_READ_PEER_RES_ADDR 0x80 /*! Byte 34 */ #define HCI_SUP_LE_READ_LOCAL_RES_ADDR 0x01 /*! Byte 35 */ #define HCI_SUP_LE_SET_ADDR_RES_ENABLE 0x02 /*! Byte 35 */ #define HCI_SUP_LE_SET_RES_PRIV_ADDR_TO 0x04 /*! Byte 35 */ #define HCI_SUP_LE_READ_MAX_DATA_LEN 0x08 /*! Byte 35 */ /*! Event mask */ #define HCI_EVT_MASK_DISCONNECT_CMPL 0x10 /*! Byte 0 */ #define HCI_EVT_MASK_ENC_CHANGE 0x80 /*! Byte 0 */ #define HCI_EVT_MASK_READ_REMOTE_VER_INFO_CMPL 0x08 /*! Byte 1 */ #define HCI_EVT_MASK_HW_ERROR 0x80 /*! Byte 1 */ #define HCI_EVT_MASK_DATA_BUF_OVERFLOW 0x02 /*! Byte 3 */ #define HCI_EVT_MASK_ENC_KEY_REFRESH_CMPL 0x80 /*! Byte 5 */ #define HCI_EVT_MASK_LE_META 0x20 /*! Byte 7 */ /*! Event mask page 2 */ #define HCI_EVT_MASK_AUTH_PAYLOAD_TIMEOUT 0x80 /*! Byte 2 */ /*! LE event mask */ #define HCI_EVT_MASK_LE_CONN_CMPL_EVT 0x01 /*! Byte 0 */ #define HCI_EVT_MASK_LE_ADV_REPORT_EVT 0x02 /*! Byte 0 */ #define HCI_EVT_MASK_LE_CONN_UPDATE_CMPL_EVT 0x04 /*! Byte 0 */ #define HCI_EVT_MASK_LE_READ_REMOTE_FEAT_CMPL_EVT 0x08 /*! Byte 0 */ #define HCI_EVT_MASK_LE_LTK_REQ_EVT 0x10 /*! Byte 0 */ #define HCI_EVT_MASK_LE_REMOTE_CONN_PARAM_REQ_EVT 0x20 /*! Byte 0 */ #define HCI_EVT_MASK_LE_DATA_LEN_CHANGE_EVT 0x40 /*! Byte 0 */ #define HCI_EVT_MASK_LE_READ_LOCAL_P256_PUB_KEY_CMPL 0x80 /*! Byte 0 */ #define HCI_EVT_MASK_LE_GENERATE_DHKEY_CMPL 0x01 /*! Byte 1 */ #define HCI_EVT_MASK_LE_ENHANCED_CONN_CMPL_EVT 0x02 /*! Byte 1 */ #define HCI_EVT_MASK_LE_DIRECT_ADV_REPORT_EVT 0x04 /*! Byte 1 */ /*! LE supported features */ #define HCI_LE_SUP_FEAT_ENCRYPTION 0x01 /*! Encryption supported */ #define HCI_LE_SUP_FEAT_CONN_PARAM_REQ_PROC 0x02 /*! Connection Parameters Request Procedure supported */ #define HCI_LE_SUP_FEAT_EXT_REJECT_IND 0x04 /*! Extended Reject Indication supported */ #define HCI_LE_SUP_FEAT_SLV_INIT_FEAT_EXCH 0x08 /*! Slave-Initiated Features Exchange supported */ #define HCI_LE_SUP_FEAT_LE_PING 0x10 /*! LE Ping supported */ #define HCI_LE_SUP_FEAT_DATA_LEN_EXT 0x20 /*! Data Length Extension supported */ #define HCI_LE_SUP_FEAT_PRIVACY 0x40 /*! LL Privacy supported */ #define HCI_LE_SUP_FEAT_EXT_SCAN_FILT_POLICY 0x80 /*! Extended Scan Filter Policy supported */ /*! Advertising command parameters */ #define HCI_ADV_MIN_INTERVAL 0x0020 /*! Minimum advertising interval */ #define HCI_ADV_NONCONN_MIN_INTERVAL 0x00A0 /*! Minimum nonconnectable adv. interval */ #define HCI_ADV_MAX_INTERVAL 0x4000 /*! Maximum advertising interval */ #define HCI_ADV_TYPE_CONN_UNDIRECT 0x00 /*! Connectable undirected advertising */ #define HCI_ADV_TYPE_CONN_DIRECT 0x01 /*! Connectable directed high duty cycle advertising */ #define HCI_ADV_TYPE_DISC_UNDIRECT 0x02 /*! Discoverable undirected advertising */ #define HCI_ADV_TYPE_NONCONN_UNDIRECT 0x03 /*! Nonconnectable undirected advertising */ #define HCI_ADV_TYPE_CONN_DIRECT_LO_DUTY 0x04 /*! Connectable directed low duty cycle advertising */ #define HCI_ADV_CHAN_37 0x01 /*! Advertising channel 37 */ #define HCI_ADV_CHAN_38 0x02 /*! Advertising channel 38 */ #define HCI_ADV_CHAN_39 0x04 /*! Advertising channel 39 */ #define HCI_ADV_FILT_NONE 0x00 /*! No scan request or connection filtering */ #define HCI_ADV_FILT_SCAN 0x01 /*! White list filters scan requests */ #define HCI_ADV_FILT_CONN 0x02 /*! White list filters connections */ #define HCI_ADV_FILT_ALL 0x03 /*! White list filters scan req. and conn. */ /*! Scan command parameters */ #define HCI_SCAN_TYPE_PASSIVE 0 /*! Passive scan */ #define HCI_SCAN_TYPE_ACTIVE 1 /*! Active scan */ #define HCI_SCAN_INTERVAL_MIN 0x0004 /*! Minimum scan interval */ #define HCI_SCAN_INTERVAL_MAX 0x4000 /*! Maximum scan interval */ #define HCI_SCAN_INTERVAL_DEFAULT 0x0010 /*! Default scan interval */ #define HCI_SCAN_WINDOW_MIN 0x0004 /*! Minimum scan window */ #define HCI_SCAN_WINDOW_MAX 0x4000 /*! Maximum scan window */ #define HCI_SCAN_WINDOW_DEFAULT 0x0010 /*! Default scan window */ /*! Connection command parameters */ #define HCI_CONN_INTERVAL_MIN 0x0006 /*! Minimum connection interval */ #define HCI_CONN_INTERVAL_MAX 0x0C80 /*! Maximum connection interval */ #define HCI_CONN_LATENCY_MAX 0x01F3 /*! Maximum connection latency */ #define HCI_SUP_TIMEOUT_MIN 0x000A /*! Minimum supervision timeout */ #define HCI_SUP_TIMEOUT_MAX 0x0C80 /*! Maximum supervision timeout */ /*! Connection event parameters */ #define HCI_ROLE_MASTER 0 /*! Role is master */ #define HCI_ROLE_SLAVE 1 /*! Role is slave */ #define HCI_CLOCK_500PPM 0x00 /*! 500 ppm clock accuracy */ #define HCI_CLOCK_250PPM 0x01 /*! 250 ppm clock accuracy */ #define HCI_CLOCK_150PPM 0x02 /*! 150 ppm clock accuracy */ #define HCI_CLOCK_100PPM 0x03 /*! 100 ppm clock accuracy */ #define HCI_CLOCK_75PPM 0x04 /*! 75 ppm clock accuracy */ #define HCI_CLOCK_50PPM 0x05 /*! 50 ppm clock accuracy */ #define HCI_CLOCK_30PPM 0x06 /*! 30 ppm clock accuracy */ #define HCI_CLOCK_20PPM 0x07 /*! 20 ppm clock accuracy */ /*! Advertising report event parameters */ #define HCI_ADV_CONN_UNDIRECT 0x00 /*! Connectable undirected advertising */ #define HCI_ADV_CONN_DIRECT 0x01 /*! Connectable directed advertising */ #define HCI_ADV_DISC_UNDIRECT 0x02 /*! Discoverable undirected advertising */ #define HCI_ADV_NONCONN_UNDIRECT 0x03 /*! Non-connectable undirected advertising */ #define HCI_ADV_SCAN_RESPONSE 0x04 /*! Scan response */ /*! Misc command parameters */ #define HCI_READ_TX_PWR_CURRENT 0 /*! Read current tx power */ #define HCI_READ_TX_PWR_MAX 1 /*! Read maximum tx power */ #define HCI_TX_PWR_MIN -30 /*! Minimum tx power dBm */ #define HCI_TX_PWR_MAX 20 /*! Maximum tx power dBm */ #define HCI_VERSION 6 /*! HCI specification version */ #define HCI_RSSI_MIN -127 /*! Minimum RSSI dBm */ #define HCI_RSSI_MAX 20 /*! Maximum RSSI dBm */ #define HCI_ADDR_TYPE_PUBLIC 0 /*! Public device address */ #define HCI_ADDR_TYPE_RANDOM 1 /*! Random device address */ #define HCI_ADDR_TYPE_PUBLIC_IDENTITY 2 /*! Public identity address. */ #define HCI_ADDR_TYPE_RANDOM_IDENTITY 3 /*! Random identity address. */ #define HCI_FILT_NONE 0 /*! Accept all advertising packets */ #define HCI_FILT_WHITE_LIST 1 /*! Accept from While List only */ #define HCI_FILT_RES_INIT 2 /*! Accept directed advertisements with RPAs */ #define HCI_FILT_WHITE_LIST_RES_INIT 3 /*! Accept from White List or directed advertisements with RPAs */ #define HCI_ROLE_MASTER 0 /*! Role is master */ #define HCI_ROLE_SLAVE 1 /*! Role is slave */ /*! Parameter lengths */ #define HCI_EVT_MASK_LEN 8 /*! Length of event mask byte array */ #define HCI_EVT_MASK_PAGE_2_LEN 8 /*! Length of event mask page 2 byte array */ #define HCI_LE_EVT_MASK_LEN 8 /*! Length of LE event mask byte array */ #define HCI_FEAT_LEN 8 /*! Length of features byte array */ #define HCI_ADV_DATA_LEN 31 /*! Length of advertising data */ #define HCI_SCAN_DATA_LEN 31 /*! Length of scan response data */ #define HCI_CHAN_MAP_LEN 5 /*! Length of channel map byte array */ #define HCI_KEY_LEN 16 /*! Length of encryption key */ #define HCI_ENCRYPT_DATA_LEN 16 /*! Length of data used in encryption */ #define HCI_RAND_LEN 8 /*! Length of random number */ #define HCI_LE_STATES_LEN 8 /*! Length of LE states byte array */ #define HCI_P256_KEY_LEN 64 /*! Length of P256 key */ #define HCI_DH_KEY_LEN 32 /*! Length of DH Key */ /*! Wicentric company ID */ #define HCI_ID_WICENTRIC 0x005F #ifdef __cplusplus }; #endif #endif /* HCI_DEFS_H */