nimble: Add defines for all Bluetooth 5.0 HCI commands and events

X-Original-Commit: 0c627e2bc01ec1d9d32cc706c2cbd61e600147d3
This commit is contained in:
Łukasz Rymanowski
2017-04-05 16:00:06 +02:00
parent 5c1c326e68
commit 2619a08659
3 changed files with 204 additions and 61 deletions
+1 -1
View File
@@ -619,7 +619,7 @@ ble_ll_hci_le_cmd_proc(uint8_t *cmdbuf, uint16_t ocf, uint8_t *rsplen)
/* Check the length to make sure it is valid */
cmdlen = g_ble_hci_le_cmd_len[ocf];
if (len != cmdlen) {
if (len != cmdlen && cmdlen != BLE_HCI_VARIABLE_LEN) {
goto ll_hci_le_cmd_exit;
}
+170 -58
View File
@@ -57,7 +57,7 @@ extern "C" {
* Number of LE commands. NOTE: this is really just used to size the array
* containing the lengths of the LE commands.
*/
#define BLE_HCI_NUM_LE_CMDS (48)
#define BLE_HCI_NUM_LE_CMDS (79)
/* List of OCF for Link Control commands (OGF=0x01) */
#define BLE_HCI_OCF_DISCONNECT_CMD (0x0006)
@@ -81,55 +81,89 @@ extern "C" {
#define BLE_HCI_OCF_RD_RSSI (0x0005)
/* List of OCF for LE commands (OGF = 0x08) */
#define BLE_HCI_OCF_LE_SET_EVENT_MASK (0x0001)
#define BLE_HCI_OCF_LE_RD_BUF_SIZE (0x0002)
#define BLE_HCI_OCF_LE_RD_LOC_SUPP_FEAT (0x0003)
#define BLE_HCI_OCF_LE_SET_EVENT_MASK (0x0001)
#define BLE_HCI_OCF_LE_RD_BUF_SIZE (0x0002)
#define BLE_HCI_OCF_LE_RD_LOC_SUPP_FEAT (0x0003)
/* NOTE: 0x0004 is intentionally left undefined */
#define BLE_HCI_OCF_LE_SET_RAND_ADDR (0x0005)
#define BLE_HCI_OCF_LE_SET_ADV_PARAMS (0x0006)
#define BLE_HCI_OCF_LE_RD_ADV_CHAN_TXPWR (0x0007)
#define BLE_HCI_OCF_LE_SET_ADV_DATA (0x0008)
#define BLE_HCI_OCF_LE_SET_SCAN_RSP_DATA (0x0009)
#define BLE_HCI_OCF_LE_SET_ADV_ENABLE (0x000A)
#define BLE_HCI_OCF_LE_SET_SCAN_PARAMS (0x000B)
#define BLE_HCI_OCF_LE_SET_SCAN_ENABLE (0x000C)
#define BLE_HCI_OCF_LE_CREATE_CONN (0x000D)
#define BLE_HCI_OCF_LE_CREATE_CONN_CANCEL (0x000E)
#define BLE_HCI_OCF_LE_RD_WHITE_LIST_SIZE (0x000F)
#define BLE_HCI_OCF_LE_CLEAR_WHITE_LIST (0x0010)
#define BLE_HCI_OCF_LE_ADD_WHITE_LIST (0x0011)
#define BLE_HCI_OCF_LE_RMV_WHITE_LIST (0x0012)
#define BLE_HCI_OCF_LE_CONN_UPDATE (0x0013)
#define BLE_HCI_OCF_LE_SET_HOST_CHAN_CLASS (0x0014)
#define BLE_HCI_OCF_LE_RD_CHAN_MAP (0x0015)
#define BLE_HCI_OCF_LE_RD_REM_FEAT (0x0016)
#define BLE_HCI_OCF_LE_ENCRYPT (0x0017)
#define BLE_HCI_OCF_LE_RAND (0x0018)
#define BLE_HCI_OCF_LE_START_ENCRYPT (0x0019)
#define BLE_HCI_OCF_LE_LT_KEY_REQ_REPLY (0x001A)
#define BLE_HCI_OCF_LE_LT_KEY_REQ_NEG_REPLY (0x001B)
#define BLE_HCI_OCF_LE_RD_SUPP_STATES (0x001C)
#define BLE_HCI_OCF_LE_RX_TEST (0x001D)
#define BLE_HCI_OCF_LE_TX_TEST (0x001E)
#define BLE_HCI_OCF_LE_TEST_END (0x001F)
#define BLE_HCI_OCF_LE_REM_CONN_PARAM_RR (0x0020)
#define BLE_HCI_OCF_LE_REM_CONN_PARAM_NRR (0x0021)
#define BLE_HCI_OCF_LE_SET_DATA_LEN (0x0022)
#define BLE_HCI_OCF_LE_RD_SUGG_DEF_DATA_LEN (0x0023)
#define BLE_HCI_OCF_LE_WR_SUGG_DEF_DATA_LEN (0x0024)
#define BLE_HCI_OCF_LE_RD_P256_PUBKEY (0x0025)
#define BLE_HCI_OCF_LE_GEN_DHKEY (0x0026)
#define BLE_HCI_OCF_LE_ADD_RESOLV_LIST (0x0027)
#define BLE_HCI_OCF_LE_RMV_RESOLV_LIST (0x0028)
#define BLE_HCI_OCF_LE_CLR_RESOLV_LIST (0x0029)
#define BLE_HCI_OCF_LE_RD_RESOLV_LIST_SIZE (0x002A)
#define BLE_HCI_OCF_LE_RD_PEER_RESOLV_ADDR (0x002B)
#define BLE_HCI_OCF_LE_RD_LOCAL_RESOLV_ADDR (0x002C)
#define BLE_HCI_OCF_LE_SET_ADDR_RES_EN (0x002D)
#define BLE_HCI_OCF_LE_SET_RPA_TMO (0x002E)
#define BLE_HCI_OCF_LE_RD_MAX_DATA_LEN (0x002F)
#define BLE_HCI_OCF_LE_SET_RAND_ADDR (0x0005)
#define BLE_HCI_OCF_LE_SET_ADV_PARAMS (0x0006)
#define BLE_HCI_OCF_LE_RD_ADV_CHAN_TXPWR (0x0007)
#define BLE_HCI_OCF_LE_SET_ADV_DATA (0x0008)
#define BLE_HCI_OCF_LE_SET_SCAN_RSP_DATA (0x0009)
#define BLE_HCI_OCF_LE_SET_ADV_ENABLE (0x000A)
#define BLE_HCI_OCF_LE_SET_SCAN_PARAMS (0x000B)
#define BLE_HCI_OCF_LE_SET_SCAN_ENABLE (0x000C)
#define BLE_HCI_OCF_LE_CREATE_CONN (0x000D)
#define BLE_HCI_OCF_LE_CREATE_CONN_CANCEL (0x000E)
#define BLE_HCI_OCF_LE_RD_WHITE_LIST_SIZE (0x000F)
#define BLE_HCI_OCF_LE_CLEAR_WHITE_LIST (0x0010)
#define BLE_HCI_OCF_LE_ADD_WHITE_LIST (0x0011)
#define BLE_HCI_OCF_LE_RMV_WHITE_LIST (0x0012)
#define BLE_HCI_OCF_LE_CONN_UPDATE (0x0013)
#define BLE_HCI_OCF_LE_SET_HOST_CHAN_CLASS (0x0014)
#define BLE_HCI_OCF_LE_RD_CHAN_MAP (0x0015)
#define BLE_HCI_OCF_LE_RD_REM_FEAT (0x0016)
#define BLE_HCI_OCF_LE_ENCRYPT (0x0017)
#define BLE_HCI_OCF_LE_RAND (0x0018)
#define BLE_HCI_OCF_LE_START_ENCRYPT (0x0019)
#define BLE_HCI_OCF_LE_LT_KEY_REQ_REPLY (0x001A)
#define BLE_HCI_OCF_LE_LT_KEY_REQ_NEG_REPLY (0x001B)
#define BLE_HCI_OCF_LE_RD_SUPP_STATES (0x001C)
#define BLE_HCI_OCF_LE_RX_TEST (0x001D)
#define BLE_HCI_OCF_LE_TX_TEST (0x001E)
#define BLE_HCI_OCF_LE_TEST_END (0x001F)
#define BLE_HCI_OCF_LE_REM_CONN_PARAM_RR (0x0020)
#define BLE_HCI_OCF_LE_REM_CONN_PARAM_NRR (0x0021)
#define BLE_HCI_OCF_LE_SET_DATA_LEN (0x0022)
#define BLE_HCI_OCF_LE_RD_SUGG_DEF_DATA_LEN (0x0023)
#define BLE_HCI_OCF_LE_WR_SUGG_DEF_DATA_LEN (0x0024)
#define BLE_HCI_OCF_LE_RD_P256_PUBKEY (0x0025)
#define BLE_HCI_OCF_LE_GEN_DHKEY (0x0026)
#define BLE_HCI_OCF_LE_ADD_RESOLV_LIST (0x0027)
#define BLE_HCI_OCF_LE_RMV_RESOLV_LIST (0x0028)
#define BLE_HCI_OCF_LE_CLR_RESOLV_LIST (0x0029)
#define BLE_HCI_OCF_LE_RD_RESOLV_LIST_SIZE (0x002A)
#define BLE_HCI_OCF_LE_RD_PEER_RESOLV_ADDR (0x002B)
#define BLE_HCI_OCF_LE_RD_LOCAL_RESOLV_ADDR (0x002C)
#define BLE_HCI_OCF_LE_SET_ADDR_RES_EN (0x002D)
#define BLE_HCI_OCF_LE_SET_RPA_TMO (0x002E)
#define BLE_HCI_OCF_LE_RD_MAX_DATA_LEN (0x002F)
#define BLE_HCI_OCF_LE_RD_PHY (0x0030)
#define BLE_HCI_OCF_LE_SET_DEFAULT_PHY (0x0031)
#define BLE_HCI_OCF_LE_SET_PHY (0x0032)
#define BLE_HCI_OCF_LE_ENH_RCVR_TEST (0x0033)
#define BLE_HCI_OCF_LE_ENH_TRANS_TEST (0x0034)
#define BLE_HCI_OCF_LE_SET_ADV_SET_RND_ADDR (0x0035)
#define BLE_HCI_OCF_LE_SET_EXT_ADV_PARAM (0x0036)
#define BLE_HCI_OCF_LE_SET_EXT_ADV_DATA (0x0037)
#define BLE_HCI_OCF_LE_SET_EXT_SCAN_RSP_DATA (0x0038)
#define BLE_HCI_OCF_LE_SET_EXT_ADV_ENABLE (0x0039)
#define BLE_HCI_OCF_LE_RD_MAX_ADV_DATA_LEN (0x003A)
#define BLE_HCI_OCF_LE_RD_NUM_OF_ADV_SETS (0x003B)
#define BLE_HCI_OCF_LE_REMOVE_ADV_SET (0x003C)
#define BLE_HCI_OCF_LE_CLEAR_ADV_SETS (0x003D)
#define BLE_HCI_OCF_LE_SET_PER_ADV_PARAMS (0x003E)
#define BLE_HCI_OCF_LE_SET_PER_ADV_DATA (0x003F)
#define BLE_HCI_OCF_LE_SET_PER_ADV_ENABLE (0x0040)
#define BLE_HCI_OCF_LE_SET_EXT_SCAN_PARAM (0x0041)
#define BLE_HCI_OCF_LE_SET_EXT_SCAN_ENABLE (0x0042)
#define BLE_HCI_OCF_LE_EXT_CREATE_CONN (0x0043)
#define BLE_HCI_OCF_LE_PER_ADV_CREATE_SYNC (0x0044)
#define BLE_HCI_OCF_LE_PER_ADV_CREATE_SYNC_CANCEL (0x0045)
#define BLE_HCI_OCF_LE_PER_ADV_TERM_SYNC (0x0046)
#define BLE_HCI_OCF_LE_ADD_DEV_TO_PER_ADV_LIST (0x0047)
#define BLE_HCI_OCF_LE_REM_DEV_FROM_PER_ADV_LIST (0x0048)
#define BLE_HCI_OCF_LE_CLEAR_PER_ADV_LIST (0x0049)
#define BLE_HCI_OCF_LE_RD_PER_ADV_LIST_SIZE (0x004A)
#define BLE_HCI_OCF_LE_RD_TRANSMIT_POWER (0x004B)
#define BLE_HCI_OCF_LE_RD_RF_PATH_COMPENSATION (0x004C)
#define BLE_HCI_OCF_LE_WR_RF_PATH_COMPENSATION (0x004D)
#define BLE_HCI_OCF_LE_SET_PRIVACY_MODE (0x004E)
/* Command Specific Definitions */
#define BLE_HCI_VARIABLE_LEN (0xFF)
/* --- Disconnect command (OGF 0x01, OCF 0x0006) --- */
#define BLE_HCI_DISCONNECT_CMD_LEN (3)
@@ -383,6 +417,75 @@ extern "C" {
/* --- LE read maximum data length (OCF 0x002F) */
#define BLE_HCI_RD_MAX_DATALEN_RSPLEN (8)
/* --- LE read maximum default PHY (OCF 0x0030) */
#define BLE_HCI_LE_RD_PHY_LEN (2)
/* --- LE set default PHY (OCF 0x0031) */
#define BLE_HCI_LE_SET_DEFAULT_PHY_LEN (3)
/* --- LE set PHY (OCF 0x0032) */
#define BLE_HCI_LE_SET_PHY_LEN (7)
/* --- LE enhanced receiver test (OCF 0x0033) */
#define BLE_HCI_LE_ENH_RCVR_TEST_LEN (3)
/* --- LE enhanced transmitter test (OCF 0x0034) */
#define BLE_HCI_LE_ENH_TRANS_TEST_LEN (4)
/* --- LE set advertising set random address (OCF 0x0035) */
#define BLE_HCI_LE_SET_ADV_SET_RND_ADDR_LEN (7)
/* --- LE set extended advertising parameters (OCF 0x0036) */
#define BLE_HCI_LE_SET_EXT_ADV_PARAM_LEN (25)
/* --- LE set extended advertising data (OCF 0x0037) */
#define BLE_HCI_LE_SET_EXT_ADV_DATA_LEN BLE_HCI_VARIABLE_LEN
/* --- LE set extended scan response data (OCF 0x0038) */
#define BLE_HCI_LE_SET_EXT_SCAN_RSP_DATA_LEN BLE_HCI_VARIABLE_LEN
/* --- LE set extended advertising enable (OCF 0x0039) */
#define BLE_HCI_LE_SET_EXT_ADV_ENABLE_LEN BLE_HCI_VARIABLE_LEN
/* --- LE remove advertising set (OCF 0x003C) */
#define BLE_HCI_LE_REMOVE_ADV_SET_LEN (1)
/* --- LE set periodic advertising parameters (OCF 0x003E) */
#define BLE_HCI_LE_SET_PER_ADV_PARAMS_LEN (7)
/* --- LE set periodic advertising data (OCF 0x003F) */
#define BLE_HCI_LE_SET_PER_ADV_DATA_LEN BLE_HCI_VARIABLE_LEN
/* --- LE periodic advertising enable (OCF 0x0040) */
#define BLE_HCI_LE_SET_PER_ADV_ENABLE_LEN (2)
/* --- LE set extended scan parameters (OCF 0x0041) */
#define BLE_HCI_LE_SET_EXT_SCAN_PARAM_LEN BLE_HCI_VARIABLE_LEN
/* --- LE set extended scan enable (OCF 0x0042) */
#define BLE_HCI_LE_SET_EXT_SCAN_ENABLE_LEN (6)
/* --- LE extended create connection (OCF 0x0043) */
#define BLE_HCI_LE_EXT_CREATE_CONN_LEN BLE_HCI_VARIABLE_LEN
/* --- LE periodic advertising create sync (OCF 0x0044) */
#define BLE_HCI_LE_PER_ADV_CREATE_SYNC_LEN (14)
/* --- LE periodic advertising terminate (OCF 0x0046) */
#define BLE_HCI_LE_PER_ADV_TERM_SYNC_LEN (2)
/* --- LE add device to periodic advertising list (OCF 0x0047) */
#define BLE_HCI_LE_ADD_DEV_TO_PER_ADV_LIST_LEN (8)
/* --- LE remove device from periodic advertising list (OCF 0x0048) */
#define BLE_HCI_LE_REM_DEV_FROM_PER_ADV_LIST_LEN (8)
/* --- LE write RF path (OCF 0x004D) */
#define BLE_HCI_LE_WR_RF_PATH_COMPENSATION_LEN (4)
/* --- LE set privacy mode (OCF 0x004E) */
#define BLE_HCI_LE_SET_PRIVACY_MODE_LEN (8)
/* Event Codes */
#define BLE_HCI_EVCODE_INQUIRY_CMP (0x01)
#define BLE_HCI_EVCODE_INQUIRY_RESULT (0x02)
@@ -463,17 +566,26 @@ extern "C" {
#define BLE_HCI_EVCODE_AUTH_PYLD_TMO (0x57)
/* LE sub-event codes */
#define BLE_HCI_LE_SUBEV_CONN_COMPLETE (0x01)
#define BLE_HCI_LE_SUBEV_ADV_RPT (0x02)
#define BLE_HCI_LE_SUBEV_CONN_UPD_COMPLETE (0x03)
#define BLE_HCI_LE_SUBEV_RD_REM_USED_FEAT (0x04)
#define BLE_HCI_LE_SUBEV_LT_KEY_REQ (0x05)
#define BLE_HCI_LE_SUBEV_REM_CONN_PARM_REQ (0x06)
#define BLE_HCI_LE_SUBEV_DATA_LEN_CHG (0x07)
#define BLE_HCI_LE_SUBEV_RD_LOC_P256_PUBKEY (0x08)
#define BLE_HCI_LE_SUBEV_GEN_DHKEY_COMPLETE (0x09)
#define BLE_HCI_LE_SUBEV_ENH_CONN_COMPLETE (0x0A)
#define BLE_HCI_LE_SUBEV_DIRECT_ADV_RPT (0x0B)
#define BLE_HCI_LE_SUBEV_CONN_COMPLETE (0x01)
#define BLE_HCI_LE_SUBEV_ADV_RPT (0x02)
#define BLE_HCI_LE_SUBEV_CONN_UPD_COMPLETE (0x03)
#define BLE_HCI_LE_SUBEV_RD_REM_USED_FEAT (0x04)
#define BLE_HCI_LE_SUBEV_LT_KEY_REQ (0x05)
#define BLE_HCI_LE_SUBEV_REM_CONN_PARM_REQ (0x06)
#define BLE_HCI_LE_SUBEV_DATA_LEN_CHG (0x07)
#define BLE_HCI_LE_SUBEV_RD_LOC_P256_PUBKEY (0x08)
#define BLE_HCI_LE_SUBEV_GEN_DHKEY_COMPLETE (0x09)
#define BLE_HCI_LE_SUBEV_ENH_CONN_COMPLETE (0x0A)
#define BLE_HCI_LE_SUBEV_DIRECT_ADV_RPT (0x0B)
#define BLE_HCI_LE_SUBEV_PHY_UPDATE_COMPLETE (0x0C)
#define BLE_HCI_LE_SUBEV_EXT_ADV_RPT (0x0D)
#define BLE_HCI_LE_SUBEV_PER_ADV_SYNC_ESTAB (0x0E)
#define BLE_HCI_LE_SUBEV_PER_ADV_RPT (0x0F)
#define BLE_HCI_LE_SUBEV_PER_ADV_SYNC_LOST (0x10)
#define BLE_HCI_LE_SUBEV_SCAN_TIMEOUT (0x11)
#define BLE_HCI_LE_SUBEV_ADV_SET_TERMINATED (0x12)
#define BLE_HCI_LE_SUBEV_SCAN_REQ_RCVD (0x13)
#define BLE_HCI_LE_SUBEV_CHAN_SEL_ALG (0x14)
/* Generic event header */
#define BLE_HCI_EVENT_HDR_LEN (2)
+33 -2
View File
@@ -73,6 +73,37 @@ const uint8_t g_ble_hci_le_cmd_len[BLE_HCI_NUM_LE_CMDS] =
BLE_HCI_RD_PEER_RESOLV_ADDR_LEN, /* 0x002B: read peer resolvable addr */
BLE_HCI_RD_LOC_RESOLV_ADDR_LEN, /* 0x002C: read local resolvable addr */
sizeof(uint8_t), /* 0x002D: set addr resolution enable */
sizeof(uint16_t), /* 0x002E: Set resolv priv addr tmo */
0, /* 0x002F: Read max data length */
sizeof(uint16_t), /* 0x002E: set resolv priv addr tmo */
0, /* 0x002F: read max data length */
BLE_HCI_LE_RD_PHY_LEN, /* 0x0030: read maximum default PHY */
BLE_HCI_LE_SET_DEFAULT_PHY_LEN, /* 0x0031: set default PHY */
BLE_HCI_LE_SET_PHY_LEN, /* 0x0032: set PHY */
BLE_HCI_LE_ENH_RCVR_TEST_LEN, /* 0x0033: enhanced receiver test */
BLE_HCI_LE_ENH_TRANS_TEST_LEN, /* 0x0034: enhanced transmitter test */
BLE_HCI_LE_SET_ADV_SET_RND_ADDR_LEN,/* 0x0035: set adv. set random address */
BLE_HCI_LE_SET_EXT_ADV_PARAM_LEN, /* 0x0036: set ext. adv params */
BLE_HCI_LE_SET_EXT_ADV_DATA_LEN, /* 0x0037: set ext. adv. data */
BLE_HCI_LE_SET_EXT_SCAN_RSP_DATA_LEN,/* 0x0038: set ext. scan resp. data */
BLE_HCI_LE_SET_EXT_ADV_ENABLE_LEN, /* 0x0039: set ext. adv. enable */
0, /* 0x003A: read max adv. data len */
0, /* 0x003B: read number of sup. adv. sets */
BLE_HCI_LE_REMOVE_ADV_SET_LEN, /* 0x003C: remove adv. set */
0, /* 0x003D: clear advertising sets */
BLE_HCI_LE_SET_PER_ADV_PARAMS_LEN, /* 0x003E: set periodic adv. param. */
BLE_HCI_LE_SET_PER_ADV_DATA_LEN, /* 0x003F: set periodic adv. data */
BLE_HCI_LE_SET_PER_ADV_ENABLE_LEN, /* 0x0040: periodic adv. enable */
BLE_HCI_LE_SET_EXT_SCAN_PARAM_LEN, /* 0x0041: set ext. scan param. */
BLE_HCI_LE_SET_EXT_SCAN_ENABLE_LEN, /* 0x0042: set ext. scan enable */
BLE_HCI_LE_EXT_CREATE_CONN_LEN, /* 0x0043: ext. create connection */
BLE_HCI_LE_PER_ADV_CREATE_SYNC_LEN, /* 0x0044: periodic adv. create sync */
0, /* 0x0045: periodic adv. create sync cancel */
0, /* 0x0046: periodic adv. terminate sync */
BLE_HCI_LE_ADD_DEV_TO_PER_ADV_LIST_LEN, /* 0x0047: add dev to per. adv. list */
BLE_HCI_LE_REM_DEV_FROM_PER_ADV_LIST_LEN,/* 0x0048: remove dev from per. adv. list */
0, /* 0x0049: clear periodic adv. list */
0, /* 0x004A: read periodic list size */
0, /* 0x004B: read transmit power */
0, /* 0x004C: read RF path */
BLE_HCI_LE_WR_RF_PATH_COMPENSATION_LEN, /* 0x004D: write RF path */
BLE_HCI_LE_SET_PRIVACY_MODE_LEN, /* 0x004E: set privacy mode */
};