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

Commit 1d2b04e2 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "leaudio: Fix for handling multiple LeAudio headsets" into tm-qpr-dev

parents 9fe430d0 2b144409
Loading
Loading
Loading
Loading
+9 −9
Original line number Original line Diff line number Diff line
@@ -3625,8 +3625,8 @@ class LeAudioClientImpl : public LeAudioClient {
            static_cast<bluetooth::hci::iso_manager::cis_establish_cmpl_evt*>(
            static_cast<bluetooth::hci::iso_manager::cis_establish_cmpl_evt*>(
                data);
                data);


        LeAudioDevice* leAudioDevice =
        LeAudioDevice* leAudioDevice = leAudioDevices_.FindByCisConnHdl(
            leAudioDevices_.FindByCisConnHdl(event->cis_conn_hdl);
            event->cig_id, event->cis_conn_hdl);
        if (!leAudioDevice) {
        if (!leAudioDevice) {
          LOG(ERROR) << __func__ << ", no bonded Le Audio Device with CIS: "
          LOG(ERROR) << __func__ << ", no bonded Le Audio Device with CIS: "
                     << +event->cis_conn_hdl;
                     << +event->cis_conn_hdl;
@@ -3650,8 +3650,8 @@ class LeAudioClientImpl : public LeAudioClient {
            static_cast<bluetooth::hci::iso_manager::cis_disconnected_evt*>(
            static_cast<bluetooth::hci::iso_manager::cis_disconnected_evt*>(
                data);
                data);


        LeAudioDevice* leAudioDevice =
        LeAudioDevice* leAudioDevice = leAudioDevices_.FindByCisConnHdl(
            leAudioDevices_.FindByCisConnHdl(event->cis_conn_hdl);
            event->cig_id, event->cis_conn_hdl);
        if (!leAudioDevice) {
        if (!leAudioDevice) {
          LOG(ERROR) << __func__ << ", no bonded Le Audio Device with CIS: "
          LOG(ERROR) << __func__ << ", no bonded Le Audio Device with CIS: "
                     << +event->cis_conn_hdl;
                     << +event->cis_conn_hdl;
@@ -3670,9 +3670,9 @@ class LeAudioClientImpl : public LeAudioClient {
  }
  }


  void IsoSetupIsoDataPathCb(uint8_t status, uint16_t conn_handle,
  void IsoSetupIsoDataPathCb(uint8_t status, uint16_t conn_handle,
                             uint8_t /* cig_id */) {
                             uint8_t cig_id) {
    LeAudioDevice* leAudioDevice =
    LeAudioDevice* leAudioDevice =
        leAudioDevices_.FindByCisConnHdl(conn_handle);
        leAudioDevices_.FindByCisConnHdl(cig_id, conn_handle);
    LeAudioDeviceGroup* group = aseGroups_.FindById(leAudioDevice->group_id_);
    LeAudioDeviceGroup* group = aseGroups_.FindById(leAudioDevice->group_id_);


    instance->groupStateMachine_->ProcessHciNotifSetupIsoDataPath(
    instance->groupStateMachine_->ProcessHciNotifSetupIsoDataPath(
@@ -3680,9 +3680,9 @@ class LeAudioClientImpl : public LeAudioClient {
  }
  }


  void IsoRemoveIsoDataPathCb(uint8_t status, uint16_t conn_handle,
  void IsoRemoveIsoDataPathCb(uint8_t status, uint16_t conn_handle,
                              uint8_t /* cig_id */) {
                              uint8_t cig_id) {
    LeAudioDevice* leAudioDevice =
    LeAudioDevice* leAudioDevice =
        leAudioDevices_.FindByCisConnHdl(conn_handle);
        leAudioDevices_.FindByCisConnHdl(cig_id, conn_handle);
    LeAudioDeviceGroup* group = aseGroups_.FindById(leAudioDevice->group_id_);
    LeAudioDeviceGroup* group = aseGroups_.FindById(leAudioDevice->group_id_);


    instance->groupStateMachine_->ProcessHciNotifRemoveIsoDataPath(
    instance->groupStateMachine_->ProcessHciNotifRemoveIsoDataPath(
@@ -3695,7 +3695,7 @@ class LeAudioClientImpl : public LeAudioClient {
      uint32_t retransmittedPackets, uint32_t crcErrorPackets,
      uint32_t retransmittedPackets, uint32_t crcErrorPackets,
      uint32_t rxUnreceivedPackets, uint32_t duplicatePackets) {
      uint32_t rxUnreceivedPackets, uint32_t duplicatePackets) {
    LeAudioDevice* leAudioDevice =
    LeAudioDevice* leAudioDevice =
        leAudioDevices_.FindByCisConnHdl(conn_handle);
        leAudioDevices_.FindByCisConnHdl(cig_id, conn_handle);
    if (!leAudioDevice) {
    if (!leAudioDevice) {
      LOG(WARNING) << __func__ << ", device under connection handle: "
      LOG(WARNING) << __func__ << ", device under connection handle: "
                   << loghex(conn_handle)
                   << loghex(conn_handle)
+7 −2
Original line number Original line Diff line number Diff line
@@ -2589,13 +2589,18 @@ LeAudioDevice* LeAudioDevices::FindByConnId(uint16_t conn_id) {
  return (iter == leAudioDevices_.end()) ? nullptr : iter->get();
  return (iter == leAudioDevices_.end()) ? nullptr : iter->get();
}
}


LeAudioDevice* LeAudioDevices::FindByCisConnHdl(const uint16_t conn_hdl) {
LeAudioDevice* LeAudioDevices::FindByCisConnHdl(uint8_t cig_id,
                                                uint16_t conn_hdl) {
  auto iter = std::find_if(leAudioDevices_.begin(), leAudioDevices_.end(),
  auto iter = std::find_if(leAudioDevices_.begin(), leAudioDevices_.end(),
                           [&conn_hdl](auto& d) {
                           [&conn_hdl, &cig_id](auto& d) {
                             LeAudioDevice* dev;
                             LeAudioDevice* dev;
                             BidirectAsesPair ases;
                             BidirectAsesPair ases;


                             dev = d.get();
                             dev = d.get();
                             if (dev->group_id_ != cig_id) {
                               return false;
                             }

                             ases = dev->GetAsesByCisConnHdl(conn_hdl);
                             ases = dev->GetAsesByCisConnHdl(conn_hdl);
                             if (ases.sink || ases.source)
                             if (ases.sink || ases.source)
                               return true;
                               return true;
+1 −1
Original line number Original line Diff line number Diff line
@@ -177,7 +177,7 @@ class LeAudioDevices {
  LeAudioDevice* FindByAddress(const RawAddress& address);
  LeAudioDevice* FindByAddress(const RawAddress& address);
  std::shared_ptr<LeAudioDevice> GetByAddress(const RawAddress& address);
  std::shared_ptr<LeAudioDevice> GetByAddress(const RawAddress& address);
  LeAudioDevice* FindByConnId(uint16_t conn_id);
  LeAudioDevice* FindByConnId(uint16_t conn_id);
  LeAudioDevice* FindByCisConnHdl(const uint16_t conn_hdl);
  LeAudioDevice* FindByCisConnHdl(uint8_t cig_id, uint16_t conn_hdl);
  size_t Size(void);
  size_t Size(void);
  void Dump(int fd, int group_id);
  void Dump(int fd, int group_id);
  void Cleanup(void);
  void Cleanup(void);