2020-01-07 09:19:21

by Szymon Czapracki

[permalink] [raw]
Subject: [PATCH 4/8] monitor: Decode LE Periodic Advertising Sync Transfer command

< 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


2020-01-07 23:48:15

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: Re: [PATCH 4/8] monitor: Decode LE Periodic Advertising Sync Transfer command

Hi Szymon,

On Tue, Jan 7, 2020 at 1:20 AM Szymon Czapracki
<[email protected]> 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