1/*
2 * Copyright (C) 2018 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.hardware.audio@4.0;
18
19import android.hardware.audio.common@4.0;
20import IDevice;
21
22interface IPrimaryDevice extends IDevice {
23    /**
24     * Sets the audio volume of a voice call.
25     *
26     * @param volume 1.0f means unity, 0.0f is zero.
27     * @return retval operation completion status.
28     */
29    setVoiceVolume(float volume) generates (Result retval);
30
31    /**
32     * This method is used to notify the HAL about audio mode changes.
33     *
34     * @param mode new mode.
35     * @return retval operation completion status.
36     */
37    setMode(AudioMode mode) generates (Result retval);
38
39    /**
40     * Sets the name of the current BT SCO headset. Calling this method
41     * is equivalent to setting legacy "bt_headset_name" parameter.
42     * The BT SCO headset name must only be used for debugging purposes.
43     * Optional method
44     *
45     * @param name the name of the current BT SCO headset (can be empty).
46     * @return retval operation completion status.
47     */
48    setBtScoHeadsetDebugName(string name) generates (Result retval);
49
50    /**
51     * Gets whether BT SCO Noise Reduction and Echo Cancellation are enabled.
52     * Calling this method is equivalent to getting AUDIO_PARAMETER_KEY_BT_NREC
53     * on the legacy HAL.
54     *
55     * @return retval operation completion status.
56     * @return enabled whether BT SCO NR + EC are enabled.
57     */
58    getBtScoNrecEnabled() generates (Result retval, bool enabled);
59
60    /**
61     * Sets whether BT SCO Noise Reduction and Echo Cancellation are enabled.
62     * Calling this method is equivalent to setting AUDIO_PARAMETER_KEY_BT_NREC
63     * on the legacy HAL.
64     * Optional method
65     *
66     * @param enabled whether BT SCO NR + EC are enabled.
67     * @return retval operation completion status.
68     */
69    setBtScoNrecEnabled(bool enabled) generates (Result retval);
70
71    /**
72     * Gets whether BT SCO Wideband mode is enabled. Calling this method is
73     * equivalent to getting AUDIO_PARAMETER_KEY_BT_SCO_WB on the legacy HAL.
74     *
75     * @return retval operation completion status.
76     * @return enabled whether BT Wideband is enabled.
77     */
78    getBtScoWidebandEnabled() generates (Result retval, bool enabled);
79
80    /**
81     * Sets whether BT SCO Wideband mode is enabled. Calling this method is
82     * equivalent to setting AUDIO_PARAMETER_KEY_BT_SCO_WB on the legacy HAL.
83     * Optional method
84     *
85     * @param enabled whether BT Wideband is enabled.
86     * @return retval operation completion status.
87     */
88    setBtScoWidebandEnabled(bool enabled) generates (Result retval);
89
90    /**
91     * Gets whether BT HFP (Hands-Free Profile) is enabled. Calling this method
92     * is equivalent to getting "hfp_enable" parameter value on the legacy HAL.
93     *
94     * @return retval operation completion status.
95     * @return enabled whether BT HFP is enabled.
96     */
97    getBtHfpEnabled() generates (Result retval, bool enabled);
98
99    /**
100     * Sets whether BT HFP (Hands-Free Profile) is enabled. Calling this method
101     * is equivalent to setting "hfp_enable" parameter on the legacy HAL.
102     * Optional method
103     *
104     * @param enabled whether BT HFP is enabled.
105     * @return retval operation completion status.
106     */
107    setBtHfpEnabled(bool enabled) generates (Result retval);
108
109    /**
110     * Sets the sampling rate of BT HFP (Hands-Free Profile). Calling this
111     * method is equivalent to setting "hfp_set_sampling_rate" parameter
112     * on the legacy HAL.
113     * Optional method
114     *
115     * @param sampleRateHz sample rate in Hz.
116     * @return retval operation completion status.
117     */
118    setBtHfpSampleRate(uint32_t sampleRateHz) generates (Result retval);
119
120    /**
121     * Sets the current output volume Hz for BT HFP (Hands-Free Profile).
122     * Calling this method is equivalent to setting "hfp_volume" parameter value
123     * on the legacy HAL (except that legacy HAL implementations expect
124     * an integer value in the range from 0 to 15.)
125     * Optional method
126     *
127     * @param volume 1.0f means unity, 0.0f is zero.
128     * @return retval operation completion status.
129     */
130    setBtHfpVolume(float volume) generates (Result retval);
131
132    enum TtyMode : int32_t {
133        OFF,
134        VCO,
135        HCO,
136        FULL
137    };
138
139    /**
140     * Gets current TTY mode selection. Calling this method is equivalent to
141     * getting AUDIO_PARAMETER_KEY_TTY_MODE on the legacy HAL.
142     *
143     * @return retval operation completion status.
144     * @return mode TTY mode.
145     */
146    getTtyMode() generates (Result retval, TtyMode mode);
147
148    /**
149     * Sets current TTY mode. Calling this method is equivalent to setting
150     * AUDIO_PARAMETER_KEY_TTY_MODE on the legacy HAL.
151     *
152     * @param mode TTY mode.
153     * @return retval operation completion status.
154     */
155    setTtyMode(TtyMode mode) generates (Result retval);
156
157    /**
158     * Gets whether Hearing Aid Compatibility - Telecoil (HAC-T) mode is
159     * enabled. Calling this method is equivalent to getting
160     * AUDIO_PARAMETER_KEY_HAC on the legacy HAL.
161     *
162     * @return retval operation completion status.
163     * @return enabled whether HAC mode is enabled.
164     */
165    getHacEnabled() generates (Result retval, bool enabled);
166
167    /**
168     * Sets whether Hearing Aid Compatibility - Telecoil (HAC-T) mode is
169     * enabled. Calling this method is equivalent to setting
170     * AUDIO_PARAMETER_KEY_HAC on the legacy HAL.
171     * Optional method
172     *
173     * @param enabled whether HAC mode is enabled.
174     * @return retval operation completion status.
175     */
176    setHacEnabled(bool enabled) generates (Result retval);
177
178    enum Rotation : int32_t {
179        DEG_0,
180        DEG_90,
181        DEG_180,
182        DEG_270
183    };
184
185    /**
186     * Updates HAL on the current rotation of the device relative to natural
187     * orientation. Calling this method is equivalent to setting legacy
188     * parameter "rotation".
189     *
190     * @param rotation rotation in degrees relative to natural device
191     *     orientation.
192     * @return retval operation completion status.
193     */
194    updateRotation(Rotation rotation) generates (Result retval);
195};
196