Allow a broadcast advertiser to be passed up to application, if the scanner is an ISO Sync Receiver capable device. This allows for a broadcast sink to discover broadcast sources. --- src/adapter.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/adapter.c b/src/adapter.c index 2679d4302..9c971d488 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -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) { -- 2.34.1