* [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 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.