libaudiohal@aidl: Process telephony parameters
Add processing and conversion into AIDL for
AUDIO_PARAMETER_KEY_TTY_MODE and AUDIO_PARAMETER_KEY_HAC.
Bug: 291411017
Test: m
Change-Id: I097fab057f0ba4eacb5c0455f8158492797391bc
diff --git a/media/libaudiohal/impl/DeviceHalAidl.cpp b/media/libaudiohal/impl/DeviceHalAidl.cpp
index e55ad14..e22acc4 100644
--- a/media/libaudiohal/impl/DeviceHalAidl.cpp
+++ b/media/libaudiohal/impl/DeviceHalAidl.cpp
@@ -293,6 +293,9 @@
if (status_t status = filterAndUpdateScreenParameters(parameters); status != OK) {
ALOGW("%s: filtering or updating screen parameters failed: %d", __func__, status);
}
+ if (status_t status = filterAndUpdateTelephonyParameters(parameters); status != OK) {
+ ALOGW("%s: filtering or updating telephony parameters failed: %d", __func__, status);
+ }
return parseAndSetVendorParameters(mVendorExt, mModule, parameters);
}
@@ -1351,6 +1354,52 @@
return OK;
}
+status_t DeviceHalAidl::filterAndUpdateTelephonyParameters(AudioParameter ¶meters) {
+ TIME_CHECK();
+ using TtyMode = ITelephony::TelecomConfig::TtyMode;
+ ITelephony::TelecomConfig telConfig;
+ (void)VALUE_OR_RETURN_STATUS(filterOutAndProcessParameter<String8>(
+ parameters, String8(AudioParameter::keyTtyMode),
+ [&telConfig](const String8& mode) {
+ if (mode == AudioParameter::valueTtyModeOff) {
+ telConfig.ttyMode = TtyMode::OFF;
+ return OK;
+ } else if (mode == AudioParameter::valueTtyModeFull) {
+ telConfig.ttyMode = TtyMode::FULL;
+ return OK;
+ } else if (mode == AudioParameter::valueTtyModeHco) {
+ telConfig.ttyMode = TtyMode::HCO;
+ return OK;
+ } else if (mode == AudioParameter::valueTtyModeVco) {
+ telConfig.ttyMode = TtyMode::VCO;
+ return OK;
+ }
+ ALOGE("setParameters: parameter key \"%s\" has invalid value \"%s\"",
+ AudioParameter::keyTtyMode, mode.c_str());
+ return BAD_VALUE;
+ }));
+ (void)VALUE_OR_RETURN_STATUS(filterOutAndProcessParameter<String8>(
+ parameters, String8(AudioParameter::keyHacSetting),
+ [&telConfig](const String8& onOrOff) {
+ if (onOrOff == AudioParameter::valueHacOn) {
+ telConfig.isHacEnabled = Boolean{ .value = true };
+ return OK;
+ } else if (onOrOff == AudioParameter::valueHacOff) {
+ telConfig.isHacEnabled = Boolean{ .value = false };
+ return OK;
+ }
+ ALOGE("setParameters: parameter key \"%s\" has invalid value \"%s\"",
+ AudioParameter::keyHacSetting, onOrOff.c_str());
+ return BAD_VALUE;
+ }));
+ if (mTelephony != nullptr && telConfig != ITelephony::TelecomConfig{}) {
+ ITelephony::TelecomConfig newTelConfig;
+ return statusTFromBinderStatus(
+ mTelephony->setTelecomConfig(telConfig, &newTelConfig));
+ }
+ return OK;
+}
+
status_t DeviceHalAidl::findOrCreatePatch(
const AudioPatch& requestedPatch, AudioPatch* patch, bool* created) {
std::set<int32_t> sourcePortConfigIds(requestedPatch.sourcePortConfigIds.begin(),