From ce49d2b39b51ddb8bc9cb23762fc201b557175fb Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 13 Dec 2014 22:28:29 +0100 Subject: [PATCH] monitor: Add support for LE Enhanced Connection Complete event --- monitor/bt.h | 15 +++++++++++++++ monitor/packet.c | 25 ++++++++++++++++++++++++- 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/monitor/bt.h b/monitor/bt.h index 3b7071a80..a1f2ab32c 100644 --- a/monitor/bt.h +++ b/monitor/bt.h @@ -2496,6 +2496,21 @@ struct bt_hci_evt_le_generate_dhkey_complete { uint8_t dhkey[32]; } __attribute__ ((packed)); +#define BT_HCI_EVT_LE_ENHANCED_CONN_COMPLETE 0x0a +struct bt_hci_evt_le_enhanced_conn_complete { + uint8_t status; + uint16_t handle; + uint8_t role; + uint8_t peer_addr_type; + uint8_t peer_addr[6]; + uint8_t local_rpa[6]; + uint8_t peer_rpa[6]; + uint16_t interval; + uint16_t latency; + uint16_t supv_timeout; + uint8_t clock_accuracy; +} __attribute__ ((packed)); + #define BT_HCI_EVT_LE_DIRECT_ADV_REPORT 0x0b struct bt_hci_evt_le_direct_adv_report { uint8_t num_reports; diff --git a/monitor/packet.c b/monitor/packet.c index b7cf68c21..dec8b60fd 100644 --- a/monitor/packet.c +++ b/monitor/packet.c @@ -7697,6 +7697,28 @@ static void le_generate_dhkey_complete_evt(const void *data, uint8_t size) print_dhkey(evt->dhkey); } +static void le_enhanced_conn_complete_evt(const void *data, uint8_t size) +{ + const struct bt_hci_evt_le_enhanced_conn_complete *evt = data; + + print_status(evt->status); + print_handle(evt->handle); + print_role(evt->role); + print_addr_type("Peer address type", evt->peer_addr_type); + print_addr("Peer address", evt->peer_addr, evt->peer_addr_type); + print_addr("Local resolvable private address", evt->local_rpa, 0x01); + print_addr("Peer resolvable private address", evt->peer_rpa, 0x01); + print_slot_125("Connection interval", evt->interval); + print_slot_125("Connection latency", evt->latency); + print_field("Supervision timeout: %d msec (0x%4.4x)", + le16_to_cpu(evt->supv_timeout) * 10, + le16_to_cpu(evt->supv_timeout)); + print_field("Master clock accuracy: 0x%2.2x", evt->clock_accuracy); + + if (evt->status == 0x00) + assign_handle(le16_to_cpu(evt->handle), 0x01); +} + static void le_direct_adv_report_evt(const void *data, uint8_t size) { const struct bt_hci_evt_le_direct_adv_report *evt = data; @@ -7741,7 +7763,8 @@ static const struct subevent_data subevent_table[] = { le_read_local_pk256_complete_evt, 65, true }, { 0x09, "LE Generate DHKey Complete", le_generate_dhkey_complete_evt, 33, true }, - { 0x0a, "LE Enhanced Connection Complete" }, + { 0x0a, "LE Enhanced Connection Complete", + le_enhanced_conn_complete_evt, 30, true }, { 0x0b, "LE Direct Advertising Report", le_direct_adv_report_evt, 1, false }, { } -- 2.47.3