linux-bluetooth.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/3] monitor: Decode LE Periodic Advertising Sync Established Event
@ 2019-05-22  9:24 Szymon Janc
  2019-05-22  9:24 ` [PATCH 2/3] monitor: Decode LE Periodic Advertising Report Event Szymon Janc
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Szymon Janc @ 2019-05-22  9:24 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Szymon Janc

> HCI Event: LE Meta Event (0x3e) plen 16                                                                                                                                                             #976 [hci1] 607.133703
      LE Periodic Advertising Sync Established (0x0e)
        Status: Success (0x00)
        Sync handle: 0
        Advertising SID: 0x06
        Advertiser address type: Random (0x01)
        Advertiser address: FF:00:00:00:00:AA (Static)
        Advertiser PHY: LE 1M (0x01)
        Periodic advertising invteral: 50.00 msec (0x0028)
        Advertiser clock accuracy: 0x04
---
 monitor/bt.h     | 12 ++++++++++++
 monitor/packet.c | 21 ++++++++++++++++++++-
 2 files changed, 32 insertions(+), 1 deletion(-)

diff --git a/monitor/bt.h b/monitor/bt.h
index d32d3a153..6494c928f 100644
--- a/monitor/bt.h
+++ b/monitor/bt.h
@@ -3091,6 +3091,18 @@ struct bt_hci_le_ext_adv_report {
 	uint8_t  data[0];
 } __attribute__ ((packed));
 
+#define BT_HCI_EVT_LE_PER_SYNC_ESTABLISHED	0x0e
+struct bt_hci_evt_le_per_sync_established {
+	uint8_t  status;
+	uint16_t handle;
+	uint8_t  sid;
+	uint8_t  addr_type;
+	uint8_t  addr[6];
+	uint8_t  phy;
+	uint16_t interval;
+	uint8_t  clock_accuracy;
+} __attribute__ ((packed));
+
 #define BT_HCI_EVT_LE_ADV_SET_TERM		0x12
 struct bt_hci_evt_le_adv_set_term {
 	uint8_t  status;
diff --git a/monitor/packet.c b/monitor/packet.c
index 30d432316..3235ad004 100644
--- a/monitor/packet.c
+++ b/monitor/packet.c
@@ -9613,6 +9613,24 @@ static void le_ext_adv_report_evt(const void *data, uint8_t size)
 	}
 }
 
+static void le_per_adv_sync(const void *data, uint8_t size)
+{
+	const struct bt_hci_evt_le_per_sync_established *evt = data;
+
+	print_status(evt->status);
+	print_field("Sync handle: %d", evt->handle);
+	if (evt->sid > 0x0f)
+		print_field("Advertising SID: Reserved (0x%2.2x)", evt->sid);
+	else
+		print_field("Advertising SID: 0x%2.2x", evt->sid);
+
+	print_peer_addr_type("Advertiser address type", evt->addr_type);
+	print_addr("Advertiser address", evt->addr, evt->addr_type);
+	print_le_phy("Advertiser PHY", evt->phy);
+	print_slot_125("Periodic advertising invteral", evt->interval);
+	print_field("Advertiser clock accuracy: 0x%2.2x", evt->clock_accuracy);
+}
+
 static void le_adv_set_term_evt(const void *data, uint8_t size)
 {
 	const struct bt_hci_evt_le_adv_set_term *evt = data;
@@ -9726,7 +9744,8 @@ static const struct subevent_data le_meta_event_table[] = {
 				le_phy_update_complete_evt, 5, true},
 	{ 0x0d, "LE Extended Advertising Report",
 				le_ext_adv_report_evt, 1, false},
-	{ 0x0e, "LE Periodic Advertising Sync Established" },
+	{ 0x0e, "LE Periodic Advertising Sync Established",
+				le_per_adv_sync, 15, true },
 	{ 0x0f, "LE Periodic Advertising Report" },
 	{ 0x10, "LE Periodic Advertising Sync Lost" },
 	{ 0x11, "LE Scan Timeout" },
-- 
2.20.1


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

* [PATCH 2/3] monitor: Decode LE Periodic Advertising Report Event
  2019-05-22  9:24 [PATCH 1/3] monitor: Decode LE Periodic Advertising Sync Established Event Szymon Janc
@ 2019-05-22  9:24 ` Szymon Janc
  2019-05-22  9:24 ` [PATCH 3/3] monitor: Decode LE Periodic Advertising Sync Lost Event Szymon Janc
  2019-05-24  8:50 ` [PATCH 1/3] monitor: Decode LE Periodic Advertising Sync Established Event Luiz Augusto von Dentz
  2 siblings, 0 replies; 4+ messages in thread
