All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH BlueZ 1/2] Bluetooth: Add ADV Monitor events to btmon parser
@ 2022-09-07 19:14 Brian Gix
  2022-09-07 19:14 ` [PATCH BlueZ 2/2] Bluetooth: Add mesh MGMT cmds/events " Brian Gix
  2022-09-07 19:34 ` [PATCH BlueZ 1/2] Bluetooth: Add ADV Monitor events " Luiz Augusto von Dentz
  0 siblings, 2 replies; 4+ messages in thread
From: Brian Gix @ 2022-09-07 19:14 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: luiz.dentz, brian.gix

Signed-off-by: Brian Gix <brian.gix@intel.com>
---
 monitor/packet.c | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/monitor/packet.c b/monitor/packet.c
index 46587e087..7447e1565 100644
--- a/monitor/packet.c
+++ b/monitor/packet.c
@@ -14914,6 +14914,37 @@ static void mgmt_controller_resume_evt(const void *data, uint16_t size)
 	mgmt_print_address(data, addr_type);
 }
 
+static void mgmt_adv_monitor_device_found_evt(const void *data, uint16_t size)
+{
+	uint8_t handle = get_le16(data);
+	const uint8_t *addr = data + 2;
+	uint8_t addr_type = get_u8(data + 8);
+	int8_t rssi = get_s8(data + 9);
+	uint32_t flags = get_le32(data + 10);
+	uint16_t ad_data_len = get_le16(data + 14);
+	const uint8_t *ad_data = data + 16;
+
+	print_field("Handle: %d", handle);
+	print_bdaddr(addr);
+	print_field("Addr Type: %d", addr_type);
+	print_field("RSSI: %d", rssi);
+	mgmt_print_device_flags(flags);
+	print_field("AD Data Len: %d", ad_data_len);
+	size -= 16;
+	print_hex_field("AD Data: ", ad_data, size);
+}
+
+static void mgmt_adv_monitor_device_lost_evt(const void *data, uint16_t size)
+{
+	uint8_t handle = get_le16(data);
+	const uint8_t *addr = data + 2;
+	uint8_t addr_type = get_u8(data + 8);
+
+	print_field("Handle: %d", handle);
+	print_bdaddr(addr);
+	print_field("Addr Type: %d", addr_type);
+}
+
 static const struct mgmt_data mgmt_event_table[] = {
 	{ 0x0001, "Command Complete",
 			mgmt_command_complete_evt, 3, false },
@@ -15003,6 +15034,10 @@ static const struct mgmt_data mgmt_event_table[] = {
 			mgmt_controller_suspend_evt, 1, true },
 	{ 0x002e, "Controller Resumed",
 			mgmt_controller_resume_evt, 8, true },
+	{ 0x002f, "ADV Monitor Device Found",
+			mgmt_adv_monitor_device_found_evt, 16, false },
+	{ 0x0030, "Controller Resumed",
+			mgmt_adv_monitor_device_lost_evt, 9, true },
 	{ }
 };
 
-- 
2.37.2


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH BlueZ 2/2] Bluetooth: Add mesh MGMT cmds/events to btmon parser
  2022-09-07 19:14 [PATCH BlueZ 1/2] Bluetooth: Add ADV Monitor events to btmon parser Brian Gix
