From: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx> 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