@@ -7031,6 +7031,16 @@ static bool is_filter_match(GSList *discovery_filter, struct eir_data *eir_data,
return got_match;
}
+static bool accept_bcast_adv(struct btd_adapter *adapter,
+ struct eir_data *eir_data)
+{
+ if ((btd_adapter_has_settings(adapter, MGMT_SETTING_ISO_SYNC_RECEIVER))
+ && !(eir_data->flags & (EIR_LIM_DISC | EIR_GEN_DISC)))
+ return true;
+
+ return false;
+}
+
static void filter_duplicate_data(void *data, void *user_data)
{
struct discovery_client *client = data;
@@ -7154,12 +7164,18 @@ void btd_adapter_device_found(struct btd_adapter *adapter,
return;
}
+ if (accept_bcast_adv(adapter, &eir_data))
+ monitoring = true;
+
if (!discoverable && !monitoring && !eir_data.rsi) {
eir_data_free(&eir_data);
return;
}
dev = adapter_create_device(adapter, bdaddr, bdaddr_type);
+
+ if (accept_bcast_adv(adapter, &eir_data))
+ btd_device_set_temporary(dev, false);
}
if (!dev) {