Default implementation of getLeAudioBroadcastConfiguration for
LE Audio Offload provider

Bug: 306225778
Test: mmm hardware/interfaces/bluetooth/audio/aidl/default
Change-Id: I5bfb4a84a8222603c64ac51a28b5962825182676
diff --git a/bluetooth/audio/aidl/default/LeAudioOffloadAudioProvider.h b/bluetooth/audio/aidl/default/LeAudioOffloadAudioProvider.h
index b6037c3..2785e7f 100644
--- a/bluetooth/audio/aidl/default/LeAudioOffloadAudioProvider.h
+++ b/bluetooth/audio/aidl/default/LeAudioOffloadAudioProvider.h
@@ -21,6 +21,7 @@
 #include "BluetoothAudioProvider.h"
 #include "aidl/android/hardware/bluetooth/audio/LeAudioAseConfiguration.h"
 #include "aidl/android/hardware/bluetooth/audio/MetadataLtv.h"
+#include "aidl/android/hardware/bluetooth/audio/SessionType.h"
 
 namespace aidl {
 namespace android {
@@ -38,6 +39,8 @@
     LeAudioAseQosConfigurationRequirement::AseQosDirectionRequirement;
 using LeAudioAseQosConfiguration =
     IBluetoothAudioProvider::LeAudioAseQosConfiguration;
+using LeAudioBroadcastConfigurationSetting =
+    IBluetoothAudioProvider::LeAudioBroadcastConfigurationSetting;
 
 class LeAudioOffloadAudioProvider : public BluetoothAudioProvider {
  public:
@@ -68,12 +71,14 @@
           in_qosRequirement,
       IBluetoothAudioProvider::LeAudioAseQosConfigurationPair* _aidl_return)
       override;
-  ndk::ScopedAStatus onSinkAseMetadataChanged(
-      IBluetoothAudioProvider::AseState in_state,
+  ndk::ScopedAStatus onSourceAseMetadataChanged(
+      IBluetoothAudioProvider::AseState in_state, int32_t in_cigId,
+      int32_t in_cisId,
       const std::optional<std::vector<std::optional<MetadataLtv>>>& in_metadata)
       override;
-  ndk::ScopedAStatus onSourceAseMetadataChanged(
-      IBluetoothAudioProvider::AseState in_state,
+  ndk::ScopedAStatus onSinkAseMetadataChanged(
+      IBluetoothAudioProvider::AseState in_state, int32_t in_cigId,
+      int32_t in_cisId,
       const std::optional<std::vector<std::optional<MetadataLtv>>>& in_metadata)
       override;
   ndk::ScopedAStatus getLeAudioBroadcastConfiguration(
@@ -82,12 +87,12 @@
           in_remoteSinkAudioCapabilities,
       const IBluetoothAudioProvider::LeAudioBroadcastConfigurationRequirement&
           in_requirement,
-      IBluetoothAudioProvider::LeAudioBroadcastConfigurationSetting*
-          _aidl_return) override;
+      LeAudioBroadcastConfigurationSetting* _aidl_return) override;
 
  private:
   ndk::ScopedAStatus onSessionReady(DataMQDesc* _aidl_return) override;
   std::map<CodecId, uint32_t> codec_priority_map_;
+  std::vector<LeAudioBroadcastConfigurationSetting> broadcast_settings;
 
   // Private matching function definitions
   bool isMatchedValidCodec(CodecId cfg_codec, CodecId req_codec);
@@ -119,6 +124,9 @@
       std::vector<CodecSpecificCapabilitiesLtv> codec_capabilities);
   bool isMatchedAseConfiguration(LeAudioAseConfiguration setting_cfg,
                                  LeAudioAseConfiguration requirement_cfg);
+  bool isMatchedBISConfiguration(
+      LeAudioBisConfiguration bis_cfg,
+      const IBluetoothAudioProvider::LeAudioDeviceCapabilities& capabilities);
   void filterCapabilitiesAseDirectionConfiguration(
       std::vector<std::optional<AseDirectionConfiguration>>&
           direction_configurations,
@@ -144,6 +152,11 @@
           requirement);
   bool isMatchedQosRequirement(LeAudioAseQosConfiguration setting_qos,
                                AseQosDirectionRequirement requirement_qos);
+  std::optional<LeAudioBroadcastConfigurationSetting>
+  getCapabilitiesMatchedBroadcastConfigurationSettings(
+      LeAudioBroadcastConfigurationSetting& setting,
+      const IBluetoothAudioProvider::LeAudioDeviceCapabilities& capabilities);
+  void getBroadcastSettings();
 };
 
 class LeAudioOffloadOutputAudioProvider : public LeAudioOffloadAudioProvider {