Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a28ed9bf authored by Rahul Arya's avatar Rahul Arya
Browse files

Restart advertising after connection made to multi-advertiser

Bug: 244308161
Test: compiles + manual by NP
Tag: #stability
Change-Id: I183995eaf1c3a20f1ffa0dab45eeb118983904f8
parent 4abeafd6
Loading
Loading
Loading
Loading
+13 −4
Original line number Original line Diff line number Diff line
@@ -164,18 +164,27 @@ struct LeAdvertisingManager::impl : public bluetooth::hci::LeAddressManagerCallb
  void multi_advertising_state_change(hci::VendorSpecificEventView event) {
  void multi_advertising_state_change(hci::VendorSpecificEventView event) {
    auto view = hci::LEAdvertiseStateChangeEventView::Create(event);
    auto view = hci::LEAdvertiseStateChangeEventView::Create(event);
    ASSERT(view.IsValid());
    ASSERT(view.IsValid());

    auto advertiser_id = view.GetAdvertisingInstance();

    LOG_INFO(
    LOG_INFO(
        "Instance: 0x%x StateChangeReason: 0x%s Handle: 0x%x Address: %s",
        "Instance: 0x%x StateChangeReason: 0x%s Handle: 0x%x Address: %s",
        view.GetAdvertisingInstance(),
        advertiser_id,
        VseStateChangeReasonText(view.GetStateChangeReason()).c_str(),
        VseStateChangeReasonText(view.GetStateChangeReason()).c_str(),
        view.GetConnectionHandle(),
        view.GetConnectionHandle(),
        advertising_sets_[view.GetAdvertisingInstance()].current_address.ToString().c_str());
        advertising_sets_[view.GetAdvertisingInstance()].current_address.ToString().c_str());


    if (view.GetStateChangeReason() == VseStateChangeReason::CONNECTION_RECEIVED) {
    if (view.GetStateChangeReason() == VseStateChangeReason::CONNECTION_RECEIVED) {
      acl_manager_->OnAdvertisingSetTerminated(
      acl_manager_->OnAdvertisingSetTerminated(
          ErrorCode::SUCCESS,
          ErrorCode::SUCCESS, view.GetConnectionHandle(), advertising_sets_[advertiser_id].current_address);
          view.GetConnectionHandle(),

          advertising_sets_[view.GetAdvertisingInstance()].current_address);
      enabled_sets_[advertiser_id].advertising_handle_ = kInvalidHandle;

      if (!advertising_sets_[advertiser_id].directed) {
        // TODO(250666237) calculate remaining duration and advertising events
        LOG_INFO("Resuming advertising, since not directed");
        enable_advertiser(advertiser_id, true, 0, 0);
      }
    }
    }
  }
  }