Re: [PATCH 2/8] monitor: Decode LE Periodic Advertising Sync Transfer Received Event

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Szymon,

On Tue, Jan 7, 2020 at 1:20 AM Szymon Czapracki
<szymon.czapracki@xxxxxxxxxxx> 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



[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux