Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9366193e authored by Mikhail Naganov's avatar Mikhail Naganov
Browse files

audiopolicy: Refactor DeviceVector::getDevicesFromHwModule

Rename method audio_devices_t DeviceVector::getDevicesFromHwModule
into getDeviceTypesFromHwModule.

Introduce method DeviceVector DeviceVector::getDevicesFromHwModule.

Bug: 63901775
Test: make
Change-Id: Ieec0c116fa0a6ff20241d61f65202a8eaf9f0674
parent 19283e9d
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -82,8 +82,8 @@ public:
    DeviceVector getDevicesFromTypeMask(audio_devices_t types) const;
    sp<DeviceDescriptor> getDeviceFromId(audio_port_handle_t id) const;
    sp<DeviceDescriptor> getDeviceFromTagName(const String8 &tagName) const;

    audio_devices_t getDevicesFromHwModule(audio_module_handle_t moduleHandle) const;
    DeviceVector getDevicesFromHwModule(audio_module_handle_t moduleHandle) const;
    audio_devices_t getDeviceTypesFromHwModule(audio_module_handle_t moduleHandle) const;

    status_t dump(int fd, const String8 &tag, int spaces = 0, bool verbose = true) const;

+16 −5
Original line number Diff line number Diff line
@@ -121,17 +121,28 @@ ssize_t DeviceVector::remove(const sp<DeviceDescriptor>& item)
    return ret;
}

audio_devices_t DeviceVector::getDevicesFromHwModule(audio_module_handle_t moduleHandle) const
DeviceVector DeviceVector::getDevicesFromHwModule(audio_module_handle_t moduleHandle) const
{
    audio_devices_t devices = AUDIO_DEVICE_NONE;
    for (size_t i = 0; i < size(); i++) {
        if (itemAt(i)->getModuleHandle() == moduleHandle) {
            devices |= itemAt(i)->type();
    DeviceVector devices;
    for (const auto& device : *this) {
        if (device->getModuleHandle() == moduleHandle) {
            devices.add(device);
        }
    }
    return devices;
}

audio_devices_t DeviceVector::getDeviceTypesFromHwModule(audio_module_handle_t moduleHandle) const
{
    audio_devices_t deviceTypes = AUDIO_DEVICE_NONE;
    for (const auto& device : *this) {
        if (device->getModuleHandle() == moduleHandle) {
            deviceTypes |= device->type();
        }
    }
    return deviceTypes;
}

sp<DeviceDescriptor> DeviceVector::getDevice(audio_devices_t type, const String8& address) const
{
    sp<DeviceDescriptor> device;
+3 −4
Original line number Diff line number Diff line
@@ -313,7 +313,7 @@ audio_devices_t Engine::getDeviceForStrategyInt(routing_strategy strategy,
            audio_devices_t txDevice = getDeviceForInputSource(AUDIO_SOURCE_VOICE_COMMUNICATION);
            sp<AudioOutputDescriptor> primaryOutput = outputs.getPrimaryOutput();
            audio_devices_t availPrimaryInputDevices =
                 availableInputDevices.getDevicesFromHwModule(primaryOutput->getModuleHandle());
                 availableInputDevices.getDeviceTypesFromHwModule(primaryOutput->getModuleHandle());

            // TODO: getPrimaryOutput return only devices from first module in
            // audio_policy_configuration.xml, hearing aid is not there, but it's
@@ -668,9 +668,8 @@ audio_devices_t Engine::getDeviceForInputSource(audio_source_t inputSource) cons
        if ((getPhoneState() == AUDIO_MODE_IN_CALL) &&
                (availableOutputDevices.types() & AUDIO_DEVICE_OUT_TELEPHONY_TX) == 0) {
            sp<AudioOutputDescriptor> primaryOutput = outputs.getPrimaryOutput();
            availableDeviceTypes =
                    availableInputDevices.getDevicesFromHwModule(primaryOutput->getModuleHandle())
                    & ~AUDIO_DEVICE_BIT_IN;
            availableDeviceTypes = availableInputDevices.getDeviceTypesFromHwModule(
                    primaryOutput->getModuleHandle()) & ~AUDIO_DEVICE_BIT_IN;
        }

        switch (mForceUse[AUDIO_POLICY_FORCE_FOR_COMMUNICATION]) {
+2 −1
Original line number Diff line number Diff line
@@ -508,7 +508,8 @@ protected:
            if (!hasPrimaryOutput()) {
                return AUDIO_DEVICE_NONE;
            }
            return mAvailableInputDevices.getDevicesFromHwModule(mPrimaryOutput->getModuleHandle());
            return mAvailableInputDevices.getDeviceTypesFromHwModule(
                    mPrimaryOutput->getModuleHandle());
        }

        uint32_t updateCallRouting(audio_devices_t rxDevice, uint32_t delayMs = 0);