* [PATCH 2/8] monitor: Decode LE Periodic Advertising Sync Transfer Received Event
2020-01-07 9:18 [PATCH 1/8] monitor: Update periodic sync commands Szymon Czapracki
@ 2020-01-07 9:18 ` Szymon Czapracki
2020-01-07 23:43 ` Luiz Augusto von Dentz
2020-01-07 9:18 ` [PATCH 3/8] monitor: Decode LE Set Periodic Advertising Receive Enable command Szymon Czapracki
` (5 subsequent siblings)
6 siblings, 1 reply; 13+ messages in thread
From: Szymon Czapracki @ 2020-01-07 9:18 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Szymon Czapracki
Change-Id: I5a7c2d36ca5aee61441c2aab6adeb16058ab062f
---
monitor/bt.h | 14 ++++++++++++++
monitor/packet.c | 27 +++++++++++++++++++++++++++
2 files changed, 41 insertions(+)
diff --git a/monitor/bt.h b/monitor/bt.h
index ecf3782c9..e14c1771f 100644
--- a/monitor/bt.h
+++ b/monitor/bt.h
@@ -3140,6 +3140,20 @@ struct bt_hci_evt_le_chan_select_alg {
uint8_t algorithm;
} __attribute__ ((packed));
+#define BT_HCI_EVT_LE_PER_ADV_SYNC_TRANS_REC 0x18
+struct bt_hci_evt_le_per_adv_sync_trans_rec {
+ uint8_t status;
+ uint16_t handle;
+ uint16_t service_data;
+ uint16_t sync_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_ERR_SUCCESS 0x00
#define BT_HCI_ERR_UNKNOWN_COMMAND 0x01
#define BT_HCI_ERR_UNKNOWN_CONN_ID 0x02
diff --git a/monitor/packet.c b/monitor/packet.c
index 64f75cf8e..76bb9f239 100644
--- a/monitor/packet.c
+++ b/monitor/packet.c
@@ -600,6 +600,12 @@ static void print_addr_type(const char *label, uint8_t addr_type)
case 0x01:
str = "Random";
break;
+ case 0x02:
+ str = "Public Identity Address";
+ break;
+ case 0x03:
+ str = "Random Identity Address";
+ break;
default:
str = "Reserved";
break;
@@ -9788,6 +9794,24 @@ static void le_chan_select_alg_evt(const void *data, uint8_t size)
print_field("Algorithm: %s (0x%2.2x)", str, evt->algorithm);
}
+static void le_per_adv_sync_trans_rec_evt(const void *data, uint8_t size)
+{
+ const struct bt_hci_evt_le_per_adv_sync_trans_rec *evt = data;
+
+ print_status(evt->status);
+ print_field("Handle: %d", evt->handle);
+ print_field("Connection handle: %d", evt->handle);
+ print_field("Service data: 0x%4.4x", evt->service_data);
+ print_field("Sync handle: %d", evt->sync_handle);
+ print_field("SID: 0x%2.2x", evt->sid);
+ print_addr_type("Address type:", evt->addr_type);
+ print_addr("Addres:", evt->addr, evt->addr_type);
+ print_le_phy("PHY:", evt->phy);
+ print_field("Periodic advertising Interval: %.3f",
+ 1.25 * evt->interval);
+ print_clock_accuracy(evt->clock_accuracy);
+}
+
struct subevent_data {
uint8_t subevent;
const char *str;
@@ -9871,6 +9895,9 @@ static const struct subevent_data le_meta_event_table[] = {
le_scan_req_received_evt, 8, true},
{ 0x14, "LE Channel Selection Algorithm",
le_chan_select_alg_evt, 3, true},
+ { 0x18, "LE Periodic Advertising Sync Transfer Received",
+ le_per_adv_sync_trans_rec_evt, 19,
+ true},
{ }
};
--
2.24.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 2/8] monitor: Decode LE Periodic Advertising Sync Transfer Received Event
2020-01-07 9:18 ` [PATCH 2/8] monitor: Decode LE Periodic Advertising Sync Transfer Received Event Szymon Czapracki
@ 2020-01-07 23:43 ` Luiz Augusto von Dentz
2020-01-08 9:53 ` Szymon Janc
0 siblings, 1 reply; 13+ messages in thread
From: Luiz Augusto von Dentz @ 2020-01-07 23:43 UTC (permalink / raw)
To: Szymon Czapracki; +Cc: linux-bluetooth
Hi Szymon,
On Tue, Jan 7, 2020 at 1:20 AM Szymon Czapracki
<szymon.czapracki@codecoup.pl> wrote:
>
> Change-Id: I5a7c2d36ca5aee61441c2aab6adeb16058ab062f
> ---
> monitor/bt.h | 14 ++++++++++++++
> monitor/packet.c | 27 +++++++++++++++++++++++++++
> 2 files changed, 41 insertions(+)
>
> diff --git a/monitor/bt.h b/monitor/bt.h
> index ecf3782c9..e14c1771f 100644
> --- a/monitor/bt.h
> +++ b/monitor/bt.h
> @@ -3140,6 +3140,20 @@ struct bt_hci_evt_le_chan_select_alg {
> uint8_t algorithm;
> } __attribute__ ((packed));
>
> +#define BT_HCI_EVT_LE_PER_ADV_SYNC_TRANS_REC 0x18
> +struct bt_hci_evt_le_per_adv_sync_trans_rec {
> + uint8_t status;
> + uint16_t handle;
> + uint16_t service_data;
> + uint16_t sync_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_ERR_SUCCESS 0x00
> #define BT_HCI_ERR_UNKNOWN_COMMAND 0x01
> #define BT_HCI_ERR_UNKNOWN_CONN_ID 0x02
> diff --git a/monitor/packet.c b/monitor/packet.c
> index 64f75cf8e..76bb9f239 100644
> --- a/monitor/packet.c
> +++ b/monitor/packet.c
> @@ -600,6 +600,12 @@ static void print_addr_type(const char *label, uint8_t addr_type)
> case 0x01:
> str = "Random";
> break;
> + case 0x02:
> + str = "Public Identity Address";
> + break;
> + case 0x03:
> + str = "Random Identity Address";
> + break;
Usually the term Address is already part of the label so we don't need
to repeat here, Random Identity also doesn't sound right, it should
probably be Static Random or perhaps have Resolved Public and Resolved
Static Random to indicate they are actually resolved address from RPA.
> default:
> str = "Reserved";
> break;
> @@ -9788,6 +9794,24 @@ static void le_chan_select_alg_evt(const void *data, uint8_t size)
> print_field("Algorithm: %s (0x%2.2x)", str, evt->algorithm);
> }
>
> +static void le_per_adv_sync_trans_rec_evt(const void *data, uint8_t size)
> +{
> + const struct bt_hci_evt_le_per_adv_sync_trans_rec *evt = data;
> +
> + print_status(evt->status);
> + print_field("Handle: %d", evt->handle);
> + print_field("Connection handle: %d", evt->handle);
> + print_field("Service data: 0x%4.4x", evt->service_data);
> + print_field("Sync handle: %d", evt->sync_handle);
> + print_field("SID: 0x%2.2x", evt->sid);
> + print_addr_type("Address type:", evt->addr_type);
> + print_addr("Addres:", evt->addr, evt->addr_type);
> + print_le_phy("PHY:", evt->phy);
> + print_field("Periodic advertising Interval: %.3f",
> + 1.25 * evt->interval);
> + print_clock_accuracy(evt->clock_accuracy);
> +}
> +
> struct subevent_data {
> uint8_t subevent;
> const char *str;
> @@ -9871,6 +9895,9 @@ static const struct subevent_data le_meta_event_table[] = {
> le_scan_req_received_evt, 8, true},
> { 0x14, "LE Channel Selection Algorithm",
> le_chan_select_alg_evt, 3, true},
> + { 0x18, "LE Periodic Advertising Sync Transfer Received",
> + le_per_adv_sync_trans_rec_evt, 19,
> + true},
> { }
> };
>
> --
> 2.24.1
>
--
Luiz Augusto von Dentz
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 2/8] monitor: Decode LE Periodic Advertising Sync Transfer Received Event
2020-01-07 23:43 ` Luiz Augusto von Dentz
@ 2020-01-08 9:53 ` Szymon Janc
2020-01-08 18:22 ` Luiz Augusto von Dentz
0 siblings, 1 reply; 13+ messages in thread
From: Szymon Janc @ 2020-01-08 9:53 UTC (permalink / raw)
To: Luiz Augusto von Dentz; +Cc: Szymon Czapracki, linux-bluetooth
Hi,
On Wednesday, 8 January 2020 00:43:44 CET Luiz Augusto von Dentz wrote:
> Hi Szymon,
>
> On Tue, Jan 7, 2020 at 1:20 AM Szymon Czapracki
>
> <szymon.czapracki@codecoup.pl> wrote:
> > Change-Id: I5a7c2d36ca5aee61441c2aab6adeb16058ab062f
> > ---
> >
> > monitor/bt.h | 14 ++++++++++++++
> > monitor/packet.c | 27 +++++++++++++++++++++++++++
> > 2 files changed, 41 insertions(+)
> >
> > diff --git a/monitor/bt.h b/monitor/bt.h
> > index ecf3782c9..e14c1771f 100644
> > --- a/monitor/bt.h
> > +++ b/monitor/bt.h
> > @@ -3140,6 +3140,20 @@ struct bt_hci_evt_le_chan_select_alg {
> >
> > uint8_t algorithm;
> >
> > } __attribute__ ((packed));
> >
> > +#define BT_HCI_EVT_LE_PER_ADV_SYNC_TRANS_REC 0x18
> > +struct bt_hci_evt_le_per_adv_sync_trans_rec {
> > + uint8_t status;
> > + uint16_t handle;
> > + uint16_t service_data;
> > + uint16_t sync_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_ERR_SUCCESS 0x00
> > #define BT_HCI_ERR_UNKNOWN_COMMAND 0x01
> > #define BT_HCI_ERR_UNKNOWN_CONN_ID 0x02
> >
> > diff --git a/monitor/packet.c b/monitor/packet.c
> > index 64f75cf8e..76bb9f239 100644
> > --- a/monitor/packet.c
> > +++ b/monitor/packet.c
> > @@ -600,6 +600,12 @@ static void print_addr_type(const char *label,
> > uint8_t addr_type)>
> > case 0x01:
> > str = "Random";
> > break;
> >
> > + case 0x02:
> > + str = "Public Identity Address";
> > + break;
> > + case 0x03:
> > + str = "Random Identity Address";
> > + break;
>
> Usually the term Address is already part of the label so we don't need
> to repeat here, Random Identity also doesn't sound right, it should
> probably be Static Random or perhaps have Resolved Public and Resolved
> Static Random to indicate they are actually resolved address from RPA.
Those names are from spec actually but I agree that those are somewhat odd.
How about just using print_peer_addr_type() to print this?
Then we have: public, random, resolved public and resolved Random. This is
short and also makes output consistent with other events.
>
> > default:
> > str = "Reserved";
> > break;
> >
> > @@ -9788,6 +9794,24 @@ static void le_chan_select_alg_evt(const void
> > *data, uint8_t size)>
> > print_field("Algorithm: %s (0x%2.2x)", str, evt->algorithm);
> >
> > }
> >
> > +static void le_per_adv_sync_trans_rec_evt(const void *data, uint8_t size)
> > +{
> > + const struct bt_hci_evt_le_per_adv_sync_trans_rec *evt = data;
> > +
> > + print_status(evt->status);
> > + print_field("Handle: %d", evt->handle);
> > + print_field("Connection handle: %d", evt->handle);
> > + print_field("Service data: 0x%4.4x", evt->service_data);
> > + print_field("Sync handle: %d", evt->sync_handle);
> > + print_field("SID: 0x%2.2x", evt->sid);
> > + print_addr_type("Address type:", evt->addr_type);
> > + print_addr("Addres:", evt->addr, evt->addr_type);
> > + print_le_phy("PHY:", evt->phy);
> > + print_field("Periodic advertising Interval: %.3f",
> > + 1.25 *
> > evt->interval); + print_clock_accuracy(evt->clock_accuracy);
> > +}
> > +
> >
> > struct subevent_data {
> >
> > uint8_t subevent;
> > const char *str;
> >
> > @@ -9871,6 +9895,9 @@ static const struct subevent_data
> > le_meta_event_table[] = {>
> > le_scan_req_received_evt, 8, true},
> >
> > { 0x14, "LE Channel Selection Algorithm",
> >
> > le_chan_select_alg_evt, 3, true},
> >
> > + { 0x18, "LE Periodic Advertising Sync Transfer Received",
> > + le_per_adv_sync_trans_rec_evt, 19,
> > + true},
> >
> > { }
> >
> > };
> >
> > --
> > 2.24.1
--
pozdrawiam
Szymon Janc
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 2/8] monitor: Decode LE Periodic Advertising Sync Transfer Received Event
2020-01-08 9:53 ` Szymon Janc
@ 2020-01-08 18:22 ` Luiz Augusto von Dentz
0 siblings, 0 replies; 13+ messages in thread
From: Luiz Augusto von Dentz @ 2020-01-08 18:22 UTC (permalink / raw)
To: Szymon Janc; +Cc: Szymon Czapracki, linux-bluetooth
Hi Szymon,
On Wed, Jan 8, 2020 at 1:53 AM Szymon Janc <szymon.janc@codecoup.pl> wrote:
>
> Hi,
>
> On Wednesday, 8 January 2020 00:43:44 CET Luiz Augusto von Dentz wrote:
> > Hi Szymon,
> >
> > On Tue, Jan 7, 2020 at 1:20 AM Szymon Czapracki
> >
> > <szymon.czapracki@codecoup.pl> wrote:
> > > Change-Id: I5a7c2d36ca5aee61441c2aab6adeb16058ab062f
> > > ---
> > >
> > > monitor/bt.h | 14 ++++++++++++++
> > > monitor/packet.c | 27 +++++++++++++++++++++++++++
> > > 2 files changed, 41 insertions(+)
> > >
> > > diff --git a/monitor/bt.h b/monitor/bt.h
> > > index ecf3782c9..e14c1771f 100644
> > > --- a/monitor/bt.h
> > > +++ b/monitor/bt.h
> > > @@ -3140,6 +3140,20 @@ struct bt_hci_evt_le_chan_select_alg {
> > >
> > > uint8_t algorithm;
> > >
> > > } __attribute__ ((packed));
> > >
> > > +#define BT_HCI_EVT_LE_PER_ADV_SYNC_TRANS_REC 0x18
> > > +struct bt_hci_evt_le_per_adv_sync_trans_rec {
> > > + uint8_t status;
> > > + uint16_t handle;
> > > + uint16_t service_data;
> > > + uint16_t sync_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_ERR_SUCCESS 0x00
> > > #define BT_HCI_ERR_UNKNOWN_COMMAND 0x01
> > > #define BT_HCI_ERR_UNKNOWN_CONN_ID 0x02
> > >
> > > diff --git a/monitor/packet.c b/monitor/packet.c
> > > index 64f75cf8e..76bb9f239 100644
> > > --- a/monitor/packet.c
> > > +++ b/monitor/packet.c
> > > @@ -600,6 +600,12 @@ static void print_addr_type(const char *label,
> > > uint8_t addr_type)>
> > > case 0x01:
> > > str = "Random";
> > > break;
> > >
> > > + case 0x02:
> > > + str = "Public Identity Address";
> > > + break;
> > > + case 0x03:
> > > + str = "Random Identity Address";
> > > + break;
> >
> > Usually the term Address is already part of the label so we don't need
> > to repeat here, Random Identity also doesn't sound right, it should
> > probably be Static Random or perhaps have Resolved Public and Resolved
> > Static Random to indicate they are actually resolved address from RPA.
>
> Those names are from spec actually but I agree that those are somewhat odd.
> How about just using print_peer_addr_type() to print this?
> Then we have: public, random, resolved public and resolved Random. This is
> short and also makes output consistent with other events.
Yep, lets use that then.
> >
> > > default:
> > > str = "Reserved";
> > > break;
> > >
> > > @@ -9788,6 +9794,24 @@ static void le_chan_select_alg_evt(const void
> > > *data, uint8_t size)>
> > > print_field("Algorithm: %s (0x%2.2x)", str, evt->algorithm);
> > >
> > > }
> > >
> > > +static void le_per_adv_sync_trans_rec_evt(const void *data, uint8_t size)
> > > +{
> > > + const struct bt_hci_evt_le_per_adv_sync_trans_rec *evt = data;
> > > +
> > > + print_status(evt->status);
> > > + print_field("Handle: %d", evt->handle);
> > > + print_field("Connection handle: %d", evt->handle);
> > > + print_field("Service data: 0x%4.4x", evt->service_data);
> > > + print_field("Sync handle: %d", evt->sync_handle);
> > > + print_field("SID: 0x%2.2x", evt->sid);
> > > + print_addr_type("Address type:", evt->addr_type);
> > > + print_addr("Addres:", evt->addr, evt->addr_type);
> > > + print_le_phy("PHY:", evt->phy);
> > > + print_field("Periodic advertising Interval: %.3f",
> > > + 1.25 *
> > > evt->interval); + print_clock_accuracy(evt->clock_accuracy);
> > > +}
> > > +
> > >
> > > struct subevent_data {
> > >
> > > uint8_t subevent;
> > > const char *str;
> > >
> > > @@ -9871,6 +9895,9 @@ static const struct subevent_data
> > > le_meta_event_table[] = {>
> > > le_scan_req_received_evt, 8, true},
> > >
> > > { 0x14, "LE Channel Selection Algorithm",
> > >
> > > le_chan_select_alg_evt, 3, true},
> > >
> > > + { 0x18, "LE Periodic Advertising Sync Transfer Received",
> > > + le_per_adv_sync_trans_rec_evt, 19,
> > > + true},
> > >
> > > { }
> > >
> > > };
> > >
> > > --
> > > 2.24.1
>
>
> --
> pozdrawiam
> Szymon Janc
>
>
--
Luiz Augusto von Dentz
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 3/8] monitor: Decode LE Set Periodic Advertising Receive Enable command
2020-01-07 9:18 [PATCH 1/8] monitor: Update periodic sync commands Szymon Czapracki
2020-01-07 9:18 ` [PATCH 2/8] monitor: Decode LE Periodic Advertising Sync Transfer Received Event Szymon Czapracki
@ 2020-01-07 9:18 ` Szymon Czapracki
2020-01-07 9:18 ` [PATCH 4/8] monitor: Decode LE Periodic Advertising Sync Transfer command Szymon Czapracki
` (4 subsequent siblings)
6 siblings, 0 replies; 13+ messages in thread
From: Szymon Czapracki @ 2020-01-07 9:18 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Szymon Czapracki
< HCI Command: LE Periodic Advertising Receive Enable (0x08|0x0059) plen 3
Sync handle: 0
Reporting: Enabled (0x01)
> HCI Event: Command Status (0x0f) plen 4
LE Periodic Advertising Receive Enable (0x08|0x0059) ncmd 1
Status: Unknown HCI Command (0x01)
Change-Id: I19d3bfb7034992a14273b742b38f2c6cc6bd6deb
---
monitor/bt.h | 6 ++++++
monitor/packet.c | 11 +++++++++++
2 files changed, 17 insertions(+)
diff --git a/monitor/bt.h b/monitor/bt.h
index e14c1771f..bb373b528 100644
--- a/monitor/bt.h
+++ b/monitor/bt.h
@@ -2461,6 +2461,12 @@ struct bt_hci_cmd_le_tx_test_v3 {
uint8_t antenna_ids[0];
} __attribute__ ((packed));
+#define BT_HCI_CMD_SET_PERIODIC_ADV_REC_ENABLE 0x2059
+struct bt_hci_cmd_set_periodic_adv_rec_enable {
+ uint16_t sync_handle;
+ uint8_t enable;
+} __attribute__ ((packed));
+
#define BT_HCI_EVT_INQUIRY_COMPLETE 0x01
struct bt_hci_evt_inquiry_complete {
uint8_t status;
diff --git a/monitor/packet.c b/monitor/packet.c
index 76bb9f239..c1e449a68 100644
--- a/monitor/packet.c
+++ b/monitor/packet.c
@@ -7590,6 +7590,14 @@ static void le_tx_test_cmd_v3(const void *data, uint8_t size)
print_field(" Antenna ID: %u", cmd->antenna_ids[i]);
}
+static void le_periodic_adv_rec_enable(const void *data, uint8_t size)
+{
+ const struct bt_hci_cmd_le_set_periodic_adv_enable *cmd = data;
+
+ print_field("Sync handle: %d", cmd->handle);
+ print_enable("Reporting", cmd->enable);
+}
+
struct opcode_data {
uint16_t opcode;
int bit;
@@ -8383,6 +8391,9 @@ static const struct opcode_data opcode_table[] = {
{ 0x2050, 316, "LE Transmitter Test command [v3]",
le_tx_test_cmd_v3, 9, false,
status_rsp, 1, true },
+ { 0x2059, 325, "LE Periodic Advertising Receive Enable",
+ le_periodic_adv_rec_enable, 3, true,
+ status_rsp, 1, true },
{ }
};
--
2.24.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 4/8] monitor: Decode LE Periodic Advertising Sync Transfer command
2020-01-07 9:18 [PATCH 1/8] monitor: Update periodic sync commands Szymon Czapracki
2020-01-07 9:18 ` [PATCH 2/8] monitor: Decode LE Periodic Advertising Sync Transfer Received Event Szymon Czapracki
2020-01-07 9:18 ` [PATCH 3/8] monitor: Decode LE Set Periodic Advertising Receive Enable command Szymon Czapracki
@ 2020-01-07 9:18 ` Szymon Czapracki
2020-01-07 23:47 ` Luiz Augusto von Dentz
2020-01-07 9:18 ` [PATCH 5/8] monitor: Decode LE Periodic Advertising Set Info " Szymon Czapracki
` (3 subsequent siblings)
6 siblings, 1 reply; 13+ messages in thread
From: Szymon Czapracki @ 2020-01-07 9:18 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Szymon Czapracki
< HCI Command: LE Periodic Advertising Sync Transfer (0x08|0x005a) plen 6
Connection handle: 1
Service data: 0x0001
Sync handle: 1
> HCI Event: Command Status (0x0f) plen 4
LE Periodic Advertising Sync Transfer (0x08|0x005a) ncmd 1
Status: Unknown HCI Command (0x01)
Change-Id: I9009c6c2299cc5e56bb94ddd46e8accbacbcc800
---
monitor/bt.h | 7 +++++++
monitor/packet.c | 19 +++++++++++++++++++
2 files changed, 26 insertions(+)
diff --git a/monitor/bt.h b/monitor/bt.h
index bb373b528..efaf80f55 100644
--- a/monitor/bt.h
+++ b/monitor/bt.h
@@ -2467,6 +2467,13 @@ struct bt_hci_cmd_set_periodic_adv_rec_enable {
uint8_t enable;
} __attribute__ ((packed));
+#define BT_HCI_CMD_PERIODIC_SYNC_TRANS 0x205a
+struct bt_hci_cmd_periodic_sync_trans {
+ uint16_t handle;
+ uint16_t service_data;
+ uint16_t sync_handle;
+} __attribute__ ((packed));
+
#define BT_HCI_EVT_INQUIRY_COMPLETE 0x01
struct bt_hci_evt_inquiry_complete {
uint8_t status;
diff --git a/monitor/packet.c b/monitor/packet.c
index c1e449a68..06fd72537 100644
--- a/monitor/packet.c
+++ b/monitor/packet.c
@@ -4025,6 +4025,13 @@ static void status_rsp(const void *data, uint8_t size)
print_status(status);
}
+static void status_handle_rsp(const void *data, uint8_t size)
+{
+ uint8_t status = *((const uint8_t *) data);
+ print_status(status);
+ print_field("Connection handle: %d", get_u8(data + 1));
+}
+
static void status_bdaddr_rsp(const void *data, uint8_t size)
{
uint8_t status = *((const uint8_t *) data);
@@ -7598,6 +7605,15 @@ static void le_periodic_adv_rec_enable(const void *data, uint8_t size)
print_enable("Reporting", cmd->enable);
}
+static void le_periodic_adv_sync_trans(const void *data, uint8_t size)
+{
+ const struct bt_hci_cmd_periodic_sync_trans *cmd = data;
+
+ print_field("Connection handle: %d", cmd->handle);
+ print_field("Service data: 0x%4.4x", cmd->service_data);
+ print_field("Sync handle: %d", cmd->sync_handle);
+}
+
struct opcode_data {
uint16_t opcode;
int bit;
@@ -8394,6 +8410,9 @@ static const struct opcode_data opcode_table[] = {
{ 0x2059, 325, "LE Periodic Advertising Receive Enable",
le_periodic_adv_rec_enable, 3, true,
status_rsp, 1, true },
+ { 0x205a, 326, "LE Periodic Advertising Sync Transfer",
+ le_periodic_adv_sync_trans, 6, true,
+ status_handle_rsp, 3, true },
{ }
};
--
2.24.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 4/8] monitor: Decode LE Periodic Advertising Sync Transfer command
2020-01-07 9:18 ` [PATCH 4/8] monitor: Decode LE Periodic Advertising Sync Transfer command Szymon Czapracki
@ 2020-01-07 23:47 ` Luiz Augusto von Dentz
0 siblings, 0 replies; 13+ messages in thread
From: Luiz Augusto von Dentz @ 2020-01-07 23:47 UTC (permalink / raw)
To: Szymon Czapracki; +Cc: linux-bluetooth
Hi Szymon,
On Tue, Jan 7, 2020 at 1:20 AM Szymon Czapracki
<szymon.czapracki@codecoup.pl> wrote:
>
> < HCI Command: LE Periodic Advertising Sync Transfer (0x08|0x005a) plen 6
> Connection handle: 1
> Service data: 0x0001
> Sync handle: 1
> > HCI Event: Command Status (0x0f) plen 4
> LE Periodic Advertising Sync Transfer (0x08|0x005a) ncmd 1
> Status: Unknown HCI Command (0x01)
>
> Change-Id: I9009c6c2299cc5e56bb94ddd46e8accbacbcc800\
Looks like the gerrit Change-Id had sleep in.
> ---
> monitor/bt.h | 7 +++++++
> monitor/packet.c | 19 +++++++++++++++++++
> 2 files changed, 26 insertions(+)
>
> diff --git a/monitor/bt.h b/monitor/bt.h
> index bb373b528..efaf80f55 100644
> --- a/monitor/bt.h
> +++ b/monitor/bt.h
> @@ -2467,6 +2467,13 @@ struct bt_hci_cmd_set_periodic_adv_rec_enable {
> uint8_t enable;
> } __attribute__ ((packed));
>
> +#define BT_HCI_CMD_PERIODIC_SYNC_TRANS 0x205a
> +struct bt_hci_cmd_periodic_sync_trans {
> + uint16_t handle;
> + uint16_t service_data;
> + uint16_t sync_handle;
> +} __attribute__ ((packed));
> +
> #define BT_HCI_EVT_INQUIRY_COMPLETE 0x01
> struct bt_hci_evt_inquiry_complete {
> uint8_t status;
> diff --git a/monitor/packet.c b/monitor/packet.c
> index c1e449a68..06fd72537 100644
> --- a/monitor/packet.c
> +++ b/monitor/packet.c
> @@ -4025,6 +4025,13 @@ static void status_rsp(const void *data, uint8_t size)
> print_status(status);
> }
>
> +static void status_handle_rsp(const void *data, uint8_t size)
> +{
> + uint8_t status = *((const uint8_t *) data);
> + print_status(status);
> + print_field("Connection handle: %d", get_u8(data + 1));
> +}
> +
> static void status_bdaddr_rsp(const void *data, uint8_t size)
> {
> uint8_t status = *((const uint8_t *) data);
> @@ -7598,6 +7605,15 @@ static void le_periodic_adv_rec_enable(const void *data, uint8_t size)
> print_enable("Reporting", cmd->enable);
> }
>
> +static void le_periodic_adv_sync_trans(const void *data, uint8_t size)
> +{
> + const struct bt_hci_cmd_periodic_sync_trans *cmd = data;
> +
> + print_field("Connection handle: %d", cmd->handle);
> + print_field("Service data: 0x%4.4x", cmd->service_data);
> + print_field("Sync handle: %d", cmd->sync_handle);
> +}
> +
> struct opcode_data {
> uint16_t opcode;
> int bit;
> @@ -8394,6 +8410,9 @@ static const struct opcode_data opcode_table[] = {
> { 0x2059, 325, "LE Periodic Advertising Receive Enable",
> le_periodic_adv_rec_enable, 3, true,
> status_rsp, 1, true },
> + { 0x205a, 326, "LE Periodic Advertising Sync Transfer",
> + le_periodic_adv_sync_trans, 6, true,
> + status_handle_rsp, 3, true },
> { }
> };
>
> --
> 2.24.1
>
--
Luiz Augusto von Dentz
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 5/8] monitor: Decode LE Periodic Advertising Set Info Transfer command
2020-01-07 9:18 [PATCH 1/8] monitor: Update periodic sync commands Szymon Czapracki
` (2 preceding siblings ...)
2020-01-07 9:18 ` [PATCH 4/8] monitor: Decode LE Periodic Advertising Sync Transfer command Szymon Czapracki
@ 2020-01-07 9:18 ` Szymon Czapracki
2020-01-07 23:48 ` Luiz Augusto von Dentz
2020-01-07 9:18 ` [PATCH 6/8] monitor: Decode LE Set Periodic Adv Sync Transfer Parameterers command Szymon Czapracki
` (2 subsequent siblings)
6 siblings, 1 reply; 13+ messages in thread
From: Szymon Czapracki @ 2020-01-07 9:18 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Szymon Czapracki
< HCI Command: LE Periodic Advertising Set Info Transfer (0x08|0x005b) plen 5
Connection handle: 1
Service data: 0x0000
Advertising handle: 0
> HCI Event: Command Status (0x0f) plen 4
LE Periodic Advertising Set Info Transfer (0x08|0x005b) ncmd 1
Status: Unknown HCI Command (0x01)
Change-Id: I4167e85f29e20304d1b72ec537ece70a68e8407e
---
monitor/bt.h | 7 +++++++
monitor/packet.c | 12 ++++++++++++
2 files changed, 19 insertions(+)
diff --git a/monitor/bt.h b/monitor/bt.h
index efaf80f55..f8422ccc9 100644
--- a/monitor/bt.h
+++ b/monitor/bt.h
@@ -2474,6 +2474,13 @@ struct bt_hci_cmd_periodic_sync_trans {
uint16_t sync_handle;
} __attribute__ ((packed));
+#define BT_HCI_CMD_PERIODIC_ADV_SET_INFO_TRANS 0x205b
+struct bt_hci_cmd_periodic_adv_set_info_trans {
+ uint16_t handle;
+ uint16_t service_data;
+ uint16_t adv_handle;
+} __attribute__ ((packed));
+
#define BT_HCI_EVT_INQUIRY_COMPLETE 0x01
struct bt_hci_evt_inquiry_complete {
uint8_t status;
diff --git a/monitor/packet.c b/monitor/packet.c
index 06fd72537..3c3399c0c 100644
--- a/monitor/packet.c
+++ b/monitor/packet.c
@@ -7614,6 +7614,15 @@ static void le_periodic_adv_sync_trans(const void *data, uint8_t size)
print_field("Sync handle: %d", cmd->sync_handle);
}
+static void le_periodic_adv_set_info_trans(const void *data, uint8_t size)
+{
+ const struct bt_hci_cmd_periodic_adv_set_info_trans *cmd = data;
+
+ print_field("Connection handle: %d", cmd->handle);
+ print_field("Service data: 0x%4.4x", cmd->service_data);
+ print_field("Advertising handle: %d", cmd->adv_handle);
+}
+
struct opcode_data {
uint16_t opcode;
int bit;
@@ -8413,6 +8422,9 @@ static const struct opcode_data opcode_table[] = {
{ 0x205a, 326, "LE Periodic Advertising Sync Transfer",
le_periodic_adv_sync_trans, 6, true,
status_handle_rsp, 3, true },
+ { 0x205b, 327, "LE Periodic Advertising Set Info Transfer",
+ le_periodic_adv_set_info_trans, 5, true,
+ status_handle_rsp, 3, true },
{ }
};
--
2.24.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 5/8] monitor: Decode LE Periodic Advertising Set Info Transfer command
2020-01-07 9:18 ` [PATCH 5/8] monitor: Decode LE Periodic Advertising Set Info " Szymon Czapracki
@ 2020-01-07 23:48 ` Luiz Augusto von Dentz
0 siblings, 0 replies; 13+ messages in thread
From: Luiz Augusto von Dentz @ 2020-01-07 23:48 UTC (permalink / raw)
To: Szymon Czapracki; +Cc: linux-bluetooth
Hi Szymon,
On Tue, Jan 7, 2020 at 1:21 AM Szymon Czapracki
<szymon.czapracki@codecoup.pl> wrote:
>
> < HCI Command: LE Periodic Advertising Set Info Transfer (0x08|0x005b) plen 5
> Connection handle: 1
> Service data: 0x0000
> Advertising handle: 0
> > HCI Event: Command Status (0x0f) plen 4
> LE Periodic Advertising Set Info Transfer (0x08|0x005b) ncmd 1
> Status: Unknown HCI Command (0x01)
>
> Change-Id: I4167e85f29e20304d1b72ec537ece70a68e8407e
Here as well.
> ---
> monitor/bt.h | 7 +++++++
> monitor/packet.c | 12 ++++++++++++
> 2 files changed, 19 insertions(+)
>
> diff --git a/monitor/bt.h b/monitor/bt.h
> index efaf80f55..f8422ccc9 100644
> --- a/monitor/bt.h
> +++ b/monitor/bt.h
> @@ -2474,6 +2474,13 @@ struct bt_hci_cmd_periodic_sync_trans {
> uint16_t sync_handle;
> } __attribute__ ((packed));
>
> +#define BT_HCI_CMD_PERIODIC_ADV_SET_INFO_TRANS 0x205b
> +struct bt_hci_cmd_periodic_adv_set_info_trans {
> + uint16_t handle;
> + uint16_t service_data;
> + uint16_t adv_handle;
> +} __attribute__ ((packed));
> +
> #define BT_HCI_EVT_INQUIRY_COMPLETE 0x01
> struct bt_hci_evt_inquiry_complete {
> uint8_t status;
> diff --git a/monitor/packet.c b/monitor/packet.c
> index 06fd72537..3c3399c0c 100644
> --- a/monitor/packet.c
> +++ b/monitor/packet.c
> @@ -7614,6 +7614,15 @@ static void le_periodic_adv_sync_trans(const void *data, uint8_t size)
> print_field("Sync handle: %d", cmd->sync_handle);
> }
>
> +static void le_periodic_adv_set_info_trans(const void *data, uint8_t size)
> +{
> + const struct bt_hci_cmd_periodic_adv_set_info_trans *cmd = data;
> +
> + print_field("Connection handle: %d", cmd->handle);
> + print_field("Service data: 0x%4.4x", cmd->service_data);
> + print_field("Advertising handle: %d", cmd->adv_handle);
> +}
> +
> struct opcode_data {
> uint16_t opcode;
> int bit;
> @@ -8413,6 +8422,9 @@ static const struct opcode_data opcode_table[] = {
> { 0x205a, 326, "LE Periodic Advertising Sync Transfer",
> le_periodic_adv_sync_trans, 6, true,
> status_handle_rsp, 3, true },
> + { 0x205b, 327, "LE Periodic Advertising Set Info Transfer",
> + le_periodic_adv_set_info_trans, 5, true,
> + status_handle_rsp, 3, true },
> { }
> };
>
> --
> 2.24.1
>
--
Luiz Augusto von Dentz
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 6/8] monitor: Decode LE Set Periodic Adv Sync Transfer Parameterers command
2020-01-07 9:18 [PATCH 1/8] monitor: Update periodic sync commands Szymon Czapracki
` (3 preceding siblings ...)
2020-01-07 9:18 ` [PATCH 5/8] monitor: Decode LE Periodic Advertising Set Info " Szymon Czapracki
@ 2020-01-07 9:18 ` Szymon Czapracki
2020-01-07 9:18 ` [PATCH 7/8] monitor: Decode LE Set Default Periodic Adv Sync Transfer Params. command Szymon Czapracki
2020-01-07 9:18 ` [PATCH 8/8] monitor: Decode LE CTE Request Failed event Szymon Czapracki
6 siblings, 0 replies; 13+ messages in thread
From: Szymon Czapracki @ 2020-01-07 9:18 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Szymon Czapracki
< HCI Command: LE Periodic Advertising Sync Transfer Parameters (0x08|0x005c) plen 8
Connection handle: 1
Mode: Disabled (0x00)
Skip: 0x00
Sync timeout: 0 msec (0x0000)
Sync CTE type: 0x0000
> HCI Event: Command Status (0x0f) plen 4
LE Periodic Advertising Sync Transfer Parameters (0x08|0x005c) ncmd 1
Status: Unknown HCI Command (0x01)
Change-Id: I5cd115eaa4bf411f5f4cd3899ac516b71fcfdd10
---
monitor/bt.h | 9 +++++++++
monitor/packet.c | 38 ++++++++++++++++++++++++++++++++++++++
2 files changed, 47 insertions(+)
diff --git a/monitor/bt.h b/monitor/bt.h
index f8422ccc9..2ec2ea0a7 100644
--- a/monitor/bt.h
+++ b/monitor/bt.h
@@ -2481,6 +2481,15 @@ struct bt_hci_cmd_periodic_adv_set_info_trans {
uint16_t adv_handle;
} __attribute__ ((packed));
+#define BT_HCI_CMD_PERIODIC_ADV_SYNC_TRANS_PARAMS 0x205c
+struct bt_hci_cmd_periodic_adv_sync_trans_params {
+ uint16_t handle;
+ uint8_t mode;
+ uint16_t skip;
+ uint16_t sync_timeout;
+ uint8_t cte_type;
+} __attribute__ ((packed));
+
#define BT_HCI_EVT_INQUIRY_COMPLETE 0x01
struct bt_hci_evt_inquiry_complete {
uint8_t status;
diff --git a/monitor/packet.c b/monitor/packet.c
index 3c3399c0c..4a8404a02 100644
--- a/monitor/packet.c
+++ b/monitor/packet.c
@@ -7623,6 +7623,41 @@ static void le_periodic_adv_set_info_trans(const void *data, uint8_t size)
print_field("Advertising handle: %d", cmd->adv_handle);
}
+static void print_sync_mode(uint8_t mode) {
+
+ const char *str;
+
+ switch(mode) {
+ case 0x00:
+ str = "Disabled";
+ break;
+ case 0x01:
+ str = "Enabled with report events disabled";
+ break;
+ case 0x02:
+ str = "Enabled with report events enabled";
+ break;
+ default:
+ str = "RFU";
+ break;
+ }
+
+ print_field("Mode: %s (0x%2.2x)", str, mode);
+}
+
+static void le_periodic_adv_sync_trans_params(const void *data, uint8_t size)
+{
+ const struct bt_hci_cmd_periodic_adv_sync_trans_params *cmd = data;
+
+ print_field("Connection handle: %d", cmd->handle);
+ print_sync_mode(cmd->mode);
+ print_field("Skip: 0x%2.2x", cmd->skip);
+ print_field("Sync timeout: %d msec (0x%4.4x)",
+ le16_to_cpu(cmd->sync_timeout) * 10,
+ le16_to_cpu(cmd->sync_timeout));
+ print_create_sync_cte_type(cmd->cte_type);
+}
+
struct opcode_data {
uint16_t opcode;
int bit;
@@ -8425,6 +8460,9 @@ static const struct opcode_data opcode_table[] = {
{ 0x205b, 327, "LE Periodic Advertising Set Info Transfer",
le_periodic_adv_set_info_trans, 5, true,
status_handle_rsp, 3, true },
+ { 0x205c, 328, "LE Periodic Advertising Sync Transfer Parameters",
+ le_periodic_adv_sync_trans_params, 8, true,
+ status_handle_rsp, 3, true},
{ }
};
--
2.24.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 7/8] monitor: Decode LE Set Default Periodic Adv Sync Transfer Params. command
2020-01-07 9:18 [PATCH 1/8] monitor: Update periodic sync commands Szymon Czapracki
` (4 preceding siblings ...)
2020-01-07 9:18 ` [PATCH 6/8] monitor: Decode LE Set Periodic Adv Sync Transfer Parameterers command Szymon Czapracki
@ 2020-01-07 9:18 ` Szymon Czapracki
2020-01-07 9:18 ` [PATCH 8/8] monitor: Decode LE CTE Request Failed event Szymon Czapracki
6 siblings, 0 replies; 13+ messages in thread
From: Szymon Czapracki @ 2020-01-07 9:18 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Szymon Czapracki
< HCI Command: LE Set Default Periodic Advertisng Sync Transfer Parameters (0x08|0x005d) plen 6
Mode: Enabled with report events disabled (0x01)
Skip: 0x00
Sync timeout: 0 msec (0x0000)
Sync CTE type: 0x0000
> HCI Event: Command Status (0x0f) plen 4
LE Set Default Periodic Advertisng Sync Transfer Parameters (0x08|0x005d) ncmd 1
Status: Unknown HCI Command (0x01)
Change-Id: Ia88ddc33a59724f5e32624942759b3ef4d6b70aa
---
monitor/bt.h | 8 ++++++++
monitor/packet.c | 17 +++++++++++++++++
2 files changed, 25 insertions(+)
diff --git a/monitor/bt.h b/monitor/bt.h
index 2ec2ea0a7..1859dfb21 100644
--- a/monitor/bt.h
+++ b/monitor/bt.h
@@ -2490,6 +2490,14 @@ struct bt_hci_cmd_periodic_adv_sync_trans_params {
uint8_t cte_type;
} __attribute__ ((packed));
+#define BT_HCI_CMD_DEFAULT_PERIODIC_ADV_SYNC_TRANS_PARAMS 0x205d
+struct bt_hci_cmd_default_periodic_adv_sync_trans_params {
+ uint8_t mode;
+ uint16_t skip;
+ uint16_t sync_timeout;
+ uint8_t cte_type;
+} __attribute__ ((packed));
+
#define BT_HCI_EVT_INQUIRY_COMPLETE 0x01
struct bt_hci_evt_inquiry_complete {
uint8_t status;
diff --git a/monitor/packet.c b/monitor/packet.c
index 4a8404a02..d34533966 100644
--- a/monitor/packet.c
+++ b/monitor/packet.c
@@ -7658,6 +7658,19 @@ static void le_periodic_adv_sync_trans_params(const void *data, uint8_t size)
print_create_sync_cte_type(cmd->cte_type);
}
+static void le_set_default_periodic_adv_sync_trans_params(const void *data,
+ uint8_t size)
+{
+ const struct bt_hci_cmd_default_periodic_adv_sync_trans_params *cmd = data;
+
+ print_sync_mode(cmd->mode);
+ print_field("Skip: 0x%2.2x", cmd->skip);
+ print_field("Sync timeout: %d msec (0x%4.4x)",
+ le16_to_cpu(cmd->sync_timeout) * 10,
+ le16_to_cpu(cmd->sync_timeout));
+ print_create_sync_cte_type(cmd->cte_type);
+}
+
struct opcode_data {
uint16_t opcode;
int bit;
@@ -8463,6 +8476,10 @@ static const struct opcode_data opcode_table[] = {
{ 0x205c, 328, "LE Periodic Advertising Sync Transfer Parameters",
le_periodic_adv_sync_trans_params, 8, true,
status_handle_rsp, 3, true},
+ { 0x205d, 329, "LE Set Default Periodic Advertisng Sync Transfer "
+ "Parameters",
+ le_set_default_periodic_adv_sync_trans_params,
+ 6, true, status_rsp, 1, true},
{ }
};
--
2.24.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 8/8] monitor: Decode LE CTE Request Failed event
2020-01-07 9:18 [PATCH 1/8] monitor: Update periodic sync commands Szymon Czapracki
` (5 preceding siblings ...)
2020-01-07 9:18 ` [PATCH 7/8] monitor: Decode LE Set Default Periodic Adv Sync Transfer Params. command Szymon Czapracki
@ 2020-01-07 9:18 ` Szymon Czapracki
6 siblings, 0 replies; 13+ messages in thread
From: Szymon Czapracki @ 2020-01-07 9:18 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Szymon Czapracki
Change-Id: I71f84663461e5d0a3403ab43d33d276bc302acbc
---
monitor/bt.h | 6 ++++++
monitor/packet.c | 10 ++++++++++
2 files changed, 16 insertions(+)
diff --git a/monitor/bt.h b/monitor/bt.h
index 1859dfb21..b31e6c5c5 100644
--- a/monitor/bt.h
+++ b/monitor/bt.h
@@ -3177,6 +3177,12 @@ struct bt_hci_evt_le_chan_select_alg {
uint8_t algorithm;
} __attribute__ ((packed));
+#define BT_HCI_EVT_LE_CTE_REQUEST_FAILED 0x17
+struct bt_hci_evt_le_cte_request_failed {
+ uint8_t status;
+ uint16_t handle;
+} __attribute__ ((packed));
+
#define BT_HCI_EVT_LE_PER_ADV_SYNC_TRANS_REC 0x18
struct bt_hci_evt_le_per_adv_sync_trans_rec {
uint8_t status;
diff --git a/monitor/packet.c b/monitor/packet.c
index d34533966..3450373b0 100644
--- a/monitor/packet.c
+++ b/monitor/packet.c
@@ -9891,6 +9891,14 @@ static void le_chan_select_alg_evt(const void *data, uint8_t size)
print_field("Algorithm: %s (0x%2.2x)", str, evt->algorithm);
}
+static void le_cte_request_failed_evt(const void *data, uint8_t size)
+{
+ const struct bt_hci_evt_le_cte_request_failed *evt = data;
+
+ print_status(evt->status);
+ print_field("Connection handle: %d", evt->handle);
+}
+
static void le_per_adv_sync_trans_rec_evt(const void *data, uint8_t size)
{
const struct bt_hci_evt_le_per_adv_sync_trans_rec *evt = data;
@@ -9992,6 +10000,8 @@ static const struct subevent_data le_meta_event_table[] = {
le_scan_req_received_evt, 8, true},
{ 0x14, "LE Channel Selection Algorithm",
le_chan_select_alg_evt, 3, true},
+ { 0x17, "LE CTE Request Failed",
+ le_cte_request_failed_evt, 3, true},
{ 0x18, "LE Periodic Advertising Sync Transfer Received",
le_per_adv_sync_trans_rec_evt, 19,
true},
--
2.24.1
^ permalink raw reply related [flat|nested] 13+ messages in thread