Revert "audio: Parse module configurations from the APM XML files"
Revert submission 2770886-AidlAudioHalModuleConfig
Reason for revert: Breaks BluetoothInstrumentationTests on main downstream
Reverted changes: /q/submissionid:2770886-AidlAudioHalModuleConfig
Bug: 305291602
Change-Id: I0076c88877943d9498f90c477e78a2be5d390150
diff --git a/audio/aidl/default/AudioPolicyConfigXmlConverter.cpp b/audio/aidl/default/AudioPolicyConfigXmlConverter.cpp
index 5d06cb6..7452c8e 100644
--- a/audio/aidl/default/AudioPolicyConfigXmlConverter.cpp
+++ b/audio/aidl/default/AudioPolicyConfigXmlConverter.cpp
@@ -30,7 +30,6 @@
#include "core-impl/AidlConversionXsdc.h"
#include "core-impl/AudioPolicyConfigXmlConverter.h"
-#include "core-impl/XsdcConversion.h"
using aidl::android::media::audio::common::AudioFormatDescription;
using aidl::android::media::audio::common::AudioHalEngineConfig;
@@ -38,39 +37,60 @@
using aidl::android::media::audio::common::AudioHalVolumeGroup;
using aidl::android::media::audio::common::AudioStreamType;
-namespace ap_xsd = android::audio::policy::configuration;
+namespace xsd = android::audio::policy::configuration;
namespace aidl::android::hardware::audio::core::internal {
static const int kDefaultVolumeIndexMin = 0;
static const int kDefaultVolumeIndexMax = 100;
static const int KVolumeIndexDeferredToAudioService = -1;
+/**
+ * Valid curve points take the form "<index>,<attenuationMb>", where the index
+ * must be in the range [0,100]. kInvalidCurvePointIndex is used to indicate
+ * that a point was formatted incorrectly (e.g. if a vendor accidentally typed a
+ * '.' instead of a ',' in their XML) -- using such a curve point will result in
+ * failed VTS tests.
+ */
+static const int8_t kInvalidCurvePointIndex = -1;
-ConversionResult<AudioHalVolumeCurve> AudioPolicyConfigXmlConverter::convertVolumeCurveToAidl(
- const ap_xsd::Volume& xsdcVolumeCurve) {
+AudioHalVolumeCurve::CurvePoint AudioPolicyConfigXmlConverter::convertCurvePointToAidl(
+ const std::string& xsdcCurvePoint) {
+ AudioHalVolumeCurve::CurvePoint aidlCurvePoint{};
+ if (sscanf(xsdcCurvePoint.c_str(), "%" SCNd8 ",%d", &aidlCurvePoint.index,
+ &aidlCurvePoint.attenuationMb) != 2) {
+ aidlCurvePoint.index = kInvalidCurvePointIndex;
+ }
+ return aidlCurvePoint;
+}
+
+AudioHalVolumeCurve AudioPolicyConfigXmlConverter::convertVolumeCurveToAidl(
+ const xsd::Volume& xsdcVolumeCurve) {
AudioHalVolumeCurve aidlVolumeCurve;
aidlVolumeCurve.deviceCategory =
static_cast<AudioHalVolumeCurve::DeviceCategory>(xsdcVolumeCurve.getDeviceCategory());
if (xsdcVolumeCurve.hasRef()) {
if (mVolumesReferenceMap.empty()) {
- mVolumesReferenceMap = generateReferenceMap<ap_xsd::Volumes, ap_xsd::Reference>(
+ mVolumesReferenceMap = generateReferenceMap<xsd::Volumes, xsd::Reference>(
getXsdcConfig()->getVolumes());
}
- aidlVolumeCurve.curvePoints = VALUE_OR_FATAL(
- (convertCollectionToAidl<std::string, AudioHalVolumeCurve::CurvePoint>(
+ aidlVolumeCurve.curvePoints =
+ convertCollectionToAidlUnchecked<std::string, AudioHalVolumeCurve::CurvePoint>(
mVolumesReferenceMap.at(xsdcVolumeCurve.getRef()).getPoint(),
- &convertCurvePointToAidl)));
+ std::bind(&AudioPolicyConfigXmlConverter::convertCurvePointToAidl, this,
+ std::placeholders::_1));
} else {
- aidlVolumeCurve.curvePoints = VALUE_OR_FATAL(
- (convertCollectionToAidl<std::string, AudioHalVolumeCurve::CurvePoint>(
- xsdcVolumeCurve.getPoint(), &convertCurvePointToAidl)));
+ aidlVolumeCurve.curvePoints =
+ convertCollectionToAidlUnchecked<std::string, AudioHalVolumeCurve::CurvePoint>(
+ xsdcVolumeCurve.getPoint(),
+ std::bind(&AudioPolicyConfigXmlConverter::convertCurvePointToAidl, this,
+ std::placeholders::_1));
}
return aidlVolumeCurve;
}
-void AudioPolicyConfigXmlConverter::mapStreamToVolumeCurve(const ap_xsd::Volume& xsdcVolumeCurve) {
+void AudioPolicyConfigXmlConverter::mapStreamToVolumeCurve(const xsd::Volume& xsdcVolumeCurve) {
mStreamToVolumeCurvesMap[xsdcVolumeCurve.getStream()].push_back(
- VALUE_OR_FATAL(convertVolumeCurveToAidl(xsdcVolumeCurve)));
+ convertVolumeCurveToAidl(xsdcVolumeCurve));
}
const SurroundSoundConfig& AudioPolicyConfigXmlConverter::getSurroundSoundConfig() {
@@ -89,11 +109,6 @@
return aidlSurroundSoundConfig;
}
-std::unique_ptr<AudioPolicyConfigXmlConverter::ModuleConfigs>
-AudioPolicyConfigXmlConverter::releaseModuleConfigs() {
- return std::move(mModuleConfigurations);
-}
-
const AudioHalEngineConfig& AudioPolicyConfigXmlConverter::getAidlEngineConfig() {
if (mAidlEngineConfig.volumeGroups.empty() && getXsdcConfig() &&
getXsdcConfig()->hasVolumes()) {
@@ -145,8 +160,8 @@
void AudioPolicyConfigXmlConverter::mapStreamsToVolumeCurves() {
if (getXsdcConfig()->hasVolumes()) {
- for (const ap_xsd::Volumes& xsdcWrapperType : getXsdcConfig()->getVolumes()) {
- for (const ap_xsd::Volume& xsdcVolume : xsdcWrapperType.getVolume()) {
+ for (const xsd::Volumes& xsdcWrapperType : getXsdcConfig()->getVolumes()) {
+ for (const xsd::Volume& xsdcVolume : xsdcWrapperType.getVolume()) {
mapStreamToVolumeCurve(xsdcVolume);
}
}
@@ -156,7 +171,7 @@
void AudioPolicyConfigXmlConverter::addVolumeGroupstoEngineConfig() {
for (const auto& [xsdcStream, volumeCurves] : mStreamToVolumeCurvesMap) {
AudioHalVolumeGroup volumeGroup;
- volumeGroup.name = ap_xsd::toString(xsdcStream);
+ volumeGroup.name = xsd::toString(xsdcStream);
if (static_cast<int>(xsdcStream) >= AUDIO_STREAM_PUBLIC_CNT) {
volumeGroup.minIndex = kDefaultVolumeIndexMin;
volumeGroup.maxIndex = kDefaultVolumeIndexMax;
@@ -175,18 +190,4 @@
addVolumeGroupstoEngineConfig();
}
}
-
-void AudioPolicyConfigXmlConverter::init() {
- if (!getXsdcConfig()->hasModules()) return;
- for (const ap_xsd::Modules& xsdcModulesType : getXsdcConfig()->getModules()) {
- if (!xsdcModulesType.has_module()) continue;
- for (const ap_xsd::Modules::Module& xsdcModule : xsdcModulesType.get_module()) {
- // 'primary' in the XML schema used by HIDL is equivalent to 'default' module.
- const std::string name =
- xsdcModule.getName() != "primary" ? xsdcModule.getName() : "default";
- mModuleConfigurations->emplace_back(
- name, VALUE_OR_FATAL(convertModuleConfigToAidl(xsdcModule)));
- }
- }
-}
} // namespace aidl::android::hardware::audio::core::internal