Diff between 1876483852eae481acd1e060131d011519200ddf and 63e1b0396180a9b412729e7757da19141a097618

Changed Files

File Additions Deletions Status
plugins/mgmtops.c +11 -4 modified

Full Patch

diff --git a/plugins/mgmtops.c b/plugins/mgmtops.c
index e9c6f0b..2c062e5 100644
--- a/plugins/mgmtops.c
+++ b/plugins/mgmtops.c
@@ -132,10 +132,6 @@ static void add_controller(uint16_t index)
 
 	info->valid = TRUE;
 
-	hci_set_bit(MGMT_ADDR_BREDR, &info->discov_type);
-	hci_set_bit(MGMT_ADDR_LE_PUBLIC, &info->discov_type);
-	hci_set_bit(MGMT_ADDR_LE_RANDOM, &info->discov_type);
-
 	DBG("Added controller %u", index);
 }
 
@@ -1850,9 +1846,20 @@ static int mgmt_start_discovery(int index)
 	struct mgmt_hdr *hdr = (void *) buf;
 	struct mgmt_cp_start_discovery *cp = (void *) &buf[sizeof(*hdr)];
 	struct controller_info *info = &controllers[index];
+	uint8_t type;
 
 	DBG("index %d", index);
 
+	if (mgmt_bredr(info->current_settings))
+		hci_set_bit(MGMT_ADDR_BREDR, &type);
+
+	if (mgmt_low_energy(info->current_settings)) {
+		hci_set_bit(MGMT_ADDR_LE_PUBLIC, &type);
+		hci_set_bit(MGMT_ADDR_LE_RANDOM, &type);
+	}
+
+	info->discov_type = type;
+
 	memset(buf, 0, sizeof(buf));
 	hdr->opcode = htobs(MGMT_OP_START_DISCOVERY);
 	hdr->len = htobs(sizeof(*cp));