From: Szymon Janc @ 2019-05-22  9:24 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Szymon Janc

> HCI Event: LE Meta Event (0x3e) plen 18                                                                                                                                                               #19 [hci2] 16.562639
      LE Periodic Advertising Report (0x0f)
        Sync handle: 0
        TX power: -4 dbm (0xfc)
        RSSI: -55 dBm (0xc9)
        Unused: (0xff)
        Data status: Complete
        Data length: 0x0a
        b0 b1 b2 b3 b4 b5 b6 b7 b8 b9
---
 monitor/bt.h     | 11 +++++++++++
 monitor/packet.c | 46 +++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 56 insertions(+), 1 deletion(-)

diff --git a/monitor/bt.h b/monitor/bt.h
index 6494c928f..8622ea4d4 100644
--- a/monitor/bt.h
+++ b/monitor/bt.h
@@ -3103,6 +3103,17 @@ struct bt_hci_evt_le_per_sync_established {
 	uint8_t  clock_accuracy;
 } __attribute__ ((packed));
 
+#define BT_HCI_EVT_LE_PER_ADV_REPORT	0x0f
+struct bt_hci_le_per_adv_report {
+	uint16_t handle;
+	uint8_t  tx_power;
+	int8_t   rssi;
+	uint8_t  unused;
+	uint8_t  data_status;
+	uint8_t  data_len;
+	uint8_t  data[0];
+} __attribute__ ((packed));
+
 #define BT_HCI_EVT_LE_ADV_SET_TERM		0x12
 struct bt_hci_evt_le_adv_set_term {
 	uint8_t  status;
diff --git a/monitor/packet.c b/monitor/packet.c
index 3235ad004..8b2671edb 100644
--- a/monitor/packet.c
+++ b/monitor/packet.c
@@ -9631,6 +9631,49 @@ static void le_per_adv_sync(const void *data, uint8_t size)
 	print_field("Advertiser clock accuracy: 0x%2.2x", evt->clock_accuracy);
 }
 
