Fix coverity issues (EVALUATION_ORDER)
[platform/adaptation/ap_broadcom/audio-hal-bcm2837.git] / tizen-audio-pcm.c
1 /*
2  * audio-hal
3  *
4  * Copyright (c) 2016 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  *
18  */
19
20 #ifdef HAVE_CONFIG_H
21 #include <config.h>
22 #endif
23
24 #include "tizen-audio-internal.h"
25 #include "tizen-audio-impl.h"
26
27 audio_return_e _audio_pcm_init(audio_hal_s *ah)
28 {
29     AUDIO_RETURN_VAL_IF_FAIL(ah, AUDIO_ERR_PARAMETER);
30
31
32     return AUDIO_RET_OK;
33 }
34
35 audio_return_e _audio_pcm_deinit(audio_hal_s *ah)
36 {
37     AUDIO_RETURN_VAL_IF_FAIL(ah, AUDIO_ERR_PARAMETER);
38
39     return AUDIO_RET_OK;
40 }
41
42 audio_return_e audio_pcm_open(void *audio_handle, const char *card, const char *device, uint32_t direction, void *sample_spec,
43         uint32_t period_size, uint32_t periods, void **pcm_handle)
44 {
45     audio_return_e audio_ret = AUDIO_RET_OK;
46
47     AUDIO_RETURN_VAL_IF_FAIL(audio_handle, AUDIO_ERR_PARAMETER);
48     AUDIO_RETURN_VAL_IF_FAIL(pcm_handle, AUDIO_ERR_PARAMETER);
49     AUDIO_RETURN_VAL_IF_FAIL(sample_spec, AUDIO_ERR_PARAMETER);
50     AUDIO_RETURN_VAL_IF_FAIL((period_size > 0), AUDIO_ERR_PARAMETER);
51     AUDIO_RETURN_VAL_IF_FAIL((periods > 0), AUDIO_ERR_PARAMETER);
52
53     if ((audio_ret = _pcm_open(card, device, direction, sample_spec, period_size, periods, pcm_handle)))
54         return audio_ret;
55
56     AUDIO_LOG_INFO("Opening PCM handle %p", *pcm_handle);
57
58     return AUDIO_RET_OK;
59 }
60
61 audio_return_e audio_pcm_start(void *audio_handle, void *pcm_handle)
62 {
63     audio_return_e audio_ret = AUDIO_RET_OK;
64
65     AUDIO_RETURN_VAL_IF_FAIL(audio_handle, AUDIO_ERR_PARAMETER);
66     AUDIO_RETURN_VAL_IF_FAIL(pcm_handle, AUDIO_ERR_PARAMETER);
67
68     audio_ret = _pcm_start(pcm_handle);
69
70     return audio_ret;
71 }
72
73 audio_return_e audio_pcm_stop(void *audio_handle, void *pcm_handle)
74 {
75     audio_return_e audio_ret = AUDIO_RET_OK;
76
77     AUDIO_RETURN_VAL_IF_FAIL(audio_handle, AUDIO_ERR_PARAMETER);
78     AUDIO_RETURN_VAL_IF_FAIL(pcm_handle, AUDIO_ERR_PARAMETER);
79
80     audio_ret = _pcm_stop(pcm_handle);
81
82     return audio_ret;
83 }
84
85 audio_return_e audio_pcm_close(void *audio_handle, void *pcm_handle)
86 {
87     audio_return_e audio_ret = AUDIO_RET_OK;
88
89     AUDIO_RETURN_VAL_IF_FAIL(audio_handle, AUDIO_ERR_PARAMETER);
90     AUDIO_RETURN_VAL_IF_FAIL(pcm_handle, AUDIO_ERR_PARAMETER);
91
92     if ((audio_ret = _pcm_close(pcm_handle)))
93         return audio_ret;
94
95     pcm_handle = NULL;
96
97     AUDIO_LOG_INFO("PCM handle close success");
98
99     return audio_ret;
100 }
101
102 audio_return_e audio_pcm_avail(void *audio_handle, void *pcm_handle, uint32_t *avail)
103 {
104     audio_return_e audio_ret = AUDIO_RET_OK;
105
106     AUDIO_RETURN_VAL_IF_FAIL(audio_handle, AUDIO_ERR_PARAMETER);
107     AUDIO_RETURN_VAL_IF_FAIL(pcm_handle, AUDIO_ERR_PARAMETER);
108     AUDIO_RETURN_VAL_IF_FAIL(avail, AUDIO_ERR_PARAMETER);
109
110     audio_ret = _pcm_avail(pcm_handle, avail);
111
112     return audio_ret;
113 }
114
115 audio_return_e audio_pcm_write(void *audio_handle, void *pcm_handle, const void *buffer, uint32_t frames)
116 {
117     audio_return_e audio_ret = AUDIO_RET_OK;
118
119     AUDIO_RETURN_VAL_IF_FAIL(audio_handle, AUDIO_ERR_PARAMETER);
120     AUDIO_RETURN_VAL_IF_FAIL(pcm_handle, AUDIO_ERR_PARAMETER);
121
122     audio_ret = _pcm_write(pcm_handle, buffer, frames);
123
124     return audio_ret;
125 }
126
127 audio_return_e audio_pcm_read(void *audio_handle, void *pcm_handle, void *buffer, uint32_t frames)
128 {
129     audio_return_e audio_ret = AUDIO_RET_OK;
130
131     AUDIO_RETURN_VAL_IF_FAIL(audio_handle, AUDIO_ERR_PARAMETER);
132     AUDIO_RETURN_VAL_IF_FAIL(pcm_handle, AUDIO_ERR_PARAMETER);
133
134     audio_ret = _pcm_read(pcm_handle, buffer, frames);
135
136     return audio_ret;
137 }
138
139 audio_return_e audio_pcm_get_fd(void *audio_handle, void *pcm_handle, int *fd)
140 {
141     audio_return_e audio_ret = AUDIO_RET_OK;
142
143     AUDIO_RETURN_VAL_IF_FAIL(audio_handle, AUDIO_ERR_PARAMETER);
144     AUDIO_RETURN_VAL_IF_FAIL(pcm_handle, AUDIO_ERR_PARAMETER);
145     AUDIO_RETURN_VAL_IF_FAIL(fd, AUDIO_ERR_PARAMETER);
146
147     audio_ret = _pcm_get_fd(pcm_handle, fd);
148
149     return audio_ret;
150 }
151
152 audio_return_e audio_pcm_recover(void *audio_handle, void *pcm_handle, int revents)
153 {
154     audio_return_e audio_ret = AUDIO_RET_OK;
155
156     AUDIO_RETURN_VAL_IF_FAIL(audio_handle, AUDIO_ERR_PARAMETER);
157     AUDIO_RETURN_VAL_IF_FAIL(pcm_handle, AUDIO_ERR_PARAMETER);
158
159     audio_ret = _pcm_recover(pcm_handle, revents);
160
161     return audio_ret;
162 }
163
164 audio_return_e audio_pcm_get_params(void *audio_handle, void *pcm_handle, uint32_t direction, void *sample_spec, uint32_t *period_size, uint32_t *periods)
165 {
166     audio_return_e audio_ret = AUDIO_RET_OK;
167
168     AUDIO_RETURN_VAL_IF_FAIL(audio_handle, AUDIO_ERR_PARAMETER);
169     AUDIO_RETURN_VAL_IF_FAIL(pcm_handle, AUDIO_ERR_PARAMETER);
170     AUDIO_RETURN_VAL_IF_FAIL(sample_spec, AUDIO_ERR_PARAMETER);
171     AUDIO_RETURN_VAL_IF_FAIL(period_size, AUDIO_ERR_PARAMETER);
172     AUDIO_RETURN_VAL_IF_FAIL(periods, AUDIO_ERR_PARAMETER);
173
174     audio_ret = _pcm_get_params(pcm_handle, direction, sample_spec, period_size, periods);
175
176     return audio_ret;
177 }
178
179 audio_return_e audio_pcm_set_params(void *audio_handle, void *pcm_handle, uint32_t direction, void *sample_spec, uint32_t period_size, uint32_t periods)
180 {
181     audio_return_e audio_ret = AUDIO_RET_OK;
182
183     AUDIO_RETURN_VAL_IF_FAIL(audio_handle, AUDIO_ERR_PARAMETER);
184     AUDIO_RETURN_VAL_IF_FAIL(pcm_handle, AUDIO_ERR_PARAMETER);
185     AUDIO_RETURN_VAL_IF_FAIL(sample_spec, AUDIO_ERR_PARAMETER);
186     AUDIO_RETURN_VAL_IF_FAIL(period_size, AUDIO_ERR_PARAMETER);
187     AUDIO_RETURN_VAL_IF_FAIL(periods, AUDIO_ERR_PARAMETER);
188
189     audio_ret = _pcm_set_params(pcm_handle, direction, sample_spec, period_size, periods);
190
191     return audio_ret;
192 }