2 * Copyright (c) 2012, 2013 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 #include "ttsd_main.h"
16 #include "ttsd_dbus.h"
17 #include "ttsd_dbus_server.h"
18 #include "ttsd_server.h"
20 extern int ttsd_data_get_pid(const int uid);
23 * Dbus Client-Daemon Server
26 int ttsd_dbus_server_hello(DBusConnection* conn, DBusMessage* msg)
28 SLOG(LOG_DEBUG, get_tag(), ">>>>> TTS Hello");
31 reply = dbus_message_new_method_return(msg);
34 if (!dbus_connection_send(conn, reply, NULL)) {
35 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] Out Of Memory!");
38 dbus_connection_flush(conn);
39 dbus_message_unref(reply);
41 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] Fail to create reply message!!");
44 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
45 SLOG(LOG_DEBUG, get_tag(), " ");
50 int ttsd_dbus_server_initialize(DBusConnection* conn, DBusMessage* msg)
53 dbus_error_init(&err);
58 dbus_message_get_args(msg, &err,
59 DBUS_TYPE_INT32, &pid,
60 DBUS_TYPE_INT32, &uid,
63 SLOG(LOG_DEBUG, get_tag(), ">>>>> TTS INITIALIZE");
65 if (dbus_error_is_set(&err)) {
66 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] tts initialize : get arguments error (%s)\n", err.message);
67 dbus_error_free(&err);
68 ret = TTSD_ERROR_OPERATION_FAILED;
71 SLOG(LOG_DEBUG, get_tag(), "[IN] tts initialize : pid(%d), uid(%d) \n", pid , uid);
72 ret = ttsd_server_initialize(pid, uid);
76 reply = dbus_message_new_method_return(msg);
79 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
82 SLOG(LOG_DEBUG, get_tag(), "[OUT] tts initialize : result(%d) \n", ret);
84 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts initialize : result(%d) \n", ret);
87 if (!dbus_connection_send(conn, reply, NULL)) {
88 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts initialize : Out Of Memory!\n");
91 dbus_connection_flush(conn);
92 dbus_message_unref(reply);
94 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts initialize : fail to create reply message!!");
97 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
98 SLOG(LOG_DEBUG, get_tag(), " ");
103 int ttsd_dbus_server_finalize(DBusConnection* conn, DBusMessage* msg)
106 dbus_error_init(&err);
111 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID);
113 SLOG(LOG_DEBUG, get_tag(), ">>>>> TTS FINALIZE");
115 if (dbus_error_is_set(&err)) {
116 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] tts finalize : get arguments error (%s)\n", err.message);
117 dbus_error_free(&err);
118 ret = TTSD_ERROR_OPERATION_FAILED;
121 SLOG(LOG_DEBUG, get_tag(), "[IN] tts finalize : uid(%d) \n", uid);
122 ret = ttsd_server_finalize(uid);
126 reply = dbus_message_new_method_return(msg);
129 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
132 SLOG(LOG_DEBUG, get_tag(), "[OUT] tts finalize : result(%d) \n", ret);
134 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts finalize : result(%d) \n", ret);
137 if (!dbus_connection_send(conn, reply, NULL)) {
138 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts finalize : Out Of Memory!\n");
141 dbus_connection_flush(conn);
142 dbus_message_unref(reply);
144 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts finalize : fail to create reply message!!");
147 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
148 SLOG(LOG_DEBUG, get_tag(), " ");
153 int ttsd_dbus_server_get_support_voices(DBusConnection* conn, DBusMessage* msg)
156 dbus_error_init(&err);
160 GList* voice_list = NULL;
162 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID);
164 SLOG(LOG_DEBUG, get_tag(), ">>>>> TTS GET VOICES");
166 if (dbus_error_is_set(&err)) {
167 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] tts get supported voices : get arguments error (%s)\n", err.message);
168 dbus_error_free(&err);
169 ret = TTSD_ERROR_OPERATION_FAILED;
171 SLOG(LOG_DEBUG, get_tag(), "[IN] get supported voices : uid(%d) \n", uid );
172 ret = ttsd_server_get_support_voices(uid, &voice_list);
176 reply = dbus_message_new_method_return(msg);
179 DBusMessageIter args;
180 dbus_message_iter_init_append(reply, &args);
183 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(ret));
186 /* Append voice size */
187 int size = g_list_length(voice_list);
189 if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(size))) {
190 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts supported voices : Fail to append type \n");
191 ret = TTSD_ERROR_OPERATION_FAILED;
197 iter = g_list_first(voice_list);
199 while (NULL != iter) {
203 dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(voice->language) );
204 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(voice->type) );
206 if (NULL != voice->language)
207 g_free(voice->language);
212 voice_list = g_list_remove_link(voice_list, iter);
214 iter = g_list_first(voice_list);
217 SLOG(LOG_DEBUG, get_tag(), "[OUT] tts supported voices : result(%d) \n", ret);
219 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts supported voices : result(%d) \n", ret);
222 if (!dbus_connection_send(conn, reply, NULL)) {
223 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] error : Out Of Memory!\n");
226 dbus_connection_flush(conn);
227 dbus_message_unref(reply);
229 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts supported voices : fail to create reply message!!");
232 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
233 SLOG(LOG_DEBUG, get_tag(), " ");
238 int ttsd_dbus_server_get_current_voice(DBusConnection* conn, DBusMessage* msg)
241 dbus_error_init(&err);
248 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID);
250 SLOG(LOG_DEBUG, get_tag(), ">>>>> TTS GET DEFAULT VOICE");
252 if (dbus_error_is_set(&err)) {
253 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] tts get default voice : Get arguments error (%s)\n", err.message);
254 dbus_error_free(&err);
255 ret = TTSD_ERROR_OPERATION_FAILED;
257 SLOG(LOG_DEBUG, get_tag(), "[IN] tts get default voice : uid(%d) \n", uid);
258 ret = ttsd_server_get_current_voice(uid, &lang, &voice_type);
262 reply = dbus_message_new_method_return(msg);
266 /* Append result and voice */
267 dbus_message_append_args( reply,
268 DBUS_TYPE_INT32, &ret,
269 DBUS_TYPE_STRING, &lang,
270 DBUS_TYPE_INT32, &voice_type,
272 SLOG(LOG_DEBUG, get_tag(), "[OUT] tts default voice : lang(%s), vctype(%d)\n", lang, voice_type );
274 dbus_message_append_args( reply,
275 DBUS_TYPE_INT32, &ret,
277 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts default voice : result(%d) \n", ret);
280 if (!dbus_connection_send(conn, reply, NULL)) {
281 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts default voice : Out Of Memory!\n");
284 dbus_connection_flush(conn);
285 dbus_message_unref(reply);
287 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts default voice : fail to create reply message!!");
290 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
291 SLOG(LOG_DEBUG, get_tag(), " ");
296 int ttsd_dbus_server_add_text(DBusConnection* conn, DBusMessage* msg)
299 dbus_error_init(&err);
301 int uid, voicetype, speed, uttid;
305 dbus_message_get_args(msg, &err,
306 DBUS_TYPE_INT32, &uid,
307 DBUS_TYPE_STRING, &text,
308 DBUS_TYPE_STRING, &lang,
309 DBUS_TYPE_INT32, &voicetype,
310 DBUS_TYPE_INT32, &speed,
311 DBUS_TYPE_INT32, &uttid,
314 SLOG(LOG_DEBUG, get_tag(), ">>>>> TTS ADD TEXT");
316 if (dbus_error_is_set(&err)) {
317 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] tts add text : Get arguments error (%s)\n", err.message);
318 dbus_error_free(&err);
319 ret = TTSD_ERROR_OPERATION_FAILED;
322 SLOG(LOG_DEBUG, get_tag(), "[IN] tts add text : uid(%d), text(%s), lang(%s), type(%d), speed(%d), uttid(%d) \n",
323 uid, text, lang, voicetype, speed, uttid);
324 ret = ttsd_server_add_queue(uid, text, lang, voicetype, speed, uttid);
328 reply = dbus_message_new_method_return(msg);
331 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
334 SLOG(LOG_DEBUG, get_tag(), "[OUT] tts add text : result(%d) \n", ret);
336 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts add text : result(%d) \n", ret);
339 if (!dbus_connection_send(conn, reply, NULL)) {
340 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts add text : Out Of Memory!\n");
343 dbus_connection_flush(conn);
344 dbus_message_unref(reply);
346 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts add text : fail to create reply message!!");
349 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
350 SLOG(LOG_DEBUG, get_tag(), " ");
355 int ttsd_dbus_server_play(DBusConnection* conn, DBusMessage* msg)
358 dbus_error_init(&err);
363 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID);
365 SLOG(LOG_DEBUG, get_tag(), ">>>>> TTS PLAY");
367 if (dbus_error_is_set(&err)) {
368 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] tts play : Get arguments error (%s)\n", err.message);
369 dbus_error_free(&err);
370 ret = TTSD_ERROR_OPERATION_FAILED;
372 SLOG(LOG_DEBUG, get_tag(), "[IN] tts play : uid(%d) \n", uid );
373 ret = ttsd_server_play(uid);
377 reply = dbus_message_new_method_return(msg);
380 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
383 SLOG(LOG_DEBUG, get_tag(), "[OUT] tts play : result(%d) \n", ret);
385 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts play : result(%d) \n", ret);
388 if (!dbus_connection_send(conn, reply, NULL)) {
389 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts play : Out Of Memory!\n");
392 dbus_connection_flush(conn);
393 dbus_message_unref(reply);
395 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts play : fail to create reply message!!");
398 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
399 SLOG(LOG_DEBUG, get_tag(), " ");
404 int ttsd_dbus_server_stop(DBusConnection* conn, DBusMessage* msg)
407 dbus_error_init(&err);
411 dbus_message_get_args(msg, &err,
412 DBUS_TYPE_INT32, &uid,
415 SLOG(LOG_DEBUG, get_tag(), ">>>>> TTS STOP");
417 if (dbus_error_is_set(&err)) {
418 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] tts stop : Get arguments error (%s)\n", err.message);
419 dbus_error_free(&err);
420 ret = TTSD_ERROR_OPERATION_FAILED;
422 SLOG(LOG_DEBUG, get_tag(), "[IN] tts stop : uid(%d)\n", uid);
423 ret = ttsd_server_stop(uid);
427 reply = dbus_message_new_method_return(msg);
430 dbus_message_append_args(reply,
431 DBUS_TYPE_INT32, &ret,
435 SLOG(LOG_DEBUG, get_tag(), "[OUT] tts stop : result(%d) \n", ret);
437 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts stop : result(%d) \n", ret);
440 if (!dbus_connection_send(conn, reply, NULL)) {
441 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts stop : Out Of Memory!\n");
444 dbus_connection_flush(conn);
445 dbus_message_unref(reply);
447 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts stop : fail to create reply message!!");
450 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
451 SLOG(LOG_DEBUG, get_tag(), " ");
456 int ttsd_dbus_server_pause(DBusConnection* conn, DBusMessage* msg)
459 dbus_error_init(&err);
464 dbus_message_get_args(msg, &err,
465 DBUS_TYPE_INT32, &uid,
468 SLOG(LOG_DEBUG, get_tag(), ">>>>> TTS PAUSE");
470 if (dbus_error_is_set(&err)) {
471 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] tts pause : Get arguments error (%s)\n", err.message);
472 dbus_error_free(&err);
473 ret = TTSD_ERROR_OPERATION_FAILED;
475 SLOG(LOG_DEBUG, get_tag(), "[IN] tts pause : uid(%d)\n", uid);
476 ret = ttsd_server_pause(uid, &uttid);
480 reply = dbus_message_new_method_return(msg);
483 dbus_message_append_args(reply,
484 DBUS_TYPE_INT32, &ret,
488 SLOG(LOG_DEBUG, get_tag(), "[OUT] tts pause : result(%d) \n", ret);
490 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts pause : result(%d) \n", ret);
493 if (!dbus_connection_send(conn, reply, NULL)) {
494 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts pause : Out Of Memory!\n");
497 dbus_connection_flush(conn);
498 dbus_message_unref(reply);
500 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts pause : fail to create reply message!!");
503 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
504 SLOG(LOG_DEBUG, get_tag(), " ");
510 * Dbus Server functions for tts daemon internal
512 int ttsd_dbus_server_start_next_synthesis()
514 return ttsd_server_start_next_synthesis();
518 * Dbus Setting-Daemon Server
521 int ttsd_dbus_server_setting_initialize(DBusConnection* conn, DBusMessage* msg)
524 dbus_error_init(&err);
529 dbus_message_get_args(msg, &err,
530 DBUS_TYPE_INT32, &pid,
533 SLOG(LOG_DEBUG, get_tag(), ">>>>> SETTING INITIALIZE");
535 if (dbus_error_is_set(&err)) {
536 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] Receivce setting initialize : Get arguments error (%s)\n", err.message);
537 dbus_error_free(&err);
538 ret = TTSD_ERROR_OPERATION_FAILED;
540 SLOG(LOG_DEBUG, get_tag(), "[IN] Receivce setting initialize : pid(%d) \n", pid);
541 ret = ttsd_server_setting_initialize(pid);
545 reply = dbus_message_new_method_return(msg);
548 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
551 SLOG(LOG_DEBUG, get_tag(), "[OUT] setting initialize : result(%d) \n", ret);
553 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting initialize : result(%d) \n", ret);
556 if (!dbus_connection_send(conn, reply, NULL)) {
557 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting initialize : Out Of Memory!\n");
560 dbus_connection_flush(conn);
561 dbus_message_unref(reply);
563 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting initialize : fail to create reply message!!");
566 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
567 SLOG(LOG_DEBUG, get_tag(), " ");
572 int ttsd_dbus_server_setting_finalize(DBusConnection* conn, DBusMessage* msg)
575 dbus_error_init(&err);
580 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
582 SLOG(LOG_DEBUG, get_tag(), ">>>>> SETTING FINALIZE");
584 if (dbus_error_is_set(&err)) {
585 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] setting finalize : Get arguments error (%s)\n", err.message);
586 dbus_error_free(&err);
587 ret = TTSD_ERROR_OPERATION_FAILED;
589 SLOG(LOG_DEBUG, get_tag(), "[IN] setting finalize : pid(%d)\n", pid);
590 ret = ttsd_server_setting_finalize(pid);
594 reply = dbus_message_new_method_return(msg);
597 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
600 SLOG(LOG_DEBUG, get_tag(), "[OUT] setting finalize : result(%d) \n", ret);
602 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting finalize : result(%d) \n", ret);
605 if (!dbus_connection_send(conn, reply, NULL)) {
606 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting finalize : Out Of Memory!\n");
609 dbus_connection_flush(conn);
610 dbus_message_unref(reply);
612 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting finalize : fail to create reply message!!");
615 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
616 SLOG(LOG_DEBUG, get_tag(), " ");
621 int ttsd_dbus_server_setting_get_engine_list(DBusConnection* conn, DBusMessage* msg)
624 dbus_error_init(&err);
628 GList* engine_list = NULL;
630 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
632 SLOG(LOG_DEBUG, get_tag(), ">>>>> SETTING GET ENGINE LIST");
634 if (dbus_error_is_set(&err)) {
635 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] setting engine list : Get arguments error (%s)\n", err.message);
636 dbus_error_free(&err);
637 ret = TTSD_ERROR_OPERATION_FAILED;
639 SLOG(LOG_DEBUG, get_tag(), "[IN] setting engine list : pid(%d) \n", pid);
640 ret = ttsd_server_setting_get_engine_list(pid, &engine_list);
644 reply = dbus_message_new_method_return(msg);
647 DBusMessageIter args;
648 dbus_message_iter_init_append(reply, &args);
651 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(ret) );
655 int size = g_list_length(engine_list);
656 if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(size))) {
657 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting engine list : fail to append engine size \n");
663 iter = g_list_first(engine_list);
665 while (NULL != iter) {
668 if (NULL != engine) {
669 SLOG(LOG_DEBUG, get_tag(), "engine id : %s, engine name : %s, ug_name, : %s",
670 engine->engine_id, engine->engine_name, engine->ug_name);
672 dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(engine->engine_id) );
673 dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(engine->engine_name) );
674 dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(engine->ug_name) );
676 if (NULL != engine->engine_id)
677 g_free(engine->engine_id);
678 if (NULL != engine->engine_name)
679 g_free(engine->engine_name);
680 if (NULL != engine->ug_name)
681 g_free(engine->ug_name);
686 engine_list = g_list_remove_link(engine_list, iter);
688 iter = g_list_first(engine_list);
690 SLOG(LOG_DEBUG, get_tag(), "[OUT] setting engine list : result(%d) \n", ret);
693 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting engine list : result(%d) \n", ret);
696 if (!dbus_connection_send(conn, reply, NULL)) {
697 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting engine list : Out Of Memory!\n");
700 dbus_connection_flush(conn);
701 dbus_message_unref(reply);
703 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting engine list : fail to create reply message!!");
706 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
707 SLOG(LOG_DEBUG, get_tag(), " ");
712 int ttsd_dbus_server_setting_get_engine(DBusConnection* conn, DBusMessage* msg)
715 dbus_error_init(&err);
719 char* engine_id = NULL;
721 dbus_message_get_args(msg, &err,
722 DBUS_TYPE_INT32, &pid,
725 SLOG(LOG_DEBUG, get_tag(), ">>>>> SETTING GET ENGINE");
727 if (dbus_error_is_set(&err)) {
728 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] setting get engine : Get arguments error (%s)\n", err.message);
729 dbus_error_free(&err);
730 ret = TTSD_ERROR_OPERATION_FAILED;
732 SLOG(LOG_DEBUG, get_tag(), "[IN] setting get engine : pid(%d)\n", pid);
733 ret = ttsd_server_setting_get_current_engine(pid, &engine_id);
737 reply = dbus_message_new_method_return(msg);
741 dbus_message_append_args( reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_STRING, &engine_id, DBUS_TYPE_INVALID);
742 SLOG(LOG_DEBUG, get_tag(), "[OUT] setting get engine : result(%d), engine id(%s)\n", ret, engine_id);
744 dbus_message_append_args( reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
745 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting get engine : result(%d)", ret);
748 if (!dbus_connection_send(conn, reply, NULL)) {
749 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting get engine : Out Of Memory!\n");
752 dbus_connection_flush(conn);
753 dbus_message_unref(reply);
755 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting get engine : fail to create reply message!!");
758 if (NULL != engine_id)
761 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
762 SLOG(LOG_DEBUG, get_tag(), " ");
767 int ttsd_dbus_server_setting_set_engine(DBusConnection* conn, DBusMessage* msg)
770 dbus_error_init(&err);
776 dbus_message_get_args(msg, &err,
777 DBUS_TYPE_INT32, &pid,
778 DBUS_TYPE_STRING, &engine_id,
781 SLOG(LOG_DEBUG, get_tag(), ">>>>> SETTING SET ENGINE");
783 if (dbus_error_is_set(&err)) {
784 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] setting set engine : Get arguments error (%s)\n", err.message);
785 dbus_error_free(&err);
786 ret = TTSD_ERROR_OPERATION_FAILED;
788 SLOG(LOG_DEBUG, get_tag(), "[IN] setting set engine : pid(%d), engine id(%s)\n", pid, engine_id);
789 ret = ttsd_server_setting_set_current_engine(pid, engine_id);
793 reply = dbus_message_new_method_return(msg);
796 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
799 SLOG(LOG_DEBUG, get_tag(), "[OUT] setting set engine : result(%d) \n", ret);
801 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting set engine : result(%d) \n", ret);
804 if (!dbus_connection_send(conn, reply, NULL)) {
805 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting set engine : Out Of Memory!\n");
808 dbus_connection_flush(conn);
809 dbus_message_unref(reply);
811 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting set engine : fail to create reply message!!");
814 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
815 SLOG(LOG_DEBUG, get_tag(), " ");
820 int ttsd_dbus_server_setting_get_voice_list(DBusConnection* conn, DBusMessage* msg)
823 dbus_error_init(&err);
826 char* engine_id = NULL;
828 GList* voice_list = NULL;
830 dbus_message_get_args(msg, &err,
831 DBUS_TYPE_INT32, &pid,
834 SLOG(LOG_DEBUG, get_tag(), ">>>>> SETTING GET VOICE LIST");
836 if (dbus_error_is_set(&err)) {
837 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] setting voice list : Get arguments error (%s)\n", err.message);
838 dbus_error_free(&err);
839 ret = TTSD_ERROR_OPERATION_FAILED;
841 SLOG(LOG_DEBUG, get_tag(), "[IN] setting voice list : pid(%d)\n", pid);
842 ret = ttsd_server_setting_get_voice_list(pid, &engine_id, &voice_list);
846 reply = dbus_message_new_method_return(msg);
849 DBusMessageIter args;
851 dbus_message_iter_init_append(reply, &args);
854 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(ret) );
857 if (dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(engine_id))) {
858 /* Append voice size */
859 int size = g_list_length(voice_list);
860 if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(size))) {
861 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting voice list : Fail to append type \n");
862 ret = TTSD_ERROR_OPERATION_FAILED;
868 iter = g_list_first(voice_list);
870 while (NULL != iter) {
874 dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(voice->language) );
875 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(voice->type) );
877 if (NULL != voice->language)
878 g_free(voice->language);
883 voice_list = g_list_remove_link(voice_list, iter);
885 iter = g_list_first(voice_list);
888 SLOG(LOG_DEBUG, get_tag(), "[OUT] setting voice list : result(%d) \n", ret);
890 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting voice list : Fail to append engine_id \n");
893 if (NULL != engine_id)
896 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting voice list : result(%d) \n", ret);
899 if (!dbus_connection_send(conn, reply, NULL)) {
900 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting voice list : Out Of Memory!\n");
903 dbus_connection_flush(conn);
904 dbus_message_unref(reply);
906 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting voice list : fail to create reply message!!");
909 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
910 SLOG(LOG_DEBUG, get_tag(), " ");
915 int ttsd_dbus_server_setting_get_default_voice(DBusConnection* conn, DBusMessage* msg)
918 dbus_error_init(&err);
923 ttsp_voice_type_e type;
925 dbus_message_get_args(msg, &err,
926 DBUS_TYPE_INT32, &pid,
929 SLOG(LOG_DEBUG, get_tag(), ">>>>> SETTING GET DEFAULT VOICE");
931 if (dbus_error_is_set(&err)) {
932 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] setting get default voice : Get arguments error (%s)\n", err.message);
933 dbus_error_free(&err);
934 ret = TTSD_ERROR_OPERATION_FAILED;
936 SLOG(LOG_DEBUG, get_tag(), "[IN] setting get default voice : pid(%d)\n", pid);
937 ret = ttsd_server_setting_get_default_voice(pid, &lang, &type);
941 reply = dbus_message_new_method_return(msg);
945 dbus_message_append_args(reply,
946 DBUS_TYPE_INT32, &ret,
947 DBUS_TYPE_STRING, &lang,
948 DBUS_TYPE_INT32, &type,
950 SLOG(LOG_DEBUG, get_tag(), "[OUT] setting get default voice : result(%d), language(%s), type(%d) \n", ret, lang, type);
952 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
953 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting get default voice : result(%d) \n", ret);
956 if (!dbus_connection_send(conn, reply, NULL)) {
957 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting get default voice : Out Of Memory!\n");
960 dbus_connection_flush(conn);
961 dbus_message_unref(reply);
963 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting get default voice : fail to create reply message!!");
966 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
967 SLOG(LOG_DEBUG, get_tag(), " ");
972 int ttsd_dbus_server_setting_set_default_voice(DBusConnection* conn, DBusMessage* msg)
975 dbus_error_init(&err);
982 dbus_message_get_args(msg, &err,
983 DBUS_TYPE_INT32, &pid,
984 DBUS_TYPE_STRING, &language,
985 DBUS_TYPE_INT32, &voicetype,
988 SLOG(LOG_DEBUG, get_tag(), ">>>>> SET DEFAULT VOICE");
990 if (dbus_error_is_set(&err)) {
991 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] setting set default voice : Get arguments error (%s)\n", err.message);
992 dbus_error_free(&err);
993 ret = TTSD_ERROR_OPERATION_FAILED;
995 SLOG(LOG_DEBUG, get_tag(), "[IN] setting set default voice : pid(%d), lang(%s), type(%d)\n"
996 , pid, language, voicetype);
997 ret = ttsd_server_setting_set_default_voice(pid, language, voicetype);
1001 reply = dbus_message_new_method_return(msg);
1003 if (NULL != reply) {
1004 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
1007 SLOG(LOG_DEBUG, get_tag(), "[OUT] setting set default voice : result(%d) \n", ret);
1009 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting set default voice : result(%d) \n", ret);
1012 if (!dbus_connection_send(conn, reply, NULL)) {
1013 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting set default voice : Out Of Memory!\n");
1016 dbus_connection_flush(conn);
1017 dbus_message_unref(reply);
1019 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting set default voice : fail to create reply message!!");
1022 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
1023 SLOG(LOG_DEBUG, get_tag(), " ");
1028 int ttsd_dbus_server_setting_get_speed(DBusConnection* conn, DBusMessage* msg)
1031 dbus_error_init(&err);
1037 dbus_message_get_args(msg, &err,
1038 DBUS_TYPE_INT32, &pid,
1041 SLOG(LOG_DEBUG, get_tag(), ">>>>> SETTING GET SPEED");
1043 if (dbus_error_is_set(&err)) {
1044 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] setting get speed : Get arguments error (%s)\n", err.message);
1045 dbus_error_free(&err);
1046 ret = TTSD_ERROR_OPERATION_FAILED;
1048 SLOG(LOG_DEBUG, get_tag(), "[IN] setting get default speed : pid(%d)\n", pid);
1049 ret = ttsd_server_setting_get_default_speed(pid, &speed);
1053 reply = dbus_message_new_method_return(msg);
1055 if (NULL != reply) {
1057 dbus_message_append_args( reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INT32, &speed, DBUS_TYPE_INVALID);
1058 SLOG(LOG_DEBUG, get_tag(), "[OUT] setting get default speed : result(%d), speed(%d) \n", ret, speed);
1060 dbus_message_append_args( reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
1061 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting get default speed : result(%d) \n", ret);
1064 if (!dbus_connection_send(conn, reply, NULL)) {
1065 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting get default speed : Out Of Memory!\n");
1068 dbus_connection_flush(conn);
1069 dbus_message_unref(reply);
1071 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting get default speed : fail to create reply message!!");
1074 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
1075 SLOG(LOG_DEBUG, get_tag(), " ");
1080 int ttsd_dbus_server_setting_set_speed(DBusConnection* conn, DBusMessage* msg)
1083 dbus_error_init(&err);
1089 dbus_message_get_args(msg, &err,
1090 DBUS_TYPE_INT32, &pid,
1091 DBUS_TYPE_INT32, &speed,
1094 SLOG(LOG_DEBUG, get_tag(), ">>>>> SETTING GET SPEED");
1096 if (dbus_error_is_set(&err)) {
1097 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] setting set default speed : Get arguments error (%s)\n", err.message);
1098 dbus_error_free(&err);
1099 ret = TTSD_ERROR_OPERATION_FAILED;
1101 SLOG(LOG_DEBUG, get_tag(), "[IN] setting set default speed : pid(%d), speed(%d)\n", pid, speed);
1102 ret = ttsd_server_setting_set_default_speed(pid, speed);
1106 reply = dbus_message_new_method_return(msg);
1108 if (NULL != reply) {
1109 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
1112 SLOG(LOG_DEBUG, get_tag(), "[OUT] setting set default speed : result(%d)", ret);
1114 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting set default speed : result(%d)", ret);
1117 if (!dbus_connection_send(conn, reply, NULL)) {
1118 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting set default speed : Out Of Memory!\n");
1121 dbus_connection_flush(conn);
1122 dbus_message_unref(reply);
1124 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting set default speed : fail to create reply message!!");
1127 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
1128 SLOG(LOG_DEBUG, get_tag(), " ");
1133 int ttsd_dbus_server_setting_get_engine_setting(DBusConnection* conn, DBusMessage* msg)
1136 dbus_error_init(&err);
1141 GList* engine_setting_list = NULL;
1143 dbus_message_get_args(msg, &err,
1144 DBUS_TYPE_INT32, &pid,
1147 SLOG(LOG_DEBUG, get_tag(), ">>>>> SETTING GET ENGINE SETTING");
1149 if (dbus_error_is_set(&err)) {
1150 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] setting get engine option : Get arguments error (%s)\n", err.message);
1151 dbus_error_free(&err);
1152 ret = TTSD_ERROR_OPERATION_FAILED;
1154 SLOG(LOG_DEBUG, get_tag(), "[IN] setting get engine option : pid(%d)", pid);
1155 ret = ttsd_server_setting_get_engine_setting(pid, &engine_id, &engine_setting_list);
1159 reply = dbus_message_new_method_return(msg);
1161 if (NULL != reply) {
1162 DBusMessageIter args;
1163 dbus_message_iter_init_append(reply, &args);
1166 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(ret) );
1169 if (dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(engine_id))) {
1170 /* Append voice size */
1171 int size = g_list_length(engine_setting_list);
1172 if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(size))) {
1173 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting voice list : Fail to append type \n");
1174 ret = TTSD_ERROR_OPERATION_FAILED;
1178 engine_setting_s* setting;
1180 iter = g_list_first(engine_setting_list);
1182 while (NULL != iter) {
1183 setting = iter->data;
1185 if (NULL != setting) {
1186 dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(setting->key) );
1187 dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(setting->value) );
1189 if (NULL != setting->key)
1190 g_free(setting->key);
1191 if (NULL != setting->value)
1192 g_free(setting->value);
1197 engine_setting_list = g_list_remove_link(engine_setting_list, iter);
1199 iter = g_list_first(engine_setting_list);
1202 SLOG(LOG_DEBUG, get_tag(), "[OUT] setting engine setting list : result(%d) \n", ret);
1204 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting voice list : Fail to append engine_id \n");
1207 if (NULL != engine_id)
1210 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting get engine option : result(%d) \n", ret);
1213 if (!dbus_connection_send(conn, reply, NULL)) {
1214 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting get engine option : Out Of Memory!\n");
1217 dbus_connection_flush(conn);
1218 dbus_message_unref(reply);
1220 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting get engine option : fail to create reply message!!");
1223 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
1224 SLOG(LOG_DEBUG, get_tag(), " ");
1229 int ttsd_dbus_server_setting_set_engine_setting(DBusConnection* conn, DBusMessage* msg)
1232 dbus_error_init(&err);
1239 dbus_message_get_args(msg, &err,
1240 DBUS_TYPE_INT32, &pid,
1241 DBUS_TYPE_STRING, &key,
1242 DBUS_TYPE_STRING, &value,
1245 SLOG(LOG_DEBUG, get_tag(), ">>>>> SETTING SET ENGINE SETTING");
1247 if (dbus_error_is_set(&err)) {
1248 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] setting set engine option : Get arguments error (%s)\n", err.message);
1249 dbus_error_free(&err);
1250 ret = TTSD_ERROR_OPERATION_FAILED;
1252 SLOG(LOG_DEBUG, get_tag(), "[IN] setting set engine option : pid(%d), key(%s), value(%s)\n", pid, key, value);
1253 ret = ttsd_server_setting_set_engine_setting(pid, key, value);
1257 reply = dbus_message_new_method_return(msg);
1259 if (NULL != reply) {
1260 dbus_message_append_args( reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
1263 SLOG(LOG_DEBUG, get_tag(), "[OUT] setting set engine option : result(%d)", ret);
1265 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting set engine option : result(%d)", ret);
1268 if (!dbus_connection_send(conn, reply, NULL)) {
1269 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting set engine option : Out Of Memory!\n");
1271 dbus_connection_flush(conn);
1272 dbus_message_unref(reply);
1274 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting set engine option : fail to create reply message!!");
1277 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
1278 SLOG(LOG_DEBUG, get_tag(), " ");