Diff between 9e627576f0ce8933143df7fd51d19971f9ae53dd and 70e6a4a9064a8debf8881880b04e64ea281ea5f4

Changed Files

File Additions Deletions Status
monitor/bt.h +9 -0 modified
monitor/packet.c +17 -0 modified

Full Patch

diff --git a/monitor/bt.h b/monitor/bt.h
index 7d865c9..ac4f976 100644
--- a/monitor/bt.h
+++ b/monitor/bt.h
@@ -1692,6 +1692,15 @@ struct bt_hci_cmd_write_ext_inquiry_length {
 	uint16_t interval;
 } __attribute__ ((packed));
 
+#define BT_HCI_CMD_CONFIG_DATA_PATH		0x0c83
+#define BT_HCI_BIT_CONFIG_DATA_PATH		BT_HCI_CMD_BIT(45, 5)
+struct bt_hci_cmd_config_data_path {
+	uint8_t  dir;
+	uint8_t  id;
+	uint8_t  vnd_config_len;
+	uint8_t  vnd_config[0];
+} __attribute__ ((packed));
+
 #define BT_HCI_CMD_READ_LOCAL_VERSION		0x1001
 struct bt_hci_rsp_read_local_version {
 	uint8_t  status;
diff --git a/monitor/packet.c b/monitor/packet.c
index acec32b..fb26502 100644
--- a/monitor/packet.c
+++ b/monitor/packet.c
@@ -6061,6 +6061,17 @@ static void read_local_ctrl_delay_cmd(const void *data, uint8_t size)
 	print_field("Length Codec Configuration: %u", cmd->codec_cfg_len);
 }
 
+static void config_data_path_cmd(const void *data, uint8_t size)
+{
+	const struct bt_hci_cmd_config_data_path *cmd = data;
+
+	print_path_direction("Direction", cmd->dir);
+	print_field("ID: %u", cmd->id);
+	print_field("Vendor Specific Config Length: %u", cmd->vnd_config_len);
+	print_hex_field("Vendor Specific Config", cmd->vnd_config,
+						cmd->vnd_config_len);
+}
+
 static void print_usec_interval(const char *prefix, const uint8_t interval[3])
 {
 	uint32_t u24 = 0;
@@ -8844,6 +8855,12 @@ static const struct opcode_data opcode_table[] = {
 		read_local_ctrl_delay_rsp,
 		sizeof(struct bt_hci_rsp_read_local_ctrl_delay), true
 	},
+	{ BT_HCI_CMD_CONFIG_DATA_PATH, BT_HCI_BIT_CONFIG_DATA_PATH,
+		"Configure Data Path",
+		config_data_path_cmd,
+		sizeof(struct bt_hci_cmd_config_data_path), false,
+		status_rsp, 1, true
+	},
 
 	/* OGF 5 - Status Parameter */
 	{ 0x1401, 122, "Read Failed Contact Counter",