mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-02 02:42:35 +00:00
AHAL: add API to notify the HAL module about disconnecting device.
When external device is about to disconnect, the audio framework will notify the HAL module about the coming device disconnection so that the HAL module could abort any active read/write operations on drivers to avoid problems with the HW interfaces. Bug: 279824103 Test: atest VtsHalAudioCoreModuleTargetTest Change-Id: I9f960b8ae5df11a764e70bd63f98c0f8b8386c34
This commit is contained in:
@@ -762,6 +762,28 @@ ndk::ScopedAStatus Module::disconnectExternalDevice(int32_t in_portId) {
|
||||
return ndk::ScopedAStatus::ok();
|
||||
}
|
||||
|
||||
ndk::ScopedAStatus Module::prepareToDisconnectExternalDevice(int32_t in_portId) {
|
||||
auto& ports = getConfig().ports;
|
||||
auto portIt = findById<AudioPort>(ports, in_portId);
|
||||
if (portIt == ports.end()) {
|
||||
LOG(ERROR) << __func__ << ": port id " << in_portId << " not found";
|
||||
return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT);
|
||||
}
|
||||
if (portIt->ext.getTag() != AudioPortExt::Tag::device) {
|
||||
LOG(ERROR) << __func__ << ": port id " << in_portId << " is not a device port";
|
||||
return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT);
|
||||
}
|
||||
auto connectedPortsIt = mConnectedDevicePorts.find(in_portId);
|
||||
if (connectedPortsIt == mConnectedDevicePorts.end()) {
|
||||
LOG(ERROR) << __func__ << ": port id " << in_portId << " is not a connected device port";
|
||||
return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT);
|
||||
}
|
||||
|
||||
onPrepareToDisconnectExternalDevice(*portIt);
|
||||
|
||||
return ndk::ScopedAStatus::ok();
|
||||
}
|
||||
|
||||
ndk::ScopedAStatus Module::getAudioPatches(std::vector<AudioPatch>* _aidl_return) {
|
||||
*_aidl_return = getConfig().patches;
|
||||
LOG(DEBUG) << __func__ << ": returning " << _aidl_return->size() << " patches";
|
||||
@@ -1541,6 +1563,11 @@ void Module::onExternalDeviceConnectionChanged(
|
||||
LOG(DEBUG) << __func__ << ": do nothing and return";
|
||||
}
|
||||
|
||||
void Module::onPrepareToDisconnectExternalDevice(
|
||||
const ::aidl::android::media::audio::common::AudioPort& audioPort __unused) {
|
||||
LOG(DEBUG) << __func__ << ": do nothing and return";
|
||||
}
|
||||
|
||||
ndk::ScopedAStatus Module::onMasterMuteChanged(bool mute __unused) {
|
||||
LOG(VERBOSE) << __func__ << ": do nothing and return ok";
|
||||
return ndk::ScopedAStatus::ok();
|
||||
|
||||
Reference in New Issue
Block a user