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

Commit 6f219a69 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "audio: Use get_audio_port_v7 in the default wrapper"

parents 6aab5a16 cb766d25
Loading
Loading
Loading
Loading
+30 −5
Original line number Diff line number Diff line
@@ -360,18 +360,43 @@ Return<Result> Device::releaseAudioPatch(int32_t patch) {
    return Result::NOT_SUPPORTED;
}

Return<void> Device::getAudioPort(const AudioPort& port, getAudioPort_cb _hidl_cb) {
    audio_port halPort;
    HidlUtils::audioPortToHal(port, &halPort);
    Result retval = analyzeStatus("get_audio_port", mDevice->get_audio_port(mDevice, &halPort));
template <typename HalPort>
Return<void> Device::getAudioPortImpl(const AudioPort& port, getAudioPort_cb _hidl_cb,
                                      int (*halGetter)(audio_hw_device_t*, HalPort*),
                                      const char* halGetterName) {
    HalPort halPort;
    if (status_t status = HidlUtils::audioPortToHal(port, &halPort); status != NO_ERROR) {
        _hidl_cb(analyzeStatus("audioPortToHal", status), port);
        return Void();
    }
    Result retval = analyzeStatus(halGetterName, halGetter(mDevice, &halPort));
    AudioPort resultPort = port;
    if (retval == Result::OK) {
        HidlUtils::audioPortFromHal(halPort, &resultPort);
        if (status_t status = HidlUtils::audioPortFromHal(halPort, &resultPort);
            status != NO_ERROR) {
            _hidl_cb(analyzeStatus("audioPortFromHal", status), port);
            return Void();
        }
    }
    _hidl_cb(retval, resultPort);
    return Void();
}

#if MAJOR_VERSION <= 6
Return<void> Device::getAudioPort(const AudioPort& port, getAudioPort_cb _hidl_cb) {
    return getAudioPortImpl(port, _hidl_cb, mDevice->get_audio_port, "get_audio_port");
}
#else
Return<void> Device::getAudioPort(const AudioPort& port, getAudioPort_cb _hidl_cb) {
    if (version() >= AUDIO_DEVICE_API_VERSION_3_2) {
        // get_audio_port_v7 is mandatory if legacy HAL support this API version.
        return getAudioPortImpl(port, _hidl_cb, mDevice->get_audio_port_v7, "get_audio_port_v7");
    } else {
        return getAudioPortImpl(port, _hidl_cb, mDevice->get_audio_port, "get_audio_port");
    }
}
#endif

Return<Result> Device::setAudioPortConfig(const AudioPortConfig& config) {
    if (version() >= AUDIO_DEVICE_API_VERSION_3_0) {
        struct audio_port_config halPortConfig;
+4 −0
Original line number Diff line number Diff line
@@ -153,6 +153,10 @@ struct Device : public IDevice, public ParametersUtil {
    std::tuple<Result, AudioPatchHandle> createOrUpdateAudioPatch(
            AudioPatchHandle patch, const hidl_vec<AudioPortConfig>& sources,
            const hidl_vec<AudioPortConfig>& sinks);
    template <typename HalPort>
    Return<void> getAudioPortImpl(const AudioPort& port, getAudioPort_cb _hidl_cb,
                                  int (*halGetter)(audio_hw_device_t*, HalPort*),
                                  const char* halGetterName);

    // Methods from ParametersUtil.
    char* halGetParameters(const char* keys) override;