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
diff --git a/system/bta/le_audio/device_groups.cc b/system/bta/le_audio/device_groups.cc
index 2967cff..8d63971 100644
--- a/system/bta/le_audio/device_groups.cc
+++ b/system/bta/le_audio/device_groups.cc
@@ -1499,9 +1499,10 @@
       }
 
       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;
       }
 
diff --git a/system/bta/le_audio/devices.cc b/system/bta/le_audio/devices.cc
index cddb4c8..2b09afe 100644
--- a/system/bta/le_audio/devices.cc
+++ b/system/bta/le_audio/devices.cc
@@ -244,10 +244,9 @@
     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 @@
       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::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 @@
       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));
     }
   }
 
diff --git a/system/bta/le_audio/devices.h b/system/bta/le_audio/devices.h
index 7d40c78..756bd27 100644
--- a/system/bta/le_audio/devices.h
+++ b/system/bta/le_audio/devices.h
@@ -182,12 +182,9 @@
       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 @@
       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);
diff --git a/system/bta/le_audio/devices_test.cc b/system/bta/le_audio/devices_test.cc
index c827386..465e405 100644
--- a/system/bta/le_audio/devices_test.cc
+++ b/system/bta/le_audio/devices_test.cc
@@ -1570,14 +1570,18 @@
   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 @@
 
   ::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 @@
   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 @@
   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.*/