4 * Copyright (c) 2015 - 2016 Samsung Electronics Co., Ltd. All rights reserved.
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
10 * http://www.apache.org/licenses/LICENSE-2.0
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.
23 #include "tizen-audio-internal.h"
25 static audio_return_t __set_message_callback(audio_hal_t *ah, message_cb callback, void *user_data)
27 audio_return_t audio_ret = AUDIO_RET_OK;
29 AUDIO_RETURN_VAL_IF_FAIL(ah, AUDIO_ERR_PARAMETER);
30 AUDIO_RETURN_VAL_IF_FAIL(callback, AUDIO_ERR_PARAMETER);
32 ah->comm.msg_cb = callback;
33 ah->comm.user_data = user_data;
35 AUDIO_LOG_DEBUG("message callback is set, callback(%p), user_data(%p)", ah->comm.msg_cb, ah->comm.user_data);
40 static audio_return_t __unset_message_callback(audio_hal_t *ah)
42 audio_return_t audio_ret = AUDIO_RET_OK;
44 AUDIO_RETURN_VAL_IF_FAIL(ah, AUDIO_ERR_PARAMETER);
46 ah->comm.msg_cb = NULL;
47 ah->comm.user_data = NULL;
49 AUDIO_LOG_DEBUG("message callback is unset");
54 audio_return_t _audio_comm_init(audio_hal_t *ah)
56 audio_return_t audio_ret = AUDIO_RET_OK;
58 AUDIO_RETURN_VAL_IF_FAIL(ah, AUDIO_ERR_PARAMETER);
60 ah->comm.msg_cb = NULL;
61 ah->comm.user_data = NULL;
66 audio_return_t _audio_comm_deinit(audio_hal_t *ah)
68 audio_return_t audio_ret = AUDIO_RET_OK;
70 AUDIO_RETURN_VAL_IF_FAIL(ah, AUDIO_ERR_PARAMETER);
72 ah->comm.msg_cb = NULL;
73 ah->comm.user_data = NULL;
78 audio_return_t _audio_comm_send_message(audio_hal_t *ah, const char *name, int value)
80 audio_return_t audio_ret = AUDIO_RET_OK;
82 AUDIO_RETURN_VAL_IF_FAIL(ah, AUDIO_ERR_PARAMETER);
83 AUDIO_RETURN_VAL_IF_FAIL(name, AUDIO_ERR_PARAMETER);
85 AUDIO_LOG_DEBUG("send message : name(%s), value(%d)", name, value);
86 if (ah->comm.msg_cb) {
87 ah->comm.msg_cb(name, value, ah->comm.user_data);
93 audio_return_t audio_add_message_cb(void *audio_handle, message_cb callback, void *user_data)
95 audio_return_t ret = AUDIO_RET_OK;
97 AUDIO_RETURN_VAL_IF_FAIL(audio_handle, AUDIO_ERR_PARAMETER);
98 AUDIO_RETURN_VAL_IF_FAIL(callback, AUDIO_ERR_PARAMETER);
100 /* NOTE: Management of several callbacks could be implemented.
101 But we do not care of it for now.*/
102 ret = __set_message_callback((audio_hal_t *)audio_handle, callback, user_data);
107 audio_return_t audio_remove_message_cb(void *audio_handle, message_cb callback)
109 audio_return_t ret = AUDIO_RET_OK;
111 AUDIO_RETURN_VAL_IF_FAIL(audio_handle, AUDIO_ERR_PARAMETER);
112 AUDIO_RETURN_VAL_IF_FAIL(callback, AUDIO_ERR_PARAMETER);
114 ret = __unset_message_callback((audio_hal_t *)audio_handle);