Diff between d64ca282fe56053cade3e17bda769aa18f150bc0 and 325a33cdddf0acee83bf0a5dbbb96ea383282f81

Changed Files

File Additions Deletions Status
src/adapter.c +30 -0 modified

Full Patch

diff --git a/src/adapter.c b/src/adapter.c
index c40d5ec..5823fae 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -6038,6 +6038,31 @@ static void new_irk_callback(uint16_t index, uint16_t length,
 		btd_device_set_temporary(device, FALSE);
 }
 
+static void new_conn_param(uint16_t index, uint16_t length,
+					const void *param, void *user_data)
+{
+	const struct mgmt_ev_new_conn_param *ev = param;
+	struct btd_adapter *adapter = user_data;
+	uint16_t min, max, latency, timeout;
+	char dst[18];
+
+
+	if (length < sizeof(*ev)) {
+		error("Too small New Connection Parameter event");
+		return;
+	}
+
+	ba2str(&ev->addr.bdaddr, dst);
+
+	min = btohs(ev->min_interval);
+	max = btohs(ev->max_interval);
+	latency = btohs(ev->latency);
+	timeout = btohs(ev->timeout);
+
+	DBG("hci%u %s (%u) min 0x%04x max 0x%04x latency 0x%04x timeout 0x%04x",
+		adapter->dev_id, dst, ev->addr.type, min, max, latency, timeout);
+}
+
 int adapter_set_io_capability(struct btd_adapter *adapter, uint8_t io_cap)
 {
 	struct mgmt_cp_set_io_capability cp;
@@ -6721,6 +6746,11 @@ static void read_info_complete(uint8_t status, uint16_t length,
 						new_irk_callback,
 						adapter, NULL);
 
+	mgmt_register(adapter->mgmt, MGMT_EV_NEW_CONN_PARAM,
+						adapter->dev_id,
+						new_conn_param,
+						adapter, NULL);
+
 	mgmt_register(adapter->mgmt, MGMT_EV_DEVICE_BLOCKED,
 						adapter->dev_id,
 						device_blocked_callback,