Effect AIDL: Refactor effect capability with Range implementation
Bug: 258124419
Test: atest --test-mapping hardware/interfaces/audio/aidl/vts:presubmit
Change-Id: Ie76270e91471a30f7dda1883c510cd318745855f
diff --git a/audio/aidl/default/automaticGainControl/AutomaticGainControlSw.cpp b/audio/aidl/default/automaticGainControl/AutomaticGainControlSw.cpp
index 8c706ef..30d7910 100644
--- a/audio/aidl/default/automaticGainControl/AutomaticGainControlSw.cpp
+++ b/audio/aidl/default/automaticGainControl/AutomaticGainControlSw.cpp
@@ -60,8 +60,13 @@
namespace aidl::android::hardware::audio::effect {
const std::string AutomaticGainControlSw::kEffectName = "AutomaticGainControlSw";
-const AutomaticGainControl::Capability AutomaticGainControlSw::kCapability = {
- .maxFixedDigitalGainMb = 50000, .maxSaturationMarginMb = 10000};
+
+const std::vector<Range::AutomaticGainControlRange> AutomaticGainControlSw::kRanges = {
+ MAKE_RANGE(AutomaticGainControl, fixedDigitalGainMb, 0, 50000),
+ MAKE_RANGE(AutomaticGainControl, saturationMarginMb, 0, 10000)};
+
+const Capability AutomaticGainControlSw::kCapability = {.range = AutomaticGainControlSw::kRanges};
+
const Descriptor AutomaticGainControlSw::kDescriptor = {
.common = {.id = {.type = kAutomaticGainControlTypeUUID,
.uuid = kAutomaticGainControlSwImplUUID,
@@ -71,8 +76,7 @@
.volume = Flags::Volume::CTRL},
.name = AutomaticGainControlSw::kEffectName,
.implementor = "The Android Open Source Project"},
- .capability = Capability::make<Capability::automaticGainControl>(
- AutomaticGainControlSw::kCapability)};
+ .capability = AutomaticGainControlSw::kCapability};
ndk::ScopedAStatus AutomaticGainControlSw::getDescriptor(Descriptor* _aidl_return) {
LOG(DEBUG) << __func__ << kDescriptor.toString();
@@ -87,8 +91,8 @@
RETURN_IF(!mContext, EX_NULL_POINTER, "nullContext");
auto& param = specific.get<Parameter::Specific::automaticGainControl>();
+ RETURN_IF(!inRange(param, kRanges), EX_ILLEGAL_ARGUMENT, "outOfRange");
auto tag = param.getTag();
-
switch (tag) {
case AutomaticGainControl::fixedDigitalGainMb: {
RETURN_IF(mContext->setDigitalGain(
@@ -196,10 +200,6 @@
}
RetCode AutomaticGainControlSwContext::setDigitalGain(int gain) {
- if (gain < 0 || gain > AutomaticGainControlSw::kCapability.maxFixedDigitalGainMb) {
- LOG(DEBUG) << __func__ << " illegal digital gain " << gain;
- return RetCode::ERROR_ILLEGAL_PARAMETER;
- }
mDigitalGain = gain;
return RetCode::SUCCESS;
}
@@ -219,10 +219,6 @@
}
RetCode AutomaticGainControlSwContext::setSaturationMargin(int margin) {
- if (margin < 0 || margin > AutomaticGainControlSw::kCapability.maxSaturationMarginMb) {
- LOG(DEBUG) << __func__ << " illegal saturationMargin " << margin;
- return RetCode::ERROR_ILLEGAL_PARAMETER;
- }
mSaturationMargin = margin;
return RetCode::SUCCESS;
}
diff --git a/audio/aidl/default/automaticGainControl/AutomaticGainControlSw.h b/audio/aidl/default/automaticGainControl/AutomaticGainControlSw.h
index 2724835..9327410 100644
--- a/audio/aidl/default/automaticGainControl/AutomaticGainControlSw.h
+++ b/audio/aidl/default/automaticGainControl/AutomaticGainControlSw.h
@@ -51,7 +51,7 @@
public:
static const std::string kEffectName;
static const bool kStrengthSupported;
- static const AutomaticGainControl::Capability kCapability;
+ static const Capability kCapability;
static const Descriptor kDescriptor;
AutomaticGainControlSw() { LOG(DEBUG) << __func__; }
~AutomaticGainControlSw() {
@@ -72,6 +72,7 @@
IEffect::Status effectProcessImpl(float* in, float* out, int samples) override;
private:
+ static const std::vector<Range::AutomaticGainControlRange> kRanges;
std::shared_ptr<AutomaticGainControlSwContext> mContext;
ndk::ScopedAStatus getParameterAutomaticGainControl(const AutomaticGainControl::Tag& tag,
Parameter::Specific* specific);