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;
58 static int __setting_convert_config_error_code(tts_config_error_e code)
60 if (code == TTS_CONFIG_ERROR_NONE) return TTS_SETTING_ERROR_NONE;
61 if (code == TTS_CONFIG_ERROR_OUT_OF_MEMORY) return TTS_SETTING_ERROR_OUT_OF_MEMORY;
62 if (code == TTS_CONFIG_ERROR_IO_ERROR) return TTS_SETTING_ERROR_IO_ERROR;
63 if (code == TTS_CONFIG_ERROR_INVALID_PARAMETER) return TTS_SETTING_ERROR_INVALID_PARAMETER;
64 if (code == TTS_CONFIG_ERROR_INVALID_STATE) return TTS_SETTING_ERROR_INVALID_STATE;
65 if (code == TTS_CONFIG_ERROR_INVALID_VOICE) return TTS_SETTING_ERROR_INVALID_VOICE;
66 if (code == TTS_CONFIG_ERROR_ENGINE_NOT_FOUND) return TTS_SETTING_ERROR_ENGINE_NOT_FOUND;
67 if (code == TTS_CONFIG_ERROR_OPERATION_FAILED) return TTS_SETTING_ERROR_OPERATION_FAILED;
68 if (code == TTS_CONFIG_ERROR_NOT_SUPPORTED_FEATURE) return TTS_SETTING_ERROR_NOT_SUPPORTED_FEATURE;
70 return TTS_SETTING_ERROR_NONE;
73 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)
75 SLOG(LOG_DEBUG, TAG_TTSC, "Engine changed : engine(%s) setting(%s) lang(%s) type(%d)",
76 engine_id, setting, language, voice_type);
78 if (NULL != g_engine_changed_cb)
79 g_engine_changed_cb(engine_id, g_engine_changed_user_data);
81 if (NULL != g_voice_changed_cb)
82 g_voice_changed_cb(language, voice_type, auto_voice, g_voice_changed_user_data);
85 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)
87 SLOG(LOG_DEBUG, TAG_TTSC, "Voice changed : lang(%s) type(%d) auto(%s)", language, voice_type, auto_voice ? "on" : "off");
89 if (NULL != g_voice_changed_cb)
90 g_voice_changed_cb(language, voice_type, auto_voice, g_voice_changed_user_data);
93 void __setting_config_speech_rate_changed_cb(int value, void* user_data)
95 SLOG(LOG_DEBUG, TAG_TTSC, "Speech rate : %d", value);
97 if (NULL != g_speed_changed_cb)
98 g_speed_changed_cb(value, g_speed_changed_user_data);
101 void __setting_config_pitch_changed_cb(int value, void* user_data)
103 SLOG(LOG_DEBUG, TAG_TTSC, "Pitch : %d", value);
105 if (NULL != g_pitch_changed_cb)
106 g_pitch_changed_cb(value, g_pitch_changed_user_data);
109 void __setting_config_bg_volume_ratio_changed_cb(double value, void* user_data)
111 SLOG(LOG_DEBUG, TAG_TTSC, "Rratio : %lf", value);
113 if (NULL != g_bg_volume_ratio_changed_cb)
114 g_bg_volume_ratio_changed_cb(value, g_bg_volume_ratio_changed_user_data);
117 int tts_setting_initialize()
119 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Initialize TTS Setting");
121 if (TTS_SETTING_STATE_READY == g_state) {
122 SLOG(LOG_WARN, TAG_TTSC, "[WARNING] TTS Setting has already been initialized.");
123 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
124 return TTS_SETTING_ERROR_NONE;
127 int ret = tts_config_mgr_initialize(getpid());
129 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to initialize config manager : %d", ret);
130 return __setting_convert_config_error_code(ret);
133 ret = tts_config_mgr_set_callback(getpid(), __setting_config_engine_changed_cb, __setting_config_voice_changed_cb,
134 __setting_config_speech_rate_changed_cb, __setting_config_pitch_changed_cb, __setting_config_bg_volume_ratio_changed_cb, NULL);
136 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to set config changed : %d", ret);
137 return __setting_convert_config_error_code(ret);
140 g_state = TTS_SETTING_STATE_READY;
142 g_engine_changed_cb = NULL;
143 g_engine_changed_user_data = NULL;
145 g_voice_changed_cb = NULL;
146 g_voice_changed_user_data = NULL;
148 g_speed_changed_cb = NULL;
149 g_speed_changed_user_data = NULL;
151 g_pitch_changed_cb = NULL;
152 g_pitch_changed_user_data = NULL;
154 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
156 return TTS_SETTING_ERROR_NONE;
159 int tts_setting_finalize()
161 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Finalize TTS Setting");
163 tts_config_mgr_finalize(getpid());
165 g_state = TTS_SETTING_STATE_NONE;
167 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
169 return TTS_SETTING_ERROR_NONE;
172 bool __tts_config_mgr_get_engine_list(const char* engine_id, const char* engine_name, const char* setting, void* user_data)
174 if (NULL != g_engine_cb) {
175 return g_engine_cb(engine_id, engine_name, setting, user_data);
181 int tts_setting_foreach_supported_engines(tts_setting_supported_engine_cb callback, void* user_data)
183 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Foreach supported engines");
185 if (TTS_SETTING_STATE_NONE == g_state) {
186 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
187 return TTS_SETTING_ERROR_INVALID_STATE;
190 if (NULL == callback) {
191 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Callback is NULL");
192 return TTS_SETTING_ERROR_INVALID_PARAMETER;
195 g_engine_cb = callback;
197 int ret = tts_config_mgr_get_engine_list(__tts_config_mgr_get_engine_list, user_data);
199 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
204 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
206 return __setting_convert_config_error_code(ret);
209 int tts_setting_get_engine(char** engine_id)
211 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Get current engine");
213 if (TTS_SETTING_STATE_NONE == g_state) {
214 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
215 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
216 return TTS_SETTING_ERROR_INVALID_STATE;
219 if (NULL == engine_id) {
220 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Engine id is NULL");
221 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
222 return TTS_SETTING_ERROR_INVALID_PARAMETER;
225 int ret = tts_config_mgr_get_engine(engine_id);
227 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
229 SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get current engine");
232 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
234 return __setting_convert_config_error_code(ret);
237 int tts_setting_set_engine(const char* engine_id)
239 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Set current engine");
241 if (TTS_SETTING_STATE_NONE == g_state) {
242 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
243 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
244 return TTS_SETTING_ERROR_INVALID_STATE;
247 if (NULL == engine_id) {
248 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Engine id is NULL");
249 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
250 return TTS_SETTING_ERROR_INVALID_PARAMETER;
253 int ret = tts_config_mgr_set_engine(engine_id);
255 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
257 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Set current engine : %s", engine_id);
260 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
262 return __setting_convert_config_error_code(ret);
265 int tts_setting_foreach_supported_voices(tts_setting_supported_voice_cb callback, void* user_data)
267 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Foreach supported voices");
269 if (TTS_SETTING_STATE_NONE == g_state) {
270 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
271 return TTS_SETTING_ERROR_INVALID_STATE;
274 if (NULL == callback) {
275 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Param is NULL");
276 return TTS_SETTING_ERROR_INVALID_PARAMETER;
279 char* current_engine = NULL;
280 int ret = tts_config_mgr_get_engine(¤t_engine);
282 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to get current engine : %d", ret);
283 return TTS_SETTING_ERROR_OPERATION_FAILED;
286 ret = tts_config_mgr_get_voice_list(current_engine, (tts_config_supported_voice_cb)callback, user_data);
288 if (NULL != current_engine)
289 free(current_engine);
292 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
294 SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Foreach supported voices");
297 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
299 return __setting_convert_config_error_code(ret);
302 int tts_setting_get_voice(char** language, int* voice_type)
304 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Get default voice");
306 if (TTS_SETTING_STATE_NONE == g_state) {
307 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
308 return TTS_SETTING_ERROR_INVALID_STATE;
311 if (NULL == language || NULL == voice_type) {
312 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input parameter is NULL");
313 return TTS_SETTING_ERROR_INVALID_PARAMETER;
316 int ret = tts_config_mgr_get_voice(language, (int*)voice_type);
318 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
320 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get default voices : lang(%s) type(%d)", *language, *voice_type);
323 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
325 return __setting_convert_config_error_code(ret);
328 int tts_setting_set_voice(const char* language, int voice_type)
330 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Set default voice");
332 if (TTS_SETTING_STATE_NONE == g_state) {
333 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
334 return TTS_SETTING_ERROR_INVALID_STATE;
337 if (NULL == language) {
338 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input parameter is NULL");
339 return TTS_SETTING_ERROR_INVALID_PARAMETER;
342 if (voice_type < TTS_SETTING_VOICE_TYPE_MALE || TTS_SETTING_VOICE_TYPE_CHILD < voice_type) {
343 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Invalid voice type");
344 return TTS_SETTING_ERROR_INVALID_PARAMETER;
347 int ret = tts_config_mgr_set_voice(language, (int)voice_type);
349 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
351 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Set default voice : lang(%s) type(%d)", language, voice_type);
354 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
356 return __setting_convert_config_error_code(ret);
359 int tts_setting_set_auto_voice(bool value)
361 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Set auto voice");
363 if (TTS_SETTING_STATE_NONE == g_state) {
364 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
365 return TTS_SETTING_ERROR_INVALID_STATE;
368 if (value != true && value != false) {
369 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Invalid value");
370 return TTS_SETTING_ERROR_INVALID_PARAMETER;
373 int ret = tts_config_mgr_set_auto_voice(value);
375 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
377 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Set auto voice %s", value ? "on" : "off");
380 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
382 return __setting_convert_config_error_code(ret);
385 int tts_setting_get_auto_voice(bool* value)
387 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Get auto voice");
389 if (TTS_SETTING_STATE_NONE == g_state) {
390 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
391 return TTS_SETTING_ERROR_INVALID_STATE;
395 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Param is NULL");
396 return TTS_SETTING_ERROR_INVALID_PARAMETER;
399 int ret = tts_config_mgr_get_auto_voice(value);
401 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
403 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get auto voice : %d ", (int)*value);
406 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
408 return __setting_convert_config_error_code(ret);
411 int tts_setting_get_speed_range(int* min, int* normal, int* max)
413 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Get speed range");
415 if (TTS_SETTING_STATE_NONE == g_state) {
416 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
417 return TTS_SETTING_ERROR_INVALID_STATE;
420 if (NULL == min || NULL == normal || NULL == max) {
421 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input parameter is null");
422 return TTS_SETTING_ERROR_INVALID_PARAMETER;
425 *min = TTS_SPEED_MIN;
426 *normal = TTS_SPEED_NORMAL;
427 *max = TTS_SPEED_MAX;
429 SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get speed range : min(%d) normal(%d) max(%d)", *min, *normal, *max);
431 return TTS_SETTING_ERROR_NONE;
434 int tts_setting_get_speed(int* speed)
436 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Get default speed");
438 if (TTS_SETTING_STATE_NONE == g_state) {
439 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
440 return TTS_SETTING_ERROR_INVALID_STATE;
444 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Param is NULL");
445 return TTS_SETTING_ERROR_INVALID_PARAMETER;
451 int ret = tts_config_mgr_get_speech_rate(&temp);
453 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
457 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get default speed : %d ", *speed);
460 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
462 return __setting_convert_config_error_code(ret);
465 int tts_setting_set_speed(int speed)
467 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Set default speed");
469 if (TTS_SETTING_STATE_NONE == g_state) {
470 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
471 return TTS_SETTING_ERROR_INVALID_STATE;
474 if (TTS_SPEED_MIN > speed || speed > TTS_SPEED_MAX) {
475 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Invalid speed");
476 return TTS_SETTING_ERROR_INVALID_PARAMETER;
479 int ret = tts_config_mgr_set_speech_rate(speed);
481 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
483 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Set default speed, %d", speed);
486 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
488 return __setting_convert_config_error_code(ret);
491 int tts_setting_get_pitch_range(int* min, int* normal, int* max)
493 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Get speed range");
495 if (TTS_SETTING_STATE_NONE == g_state) {
496 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
497 return TTS_SETTING_ERROR_INVALID_STATE;
500 if (NULL == min || NULL == normal || NULL == max) {
501 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input parameter is null");
502 return TTS_SETTING_ERROR_INVALID_PARAMETER;
505 *min = TTS_PITCH_MIN;
506 *normal = TTS_PITCH_NORMAL;
507 *max = TTS_PITCH_MAX;
509 SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get pitch range : min(%d) normal(%d) max(%d)", *min, *normal, *max);
511 return TTS_SETTING_ERROR_NONE;
514 int tts_setting_set_pitch(int pitch)
516 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Set default pitch");
518 if (TTS_SETTING_STATE_NONE == g_state) {
519 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
520 return TTS_SETTING_ERROR_INVALID_STATE;
523 if (TTS_PITCH_MIN > pitch || pitch > TTS_PITCH_MAX) {
524 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Invalid pitch");
525 return TTS_SETTING_ERROR_INVALID_PARAMETER;
528 int ret = tts_config_mgr_set_pitch(pitch);
530 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
532 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Set default pitch, %d", pitch);
535 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
537 return __setting_convert_config_error_code(ret);
540 int tts_setting_get_background_volume_ratio(double *ratio)
542 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Get background ratio");
544 if (TTS_SETTING_STATE_NONE == g_state) {
545 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
546 return TTS_SETTING_ERROR_INVALID_STATE;
550 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Param is NULL");
551 return TTS_SETTING_ERROR_INVALID_PARAMETER;
557 int ret = tts_config_mgr_get_bg_volume_ratio(&temp);
559 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
563 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get bg volume duration : %lf", *ratio);
566 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
568 return __setting_convert_config_error_code(ret);
571 int tts_setting_set_background_volume_ratio(double ratio)
573 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Set bg volume duration");
575 if (TTS_SETTING_STATE_NONE == g_state) {
576 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
577 return TTS_SETTING_ERROR_INVALID_STATE;
580 if (0.0 > ratio || ratio > 1.0) {
581 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Invalid bg volume ratio(%lf)", ratio);
582 return TTS_SETTING_ERROR_INVALID_PARAMETER;
585 int ret = tts_config_mgr_set_bg_volume_ratio(ratio);
587 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
589 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Set bg volume ratio : %lf", ratio);
592 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
594 return __setting_convert_config_error_code(ret);
597 int tts_setting_get_pitch(int* pitch)
599 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Get default pitch");
601 if (TTS_SETTING_STATE_NONE == g_state) {
602 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
603 return TTS_SETTING_ERROR_INVALID_STATE;
607 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input parameter is NULL");
608 return TTS_SETTING_ERROR_INVALID_PARAMETER;
614 int ret = tts_config_mgr_get_pitch(&temp);
616 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
620 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get default pitch : %d ", *pitch);
623 return __setting_convert_config_error_code(ret);
626 int tts_setting_set_engine_changed_cb(tts_setting_engine_changed_cb callback, void* user_data)
628 if (NULL == callback) {
629 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input param is NULL");
630 return TTS_SETTING_ERROR_INVALID_PARAMETER;
633 g_engine_changed_cb = callback;
634 g_engine_changed_user_data = user_data;
636 return TTS_SETTING_ERROR_NONE;
639 int tts_setting_unset_engine_changed_cb()
641 g_engine_changed_cb = NULL;
642 g_engine_changed_user_data = NULL;
644 return TTS_SETTING_ERROR_NONE;
647 int tts_setting_set_voice_changed_cb(tts_setting_voice_changed_cb callback, void* user_data)
649 if (NULL == callback) {
650 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input param is NULL");
651 return TTS_SETTING_ERROR_INVALID_PARAMETER;
654 g_voice_changed_cb = callback;
655 g_voice_changed_user_data = user_data;
657 return TTS_SETTING_ERROR_NONE;
660 int tts_setting_unset_voice_changed_cb()
662 g_voice_changed_cb = NULL;
663 g_voice_changed_user_data = NULL;
665 return TTS_SETTING_ERROR_NONE;
668 int tts_setting_set_speed_changed_cb(tts_setting_speed_changed_cb callback, void* user_data)
670 if (NULL == callback) {
671 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input param is NULL");
672 return TTS_SETTING_ERROR_INVALID_PARAMETER;
675 g_speed_changed_cb = callback;
676 g_speed_changed_user_data = user_data;
678 return TTS_SETTING_ERROR_NONE;
681 int tts_setting_unset_speed_changed_cb()
683 g_speed_changed_cb = NULL;
684 g_speed_changed_user_data = NULL;
686 return TTS_SETTING_ERROR_NONE;
690 int tts_setting_set_pitch_changed_cb(tts_setting_pitch_changed_cb callback, void* user_data)
692 if (NULL == callback) {
693 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input param is NULL");
694 return TTS_SETTING_ERROR_INVALID_PARAMETER;
697 g_pitch_changed_cb = callback;
698 g_pitch_changed_user_data = user_data;
700 return TTS_SETTING_ERROR_NONE;
703 int tts_setting_unset_pitch_changed_cb()
705 g_pitch_changed_cb = NULL;
706 g_pitch_changed_user_data = NULL;
708 return TTS_SETTING_ERROR_NONE;
712 int tts_setting_set_background_volume_ratio_changed_cb(tts_setting_background_volume_ratio_changed_cb callback, void* user_data)
714 if (NULL == callback) {
715 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input param is NULL");
716 return TTS_SETTING_ERROR_INVALID_PARAMETER;
719 g_bg_volume_ratio_changed_cb = callback;
720 g_bg_volume_ratio_changed_user_data = user_data;
722 return TTS_SETTING_ERROR_NONE;
725 int tts_setting_unset_background_volume_ratio_changed_cb()
727 g_bg_volume_ratio_changed_cb = NULL;
728 g_bg_volume_ratio_changed_user_data = NULL;
730 return TTS_SETTING_ERROR_NONE;