车机音频参数下发流程

比如以audioControlWrapper.setParametersToAmp(keyPairValues); 下发banlance为例,链路如下

=========================================================================

hal层

  1. AudioControl.cpp hardware\interfaces\automotive\audiocontrol\aidl\default\AudioControl.cpp

ndk::ScopedAStatus AudioControl::setParametersToAmp(const std::string &keyPairValues)

ndk::ScopedAStatus AudioControl::gvmSetParameters(const hidl_string& key, const hidl_string& value) const

  1. AudioDevice.cpp vendor\qcom\opensource\audio-hal-ar\primary-hal\hal-pal\AudioDevice.cpp

int AudioDevice::SetParameters(const char *kvpairs)

ret = dynaudio_control_interface_->setParameter((void *)kvpairs);

  1. DynAudioControl.cpp vendor\qcom\opensource\audio-hal-ar\primary-hal\hal-pal\zeekr_audio\DynAudioControl\src\DynAudioControl.cpp

int32_t DynAudioControl::setParameter(void* params)

GVMWrapper pWrapper->setParameter(params);

  1. GVMWrapper.cpp vendor\qcom\opensource\audio-hal-ar\primary-hal\hal-pal\zeekr_audio\DynAudioControl\Wrapper\GVMWrapper.cpp

int32_t GVMWrapper::setParameter(void *params)

auto iter = gSetParmsHandlerTable.find(key);

if (iter != gSetParmsHandlerTable.end()) {

auto s = Utils::splitString2Vector(value, DELIM_DEFAULT);

LOG_I("[%s]: Key is %s", func, iter->first.c_str());

ret = (this->*(iter->second))(s);

}

在 gSetParmsHandlerTable 中通过AC_KEY_AUDIO_SOURCE

调用 setBalance

  1. GVMAudioLogic.cpp vendor\qcom\opensource\audio-hal-ar\primary-hal\hal-pal\zeekr_audio\DynAudioControl\AudioLogic\GVMAudioLogic.cpp

在int32_t GVMAudioLogic::setBalance(uint32_t source, int32_t step) 中调用sendAudioHalParam(AC_OP_SET_BALANCE, DOUBLE_PARAMS, source, step);

在 sendAudioHalParam 中通过audio_fdbus_client_->sendAudioMsg给qnx发消息

=========================================================================

qnx 层

  1. faudiohal_server.cpp qnx_app\workspace\modules\audio\audio_manager_ipc\fdbus_server\src\faudiohal_server.cpp

void AudioFdbusService::onInvoke(CBaseJob::Ptr &msg_ref)

  1. msg_switch_logic.cpp qnx_app\workspace\modules\audio\audio_manager_ipc\logic\src\msg_switch_logic.cpp

int32_t SwitchMsgHandler::sendAudioHALMsgToAudioManager(AudioFdbusMsg &audiohal_param)

return AudioManagerProxy::getInstance()->send(audiohal_param.operation_code, (void*)audiohal_param.params,

audiohal_param.params_count * sizeof(uint32_t));

=========================================================================

相关推荐
不吃凉粉7 小时前
Android Studio USB串口通信
android·ide·android studio
zhangphil7 小时前
android studio设置大内存,提升编译速度
android·android studio
编程乐学8 小时前
安卓非原创--基于Android Studio 实现的天气预报App
android·ide·android studio·课程设计·大作业·天气预报·安卓大作业
大熊的瓜地9 小时前
Android automotive 框架
android·android car
私人珍藏库10 小时前
[Android] Alarm Clock Pro 11.1.0一款经典简约个性的时钟
android·时钟
消失的旧时光-194312 小时前
ScheduledExecutorService
android·java·开发语言
小糖学代码12 小时前
MySQL:14.mysql connect
android·数据库·mysql·adb
怪兽201415 小时前
请谈谈什么是同步屏障?
android·面试
帅锅锅00715 小时前
SeLinux 全面详解
android·linux
只想搞钱的肥仔15 小时前
Android thermal (5)_cooling device(下)
android