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.
17 #include <sys/types.h>
20 #include "tts_config_mgr.h"
22 #include "tts_setting.h"
25 * @brief Enumerations of setting state.
28 TTS_SETTING_STATE_NONE = 0,
29 TTS_SETTING_STATE_READY
30 } tts_setting_state_e;
33 static tts_setting_state_e g_state = TTS_SETTING_STATE_NONE;
35 static tts_setting_supported_engine_cb g_engine_cb;
37 static tts_setting_engine_changed_cb g_engine_changed_cb;
38 static void* g_engine_changed_user_data;
40 static tts_setting_voice_changed_cb g_voice_changed_cb;
41 static void* g_voice_changed_user_data;
43 static tts_setting_speed_changed_cb g_speed_changed_cb;
44 static void* g_speed_changed_user_data;
46 static tts_setting_pitch_changed_cb g_pitch_changed_cb;
47 static void* g_pitch_changed_user_data;
49 static tts_setting_background_volume_ratio_changed_cb g_bg_volume_ratio_changed_cb;
50 static void* g_bg_volume_ratio_changed_user_data;
53 static int __setting_convert_config_error_code(tts_config_error_e code)
55 if (code == TTS_CONFIG_ERROR_NONE) return TTS_SETTING_ERROR_NONE;
56 if (code == TTS_CONFIG_ERROR_OUT_OF_MEMORY) return TTS_SETTING_ERROR_OUT_OF_MEMORY;
57 if (code == TTS_CONFIG_ERROR_IO_ERROR) return TTS_SETTING_ERROR_IO_ERROR;
58 if (code == TTS_CONFIG_ERROR_INVALID_PARAMETER) return TTS_SETTING_ERROR_INVALID_PARAMETER;
59 if (code == TTS_CONFIG_ERROR_INVALID_STATE) return TTS_SETTING_ERROR_INVALID_STATE;
60 if (code == TTS_CONFIG_ERROR_INVALID_VOICE) return TTS_SETTING_ERROR_INVALID_VOICE;
61 if (code == TTS_CONFIG_ERROR_ENGINE_NOT_FOUND) return TTS_SETTING_ERROR_ENGINE_NOT_FOUND;
62 if (code == TTS_CONFIG_ERROR_OPERATION_FAILED) return TTS_SETTING_ERROR_OPERATION_FAILED;
63 if (code == TTS_CONFIG_ERROR_NOT_SUPPORTED_FEATURE) return TTS_SETTING_ERROR_NOT_SUPPORTED_FEATURE;
65 return TTS_SETTING_ERROR_NONE;
68 void __setting_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)
70 SLOG(LOG_DEBUG, TAG_TTSC, "Engine changed : engine(%s) setting(%s) lang(%s) type(%d)",
71 engine_id, setting, language, voice_type);
73 if (NULL != g_engine_changed_cb)
74 g_engine_changed_cb(engine_id, g_engine_changed_user_data);
76 if (NULL != g_voice_changed_cb)
77 g_voice_changed_cb(language, voice_type, auto_voice, g_voice_changed_user_data);
80 void __setting_config_voice_changed_cb(const char* before_language, int before_type, const char* language, int voice_type, bool auto_voice, void* user_data)
82 SLOG(LOG_DEBUG, TAG_TTSC, "Voice changed : lang(%s) type(%d) auto(%s)", language, voice_type, auto_voice ? "on" : "off");
84 if (NULL != g_voice_changed_cb)
85 g_voice_changed_cb(language, voice_type, auto_voice, g_voice_changed_user_data);
88 void __setting_config_speech_rate_changed_cb(int value, void* user_data)
90 SLOG(LOG_DEBUG, TAG_TTSC, "Speech rate : %d", value);
92 if (NULL != g_speed_changed_cb)
93 g_speed_changed_cb(value, g_speed_changed_user_data);
96 void __setting_config_pitch_changed_cb(int value, void* user_data)
98 SLOG(LOG_DEBUG, TAG_TTSC, "Pitch : %d", value);
100 if (NULL != g_pitch_changed_cb)
101 g_pitch_changed_cb(value, g_pitch_changed_user_data);
104 void __setting_config_bg_volume_ratio_changed_cb(double value, void* user_data)
106 SLOG(LOG_DEBUG, TAG_TTSC, "Rratio : %lf", value);
108 if (NULL != g_bg_volume_ratio_changed_cb)
109 g_bg_volume_ratio_changed_cb(value, g_bg_volume_ratio_changed_user_data);
112 int tts_setting_initialize()
114 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Initialize TTS Setting");
116 if (TTS_SETTING_STATE_READY == g_state) {
117 SLOG(LOG_WARN, TAG_TTSC, "[WARNING] TTS Setting has already been initialized.");
118 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
119 return TTS_SETTING_ERROR_NONE;
122 int ret = tts_config_mgr_initialize(getpid(), TTS_CONFIG_CLIENT_TYPE_SETTING);
124 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to initialize config manager : %d", ret);
125 return __setting_convert_config_error_code(ret);
128 ret = tts_config_mgr_set_callback(getpid(), __setting_config_engine_changed_cb, __setting_config_voice_changed_cb,
129 __setting_config_speech_rate_changed_cb, __setting_config_pitch_changed_cb, __setting_config_bg_volume_ratio_changed_cb, NULL);
131 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to set config changed : %d", ret);
132 return __setting_convert_config_error_code(ret);
135 g_state = TTS_SETTING_STATE_READY;
137 g_engine_changed_cb = NULL;
138 g_engine_changed_user_data = NULL;
140 g_voice_changed_cb = NULL;
141 g_voice_changed_user_data = NULL;
143 g_speed_changed_cb = NULL;
144 g_speed_changed_user_data = NULL;
146 g_pitch_changed_cb = NULL;
147 g_pitch_changed_user_data = NULL;
149 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
151 return TTS_SETTING_ERROR_NONE;
154 int tts_setting_finalize()
156 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Finalize TTS Setting");
158 tts_config_mgr_finalize(getpid(), TTS_CONFIG_CLIENT_TYPE_SETTING);
160 g_state = TTS_SETTING_STATE_NONE;
162 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
164 return TTS_SETTING_ERROR_NONE;
167 bool __tts_config_mgr_get_engine_list(const char* engine_id, const char* engine_name, const char* setting, void* user_data)
169 if (NULL != g_engine_cb) {
170 return g_engine_cb(engine_id, engine_name, setting, user_data);
176 int tts_setting_foreach_supported_engines(tts_setting_supported_engine_cb callback, void* user_data)
178 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Foreach supported engines");
180 if (TTS_SETTING_STATE_NONE == g_state) {
181 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
182 return TTS_SETTING_ERROR_INVALID_STATE;
185 if (NULL == callback) {
186 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Callback is NULL");
187 return TTS_SETTING_ERROR_INVALID_PARAMETER;
190 g_engine_cb = callback;
192 int ret = tts_config_mgr_get_engine_list(__tts_config_mgr_get_engine_list, user_data);
194 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
199 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
201 return __setting_convert_config_error_code(ret);
204 int tts_setting_get_engine(char** engine_id)
206 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Get current engine");
208 if (TTS_SETTING_STATE_NONE == g_state) {
209 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
210 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
211 return TTS_SETTING_ERROR_INVALID_STATE;
214 if (NULL == engine_id) {
215 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Engine id is NULL");
216 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
217 return TTS_SETTING_ERROR_INVALID_PARAMETER;
220 int ret = tts_config_mgr_get_engine(engine_id);
222 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
224 SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get current engine");
227 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
229 return __setting_convert_config_error_code(ret);
232 int tts_setting_set_engine(const char* engine_id)
234 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Set current engine");
236 if (TTS_SETTING_STATE_NONE == g_state) {
237 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
238 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
239 return TTS_SETTING_ERROR_INVALID_STATE;
242 if (NULL == engine_id) {
243 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Engine id is NULL");
244 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
245 return TTS_SETTING_ERROR_INVALID_PARAMETER;
248 int ret = tts_config_mgr_set_engine(engine_id);
250 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
252 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Set current engine : %s", engine_id);
255 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
257 return __setting_convert_config_error_code(ret);
260 int tts_setting_foreach_supported_voices(tts_setting_supported_voice_cb callback, void* user_data)
262 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Foreach supported voices");
264 if (TTS_SETTING_STATE_NONE == g_state) {
265 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
266 return TTS_SETTING_ERROR_INVALID_STATE;
269 if (NULL == callback) {
270 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Param is NULL");
271 return TTS_SETTING_ERROR_INVALID_PARAMETER;
274 char* current_engine = NULL;
275 int ret = tts_config_mgr_get_engine(¤t_engine);
277 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to get current engine : %d", ret);
278 return TTS_SETTING_ERROR_OPERATION_FAILED;
281 ret = tts_config_mgr_get_voice_list(current_engine, (tts_config_supported_voice_cb)callback, user_data);
283 if (NULL != current_engine)
284 free(current_engine);
287 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
289 SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Foreach supported voices");
292 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
294 return __setting_convert_config_error_code(ret);
297 int tts_setting_get_voice(char** language, int* voice_type)
299 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Get default voice");
301 if (TTS_SETTING_STATE_NONE == g_state) {
302 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
303 return TTS_SETTING_ERROR_INVALID_STATE;
306 if (NULL == language || NULL == voice_type) {
307 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input parameter is NULL");
308 return TTS_SETTING_ERROR_INVALID_PARAMETER;
311 int ret = tts_config_mgr_get_voice(language, (int*)voice_type);
313 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
315 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get default voices : lang(%s) type(%d)", *language, *voice_type);
318 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
320 return __setting_convert_config_error_code(ret);
323 int tts_setting_set_voice(const char* language, int voice_type)
325 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Set default voice");
327 if (TTS_SETTING_STATE_NONE == g_state) {
328 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
329 return TTS_SETTING_ERROR_INVALID_STATE;
332 if (NULL == language) {
333 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input parameter is NULL");
334 return TTS_SETTING_ERROR_INVALID_PARAMETER;
337 if (voice_type < TTS_SETTING_VOICE_TYPE_MALE || TTS_SETTING_VOICE_TYPE_CHILD < voice_type) {
338 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Invalid voice type");
339 return TTS_SETTING_ERROR_INVALID_PARAMETER;
342 int ret = tts_config_mgr_set_voice(language, (int)voice_type);
344 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
346 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Set default voice : lang(%s) type(%d)", language, voice_type);
349 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
351 return __setting_convert_config_error_code(ret);
354 int tts_setting_set_auto_voice(bool value)
356 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Set auto voice");
358 if (TTS_SETTING_STATE_NONE == g_state) {
359 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
360 return TTS_SETTING_ERROR_INVALID_STATE;
363 if (value != true && value != false) {
364 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Invalid value");
365 return TTS_SETTING_ERROR_INVALID_PARAMETER;
368 int ret = tts_config_mgr_set_auto_voice(value);
370 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
372 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Set auto voice %s", value ? "on" : "off");
375 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
377 return __setting_convert_config_error_code(ret);
380 int tts_setting_get_auto_voice(bool* value)
382 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Get auto voice");
384 if (TTS_SETTING_STATE_NONE == g_state) {
385 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
386 return TTS_SETTING_ERROR_INVALID_STATE;
390 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Param is NULL");
391 return TTS_SETTING_ERROR_INVALID_PARAMETER;
394 int ret = tts_config_mgr_get_auto_voice(value);
396 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
398 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get auto voice : %d ", (int)*value);
401 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
403 return __setting_convert_config_error_code(ret);
406 int tts_setting_get_speed_range(int* min, int* normal, int* max)
408 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Get speed range");
410 if (TTS_SETTING_STATE_NONE == g_state) {
411 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
412 return TTS_SETTING_ERROR_INVALID_STATE;
415 if (NULL == min || NULL == normal || NULL == max) {
416 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input parameter is null");
417 return TTS_SETTING_ERROR_INVALID_PARAMETER;
420 *min = TTS_SPEED_MIN;
421 *normal = TTS_SPEED_NORMAL;
422 *max = TTS_SPEED_MAX;
424 SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get speed range : min(%d) normal(%d) max(%d)", *min, *normal, *max);
426 return TTS_SETTING_ERROR_NONE;
429 int tts_setting_get_speed(int* speed)
431 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Get default speed");
433 if (TTS_SETTING_STATE_NONE == g_state) {
434 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
435 return TTS_SETTING_ERROR_INVALID_STATE;
439 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Param is NULL");
440 return TTS_SETTING_ERROR_INVALID_PARAMETER;
446 int ret = tts_config_mgr_get_speech_rate(&temp);
448 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
452 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get default speed : %d ", *speed);
455 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
457 return __setting_convert_config_error_code(ret);
460 int tts_setting_set_speed(int speed)
462 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Set default speed");
464 if (TTS_SETTING_STATE_NONE == g_state) {
465 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
466 return TTS_SETTING_ERROR_INVALID_STATE;
469 if (TTS_SPEED_MIN > speed || speed > TTS_SPEED_MAX) {
470 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Invalid speed");
471 return TTS_SETTING_ERROR_INVALID_PARAMETER;
474 int ret = tts_config_mgr_set_speech_rate(speed);
476 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
478 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Set default speed, %d", speed);
481 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
483 return __setting_convert_config_error_code(ret);
486 int tts_setting_get_pitch_range(int* min, int* normal, int* max)
488 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Get speed range");
490 if (TTS_SETTING_STATE_NONE == g_state) {
491 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
492 return TTS_SETTING_ERROR_INVALID_STATE;
495 if (NULL == min || NULL == normal || NULL == max) {
496 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input parameter is null");
497 return TTS_SETTING_ERROR_INVALID_PARAMETER;
500 *min = TTS_PITCH_MIN;
501 *normal = TTS_PITCH_NORMAL;
502 *max = TTS_PITCH_MAX;
504 SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get pitch range : min(%d) normal(%d) max(%d)", *min, *normal, *max);
506 return TTS_SETTING_ERROR_NONE;
509 int tts_setting_set_pitch(int pitch)
511 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Set default pitch");
513 if (TTS_SETTING_STATE_NONE == g_state) {
514 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
515 return TTS_SETTING_ERROR_INVALID_STATE;
518 if (TTS_PITCH_MIN > pitch || pitch > TTS_PITCH_MAX) {
519 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Invalid pitch");
520 return TTS_SETTING_ERROR_INVALID_PARAMETER;
523 int ret = tts_config_mgr_set_pitch(pitch);
525 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
527 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Set default pitch, %d", pitch);
530 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
532 return __setting_convert_config_error_code(ret);
535 int tts_setting_get_background_volume_ratio(double *ratio)
537 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Get background ratio");
539 if (TTS_SETTING_STATE_NONE == g_state) {
540 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
541 return TTS_SETTING_ERROR_INVALID_STATE;
545 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Param is NULL");
546 return TTS_SETTING_ERROR_INVALID_PARAMETER;
552 int ret = tts_config_mgr_get_bg_volume_ratio(&temp);
554 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
558 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get bg volume duration : %lf", *ratio);
561 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
563 return __setting_convert_config_error_code(ret);
566 int tts_setting_set_background_volume_ratio(double ratio)
568 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Set bg volume duration");
570 if (TTS_SETTING_STATE_NONE == g_state) {
571 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
572 return TTS_SETTING_ERROR_INVALID_STATE;
575 if (0.0 > ratio || ratio > 1.0) {
576 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Invalid bg volume ratio(%lf)", ratio);
577 return TTS_SETTING_ERROR_INVALID_PARAMETER;
580 int ret = tts_config_mgr_set_bg_volume_ratio(ratio);
582 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
584 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Set bg volume ratio : %lf", ratio);
587 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
589 return __setting_convert_config_error_code(ret);
592 int tts_setting_get_pitch(int* pitch)
594 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Get default pitch");
596 if (TTS_SETTING_STATE_NONE == g_state) {
597 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
598 return TTS_SETTING_ERROR_INVALID_STATE;
602 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input parameter is NULL");
603 return TTS_SETTING_ERROR_INVALID_PARAMETER;
609 int ret = tts_config_mgr_get_pitch(&temp);
611 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
615 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get default pitch : %d ", *pitch);
618 return __setting_convert_config_error_code(ret);
621 int tts_setting_set_engine_changed_cb(tts_setting_engine_changed_cb callback, void* user_data)
623 if (NULL == callback) {
624 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input param is NULL");
625 return TTS_SETTING_ERROR_INVALID_PARAMETER;
628 g_engine_changed_cb = callback;
629 g_engine_changed_user_data = user_data;
631 return TTS_SETTING_ERROR_NONE;
634 int tts_setting_unset_engine_changed_cb()
636 g_engine_changed_cb = NULL;
637 g_engine_changed_user_data = NULL;
639 return TTS_SETTING_ERROR_NONE;
642 int tts_setting_set_voice_changed_cb(tts_setting_voice_changed_cb callback, void* user_data)
644 if (NULL == callback) {
645 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input param is NULL");
646 return TTS_SETTING_ERROR_INVALID_PARAMETER;
649 g_voice_changed_cb = callback;
650 g_voice_changed_user_data = user_data;
652 return TTS_SETTING_ERROR_NONE;
655 int tts_setting_unset_voice_changed_cb()
657 g_voice_changed_cb = NULL;
658 g_voice_changed_user_data = NULL;
660 return TTS_SETTING_ERROR_NONE;
663 int tts_setting_set_speed_changed_cb(tts_setting_speed_changed_cb callback, void* user_data)
665 if (NULL == callback) {
666 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input param is NULL");
667 return TTS_SETTING_ERROR_INVALID_PARAMETER;
670 g_speed_changed_cb = callback;
671 g_speed_changed_user_data = user_data;
673 return TTS_SETTING_ERROR_NONE;
676 int tts_setting_unset_speed_changed_cb()
678 g_speed_changed_cb = NULL;
679 g_speed_changed_user_data = NULL;
681 return TTS_SETTING_ERROR_NONE;
685 int tts_setting_set_pitch_changed_cb(tts_setting_pitch_changed_cb callback, void* user_data)
687 if (NULL == callback) {
688 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input param is NULL");
689 return TTS_SETTING_ERROR_INVALID_PARAMETER;
692 g_pitch_changed_cb = callback;
693 g_pitch_changed_user_data = user_data;
695 return TTS_SETTING_ERROR_NONE;
698 int tts_setting_unset_pitch_changed_cb()
700 g_pitch_changed_cb = NULL;
701 g_pitch_changed_user_data = NULL;
703 return TTS_SETTING_ERROR_NONE;
707 int tts_setting_set_background_volume_ratio_changed_cb(tts_setting_background_volume_ratio_changed_cb callback, void* user_data)
709 if (NULL == callback) {
710 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input param is NULL");
711 return TTS_SETTING_ERROR_INVALID_PARAMETER;
714 g_bg_volume_ratio_changed_cb = callback;
715 g_bg_volume_ratio_changed_user_data = user_data;
717 return TTS_SETTING_ERROR_NONE;
720 int tts_setting_unset_background_volume_ratio_changed_cb()
722 g_bg_volume_ratio_changed_cb = NULL;
723 g_bg_volume_ratio_changed_user_data = NULL;
725 return TTS_SETTING_ERROR_NONE;