Hi, On Wed, Jan 3, 2024 at 5:14 AM <clancy_shang@xxxxxxx> wrote: > > From: Clancy Shang <clancy.shang@xxxxxxxxxxx> > > Airpod is performing inquiry scans in BR/EDR and advertising in an > unconnectable mode with the same public address at the same time. > with this feature, when found airpod device, set the bredr support, > fix it pairs fail bug. > > Signed-off-by: Clancy Shang <clancy.shang@xxxxxxxxxxx> > --- > src/adapter.c | 25 +++++++++++++++++++++++++ > 1 file changed, 25 insertions(+) > > diff --git a/src/adapter.c b/src/adapter.c > index 022390f0d..71f7ed86d 100644 > --- a/src/adapter.c > +++ b/src/adapter.c > @@ -7066,6 +7066,24 @@ static void adapter_msd_notify(struct btd_adapter *adapter, > } > } > > +#define APPLE_INC_VENDOR_ID 0x004c > + > +static bool eir_msd_is_apple_inc(GSList *msd_list) > +{ > + GSList *msd_l, *msd_next; > + > + for (msd_l = msd_list; msd_l != NULL; msd_l = msd_next) { > + const struct eir_msd *msd = msd_l->data; > + > + msd_next = g_slist_next(msd_l); > + > + if (msd->company == APPLE_INC_VENDOR_ID) > + return true; > + } > + > + return false; > +} > + > static bool is_filter_match(GSList *discovery_filter, struct eir_data *eir_data, > int8_t rssi) > { > @@ -7281,6 +7299,13 @@ void btd_adapter_device_found(struct btd_adapter *adapter, > device_update_last_seen(dev, BDADDR_BREDR, !not_connectable); > } > > + if (eir_msd_is_apple_inc(eir_data.msd_list) && > + (not_connectable == true) && > + (bdaddr_type == BDADDR_LE_PUBLIC)) { > + device_set_bredr_support(dev); > + device_update_last_seen(dev, BDADDR_BREDR, true); > + } NAK, we are not going to introduce device specific policy hardcoded in the code like this, if you really want to update last seen then you either need a dedicated driver that handles Apple UUID on its own plugin, or make the policy plugin register a driver for it, that said there is a flag for that indicates BR/EDR is supported not sure why apple it no advertising using it? > if (eir_data.name != NULL && eir_data.name_complete) > device_store_cached_name(dev, eir_data.name); > > -- > 2.25.1 > > -- Luiz Augusto von Dentz