2 * Copyright (c) 2011-2016 Samsung Electronics Co., Ltd All Rights Reserved
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 * http://www.apache.org/licenses/LICENSE-2.0
7 * Unless required by applicable law or agreed to in writing, software
8 * distributed under the License is distributed on an "AS IS" BASIS,
9 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10 * See the License for the specific language governing permissions and
11 * limitations under the License.
15 /* For multi-user support */
16 #include <tzplatform_config.h>
18 #include "tts_config_mgr.h"
19 #include "ttsd_config.h"
20 #include "ttsd_main.h"
23 static ttsd_config_changed_cb g_callback;
25 static ttsd_config_screen_reader_changed_cb g_sr_callback;
27 void __ttsd_config_engine_changed_cb(const char* engine_id, const char* setting, const char* language, int voice_type, bool auto_voice, bool need_credential, void* user_data)
29 /* Need to check engine is valid */
30 if (false == tts_config_check_default_engine_is_valid(engine_id)) {
31 SLOG(LOG_ERROR, tts_tag(), "Engine id is NOT valid : %s", engine_id);
35 if (NULL != g_callback) {
36 SECURE_SLOG(LOG_DEBUG, tts_tag(), "Call the engine reload callback : engine id(%s)", engine_id);
37 g_callback(TTS_CONFIG_TYPE_ENGINE, engine_id, 0, 0);
38 SECURE_SLOG(LOG_DEBUG, tts_tag(), "Call the voice changed callback : lang(%s), type(%d)", language, voice_type);
39 g_callback(TTS_CONFIG_TYPE_VOICE, language, voice_type, 0);
41 SLOG(LOG_ERROR, tts_tag(), "Config changed callback is NULL");
45 void __ttsd_config_voice_changed_cb(const char* before_language, int before_type, const char* language, int type, bool auto_voice, void* user_data)
47 /* Need to check voice is valid */
48 if (false == tts_config_check_default_voice_is_valid(language, type)) {
49 SLOG(LOG_ERROR, tts_tag(), "Lang(%s) type(%d) is NOT valid", language, type);
53 if (NULL != g_callback) {
54 g_callback(TTS_CONFIG_TYPE_VOICE, language, type, 0);
56 SLOG(LOG_ERROR, tts_tag(), "Config changed callback is NULL");
60 void __ttsd_config_speech_rate_changed_cb(int value, void* user_data)
62 if (NULL != g_callback) {
63 g_callback(TTS_CONFIG_TYPE_SPEED, NULL, value, 0);
65 SLOG(LOG_ERROR, tts_tag(), "Config changed callback is NULL");
69 void __ttsd_config_pitch_changed_cb(int value, void* user_data)
71 if (NULL != g_callback) {
72 g_callback(TTS_CONFIG_TYPE_PITCH, NULL, value, 0);
74 SLOG(LOG_ERROR, tts_tag(), "Config changed callback is NULL");
78 void __ttsd_config_screen_reader_changed_cb(bool value, void* user_data)
80 if (NULL != g_sr_callback) {
85 void __ttsd_config_bg_volume_ratio_changed_cb(double value, void* user_data)
87 if (NULL != g_callback)
88 g_callback(TTS_CONFIG_TYPE_BACKGROUND_VOLUME_RATIO, NULL, 0, value);
90 SLOG(LOG_ERROR, tts_tag(), "Config changed callback is NULL");
93 int ttsd_config_initialize(ttsd_config_changed_cb config_cb)
95 if (NULL == config_cb) {
96 SLOG(LOG_ERROR, tts_tag(), "[Config] Invalid parameter");
100 g_callback = config_cb;
101 g_sr_callback = NULL;
103 int ret = tts_config_mgr_initialize(getpid(), TTS_CONFIG_CLIENT_TYPE_SERVER);
105 SLOG(LOG_ERROR, tts_tag(), "[Config] Fail to initialize config manager");
109 ret = tts_config_mgr_set_callback(getpid(), __ttsd_config_engine_changed_cb, __ttsd_config_voice_changed_cb,
110 __ttsd_config_speech_rate_changed_cb, __ttsd_config_pitch_changed_cb, __ttsd_config_bg_volume_ratio_changed_cb, NULL);
112 SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to set config changed : %d", ret);
119 int ttsd_config_finalize()
121 tts_config_mgr_unset_screen_reader_callback(getpid());
122 tts_config_mgr_finalize(getpid(), TTS_CONFIG_CLIENT_TYPE_SERVER);
127 int ttsd_config_set_screen_reader_callback(ttsd_config_screen_reader_changed_cb sr_cb)
130 SLOG(LOG_ERROR, tts_tag(), "[Config] Invalid parameter");
134 g_sr_callback = sr_cb;
136 int ret = tts_config_mgr_set_screen_reader_callback(getpid(), __ttsd_config_screen_reader_changed_cb, NULL) ;
138 SLOG(LOG_ERROR, tts_tag(), "[Config] Fail to set screen reader callback");
144 int ttsd_config_get_default_engine(char** engine_id)
146 if (NULL == engine_id)
149 if (0 != tts_config_mgr_get_engine(engine_id)) {
150 SLOG(LOG_ERROR, tts_tag(), "[Config ERROR] Fail to get engine id");
151 return TTSD_ERROR_OPERATION_FAILED;
157 int ttsd_config_set_default_engine(const char* engine_id)
159 if (NULL == engine_id)
162 if (true == tts_config_check_default_engine_is_valid(engine_id)) {
163 if (0 != tts_config_mgr_set_engine(engine_id)) {
164 SLOG(LOG_ERROR, tts_tag(), "[Config ERROR] Fail to set engine id");
171 int ttsd_config_get_default_voice(char** language, int* type)
173 if (NULL == language || NULL == type)
176 if (0 != tts_config_mgr_get_voice(language, type)) {
177 SLOG(LOG_ERROR, tts_tag(), "[Config ERROR] Fail to get default voice");
178 return TTSD_ERROR_OPERATION_FAILED;
184 int ttsd_config_get_default_speed(int* speed)
189 if (0 != tts_config_mgr_get_speech_rate(speed)) {
190 SLOG(LOG_ERROR, tts_tag(), "[Config ERROR] Fail to get default speech rate");
191 return TTSD_ERROR_OPERATION_FAILED;
197 int ttsd_config_get_default_pitch(int* pitch)
202 if (0 != tts_config_mgr_get_pitch(pitch)) {
203 SLOG(LOG_ERROR, tts_tag(), "[Config ERROR] Fail to get default pitch");
204 return TTSD_ERROR_OPERATION_FAILED;
210 int ttsd_config_get_bg_volume_ratio(double* ratio)
215 if (0 != tts_config_mgr_get_bg_volume_ratio(ratio)) {
216 SLOG(LOG_ERROR, tts_tag(), "[Config ERROR] Fail to get default bg volume ratio");
217 return TTSD_ERROR_OPERATION_FAILED;
223 int ttsd_config_save_error(unsigned int uid, int uttid, const char* lang, int vctype, const char* text,
224 const char* func, int line, const char* message)
226 SLOG(LOG_DEBUG, tts_tag(), "@@@@@ TTS ERROR LOG @@@@@");
228 SLOG(LOG_DEBUG, tts_tag(), "uid(%u) uttid(%d)", uid, uttid);
229 SLOG(LOG_DEBUG, tts_tag(), "Function(%s) Line(%d)", (NULL == func) ? "NULL" : func, line);
230 SLOG(LOG_DEBUG, tts_tag(), "Message(%s)", (NULL == message) ? "NULL" : message);
231 SLOG(LOG_DEBUG, tts_tag(), "Lang(%s), type(%d)", (NULL == lang) ? "NULL" : lang, vctype);
232 SLOG(LOG_DEBUG, tts_tag(), "Text(%s)", (NULL == text) ? "NULL" : text);
234 SLOG(LOG_DEBUG, tts_tag(), "@@@@@");
239 int ttsd_config_get_instant_reprepare_client(unsigned int *uid)
242 return TTSD_ERROR_INVALID_PARAMETER;
244 int ret = tts_config_mgr_get_instant_reprepare_client(uid);
245 if (TTS_CONFIG_ERROR_NONE != ret) {
246 SLOG(LOG_ERROR, tts_tag(), "[Config ERROR] Fail to get uid of instatly reprepared client. ret(%d)", ret);
247 return TTSD_ERROR_OPERATION_FAILED;
250 return TTSD_ERROR_NONE;
253 int ttsd_config_set_instant_reprepare_client(const unsigned int uid)
255 int ret = tts_config_mgr_set_instant_reprepare_client(uid);
256 if (TTS_CONFIG_ERROR_NONE != ret) {
257 SLOG(LOG_ERROR, tts_tag(), "[Config ERROR] Fail to set uid of instatly reprepared client. ret(%d)", ret);
258 return TTSD_ERROR_OPERATION_FAILED;
261 return TTSD_ERROR_NONE;