+static void le_per_adv_report_evt(const void *data, uint8_t size)
+{
+	const struct bt_hci_le_per_adv_report *evt = data;
+	const char *color_on;
+	const char *str;
+
+	print_field("Sync handle: %d", evt->handle);
+	print_power_level(evt->tx_power, NULL);
+	if (evt->rssi == 127)
+		print_field("RSSI: not available (0x%2.2x)",
+						(uint8_t) evt->rssi);
+	else if (evt->rssi >= -127 && evt->rssi <= 20)
+		print_field("RSSI: %d dBm (0x%2.2x)",
+				evt->rssi, (uint8_t) evt->rssi);
+	else
+		print_field("RSSI: reserved (0x%2.2x)",
+						(uint8_t) evt->rssi);
+	print_field("Unused: (0x%2.2x)", evt->unused);
+
+	switch (evt->data_status) {
+	case 0x00:
+		str = "Complete";
+		color_on = COLOR_GREEN;
+		break;
+	case 0x01:
+		str = "Incomplete, more data to come";
+		color_on = COLOR_YELLOW;
+		break;
+	case 0x02:
+		str = "Incomplete, data truncated, no more to come";
+		color_on = COLOR_RED;
+		break;
+	default:
+		str = "Reserved";
+		color_on = COLOR_RED;
+		break;
+	}
+
+	print_field("Data status: %s%s%s", color_on, str, COLOR_OFF);
+	print_field("Data length: 0x%2.2x", evt->data_len);
+	packet_hexdump(evt->data, evt->data_len);
+}
+
 static void le_adv_set_term_evt(const void *data, uint8_t size)
 {
 	const struct bt_hci_evt_le_adv_set_term *evt = data;
@@ -9746,7 +9789,8 @@ static const struct subevent_data le_meta_event_table[] = {
 				le_ext_adv_report_evt, 1, false},
 	{ 0x0e, "LE Periodic Advertising Sync Established",
 				le_per_adv_sync, 15, true },
-	{ 0x0f, "LE Periodic Advertising Report" },
+	{ 0x0f, "LE Periodic Advertising Report",
+				le_per_adv_report_evt, 7, false},
 	{ 0x10, "LE Periodic Advertising Sync Lost" },
 	{ 0x11, "LE Scan Timeout" },
 	{ 0x12, "LE Advertising Set Terminated",
-- 
2.20.1


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

* [PATCH 3/3] monitor: Decode LE Periodic Advertising Sync Lost Event
  2019-05-22  9:24 [PATCH 1/3] monitor: Decode LE Periodic Advertising Sync Established Event Szymon Janc
  2019-05-22  9:24 ` [PATCH 2/3] monitor: Decode LE Periodic Advertising Report Event Szymon Janc
@ 2019-05-22  9:24 ` Szymon Janc
  2019-05-24  8:50 ` [PATCH 1/3] monitor: Decode LE Periodic Advertising Sync Established Event Luiz Augusto von Dentz
  2 siblings, 0 replies; 4+ messages in thread
From: Szymon Janc @ 2019-05-22  9:24 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Szymon Janc

> HCI Event: LE Meta Event (0x3e) plen 3
      LE Periodic Advertising Sync Lost (0x10)
        Sync handle: 0
---
 monitor/bt.h     |  5 +++++
 monitor/packet.c | 10 +++++++++-
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/monitor/bt.h b/monitor/bt.h
index 8622ea4d4..8edc895e8 100644
--- a/monitor/bt.h
+++ b/monitor/bt.h
@@ -3114,6 +3114,11 @@ struct bt_hci_le_per_adv_report {
 	uint8_t  data[0];
 } __attribute__ ((packed));
 
+#define BT_HCI_EVT_LE_PER_SYNC_LOST	0x10
+struct bt_hci_evt_le_per_sync_lost {
+	uint16_t handle;
+} __attribute__ ((packed));
+
 #define BT_HCI_EVT_LE_ADV_SET_TERM		0x12
 struct bt_hci_evt_le_adv_set_term {
 	uint8_t  status;
diff --git a/monitor/packet.c b/monitor/packet.c
index 8b2671edb..ab8bbdee5 100644
--- a/monitor/packet.c
+++ b/monitor/packet.c
@@ -9674,6 +9674,13 @@ static void le_per_adv_report_evt(const void *data, uint8_t size)
 	packet_hexdump(evt->data, evt->data_len);
 }
 
+static void le_per_adv_sync_lost(const void *data, uint8_t size)
+{
+	const struct bt_hci_evt_le_per_sync_lost *evt = data;
+
+	print_field("Sync handle: %d", evt->handle);
+}
+
 static void le_adv_set_term_evt(const void *data, uint8_t size)
 {
 	const struct bt_hci_evt_le_adv_set_term *evt = data;
@@ -9791,7 +9798,8 @@ static const struct subevent_data le_meta_event_table[] = {
 				le_per_adv_sync, 15, true },
 	{ 0x0f, "LE Periodic Advertising Report",
 				le_per_adv_report_evt, 7, false},
-	{ 0x10, "LE Periodic Advertising Sync Lost" },
+	{ 0x10, "LE Periodic Advertising Sync Lost",
+				le_per_adv_sync_lost, 2, true},
 	{ 0x11, "LE Scan Timeout" },
 	{ 0x12, "LE Advertising Set Terminated",
 				le_adv_set_term_evt, 5, true},
-- 
2.20.1


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

* Re: [PATCH 1/3] monitor: Decode LE Periodic Advertising Sync Established Event
  2019-05-22  9:24 [PATCH 1/3] monitor: Decode LE Periodic Advertising Sync Established Event Szymon Janc
  2019-05-22  9:24 ` [PATCH 2/3] monitor: Decode LE Periodic Advertising Report Event Szymon Janc
  2019-05-22  9:24 ` [PATCH 3/3] monitor: Decode LE Periodic Advertising Sync Lost Event Szymon Janc
@ 2019-05-24  8:50 ` Luiz Augusto von Dentz
  2 siblings, 0 replies; 4+ messages in thread
From: Luiz Augusto von Dentz @ 2019-05-24  8:50 UTC (permalink / raw)
  To: Szymon Janc; +Cc: linux-bluetooth

Hi Szymon,

On Wed, May 22, 2019 at 12:26 PM Szymon Janc <szymon.janc@codecoup.pl> wrote:
>
> > HCI Event: LE Meta Event (0x3e) plen 16                                                                                                                                                             #976 [hci1] 607.133703
>       LE Periodic Advertising Sync Established (0x0e)
>         Status: Success (0x00)
>         Sync handle: 0
>         Advertising SID: 0x06
>         Advertiser address type: Random (0x01)
>         Advertiser address: FF:00:00:00:00:AA (Static)
>         Advertiser PHY: LE 1M (0x01)
>         Periodic advertising invteral: 50.00 msec (0x0028)
>         Advertiser clock accuracy: 0x04
> ---
>  monitor/bt.h     | 12 ++++++++++++
>  monitor/packet.c | 21 ++++++++++++++++++++-
>  2 files changed, 32 insertions(+), 1 deletion(-)
>
> diff --git a/monitor/bt.h b/monitor/bt.h
> index d32d3a153..6494c928f 100644
> --- a/monitor/bt.h
> +++ b/monitor/bt.h
> @@ -3091,6 +3091,18 @@ struct bt_hci_le_ext_adv_report {
>         uint8_t  data[0];
>  } __attribute__ ((packed));
>
> +#define BT_HCI_EVT_LE_PER_SYNC_ESTABLISHED     0x0e
> +struct bt_hci_evt_le_per_sync_established {
> +       uint8_t  status;
> +       uint16_t handle;
> +       uint8_t  sid;
> +       uint8_t  addr_type;
> +       uint8_t  addr[6];
> +       uint8_t  phy;
> +       uint16_t interval;
> +       uint8_t  clock_accuracy;
> +} __attribute__ ((packed));
> +
>  #define BT_HCI_EVT_LE_ADV_SET_TERM             0x12
>  struct bt_hci_evt_le_adv_set_term {
>         uint8_t  status;
> diff --git a/monitor/packet.c b/monitor/packet.c
> index 30d432316..3235ad004 100644
> --- a/monitor/packet.c
> +++ b/monitor/packet.c
> @@ -9613,6 +9613,24 @@ static void le_ext_adv_report_evt(const void *data, uint8_t size)
>         }
>  }
>
> +static void le_per_adv_sync(const void *data, uint8_t size)
> +{
> +       const struct bt_hci_evt_le_per_sync_established *evt = data;
> +
> +       print_status(evt->status);
> +       print_field("Sync handle: %d", evt->handle);
> +       if (evt->sid > 0x0f)
> +               print_field("Advertising SID: Reserved (0x%2.2x)", evt->sid);
> +       else
> +               print_field("Advertising SID: 0x%2.2x", evt->sid);
> +
> +       print_peer_addr_type("Advertiser address type", evt->addr_type);
> +       print_addr("Advertiser address", evt->addr, evt->addr_type);
> +       print_le_phy("Advertiser PHY", evt->phy);
> +       print_slot_125("Periodic advertising invteral", evt->interval);
> +       print_field("Advertiser clock accuracy: 0x%2.2x", evt->clock_accuracy);
> +}
> +
>  static void le_adv_set_term_evt(const void *data, uint8_t size)
>  {
>         const struct bt_hci_evt_le_adv_set_term *evt = data;
> @@ -9726,7 +9744,8 @@ static const struct subevent_data le_meta_event_table[] = {
>                                 le_phy_update_complete_evt, 5, true},
>         { 0x0d, "LE Extended Advertising Report",
>                                 le_ext_adv_report_evt, 1, false},
> -       { 0x0e, "LE Periodic Advertising Sync Established" },
> +       { 0x0e, "LE Periodic Advertising Sync Established",
> +                               le_per_adv_sync, 15, true },
>         { 0x0f, "LE Periodic Advertising Report" },
>         { 0x10, "LE Periodic Advertising Sync Lost" },
>         { 0x11, "LE Scan Timeout" },
> --
> 2.20.1

Applied, thanks.

-- 
Luiz Augusto von Dentz

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

end of thread, other threads:[~2019-05-24  8:50 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-05-22  9:24 [PATCH 1/3] monitor: Decode LE Periodic Advertising Sync Established Event Szymon Janc
2019-05-22  9:24 ` [PATCH 2/3] monitor: Decode LE Periodic Advertising Report Event Szymon Janc
2019-05-22  9:24 ` [PATCH 3/3] monitor: Decode LE Periodic Advertising Sync Lost Event Szymon Janc
2019-05-24  8:50 ` [PATCH 1/3] monitor: Decode LE Periodic Advertising Sync Established Event Luiz Augusto von Dentz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).