diff mbox series

[v2,6/6] emulator: Add support for LE Remove ISO Data Path

Message ID 20200423215501.427266-6-luiz.dentz@gmail.com (mailing list archive)
State Accepted
Delegated to: Luiz Von Dentz
Headers show
Series [v2,1/6] monitor: Remove use of base defines for 5.2 | expand

Commit Message

Luiz Augusto von Dentz April 23, 2020, 9:55 p.m. UTC
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 mbox series

Patch

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)