196b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov/*
296b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov * Copyright (C) 2016 The Android Open Source Project
396b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov *
496b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov * Licensed under the Apache License, Version 2.0 (the "License");
596b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov * you may not use this file except in compliance with the License.
696b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov * You may obtain a copy of the License at
796b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov *
896b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov *      http://www.apache.org/licenses/LICENSE-2.0
996b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov *
1096b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov * Unless required by applicable law or agreed to in writing, software
1196b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov * distributed under the License is distributed on an "AS IS" BASIS,
1296b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1396b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov * See the License for the specific language governing permissions and
1496b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov * limitations under the License.
1596b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov */
1696b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov
1796b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganovpackage android.hardware.audio@2.0;
1896b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov
1996b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganovimport android.hardware.audio.common@2.0;
2096b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganovimport IDevice;
2196b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov
2296b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganovinterface IDevicesFactory {
2396b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov    typedef android.hardware.audio@2.0::Result Result;
2496b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov
25d26dc50abbad068cd1a673f204fa538c1c61bdb2Steven Moreland    enum Device : int32_t {
2696b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov        PRIMARY,
2796b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov        A2DP,
2896b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov        USB,
29f247b8df085d6b2a50f981a062f9d376148acd5bEric Laurent        R_SUBMIX,
30f247b8df085d6b2a50f981a062f9d376148acd5bEric Laurent        STUB
3196b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov    };
3296b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov
3340d3a9bd8c62714ee58f9363c4456f764aa5a95dAndreas Huber    /**
3496b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov     * Opens an audio device. To close the device, it is necessary to release
3596b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov     * references to the returned device object.
3696b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov     *
3796b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov     * @param device device type.
3896b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov     * @return retval operation completion status. Returns INVALID_ARGUMENTS
3996b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov     *         if there is no corresponding hardware module found,
4096b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov     *         NOT_INITIALIZED if an error occured while opening the hardware
4196b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov     *         module.
4296b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov     * @return result the interface for the created device.
4396b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov     */
4496b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov    openDevice(Device device) generates (Result retval, IDevice result);
4596b30be9d0bd14e4ae31533a9fc6844058352fccMikhail Naganov};
46