diff --git a/emulator/btdev.c b/emulator/btdev.c
index 67c932d..1a0f9ef 100644
--- a/emulator/btdev.c
+++ b/emulator/btdev.c
return ext_adv->handle == handle;
}
+static bool match_ext_adv_enable(const void *data, const void *match_data)
+{
+ const struct le_ext_adv *ext_adv = data;
+
+ return ext_adv->enable;
+}
+
static void ext_adv_disable(void *data, void *user_data)
{
struct le_ext_adv *ext_adv = data;
+ struct btdev *btdev = ext_adv->dev;
uint8_t handle = PTR_TO_UINT(user_data);
if (handle && ext_adv->handle != handle)
}
ext_adv->enable = 0x00;
+
+ /* Consider le_adv_enable disabled if all advertising sets are
+ * disabled.
+ */
+ ext_adv = queue_find(btdev->le_ext_adv, match_ext_adv_enable, NULL);
+ if (!ext_adv)
+ btdev->le_adv_enable = 0x00;
}
static bool ext_adv_is_connectable(struct le_ext_adv *ext_adv)