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

Commit 34b09d01 authored by Eric Laurent's avatar Eric Laurent
Browse files

audio policy: fix default call audio route with LE audio

Do not use LE Audio headset by default for calls when connected.
LE Audio must be explicitely selected by setDevicesRoleForStrategy() API
and the default for calls should still be earpiece.

Bug: 225777460
Test: make
Change-Id: I90c79b3fcc5e97293145413f6a0d59b68cad7e74
parent 986c16c9
Loading
Loading
Loading
Loading
+10 −3
Original line number Original line Diff line number Diff line
@@ -87,10 +87,17 @@ public:


    status_t listAudioVolumeGroups(AudioVolumeGroupVector &groups) const override;
    status_t listAudioVolumeGroups(AudioVolumeGroupVector &groups) const override;


    /**
     * Get the list of currently connected removable device types ordered from most recently
     * connected to least recently connected.
     * @param group the device group to consider: wired, a2dp... If none, consider all groups.
     * @param excludedDevices list of device types to ignore
     * @return a potentially empty ordered list of connected removable devices.
     */
    std::vector<audio_devices_t> getLastRemovableMediaDevices(
    std::vector<audio_devices_t> getLastRemovableMediaDevices(
            device_out_group_t group = GROUP_NONE) const
            device_out_group_t group = GROUP_NONE,
    {
            std::vector<audio_devices_t> excludedDevices = {}) const {
        return mLastRemovableMediaDevices.getLastRemovableMediaDevices(group);
        return mLastRemovableMediaDevices.getLastRemovableMediaDevices(group, excludedDevices);
    }
    }


    void dump(String8 *dst) const override;
    void dump(String8 *dst) const override;
+2 −1
Original line number Original line Diff line number Diff line
@@ -35,7 +35,8 @@ class LastRemovableMediaDevices
public:
public:
    void setRemovableMediaDevices(sp<DeviceDescriptor> desc, audio_policy_dev_state_t state);
    void setRemovableMediaDevices(sp<DeviceDescriptor> desc, audio_policy_dev_state_t state);
    std::vector<audio_devices_t> getLastRemovableMediaDevices(
    std::vector<audio_devices_t> getLastRemovableMediaDevices(
            device_out_group_t group = GROUP_NONE) const;
            device_out_group_t group = GROUP_NONE,
            std::vector<audio_devices_t> excludedDevices = {}) const;
    sp<DeviceDescriptor> getLastRemovableMediaDevice(
    sp<DeviceDescriptor> getLastRemovableMediaDevice(
            const DeviceVector& excludedDevices, device_out_group_t group = GROUP_NONE) const;
            const DeviceVector& excludedDevices, device_out_group_t group = GROUP_NONE) const;


+6 −3
Original line number Original line Diff line number Diff line
@@ -44,12 +44,15 @@ void LastRemovableMediaDevices::setRemovableMediaDevices(sp<DeviceDescriptor> de
}
}


std::vector<audio_devices_t> LastRemovableMediaDevices::getLastRemovableMediaDevices(
std::vector<audio_devices_t> LastRemovableMediaDevices::getLastRemovableMediaDevices(
        device_out_group_t group) const
        device_out_group_t group, std::vector<audio_devices_t> excludedDevices) const
{
{
    std::vector<audio_devices_t> ret;
    std::vector<audio_devices_t> ret;
    for (auto iter = mMediaDevices.begin(); iter != mMediaDevices.end(); ++iter) {
    for (auto iter = mMediaDevices.begin(); iter != mMediaDevices.end(); ++iter) {
        if ((group == GROUP_NONE) || (group == getDeviceOutGroup((iter->desc)->type()))) {
        audio_devices_t type = (iter->desc)->type();
            ret.push_back((iter->desc)->type());
        if ((group == GROUP_NONE || group == getDeviceOutGroup(type))
                && std::find(excludedDevices.begin(), excludedDevices.end(), type) ==
                                       excludedDevices.end()) {
            ret.push_back(type);
        }
        }
    }
    }
    return ret;
    return ret;
+1 −1
Original line number Original line Diff line number Diff line
@@ -270,7 +270,7 @@ DeviceVector Engine::getDevicesForStrategyInt(legacy_strategy strategy,
        devices = availableOutputDevices.getDevicesFromType(AUDIO_DEVICE_OUT_HEARING_AID);
        devices = availableOutputDevices.getDevicesFromType(AUDIO_DEVICE_OUT_HEARING_AID);
        if (!devices.isEmpty()) break;
        if (!devices.isEmpty()) break;
        devices = availableOutputDevices.getFirstDevicesFromTypes(
        devices = availableOutputDevices.getFirstDevicesFromTypes(
                                          getLastRemovableMediaDevices());
                        getLastRemovableMediaDevices(GROUP_NONE, {AUDIO_DEVICE_OUT_BLE_HEADSET}));
        if (!devices.isEmpty()) break;
        if (!devices.isEmpty()) break;
        devices = availableOutputDevices.getFirstDevicesFromTypes({
        devices = availableOutputDevices.getFirstDevicesFromTypes({
                AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET, AUDIO_DEVICE_OUT_EARPIECE});
                AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET, AUDIO_DEVICE_OUT_EARPIECE});