mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 22:04:26 +00:00
The rest of the API (*::analyseStatus) returns NOT_SUPPORTED when the legacy API returns -ENOSYS. setParameter legacy -> treble shim did not follow this conversion due to the legacy API stating that for get_paramers, -ENOSYS should be returned if "the implementation does not accept a parameter change while the output is active but the parameter is acceptable otherwise", aka INVALID_STATE. Thus setParameter shim used to return - OK for OK - INVALID_STATE for -ENOSYS - INVALID_ARGUMENTS for everything else This leads to several problems: - an implementation of the legacy API can not report NOT_SUPPORTED - is inconsistent with the rest of the status_t conversion methods - shim methods implemented over getParameter can not distinguish failures error required by the .hal documentation Most importantly, on the system side, the Result is transformed to a status_t again but without any special logic for methods wrapping getParameter in the shim. This can not be changed as the system can not know which methods are implemented with a legacy wrapper under the Treble API boundary. Thus setParam now converts status_t to Result in the same way as all the other shim methods. Bug: 72873273 Bug: 69811500 Bug: 69010523 Test: playback and record for media and voice call Change-Id: I41204c0807d2bd4675e941771cbc9a43d7d14855 Merged-In: I41204c0807d2bd4675e941771cbc9a43d7d14855 Signed-off-by: Kevin Rocard <krocard@google.com>
25 lines
839 B
C++
25 lines
839 B
C++
/*
|
|
* Copyright (C) 2017 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#define LOG_TAG "StreamOutHAL"
|
|
|
|
#include "core/2.0/default/StreamOut.h"
|
|
#include "core/2.0/default/Util.h"
|
|
|
|
#define AUDIO_HAL_VERSION V2_0
|
|
#include <core/all-versions/default/StreamOut.impl.h>
|
|
#undef AUDIO_HAL_VERSION
|