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