Re: [PATCH BlueZ] Set BREDR not supported bit in AD Flag when discoverable is off

Luiz Augusto von Dentz
2024-07-05T17:20:47Z

Hi,

On Fri, Jul 5, 2024 at 3:37 AM <quic_prathm@quicinc.com> wrote:
>
> From: Prathibha Madugonde <quic_prathm@quicinc.com>
>
> Fix for GAP/DISC/NONM/BV-02-C
> As per GAP.TS.p44 test spec
> IUT does not contain General Discoverable mode and Limited Discoverable
> mode in the AD Type Flag. IUT shall send AD Type Flag to PASS the test
> case, thus set BR/EDR not supported bit in the AD Type Flag when
> discoverable is off.
>
> client/advertising.c:
> Allowing discoverable property to list in the parsing
> function when discoverable is off.
>
> Test steps:
> From DUT, bluetoothctl go to menu advertise
> set discoverable to off and then advertise on.
> In AD Flags BR/EDR not supported BIT shall be set.
>
> ---
> client/advertising.c | 8 +-------
> src/advertising.c | 3 +--
> 2 files changed, 2 insertions(+), 9 deletions(-)
>
> diff --git a/client/advertising.c b/client/advertising.c
> index a9b865a65..4a98121a4 100644
> --- a/client/advertising.c
> +++ b/client/advertising.c
> @@ -416,12 +416,6 @@ static gboolean get_data(const GDBusPropertyTable *property,
> return TRUE;
> }
>
> -static gboolean discoverable_exists(const GDBusPropertyTable *property,
> - void *data)
> -{
> - return ad.discoverable;
> -}
> -
> static gboolean get_discoverable(const GDBusPropertyTable *property,
> DBusMessageIter *iter, void *user_data)
> {
> @@ -498,7 +492,7 @@ static const GDBusPropertyTable ad_props[] = {
> { "ManufacturerData", "a{qv}", get_manufacturer_data, NULL,
> manufacturer_data_exists },
> { "Data", "a{yv}", get_data, NULL, data_exists },
> - { "Discoverable", "b", get_discoverable, NULL, discoverable_exists },
> + { "Discoverable", "b", get_discoverable, NULL, NULL },

Doesn't seems the above change have anything to do with the commit
description, perhaps you want to force it as non-discoverable in case
it is not set? I guess it makes sense but it should probably be made
into its own commit with proper description.

> { "DiscoverableTimeout", "q", get_discoverable_timeout, NULL,
> discoverable_timeout_exists },
> { "Includes", "as", get_includes, NULL, includes_exists },
> diff --git a/src/advertising.c b/src/advertising.c
> index 5d373e088..af3ed2b93 100644
> --- a/src/advertising.c
> +++ b/src/advertising.c
> @@ -734,8 +734,7 @@ static bool set_flags(struct btd_adv_client *client, uint8_t flags)
> /* Set BR/EDR Not Supported if adapter is not discoverable but the
> * instance is.
> */
> - if ((flags & (BT_AD_FLAG_GENERAL | BT_AD_FLAG_LIMITED)) &&
> - !btd_adapter_get_discoverable(client->manager->adapter))
> + if (!btd_adapter_get_discoverable(client->manager->adapter))
> flags |= BT_AD_FLAG_NO_BREDR;
>
> if (!bt_ad_add_flags(client->data, &flags, 1))
> --
> 2.17.1
>

--
Luiz Augusto von Dentz