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 "tts_config_mgr.h"
19 #include "tts_setting.h"
22 * @brief Enumerations of setting state.
25 TTS_SETTING_STATE_NONE = 0,
26 TTS_SETTING_STATE_READY
27 } tts_setting_state_e;
30 static tts_setting_state_e g_state = TTS_SETTING_STATE_NONE;
32 static tts_setting_supported_engine_cb g_engine_cb;
34 static tts_setting_engine_changed_cb g_engine_changed_cb;
35 static void* g_engine_changed_user_data;
37 static tts_setting_voice_changed_cb g_voice_changed_cb;
38 static void* g_voice_changed_user_data;
40 static tts_setting_speed_changed_cb g_speed_changed_cb;
41 static void* g_speed_changed_user_data;
43 static tts_setting_pitch_changed_cb g_pitch_changed_cb;
44 static void* g_pitch_changed_user_data;
46 static tts_setting_background_volume_ratio_changed_cb g_bg_volume_ratio_changed_cb;
47 static void* g_bg_volume_ratio_changed_user_data;
50 static int __setting_convert_config_error_code(tts_config_error_e code)
52 if (code == TTS_CONFIG_ERROR_NONE) return TTS_SETTING_ERROR_NONE;
53 if (code == TTS_CONFIG_ERROR_OUT_OF_MEMORY) return TTS_SETTING_ERROR_OUT_OF_MEMORY;
54 if (code == TTS_CONFIG_ERROR_IO_ERROR) return TTS_SETTING_ERROR_IO_ERROR;
55 if (code == TTS_CONFIG_ERROR_INVALID_PARAMETER) return TTS_SETTING_ERROR_INVALID_PARAMETER;
56 if (code == TTS_CONFIG_ERROR_INVALID_STATE) return TTS_SETTING_ERROR_INVALID_STATE;
57 if (code == TTS_CONFIG_ERROR_INVALID_VOICE) return TTS_SETTING_ERROR_INVALID_VOICE;
58 if (code == TTS_CONFIG_ERROR_ENGINE_NOT_FOUND) return TTS_SETTING_ERROR_ENGINE_NOT_FOUND;
59 if (code == TTS_CONFIG_ERROR_OPERATION_FAILED) return TTS_SETTING_ERROR_OPERATION_FAILED;
60 if (code == TTS_CONFIG_ERROR_NOT_SUPPORTED_FEATURE) return TTS_SETTING_ERROR_NOT_SUPPORTED_FEATURE;
62 return TTS_SETTING_ERROR_NONE;
65 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)
67 SLOG(LOG_DEBUG, TAG_TTSC, "Engine changed : engine(%s) setting(%s) lang(%s) type(%d)",
68 engine_id, setting, language, voice_type);
70 if (NULL != g_engine_changed_cb)
71 g_engine_changed_cb(engine_id, g_engine_changed_user_data);
73 if (NULL != g_voice_changed_cb)
74 g_voice_changed_cb(language, voice_type, auto_voice, g_voice_changed_user_data);
77 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)
79 SLOG(LOG_DEBUG, TAG_TTSC, "Voice changed : lang(%s) type(%d) auto(%s)", language, voice_type, auto_voice ? "on" : "off");
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_speech_rate_changed_cb(int value, void* user_data)
87 SLOG(LOG_DEBUG, TAG_TTSC, "Speech rate : %d", value);
89 if (NULL != g_speed_changed_cb)
90 g_speed_changed_cb(value, g_speed_changed_user_data);
93 void __setting_config_pitch_changed_cb(int value, void* user_data)
95 SLOG(LOG_DEBUG, TAG_TTSC, "Pitch : %d", value);
97 if (NULL != g_pitch_changed_cb)
98 g_pitch_changed_cb(value, g_pitch_changed_user_data);
101 void __setting_config_bg_volume_ratio_changed_cb(double value, void* user_data)
103 SLOG(LOG_DEBUG, TAG_TTSC, "Rratio : %lf", value);
105 if (NULL != g_bg_volume_ratio_changed_cb)
106 g_bg_volume_ratio_changed_cb(value, g_bg_volume_ratio_changed_user_data);
109 int tts_setting_initialize()
111 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Initialize TTS Setting");
113 if (TTS_SETTING_STATE_READY == g_state) {
114 SLOG(LOG_WARN, TAG_TTSC, "[WARNING] TTS Setting has already been initialized.");
115 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
116 return TTS_SETTING_ERROR_NONE;
119 int ret = tts_config_mgr_initialize(getpid(), TTS_CONFIG_CLIENT_TYPE_SETTING);
121 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to initialize config manager : %d", ret);
122 return __setting_convert_config_error_code(ret);
125 ret = tts_config_mgr_set_callback(getpid(), __setting_config_engine_changed_cb, __setting_config_voice_changed_cb,
126 __setting_config_speech_rate_changed_cb, __setting_config_pitch_changed_cb, __setting_config_bg_volume_ratio_changed_cb, NULL);
128 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to set config changed : %d", ret);
129 return __setting_convert_config_error_code(ret);
132 g_state = TTS_SETTING_STATE_READY;
134 g_engine_changed_cb = NULL;
135 g_engine_changed_user_data = NULL;
137 g_voice_changed_cb = NULL;
138 g_voice_changed_user_data = NULL;
140 g_speed_changed_cb = NULL;
141 g_speed_changed_user_data = NULL;
143 g_pitch_changed_cb = NULL;
144 g_pitch_changed_user_data = NULL;
146 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
148 return TTS_SETTING_ERROR_NONE;
151 int tts_setting_finalize()
153 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Finalize TTS Setting");
155 tts_config_mgr_finalize(getpid(), TTS_CONFIG_CLIENT_TYPE_SETTING);
157 g_state = TTS_SETTING_STATE_NONE;
159 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
161 return TTS_SETTING_ERROR_NONE;
164 bool __tts_config_mgr_get_engine_list(const char* engine_id, const char* engine_name, const char* setting, void* user_data)
166 if (NULL != g_engine_cb) {
167 return g_engine_cb(engine_id, engine_name, setting, user_data);
173 int tts_setting_foreach_supported_engines(tts_setting_supported_engine_cb callback, void* user_data)
175 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Foreach supported engines");
177 if (TTS_SETTING_STATE_NONE == g_state) {
178 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
179 return TTS_SETTING_ERROR_INVALID_STATE;
182 if (NULL == callback) {
183 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Callback is NULL");
184 return TTS_SETTING_ERROR_INVALID_PARAMETER;
187 g_engine_cb = callback;
189 int ret = tts_config_mgr_get_engine_list(__tts_config_mgr_get_engine_list, user_data);
191 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
196 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
198 return __setting_convert_config_error_code(ret);
201 int tts_setting_get_engine(char** engine_id)
203 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Get current engine");
205 if (TTS_SETTING_STATE_NONE == g_state) {
206 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
207 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
208 return TTS_SETTING_ERROR_INVALID_STATE;
211 if (NULL == engine_id) {
212 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Engine id is NULL");
213 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
214 return TTS_SETTING_ERROR_INVALID_PARAMETER;
217 int ret = tts_config_mgr_get_engine(engine_id);
219 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
221 SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get current engine");
224 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
226 return __setting_convert_config_error_code(ret);
229 int tts_setting_set_engine(const char* engine_id)
231 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Set current engine");
233 if (TTS_SETTING_STATE_NONE == g_state) {
234 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
235 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
236 return TTS_SETTING_ERROR_INVALID_STATE;
239 if (NULL == engine_id) {
240 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Engine id is NULL");
241 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
242 return TTS_SETTING_ERROR_INVALID_PARAMETER;
245 int ret = tts_config_mgr_set_engine(engine_id);
247 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
249 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Set current engine : %s", engine_id);
252 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
254 return __setting_convert_config_error_code(ret);
257 int tts_setting_foreach_supported_voices(tts_setting_supported_voice_cb callback, void* user_data)
259 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Foreach supported voices");
261 if (TTS_SETTING_STATE_NONE == g_state) {
262 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
263 return TTS_SETTING_ERROR_INVALID_STATE;
266 if (NULL == callback) {
267 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Param is NULL");
268 return TTS_SETTING_ERROR_INVALID_PARAMETER;
271 char* current_engine = NULL;
272 int ret = tts_config_mgr_get_engine(¤t_engine);
274 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to get current engine : %d", ret);
275 return TTS_SETTING_ERROR_OPERATION_FAILED;
278 ret = tts_config_mgr_get_voice_list(current_engine, (tts_config_supported_voice_cb)callback, user_data);
280 if (NULL != current_engine)
281 free(current_engine);
284 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
286 SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Foreach supported voices");
289 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
291 return __setting_convert_config_error_code(ret);
294 int tts_setting_get_voice(char** language, int* voice_type)
296 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Get default voice");
298 if (TTS_SETTING_STATE_NONE == g_state) {
299 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
300 return TTS_SETTING_ERROR_INVALID_STATE;
303 if (NULL == language || NULL == voice_type) {
304 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input parameter is NULL");
305 return TTS_SETTING_ERROR_INVALID_PARAMETER;
308 int ret = tts_config_mgr_get_voice(language, (int*)voice_type);
310 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
312 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get default voices : lang(%s) type(%d)", *language, *voice_type);
315 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
317 return __setting_convert_config_error_code(ret);
320 int tts_setting_set_voice(const char* language, int voice_type)
322 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Set default voice");
324 if (TTS_SETTING_STATE_NONE == g_state) {
325 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
326 return TTS_SETTING_ERROR_INVALID_STATE;
329 if (NULL == language) {
330 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input parameter is NULL");
331 return TTS_SETTING_ERROR_INVALID_PARAMETER;
334 if (voice_type < TTS_SETTING_VOICE_TYPE_MALE || TTS_SETTING_VOICE_TYPE_CHILD < voice_type) {
335 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Invalid voice type");
336 return TTS_SETTING_ERROR_INVALID_PARAMETER;
339 int ret = tts_config_mgr_set_voice(language, (int)voice_type);
341 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
343 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Set default voice : lang(%s) type(%d)", language, voice_type);
346 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
348 return __setting_convert_config_error_code(ret);
351 int tts_setting_set_auto_voice(bool value)
353 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Set auto voice");
355 if (TTS_SETTING_STATE_NONE == g_state) {
356 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
357 return TTS_SETTING_ERROR_INVALID_STATE;
360 if (value != true && value != false) {
361 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Invalid value");
362 return TTS_SETTING_ERROR_INVALID_PARAMETER;
365 int ret = tts_config_mgr_set_auto_voice(value);
367 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
369 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Set auto voice %s", value ? "on" : "off");
372 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
374 return __setting_convert_config_error_code(ret);
377 int tts_setting_get_auto_voice(bool* value)
379 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Get auto voice");
381 if (TTS_SETTING_STATE_NONE == g_state) {
382 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
383 return TTS_SETTING_ERROR_INVALID_STATE;
387 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Param is NULL");
388 return TTS_SETTING_ERROR_INVALID_PARAMETER;
391 int ret = tts_config_mgr_get_auto_voice(value);
393 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
395 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get auto voice : %d ", (int)*value);
398 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
400 return __setting_convert_config_error_code(ret);
403 int tts_setting_get_speed_range(int* min, int* normal, int* max)
405 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Get speed range");
407 if (TTS_SETTING_STATE_NONE == g_state) {
408 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
409 return TTS_SETTING_ERROR_INVALID_STATE;
412 if (NULL == min || NULL == normal || NULL == max) {
413 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input parameter is null");
414 return TTS_SETTING_ERROR_INVALID_PARAMETER;
417 *min = TTS_SPEED_MIN;
418 *normal = TTS_SPEED_NORMAL;
419 *max = TTS_SPEED_MAX;
421 SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get speed range : min(%d) normal(%d) max(%d)", *min, *normal, *max);
423 return TTS_SETTING_ERROR_NONE;
426 int tts_setting_get_speed(int* speed)
428 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Get default speed");
430 if (TTS_SETTING_STATE_NONE == g_state) {
431 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
432 return TTS_SETTING_ERROR_INVALID_STATE;
436 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Param is NULL");
437 return TTS_SETTING_ERROR_INVALID_PARAMETER;
443 int ret = tts_config_mgr_get_speech_rate(&temp);
445 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
449 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get default speed : %d ", *speed);
452 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
454 return __setting_convert_config_error_code(ret);
457 int tts_setting_set_speed(int speed)
459 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Set default speed");
461 if (TTS_SETTING_STATE_NONE == g_state) {
462 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
463 return TTS_SETTING_ERROR_INVALID_STATE;
466 if (TTS_SPEED_MIN > speed || speed > TTS_SPEED_MAX) {
467 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Invalid speed");
468 return TTS_SETTING_ERROR_INVALID_PARAMETER;
471 int ret = tts_config_mgr_set_speech_rate(speed);
473 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
475 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Set default speed, %d", speed);
478 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
480 return __setting_convert_config_error_code(ret);
483 int tts_setting_get_pitch_range(int* min, int* normal, int* max)
485 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Get speed range");
487 if (TTS_SETTING_STATE_NONE == g_state) {
488 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
489 return TTS_SETTING_ERROR_INVALID_STATE;
492 if (NULL == min || NULL == normal || NULL == max) {
493 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input parameter is null");
494 return TTS_SETTING_ERROR_INVALID_PARAMETER;
497 *min = TTS_PITCH_MIN;
498 *normal = TTS_PITCH_NORMAL;
499 *max = TTS_PITCH_MAX;
501 SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get pitch range : min(%d) normal(%d) max(%d)", *min, *normal, *max);
503 return TTS_SETTING_ERROR_NONE;
506 int tts_setting_set_pitch(int pitch)
508 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Set default pitch");
510 if (TTS_SETTING_STATE_NONE == g_state) {
511 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
512 return TTS_SETTING_ERROR_INVALID_STATE;
515 if (TTS_PITCH_MIN > pitch || pitch > TTS_PITCH_MAX) {
516 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Invalid pitch");
517 return TTS_SETTING_ERROR_INVALID_PARAMETER;
520 int ret = tts_config_mgr_set_pitch(pitch);
522 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
524 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Set default pitch, %d", pitch);
527 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
529 return __setting_convert_config_error_code(ret);
532 int tts_setting_get_background_volume_ratio(double *ratio)
534 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Get background ratio");
536 if (TTS_SETTING_STATE_NONE == g_state) {
537 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
538 return TTS_SETTING_ERROR_INVALID_STATE;
542 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Param is NULL");
543 return TTS_SETTING_ERROR_INVALID_PARAMETER;
549 int ret = tts_config_mgr_get_bg_volume_ratio(&temp);
551 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
555 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get bg volume duration : %lf", *ratio);
558 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
560 return __setting_convert_config_error_code(ret);
563 int tts_setting_set_background_volume_ratio(double ratio)
565 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Set bg volume duration");
567 if (TTS_SETTING_STATE_NONE == g_state) {
568 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
569 return TTS_SETTING_ERROR_INVALID_STATE;
572 if (0.0 > ratio || ratio > 1.0) {
573 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Invalid bg volume ratio(%lf)", ratio);
574 return TTS_SETTING_ERROR_INVALID_PARAMETER;
577 int ret = tts_config_mgr_set_bg_volume_ratio(ratio);
579 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
581 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Set bg volume ratio : %lf", ratio);
584 SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
586 return __setting_convert_config_error_code(ret);
589 int tts_setting_get_pitch(int* pitch)
591 SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Get default pitch");
593 if (TTS_SETTING_STATE_NONE == g_state) {
594 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
595 return TTS_SETTING_ERROR_INVALID_STATE;
599 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input parameter is NULL");
600 return TTS_SETTING_ERROR_INVALID_PARAMETER;
606 int ret = tts_config_mgr_get_pitch(&temp);
608 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
612 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get default pitch : %d ", *pitch);
615 return __setting_convert_config_error_code(ret);
618 int tts_setting_set_engine_changed_cb(tts_setting_engine_changed_cb callback, void* user_data)
620 if (NULL == callback) {
621 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input param is NULL");
622 return TTS_SETTING_ERROR_INVALID_PARAMETER;
625 g_engine_changed_cb = callback;
626 g_engine_changed_user_data = user_data;
628 return TTS_SETTING_ERROR_NONE;
631 int tts_setting_unset_engine_changed_cb()
633 g_engine_changed_cb = NULL;
634 g_engine_changed_user_data = NULL;
636 return TTS_SETTING_ERROR_NONE;
639 int tts_setting_set_voice_changed_cb(tts_setting_voice_changed_cb callback, void* user_data)
641 if (NULL == callback) {
642 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input param is NULL");
643 return TTS_SETTING_ERROR_INVALID_PARAMETER;
646 g_voice_changed_cb = callback;
647 g_voice_changed_user_data = user_data;
649 return TTS_SETTING_ERROR_NONE;
652 int tts_setting_unset_voice_changed_cb()
654 g_voice_changed_cb = NULL;
655 g_voice_changed_user_data = NULL;
657 return TTS_SETTING_ERROR_NONE;
660 int tts_setting_set_speed_changed_cb(tts_setting_speed_changed_cb callback, void* user_data)
662 if (NULL == callback) {
663 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input param is NULL");
664 return TTS_SETTING_ERROR_INVALID_PARAMETER;
667 g_speed_changed_cb = callback;
668 g_speed_changed_user_data = user_data;
670 return TTS_SETTING_ERROR_NONE;
673 int tts_setting_unset_speed_changed_cb()
675 g_speed_changed_cb = NULL;
676 g_speed_changed_user_data = NULL;
678 return TTS_SETTING_ERROR_NONE;
682 int tts_setting_set_pitch_changed_cb(tts_setting_pitch_changed_cb callback, void* user_data)
684 if (NULL == callback) {
685 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input param is NULL");
686 return TTS_SETTING_ERROR_INVALID_PARAMETER;
689 g_pitch_changed_cb = callback;
690 g_pitch_changed_user_data = user_data;
692 return TTS_SETTING_ERROR_NONE;
695 int tts_setting_unset_pitch_changed_cb()
697 g_pitch_changed_cb = NULL;
698 g_pitch_changed_user_data = NULL;
700 return TTS_SETTING_ERROR_NONE;
704 int tts_setting_set_background_volume_ratio_changed_cb(tts_setting_background_volume_ratio_changed_cb callback, void* user_data)
706 if (NULL == callback) {
707 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input param is NULL");
708 return TTS_SETTING_ERROR_INVALID_PARAMETER;
711 g_bg_volume_ratio_changed_cb = callback;
712 g_bg_volume_ratio_changed_user_data = user_data;
714 return TTS_SETTING_ERROR_NONE;
717 int tts_setting_unset_background_volume_ratio_changed_cb()
719 g_bg_volume_ratio_changed_cb = NULL;
720 g_bg_volume_ratio_changed_user_data = NULL;
722 return TTS_SETTING_ERROR_NONE;