Message ID | 20240628072342.2256-1-quic_prathm@quicinc.com |
---|---|
State | New |
Headers | show |
Series | [v1] Added BREDR not supported bit in AD Flag when discoverable is off | expand |
On 6/28/2024 7:08 PM, Luiz Augusto von Dentz wrote: > Hi, > > On Fri, Jun 28, 2024 at 3:24 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 added BR/EDR not supported bit in the AD Type Flag when >> discoverable is off. >> >> Signed-off-by: Prathibha Madugonde <quic_prathm@quicinc.com> >> --- >> src/advertising.c | 16 ++++++++++++++++ >> 1 file changed, 16 insertions(+) >> >> diff --git a/src/advertising.c b/src/advertising.c >> index 5d373e088..9857ceceb 100644 >> --- a/src/advertising.c >> +++ b/src/advertising.c >> @@ -1444,6 +1444,7 @@ static DBusMessage *parse_advertisement(struct btd_adv_client *client) >> { >> struct adv_parser *parser; >> int err; >> + uint8_t flags; >> >> for (parser = parsers; parser && parser->name; parser++) { >> DBusMessageIter iter; >> @@ -1499,6 +1500,21 @@ static DBusMessage *parse_advertisement(struct btd_adv_client *client) >> goto fail; >> } >> >> + if (!btd_adapter_get_discoverable(client->manager->adapter)) { >> + /* GAP.TS.p44 Test Spec GAP/DISC/NONM/BV-02-C >> + * page 158: >> + * IUT does not contain >> + * ‘LE General Discoverable Mode’ flag or the >> + * ‘LE Limited Discoverable Mode’ flag in the Flags AD Type >> + * But AD Flag Type should be there for the test case to >> + * PASS. Thus BR/EDR Not Supported BIT shall be included >> + * in the AD Type flag. >> + */ >> + flags = bt_ad_get_flags(client->data); >> + flags |= BT_AD_FLAG_NO_BREDR; >> + bt_ad_add_flags(client->data, &flags, 1); >> + } > > I think we would be much better off using broadcaster role for such a > test case or does it require to be connectable? Anyway I don't think > there is a requirement to disable BR/EDR when not discoverable, so if > we really need to pass specific flags then perhaps it would be better > to create a Flags property so clients can set themselves. > Hi, This particular test case require IUT to be in connectable. There is already code snippet to disable BR/EDR when adapter is not discoverable in the set_flags() like below. /* 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)) flags |= BT_AD_FLAG_NO_BREDR; Hence using the same logic. Currently AD flags(BT_AD_FLAG_LIMITED, BT_AD_FLAG_GENERAL & BT_AD_FLAG_NO_BREDR) is managed based on properties discoverable, discoverable timeout and adapter discoverable. -- Prathibha Madugonde >> err = refresh_advertisement(client, add_adv_callback); >> >> if (!err) >> -- >> 2.17.1 >> > >
Hi, On Mon, Jul 1, 2024 at 7:03 AM Prathibha Madugonde <quic_prathm@quicinc.com> wrote: > > > > On 6/28/2024 7:08 PM, Luiz Augusto von Dentz wrote: > > Hi, > > > > On Fri, Jun 28, 2024 at 3:24 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 added BR/EDR not supported bit in the AD Type Flag when > >> discoverable is off. > >> > >> Signed-off-by: Prathibha Madugonde <quic_prathm@quicinc.com> > >> --- > >> src/advertising.c | 16 ++++++++++++++++ > >> 1 file changed, 16 insertions(+) > >> > >> diff --git a/src/advertising.c b/src/advertising.c > >> index 5d373e088..9857ceceb 100644 > >> --- a/src/advertising.c > >> +++ b/src/advertising.c > >> @@ -1444,6 +1444,7 @@ static DBusMessage *parse_advertisement(struct btd_adv_client *client) > >> { > >> struct adv_parser *parser; > >> int err; > >> + uint8_t flags; > >> > >> for (parser = parsers; parser && parser->name; parser++) { > >> DBusMessageIter iter; > >> @@ -1499,6 +1500,21 @@ static DBusMessage *parse_advertisement(struct btd_adv_client *client) > >> goto fail; > >> } > >> > >> + if (!btd_adapter_get_discoverable(client->manager->adapter)) { > >> + /* GAP.TS.p44 Test Spec GAP/DISC/NONM/BV-02-C > >> + * page 158: > >> + * IUT does not contain > >> + * ‘LE General Discoverable Mode’ flag or the > >> + * ‘LE Limited Discoverable Mode’ flag in the Flags AD Type > >> + * But AD Flag Type should be there for the test case to > >> + * PASS. Thus BR/EDR Not Supported BIT shall be included > >> + * in the AD Type flag. > >> + */ > >> + flags = bt_ad_get_flags(client->data); > >> + flags |= BT_AD_FLAG_NO_BREDR; > >> + bt_ad_add_flags(client->data, &flags, 1); > >> + } > > > > I think we would be much better off using broadcaster role for such a > > test case or does it require to be connectable? Anyway I don't think > > there is a requirement to disable BR/EDR when not discoverable, so if > > we really need to pass specific flags then perhaps it would be better > > to create a Flags property so clients can set themselves. > > > Hi, > This particular test case require IUT to be in connectable. There is > already code snippet to disable BR/EDR when adapter is not discoverable > in the set_flags() like below. > /* 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)) > flags |= BT_AD_FLAG_NO_BREDR; > > Hence using the same logic. Currently AD flags(BT_AD_FLAG_LIMITED, > BT_AD_FLAG_GENERAL & BT_AD_FLAG_NO_BREDR) is managed based on properties > discoverable, discoverable timeout and adapter discoverable. Oh, in that case why didn't you change that statement? Anyway, the PTS requiring the use of flags is rather unconventional here but I think it should be fine not marking BR/EDR support if it is not discoverable. > -- > Prathibha Madugonde > > > >> err = refresh_advertisement(client, add_adv_callback); > >> > >> if (!err) > >> -- > >> 2.17.1 > >> > > > >
diff --git a/src/advertising.c b/src/advertising.c index 5d373e088..9857ceceb 100644 --- a/src/advertising.c +++ b/src/advertising.c @@ -1444,6 +1444,7 @@ static DBusMessage *parse_advertisement(struct btd_adv_client *client) { struct adv_parser *parser; int err; + uint8_t flags; for (parser = parsers; parser && parser->name; parser++) { DBusMessageIter iter; @@ -1499,6 +1500,21 @@ static DBusMessage *parse_advertisement(struct btd_adv_client *client) goto fail; } + if (!btd_adapter_get_discoverable(client->manager->adapter)) { + /* GAP.TS.p44 Test Spec GAP/DISC/NONM/BV-02-C + * page 158: + * IUT does not contain + * ‘LE General Discoverable Mode’ flag or the + * ‘LE Limited Discoverable Mode’ flag in the Flags AD Type + * But AD Flag Type should be there for the test case to + * PASS. Thus BR/EDR Not Supported BIT shall be included + * in the AD Type flag. + */ + flags = bt_ad_get_flags(client->data); + flags |= BT_AD_FLAG_NO_BREDR; + bt_ad_add_flags(client->data, &flags, 1); + } + err = refresh_advertisement(client, add_adv_callback); if (!err)