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

Commit da144b2f authored by Rahul Arya's avatar Rahul Arya Committed by Cherrypicker Worker
Browse files

Restart advertising after connection made to multi-advertiser

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

    auto advertiser_id = view.GetAdvertisingInstance();

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

    if (view.GetStateChangeReason() == VseStateChangeReason::CONNECTION_RECEIVED) {
      acl_manager_->OnAdvertisingSetTerminated(
          ErrorCode::SUCCESS,
          view.GetConnectionHandle(),
          advertising_sets_[view.GetAdvertisingInstance()].current_address);
          ErrorCode::SUCCESS, view.GetConnectionHandle(), advertising_sets_[advertiser_id].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);
      }
    }
  }