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

Commit dfa65e71 authored by Łukasz Rymanowski's avatar Łukasz Rymanowski
Browse files

btm_iso: Remove assert on CIS data path created

Now, when audio data are provided from other thread, we need to accept
that there might be a race when Releasing has been initiated by peer device

04-11 17:01:09.080527 14199 14257 I bt_stack: [INFO:client_parser.cc(112)] ASE status: 	ASE id: 0x01	ASE state: Releasing (0x06)
04-11 17:01:09.080824 14199 14257 I bluetooth: packages/modules/Bluetooth/system/bta/le_audio/state_machine.cc:281 ProcessGattNotifEvent:  cd:05:9c:5b:5d:31 , ASE id: 1, state changed STREAMING (0x04) -> RELEASING (0x06)
04-11 17:01:09.080929 14199 14257 I bt_stack: [INFO:devices.h(266)] SetTargetState target state: STREAMING (0x04) new target state: IDLE (0x00)
04-11 17:01:09.092961  9467 10264 E gralloc4: Empty SMPTE 2094-40 data
04-11 17:01:09.103612  9467 10264 E gralloc4: Empty SMPTE 2094-40 data
04-11 17:01:09.114462 14199 15347 F bt_stack: [FATAL:btm_iso_impl.h(428)] Assert failed: iso->state_flags & kStateFlagHasDataPathSet. Data path not set for handle: 0x0060

Bug: 228809876
Bug: 150670922
Test: atest --host net_test_btm_iso
Change-Id: Ibb88bb5cd9853ac6e6c5940d5be446b355633969
parent bff9e091
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -440,8 +440,11 @@ struct iso_impl {
        return;
      }
    }
    LOG_ASSERT(iso->state_flags & kStateFlagHasDataPathSet)
        << "Data path not set for handle: " << loghex(iso_handle);

    if (!(iso->state_flags & kStateFlagHasDataPathSet)) {
      LOG_WARN("Data path not set for handle: 0x%04x", iso_handle);
      return;
    }

    /* Calculate sequence number for the ISO data packet.
     * It should be incremented by 1 every SDU Interval.
+6 −8
Original line number Diff line number Diff line
@@ -2125,20 +2125,18 @@ TEST_F(IsoManagerDeathTest, SendIsoDataWithNoDataPath) {
  IsoManager::GetInstance()->EstablishCis(params);

  EXPECT_CALL(bte_interface_, HciSend).Times(0);
  ASSERT_EXIT(IsoManager::GetInstance()->SendIsoData(
                  volatile_test_cig_create_cmpl_evt_.conn_handles[0],
                  data_vec.data(), data_vec.size()),
              ::testing::KilledBySignal(SIGABRT), "Data path not set");
  IsoManager::GetInstance()->SendIsoData(
      volatile_test_cig_create_cmpl_evt_.conn_handles[0], data_vec.data(),
      data_vec.size());

  // Check on BIG
  IsoManager::GetInstance()->CreateBig(volatile_test_big_params_evt_.big_id,
                                       kDefaultBigParams);

  EXPECT_CALL(bte_interface_, HciSend).Times(0);
  ASSERT_EXIT(IsoManager::GetInstance()->SendIsoData(
                  volatile_test_big_params_evt_.conn_handles[0],
                  data_vec.data(), data_vec.size()),
              ::testing::KilledBySignal(SIGABRT), "Data path not set");
  IsoManager::GetInstance()->SendIsoData(
      volatile_test_big_params_evt_.conn_handles[0], data_vec.data(),
      data_vec.size());
}

TEST_F(IsoManagerDeathTest, SendIsoDataWithNoCigBigHandle) {