@ 2022-09-07 19:14 ` Brian Gix
  2022-09-07 19:35   ` Luiz Augusto von Dentz
  2022-09-07 19:34 ` [PATCH BlueZ 1/2] Bluetooth: Add ADV Monitor events " Luiz Augusto von Dentz
  1 sibling, 1 reply; 4+ messages in thread
From: Brian Gix @ 2022-09-07 19:14 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: luiz.dentz, brian.gix

Signed-off-by: Brian Gix <brian.gix@intel.com>
---
 monitor/packet.c | 111 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 111 insertions(+)

diff --git a/monitor/packet.c b/monitor/packet.c
index 7447e1565..9d4a5e50d 100644
--- a/monitor/packet.c
+++ b/monitor/packet.c
@@ -14191,6 +14191,74 @@ static void mgmt_remove_adv_monitor_patterns_rsp(const void *data,
 	print_field("Handle: %d", handle);
 }
 
+static void mgmt_set_mesh_receiver_cmd(const void *data, uint16_t size)
+{
+	uint8_t enable = get_u8(data);
+	uint16_t window = get_le16(data + 1);
+	uint16_t period = get_le16(data + 3);
+	uint8_t num_ad_types = get_u8(data + 5);
+	const uint8_t *ad_types = data + 6;
+
+	print_field("Enable: %d", enable);
+	print_field("Window: %d", window);
+	print_field("Period: %d", period);
+	print_field("Num AD Types: %d", num_ad_types);
+	size -= 6;
+
+	while (size--)
+		print_field("  AD Type: %d", *ad_types++);
+}
+
+static void mgmt_read_mesh_features_rsp(const void *data, uint16_t size)
+{
+	uint16_t index = get_le16(data);
+	uint8_t max_handles = get_u8(data + 2);
+	uint8_t used_handles = get_u8(data + 3);
+	const uint8_t *handles = data + 4;
+
+	print_field("Index: %d", index);
+	print_field("Max Handles: %d", max_handles);
+	print_field("Used Handles: %d", used_handles);
+	size -= 4;
+
+	while (size--)
+		print_field("  Used Handle: %d", *handles++);
+}
+
+static void mgmt_mesh_send_cmd(const void *data, uint16_t size)
+{
+	const uint8_t *addr = data;
+	uint8_t addr_type = get_u8(data + 6);
+	uint64_t instant = get_le64(data + 7);
+	uint16_t delay = get_le16(data + 15);
+	uint8_t cnt = get_u8(data + 17);
+	uint8_t adv_data_len = get_u8(data + 18);
+
+	data += 19;
+	size -= 19;
+	print_bdaddr(addr);
+	print_field("Addr Type: %d", addr_type);
+	print_field("Instant: 0x%16.16" PRIx64, instant);
+	print_field("Delay: %d", delay);
+	print_field("Count: %d", cnt);
+	print_field("Data Length: %d", adv_data_len);
+	print_hex_field("Data: ", data, size);
+}
+
+static void mgmt_mesh_send_rsp(const void *data, uint16_t size)
+{
+	uint8_t handle = get_u8(data);
+
+	print_field("Handle: %d", handle);
+}
+
+static void mgmt_mesh_send_cancel_cmd(const void *data, uint16_t size)
+{
+	uint8_t handle = get_u8(data);
+
+	print_field("Handle: %d", handle);
+}
+
 struct mgmt_data {
 	uint16_t opcode;
 	const char *str;
@@ -14448,6 +14516,18 @@ static const struct mgmt_data mgmt_command_table[] = {
 				mgmt_add_adv_monitor_patterns_rssi_cmd, 8,
 									false,
 				mgmt_add_adv_monitor_patterns_rsp, 2, true},
+	{ 0x0057, "Set Mesh Receiver",
+				mgmt_set_mesh_receiver_cmd, 6, false,
+				mgmt_null_rsp, 0, true},
+	{ 0x0058, "Read Mesh Features",
+				mgmt_null_cmd, 0, true,
+				mgmt_read_mesh_features_rsp, 4, false},
+	{ 0x0059, "Mesh Send",
+				mgmt_mesh_send_cmd, 19, false,
+				mgmt_mesh_send_rsp, 1, true},
+	{ 0x0056, "Mesh Send Cancel",
+				mgmt_mesh_send_cancel_cmd, 1, true,
+				mgmt_null_rsp, 0, true},
 	{ }
 };
 
@@ -14945,6 +15025,33 @@ static void mgmt_adv_monitor_device_lost_evt(const void *data, uint16_t size)
 	print_field("Addr Type: %d", addr_type);
 }
 
+static void mgmt_mesh_device_found_evt(const void *data, uint16_t size)
+{
+	const uint8_t *addr = data;
+	uint8_t addr_type = get_u8(data + 6);
+	int8_t rssi = get_s8(data + 7);
+	uint64_t instant = get_le64(data + 8);
+	uint32_t flags = get_le32(data + 16);
+	uint16_t eir_len = get_le16(data + 20);
+	const uint8_t *eir_data = data + 22;
+
+	print_bdaddr(addr);
+	print_field("Addr Type: %d", addr_type);
+	print_field("RSSI: %d", rssi);
+	print_field("Instant: 0x%16.16" PRIx64, instant);
+	mgmt_print_device_flags(flags);
+	print_field("EIR Length: %d", eir_len);
+	size -= 22;
+	print_hex_field("EIR Data: ", eir_data, size);
+}
+
+static void mgmt_mesh_packet_cmplt_evt(const void *data, uint16_t size)
+{
+	uint8_t handle = get_u8(data);
+
+	print_field("Handle: %d", handle);
+}
+
 static const struct mgmt_data mgmt_event_table[] = {
 	{ 0x0001, "Command Complete",
 			mgmt_command_complete_evt, 3, false },
@@ -15038,6 +15145,10 @@ static const struct mgmt_data mgmt_event_table[] = {
 			mgmt_adv_monitor_device_found_evt, 16, false },
 	{ 0x0030, "Controller Resumed",
 			mgmt_adv_monitor_device_lost_evt, 9, true },
+	{ 0x0031, "Mesh Device Found",
+			mgmt_mesh_device_found_evt, 22, false },
+	{ 0x0032, "Mesh Packet Complete",
+			mgmt_mesh_packet_cmplt_evt, 1, true },
 	{ }
 };
 
-- 
2.37.2


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH BlueZ 1/2] Bluetooth: Add ADV Monitor events to btmon parser
  2022-09-07 19:14 [PATCH BlueZ 1/2] Bluetooth: Add ADV Monitor events to btmon parser Brian Gix
  2022-09-07 19:14 ` [PATCH BlueZ 2/2] Bluetooth: Add mesh MGMT cmds/events " Brian Gix
