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

Commit 06781c02 authored by Jakub Tyszkowski's avatar Jakub Tyszkowski
Browse files

Fix the bogus configs default-constructed as a2dp configs

When the xml file contains the "invalid" entry in the scenario record,
which do not refer to any valid config in the 'configurationList`
section, the invalid, default constructed codec configuration (a2dp codec)
was created.

Bug: 319090769
Test: atest VtsHalBluetoothAudioTargetTest
Change-Id: I19b7d1af81e5f2be3fb7261fba8781b3dc47fa12
parent 0259aafb
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -736,8 +736,7 @@ TEST_P(BluetoothAudioProviderFactoryAidl, getProviderInfo_leAudioSessionTypes) {
      ASSERT_NE(codec_info.id.getTag(), CodecId::a2dp);
      // The codec info must contain the information
      // for le audio transport.
      // ASSERT_EQ(codec_info.transport.getTag(),
      // CodecInfo::Transport::le_audio);
      ASSERT_EQ(codec_info.transport.getTag(), CodecInfo::Transport::leAudio);
    }
  }
}
+14 −6
Original line number Diff line number Diff line
@@ -77,8 +77,6 @@ BluetoothLeAudioCodecsProvider::GetLeAudioCodecInfo(
  for (auto& p : configuration_map_) {
    // Initialize new CodecInfo for the config
    auto config_name = p.first;
    if (config_codec_info_map_.count(config_name) == 0)
      config_codec_info_map_[config_name] = CodecInfo();

    // Getting informations from codecConfig and strategyConfig
    const auto codec_config_name = p.second.getCodecConfiguration();
@@ -92,6 +90,9 @@ BluetoothLeAudioCodecsProvider::GetLeAudioCodecInfo(
    if (strategy_configuration_map_iter == strategy_configuration_map_.end())
      continue;

    if (config_codec_info_map_.count(config_name) == 0)
      config_codec_info_map_[config_name] = CodecInfo();

    const auto& codec_config = codec_configuration_map_iter->second;
    const auto codec = codec_config.getCodec();
    const auto& strategy_config = strategy_configuration_map_iter->second;
@@ -137,12 +138,19 @@ BluetoothLeAudioCodecsProvider::GetLeAudioCodecInfo(
    }
  }

  // Goes through every scenario, deduplicate configuration
  // Goes through every scenario, deduplicate configuration, skip the invalid
  // config references (e.g. the "invalid" entries in the xml file).
  std::set<std::string> encoding_config, decoding_config, broadcast_config;
  for (auto& s : supported_scenarios_) {
    if (s.hasEncode()) encoding_config.insert(s.getEncode());
    if (s.hasDecode()) decoding_config.insert(s.getDecode());
    if (s.hasBroadcast()) broadcast_config.insert(s.getBroadcast());
    if (s.hasEncode() && config_codec_info_map_.count(s.getEncode())) {
      encoding_config.insert(s.getEncode());
    }
    if (s.hasDecode() && config_codec_info_map_.count(s.getDecode())) {
      decoding_config.insert(s.getDecode());
    }
    if (s.hasBroadcast() && config_codec_info_map_.count(s.getBroadcast())) {
      broadcast_config.insert(s.getBroadcast());
    }
  }

  // Split by session types and add results