Skip to content

Commit 7ef7dee

Browse files
sjanckartben
authored andcommitted
tests: Bluetooth: Tester: Fix leaking advertising instance
If extended advertising was used GAP module was always creating new instance on advertising start (while failing to stop it at the same time). Signed-off-by: Szymon Janc <[email protected]>
1 parent 4f63725 commit 7ef7dee

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

tests/bluetooth/tester/src/btp_gap.c

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -844,6 +844,8 @@ int tester_gap_create_adv_instance(struct bt_le_adv_param *param,
844844
return err;
845845
}
846846

847+
static struct bt_le_ext_adv *gap_ext_adv;
848+
847849
static uint8_t start_advertising(const void *cmd, uint16_t cmd_len,
848850
void *rsp, uint16_t *rsp_len)
849851
{
@@ -897,17 +899,15 @@ static uint8_t start_advertising(const void *cmd, uint16_t cmd_len,
897899
i += sd[sd_len].data_len;
898900
}
899901

900-
struct bt_le_ext_adv *ext_adv = NULL;
901-
902902
err = tester_gap_create_adv_instance(&param, own_addr_type, ad, adv_len, sd,
903-
sd_len, NULL, &ext_adv);
903+
sd_len, NULL, &gap_ext_adv);
904904
if (err != 0) {
905905
return BTP_STATUS_FAILED;
906906
}
907907

908908
if (IS_ENABLED(CONFIG_BT_EXT_ADV) &&
909909
atomic_test_bit(&current_settings, BTP_GAP_SETTINGS_EXTENDED_ADVERTISING)) {
910-
err = bt_le_ext_adv_start(ext_adv, BT_LE_EXT_ADV_START_DEFAULT);
910+
err = bt_le_ext_adv_start(gap_ext_adv, BT_LE_EXT_ADV_START_DEFAULT);
911911
} else {
912912
err = bt_le_adv_start(&param, ad, adv_len, sd_len ? sd : NULL, sd_len);
913913
}
@@ -971,7 +971,13 @@ static uint8_t stop_advertising(const void *cmd, uint16_t cmd_len,
971971
struct btp_gap_stop_advertising_rp *rp = rsp;
972972
int err;
973973

974-
err = bt_le_adv_stop();
974+
if (IS_ENABLED(CONFIG_BT_EXT_ADV) &&
975+
atomic_test_bit(&current_settings, BTP_GAP_SETTINGS_EXTENDED_ADVERTISING)) {
976+
err = bt_le_ext_adv_stop(gap_ext_adv);
977+
} else {
978+
err = bt_le_adv_stop();
979+
}
980+
975981
if (err < 0) {
976982
tester_rsp(BTP_SERVICE_ID_GAP, BTP_GAP_STOP_ADVERTISING, BTP_STATUS_FAILED);
977983
LOG_ERR("Failed to stop advertising: %d", err);

0 commit comments

Comments
 (0)