@ 2022-09-07 19:34 ` Luiz Augusto von Dentz
  1 sibling, 0 replies; 4+ messages in thread
From: Luiz Augusto von Dentz @ 2022-09-07 19:34 UTC (permalink / raw)
  To: Brian Gix; +Cc: linux-bluetooth@vger.kernel.org

Hi Brian,

On Wed, Sep 7, 2022 at 12:15 PM Brian Gix <brian.gix@intel.com> wrote:
>
> Signed-off-by: Brian Gix <brian.gix@intel.com>

We don't use signed-off-by in userspace, also it would be great to
have a sample output of these changes in the patch description.

> ---
>  monitor/packet.c | 35 +++++++++++++++++++++++++++++++++++
>  1 file changed, 35 insertions(+)
>
> diff --git a/monitor/packet.c b/monitor/packet.c
> index 46587e087..7447e1565 100644
> --- a/monitor/packet.c
> +++ b/monitor/packet.c
> @@ -14914,6 +14914,37 @@ static void mgmt_controller_resume_evt(const void *data, uint16_t size)
>         mgmt_print_address(data, addr_type);
>  }
>
> +static void mgmt_adv_monitor_device_found_evt(const void *data, uint16_t size)
> +{
> +       uint8_t handle = get_le16(data);
> +       const uint8_t *addr = data + 2;
> +       uint8_t addr_type = get_u8(data + 8);
> +       int8_t rssi = get_s8(data + 9);
> +       uint32_t flags = get_le32(data + 10);
> +       uint16_t ad_data_len = get_le16(data + 14);
> +       const uint8_t *ad_data = data + 16;
> +
> +       print_field("Handle: %d", handle);
> +       print_bdaddr(addr);
> +       print_field("Addr Type: %d", addr_type);
> +       print_field("RSSI: %d", rssi);
> +       mgmt_print_device_flags(flags);
> +       print_field("AD Data Len: %d", ad_data_len);
> +       size -= 16;
> +       print_hex_field("AD Data: ", ad_data, size);
> +}
> +
> +static void mgmt_adv_monitor_device_lost_evt(const void *data, uint16_t size)
> +{
> +       uint8_t handle = get_le16(data);
> +       const uint8_t *addr = data + 2;
> +       uint8_t addr_type = get_u8(data + 8);
> +
> +       print_field("Handle: %d", handle);
> +       print_bdaddr(addr);
> +       print_field("Addr Type: %d", addr_type);
> +}
> +
>  static const struct mgmt_data mgmt_event_table[] = {
>         { 0x0001, "Command Complete",
>                         mgmt_command_complete_evt, 3, false },
> @@ -15003,6 +15034,10 @@ static const struct mgmt_data mgmt_event_table[] = {
>                         mgmt_controller_suspend_evt, 1, true },
>         { 0x002e, "Controller Resumed",
>                         mgmt_controller_resume_evt, 8, true },
> +       { 0x002f, "ADV Monitor Device Found",
> +                       mgmt_adv_monitor_device_found_evt, 16, false },
> +       { 0x0030, "Controller Resumed",
> +                       mgmt_adv_monitor_device_lost_evt, 9, true },
>         { }
>  };
>
> --
> 2.37.2
>


-- 
Luiz Augusto von Dentz

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH BlueZ 2/2] Bluetooth: Add mesh MGMT cmds/events to btmon parser
  2022-09-07 19:14 ` [PATCH BlueZ 2/2] Bluetooth: Add mesh MGMT cmds/events " Brian Gix
