status_t AudioResourceManager::TurnoffAudioDevice(unsigned int mDlOutputDevice) { uint32 DeviceCount = PopCount(mDlOutputDevice); ALOGD("TurnoffAudioDevice = 0x%x DeviceCount = %d", mDlOutputDevice, DeviceCount); if (DeviceCount == 1) { if (mDlOutputDevice & AUDIO_DEVICE_OUT_EARPIECE) { mAudioAnalogInstance->AnalogClose(AudioAnalogType::DEVICE_OUT_EARPIECER, AudioAnalogType::DEVICE_PLATFORM_MACHINE); } if (mDlOutputDevice & AUDIO_DEVICE_OUT_SPEAKER) { mAudioAnalogInstance->AnalogClose(AudioAnalogType::DEVICE_OUT_SPEAKERR, AudioAnalogType::DEVICE_PLATFORM_MACHINE); } if (mDlOutputDevice & AUDIO_DEVICE_OUT_WIRED_HEADSET) { mAudioAnalogInstance->AnalogClose(AudioAnalogType::DEVICE_OUT_HEADSETR, AudioAnalogType::DEVICE_PLATFORM_MACHINE); } if (mDlOutputDevice & AUDIO_DEVICE_OUT_WIRED_HEADPHONE) { mAudioAnalogInstance->AnalogClose(AudioAnalogType::DEVICE_OUT_HEADSETR, AudioAnalogType::DEVICE_PLATFORM_MACHINE); } if (mDlOutputDevice & AUDIO_DEVICE_OUT_FM_TX) { // do nothing } if (mDlOutputDevice & AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET) { // fix me , may not use headset mAudioAnalogInstance->AnalogClose(AudioAnalogType::DEVICE_OUT_HEADSETR, AudioAnalogType::DEVICE_PLATFORM_MACHINE); } if (mDlOutputDevice & AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET) { // do nothing } if (mDlOutputDevice & AUDIO_DEVICE_OUT_AUX_DIGITAL) { EnableAudioClock(AudioResourceManagerInterface::CLOCK_AUD_HDMI, false); //todo :: if htere is analog block need to turn on } } else { // open for dual mode if (mDlOutputDevice & AUDIO_DEVICE_OUT_SPEAKER) { mAudioAnalogInstance->AnalogClose(AudioAnalogType::DEVICE_OUT_SPEAKER_HEADSET_R, AudioAnalogType::DEVICE_PLATFORM_MACHINE); } } return NO_ERROR; }
status_t AudioResourceManager::TurnonAudioDevice(unsigned int mDlOutputDevice) { uint32 DeviceCount = PopCount(mDlOutputDevice); ALOGD("TurnonAudioDevice = 0x%x DeviceCount = %d", mDlOutputDevice, DeviceCount); if (DeviceCount == 1) { if (mDlOutputDevice & AUDIO_DEVICE_OUT_EARPIECE) { mAudioAnalogInstance->AnalogOpen(AudioAnalogType::DEVICE_OUT_EARPIECER, AudioAnalogType::DEVICE_PLATFORM_MACHINE); } if (mDlOutputDevice & AUDIO_DEVICE_OUT_SPEAKER) { mAudioAnalogInstance->AnalogOpen(AudioAnalogType::DEVICE_OUT_SPEAKERR, AudioAnalogType::DEVICE_PLATFORM_MACHINE); } if ((mDlOutputDevice & AUDIO_DEVICE_OUT_WIRED_HEADSET) || (mDlOutputDevice & AUDIO_DEVICE_OUT_WIRED_HEADPHONE)) { if (mAudioAnalogInstance->GetAnalogState(AudioAnalogType::DEVICE_IN_LINEINR) || mAudioAnalogInstance->GetAnalogState(AudioAnalogType::DEVICE_IN_LINEINL)) { ALOGD("SetHeadsetPinmux as MUX_LINEIN_AUDIO_MONO "); mAudioAnalogInstance->AnalogSetMux(AudioAnalogType::DEVICE_OUT_HEADSETR, AudioAnalogType::MUX_LINEIN_AUDIO_MONO); mAudioAnalogInstance->AnalogSetMux(AudioAnalogType::DEVICE_OUT_HEADSETL, AudioAnalogType::MUX_LINEIN_AUDIO_MONO); } mAudioAnalogInstance->AnalogOpen(AudioAnalogType::DEVICE_OUT_HEADSETR, AudioAnalogType::DEVICE_PLATFORM_MACHINE); } if (mDlOutputDevice & AUDIO_DEVICE_OUT_FM_TX) { // do nothing } if (mDlOutputDevice & AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET) { // fix me , may not use headset mAudioAnalogInstance->AnalogOpen(AudioAnalogType::DEVICE_OUT_HEADSETR, AudioAnalogType::DEVICE_PLATFORM_MACHINE); } if (mDlOutputDevice & AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET) { // do nothing } if (mDlOutputDevice & AUDIO_DEVICE_OUT_AUX_DIGITAL) { EnableAudioClock(AudioResourceManagerInterface::CLOCK_AUD_HDMI,true); //todo :: if htere is analog block need to turn on } } else { // open for dual mode if (mDlOutputDevice & AUDIO_DEVICE_OUT_SPEAKER) mAudioAnalogInstance->AnalogOpen(AudioAnalogType::DEVICE_OUT_SPEAKER_HEADSET_R, AudioAnalogType::DEVICE_PLATFORM_MACHINE); } // do set analog gain control if (IsModeIncall() == false) { mAudioVolumeInstance->setMasterVolume(mAudioVolumeInstance->getMasterVolume(), mAudioMode, mDlOutputDevice); } else { mAudioVolumeInstance->ApplyMicGain(GetIncallMicDevice(mDlOutputDevice), mAudioMode); // set incall mic gain mAudioVolumeInstance->setVoiceVolume(mAudioVolumeInstance->getVoiceVolume(), mAudioMode, mDlOutputDevice);// set DL volume } return NO_ERROR; }
status_t AudioResourceManager::TurnonAudioDevice(unsigned int mDlOutputDevice) { uint32 DeviceCount = PopCount(mDlOutputDevice); ALOGD("TurnonAudioDevice = 0x%x DeviceCount = %d", mDlOutputDevice, DeviceCount); #ifdef EXTMD_LOOPBACK_TEST //BTSCO UL sound out from headset&Speaker if (mDlOutputDevice & AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET) { ALOGD("EXTMD_LOOPBACK_TEST TurnonAudioDevice() AnalogClose() DEVICE_OUT_HEADSETR (to reset DL sampling frequency)"); mAudioAnalogInstance->AnalogClose(AudioAnalogType::DEVICE_OUT_HEADSETR, AudioAnalogType::DEVICE_PLATFORM_MACHINE); mDlOutputDevice = AUDIO_DEVICE_OUT_WIRED_HEADSET; ALOGD("EXTMD_LOOPBACK_TEST TurnonAudioDevice() mDlOutputDevice=0x%x", mDlOutputDevice); } #endif if (DeviceCount == 1) { if (mDlOutputDevice & AUDIO_DEVICE_OUT_EARPIECE) { mAudioAnalogInstance->AnalogOpen(AudioAnalogType::DEVICE_OUT_EARPIECER, AudioAnalogType::DEVICE_PLATFORM_MACHINE); } if (mDlOutputDevice & AUDIO_DEVICE_OUT_SPEAKER) { mAudioAnalogInstance->AnalogOpen(AudioAnalogType::DEVICE_OUT_SPEAKERR, AudioAnalogType::DEVICE_PLATFORM_MACHINE); } if ((mDlOutputDevice & AUDIO_DEVICE_OUT_WIRED_HEADSET) || (mDlOutputDevice & AUDIO_DEVICE_OUT_WIRED_HEADPHONE)) { mAudioAnalogInstance->AnalogOpen(AudioAnalogType::DEVICE_OUT_HEADSETR, AudioAnalogType::DEVICE_PLATFORM_MACHINE); } if (mDlOutputDevice & AUDIO_DEVICE_OUT_FM_TX) { // do nothing } if (mDlOutputDevice & AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET) { // fix me , may not use headset mAudioAnalogInstance->AnalogOpen(AudioAnalogType::DEVICE_OUT_HEADSETR, AudioAnalogType::DEVICE_PLATFORM_MACHINE); } if (mDlOutputDevice & AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET) { // do nothing } if (mDlOutputDevice & AUDIO_DEVICE_OUT_AUX_DIGITAL) { EnableAudioClock(AudioResourceManagerInterface::CLOCK_AUD_HDMI, true); //todo :: if htere is analog block need to turn on } } else // open for dual mode { if (mDlOutputDevice & AUDIO_DEVICE_OUT_SPEAKER) { mAudioAnalogInstance->AnalogOpen(AudioAnalogType::DEVICE_OUT_SPEAKER_HEADSET_R, AudioAnalogType::DEVICE_PLATFORM_MACHINE); } } // do set analog gain control if (IsModeIncall() == false) { mAudioVolumeInstance->setMasterVolume(mAudioVolumeInstance->getMasterVolume(), mAudioMode, mDlOutputDevice); } else { mAudioVolumeInstance->ApplyMicGain(GetIncallMicDevice(mDlOutputDevice), mAudioMode); // set incall mic gain mAudioVolumeInstance->setVoiceVolume(mAudioVolumeInstance->getVoiceVolume(), mAudioMode, mDlOutputDevice);// set DL volume } return NO_ERROR; }