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, TAG_TTSD, ">>>>> TTS Hello");
31 reply = dbus_message_new_method_return(msg);
34 if (!dbus_connection_send(conn, reply, NULL)) {
35 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] Out Of Memory!");
38 dbus_connection_flush(conn);
39 dbus_message_unref(reply);
41 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] Fail to create reply message!!");
44 SLOG(LOG_DEBUG, TAG_TTSD, "<<<<<");
45 SLOG(LOG_DEBUG, TAG_TTSD, " ");
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, TAG_TTSD, ">>>>> TTS INITIALIZE");
65 if (dbus_error_is_set(&err)) {
66 SLOG(LOG_ERROR, TAG_TTSD, "[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, TAG_TTSD, "[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, TAG_TTSD, "[OUT] tts initialize : result(%d) \n", ret);
84 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] tts initialize : result(%d) \n", ret);
87 if (!dbus_connection_send(conn, reply, NULL)) {
88 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] tts initialize : Out Of Memory!\n");
91 dbus_connection_flush(conn);
92 dbus_message_unref(reply);
94 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] tts initialize : fail to create reply message!!");
97 SLOG(LOG_DEBUG, TAG_TTSD, "<<<<<");
98 SLOG(LOG_DEBUG, TAG_TTSD, " ");
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, TAG_TTSD, ">>>>> TTS FINALIZE");
115 if (dbus_error_is_set(&err)) {
116 SLOG(LOG_ERROR, TAG_TTSD, "[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, TAG_TTSD, "[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, TAG_TTSD, "[OUT] tts finalize : result(%d) \n", ret);
134 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] tts finalize : result(%d) \n", ret);
137 if (!dbus_connection_send(conn, reply, NULL)) {
138 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] tts finalize : Out Of Memory!\n");
141 dbus_connection_flush(conn);
142 dbus_message_unref(reply);
144 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] tts finalize : fail to create reply message!!");
147 SLOG(LOG_DEBUG, TAG_TTSD, "<<<<<");
148 SLOG(LOG_DEBUG, TAG_TTSD, " ");
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, TAG_TTSD, ">>>>> TTS GET VOICES");
166 if (dbus_error_is_set(&err)) {
167 SLOG(LOG_ERROR, TAG_TTSD, "[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, TAG_TTSD, "[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, TAG_TTSD, "[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, TAG_TTSD, "[OUT] tts supported voices : result(%d) \n", ret);
219 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] tts supported voices : result(%d) \n", ret);
222 if (!dbus_connection_send(conn, reply, NULL)) {
223 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] error : Out Of Memory!\n");
226 dbus_connection_flush(conn);
227 dbus_message_unref(reply);
229 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] tts supported voices : fail to create reply message!!");
232 SLOG(LOG_DEBUG, TAG_TTSD, "<<<<<");
233 SLOG(LOG_DEBUG, TAG_TTSD, " ");
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, TAG_TTSD, ">>>>> TTS GET DEFAULT VOICE");
252 if (dbus_error_is_set(&err)) {
253 SLOG(LOG_ERROR, TAG_TTSD, "[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, TAG_TTSD, "[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, TAG_TTSD, "[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, TAG_TTSD, "[OUT ERROR] tts default voice : result(%d) \n", ret);
280 if (!dbus_connection_send(conn, reply, NULL)) {
281 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] tts default voice : Out Of Memory!\n");
284 dbus_connection_flush(conn);
285 dbus_message_unref(reply);
287 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] tts default voice : fail to create reply message!!");
290 SLOG(LOG_DEBUG, TAG_TTSD, "<<<<<");
291 SLOG(LOG_DEBUG, TAG_TTSD, " ");
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, TAG_TTSD, ">>>>> TTS ADD TEXT");
316 if (dbus_error_is_set(&err)) {
317 SLOG(LOG_ERROR, TAG_TTSD, "[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, TAG_TTSD, "[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, TAG_TTSD, "[OUT] tts add text : result(%d) \n", ret);
336 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] tts add text : result(%d) \n", ret);
339 if (!dbus_connection_send(conn, reply, NULL)) {
340 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] tts add text : Out Of Memory!\n");
343 dbus_connection_flush(conn);
344 dbus_message_unref(reply);
346 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] tts add text : fail to create reply message!!");
349 SLOG(LOG_DEBUG, TAG_TTSD, "<<<<<");
350 SLOG(LOG_DEBUG, TAG_TTSD, " ");
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, TAG_TTSD, ">>>>> TTS PLAY");
367 if (dbus_error_is_set(&err)) {
368 SLOG(LOG_ERROR, TAG_TTSD, "[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, TAG_TTSD, "[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, TAG_TTSD, "[OUT] tts play : result(%d) \n", ret);
385 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] tts play : result(%d) \n", ret);
388 if (!dbus_connection_send(conn, reply, NULL)) {
389 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] tts play : Out Of Memory!\n");
392 dbus_connection_flush(conn);
393 dbus_message_unref(reply);
395 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] tts play : fail to create reply message!!");
398 SLOG(LOG_DEBUG, TAG_TTSD, "<<<<<");
399 SLOG(LOG_DEBUG, TAG_TTSD, " ");
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, TAG_TTSD, ">>>>> TTS STOP");
417 if (dbus_error_is_set(&err)) {
418 SLOG(LOG_ERROR, TAG_TTSD, "[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, TAG_TTSD, "[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, TAG_TTSD, "[OUT] tts stop : result(%d) \n", ret);
437 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] tts stop : result(%d) \n", ret);
440 if (!dbus_connection_send(conn, reply, NULL)) {
441 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] tts stop : Out Of Memory!\n");
444 dbus_connection_flush(conn);
445 dbus_message_unref(reply);
447 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] tts stop : fail to create reply message!!");
450 SLOG(LOG_DEBUG, TAG_TTSD, "<<<<<");
451 SLOG(LOG_DEBUG, TAG_TTSD, " ");
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, TAG_TTSD, ">>>>> TTS PAUSE");
470 if (dbus_error_is_set(&err)) {
471 SLOG(LOG_ERROR, TAG_TTSD, "[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, TAG_TTSD, "[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, TAG_TTSD, "[OUT] tts pause : result(%d) \n", ret);
490 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] tts pause : result(%d) \n", ret);
493 if (!dbus_connection_send(conn, reply, NULL)) {
494 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] tts pause : Out Of Memory!\n");
497 dbus_connection_flush(conn);
498 dbus_message_unref(reply);
500 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] tts pause : fail to create reply message!!");
503 SLOG(LOG_DEBUG, TAG_TTSD, "<<<<<");
504 SLOG(LOG_DEBUG, TAG_TTSD, " ");
511 * Dbus Setting-Daemon Server
514 int ttsd_dbus_server_setting_initialize(DBusConnection* conn, DBusMessage* msg)
517 dbus_error_init(&err);
522 dbus_message_get_args(msg, &err,
523 DBUS_TYPE_INT32, &pid,
526 SLOG(LOG_DEBUG, TAG_TTSD, ">>>>> SETTING INITIALIZE");
528 if (dbus_error_is_set(&err)) {
529 SLOG(LOG_ERROR, TAG_TTSD, "[IN ERROR] Receivce setting initialize : Get arguments error (%s)\n", err.message);
530 dbus_error_free(&err);
531 ret = TTSD_ERROR_OPERATION_FAILED;
533 SLOG(LOG_DEBUG, TAG_TTSD, "[IN] Receivce setting initialize : pid(%d) \n", pid);
534 ret = ttsd_server_setting_initialize(pid);
538 reply = dbus_message_new_method_return(msg);
541 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
544 SLOG(LOG_DEBUG, TAG_TTSD, "[OUT] setting initialize : result(%d) \n", ret);
546 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting initialize : result(%d) \n", ret);
549 if (!dbus_connection_send(conn, reply, NULL)) {
550 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting initialize : Out Of Memory!\n");
553 dbus_connection_flush(conn);
554 dbus_message_unref(reply);
556 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting initialize : fail to create reply message!!");
559 SLOG(LOG_DEBUG, TAG_TTSD, "<<<<<");
560 SLOG(LOG_DEBUG, TAG_TTSD, " ");
565 int ttsd_dbus_server_setting_finalize(DBusConnection* conn, DBusMessage* msg)
568 dbus_error_init(&err);
573 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
575 SLOG(LOG_DEBUG, TAG_TTSD, ">>>>> SETTING FINALIZE");
577 if (dbus_error_is_set(&err)) {
578 SLOG(LOG_ERROR, TAG_TTSD, "[IN ERROR] setting finalize : Get arguments error (%s)\n", err.message);
579 dbus_error_free(&err);
580 ret = TTSD_ERROR_OPERATION_FAILED;
582 SLOG(LOG_DEBUG, TAG_TTSD, "[IN] setting finalize : pid(%d)\n", pid);
583 ret = ttsd_server_setting_finalize(pid);
587 reply = dbus_message_new_method_return(msg);
590 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
593 SLOG(LOG_DEBUG, TAG_TTSD, "[OUT] setting finalize : result(%d) \n", ret);
595 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting finalize : result(%d) \n", ret);
598 if (!dbus_connection_send(conn, reply, NULL)) {
599 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting finalize : Out Of Memory!\n");
602 dbus_connection_flush(conn);
603 dbus_message_unref(reply);
605 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting finalize : fail to create reply message!!");
608 SLOG(LOG_DEBUG, TAG_TTSD, "<<<<<");
609 SLOG(LOG_DEBUG, TAG_TTSD, " ");
614 int ttsd_dbus_server_setting_get_engine_list(DBusConnection* conn, DBusMessage* msg)
617 dbus_error_init(&err);
621 GList* engine_list = NULL;
623 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
625 SLOG(LOG_DEBUG, TAG_TTSD, ">>>>> SETTING GET ENGINE LIST");
627 if (dbus_error_is_set(&err)) {
628 SLOG(LOG_ERROR, TAG_TTSD, "[IN ERROR] setting engine list : Get arguments error (%s)\n", err.message);
629 dbus_error_free(&err);
630 ret = TTSD_ERROR_OPERATION_FAILED;
632 SLOG(LOG_DEBUG, TAG_TTSD, "[IN] setting engine list : pid(%d) \n", pid);
633 ret = ttsd_server_setting_get_engine_list(pid, &engine_list);
637 reply = dbus_message_new_method_return(msg);
640 DBusMessageIter args;
641 dbus_message_iter_init_append(reply, &args);
644 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(ret) );
648 int size = g_list_length(engine_list);
649 if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(size))) {
650 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting engine list : fail to append engine size \n");
656 iter = g_list_first(engine_list);
658 while (NULL != iter) {
661 if (NULL != engine) {
662 SLOG(LOG_DEBUG, TAG_TTSD, "engine id : %s, engine name : %s, ug_name, : %s",
663 engine->engine_id, engine->engine_name, engine->ug_name);
665 dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(engine->engine_id) );
666 dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(engine->engine_name) );
667 dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(engine->ug_name) );
669 if (NULL != engine->engine_id)
670 g_free(engine->engine_id);
671 if (NULL != engine->engine_name)
672 g_free(engine->engine_name);
673 if (NULL != engine->ug_name)
674 g_free(engine->ug_name);
679 engine_list = g_list_remove_link(engine_list, iter);
681 iter = g_list_first(engine_list);
683 SLOG(LOG_DEBUG, TAG_TTSD, "[OUT] setting engine list : result(%d) \n", ret);
686 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting engine list : result(%d) \n", ret);
689 if (!dbus_connection_send(conn, reply, NULL)) {
690 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting engine list : Out Of Memory!\n");
693 dbus_connection_flush(conn);
694 dbus_message_unref(reply);
696 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting engine list : fail to create reply message!!");
699 SLOG(LOG_DEBUG, TAG_TTSD, "<<<<<");
700 SLOG(LOG_DEBUG, TAG_TTSD, " ");
705 int ttsd_dbus_server_setting_get_engine(DBusConnection* conn, DBusMessage* msg)
708 dbus_error_init(&err);
712 char* engine_id = NULL;
714 dbus_message_get_args(msg, &err,
715 DBUS_TYPE_INT32, &pid,
718 SLOG(LOG_DEBUG, TAG_TTSD, ">>>>> SETTING GET ENGINE");
720 if (dbus_error_is_set(&err)) {
721 SLOG(LOG_ERROR, TAG_TTSD, "[IN ERROR] setting get engine : Get arguments error (%s)\n", err.message);
722 dbus_error_free(&err);
723 ret = TTSD_ERROR_OPERATION_FAILED;
725 SLOG(LOG_DEBUG, TAG_TTSD, "[IN] setting get engine : pid(%d)\n", pid);
726 ret = ttsd_server_setting_get_current_engine(pid, &engine_id);
730 reply = dbus_message_new_method_return(msg);
734 dbus_message_append_args( reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_STRING, &engine_id, DBUS_TYPE_INVALID);
735 SLOG(LOG_DEBUG, TAG_TTSD, "[OUT] setting get engine : result(%d), engine id(%s)\n", ret, engine_id);
737 dbus_message_append_args( reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
738 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting get engine : result(%d)", ret);
741 if (!dbus_connection_send(conn, reply, NULL)) {
742 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting get engine : Out Of Memory!\n");
745 dbus_connection_flush(conn);
746 dbus_message_unref(reply);
748 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting get engine : fail to create reply message!!");
751 if (NULL != engine_id)
754 SLOG(LOG_DEBUG, TAG_TTSD, "<<<<<");
755 SLOG(LOG_DEBUG, TAG_TTSD, " ");
760 int ttsd_dbus_server_setting_set_engine(DBusConnection* conn, DBusMessage* msg)
763 dbus_error_init(&err);
769 dbus_message_get_args(msg, &err,
770 DBUS_TYPE_INT32, &pid,
771 DBUS_TYPE_STRING, &engine_id,
774 SLOG(LOG_DEBUG, TAG_TTSD, ">>>>> SETTING SET ENGINE");
776 if (dbus_error_is_set(&err)) {
777 SLOG(LOG_ERROR, TAG_TTSD, "[IN ERROR] setting set engine : Get arguments error (%s)\n", err.message);
778 dbus_error_free(&err);
779 ret = TTSD_ERROR_OPERATION_FAILED;
781 SLOG(LOG_DEBUG, TAG_TTSD, "[IN] setting set engine : pid(%d), engine id(%s)\n", pid, engine_id);
782 ret = ttsd_server_setting_set_current_engine(pid, engine_id);
786 reply = dbus_message_new_method_return(msg);
789 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
792 SLOG(LOG_DEBUG, TAG_TTSD, "[OUT] setting set engine : result(%d) \n", ret);
794 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting set engine : result(%d) \n", ret);
797 if (!dbus_connection_send(conn, reply, NULL)) {
798 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting set engine : Out Of Memory!\n");
801 dbus_connection_flush(conn);
802 dbus_message_unref(reply);
804 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting set engine : fail to create reply message!!");
807 SLOG(LOG_DEBUG, TAG_TTSD, "<<<<<");
808 SLOG(LOG_DEBUG, TAG_TTSD, " ");
813 int ttsd_dbus_server_setting_get_voice_list(DBusConnection* conn, DBusMessage* msg)
816 dbus_error_init(&err);
819 char* engine_id = NULL;
821 GList* voice_list = NULL;
823 dbus_message_get_args(msg, &err,
824 DBUS_TYPE_INT32, &pid,
827 SLOG(LOG_DEBUG, TAG_TTSD, ">>>>> SETTING GET VOICE LIST");
829 if (dbus_error_is_set(&err)) {
830 SLOG(LOG_ERROR, TAG_TTSD, "[IN ERROR] setting voice list : Get arguments error (%s)\n", err.message);
831 dbus_error_free(&err);
832 ret = TTSD_ERROR_OPERATION_FAILED;
834 SLOG(LOG_DEBUG, TAG_TTSD, "[IN] setting voice list : pid(%d)\n", pid);
835 ret = ttsd_server_setting_get_voice_list(pid, &engine_id, &voice_list);
839 reply = dbus_message_new_method_return(msg);
842 DBusMessageIter args;
844 dbus_message_iter_init_append(reply, &args);
847 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(ret) );
850 if (dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(engine_id))) {
851 /* Append voice size */
852 int size = g_list_length(voice_list);
853 if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(size))) {
854 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting voice list : Fail to append type \n");
855 ret = TTSD_ERROR_OPERATION_FAILED;
861 iter = g_list_first(voice_list);
863 while (NULL != iter) {
867 dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(voice->language) );
868 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(voice->type) );
870 if (NULL != voice->language)
871 g_free(voice->language);
876 voice_list = g_list_remove_link(voice_list, iter);
878 iter = g_list_first(voice_list);
881 SLOG(LOG_DEBUG, TAG_TTSD, "[OUT] setting voice list : result(%d) \n", ret);
883 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting voice list : Fail to append engine_id \n");
886 if (NULL != engine_id)
889 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting voice list : result(%d) \n", ret);
892 if (!dbus_connection_send(conn, reply, NULL)) {
893 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting voice list : Out Of Memory!\n");
896 dbus_connection_flush(conn);
897 dbus_message_unref(reply);
899 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting voice list : fail to create reply message!!");
902 SLOG(LOG_DEBUG, TAG_TTSD, "<<<<<");
903 SLOG(LOG_DEBUG, TAG_TTSD, " ");
908 int ttsd_dbus_server_setting_get_default_voice(DBusConnection* conn, DBusMessage* msg)
911 dbus_error_init(&err);
916 ttsp_voice_type_e type;
918 dbus_message_get_args(msg, &err,
919 DBUS_TYPE_INT32, &pid,
922 SLOG(LOG_DEBUG, TAG_TTSD, ">>>>> SETTING GET DEFAULT VOICE");
924 if (dbus_error_is_set(&err)) {
925 SLOG(LOG_ERROR, TAG_TTSD, "[IN ERROR] setting get default voice : Get arguments error (%s)\n", err.message);
926 dbus_error_free(&err);
927 ret = TTSD_ERROR_OPERATION_FAILED;
929 SLOG(LOG_DEBUG, TAG_TTSD, "[IN] setting get default voice : pid(%d)\n", pid);
930 ret = ttsd_server_setting_get_default_voice(pid, &lang, &type);
934 reply = dbus_message_new_method_return(msg);
938 dbus_message_append_args(reply,
939 DBUS_TYPE_INT32, &ret,
940 DBUS_TYPE_STRING, &lang,
941 DBUS_TYPE_INT32, &type,
943 SLOG(LOG_DEBUG, TAG_TTSD, "[OUT] setting get default voice : result(%d), language(%s), type(%d) \n", ret, lang, type);
945 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
946 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting get default voice : result(%d) \n", ret);
949 if (!dbus_connection_send(conn, reply, NULL)) {
950 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting get default voice : Out Of Memory!\n");
953 dbus_connection_flush(conn);
954 dbus_message_unref(reply);
956 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting get default voice : fail to create reply message!!");
959 SLOG(LOG_DEBUG, TAG_TTSD, "<<<<<");
960 SLOG(LOG_DEBUG, TAG_TTSD, " ");
965 int ttsd_dbus_server_setting_set_default_voice(DBusConnection* conn, DBusMessage* msg)
968 dbus_error_init(&err);
975 dbus_message_get_args(msg, &err,
976 DBUS_TYPE_INT32, &pid,
977 DBUS_TYPE_STRING, &language,
978 DBUS_TYPE_INT32, &voicetype,
981 SLOG(LOG_DEBUG, TAG_TTSD, ">>>>> SET DEFAULT VOICE");
983 if (dbus_error_is_set(&err)) {
984 SLOG(LOG_ERROR, TAG_TTSD, "[IN ERROR] setting set default voice : Get arguments error (%s)\n", err.message);
985 dbus_error_free(&err);
986 ret = TTSD_ERROR_OPERATION_FAILED;
988 SLOG(LOG_DEBUG, TAG_TTSD, "[IN] setting set default voice : pid(%d), lang(%s), type(%d)\n"
989 , pid, language, voicetype);
990 ret = ttsd_server_setting_set_default_voice(pid, language, voicetype);
994 reply = dbus_message_new_method_return(msg);
997 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
1000 SLOG(LOG_DEBUG, TAG_TTSD, "[OUT] setting set default voice : result(%d) \n", ret);
1002 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting set default voice : result(%d) \n", ret);
1005 if (!dbus_connection_send(conn, reply, NULL)) {
1006 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting set default voice : Out Of Memory!\n");
1009 dbus_connection_flush(conn);
1010 dbus_message_unref(reply);
1012 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting set default voice : fail to create reply message!!");
1015 SLOG(LOG_DEBUG, TAG_TTSD, "<<<<<");
1016 SLOG(LOG_DEBUG, TAG_TTSD, " ");
1021 int ttsd_dbus_server_setting_get_speed(DBusConnection* conn, DBusMessage* msg)
1024 dbus_error_init(&err);
1030 dbus_message_get_args(msg, &err,
1031 DBUS_TYPE_INT32, &pid,
1034 SLOG(LOG_DEBUG, TAG_TTSD, ">>>>> SETTING GET SPEED");
1036 if (dbus_error_is_set(&err)) {
1037 SLOG(LOG_ERROR, TAG_TTSD, "[IN ERROR] setting get speed : Get arguments error (%s)\n", err.message);
1038 dbus_error_free(&err);
1039 ret = TTSD_ERROR_OPERATION_FAILED;
1041 SLOG(LOG_DEBUG, TAG_TTSD, "[IN] setting get default speed : pid(%d)\n", pid);
1042 ret = ttsd_server_setting_get_default_speed(pid, &speed);
1046 reply = dbus_message_new_method_return(msg);
1048 if (NULL != reply) {
1050 dbus_message_append_args( reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INT32, &speed, DBUS_TYPE_INVALID);
1051 SLOG(LOG_DEBUG, TAG_TTSD, "[OUT] setting get default speed : result(%d), speed(%d) \n", ret, speed);
1053 dbus_message_append_args( reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
1054 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting get default speed : result(%d) \n", ret);
1057 if (!dbus_connection_send(conn, reply, NULL)) {
1058 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting get default speed : Out Of Memory!\n");
1061 dbus_connection_flush(conn);
1062 dbus_message_unref(reply);
1064 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting get default speed : fail to create reply message!!");
1067 SLOG(LOG_DEBUG, TAG_TTSD, "<<<<<");
1068 SLOG(LOG_DEBUG, TAG_TTSD, " ");
1073 int ttsd_dbus_server_setting_set_speed(DBusConnection* conn, DBusMessage* msg)
1076 dbus_error_init(&err);
1082 dbus_message_get_args(msg, &err,
1083 DBUS_TYPE_INT32, &pid,
1084 DBUS_TYPE_INT32, &speed,
1087 SLOG(LOG_DEBUG, TAG_TTSD, ">>>>> SETTING GET SPEED");
1089 if (dbus_error_is_set(&err)) {
1090 SLOG(LOG_ERROR, TAG_TTSD, "[IN ERROR] setting set default speed : Get arguments error (%s)\n", err.message);
1091 dbus_error_free(&err);
1092 ret = TTSD_ERROR_OPERATION_FAILED;
1094 SLOG(LOG_DEBUG, TAG_TTSD, "[IN] setting set default speed : pid(%d), speed(%d)\n", pid, speed);
1095 ret = ttsd_server_setting_set_default_speed(pid, speed);
1099 reply = dbus_message_new_method_return(msg);
1101 if (NULL != reply) {
1102 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
1105 SLOG(LOG_DEBUG, TAG_TTSD, "[OUT] setting set default speed : result(%d)", ret);
1107 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting set default speed : result(%d)", ret);
1110 if (!dbus_connection_send(conn, reply, NULL)) {
1111 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting set default speed : Out Of Memory!\n");
1114 dbus_connection_flush(conn);
1115 dbus_message_unref(reply);
1117 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting set default speed : fail to create reply message!!");
1120 SLOG(LOG_DEBUG, TAG_TTSD, "<<<<<");
1121 SLOG(LOG_DEBUG, TAG_TTSD, " ");
1126 int ttsd_dbus_server_setting_get_engine_setting(DBusConnection* conn, DBusMessage* msg)
1129 dbus_error_init(&err);
1134 GList* engine_setting_list = NULL;
1136 dbus_message_get_args(msg, &err,
1137 DBUS_TYPE_INT32, &pid,
1140 SLOG(LOG_DEBUG, TAG_TTSD, ">>>>> SETTING GET ENGINE SETTING");
1142 if (dbus_error_is_set(&err)) {
1143 SLOG(LOG_ERROR, TAG_TTSD, "[IN ERROR] setting get engine option : Get arguments error (%s)\n", err.message);
1144 dbus_error_free(&err);
1145 ret = TTSD_ERROR_OPERATION_FAILED;
1147 SLOG(LOG_DEBUG, TAG_TTSD, "[IN] setting get engine option : pid(%d)", pid);
1148 ret = ttsd_server_setting_get_engine_setting(pid, &engine_id, &engine_setting_list);
1152 reply = dbus_message_new_method_return(msg);
1154 if (NULL != reply) {
1155 DBusMessageIter args;
1156 dbus_message_iter_init_append(reply, &args);
1159 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(ret) );
1162 if (dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(engine_id))) {
1163 /* Append voice size */
1164 int size = g_list_length(engine_setting_list);
1165 if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(size))) {
1166 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting voice list : Fail to append type \n");
1167 ret = TTSD_ERROR_OPERATION_FAILED;
1171 engine_setting_s* setting;
1173 iter = g_list_first(engine_setting_list);
1175 while (NULL != iter) {
1176 setting = iter->data;
1178 if (NULL != setting) {
1179 dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(setting->key) );
1180 dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(setting->value) );
1182 if (NULL != setting->key)
1183 g_free(setting->key);
1184 if (NULL != setting->value)
1185 g_free(setting->value);
1190 engine_setting_list = g_list_remove_link(engine_setting_list, iter);
1192 iter = g_list_first(engine_setting_list);
1195 SLOG(LOG_DEBUG, TAG_TTSD, "[OUT] setting engine setting list : result(%d) \n", ret);
1197 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting voice list : Fail to append engine_id \n");
1200 if (NULL != engine_id)
1203 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting get engine option : result(%d) \n", ret);
1206 if (!dbus_connection_send(conn, reply, NULL)) {
1207 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting get engine option : Out Of Memory!\n");
1210 dbus_connection_flush(conn);
1211 dbus_message_unref(reply);
1213 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting get engine option : fail to create reply message!!");
1216 SLOG(LOG_DEBUG, TAG_TTSD, "<<<<<");
1217 SLOG(LOG_DEBUG, TAG_TTSD, " ");
1222 int ttsd_dbus_server_setting_set_engine_setting(DBusConnection* conn, DBusMessage* msg)
1225 dbus_error_init(&err);
1232 dbus_message_get_args(msg, &err,
1233 DBUS_TYPE_INT32, &pid,
1234 DBUS_TYPE_STRING, &key,
1235 DBUS_TYPE_STRING, &value,
1238 SLOG(LOG_DEBUG, TAG_TTSD, ">>>>> SETTING SET ENGINE SETTING");
1240 if (dbus_error_is_set(&err)) {
1241 SLOG(LOG_ERROR, TAG_TTSD, "[IN ERROR] setting set engine option : Get arguments error (%s)\n", err.message);
1242 dbus_error_free(&err);
1243 ret = TTSD_ERROR_OPERATION_FAILED;
1245 SLOG(LOG_DEBUG, TAG_TTSD, "[IN] setting set engine option : pid(%d), key(%s), value(%s)\n", pid, key, value);
1246 ret = ttsd_server_setting_set_engine_setting(pid, key, value);
1250 reply = dbus_message_new_method_return(msg);
1252 if (NULL != reply) {
1253 dbus_message_append_args( reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
1256 SLOG(LOG_DEBUG, TAG_TTSD, "[OUT] setting set engine option : result(%d)", ret);
1258 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting set engine option : result(%d)", ret);
1261 if (!dbus_connection_send(conn, reply, NULL)) {
1262 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting set engine option : Out Of Memory!\n");
1264 dbus_connection_flush(conn);
1265 dbus_message_unref(reply);
1267 SLOG(LOG_ERROR, TAG_TTSD, "[OUT ERROR] setting set engine option : fail to create reply message!!");
1270 SLOG(LOG_DEBUG, TAG_TTSD, "<<<<<");
1271 SLOG(LOG_DEBUG, TAG_TTSD, " ");