* [PATCH v2 1/6] monitor: Remove use of base defines for 5.2
@ 2020-04-23 21:54 Luiz Augusto von Dentz
2020-04-23 21:54 ` [PATCH v2 2/6] monitor: Add decoding support for HCI LE Set Host Feature Luiz Augusto von Dentz
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: Luiz Augusto von Dentz @ 2020-04-23 21:54 UTC (permalink / raw)
To: linux-bluetooth
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Use the allocated value directly instead of base value + offset.
---
monitor/bt.h | 117 ++++++++++++++++++++++++++-------------------------
1 file changed, 60 insertions(+), 57 deletions(-)
diff --git a/monitor/bt.h b/monitor/bt.h
index f9ac6b180..39ca1e39a 100644
--- a/monitor/bt.h
+++ b/monitor/bt.h
@@ -24,11 +24,7 @@
#include <stdint.h>
-#define BT_HCI_CMD_5_2 0x2060
-#define BT_HCI_BIT_5_2 (8 * 41) + 5
-#define BT_HCI_SUBEVT_5_2 0x19
-
-#define BT_LL_CMD_5_2 0x1f
+#define BT_HCI_CMD_BIT(_byte, _bit) ((8 * _byte) + _bit)
struct bt_ll_hdr {
uint8_t preamble;
@@ -181,7 +177,7 @@ struct bt_ll_clock_acc {
#define BT_LL_CLOCK_ACCURACY_RSP 0x1e
-#define BT_LL_CIS_REQ BT_LL_CMD_5_2
+#define BT_LL_CIS_REQ 0x1f
struct bt_ll_cis_req {
uint8_t cig;
uint8_t cis;
@@ -204,14 +200,14 @@ struct bt_ll_cis_req {
uint16_t conn_event_count;
} __attribute__ ((packed));
-#define BT_LL_CIS_RSP BT_LL_CMD_5_2 + 1
+#define BT_LL_CIS_RSP 0x20
struct bt_ll_cis_rsp {
uint8_t offset_min[3];
uint8_t offset_max[3];
uint16_t conn_event_count;
} __attribute__ ((packed));
-#define BT_LL_CIS_IND BT_LL_CMD_5_2 + 2
+#define BT_LL_CIS_IND 0x21
struct bt_ll_cis_ind {
uint32_t addr;
uint8_t cis_offset[3];
@@ -220,7 +216,7 @@ struct bt_ll_cis_ind {
uint16_t conn_event_count;
} __attribute__ ((packed));
-#define BT_LL_CIS_TERMINATE_IND BT_LL_CMD_5_2 + 3
+#define BT_LL_CIS_TERMINATE_IND 0x22
struct bt_ll_cis_term_ind {
uint8_t cig;
uint8_t cis;
@@ -2568,8 +2564,8 @@ struct bt_hci_cmd_default_periodic_adv_sync_trans_params {
uint8_t cte_type;
} __attribute__ ((packed));
-#define BT_HCI_CMD_LE_READ_BUFFER_SIZE_V2 BT_HCI_CMD_5_2
-#define BT_HCI_BIT_LE_READ_BUFFER_SIZE_V2 BT_HCI_BIT_5_2
+#define BT_HCI_CMD_LE_READ_BUFFER_SIZE_V2 0x2060
+#define BT_HCI_BIT_LE_READ_BUFFER_SIZE_V2 BT_HCI_CMD_BIT(41, 5)
struct bt_hci_rsp_le_read_buffer_size_v2 {
uint8_t status;
uint16_t acl_mtu;
@@ -2578,8 +2574,8 @@ struct bt_hci_rsp_le_read_buffer_size_v2 {
uint8_t iso_max_pkt;
} __attribute__ ((packed));
-#define BT_HCI_CMD_LE_READ_ISO_TX_SYNC BT_HCI_CMD_5_2 + 1
-#define BT_HCI_BIT_LE_READ_ISO_TX_SYNC BT_HCI_BIT_5_2 + 1
+#define BT_HCI_CMD_LE_READ_ISO_TX_SYNC 0x2061
+#define BT_HCI_BIT_LE_READ_ISO_TX_SYNC BT_HCI_CMD_BIT(41, 6)
struct bt_hci_cmd_le_read_iso_tx_sync {
uint16_t handle;
} __attribute__ ((packed));
@@ -2592,8 +2588,8 @@ struct bt_hci_rsp_le_read_iso_tx_sync {
uint8_t offset[3];
} __attribute__ ((packed));
-#define BT_HCI_CMD_LE_SET_CIG_PARAMS BT_HCI_CMD_5_2 + 2
-#define BT_HCI_BIT_LE_SET_CIG_PARAMS BT_HCI_BIT_5_2 + 2
+#define BT_HCI_CMD_LE_SET_CIG_PARAMS 0x2062
+#define BT_HCI_BIT_LE_SET_CIG_PARAMS BT_HCI_CMD_BIT(41, 7)
struct bt_hci_cis_params {
uint8_t cis_id;
uint16_t m_sdu;
@@ -2624,8 +2620,8 @@ struct bt_hci_rsp_le_set_cig_params {
uint16_t handle[0];
} __attribute__ ((packed));
-#define BT_HCI_CMD_LE_SET_CIG_PARAMS_TEST BT_HCI_CMD_5_2 + 3
-#define BT_HCI_BIT_LE_SET_CIG_PARAMS_TEST BT_HCI_BIT_5_2 + 3
+#define BT_HCI_CMD_LE_SET_CIG_PARAMS_TEST 0x2063
+#define BT_HCI_BIT_LE_SET_CIG_PARAMS_TEST BT_HCI_CMD_BIT(42, 0)
struct bt_hci_cis_params_test {
uint8_t cis_id;
uint8_t nse;
@@ -2653,8 +2649,8 @@ struct bt_hci_cmd_le_set_cig_params_test {
struct bt_hci_cis_params_test cis[0];
} __attribute__ ((packed));
-#define BT_HCI_CMD_LE_CREATE_CIS BT_HCI_CMD_5_2 + 4
-#define BT_HCI_BIT_LE_CREATE_CIS BT_HCI_BIT_5_2 + 4
+#define BT_HCI_CMD_LE_CREATE_CIS 0x2064
+#define BT_HCI_BIT_LE_CREATE_CIS BT_HCI_CMD_BIT(42, 1)
struct bt_hci_cis {
uint16_t cis_handle;
uint16_t acl_handle;
@@ -2665,27 +2661,27 @@ struct bt_hci_cmd_le_create_cis {
struct bt_hci_cis cis[0];
} __attribute__ ((packed));
-#define BT_HCI_CMD_LE_REMOVE_CIG BT_HCI_CMD_5_2 + 5
-#define BT_HCI_BIT_LE_REMOVE_CIG BT_HCI_BIT_5_2 + 5
+#define BT_HCI_CMD_LE_REMOVE_CIG 0x2065
+#define BT_HCI_BIT_LE_REMOVE_CIG BT_HCI_CMD_BIT(42, 2)
struct bt_hci_cmd_le_remove_cig {
uint8_t cig_id;
} __attribute__ ((packed));
-#define BT_HCI_CMD_LE_ACCEPT_CIS BT_HCI_CMD_5_2 + 6
-#define BT_HCI_BIT_LE_ACCEPT_CIS BT_HCI_BIT_5_2 + 6
+#define BT_HCI_CMD_LE_ACCEPT_CIS 0x2066
+#define BT_HCI_BIT_LE_ACCEPT_CIS BT_HCI_CMD_BIT(42, 3)
struct bt_hci_cmd_le_accept_cis {
uint16_t handle;
} __attribute__ ((packed));
-#define BT_HCI_CMD_LE_REJECT_CIS BT_HCI_CMD_5_2 + 7
-#define BT_HCI_BIT_LE_REJECT_CIS BT_HCI_BIT_5_2 + 7
+#define BT_HCI_CMD_LE_REJECT_CIS 0x2067
+#define BT_HCI_BIT_LE_REJECT_CIS BT_HCI_CMD_BIT(42, 4)
struct bt_hci_cmd_le_reject_cis {
uint16_t handle;
uint8_t reason;
} __attribute__ ((packed));
-#define BT_HCI_CMD_LE_CREATE_BIG BT_HCI_CMD_5_2 + 8
-#define BT_HCI_BIT_LE_CREATE_BIG BT_HCI_BIT_5_2 + 8
+#define BT_HCI_CMD_LE_CREATE_BIG 0x2068
+#define BT_HCI_BIT_LE_CREATE_BIG BT_HCI_CMD_BIT(42, 5)
struct bt_hci_bis {
uint8_t sdu_interval[3];
uint16_t sdu;
@@ -2705,8 +2701,8 @@ struct bt_hci_cmd_le_create_big {
struct bt_hci_bis bis[0];
} __attribute__ ((packed));
-#define BT_HCI_CMD_LE_CREATE_BIG_TEST BT_HCI_CMD_5_2 + 9
-#define BT_HCI_BIT_LE_CREATE_BIG_TEST BT_HCI_BIT_5_2 + 9
+#define BT_HCI_CMD_LE_CREATE_BIG_TEST 0x2069
+#define BT_HCI_BIT_LE_CREATE_BIG_TEST BT_HCI_CMD_BIT(42, 6)
struct bt_hci_bis_test {
uint8_t sdu_interval[3];
uint16_t iso_interval;
@@ -2731,15 +2727,15 @@ struct bt_hci_cmd_le_create_big_test {
struct bt_hci_bis_test bis[0];
} __attribute__ ((packed));
-#define BT_HCI_CMD_LE_TERM_BIG BT_HCI_CMD_5_2 + 10
-#define BT_HCI_BIT_LE_TERM_BIG BT_HCI_BIT_5_2 + 10
+#define BT_HCI_CMD_LE_TERM_BIG 0x206a
+#define BT_HCI_BIT_LE_TERM_BIG BT_HCI_CMD_BIT(42, 7)
struct bt_hci_cmd_le_term_big {
uint8_t big_id;
uint8_t reason;
} __attribute__ ((packed));
-#define BT_HCI_CMD_LE_BIG_CREATE_SYNC BT_HCI_CMD_5_2 + 11
-#define BT_HCI_BIT_LE_BIG_CREATE_SYNC BT_HCI_BIT_5_2 + 11
+#define BT_HCI_CMD_LE_BIG_CREATE_SYNC 0x206b
+#define BT_HCI_BIT_LE_BIG_CREATE_SYNC BT_HCI_CMD_BIT(43, 0)
struct bt_hci_bis_sync {
} __attribute__ ((packed));
@@ -2754,20 +2750,20 @@ struct bt_hci_cmd_le_big_create_sync {
struct bt_hci_bis_sync bis[0];
} __attribute__ ((packed));
-#define BT_HCI_CMD_LE_BIG_TERM_SYNC BT_HCI_CMD_5_2 + 12
-#define BT_HCI_BIT_LE_BIG_TERM_SYNC BT_HCI_BIT_5_2 + 12
+#define BT_HCI_CMD_LE_BIG_TERM_SYNC 0x206c
+#define BT_HCI_BIT_LE_BIG_TERM_SYNC BT_HCI_CMD_BIT(43, 1)
struct bt_hci_cmd_le_big_term_sync {
uint8_t big_id;
} __attribute__ ((packed));
-#define BT_HCI_CMD_LE_REQ_PEER_SCA BT_HCI_CMD_5_2 + 13
-#define BT_HCI_BIT_LE_REQ_PEER_SCA BT_HCI_BIT_5_2 + 13
+#define BT_HCI_CMD_LE_REQ_PEER_SCA 0x206d
+#define BT_HCI_BIT_LE_REQ_PEER_SCA BT_HCI_CMD_BIT(43, 2)
struct bt_hci_cmd_le_req_peer_sca {
uint16_t handle;
} __attribute__ ((packed));
-#define BT_HCI_CMD_LE_SETUP_ISO_PATH BT_HCI_CMD_5_2 + 14
-#define BT_HCI_BIT_LE_SETUP_ISO_PATH BT_HCI_BIT_5_2 + 14
+#define BT_HCI_CMD_LE_SETUP_ISO_PATH 0x206e
+#define BT_HCI_BIT_LE_SETUP_ISO_PATH BT_HCI_CMD_BIT(43, 3)
struct bt_hci_cmd_le_setup_iso_path {
uint16_t handle;
uint8_t direction;
@@ -2780,24 +2776,31 @@ struct bt_hci_cmd_le_setup_iso_path {
uint8_t codec_cfg[0];
} __attribute__ ((packed));
-#define BT_HCI_CMD_LE_REMOVE_ISO_PATH BT_HCI_CMD_5_2 + 15
-#define BT_HCI_BIT_LE_REMOVE_ISO_PATH BT_HCI_BIT_5_2 + 15
+#define BT_HCI_CMD_LE_REMOVE_ISO_PATH 0x206f
+#define BT_HCI_BIT_LE_REMOVE_ISO_PATH BT_HCI_CMD_BIT(43, 4)
struct bt_hci_cmd_le_remove_iso_path {
uint16_t handle;
uint8_t path_dir;
} __attribute__ ((packed));
-#define BT_HCI_CMD_LE_ISO_TX_TEST BT_HCI_CMD_5_2 + 16
-#define BT_HCI_BIT_LE_ISO_TX_TEST BT_HCI_BIT_5_2 + 16
+#define BT_HCI_CMD_LE_ISO_TX_TEST 0x2070
+#define BT_HCI_BIT_LE_ISO_TX_TEST BT_HCI_CMD_BIT(43, 5)
+
+#define BT_HCI_CMD_LE_ISO_RX_TEST 0x2071
+#define BT_HCI_BIT_LE_ISO_RX_TEST BT_HCI_CMD_BIT(43, 6)
-#define BT_HCI_CMD_LE_ISO_RX_TEST BT_HCI_CMD_5_2 + 17
-#define BT_HCI_BIT_LE_ISO_RX_TEST BT_HCI_BIT_5_2 + 17
+#define BT_HCI_CMD_LE_ISO_READ_TEST_COUNTER 0x2072
+#define BT_HCI_BIT_LE_ISO_READ_TEST_COUNTER BT_HCI_CMD_BIT(43, 7)
-#define BT_HCI_CMD_LE_ISO_READ_TEST_COUNTER BT_HCI_CMD_5_2 + 18
-#define BT_HCI_BIT_LE_ISO_READ_TEST_COUNTER BT_HCI_BIT_5_2 + 18
+#define BT_HCI_CMD_LE_ISO_TEST_END 0x2073
+#define BT_HCI_BIT_LE_ISO_TEST_END BT_HCI_CMD_BIT(44, 0)
-#define BT_HCI_CMD_LE_ISO_TEST_END BT_HCI_CMD_5_2 + 19
-#define BT_HCI_BIT_LE_ISO_TEST_END BT_HCI_BIT_5_2 + 19
+#define BT_HCI_CMD_LE_SET_HOST_FEATURE 0x2074
+#define BT_HCI_BIT_LE_SET_HOST_FEATURE BT_HCI_CMD_BIT(44, 1)
+struct bt_hci_cmd_le_set_host_feature {
+ uint8_t bit_number;
+ uint8_t bit_value;
+} __packed;
#define BT_HCI_EVT_INQUIRY_COMPLETE 0x01
struct bt_hci_evt_inquiry_complete {
@@ -3155,7 +3158,7 @@ struct bt_hci_evt_keypress_notify {
#define BT_HCI_EVT_REMOTE_HOST_FEATURES_NOTIFY 0x3d
struct bt_hci_evt_remote_host_features_notify {
- uint8_t bdaddr[6];
+uint8_t bdaddr[6];
uint8_t features[8];
} __attribute__ ((packed));
@@ -3498,7 +3501,7 @@ struct bt_hci_evt_le_per_adv_sync_trans_rec {
uint8_t clock_accuracy;
} __attribute__ ((packed));
-#define BT_HCI_EVT_LE_CIS_ESTABLISHED BT_HCI_SUBEVT_5_2
+#define BT_HCI_EVT_LE_CIS_ESTABLISHED 0x19
struct bt_hci_evt_le_cis_established {
uint8_t status;
uint16_t conn_handle;
@@ -3518,7 +3521,7 @@ struct bt_hci_evt_le_cis_established {
uint16_t interval;
} __attribute__ ((packed));
-#define BT_HCI_EVT_LE_CIS_REQ BT_HCI_SUBEVT_5_2 + 1
+#define BT_HCI_EVT_LE_CIS_REQ 0x1a
struct bt_hci_evt_le_cis_req {
uint16_t acl_handle;
uint16_t cis_handle;
@@ -3526,7 +3529,7 @@ struct bt_hci_evt_le_cis_req {
uint8_t cis_id;
} __attribute__ ((packed));
-#define BT_HCI_EVT_LE_BIG_COMPLETE BT_HCI_SUBEVT_5_2 + 2
+#define BT_HCI_EVT_LE_BIG_COMPLETE 0x1b
struct bt_hci_evt_le_big_complete {
uint8_t status;
uint8_t big_id;
@@ -3537,13 +3540,13 @@ struct bt_hci_evt_le_big_complete {
uint16_t handle[0];
} __attribute__ ((packed));
-#define BT_HCI_EVT_LE_BIG_TERMINATE BT_HCI_SUBEVT_5_2 + 3
+#define BT_HCI_EVT_LE_BIG_TERMINATE 0x1c
struct bt_hci_evt_le_big_terminate {
uint8_t reason;
uint8_t big_id;
} __attribute__ ((packed));
-#define BT_HCI_EVT_LE_BIG_SYNC_ESTABILISHED BT_HCI_SUBEVT_5_2 + 4
+#define BT_HCI_EVT_LE_BIG_SYNC_ESTABILISHED 0x1d
struct bt_hci_evt_le_big_sync_estabilished {
uint8_t status;
uint8_t big_id;
@@ -3552,13 +3555,13 @@ struct bt_hci_evt_le_big_sync_estabilished {
uint16_t handle[0];
} __attribute__ ((packed));
-#define BT_HCI_EVT_LE_BIG_SYNC_LOST BT_HCI_SUBEVT_5_2 + 5
+#define BT_HCI_EVT_LE_BIG_SYNC_LOST 0x1e
struct bt_hci_evt_le_big_sync_lost {
uint8_t big_id;
uint8_t reason;
} __attribute__ ((packed));
-#define BT_HCI_EVT_LE_REQ_PEER_SCA_COMPLETE BT_HCI_SUBEVT_5_2 + 6
+#define BT_HCI_EVT_LE_REQ_PEER_SCA_COMPLETE 0x1f
struct bt_hci_evt_le_req_peer_sca_complete {
uint8_t status;
uint16_t handle;
--
2.25.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 2/6] monitor: Add decoding support for HCI LE Set Host Feature
2020-04-23 21:54 [PATCH v2 1/6] monitor: Remove use of base defines for 5.2 Luiz Augusto von Dentz
@ 2020-04-23 21:54 ` Luiz Augusto von Dentz
2020-04-23 21:54 ` [PATCH v2 3/6] emulator: Fix version number of ISO related features Luiz Augusto von Dentz
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Luiz Augusto von Dentz @ 2020-04-23 21:54 UTC (permalink / raw)
To: linux-bluetooth
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This adds decoding support for LE Set Host Feature.
---
monitor/packet.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/monitor/packet.c b/monitor/packet.c
index 038dd6d17..777a52205 100644
--- a/monitor/packet.c
+++ b/monitor/packet.c
@@ -8128,6 +8128,21 @@ static void le_req_peer_sca_cmd(const void *data, uint8_t size)
print_field("Connection Handle: %d", le16_to_cpu(cmd->handle));
}
+static void le_set_host_feature_cmd(const void *data, uint8_t size)
+{
+ const struct bt_hci_cmd_le_set_host_feature *cmd = data;
+ uint64_t mask;
+
+ print_field("Bit Number:");
+
+ mask = print_bitfield(2, cmd->bit_number, features_le);
+ if (mask)
+ print_text(COLOR_UNKNOWN_FEATURE_BIT, " Unknown features "
+ "(0x%16.16" PRIx64 ")", mask);
+
+ print_field("Bit Value: %u", cmd->bit_value);
+}
+
struct opcode_data {
uint16_t opcode;
int bit;
@@ -9041,6 +9056,10 @@ static const struct opcode_data opcode_table[] = {
{ BT_HCI_CMD_LE_ISO_TEST_END, BT_HCI_BIT_LE_ISO_TEST_END,
"LE Isochronous Read Test Counters", NULL, 0,
false },
+ { BT_HCI_CMD_LE_SET_HOST_FEATURE, BT_HCI_BIT_LE_SET_HOST_FEATURE,
+ "LE Set Host Feature", le_set_host_feature_cmd,
+ sizeof(struct bt_hci_cmd_le_set_host_feature),
+ true, status_rsp, 1, true },
{ }
};
--
2.25.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 3/6] emulator: Fix version number of ISO related features
2020-04-23 21:54 [PATCH v2 1/6] monitor: Remove use of base defines for 5.2 Luiz Augusto von Dentz
2020-04-23 21:54 ` [PATCH v2 2/6] monitor: Add decoding support for HCI LE Set Host Feature Luiz Augusto von Dentz
@ 2020-04-23 21:54 ` Luiz Augusto von Dentz
2020-04-23 21:54 ` [PATCH v2 4/6] emulator: Add support for LE Set Host Feature Luiz Augusto von Dentz
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Luiz Augusto von Dentz @ 2020-04-23 21:54 UTC (permalink / raw)
To: linux-bluetooth
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
There are part of Bluetooth 5.2 specification not 6.0.
---
emulator/btdev.c | 66 +++++++++++++++++++++++------------------------
emulator/btdev.h | 2 +-
emulator/hciemu.c | 4 +--
emulator/hciemu.h | 2 +-
emulator/vhci.c | 2 +-
5 files changed, 38 insertions(+), 38 deletions(-)
diff --git a/emulator/btdev.c b/emulator/btdev.c
index 0de273e53..fc2fb2065 100644
--- a/emulator/btdev.c
+++ b/emulator/btdev.c
@@ -447,7 +447,7 @@ static void set_le_50_commands(struct btdev *btdev)
btdev->commands[38] |= 0x40; /* LE Read Periodic Adv List Size */
}
-static void set_le_60_commands(struct btdev *btdev)
+static void set_le_52_commands(struct btdev *btdev)
{
btdev->commands[41] |= 0x20; /* LE Read Buffer Size v2 */
btdev->commands[41] |= 0x40; /* LE Read ISO TX Sync */
@@ -516,9 +516,9 @@ static void set_le_commands(struct btdev *btdev)
if (btdev->type >= BTDEV_TYPE_BREDRLE50)
set_le_50_commands(btdev);
- /* Extra LE commands for >= 6.0 adapters */
- if (btdev->type >= BTDEV_TYPE_BREDRLE60)
- set_le_60_commands(btdev);
+ /* Extra LE commands for >= 5.2 adapters */
+ if (btdev->type >= BTDEV_TYPE_BREDRLE52)
+ set_le_52_commands(btdev);
}
static void set_bredrle_commands(struct btdev *btdev)
@@ -587,7 +587,7 @@ static void set_bredrle_features(struct btdev *btdev)
btdev->le_features[1] |= 0x10; /* LE EXT ADV */
}
- if (btdev->type >= BTDEV_TYPE_BREDRLE60) {
+ if (btdev->type >= BTDEV_TYPE_BREDRLE52) {
btdev->le_features[3] |= 0x10; /* LE CIS Master */
btdev->le_features[3] |= 0x20; /* LE CIS Slave */
btdev->le_features[3] |= 0x40; /* LE ISO Broadcaster */
@@ -691,7 +691,7 @@ struct btdev *btdev_create(enum btdev_type type, uint16_t id)
if (type == BTDEV_TYPE_BREDRLE || type == BTDEV_TYPE_LE ||
type == BTDEV_TYPE_BREDRLE50 ||
- type == BTDEV_TYPE_BREDRLE60) {
+ type == BTDEV_TYPE_BREDRLE52) {
btdev->crypto = bt_crypto_new();
if (!btdev->crypto) {
free(btdev);
@@ -707,7 +707,7 @@ struct btdev *btdev_create(enum btdev_type type, uint16_t id)
switch (btdev->type) {
case BTDEV_TYPE_BREDRLE:
case BTDEV_TYPE_BREDRLE50:
- case BTDEV_TYPE_BREDRLE60:
+ case BTDEV_TYPE_BREDRLE52:
btdev->version = 0x09;
set_bredrle_features(btdev);
set_bredrle_commands(btdev);
@@ -3076,7 +3076,7 @@ static void default_cmd(struct btdev *btdev, uint16_t opcode,
case BT_HCI_CMD_READ_LE_HOST_SUPPORTED:
if (btdev->type != BTDEV_TYPE_BREDRLE &&
btdev->type != BTDEV_TYPE_BREDRLE50 &&
- btdev->type != BTDEV_TYPE_BREDRLE60)
+ btdev->type != BTDEV_TYPE_BREDRLE52)
goto unsupported;
rlhs.status = BT_HCI_ERR_SUCCESS;
rlhs.supported = btdev->le_supported;
@@ -3088,7 +3088,7 @@ static void default_cmd(struct btdev *btdev, uint16_t opcode,
if (btdev->type != BTDEV_TYPE_BREDRLE &&
btdev->type != BTDEV_TYPE_LE &&
btdev->type != BTDEV_TYPE_BREDRLE50 &&
- btdev->type != BTDEV_TYPE_BREDRLE60)
+ btdev->type != BTDEV_TYPE_BREDRLE52)
goto unsupported;
wlhs = data;
btdev->le_supported = wlhs->supported;
@@ -3100,7 +3100,7 @@ static void default_cmd(struct btdev *btdev, uint16_t opcode,
case BT_HCI_CMD_READ_SECURE_CONN_SUPPORT:
if (btdev->type != BTDEV_TYPE_BREDRLE &&
btdev->type != BTDEV_TYPE_BREDRLE50 &&
- btdev->type != BTDEV_TYPE_BREDRLE60)
+ btdev->type != BTDEV_TYPE_BREDRLE52)
goto unsupported;
rscs.status = BT_HCI_ERR_SUCCESS;
rscs.support = btdev->secure_conn_support;
@@ -3110,7 +3110,7 @@ static void default_cmd(struct btdev *btdev, uint16_t opcode,
case BT_HCI_CMD_WRITE_SECURE_CONN_SUPPORT:
if (btdev->type != BTDEV_TYPE_BREDRLE &&
btdev->type != BTDEV_TYPE_BREDRLE50 &&
- btdev->type != BTDEV_TYPE_BREDRLE60)
+ btdev->type != BTDEV_TYPE_BREDRLE52)
goto unsupported;
wscs = data;
btdev->secure_conn_support = wscs->support;
@@ -3121,7 +3121,7 @@ static void default_cmd(struct btdev *btdev, uint16_t opcode,
case BT_HCI_CMD_READ_LOCAL_OOB_EXT_DATA:
if (btdev->type != BTDEV_TYPE_BREDRLE &&
btdev->type != BTDEV_TYPE_BREDRLE50 &&
- btdev->type != BTDEV_TYPE_BREDRLE60)
+ btdev->type != BTDEV_TYPE_BREDRLE52)
goto unsupported;
rloed.status = BT_HCI_ERR_SUCCESS;
cmd_complete(btdev, opcode, &rloed, sizeof(rloed));
@@ -3130,7 +3130,7 @@ static void default_cmd(struct btdev *btdev, uint16_t opcode,
case BT_HCI_CMD_READ_SYNC_TRAIN_PARAMS:
if (btdev->type != BTDEV_TYPE_BREDRLE &&
btdev->type != BTDEV_TYPE_BREDRLE50 &&
- btdev->type != BTDEV_TYPE_BREDRLE60)
+ btdev->type != BTDEV_TYPE_BREDRLE52)
goto unsupported;
rstp.status = BT_HCI_ERR_SUCCESS;
rstp.interval = cpu_to_le16(btdev->sync_train_interval);
@@ -3282,7 +3282,7 @@ static void default_cmd(struct btdev *btdev, uint16_t opcode,
if (btdev->type != BTDEV_TYPE_BREDRLE &&
btdev->type != BTDEV_TYPE_BREDR &&
btdev->type != BTDEV_TYPE_BREDRLE50 &&
- btdev->type != BTDEV_TYPE_BREDRLE60)
+ btdev->type != BTDEV_TYPE_BREDRLE52)
goto unsupported;
reks = data;
read_enc_key_size_complete(btdev, le16_to_cpu(reks->handle));
@@ -3658,7 +3658,7 @@ static void default_cmd(struct btdev *btdev, uint16_t opcode,
break;
case BT_HCI_CMD_LE_READ_NUM_SUPPORTED_ADV_SETS:
if (btdev->type != BTDEV_TYPE_BREDRLE50 &&
- btdev->type != BTDEV_TYPE_BREDRLE60)
+ btdev->type != BTDEV_TYPE_BREDRLE52)
goto unsupported;
rlrnsas.status = BT_HCI_ERR_SUCCESS;
@@ -3668,7 +3668,7 @@ static void default_cmd(struct btdev *btdev, uint16_t opcode,
break;
case BT_HCI_CMD_LE_SET_ADV_SET_RAND_ADDR:
if (btdev->type != BTDEV_TYPE_BREDRLE50 &&
- btdev->type != BTDEV_TYPE_BREDRLE60)
+ btdev->type != BTDEV_TYPE_BREDRLE52)
goto unsupported;
lsasra = data;
@@ -3678,7 +3678,7 @@ static void default_cmd(struct btdev *btdev, uint16_t opcode,
break;
case BT_HCI_CMD_LE_SET_EXT_ADV_PARAMS:
if (btdev->type != BTDEV_TYPE_BREDRLE50 &&
- btdev->type != BTDEV_TYPE_BREDRLE60)
+ btdev->type != BTDEV_TYPE_BREDRLE52)
goto unsupported;
if (btdev->le_adv_enable) {
@@ -3699,7 +3699,7 @@ static void default_cmd(struct btdev *btdev, uint16_t opcode,
break;
case BT_HCI_CMD_LE_SET_EXT_ADV_ENABLE:
if (btdev->type != BTDEV_TYPE_BREDRLE50 &&
- btdev->type != BTDEV_TYPE_BREDRLE60)
+ btdev->type != BTDEV_TYPE_BREDRLE52)
goto unsupported;
lseae = data;
@@ -3715,7 +3715,7 @@ static void default_cmd(struct btdev *btdev, uint16_t opcode,
break;
case BT_HCI_CMD_LE_SET_EXT_ADV_DATA:
if (btdev->type != BTDEV_TYPE_BREDRLE50 &&
- btdev->type != BTDEV_TYPE_BREDRLE60)
+ btdev->type != BTDEV_TYPE_BREDRLE52)
goto unsupported;
lsead = data;
@@ -3726,7 +3726,7 @@ static void default_cmd(struct btdev *btdev, uint16_t opcode,
break;
case BT_HCI_CMD_LE_SET_EXT_SCAN_RSP_DATA:
if (btdev->type != BTDEV_TYPE_BREDRLE50 &&
- btdev->type != BTDEV_TYPE_BREDRLE60)
+ btdev->type != BTDEV_TYPE_BREDRLE52)
goto unsupported;
lsesrd = data;
@@ -3737,7 +3737,7 @@ static void default_cmd(struct btdev *btdev, uint16_t opcode,
break;
case BT_HCI_CMD_LE_REMOVE_ADV_SET:
if (btdev->type != BTDEV_TYPE_BREDRLE50 &&
- btdev->type != BTDEV_TYPE_BREDRLE60)
+ btdev->type != BTDEV_TYPE_BREDRLE52)
goto unsupported;
status = BT_HCI_ERR_SUCCESS;
@@ -3745,7 +3745,7 @@ static void default_cmd(struct btdev *btdev, uint16_t opcode,
break;
case BT_HCI_CMD_LE_CLEAR_ADV_SETS:
if (btdev->type != BTDEV_TYPE_BREDRLE50 &&
- btdev->type != BTDEV_TYPE_BREDRLE60)
+ btdev->type != BTDEV_TYPE_BREDRLE52)
goto unsupported;
status = BT_HCI_ERR_SUCCESS;
@@ -3767,7 +3767,7 @@ static void default_cmd(struct btdev *btdev, uint16_t opcode,
break;
case BT_HCI_CMD_LE_SET_EXT_SCAN_PARAMS:
if (btdev->type != BTDEV_TYPE_BREDRLE50 &&
- btdev->type != BTDEV_TYPE_BREDRLE60)
+ btdev->type != BTDEV_TYPE_BREDRLE52)
goto unsupported;
lsesp = data;
@@ -3790,7 +3790,7 @@ static void default_cmd(struct btdev *btdev, uint16_t opcode,
break;
case BT_HCI_CMD_LE_SET_EXT_SCAN_ENABLE:
if (btdev->type != BTDEV_TYPE_BREDRLE50 &&
- btdev->type != BTDEV_TYPE_BREDRLE60)
+ btdev->type != BTDEV_TYPE_BREDRLE52)
goto unsupported;
lsese = data;
@@ -3805,14 +3805,14 @@ static void default_cmd(struct btdev *btdev, uint16_t opcode,
break;
case BT_HCI_CMD_LE_EXT_CREATE_CONN:
if (btdev->type != BTDEV_TYPE_BREDRLE50 &&
- btdev->type != BTDEV_TYPE_BREDRLE60)
+ btdev->type != BTDEV_TYPE_BREDRLE52)
goto unsupported;
cmd_status(btdev, BT_HCI_ERR_SUCCESS, opcode);
break;
case BT_HCI_CMD_LE_READ_BUFFER_SIZE_V2:
- if (btdev->type != BTDEV_TYPE_BREDRLE60)
+ if (btdev->type != BTDEV_TYPE_BREDRLE52)
goto unsupported;
lrbsv2.status = BT_HCI_ERR_SUCCESS;
lrbsv2.acl_mtu = cpu_to_le16(btdev->acl_mtu);
@@ -3823,7 +3823,7 @@ static void default_cmd(struct btdev *btdev, uint16_t opcode,
break;
case BT_HCI_CMD_LE_SET_CIG_PARAMS:
- if (btdev->type != BTDEV_TYPE_BREDRLE60)
+ if (btdev->type != BTDEV_TYPE_BREDRLE52)
goto unsupported;
memcpy(&btdev->le_cig, data, len);
lscp.params.status = BT_HCI_ERR_SUCCESS;
@@ -3834,7 +3834,7 @@ static void default_cmd(struct btdev *btdev, uint16_t opcode,
break;
case BT_HCI_CMD_LE_CREATE_CIS:
- if (btdev->type != BTDEV_TYPE_BREDRLE60)
+ if (btdev->type != BTDEV_TYPE_BREDRLE52)
goto unsupported;
cmd_status(btdev, BT_HCI_ERR_SUCCESS, opcode);
@@ -3842,7 +3842,7 @@ static void default_cmd(struct btdev *btdev, uint16_t opcode,
break;
case BT_HCI_CMD_LE_ACCEPT_CIS:
- if (btdev->type != BTDEV_TYPE_BREDRLE60)
+ if (btdev->type != BTDEV_TYPE_BREDRLE52)
goto unsupported;
cmd_status(btdev, BT_HCI_ERR_SUCCESS, opcode);
@@ -3851,7 +3851,7 @@ static void default_cmd(struct btdev *btdev, uint16_t opcode,
break;
case BT_HCI_CMD_LE_REJECT_CIS:
- if (btdev->type != BTDEV_TYPE_BREDRLE60)
+ if (btdev->type != BTDEV_TYPE_BREDRLE52)
goto unsupported;
cmd_status(btdev, BT_HCI_ERR_SUCCESS, opcode);
@@ -4098,7 +4098,7 @@ static void default_cmd_completion(struct btdev *btdev, uint16_t opcode,
break;
case BT_HCI_CMD_LE_SET_EXT_SCAN_ENABLE:
if (btdev->type != BTDEV_TYPE_BREDRLE50 &&
- btdev->type != BTDEV_TYPE_BREDRLE60)
+ btdev->type != BTDEV_TYPE_BREDRLE52)
return;
lsese = data;
if (btdev->le_scan_enable && lsese->enable)
@@ -4106,7 +4106,7 @@ static void default_cmd_completion(struct btdev *btdev, uint16_t opcode,
break;
case BT_HCI_CMD_LE_EXT_CREATE_CONN:
if (btdev->type != BTDEV_TYPE_BREDRLE50 &&
- btdev->type != BTDEV_TYPE_BREDRLE60)
+ btdev->type != BTDEV_TYPE_BREDRLE52)
return;
leecc = data;
btdev->le_scan_own_addr_type = leecc->own_addr_type;
@@ -4114,7 +4114,7 @@ static void default_cmd_completion(struct btdev *btdev, uint16_t opcode,
break;
case BT_HCI_CMD_LE_CREATE_CIS:
if (btdev->type != BTDEV_TYPE_BREDRLE50 &&
- btdev->type != BTDEV_TYPE_BREDRLE60)
+ btdev->type != BTDEV_TYPE_BREDRLE52)
return;
leccis = data;
le_cis_request(btdev, leccis);
diff --git a/emulator/btdev.h b/emulator/btdev.h
index b535930de..a9f71b281 100644
--- a/emulator/btdev.h
+++ b/emulator/btdev.h
@@ -64,7 +64,7 @@ enum btdev_type {
BTDEV_TYPE_AMP,
BTDEV_TYPE_BREDR20,
BTDEV_TYPE_BREDRLE50,
- BTDEV_TYPE_BREDRLE60,
+ BTDEV_TYPE_BREDRLE52,
};
enum btdev_hook_type {
diff --git a/emulator/hciemu.c b/emulator/hciemu.c
index 23891a2ee..ac861cce2 100644
--- a/emulator/hciemu.c
+++ b/emulator/hciemu.c
@@ -335,8 +335,8 @@ struct hciemu *hciemu_new(enum hciemu_type type)
case HCIEMU_TYPE_BREDRLE50:
hciemu->btdev_type = BTDEV_TYPE_BREDRLE50;
break;
- case HCIEMU_TYPE_BREDRLE60:
- hciemu->btdev_type = BTDEV_TYPE_BREDRLE60;
+ case HCIEMU_TYPE_BREDRLE52:
+ hciemu->btdev_type = BTDEV_TYPE_BREDRLE52;
break;
default:
return NULL;
diff --git a/emulator/hciemu.h b/emulator/hciemu.h
index 6f651cb98..4c8858bb6 100644
--- a/emulator/hciemu.h
+++ b/emulator/hciemu.h
@@ -32,7 +32,7 @@ enum hciemu_type {
HCIEMU_TYPE_LE,
HCIEMU_TYPE_LEGACY,
HCIEMU_TYPE_BREDRLE50,
- HCIEMU_TYPE_BREDRLE60,
+ HCIEMU_TYPE_BREDRLE52,
};
enum hciemu_hook_type {
diff --git a/emulator/vhci.c b/emulator/vhci.c
index 7a69b484e..f79b34f46 100644
--- a/emulator/vhci.c
+++ b/emulator/vhci.c
@@ -105,7 +105,7 @@ struct vhci *vhci_open(enum vhci_type type)
switch (type) {
case VHCI_TYPE_BREDRLE:
- btdev_type = BTDEV_TYPE_BREDRLE60;
+ btdev_type = BTDEV_TYPE_BREDRLE52;
ctrl_type = HCI_PRIMARY;
break;
case VHCI_TYPE_BREDR:
--
2.25.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 4/6] emulator: Add support for LE Set Host Feature
2020-04-23 21:54 [PATCH v2 1/6] monitor: Remove use of base defines for 5.2 Luiz Augusto von Dentz
2020-04-23 21:54 ` [PATCH v2 2/6] monitor: Add decoding support for HCI LE Set Host Feature Luiz Augusto von Dentz
2020-04-23 21:54 ` [PATCH v2 3/6] emulator: Fix version number of ISO related features Luiz Augusto von Dentz
@ 2020-04-23 21:54 ` Luiz Augusto von Dentz
2020-04-23 21:55 ` [PATCH v2 5/6] emulator: Add support for LE Setup ISO Data Path Luiz Augusto von Dentz
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Luiz Augusto von Dentz @ 2020-04-23 21:54 UTC (permalink / raw)
To: linux-bluetooth
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This implements support for LE Set Host Feature
---
emulator/btdev.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/emulator/btdev.c b/emulator/btdev.c
index fc2fb2065..cd355e73a 100644
--- a/emulator/btdev.c
+++ b/emulator/btdev.c
@@ -469,6 +469,7 @@ static void set_le_52_commands(struct btdev *btdev)
btdev->commands[43] |= 0x40; /* LE ISO RX Test */
btdev->commands[43] |= 0x80; /* LE ISO Read Test Counter */
btdev->commands[44] |= 0x01; /* LE ISO Test End */
+ btdev->commands[44] |= 0x02; /* LE ISO Set Host Feature */
}
static void set_le_commands(struct btdev *btdev)
@@ -3861,6 +3862,15 @@ static void default_cmd(struct btdev *btdev, uint16_t opcode,
break;
+ case BT_HCI_CMD_LE_SET_HOST_FEATURE:
+ if (btdev->type != BTDEV_TYPE_BREDRLE52)
+ goto unsupported;
+
+ status = BT_HCI_ERR_SUCCESS;
+ cmd_complete(btdev, opcode, &status, sizeof(status));
+
+ break;
+
default:
goto unsupported;
}
--
2.25.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 5/6] emulator: Add support for LE Setup ISO Data Path
2020-04-23 21:54 [PATCH v2 1/6] monitor: Remove use of base defines for 5.2 Luiz Augusto von Dentz
` (2 preceding siblings ...)
2020-04-23 21:54 ` [PATCH v2 4/6] emulator: Add support for LE Set Host Feature Luiz Augusto von Dentz
@ 2020-04-23 21:55 ` Luiz Augusto von Dentz
2020-04-23 21:55 ` [PATCH v2 6/6] emulator: Add support for LE Remove " Luiz Augusto von Dentz
2020-04-24 17:50 ` [PATCH v2 1/6] monitor: Remove use of base defines for 5.2 Luiz Augusto von Dentz
5 siblings, 0 replies; 7+ messages in thread
From: Luiz Augusto von Dentz @ 2020-04-23 21:55 UTC (permalink / raw)
To: linux-bluetooth
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This implements support for LE Setup ISO Data Path command.
---
emulator/btdev.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+)
diff --git a/emulator/btdev.c b/emulator/btdev.c
index cd355e73a..1b3ad6442 100644
--- a/emulator/btdev.c
+++ b/emulator/btdev.c
@@ -148,6 +148,7 @@ struct btdev {
struct bt_hci_cmd_le_set_cig_params params;
struct bt_hci_cis_params cis;
} __attribute__ ((packed)) le_cig;
+ uint8_t le_iso_path[2];
uint8_t le_local_sk256[32];
@@ -2418,6 +2419,38 @@ static void btdev_reset(struct btdev *btdev)
btdev->le_adv_enable = 0x00;
}
+static void le_setup_iso_path(struct btdev *dev, uint16_t handle,
+ uint8_t dir, uint8_t path)
+{
+ uint8_t status = BT_HCI_ERR_SUCCESS;
+
+ if (!dev->conn || handle != ISO_HANDLE) {
+ status = BT_HCI_ERR_UNKNOWN_CONN_ID;
+ goto done;
+ }
+
+ /* Only support HCI or disabled paths */
+ if (path && path != 0xff) {
+ status = BT_HCI_ERR_INVALID_PARAMETERS;
+ goto done;
+ }
+
+ switch (dir) {
+ case 0x00:
+ dev->le_iso_path[0] = path;
+ break;
+ case 0x01:
+ dev->le_iso_path[1] = path;
+ break;
+ default:
+ status = BT_HCI_ERR_INVALID_PARAMETERS;
+ }
+
+done:
+ cmd_complete(dev, BT_HCI_CMD_LE_SETUP_ISO_PATH, &status,
+ sizeof(status));
+}
+
static void default_cmd(struct btdev *btdev, uint16_t opcode,
const void *data, uint8_t len)
{
@@ -2541,6 +2574,7 @@ static void default_cmd(struct btdev *btdev, uint16_t opcode,
struct bt_hci_rsp_le_set_cig_params params;
uint16_t handle;
} __attribute__ ((packed)) lscp;
+ struct bt_hci_cmd_le_setup_iso_path *lesip;
uint8_t status, page;
switch (opcode) {
@@ -3862,6 +3896,17 @@ static void default_cmd(struct btdev *btdev, uint16_t opcode,
break;
+ case BT_HCI_CMD_LE_SETUP_ISO_PATH:
+ if (btdev->type != BTDEV_TYPE_BREDRLE52)
+ goto unsupported;
+
+ lesip = (void *)data;
+
+ le_setup_iso_path(btdev, le16_to_cpu(lesip->handle),
+ lesip->direction, lesip->path);
+
+ break;
+
case BT_HCI_CMD_LE_SET_HOST_FEATURE:
if (btdev->type != BTDEV_TYPE_BREDRLE52)
goto unsupported;
--
2.25.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 6/6] emulator: Add support for LE Remove ISO Data Path
2020-04-23 21:54 [PATCH v2 1/6] monitor: Remove use of base defines for 5.2 Luiz Augusto von Dentz
` (3 preceding siblings ...)
2020-04-23 21:55 ` [PATCH v2 5/6] emulator: Add support for LE Setup ISO Data Path Luiz Augusto von Dentz
@ 2020-04-23 21:55 ` Luiz Augusto von Dentz
2020-04-24 17:50 ` [PATCH v2 1/6] monitor: Remove use of base defines for 5.2 Luiz Augusto von Dentz
5 siblings, 0 replies; 7+ messages in thread
From: Luiz Augusto von Dentz @ 2020-04-23 21:55 UTC (permalink / raw)
To: linux-bluetooth
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This implements support for LE Remove ISO Data Path command.
---
emulator/btdev.c | 25 +++++++++++++++++++++++++
monitor/bt.h | 2 +-
monitor/packet.c | 2 +-
3 files changed, 27 insertions(+), 2 deletions(-)
diff --git a/emulator/btdev.c b/emulator/btdev.c
index 1b3ad6442..46d71d77e 100644
--- a/emulator/btdev.c
+++ b/emulator/btdev.c
@@ -2508,6 +2508,7 @@ static void default_cmd(struct btdev *btdev, uint16_t opcode,
const struct bt_hci_le_scan_phy *lsp;
const struct bt_hci_cmd_le_set_ext_scan_enable *lsese;
const struct bt_hci_cmd_le_reject_cis *lrcis;
+ const struct bt_hci_cmd_le_remove_iso_path *lerip;
struct bt_hci_rsp_read_default_link_policy rdlp;
struct bt_hci_rsp_read_stored_link_key rslk;
struct bt_hci_rsp_write_stored_link_key wslk;
@@ -3907,6 +3908,30 @@ static void default_cmd(struct btdev *btdev, uint16_t opcode,
break;
+ case BT_HCI_CMD_LE_REMOVE_ISO_PATH:
+ if (btdev->type != BTDEV_TYPE_BREDRLE52)
+ goto unsupported;
+
+ lerip = data;
+ status = BT_HCI_ERR_SUCCESS;
+
+ if (!btdev->conn || le16_to_cpu(lerip->handle) != ISO_HANDLE)
+ status = BT_HCI_ERR_UNKNOWN_CONN_ID;
+
+ switch (lerip->direction) {
+ case 0x00:
+ btdev->le_iso_path[0] = 0x00;
+ break;
+ case 0x01:
+ btdev->le_iso_path[1] = 0x00;
+ break;
+ default:
+ status = BT_HCI_ERR_INVALID_PARAMETERS;
+ }
+
+ cmd_complete(btdev, opcode, &status, sizeof(status));
+ break;
+
case BT_HCI_CMD_LE_SET_HOST_FEATURE:
if (btdev->type != BTDEV_TYPE_BREDRLE52)
goto unsupported;
diff --git a/monitor/bt.h b/monitor/bt.h
index 39ca1e39a..32ea10ca4 100644
--- a/monitor/bt.h
+++ b/monitor/bt.h
@@ -2780,7 +2780,7 @@ struct bt_hci_cmd_le_setup_iso_path {
#define BT_HCI_BIT_LE_REMOVE_ISO_PATH BT_HCI_CMD_BIT(43, 4)
struct bt_hci_cmd_le_remove_iso_path {
uint16_t handle;
- uint8_t path_dir;
+ uint8_t direction;
} __attribute__ ((packed));
#define BT_HCI_CMD_LE_ISO_TX_TEST 0x2070
diff --git a/monitor/packet.c b/monitor/packet.c
index 777a52205..5d8709c42 100644
--- a/monitor/packet.c
+++ b/monitor/packet.c
@@ -8118,7 +8118,7 @@ static void le_remove_iso_path_cmd(const void *data, uint8_t size)
const struct bt_hci_cmd_le_remove_iso_path *cmd = data;
print_field("Connection Handle: %d", le16_to_cpu(cmd->handle));
- print_iso_dir("Data Path Direction", cmd->path_dir);
+ print_iso_dir("Data Path Direction", cmd->direction);
}
static void le_req_peer_sca_cmd(const void *data, uint8_t size)
--
2.25.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/6] monitor: Remove use of base defines for 5.2
2020-04-23 21:54 [PATCH v2 1/6] monitor: Remove use of base defines for 5.2 Luiz Augusto von Dentz
` (4 preceding siblings ...)
2020-04-23 21:55 ` [PATCH v2 6/6] emulator: Add support for LE Remove " Luiz Augusto von Dentz
@ 2020-04-24 17:50 ` Luiz Augusto von Dentz
5 siblings, 0 replies; 7+ messages in thread
From: Luiz Augusto von Dentz @ 2020-04-24 17:50 UTC (permalink / raw)
To: linux-bluetooth
Hi,
On Thu, Apr 23, 2020 at 2:55 PM Luiz Augusto von Dentz
<luiz.dentz@gmail.com> wrote:
>
> From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
>
> Use the allocated value directly instead of base value + offset.
> ---
> monitor/bt.h | 117 ++++++++++++++++++++++++++-------------------------
> 1 file changed, 60 insertions(+), 57 deletions(-)
>
> diff --git a/monitor/bt.h b/monitor/bt.h
> index f9ac6b180..39ca1e39a 100644
> --- a/monitor/bt.h
> +++ b/monitor/bt.h
> @@ -24,11 +24,7 @@
>
> #include <stdint.h>
>
> -#define BT_HCI_CMD_5_2 0x2060
> -#define BT_HCI_BIT_5_2 (8 * 41) + 5
> -#define BT_HCI_SUBEVT_5_2 0x19
> -
> -#define BT_LL_CMD_5_2 0x1f
> +#define BT_HCI_CMD_BIT(_byte, _bit) ((8 * _byte) + _bit)
>
> struct bt_ll_hdr {
> uint8_t preamble;
> @@ -181,7 +177,7 @@ struct bt_ll_clock_acc {
>
> #define BT_LL_CLOCK_ACCURACY_RSP 0x1e
>
> -#define BT_LL_CIS_REQ BT_LL_CMD_5_2
> +#define BT_LL_CIS_REQ 0x1f
> struct bt_ll_cis_req {
> uint8_t cig;
> uint8_t cis;
> @@ -204,14 +200,14 @@ struct bt_ll_cis_req {
> uint16_t conn_event_count;
> } __attribute__ ((packed));
>
> -#define BT_LL_CIS_RSP BT_LL_CMD_5_2 + 1
> +#define BT_LL_CIS_RSP 0x20
> struct bt_ll_cis_rsp {
> uint8_t offset_min[3];
> uint8_t offset_max[3];
> uint16_t conn_event_count;
> } __attribute__ ((packed));
>
> -#define BT_LL_CIS_IND BT_LL_CMD_5_2 + 2
> +#define BT_LL_CIS_IND 0x21
> struct bt_ll_cis_ind {
> uint32_t addr;
> uint8_t cis_offset[3];
> @@ -220,7 +216,7 @@ struct bt_ll_cis_ind {
> uint16_t conn_event_count;
> } __attribute__ ((packed));
>
> -#define BT_LL_CIS_TERMINATE_IND BT_LL_CMD_5_2 + 3
> +#define BT_LL_CIS_TERMINATE_IND 0x22
> struct bt_ll_cis_term_ind {
> uint8_t cig;
> uint8_t cis;
> @@ -2568,8 +2564,8 @@ struct bt_hci_cmd_default_periodic_adv_sync_trans_params {
> uint8_t cte_type;
> } __attribute__ ((packed));
>
> -#define BT_HCI_CMD_LE_READ_BUFFER_SIZE_V2 BT_HCI_CMD_5_2
> -#define BT_HCI_BIT_LE_READ_BUFFER_SIZE_V2 BT_HCI_BIT_5_2
> +#define BT_HCI_CMD_LE_READ_BUFFER_SIZE_V2 0x2060
> +#define BT_HCI_BIT_LE_READ_BUFFER_SIZE_V2 BT_HCI_CMD_BIT(41, 5)
> struct bt_hci_rsp_le_read_buffer_size_v2 {
> uint8_t status;
> uint16_t acl_mtu;
> @@ -2578,8 +2574,8 @@ struct bt_hci_rsp_le_read_buffer_size_v2 {
> uint8_t iso_max_pkt;
> } __attribute__ ((packed));
>
> -#define BT_HCI_CMD_LE_READ_ISO_TX_SYNC BT_HCI_CMD_5_2 + 1
> -#define BT_HCI_BIT_LE_READ_ISO_TX_SYNC BT_HCI_BIT_5_2 + 1
> +#define BT_HCI_CMD_LE_READ_ISO_TX_SYNC 0x2061
> +#define BT_HCI_BIT_LE_READ_ISO_TX_SYNC BT_HCI_CMD_BIT(41, 6)
> struct bt_hci_cmd_le_read_iso_tx_sync {
> uint16_t handle;
> } __attribute__ ((packed));
> @@ -2592,8 +2588,8 @@ struct bt_hci_rsp_le_read_iso_tx_sync {
> uint8_t offset[3];
> } __attribute__ ((packed));
>
> -#define BT_HCI_CMD_LE_SET_CIG_PARAMS BT_HCI_CMD_5_2 + 2
> -#define BT_HCI_BIT_LE_SET_CIG_PARAMS BT_HCI_BIT_5_2 + 2
> +#define BT_HCI_CMD_LE_SET_CIG_PARAMS 0x2062
> +#define BT_HCI_BIT_LE_SET_CIG_PARAMS BT_HCI_CMD_BIT(41, 7)
> struct bt_hci_cis_params {
> uint8_t cis_id;
> uint16_t m_sdu;
> @@ -2624,8 +2620,8 @@ struct bt_hci_rsp_le_set_cig_params {
> uint16_t handle[0];
> } __attribute__ ((packed));
>
> -#define BT_HCI_CMD_LE_SET_CIG_PARAMS_TEST BT_HCI_CMD_5_2 + 3
> -#define BT_HCI_BIT_LE_SET_CIG_PARAMS_TEST BT_HCI_BIT_5_2 + 3
> +#define BT_HCI_CMD_LE_SET_CIG_PARAMS_TEST 0x2063
> +#define BT_HCI_BIT_LE_SET_CIG_PARAMS_TEST BT_HCI_CMD_BIT(42, 0)
> struct bt_hci_cis_params_test {
> uint8_t cis_id;
> uint8_t nse;
> @@ -2653,8 +2649,8 @@ struct bt_hci_cmd_le_set_cig_params_test {
> struct bt_hci_cis_params_test cis[0];
> } __attribute__ ((packed));
>
> -#define BT_HCI_CMD_LE_CREATE_CIS BT_HCI_CMD_5_2 + 4
> -#define BT_HCI_BIT_LE_CREATE_CIS BT_HCI_BIT_5_2 + 4
> +#define BT_HCI_CMD_LE_CREATE_CIS 0x2064
> +#define BT_HCI_BIT_LE_CREATE_CIS BT_HCI_CMD_BIT(42, 1)
> struct bt_hci_cis {
> uint16_t cis_handle;
> uint16_t acl_handle;
> @@ -2665,27 +2661,27 @@ struct bt_hci_cmd_le_create_cis {
> struct bt_hci_cis cis[0];
> } __attribute__ ((packed));
>
> -#define BT_HCI_CMD_LE_REMOVE_CIG BT_HCI_CMD_5_2 + 5
> -#define BT_HCI_BIT_LE_REMOVE_CIG BT_HCI_BIT_5_2 + 5
> +#define BT_HCI_CMD_LE_REMOVE_CIG 0x2065
> +#define BT_HCI_BIT_LE_REMOVE_CIG BT_HCI_CMD_BIT(42, 2)
> struct bt_hci_cmd_le_remove_cig {
> uint8_t cig_id;
> } __attribute__ ((packed));
>
> -#define BT_HCI_CMD_LE_ACCEPT_CIS BT_HCI_CMD_5_2 + 6
> -#define BT_HCI_BIT_LE_ACCEPT_CIS BT_HCI_BIT_5_2 + 6
> +#define BT_HCI_CMD_LE_ACCEPT_CIS 0x2066
> +#define BT_HCI_BIT_LE_ACCEPT_CIS BT_HCI_CMD_BIT(42, 3)
> struct bt_hci_cmd_le_accept_cis {
> uint16_t handle;
> } __attribute__ ((packed));
>
> -#define BT_HCI_CMD_LE_REJECT_CIS BT_HCI_CMD_5_2 + 7
> -#define BT_HCI_BIT_LE_REJECT_CIS BT_HCI_BIT_5_2 + 7
> +#define BT_HCI_CMD_LE_REJECT_CIS 0x2067
> +#define BT_HCI_BIT_LE_REJECT_CIS BT_HCI_CMD_BIT(42, 4)
> struct bt_hci_cmd_le_reject_cis {
> uint16_t handle;
> uint8_t reason;
> } __attribute__ ((packed));
>
> -#define BT_HCI_CMD_LE_CREATE_BIG BT_HCI_CMD_5_2 + 8
> -#define BT_HCI_BIT_LE_CREATE_BIG BT_HCI_BIT_5_2 + 8
> +#define BT_HCI_CMD_LE_CREATE_BIG 0x2068
> +#define BT_HCI_BIT_LE_CREATE_BIG BT_HCI_CMD_BIT(42, 5)
> struct bt_hci_bis {
> uint8_t sdu_interval[3];
> uint16_t sdu;
> @@ -2705,8 +2701,8 @@ struct bt_hci_cmd_le_create_big {
> struct bt_hci_bis bis[0];
> } __attribute__ ((packed));
>
> -#define BT_HCI_CMD_LE_CREATE_BIG_TEST BT_HCI_CMD_5_2 + 9
> -#define BT_HCI_BIT_LE_CREATE_BIG_TEST BT_HCI_BIT_5_2 + 9
> +#define BT_HCI_CMD_LE_CREATE_BIG_TEST 0x2069
> +#define BT_HCI_BIT_LE_CREATE_BIG_TEST BT_HCI_CMD_BIT(42, 6)
> struct bt_hci_bis_test {
> uint8_t sdu_interval[3];
> uint16_t iso_interval;
> @@ -2731,15 +2727,15 @@ struct bt_hci_cmd_le_create_big_test {
> struct bt_hci_bis_test bis[0];
> } __attribute__ ((packed));
>
> -#define BT_HCI_CMD_LE_TERM_BIG BT_HCI_CMD_5_2 + 10
> -#define BT_HCI_BIT_LE_TERM_BIG BT_HCI_BIT_5_2 + 10
> +#define BT_HCI_CMD_LE_TERM_BIG 0x206a
> +#define BT_HCI_BIT_LE_TERM_BIG BT_HCI_CMD_BIT(42, 7)
> struct bt_hci_cmd_le_term_big {
> uint8_t big_id;
> uint8_t reason;
> } __attribute__ ((packed));
>
> -#define BT_HCI_CMD_LE_BIG_CREATE_SYNC BT_HCI_CMD_5_2 + 11
> -#define BT_HCI_BIT_LE_BIG_CREATE_SYNC BT_HCI_BIT_5_2 + 11
> +#define BT_HCI_CMD_LE_BIG_CREATE_SYNC 0x206b
> +#define BT_HCI_BIT_LE_BIG_CREATE_SYNC BT_HCI_CMD_BIT(43, 0)
> struct bt_hci_bis_sync {
> } __attribute__ ((packed));
>
> @@ -2754,20 +2750,20 @@ struct bt_hci_cmd_le_big_create_sync {
> struct bt_hci_bis_sync bis[0];
> } __attribute__ ((packed));
>
> -#define BT_HCI_CMD_LE_BIG_TERM_SYNC BT_HCI_CMD_5_2 + 12
> -#define BT_HCI_BIT_LE_BIG_TERM_SYNC BT_HCI_BIT_5_2 + 12
> +#define BT_HCI_CMD_LE_BIG_TERM_SYNC 0x206c
> +#define BT_HCI_BIT_LE_BIG_TERM_SYNC BT_HCI_CMD_BIT(43, 1)
> struct bt_hci_cmd_le_big_term_sync {
> uint8_t big_id;
> } __attribute__ ((packed));
>
> -#define BT_HCI_CMD_LE_REQ_PEER_SCA BT_HCI_CMD_5_2 + 13
> -#define BT_HCI_BIT_LE_REQ_PEER_SCA BT_HCI_BIT_5_2 + 13
> +#define BT_HCI_CMD_LE_REQ_PEER_SCA 0x206d
> +#define BT_HCI_BIT_LE_REQ_PEER_SCA BT_HCI_CMD_BIT(43, 2)
> struct bt_hci_cmd_le_req_peer_sca {
> uint16_t handle;
> } __attribute__ ((packed));
>
> -#define BT_HCI_CMD_LE_SETUP_ISO_PATH BT_HCI_CMD_5_2 + 14
> -#define BT_HCI_BIT_LE_SETUP_ISO_PATH BT_HCI_BIT_5_2 + 14
> +#define BT_HCI_CMD_LE_SETUP_ISO_PATH 0x206e
> +#define BT_HCI_BIT_LE_SETUP_ISO_PATH BT_HCI_CMD_BIT(43, 3)
> struct bt_hci_cmd_le_setup_iso_path {
> uint16_t handle;
> uint8_t direction;
> @@ -2780,24 +2776,31 @@ struct bt_hci_cmd_le_setup_iso_path {
> uint8_t codec_cfg[0];
> } __attribute__ ((packed));
>
> -#define BT_HCI_CMD_LE_REMOVE_ISO_PATH BT_HCI_CMD_5_2 + 15
> -#define BT_HCI_BIT_LE_REMOVE_ISO_PATH BT_HCI_BIT_5_2 + 15
> +#define BT_HCI_CMD_LE_REMOVE_ISO_PATH 0x206f
> +#define BT_HCI_BIT_LE_REMOVE_ISO_PATH BT_HCI_CMD_BIT(43, 4)
> struct bt_hci_cmd_le_remove_iso_path {
> uint16_t handle;
> uint8_t path_dir;
> } __attribute__ ((packed));
>
> -#define BT_HCI_CMD_LE_ISO_TX_TEST BT_HCI_CMD_5_2 + 16
> -#define BT_HCI_BIT_LE_ISO_TX_TEST BT_HCI_BIT_5_2 + 16
> +#define BT_HCI_CMD_LE_ISO_TX_TEST 0x2070
> +#define BT_HCI_BIT_LE_ISO_TX_TEST BT_HCI_CMD_BIT(43, 5)
> +
> +#define BT_HCI_CMD_LE_ISO_RX_TEST 0x2071
> +#define BT_HCI_BIT_LE_ISO_RX_TEST BT_HCI_CMD_BIT(43, 6)
>
> -#define BT_HCI_CMD_LE_ISO_RX_TEST BT_HCI_CMD_5_2 + 17
> -#define BT_HCI_BIT_LE_ISO_RX_TEST BT_HCI_BIT_5_2 + 17
> +#define BT_HCI_CMD_LE_ISO_READ_TEST_COUNTER 0x2072
> +#define BT_HCI_BIT_LE_ISO_READ_TEST_COUNTER BT_HCI_CMD_BIT(43, 7)
>
> -#define BT_HCI_CMD_LE_ISO_READ_TEST_COUNTER BT_HCI_CMD_5_2 + 18
> -#define BT_HCI_BIT_LE_ISO_READ_TEST_COUNTER BT_HCI_BIT_5_2 + 18
> +#define BT_HCI_CMD_LE_ISO_TEST_END 0x2073
> +#define BT_HCI_BIT_LE_ISO_TEST_END BT_HCI_CMD_BIT(44, 0)
>
> -#define BT_HCI_CMD_LE_ISO_TEST_END BT_HCI_CMD_5_2 + 19
> -#define BT_HCI_BIT_LE_ISO_TEST_END BT_HCI_BIT_5_2 + 19
> +#define BT_HCI_CMD_LE_SET_HOST_FEATURE 0x2074
> +#define BT_HCI_BIT_LE_SET_HOST_FEATURE BT_HCI_CMD_BIT(44, 1)
> +struct bt_hci_cmd_le_set_host_feature {
> + uint8_t bit_number;
> + uint8_t bit_value;
> +} __packed;
>
> #define BT_HCI_EVT_INQUIRY_COMPLETE 0x01
> struct bt_hci_evt_inquiry_complete {
> @@ -3155,7 +3158,7 @@ struct bt_hci_evt_keypress_notify {
>
> #define BT_HCI_EVT_REMOTE_HOST_FEATURES_NOTIFY 0x3d
> struct bt_hci_evt_remote_host_features_notify {
> - uint8_t bdaddr[6];
> +uint8_t bdaddr[6];
> uint8_t features[8];
> } __attribute__ ((packed));
>
> @@ -3498,7 +3501,7 @@ struct bt_hci_evt_le_per_adv_sync_trans_rec {
> uint8_t clock_accuracy;
> } __attribute__ ((packed));
>
> -#define BT_HCI_EVT_LE_CIS_ESTABLISHED BT_HCI_SUBEVT_5_2
> +#define BT_HCI_EVT_LE_CIS_ESTABLISHED 0x19
> struct bt_hci_evt_le_cis_established {
> uint8_t status;
> uint16_t conn_handle;
> @@ -3518,7 +3521,7 @@ struct bt_hci_evt_le_cis_established {
> uint16_t interval;
> } __attribute__ ((packed));
>
> -#define BT_HCI_EVT_LE_CIS_REQ BT_HCI_SUBEVT_5_2 + 1
> +#define BT_HCI_EVT_LE_CIS_REQ 0x1a
> struct bt_hci_evt_le_cis_req {
> uint16_t acl_handle;
> uint16_t cis_handle;
> @@ -3526,7 +3529,7 @@ struct bt_hci_evt_le_cis_req {
> uint8_t cis_id;
> } __attribute__ ((packed));
>
> -#define BT_HCI_EVT_LE_BIG_COMPLETE BT_HCI_SUBEVT_5_2 + 2
> +#define BT_HCI_EVT_LE_BIG_COMPLETE 0x1b
> struct bt_hci_evt_le_big_complete {
> uint8_t status;
> uint8_t big_id;
> @@ -3537,13 +3540,13 @@ struct bt_hci_evt_le_big_complete {
> uint16_t handle[0];
> } __attribute__ ((packed));
>
> -#define BT_HCI_EVT_LE_BIG_TERMINATE BT_HCI_SUBEVT_5_2 + 3
> +#define BT_HCI_EVT_LE_BIG_TERMINATE 0x1c
> struct bt_hci_evt_le_big_terminate {
> uint8_t reason;
> uint8_t big_id;
> } __attribute__ ((packed));
>
> -#define BT_HCI_EVT_LE_BIG_SYNC_ESTABILISHED BT_HCI_SUBEVT_5_2 + 4
> +#define BT_HCI_EVT_LE_BIG_SYNC_ESTABILISHED 0x1d
> struct bt_hci_evt_le_big_sync_estabilished {
> uint8_t status;
> uint8_t big_id;
> @@ -3552,13 +3555,13 @@ struct bt_hci_evt_le_big_sync_estabilished {
> uint16_t handle[0];
> } __attribute__ ((packed));
>
> -#define BT_HCI_EVT_LE_BIG_SYNC_LOST BT_HCI_SUBEVT_5_2 + 5
> +#define BT_HCI_EVT_LE_BIG_SYNC_LOST 0x1e
> struct bt_hci_evt_le_big_sync_lost {
> uint8_t big_id;
> uint8_t reason;
> } __attribute__ ((packed));
>
> -#define BT_HCI_EVT_LE_REQ_PEER_SCA_COMPLETE BT_HCI_SUBEVT_5_2 + 6
> +#define BT_HCI_EVT_LE_REQ_PEER_SCA_COMPLETE 0x1f
> struct bt_hci_evt_le_req_peer_sca_complete {
> uint8_t status;
> uint16_t handle;
> --
> 2.25.3
Pushed.
--
Luiz Augusto von Dentz
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2020-04-24 17:51 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-23 21:54 [PATCH v2 1/6] monitor: Remove use of base defines for 5.2 Luiz Augusto von Dentz
2020-04-23 21:54 ` [PATCH v2 2/6] monitor: Add decoding support for HCI LE Set Host Feature Luiz Augusto von Dentz
2020-04-23 21:54 ` [PATCH v2 3/6] emulator: Fix version number of ISO related features Luiz Augusto von Dentz
2020-04-23 21:54 ` [PATCH v2 4/6] emulator: Add support for LE Set Host Feature Luiz Augusto von Dentz
2020-04-23 21:55 ` [PATCH v2 5/6] emulator: Add support for LE Setup ISO Data Path Luiz Augusto von Dentz
2020-04-23 21:55 ` [PATCH v2 6/6] emulator: Add support for LE Remove " Luiz Augusto von Dentz
2020-04-24 17:50 ` [PATCH v2 1/6] monitor: Remove use of base defines for 5.2 Luiz Augusto von Dentz
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.