@ 2022-09-07 19:35   ` Luiz Augusto von Dentz
  0 siblings, 0 replies; 4+ messages in thread
From: Luiz Augusto von Dentz @ 2022-09-07 19:35 UTC (permalink / raw)
  To: Brian Gix; +Cc: linux-bluetooth@vger.kernel.org

Hi Brian,

On Wed, Sep 7, 2022 at 12:15 PM Brian Gix <brian.gix@intel.com> wrote:
>
> Signed-off-by: Brian Gix <brian.gix@intel.com>

Ditto, as mentioned on previous patch please add a sample output to
the patch description.

> ---
>  monitor/packet.c | 111 +++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 111 insertions(+)
>
> diff --git a/monitor/packet.c b/monitor/packet.c
> index 7447e1565..9d4a5e50d 100644
> --- a/monitor/packet.c
> +++ b/monitor/packet.c
> @@ -14191,6 +14191,74 @@ static void mgmt_remove_adv_monitor_patterns_rsp(const void *data,
>         print_field("Handle: %d", handle);
>  }
>
> +static void mgmt_set_mesh_receiver_cmd(const void *data, uint16_t size)
> +{
> +       uint8_t enable = get_u8(data);
> +       uint16_t window = get_le16(data + 1);
> +       uint16_t period = get_le16(data + 3);
> +       uint8_t num_ad_types = get_u8(data + 5);
> +       const uint8_t *ad_types = data + 6;
> +
> +       print_field("Enable: %d", enable);
> +       print_field("Window: %d", window);
> +       print_field("Period: %d", period);
> +       print_field("Num AD Types: %d", num_ad_types);
> +       size -= 6;
> +
> +       while (size--)
> +               print_field("  AD Type: %d", *ad_types++);
> +}
> +
> +static void mgmt_read_mesh_features_rsp(const void *data, uint16_t size)
> +{
> +       uint16_t index = get_le16(data);
> +       uint8_t max_handles = get_u8(data + 2);
> +       uint8_t used_handles = get_u8(data + 3);
> +       const uint8_t *handles = data + 4;
> +
> +       print_field("Index: %d", index);
> +       print_field("Max Handles: %d", max_handles);
> +       print_field("Used Handles: %d", used_handles);
> +       size -= 4;
> +
> +       while (size--)
> +               print_field("  Used Handle: %d", *handles++);
> +}
> +
> +static void mgmt_mesh_send_cmd(const void *data, uint16_t size)
> +{
> +       const uint8_t *addr = data;
> +       uint8_t addr_type = get_u8(data + 6);
> +       uint64_t instant = get_le64(data + 7);
> +       uint16_t delay = get_le16(data + 15);
> +       uint8_t cnt = get_u8(data + 17);
> +       uint8_t adv_data_len = get_u8(data + 18);
> +
> +       data += 19;
> +       size -= 19;
> +       print_bdaddr(addr);
> +       print_field("Addr Type: %d", addr_type);
> +       print_field("Instant: 0x%16.16" PRIx64, instant);
> +       print_field("Delay: %d", delay);
> +       print_field("Count: %d", cnt);
> +       print_field("Data Length: %d", adv_data_len);
> +       print_hex_field("Data: ", data, size);
> +}
> +
> +static void mgmt_mesh_send_rsp(const void *data, uint16_t size)
> +{
> +       uint8_t handle = get_u8(data);
> +
> +       print_field("Handle: %d", handle);
> +}
> +
> +static void mgmt_mesh_send_cancel_cmd(const void *data, uint16_t size)
> +{
> +       uint8_t handle = get_u8(data);
> +
> +       print_field("Handle: %d", handle);
> +}
> +
>  struct mgmt_data {
>         uint16_t opcode;
>         const char *str;
> @@ -14448,6 +14516,18 @@ static const struct mgmt_data mgmt_command_table[] = {
>                                 mgmt_add_adv_monitor_patterns_rssi_cmd, 8,
>                                                                         false,
>                                 mgmt_add_adv_monitor_patterns_rsp, 2, true},
> +       { 0x0057, "Set Mesh Receiver",
> +                               mgmt_set_mesh_receiver_cmd, 6, false,
> +                               mgmt_null_rsp, 0, true},
> +       { 0x0058, "Read Mesh Features",
> +                               mgmt_null_cmd, 0, true,
> +                               mgmt_read_mesh_features_rsp, 4, false},
> +       { 0x0059, "Mesh Send",
> +                               mgmt_mesh_send_cmd, 19, false,
> +                               mgmt_mesh_send_rsp, 1, true},
> +       { 0x0056, "Mesh Send Cancel",
> +                               mgmt_mesh_send_cancel_cmd, 1, true,
> +                               mgmt_null_rsp, 0, true},
>         { }
>  };
>
> @@ -14945,6 +15025,33 @@ static void mgmt_adv_monitor_device_lost_evt(const void *data, uint16_t size)
>         print_field("Addr Type: %d", addr_type);
>  }
>
> +static void mgmt_mesh_device_found_evt(const void *data, uint16_t size)
> +{
> +       const uint8_t *addr = data;
> +       uint8_t addr_type = get_u8(data + 6);
> +       int8_t rssi = get_s8(data + 7);
> +       uint64_t instant = get_le64(data + 8);
> +       uint32_t flags = get_le32(data + 16);
> +       uint16_t eir_len = get_le16(data + 20);
> +       const uint8_t *eir_data = data + 22;
> +
> +       print_bdaddr(addr);
> +       print_field("Addr Type: %d", addr_type);
> +       print_field("RSSI: %d", rssi);
> +       print_field("Instant: 0x%16.16" PRIx64, instant);
> +       mgmt_print_device_flags(flags);
> +       print_field("EIR Length: %d", eir_len);
> +       size -= 22;
> +       print_hex_field("EIR Data: ", eir_data, size);
> +}
> +
> +static void mgmt_mesh_packet_cmplt_evt(const void *data, uint16_t size)
> +{
> +       uint8_t handle = get_u8(data);
> +
> +       print_field("Handle: %d", handle);
> +}
> +
>  static const struct mgmt_data mgmt_event_table[] = {
>         { 0x0001, "Command Complete",
>                         mgmt_command_complete_evt, 3, false },
> @@ -15038,6 +15145,10 @@ static const struct mgmt_data mgmt_event_table[] = {
>                         mgmt_adv_monitor_device_found_evt, 16, false },
>         { 0x0030, "Controller Resumed",
>                         mgmt_adv_monitor_device_lost_evt, 9, true },
> +       { 0x0031, "Mesh Device Found",
> +                       mgmt_mesh_device_found_evt, 22, false },
> +       { 0x0032, "Mesh Packet Complete",
> +                       mgmt_mesh_packet_cmplt_evt, 1, true },
>         { }
>  };
>
> --
> 2.37.2
>


-- 
Luiz Augusto von Dentz

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-09-07 19:35 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-09-07 19:14 [PATCH BlueZ 1/2] Bluetooth: Add ADV Monitor events to btmon parser Brian Gix
2022-09-07 19:14 ` [PATCH BlueZ 2/2] Bluetooth: Add mesh MGMT cmds/events " Brian Gix
2022-09-07 19:35   ` Luiz Augusto von Dentz
2022-09-07 19:34 ` [PATCH BlueZ 1/2] Bluetooth: Add ADV Monitor events " 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.