1/*
2 * Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
3 * Not a contribution.
4 *
5 * Copyright (C) 2013 The Android Open Source Project
6 *
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 *      http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 */
19
20#ifndef VOICE_EXTN_H
21#define VOICE_EXTN_H
22
23#ifdef MULTI_VOICE_SESSION_ENABLED
24int voice_extn_start_call(struct audio_device *adev);
25int voice_extn_stop_call(struct audio_device *adev);
26int voice_extn_get_session_from_use_case(struct audio_device *adev,
27                                         const audio_usecase_t usecase_id,
28                                         struct voice_session **session);
29void voice_extn_init(struct audio_device *adev);
30int voice_extn_set_parameters(struct audio_device *adev,
31                              struct str_parms *parms);
32void voice_extn_get_parameters(const struct audio_device *adev,
33                               struct str_parms *query,
34                               struct str_parms *reply);
35int voice_extn_is_in_call_rec_stream(struct stream_in *in, bool *in_call_rec);
36int voice_extn_is_call_state_active(struct audio_device *adev,
37                                    bool *is_call_active);
38int voice_extn_get_active_session_id(struct audio_device *adev,
39                                     uint32_t *session_id);
40void voice_extn_in_get_parameters(struct stream_in *in,
41                                  struct str_parms *query,
42                                  struct str_parms *reply);
43void voice_extn_out_get_parameters(struct stream_out *out,
44                                   struct str_parms *query,
45                                   struct str_parms *reply);
46#else
47static int voice_extn_start_call(struct audio_device *adev __unused)
48{
49    return -ENOSYS;
50}
51
52static int voice_extn_stop_call(struct audio_device *adev __unused)
53{
54    return -ENOSYS;
55}
56
57static int voice_extn_get_session_from_use_case(struct audio_device *adev __unused,
58                                                const audio_usecase_t usecase_id __unused,
59                                                struct voice_session **session __unused)
60{
61    return -ENOSYS;
62}
63
64static void voice_extn_init(struct audio_device *adev __unused)
65{
66}
67
68static int voice_extn_set_parameters(struct audio_device *adev __unused,
69                                     struct str_parms *parms __unused)
70{
71    return -ENOSYS;
72}
73
74static void voice_extn_get_parameters(const struct audio_device *adev __unused,
75                                      struct str_parms *query __unused,
76                                      struct str_parms *reply __unused)
77{
78}
79
80static int voice_extn_is_call_state_active(struct audio_device *adev __unused,
81                                           bool *is_call_active __unused)
82{
83    return -ENOSYS;
84}
85
86static int voice_extn_is_in_call_rec_stream(struct stream_in *in __unused, bool *in_call_rec __unused)
87{
88    return -ENOSYS;
89}
90
91static int voice_extn_get_active_session_id(struct audio_device *adev __unused,
92                                            uint32_t *session_id __unused)
93{
94    return -ENOSYS;
95}
96
97static void voice_extn_in_get_parameters(struct stream_in *in __unused,
98                                         struct str_parms *query __unused,
99                                         struct str_parms *reply __unused)
100{
101}
102
103static void voice_extn_out_get_parameters(struct stream_out *out __unused,
104                                          struct str_parms *query __unused,
105                                          struct str_parms *reply __unused)
106{
107}
108#endif
109
110#ifdef INCALL_MUSIC_ENABLED
111int voice_extn_check_and_set_incall_music_usecase(struct audio_device *adev,
112                                                  struct stream_out *out);
113#else
114static int voice_extn_check_and_set_incall_music_usecase(struct audio_device *adev __unused,
115                                                         struct stream_out *out __unused)
116{
117    return -ENOSYS;
118}
119#endif
120
121#ifdef COMPRESS_VOIP_ENABLED
122int voice_extn_compress_voip_close_output_stream(struct audio_stream *stream);
123int voice_extn_compress_voip_open_output_stream(struct stream_out *out);
124
125int voice_extn_compress_voip_close_input_stream(struct audio_stream *stream);
126int voice_extn_compress_voip_open_input_stream(struct stream_in *in);
127
128int voice_extn_compress_voip_out_get_buffer_size(struct stream_out *out);
129int voice_extn_compress_voip_in_get_buffer_size(struct stream_in *in);
130
131int voice_extn_compress_voip_start_input_stream(struct stream_in *in);
132int voice_extn_compress_voip_start_output_stream(struct stream_out *out);
133
134int voice_extn_compress_voip_set_mic_mute(struct audio_device *dev, bool state);
135int voice_extn_compress_voip_set_volume(struct audio_device *adev, float volume);
136int voice_extn_compress_voip_select_devices(struct audio_device *adev,
137                                            snd_device_t *out_snd_device,
138                                            snd_device_t *in_snd_device);
139int voice_extn_compress_voip_set_parameters(struct audio_device *adev,
140                                             struct str_parms *parms);
141void voice_extn_compress_voip_get_parameters(struct str_parms *query,
142                                             struct str_parms *reply);
143
144void voice_extn_compress_voip_out_get_parameters(struct stream_out *out,
145                                                 struct str_parms *query,
146                                                 struct str_parms *reply);
147void voice_extn_compress_voip_in_get_parameters(struct stream_in *in,
148                                                struct str_parms *query,
149                                                struct str_parms *reply);
150bool voice_extn_compress_voip_pcm_prop_check();
151bool voice_extn_compress_voip_is_active(struct audio_device *adev);
152bool voice_extn_compress_voip_is_format_supported(audio_format_t format);
153bool voice_extn_compress_voip_is_config_supported(struct audio_config *config);
154#else
155static int voice_extn_compress_voip_close_output_stream(struct audio_stream *stream __unused)
156{
157    ALOGE("%s: COMPRESS_VOIP_ENABLED is not defined", __func__);
158    return -ENOSYS;
159}
160
161static int voice_extn_compress_voip_open_output_stream(struct stream_out *out __unused)
162{
163    ALOGE("%s: COMPRESS_VOIP_ENABLED is not defined", __func__);
164    return -ENOSYS;
165}
166
167static int voice_extn_compress_voip_close_input_stream(struct audio_stream *stream __unused)
168{
169    ALOGE("%s: COMPRESS_VOIP_ENABLED is not defined", __func__);
170    return -ENOSYS;
171}
172
173static int voice_extn_compress_voip_open_input_stream(struct stream_in *in __unused)
174{
175    ALOGE("%s: COMPRESS_VOIP_ENABLED is not defined", __func__);
176    return -ENOSYS;
177}
178
179static int voice_extn_compress_voip_out_get_buffer_size(struct stream_out *stream __unused)
180{
181    ALOGE("%s: COMPRESS_VOIP_ENABLED is not defined", __func__);
182    return -ENOSYS;
183}
184
185static int voice_extn_compress_voip_in_get_buffer_size(struct stream_in *in __unused)
186{
187    ALOGE("%s: COMPRESS_VOIP_ENABLED is not defined", __func__);
188    return -ENOSYS;
189}
190
191static int voice_extn_compress_voip_start_input_stream(struct stream_in *in __unused)
192{
193    ALOGE("%s: COMPRESS_VOIP_ENABLED is not defined", __func__);
194    return -ENOSYS;
195}
196
197static int voice_extn_compress_voip_start_output_stream(struct stream_out *out __unused)
198{
199    ALOGE("%s: COMPRESS_VOIP_ENABLED is not defined", __func__);
200    return -ENOSYS;
201}
202
203static int voice_extn_compress_voip_set_mic_mute(struct audio_device *adev, bool state __unused)
204{
205    ALOGE("%s: COMPRESS_VOIP_ENABLED is not defined", __func__);
206    return 0;
207}
208
209static int voice_extn_compress_voip_set_volume(struct audio_device *adev __unused, float volume __unused)
210{
211    ALOGE("%s: COMPRESS_VOIP_ENABLED is not defined", __func__);
212    return 0;
213}
214
215static int voice_extn_compress_voip_select_devices(struct audio_device *adev __unused,
216                                                   snd_device_t *out_snd_device __unused,
217                                                   snd_device_t *in_snd_device __unused)
218{
219    ALOGE("%s: COMPRESS_VOIP_ENABLED is not defined", __func__);
220    return -ENOSYS;
221}
222
223static int voice_extn_compress_voip_set_parameters(struct audio_device *adev __unused,
224                                                    struct str_parms *parms __unused)
225{
226    ALOGE("%s: COMPRESS_VOIP_ENABLED is not defined", __func__);
227    return -ENOSYS;
228}
229
230static void voice_extn_compress_voip_get_parameters(struct str_parms *query __unused,
231                                                    struct str_parms *reply __unused)
232{
233    ALOGE("%s: COMPRESS_VOIP_ENABLED is not defined", __func__);
234}
235
236static void voice_extn_compress_voip_out_get_parameters(struct stream_out *out __unused,
237                                                        struct str_parms *query __unused,
238                                                        struct str_parms *reply __unused)
239{
240    ALOGE("%s: COMPRESS_VOIP_ENABLED is not defined", __func__);
241}
242
243static void voice_extn_compress_voip_in_get_parameters(struct stream_in *in __unused,
244                                                       struct str_parms *query __unused,
245                                                       struct str_parms *reply __unused)
246{
247    ALOGE("%s: COMPRESS_VOIP_ENABLED is not defined", __func__);
248}
249
250static bool voice_extn_compress_voip_pcm_prop_check()
251{
252    ALOGE("%s: COMPRESS_VOIP_ENABLED is not defined", __func__);
253    return false;
254}
255
256static bool voice_extn_compress_voip_is_active(struct audio_device *adev __unused)
257{
258    ALOGE("%s: COMPRESS_VOIP_ENABLED is not defined", __func__);
259    return false;
260}
261
262static bool voice_extn_compress_voip_is_format_supported(audio_format_t format __unused)
263{
264    ALOGE("%s: COMPRESS_VOIP_ENABLED is not defined", __func__);
265    return true;
266}
267
268static bool voice_extn_compress_voip_is_config_supported(struct audio_config *config __unused)
269{
270    ALOGE("%s: COMPRESS_VOIP_ENABLED is not defined", __func__);
271    return true;
272}
273#endif
274
275#endif //VOICE_EXTN_H
276