bool advertising; /* Advertising active */
gchar *version; /* Bluetooth Version */
uint8_t adv_tx_power;
+ uint8_t adv_restart_instance;
guint adv_restart_timeout;
bool le_discovering; /* LE Discovery active */
GSList *le_discovery_list; /* list of LE discovery clients */
DBUS_TYPE_INVALID))
return btd_error_invalid_args(msg);
- if (adapter->adv_restart_timeout) {
- if (enable) {
- return btd_error_in_progress(msg);
- } else {
- DBG("Advertising stop received. No need to restart advertising");
- g_source_remove(adapter->adv_restart_timeout);
- adapter->adv_restart_timeout = 0;
- }
+ if (adapter->adv_restart_timeout && adapter->adv_restart_instance == slot_id) {
+ DBG("restart advertising slot_id %d restart is in progress", slot_id);
+ return btd_error_in_progress(msg);
}
DBG("%s advertising slot_id %d", enable ? "Enable" : "Disable", slot_id);
data->adapter = adapter;
data->slot_id = ev->adv_instance;
+ adapter->adv_restart_instance = ev->adv_instance;
adapter->adv_restart_timeout =
g_timeout_add(300, multi_adv_start_timeout_cb, data);
}