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

Commit dd53fcba authored by Jakub Tyszkowski's avatar Jakub Tyszkowski
Browse files

LeAudio: Minor argument passing improvement

Pass a single direction data to SetMetadataToAse() instead of the
bidirectional container, since just a single direction is needed.
Also pass by reference if possible.

Bug: 308428860
Bug: 295972694
Test: atest bluetooth_le_audio_test bluetooth_le_audio_client_test  bluetooth_test_broadcaster bluetooth_test_broadcaster_state_machine bluetooth_le_audio_codec_manager_test
Flag: EXEMPT; mechanical refactor - verified by the unit tests
Change-Id: I20d44988628882caf507e72d47fb40e65125ca92
parent a4b39a46
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -1499,9 +1499,10 @@ bool LeAudioDeviceGroup::ConfigureAses(
      }

      if (!dev->ConfigureAses(audio_set_conf, direction, context_type,
                              &active_ase_cnt, group_audio_locations_memo,
                              metadata_context_types, ccid_lists,
                              reuse_cis_id)) {
                              &active_ase_cnt,
                              group_audio_locations_memo.get(direction),
                              metadata_context_types.get(direction),
                              ccid_lists.get(direction), reuse_cis_id)) {
        return;
      }

+11 −13
Original line number Diff line number Diff line
@@ -244,10 +244,9 @@ bool LeAudioDevice::ConfigureAses(
    const set_configurations::AudioSetConfiguration* audio_set_conf,
    uint8_t direction, LeAudioContextType context_type,
    uint8_t* number_of_already_active_group_ase,
    BidirectionalPair<AudioLocations>& group_audio_locations_memo,
    const BidirectionalPair<AudioContexts>& metadata_context_types,
    const BidirectionalPair<std::vector<uint8_t>>& ccid_lists,
    bool reuse_cis_id) {
    AudioLocations& group_audio_locations_memo,
    const AudioContexts& metadata_context_types,
    const std::vector<uint8_t>& ccid_lists, bool reuse_cis_id) {
  /* First try to use the already configured ASE */
  auto ase = GetFirstActiveAseByDirection(direction);
  if (ase) {
@@ -324,7 +323,7 @@ bool LeAudioDevice::ConfigureAses(
      ase->codec_config.Add(
          codec_spec_conf::kLeAudioLtvTypeAudioChannelAllocation,
          PickAudioLocation(strategy, audio_locations,
                            group_audio_locations_memo.get(direction)));
                            group_audio_locations_memo));

      /* Get default value if no requirement for specific frame blocks per sdu
       */
@@ -975,15 +974,13 @@ void LeAudioDevice::SetAvailableContexts(
}

void LeAudioDevice::SetMetadataToAse(
    struct types::ase* ase,
    const BidirectionalPair<AudioContexts>& metadata_context_types,
    BidirectionalPair<std::vector<uint8_t>> ccid_lists) {
    struct types::ase* ase, const AudioContexts& metadata_context_types,
    const std::vector<uint8_t>& ccid_lists) {
  /* Filter multidirectional audio context for each ase direction */
  auto directional_audio_context = metadata_context_types.get(ase->direction) &
                                   GetAvailableContexts(ase->direction);
  auto directional_audio_context =
      metadata_context_types & GetAvailableContexts(ase->direction);
  if (directional_audio_context.any()) {
    ase->metadata =
        GetMetadata(directional_audio_context, ccid_lists.get(ase->direction));
    ase->metadata = GetMetadata(directional_audio_context, ccid_lists);
  } else {
    ase->metadata = GetMetadata(AudioContexts(LeAudioContextType::UNSPECIFIED),
                                std::vector<uint8_t>());
@@ -1012,7 +1009,8 @@ bool LeAudioDevice::ActivateConfiguredAses(
      ase.active = true;
      ret = true;
      /* update metadata */
      SetMetadataToAse(&ase, metadata_context_types, ccid_lists);
      SetMetadataToAse(&ase, metadata_context_types.get(ase.direction),
                       ccid_lists.get(ase.direction));
    }
  }

+6 −11
Original line number Diff line number Diff line
@@ -182,12 +182,9 @@ class LeAudioDevice {
      const set_configurations::AudioSetConfiguration* audio_set_conf,
      uint8_t direction, types::LeAudioContextType context_type,
      uint8_t* number_of_already_active_group_ase,
      types::BidirectionalPair<types::AudioLocations>&
          group_audio_locations_out,
      const types::BidirectionalPair<types::AudioContexts>&
          metadata_context_types,
      const types::BidirectionalPair<std::vector<uint8_t>>& ccid_lists,
      bool reuse_cis_id);
      types::AudioLocations& group_audio_locations_out,
      const types::AudioContexts& metadata_context_types,
      const std::vector<uint8_t>& ccid_lists, bool reuse_cis_id);

  inline types::AudioContexts GetSupportedContexts(
      int direction = types::kLeAudioDirectionBoth) const {
@@ -223,11 +220,9 @@ class LeAudioDevice {
      const types::BidirectionalPair<types::AudioContexts>&
          metadata_context_types,
      types::BidirectionalPair<std::vector<uint8_t>> ccid_lists);
  void SetMetadataToAse(
      struct types::ase* ase,
      const types::BidirectionalPair<types::AudioContexts>&
          metadata_context_types,
      types::BidirectionalPair<std::vector<uint8_t>> ccid_lists);
  void SetMetadataToAse(struct types::ase* ase,
                        const types::AudioContexts& metadata_context_types,
                        const std::vector<uint8_t>& ccid_lists);

  void PrintDebugState(void);
  void DumpPacsDebugState(std::stringstream& stream);
+23 −11
Original line number Diff line number Diff line
@@ -1570,14 +1570,18 @@ TEST_F(LeAudioAseConfigurationTest, test_reconnection_media) {
  if (!configuration->confs.sink.empty()) {
    left->ConfigureAses(configuration, kLeAudioDirectionSink,
                        group_->GetConfigurationContextType(),
                        &number_of_active_ases, group_audio_locations,
                        audio_contexts, ccid_lists, false);
                        &number_of_active_ases,
                        group_audio_locations.get(kLeAudioDirectionSink),
                        audio_contexts.get(kLeAudioDirectionSink),
                        ccid_lists.get(kLeAudioDirectionSink), false);
  }
  if (!configuration->confs.source.empty()) {
    left->ConfigureAses(configuration, kLeAudioDirectionSource,
                        group_->GetConfigurationContextType(),
                        &number_of_active_ases, group_audio_locations,
                        audio_contexts, ccid_lists, false);
                        &number_of_active_ases,
                        group_audio_locations.get(kLeAudioDirectionSource),
                        audio_contexts.get(kLeAudioDirectionSource),
                        ccid_lists.get(kLeAudioDirectionSource), false);
  }

  ASSERT_TRUE(number_of_active_ases == 2);
@@ -1650,7 +1654,7 @@ TEST_F(LeAudioAseConfigurationTest, test_reactivation_conversational) {

  ::bluetooth::le_audio::types::AudioLocations group_snk_audio_locations = 0;
  ::bluetooth::le_audio::types::AudioLocations group_src_audio_locations = 0;
  uint8_t number_of_already_active_ases = 0;
  BidirectionalPair<uint8_t> number_of_already_active_ases = {0, 0};

  BidirectionalPair<AudioLocations> group_audio_locations = {
      .sink = group_snk_audio_locations, .source = group_src_audio_locations};
@@ -1664,14 +1668,20 @@ TEST_F(LeAudioAseConfigurationTest, test_reactivation_conversational) {
  if (!conversational_configuration->confs.sink.empty()) {
    tws_headset->ConfigureAses(
        conversational_configuration, kLeAudioDirectionSink,
        group_->GetConfigurationContextType(), &number_of_already_active_ases,
        group_audio_locations, audio_contexts, ccid_lists, false);
        group_->GetConfigurationContextType(),
        &number_of_already_active_ases.get(kLeAudioDirectionSink),
        group_audio_locations.get(kLeAudioDirectionSink),
        audio_contexts.get(kLeAudioDirectionSink),
        ccid_lists.get(kLeAudioDirectionSink), false);
  }
  if (!conversational_configuration->confs.source.empty()) {
    tws_headset->ConfigureAses(
        conversational_configuration, kLeAudioDirectionSource,
        group_->GetConfigurationContextType(), &number_of_already_active_ases,
        group_audio_locations, audio_contexts, ccid_lists, false);
        group_->GetConfigurationContextType(),
        &number_of_already_active_ases.get(kLeAudioDirectionSource),
        group_audio_locations.get(kLeAudioDirectionSource),
        audio_contexts.get(kLeAudioDirectionSource),
        ccid_lists.get(kLeAudioDirectionSource), false);
  }

  /* Generate CISes, simulate CIG creation and assign cis handles to ASEs.*/
@@ -1776,8 +1786,10 @@ TEST_F(LeAudioAseConfigurationTest, test_getting_cis_count) {
  if (!media_configuration->confs.sink.empty()) {
    left->ConfigureAses(media_configuration, kLeAudioDirectionSink,
                        group_->GetConfigurationContextType(),
                        &number_of_already_active_ases, group_audio_locations,
                        audio_contexts, ccid_lists, false);
                        &number_of_already_active_ases,
                        group_audio_locations.get(kLeAudioDirectionSink),
                        audio_contexts.get(kLeAudioDirectionSink),
                        ccid_lists.get(kLeAudioDirectionSink), false);
  }

  /* Generate CIS, simulate CIG creation and assign cis handles to ASEs.*/