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);
123 ret = ttsd_server_finalize(uid);
127 reply = dbus_message_new_method_return(msg);
130 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
133 SLOG(LOG_DEBUG, get_tag(), "[OUT] tts finalize : result(%d) \n", ret);
135 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts finalize : result(%d) \n", ret);
138 if (!dbus_connection_send(conn, reply, NULL)) {
139 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts finalize : Out Of Memory!\n");
142 dbus_connection_flush(conn);
143 dbus_message_unref(reply);
145 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts finalize : fail to create reply message!!");
148 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
149 SLOG(LOG_DEBUG, get_tag(), " ");
154 int ttsd_dbus_server_get_support_voices(DBusConnection* conn, DBusMessage* msg)
157 dbus_error_init(&err);
161 GList* voice_list = NULL;
163 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID);
165 SLOG(LOG_DEBUG, get_tag(), ">>>>> TTS GET VOICES");
167 if (dbus_error_is_set(&err)) {
168 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] tts get supported voices : get arguments error (%s)\n", err.message);
169 dbus_error_free(&err);
170 ret = TTSD_ERROR_OPERATION_FAILED;
172 SLOG(LOG_DEBUG, get_tag(), "[IN] get supported voices : uid(%d) \n", uid );
173 ret = ttsd_server_get_support_voices(uid, &voice_list);
177 reply = dbus_message_new_method_return(msg);
180 DBusMessageIter args;
181 dbus_message_iter_init_append(reply, &args);
184 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(ret));
187 /* Append voice size */
188 int size = g_list_length(voice_list);
190 if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(size))) {
191 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts supported voices : Fail to append type \n");
192 ret = TTSD_ERROR_OPERATION_FAILED;
198 iter = g_list_first(voice_list);
200 while (NULL != iter) {
204 dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(voice->language) );
205 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(voice->type) );
207 if (NULL != voice->language)
208 g_free(voice->language);
213 voice_list = g_list_remove_link(voice_list, iter);
215 iter = g_list_first(voice_list);
218 SLOG(LOG_DEBUG, get_tag(), "[OUT] tts supported voices : result(%d) \n", ret);
220 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts supported voices : result(%d) \n", ret);
223 if (!dbus_connection_send(conn, reply, NULL)) {
224 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] error : Out Of Memory!\n");
227 dbus_connection_flush(conn);
228 dbus_message_unref(reply);
230 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts supported voices : fail to create reply message!!");
233 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
234 SLOG(LOG_DEBUG, get_tag(), " ");
239 int ttsd_dbus_server_get_current_voice(DBusConnection* conn, DBusMessage* msg)
242 dbus_error_init(&err);
249 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID);
251 SLOG(LOG_DEBUG, get_tag(), ">>>>> TTS GET DEFAULT VOICE");
253 if (dbus_error_is_set(&err)) {
254 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] tts get default voice : Get arguments error (%s)\n", err.message);
255 dbus_error_free(&err);
256 ret = TTSD_ERROR_OPERATION_FAILED;
258 SLOG(LOG_DEBUG, get_tag(), "[IN] tts get default voice : uid(%d) \n", uid);
259 ret = ttsd_server_get_current_voice(uid, &lang, &voice_type);
263 reply = dbus_message_new_method_return(msg);
267 /* Append result and voice */
268 dbus_message_append_args( reply,
269 DBUS_TYPE_INT32, &ret,
270 DBUS_TYPE_STRING, &lang,
271 DBUS_TYPE_INT32, &voice_type,
273 SLOG(LOG_DEBUG, get_tag(), "[OUT] tts default voice : lang(%s), vctype(%d)\n", lang, voice_type );
275 dbus_message_append_args( reply,
276 DBUS_TYPE_INT32, &ret,
278 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts default voice : result(%d) \n", ret);
281 if (!dbus_connection_send(conn, reply, NULL)) {
282 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts default voice : Out Of Memory!\n");
285 dbus_connection_flush(conn);
286 dbus_message_unref(reply);
288 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts default voice : fail to create reply message!!");
291 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
292 SLOG(LOG_DEBUG, get_tag(), " ");
297 int ttsd_dbus_server_add_text(DBusConnection* conn, DBusMessage* msg)
300 dbus_error_init(&err);
302 int uid, voicetype, speed, uttid;
306 dbus_message_get_args(msg, &err,
307 DBUS_TYPE_INT32, &uid,
308 DBUS_TYPE_STRING, &text,
309 DBUS_TYPE_STRING, &lang,
310 DBUS_TYPE_INT32, &voicetype,
311 DBUS_TYPE_INT32, &speed,
312 DBUS_TYPE_INT32, &uttid,
315 SLOG(LOG_DEBUG, get_tag(), ">>>>> TTS ADD TEXT");
317 if (dbus_error_is_set(&err)) {
318 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] tts add text : Get arguments error (%s)\n", err.message);
319 dbus_error_free(&err);
320 ret = TTSD_ERROR_OPERATION_FAILED;
323 SLOG(LOG_DEBUG, get_tag(), "[IN] tts add text : uid(%d), text(%s), lang(%s), type(%d), speed(%d), uttid(%d) \n",
324 uid, text, lang, voicetype, speed, uttid);
325 ret = ttsd_server_add_queue(uid, text, lang, voicetype, speed, uttid);
329 reply = dbus_message_new_method_return(msg);
332 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
335 SLOG(LOG_DEBUG, get_tag(), "[OUT] tts add text : result(%d) \n", ret);
337 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts add text : result(%d) \n", ret);
340 if (!dbus_connection_send(conn, reply, NULL)) {
341 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts add text : Out Of Memory!\n");
344 dbus_connection_flush(conn);
345 dbus_message_unref(reply);
347 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts add text : fail to create reply message!!");
350 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
351 SLOG(LOG_DEBUG, get_tag(), " ");
356 int ttsd_dbus_server_play(DBusConnection* conn, DBusMessage* msg)
359 dbus_error_init(&err);
364 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID);
366 SLOG(LOG_DEBUG, get_tag(), ">>>>> TTS PLAY");
368 if (dbus_error_is_set(&err)) {
369 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] tts play : Get arguments error (%s)\n", err.message);
370 dbus_error_free(&err);
371 ret = TTSD_ERROR_OPERATION_FAILED;
373 SLOG(LOG_DEBUG, get_tag(), "[IN] tts play : uid(%d) \n", uid );
374 ret = ttsd_server_play(uid);
378 reply = dbus_message_new_method_return(msg);
381 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
384 SLOG(LOG_DEBUG, get_tag(), "[OUT] tts play : result(%d) \n", ret);
386 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts play : result(%d) \n", ret);
389 if (!dbus_connection_send(conn, reply, NULL)) {
390 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts play : Out Of Memory!\n");
393 dbus_connection_flush(conn);
394 dbus_message_unref(reply);
396 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts play : fail to create reply message!!");
399 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
400 SLOG(LOG_DEBUG, get_tag(), " ");
405 int ttsd_dbus_server_stop(DBusConnection* conn, DBusMessage* msg)
408 dbus_error_init(&err);
412 dbus_message_get_args(msg, &err,
413 DBUS_TYPE_INT32, &uid,
416 SLOG(LOG_DEBUG, get_tag(), ">>>>> TTS STOP");
418 if (dbus_error_is_set(&err)) {
419 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] tts stop : Get arguments error (%s)\n", err.message);
420 dbus_error_free(&err);
421 ret = TTSD_ERROR_OPERATION_FAILED;
423 SLOG(LOG_DEBUG, get_tag(), "[IN] tts stop : uid(%d)\n", uid);
424 ret = ttsd_server_stop(uid);
428 reply = dbus_message_new_method_return(msg);
431 dbus_message_append_args(reply,
432 DBUS_TYPE_INT32, &ret,
436 SLOG(LOG_DEBUG, get_tag(), "[OUT] tts stop : result(%d) \n", ret);
438 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts stop : result(%d) \n", ret);
441 if (!dbus_connection_send(conn, reply, NULL)) {
442 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts stop : Out Of Memory!\n");
445 dbus_connection_flush(conn);
446 dbus_message_unref(reply);
448 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts stop : fail to create reply message!!");
451 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
452 SLOG(LOG_DEBUG, get_tag(), " ");
457 int ttsd_dbus_server_pause(DBusConnection* conn, DBusMessage* msg)
460 dbus_error_init(&err);
465 dbus_message_get_args(msg, &err,
466 DBUS_TYPE_INT32, &uid,
469 SLOG(LOG_DEBUG, get_tag(), ">>>>> TTS PAUSE");
471 if (dbus_error_is_set(&err)) {
472 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] tts pause : Get arguments error (%s)\n", err.message);
473 dbus_error_free(&err);
474 ret = TTSD_ERROR_OPERATION_FAILED;
476 SLOG(LOG_DEBUG, get_tag(), "[IN] tts pause : uid(%d)\n", uid);
477 ret = ttsd_server_pause(uid, &uttid);
481 reply = dbus_message_new_method_return(msg);
484 dbus_message_append_args(reply,
485 DBUS_TYPE_INT32, &ret,
489 SLOG(LOG_DEBUG, get_tag(), "[OUT] tts pause : result(%d) \n", ret);
491 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts pause : result(%d) \n", ret);
494 if (!dbus_connection_send(conn, reply, NULL)) {
495 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts pause : Out Of Memory!\n");
498 dbus_connection_flush(conn);
499 dbus_message_unref(reply);
501 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] tts pause : fail to create reply message!!");
504 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
505 SLOG(LOG_DEBUG, get_tag(), " ");
512 * Dbus Server functions for tts daemon internal
514 int ttsd_dbus_server_start_next_synthesis()
516 return ttsd_server_start_next_synthesis();
521 * Dbus Setting-Daemon Server
524 int ttsd_dbus_server_setting_initialize(DBusConnection* conn, DBusMessage* msg)
527 dbus_error_init(&err);
532 dbus_message_get_args(msg, &err,
533 DBUS_TYPE_INT32, &pid,
536 SLOG(LOG_DEBUG, get_tag(), ">>>>> SETTING INITIALIZE");
538 if (dbus_error_is_set(&err)) {
539 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] Receivce setting initialize : Get arguments error (%s)\n", err.message);
540 dbus_error_free(&err);
541 ret = TTSD_ERROR_OPERATION_FAILED;
543 SLOG(LOG_DEBUG, get_tag(), "[IN] Receivce setting initialize : pid(%d) \n", pid);
544 ret = ttsd_server_setting_initialize(pid);
548 reply = dbus_message_new_method_return(msg);
551 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
554 SLOG(LOG_DEBUG, get_tag(), "[OUT] setting initialize : result(%d) \n", ret);
556 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting initialize : result(%d) \n", ret);
559 if (!dbus_connection_send(conn, reply, NULL)) {
560 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting initialize : Out Of Memory!\n");
563 dbus_connection_flush(conn);
564 dbus_message_unref(reply);
566 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting initialize : fail to create reply message!!");
569 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
570 SLOG(LOG_DEBUG, get_tag(), " ");
575 int ttsd_dbus_server_setting_finalize(DBusConnection* conn, DBusMessage* msg)
578 dbus_error_init(&err);
583 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
585 SLOG(LOG_DEBUG, get_tag(), ">>>>> SETTING FINALIZE");
587 if (dbus_error_is_set(&err)) {
588 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] setting finalize : Get arguments error (%s)\n", err.message);
589 dbus_error_free(&err);
590 ret = TTSD_ERROR_OPERATION_FAILED;
592 SLOG(LOG_DEBUG, get_tag(), "[IN] setting finalize : pid(%d)\n", pid);
593 ret = ttsd_server_setting_finalize(pid);
597 reply = dbus_message_new_method_return(msg);
600 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
603 SLOG(LOG_DEBUG, get_tag(), "[OUT] setting finalize : result(%d) \n", ret);
605 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting finalize : result(%d) \n", ret);
608 if (!dbus_connection_send(conn, reply, NULL)) {
609 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting finalize : Out Of Memory!\n");
612 dbus_connection_flush(conn);
613 dbus_message_unref(reply);
615 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting finalize : fail to create reply message!!");
618 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
619 SLOG(LOG_DEBUG, get_tag(), " ");
624 int ttsd_dbus_server_setting_get_engine_list(DBusConnection* conn, DBusMessage* msg)
627 dbus_error_init(&err);
631 GList* engine_list = NULL;
633 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
635 SLOG(LOG_DEBUG, get_tag(), ">>>>> SETTING GET ENGINE LIST");
637 if (dbus_error_is_set(&err)) {
638 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] setting engine list : Get arguments error (%s)\n", err.message);
639 dbus_error_free(&err);
640 ret = TTSD_ERROR_OPERATION_FAILED;
642 SLOG(LOG_DEBUG, get_tag(), "[IN] setting engine list : pid(%d) \n", pid);
643 ret = ttsd_server_setting_get_engine_list(pid, &engine_list);
647 reply = dbus_message_new_method_return(msg);
650 DBusMessageIter args;
651 dbus_message_iter_init_append(reply, &args);
654 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(ret) );
658 int size = g_list_length(engine_list);
659 if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(size))) {
660 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting engine list : fail to append engine size \n");
666 iter = g_list_first(engine_list);
668 while (NULL != iter) {
671 if (NULL != engine) {
672 SLOG(LOG_DEBUG, get_tag(), "engine id : %s, engine name : %s, ug_name, : %s",
673 engine->engine_id, engine->engine_name, engine->ug_name);
675 dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(engine->engine_id) );
676 dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(engine->engine_name) );
677 dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(engine->ug_name) );
679 if (NULL != engine->engine_id)
680 g_free(engine->engine_id);
681 if (NULL != engine->engine_name)
682 g_free(engine->engine_name);
683 if (NULL != engine->ug_name)
684 g_free(engine->ug_name);
689 engine_list = g_list_remove_link(engine_list, iter);
691 iter = g_list_first(engine_list);
693 SLOG(LOG_DEBUG, get_tag(), "[OUT] setting engine list : result(%d) \n", ret);
696 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting engine list : result(%d) \n", ret);
699 if (!dbus_connection_send(conn, reply, NULL)) {
700 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting engine list : Out Of Memory!\n");
703 dbus_connection_flush(conn);
704 dbus_message_unref(reply);
706 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting engine list : fail to create reply message!!");
709 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
710 SLOG(LOG_DEBUG, get_tag(), " ");
715 int ttsd_dbus_server_setting_get_engine(DBusConnection* conn, DBusMessage* msg)
718 dbus_error_init(&err);
722 char* engine_id = NULL;
724 dbus_message_get_args(msg, &err,
725 DBUS_TYPE_INT32, &pid,
728 SLOG(LOG_DEBUG, get_tag(), ">>>>> SETTING GET ENGINE");
730 if (dbus_error_is_set(&err)) {
731 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] setting get engine : Get arguments error (%s)\n", err.message);
732 dbus_error_free(&err);
733 ret = TTSD_ERROR_OPERATION_FAILED;
735 SLOG(LOG_DEBUG, get_tag(), "[IN] setting get engine : pid(%d)\n", pid);
736 ret = ttsd_server_setting_get_current_engine(pid, &engine_id);
740 reply = dbus_message_new_method_return(msg);
744 dbus_message_append_args( reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_STRING, &engine_id, DBUS_TYPE_INVALID);
745 SLOG(LOG_DEBUG, get_tag(), "[OUT] setting get engine : result(%d), engine id(%s)\n", ret, engine_id);
747 dbus_message_append_args( reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
748 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting get engine : result(%d)", ret);
751 if (!dbus_connection_send(conn, reply, NULL)) {
752 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting get engine : Out Of Memory!\n");
755 dbus_connection_flush(conn);
756 dbus_message_unref(reply);
758 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting get engine : fail to create reply message!!");
761 if (NULL != engine_id)
764 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
765 SLOG(LOG_DEBUG, get_tag(), " ");
770 int ttsd_dbus_server_setting_set_engine(DBusConnection* conn, DBusMessage* msg)
773 dbus_error_init(&err);
779 dbus_message_get_args(msg, &err,
780 DBUS_TYPE_INT32, &pid,
781 DBUS_TYPE_STRING, &engine_id,
784 SLOG(LOG_DEBUG, get_tag(), ">>>>> SETTING SET ENGINE");
786 if (dbus_error_is_set(&err)) {
787 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] setting set engine : Get arguments error (%s)\n", err.message);
788 dbus_error_free(&err);
789 ret = TTSD_ERROR_OPERATION_FAILED;
791 SLOG(LOG_DEBUG, get_tag(), "[IN] setting set engine : pid(%d), engine id(%s)\n", pid, engine_id);
792 ret = ttsd_server_setting_set_current_engine(pid, engine_id);
796 reply = dbus_message_new_method_return(msg);
799 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
802 SLOG(LOG_DEBUG, get_tag(), "[OUT] setting set engine : result(%d) \n", ret);
804 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting set engine : result(%d) \n", ret);
807 if (!dbus_connection_send(conn, reply, NULL)) {
808 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting set engine : Out Of Memory!\n");
811 dbus_connection_flush(conn);
812 dbus_message_unref(reply);
814 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting set engine : fail to create reply message!!");
817 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
818 SLOG(LOG_DEBUG, get_tag(), " ");
823 int ttsd_dbus_server_setting_get_voice_list(DBusConnection* conn, DBusMessage* msg)
826 dbus_error_init(&err);
829 char* engine_id = NULL;
831 GList* voice_list = NULL;
833 dbus_message_get_args(msg, &err,
834 DBUS_TYPE_INT32, &pid,
837 SLOG(LOG_DEBUG, get_tag(), ">>>>> SETTING GET VOICE LIST");
839 if (dbus_error_is_set(&err)) {
840 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] setting voice list : Get arguments error (%s)\n", err.message);
841 dbus_error_free(&err);
842 ret = TTSD_ERROR_OPERATION_FAILED;
844 SLOG(LOG_DEBUG, get_tag(), "[IN] setting voice list : pid(%d)\n", pid);
845 ret = ttsd_server_setting_get_voice_list(pid, &engine_id, &voice_list);
849 reply = dbus_message_new_method_return(msg);
852 DBusMessageIter args;
854 dbus_message_iter_init_append(reply, &args);
857 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(ret) );
860 if (dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(engine_id))) {
861 /* Append voice size */
862 int size = g_list_length(voice_list);
863 if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(size))) {
864 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting voice list : Fail to append type \n");
865 ret = TTSD_ERROR_OPERATION_FAILED;
871 iter = g_list_first(voice_list);
873 while (NULL != iter) {
877 dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(voice->language) );
878 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(voice->type) );
880 if (NULL != voice->language)
881 g_free(voice->language);
886 voice_list = g_list_remove_link(voice_list, iter);
888 iter = g_list_first(voice_list);
891 SLOG(LOG_DEBUG, get_tag(), "[OUT] setting voice list : result(%d) \n", ret);
893 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting voice list : Fail to append engine_id \n");
896 if (NULL != engine_id)
899 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting voice list : result(%d) \n", ret);
902 if (!dbus_connection_send(conn, reply, NULL)) {
903 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting voice list : Out Of Memory!\n");
906 dbus_connection_flush(conn);
907 dbus_message_unref(reply);
909 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting voice list : fail to create reply message!!");
912 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
913 SLOG(LOG_DEBUG, get_tag(), " ");
918 int ttsd_dbus_server_setting_get_default_voice(DBusConnection* conn, DBusMessage* msg)
921 dbus_error_init(&err);
926 ttsp_voice_type_e type;
928 dbus_message_get_args(msg, &err,
929 DBUS_TYPE_INT32, &pid,
932 SLOG(LOG_DEBUG, get_tag(), ">>>>> SETTING GET DEFAULT VOICE");
934 if (dbus_error_is_set(&err)) {
935 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] setting get default voice : Get arguments error (%s)\n", err.message);
936 dbus_error_free(&err);
937 ret = TTSD_ERROR_OPERATION_FAILED;
939 SLOG(LOG_DEBUG, get_tag(), "[IN] setting get default voice : pid(%d)\n", pid);
940 ret = ttsd_server_setting_get_default_voice(pid, &lang, &type);
944 reply = dbus_message_new_method_return(msg);
948 dbus_message_append_args(reply,
949 DBUS_TYPE_INT32, &ret,
950 DBUS_TYPE_STRING, &lang,
951 DBUS_TYPE_INT32, &type,
953 SLOG(LOG_DEBUG, get_tag(), "[OUT] setting get default voice : result(%d), language(%s), type(%d) \n", ret, lang, type);
955 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
956 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting get default voice : result(%d) \n", ret);
959 if (!dbus_connection_send(conn, reply, NULL)) {
960 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting get default voice : Out Of Memory!\n");
963 dbus_connection_flush(conn);
964 dbus_message_unref(reply);
966 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting get default voice : fail to create reply message!!");
969 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
970 SLOG(LOG_DEBUG, get_tag(), " ");
975 int ttsd_dbus_server_setting_set_default_voice(DBusConnection* conn, DBusMessage* msg)
978 dbus_error_init(&err);
985 dbus_message_get_args(msg, &err,
986 DBUS_TYPE_INT32, &pid,
987 DBUS_TYPE_STRING, &language,
988 DBUS_TYPE_INT32, &voicetype,
991 SLOG(LOG_DEBUG, get_tag(), ">>>>> SET DEFAULT VOICE");
993 if (dbus_error_is_set(&err)) {
994 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] setting set default voice : Get arguments error (%s)\n", err.message);
995 dbus_error_free(&err);
996 ret = TTSD_ERROR_OPERATION_FAILED;
998 SLOG(LOG_DEBUG, get_tag(), "[IN] setting set default voice : pid(%d), lang(%s), type(%d)\n"
999 , pid, language, voicetype);
1000 ret = ttsd_server_setting_set_default_voice(pid, language, voicetype);
1004 reply = dbus_message_new_method_return(msg);
1006 if (NULL != reply) {
1007 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
1010 SLOG(LOG_DEBUG, get_tag(), "[OUT] setting set default voice : result(%d) \n", ret);
1012 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting set default voice : result(%d) \n", ret);
1015 if (!dbus_connection_send(conn, reply, NULL)) {
1016 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting set default voice : Out Of Memory!\n");
1019 dbus_connection_flush(conn);
1020 dbus_message_unref(reply);
1022 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting set default voice : fail to create reply message!!");
1025 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
1026 SLOG(LOG_DEBUG, get_tag(), " ");
1031 int ttsd_dbus_server_setting_get_speed(DBusConnection* conn, DBusMessage* msg)
1034 dbus_error_init(&err);
1040 dbus_message_get_args(msg, &err,
1041 DBUS_TYPE_INT32, &pid,
1044 SLOG(LOG_DEBUG, get_tag(), ">>>>> SETTING GET SPEED");
1046 if (dbus_error_is_set(&err)) {
1047 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] setting get speed : Get arguments error (%s)\n", err.message);
1048 dbus_error_free(&err);
1049 ret = TTSD_ERROR_OPERATION_FAILED;
1051 SLOG(LOG_DEBUG, get_tag(), "[IN] setting get default speed : pid(%d)\n", pid);
1052 ret = ttsd_server_setting_get_default_speed(pid, &speed);
1056 reply = dbus_message_new_method_return(msg);
1058 if (NULL != reply) {
1060 dbus_message_append_args( reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INT32, &speed, DBUS_TYPE_INVALID);
1061 SLOG(LOG_DEBUG, get_tag(), "[OUT] setting get default speed : result(%d), speed(%d) \n", ret, speed);
1063 dbus_message_append_args( reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
1064 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting get default speed : result(%d) \n", ret);
1067 if (!dbus_connection_send(conn, reply, NULL)) {
1068 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting get default speed : Out Of Memory!\n");
1071 dbus_connection_flush(conn);
1072 dbus_message_unref(reply);
1074 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting get default speed : fail to create reply message!!");
1077 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
1078 SLOG(LOG_DEBUG, get_tag(), " ");
1083 int ttsd_dbus_server_setting_set_speed(DBusConnection* conn, DBusMessage* msg)
1086 dbus_error_init(&err);
1092 dbus_message_get_args(msg, &err,
1093 DBUS_TYPE_INT32, &pid,
1094 DBUS_TYPE_INT32, &speed,
1097 SLOG(LOG_DEBUG, get_tag(), ">>>>> SETTING GET SPEED");
1099 if (dbus_error_is_set(&err)) {
1100 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] setting set default speed : Get arguments error (%s)\n", err.message);
1101 dbus_error_free(&err);
1102 ret = TTSD_ERROR_OPERATION_FAILED;
1104 SLOG(LOG_DEBUG, get_tag(), "[IN] setting set default speed : pid(%d), speed(%d)\n", pid, speed);
1105 ret = ttsd_server_setting_set_default_speed(pid, speed);
1109 reply = dbus_message_new_method_return(msg);
1111 if (NULL != reply) {
1112 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
1115 SLOG(LOG_DEBUG, get_tag(), "[OUT] setting set default speed : result(%d)", ret);
1117 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting set default speed : result(%d)", ret);
1120 if (!dbus_connection_send(conn, reply, NULL)) {
1121 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting set default speed : Out Of Memory!\n");
1124 dbus_connection_flush(conn);
1125 dbus_message_unref(reply);
1127 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting set default speed : fail to create reply message!!");
1130 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
1131 SLOG(LOG_DEBUG, get_tag(), " ");
1136 int ttsd_dbus_server_setting_get_engine_setting(DBusConnection* conn, DBusMessage* msg)
1139 dbus_error_init(&err);
1144 GList* engine_setting_list = NULL;
1146 dbus_message_get_args(msg, &err,
1147 DBUS_TYPE_INT32, &pid,
1150 SLOG(LOG_DEBUG, get_tag(), ">>>>> SETTING GET ENGINE SETTING");
1152 if (dbus_error_is_set(&err)) {
1153 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] setting get engine option : Get arguments error (%s)\n", err.message);
1154 dbus_error_free(&err);
1155 ret = TTSD_ERROR_OPERATION_FAILED;
1157 SLOG(LOG_DEBUG, get_tag(), "[IN] setting get engine option : pid(%d)", pid);
1158 ret = ttsd_server_setting_get_engine_setting(pid, &engine_id, &engine_setting_list);
1162 reply = dbus_message_new_method_return(msg);
1164 if (NULL != reply) {
1165 DBusMessageIter args;
1166 dbus_message_iter_init_append(reply, &args);
1169 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(ret) );
1172 if (dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(engine_id))) {
1173 /* Append voice size */
1174 int size = g_list_length(engine_setting_list);
1175 if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(size))) {
1176 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting voice list : Fail to append type \n");
1177 ret = TTSD_ERROR_OPERATION_FAILED;
1181 engine_setting_s* setting;
1183 iter = g_list_first(engine_setting_list);
1185 while (NULL != iter) {
1186 setting = iter->data;
1188 if (NULL != setting) {
1189 dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(setting->key) );
1190 dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(setting->value) );
1192 if (NULL != setting->key)
1193 g_free(setting->key);
1194 if (NULL != setting->value)
1195 g_free(setting->value);
1200 engine_setting_list = g_list_remove_link(engine_setting_list, iter);
1202 iter = g_list_first(engine_setting_list);
1205 SLOG(LOG_DEBUG, get_tag(), "[OUT] setting engine setting list : result(%d) \n", ret);
1207 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting voice list : Fail to append engine_id \n");
1210 if (NULL != engine_id)
1213 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting get engine option : result(%d) \n", ret);
1216 if (!dbus_connection_send(conn, reply, NULL)) {
1217 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting get engine option : Out Of Memory!\n");
1220 dbus_connection_flush(conn);
1221 dbus_message_unref(reply);
1223 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting get engine option : fail to create reply message!!");
1226 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
1227 SLOG(LOG_DEBUG, get_tag(), " ");
1232 int ttsd_dbus_server_setting_set_engine_setting(DBusConnection* conn, DBusMessage* msg)
1235 dbus_error_init(&err);
1242 dbus_message_get_args(msg, &err,
1243 DBUS_TYPE_INT32, &pid,
1244 DBUS_TYPE_STRING, &key,
1245 DBUS_TYPE_STRING, &value,
1248 SLOG(LOG_DEBUG, get_tag(), ">>>>> SETTING SET ENGINE SETTING");
1250 if (dbus_error_is_set(&err)) {
1251 SLOG(LOG_ERROR, get_tag(), "[IN ERROR] setting set engine option : Get arguments error (%s)\n", err.message);
1252 dbus_error_free(&err);
1253 ret = TTSD_ERROR_OPERATION_FAILED;
1255 SLOG(LOG_DEBUG, get_tag(), "[IN] setting set engine option : pid(%d), key(%s), value(%s)\n", pid, key, value);
1256 ret = ttsd_server_setting_set_engine_setting(pid, key, value);
1260 reply = dbus_message_new_method_return(msg);
1262 if (NULL != reply) {
1263 dbus_message_append_args( reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
1266 SLOG(LOG_DEBUG, get_tag(), "[OUT] setting set engine option : result(%d)", ret);
1268 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting set engine option : result(%d)", ret);
1271 if (!dbus_connection_send(conn, reply, NULL)) {
1272 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting set engine option : Out Of Memory!\n");
1274 dbus_connection_flush(conn);
1275 dbus_message_unref(reply);
1277 SLOG(LOG_ERROR, get_tag(), "[OUT ERROR] setting set engine option : fail to create reply message!!");
1280 SLOG(LOG_DEBUG, get_tag(), "<<<<<");
1281 SLOG(LOG_DEBUG, get_tag(), " ");