memset(&le_adv_slot[slot_id], 0x00, sizeof(bt_adapter_le_adv_slot_t));
}
+gboolean _bt_hal_is_support_multi_adv(void)
+{
+ return (le_feature_info.adv_inst_max > 1 ? TRUE : FALSE);
+}
+
int _bt_hal_get_available_adv_slot_id(bt_uuid_t *uuid, gboolean use_reserved_slot)
{
int i;
if (proxy == NULL)
return BT_STATUS_FAIL;
- if (le_adv_slot[adv_slot_id].is_advertising == TRUE && enable == TRUE)
+ if (le_adv_slot[adv_slot_id].is_advertising == TRUE && enable == TRUE) {
+ ERR("Already advertising inprogress. server_if %d, adv_slot_id %d",server_if, adv_slot_id);
return BT_STATUS_BUSY;
+ }
if (le_adv_slot[adv_slot_id].initialized == TRUE &&
le_adv_slot[adv_slot_id].is_advertising == FALSE &&
return BT_STATUS_FAIL;
}
- INFO("Enable advertising [%d] SLot Id [%d] gatt_server [%d] Is Multi? [%d]",
- enable, adv_slot_id, server_if, is_multi_adv);
+ INFO_C("### %s advertising. gatt_server [%d] adv_slot_id [%d] Is Multi? [%d]",
+ enable ? "Start":"Stop", server_if, adv_slot_id, is_multi_adv);
if (ret)
g_variant_unref(ret);
le_adv_slot[adv_slot_id].is_multi_adv = is_multi_adv;
le_adv_slot[adv_slot_id].is_advertising = enable;
+
return BT_STATUS_SUCCESS;
}
gboolean _bt_hal_update_le_feature_support(const char *item, const char *value,
bt_local_le_features_t *le_features);
+gboolean _bt_hal_is_support_multi_adv(void);
+
int _bt_hal_get_available_adv_slot_id(bt_uuid_t *uuid, gboolean use_reserved_slot);
int _bt_hal_get_adv_slot_adv_handle(int slot_id);
gboolean is_advertising = FALSE;
DBG("+");
+ if (_bt_hal_is_support_multi_adv() == TRUE) {
+ DBG("VSC adv used");
+ return BT_STATUS_SUCCESS;
+ }
+
+ /* Dependent on Kernel operation. Hold adv to prevent stopping adv on kernel */
is_advertising = _bt_hal_is_advertising_in_slot(0);
if (is_advertising) {
DBG("+ Stop current advertising");