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 "sttd_main.h"
16 #include "sttd_dbus.h"
17 #include "sttd_dbus_server.h"
18 #include "sttd_server.h"
19 #include "sttd_client_data.h"
23 * Dbus Client-Daemon Server
26 int sttd_dbus_server_hello(DBusConnection* conn, DBusMessage* msg)
28 SLOG(LOG_DEBUG, TAG_STTD, ">>>>> STT Hello");
31 reply = dbus_message_new_method_return(msg);
34 if (!dbus_connection_send(conn, reply, NULL)) {
35 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Out Of Memory!");
38 dbus_connection_flush(conn);
39 dbus_message_unref(reply);
41 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to create reply message!!");
44 SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
45 SLOG(LOG_DEBUG, TAG_STTD, " ");
50 int sttd_dbus_server_initialize(DBusConnection* conn, DBusMessage* msg)
53 dbus_error_init(&err);
57 bool silence_supported = false;
58 bool profanity_supported = false;
59 bool punctuation_supported = false;
61 int ret = STTD_ERROR_OPERATION_FAILED;
63 dbus_message_get_args(msg, &err,
64 DBUS_TYPE_INT32, &pid,
65 DBUS_TYPE_INT32, &uid,
68 SLOG(LOG_DEBUG, TAG_STTD, ">>>>> STT Initialize");
70 if (dbus_error_is_set(&err)) {
71 SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] stt initialize : get arguments error (%s)", err.message);
72 dbus_error_free(&err);
73 ret = STTD_ERROR_OPERATION_FAILED;
75 SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt initialize : pid(%d), uid(%d)", pid , uid);
76 ret = sttd_server_initialize(pid, uid, &silence_supported, &profanity_supported, &punctuation_supported);
80 reply = dbus_message_new_method_return(msg);
83 dbus_message_append_args(reply,
84 DBUS_TYPE_INT32, &ret,
85 DBUS_TYPE_INT32, &silence_supported,
86 DBUS_TYPE_INT32, &profanity_supported,
87 DBUS_TYPE_INT32, &punctuation_supported,
91 SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d), silence(%d), profanity(%d), punctuation(%d)",
92 ret, silence_supported, profanity_supported, punctuation_supported);
94 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
97 if (!dbus_connection_send(conn, reply, NULL)) {
98 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Out Of Memory!");
101 dbus_connection_flush(conn);
102 dbus_message_unref(reply);
104 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to create reply message!!");
107 SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
108 SLOG(LOG_DEBUG, TAG_STTD, " ");
113 int sttd_dbus_server_finalize(DBusConnection* conn, DBusMessage* msg)
116 dbus_error_init(&err);
119 int ret = STTD_ERROR_OPERATION_FAILED;
120 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID);
122 SLOG(LOG_DEBUG, TAG_STTD, ">>>>> STT Finalize");
124 if (dbus_error_is_set(&err)) {
125 SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] stt finalize : get arguments error (%s)", err.message);
126 dbus_error_free(&err);
127 ret = STTD_ERROR_OPERATION_FAILED;
129 SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt finalize : uid(%d)", uid);
130 ret = sttd_server_finalize(uid);
135 reply = dbus_message_new_method_return(msg);
138 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
141 SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d)", ret);
143 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
146 if (!dbus_connection_send(conn, reply, NULL)) {
147 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Out Of Memory!");
150 dbus_connection_flush(conn);
151 dbus_message_unref(reply);
153 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to create reply message!!");
156 SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
157 SLOG(LOG_DEBUG, TAG_STTD, " ");
162 int sttd_dbus_server_get_support_lang(DBusConnection* conn, DBusMessage* msg)
165 dbus_error_init(&err);
168 int ret = STTD_ERROR_OPERATION_FAILED;
169 GList* lang_list = NULL;
171 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID);
173 SLOG(LOG_DEBUG, TAG_STTD, ">>>>> STT Get supported langs");
175 if (dbus_error_is_set(&err)) {
176 SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] stt supported langs : get arguments error (%s)", err.message);
177 dbus_error_free(&err);
178 ret = STTD_ERROR_OPERATION_FAILED;
180 SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt supported langs : uid(%d)", uid);
181 ret = sttd_server_get_supported_languages(uid, &lang_list);
185 reply = dbus_message_new_method_return(msg);
188 DBusMessageIter args;
189 dbus_message_iter_init_append(reply, &args);
192 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(ret));
195 /* Append language size */
196 int size = g_list_length(lang_list);
198 if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(size))) {
199 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to append type");
200 ret = STTD_ERROR_OPERATION_FAILED;
205 iter = g_list_first(lang_list);
207 while (NULL != iter) {
208 temp_lang = iter->data;
210 dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(temp_lang) );
212 if (NULL != temp_lang)
215 lang_list = g_list_remove_link(lang_list, iter);
217 iter = g_list_first(lang_list);
220 SLOG(LOG_DEBUG, TAG_STTD, "[OUT] Result(%d)", ret);
222 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
225 if (!dbus_connection_send(conn, reply, NULL)) {
226 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Out Of Memory!");
229 dbus_connection_flush(conn);
230 dbus_message_unref(reply);
232 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to create reply message!!");
235 SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
236 SLOG(LOG_DEBUG, TAG_STTD, " ");
241 int sttd_dbus_server_get_default_lang(DBusConnection* conn, DBusMessage* msg)
244 dbus_error_init(&err);
248 int ret = STTD_ERROR_OPERATION_FAILED;
250 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID);
252 SLOG(LOG_DEBUG, TAG_STTD, ">>>>> STT Get default langs");
254 if (dbus_error_is_set(&err)) {
255 SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] stt get default lang : get arguments error (%s)", err.message);
256 dbus_error_free(&err);
257 ret = STTD_ERROR_OPERATION_FAILED;
259 SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt get default lang : uid(%d)", uid);
260 ret = sttd_server_get_current_langauage(uid, &lang);
264 reply = dbus_message_new_method_return(msg);
268 /* Append result and language */
269 dbus_message_append_args( reply,
270 DBUS_TYPE_INT32, &ret,
271 DBUS_TYPE_STRING, &lang,
274 SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d)", ret);
280 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
282 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
285 if (!dbus_connection_send(conn, reply, NULL)) {
286 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Out Of Memory!");
289 dbus_connection_flush(conn);
290 dbus_message_unref(reply);
292 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to create reply message!!");
295 SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
296 SLOG(LOG_DEBUG, TAG_STTD, " ");
301 int sttd_dbus_server_is_partial_result_supported(DBusConnection* conn, DBusMessage* msg)
304 dbus_error_init(&err);
308 int ret = STTD_ERROR_OPERATION_FAILED;
310 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID);
312 SLOG(LOG_DEBUG, TAG_STTD, ">>>>> STT is partial result supported");
314 if (dbus_error_is_set(&err)) {
315 SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] stt is partial result supported : get arguments error (%s)", err.message);
316 dbus_error_free(&err);
317 ret = STTD_ERROR_OPERATION_FAILED;
319 SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt is partial result supported : uid(%d)", uid);
320 ret = sttd_server_is_partial_result_supported(uid, &support);
324 reply = dbus_message_new_method_return(msg);
327 /* Append result and language */
328 dbus_message_append_args(reply,
329 DBUS_TYPE_INT32, &ret,
330 DBUS_TYPE_INT32, &support,
334 SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d), Support(%s)", ret, support ? "true" : "false");
336 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
339 if (!dbus_connection_send(conn, reply, NULL)) {
340 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Out Of Memory!");
343 dbus_connection_flush(conn);
344 dbus_message_unref(reply);
346 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to create reply message!!");
349 SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
350 SLOG(LOG_DEBUG, TAG_STTD, " ");
355 int sttd_dbus_server_get_audio_volume(DBusConnection* conn, DBusMessage* msg)
358 dbus_error_init(&err);
361 float current_volume = 0.0;
362 int ret = STTD_ERROR_OPERATION_FAILED;
364 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID);
366 SLOG(LOG_DEBUG, TAG_STTD, ">>>>> STT Get audio volume");
368 if (dbus_error_is_set(&err)) {
369 SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] stt get audio volume : get arguments error (%s)", err.message);
370 dbus_error_free(&err);
371 ret = STTD_ERROR_OPERATION_FAILED;
373 SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt get audio volume : uid(%d)", uid);
374 ret = sttd_server_get_audio_volume(uid, ¤t_volume);
378 reply = dbus_message_new_method_return(msg);
381 double temp = (double)current_volume;
383 dbus_message_append_args(reply,
384 DBUS_TYPE_INT32, &ret,
385 DBUS_TYPE_DOUBLE, &temp,
389 SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d), volume - double(%f), float(%f)", ret, temp, current_volume);
391 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
394 if (!dbus_connection_send(conn, reply, NULL)) {
395 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Out Of Memory!");
398 dbus_connection_flush(conn);
399 dbus_message_unref(reply);
401 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to create reply message!!");
404 SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
405 SLOG(LOG_DEBUG, TAG_STTD, " ");
410 int sttd_dbus_server_start(DBusConnection* conn, DBusMessage* msg)
413 dbus_error_init(&err);
421 int ret = STTD_ERROR_OPERATION_FAILED;
423 dbus_message_get_args(msg, &err,
424 DBUS_TYPE_INT32, &uid,
425 DBUS_TYPE_STRING, &lang,
426 DBUS_TYPE_STRING, &type,
427 DBUS_TYPE_INT32, &profanity,
428 DBUS_TYPE_INT32, &punctuation,
429 DBUS_TYPE_INT32, &silence,
432 SLOG(LOG_DEBUG, TAG_STTD, ">>>>> STT Start");
434 if (dbus_error_is_set(&err)) {
435 SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] stt start : get arguments error (%s)", err.message);
436 dbus_error_free(&err);
437 ret = STTD_ERROR_OPERATION_FAILED;
439 SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt start : uid(%d), lang(%s), type(%s), profanity(%d), punctuation(%d), silence(%d)"
440 , uid, lang, type, profanity, punctuation, silence);
441 ret = sttd_server_start(uid, lang, type, profanity, punctuation, silence);
445 reply = dbus_message_new_method_return(msg);
448 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
451 SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d)", ret);
453 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
456 if (!dbus_connection_send(conn, reply, NULL)) {
457 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Out Of Memory!");
460 dbus_connection_flush(conn);
461 dbus_message_unref(reply);
463 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to create reply message!!");
466 SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
467 SLOG(LOG_DEBUG, TAG_STTD, " ");
472 int sttd_dbus_server_stop(DBusConnection* conn, DBusMessage* msg)
475 dbus_error_init(&err);
478 int ret = STTD_ERROR_OPERATION_FAILED;
479 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID);
481 SLOG(LOG_DEBUG, TAG_STTD, ">>>>> STT Stop");
483 if (dbus_error_is_set(&err)) {
484 SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] stt stop : get arguments error (%s)", err.message);
485 dbus_error_free(&err);
486 ret = STTD_ERROR_OPERATION_FAILED;
488 SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt stop : uid(%d)", uid);
489 ret = sttd_server_stop(uid);
493 reply = dbus_message_new_method_return(msg);
496 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
499 SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d)", ret);
501 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
504 if (!dbus_connection_send(conn, reply, NULL)) {
505 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Out Of Memory!");
508 dbus_connection_flush(conn);
509 dbus_message_unref(reply);
511 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to create reply message!!");
514 SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
515 SLOG(LOG_DEBUG, TAG_STTD, " ");
520 int sttd_dbus_server_cancel(DBusConnection* conn, DBusMessage* msg)
523 dbus_error_init(&err);
526 int ret = STTD_ERROR_OPERATION_FAILED;
527 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID);
529 SLOG(LOG_DEBUG, TAG_STTD, ">>>>> STT Cancel");
531 if (dbus_error_is_set(&err)) {
532 SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] stt cancel : get arguments error (%s)", err.message);
533 dbus_error_free(&err);
534 ret = STTD_ERROR_OPERATION_FAILED;
536 SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt cancel : uid(%d)", uid);
537 ret = sttd_server_cancel(uid);
541 reply = dbus_message_new_method_return(msg);
544 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
547 SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d)", ret);
549 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
552 if (!dbus_connection_send(conn, reply, NULL)) {
553 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Out Of Memory!");
556 dbus_connection_flush(conn);
557 dbus_message_unref(reply);
559 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to create reply message!!");
562 SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
563 SLOG(LOG_DEBUG, TAG_STTD, " ");
570 * Dbus Setting-Daemon Server
573 int sttd_dbus_server_setting_initialize(DBusConnection* conn, DBusMessage* msg)
576 dbus_error_init(&err);
579 int ret = STTD_ERROR_OPERATION_FAILED;
581 dbus_message_get_args(msg, &err,
582 DBUS_TYPE_INT32, &pid,
585 SLOG(LOG_DEBUG, TAG_STTD, ">>>>> Setting Initialize");
587 if (dbus_error_is_set(&err)) {
588 SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] setting initializie : get arguments error (%s)", err.message);
589 dbus_error_free(&err);
590 ret = STTD_ERROR_OPERATION_FAILED;
592 SLOG(LOG_DEBUG, TAG_STTD, "[IN] setting initializie : uid(%d)", pid);
593 ret = sttd_server_setting_initialize(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, TAG_STTD, "[OUT SUCCESS] Result(%d)", ret);
605 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
608 if (!dbus_connection_send(conn, reply, NULL)) {
609 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Out Of Memory!");
611 dbus_connection_flush(conn);
612 dbus_message_unref(reply);
614 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to create reply message!!");
617 SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
618 SLOG(LOG_DEBUG, TAG_STTD, " ");
623 int sttd_dbus_server_setting_finalize(DBusConnection* conn, DBusMessage* msg)
626 dbus_error_init(&err);
629 int ret = STTD_ERROR_OPERATION_FAILED;
631 dbus_message_get_args(msg, &err,
632 DBUS_TYPE_INT32, &pid,
635 SLOG(LOG_DEBUG, TAG_STTD, ">>>>> Setting Finalize");
637 if (dbus_error_is_set(&err)) {
638 SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] setting finalize : get arguments error (%s)", err.message);
639 dbus_error_free(&err);
640 ret = STTD_ERROR_OPERATION_FAILED;
642 SLOG(LOG_DEBUG, TAG_STTD, "[IN] setting finalize : uid(%d)", pid);
643 ret = sttd_server_setting_finalize(pid);
647 reply = dbus_message_new_method_return(msg);
650 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
653 SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d)", ret);
655 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
658 if (!dbus_connection_send(conn, reply, NULL)) {
659 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Out Of Memory!");
662 dbus_connection_flush(conn);
663 dbus_message_unref(reply);
665 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to create reply message!!");
668 SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
669 SLOG(LOG_DEBUG, TAG_STTD, " ");
674 int sttd_dbus_server_setting_get_engine_list(DBusConnection* conn, DBusMessage* msg)
677 dbus_error_init(&err);
680 GList* engine_list = NULL;
681 int ret = STTD_ERROR_OPERATION_FAILED;
683 dbus_message_get_args(msg, &err,
684 DBUS_TYPE_INT32, &pid,
687 SLOG(LOG_DEBUG, TAG_STTD, ">>>>> Setting Get Engine List");
689 if (dbus_error_is_set(&err)) {
690 SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] setting get engine list : get arguments error (%s)", err.message);
691 dbus_error_free(&err);
692 ret = STTD_ERROR_OPERATION_FAILED;
694 SLOG(LOG_DEBUG, TAG_STTD, "[IN] setting get engine list : uid(%d)", pid);
695 ret = sttd_server_setting_get_engine_list(pid, &engine_list);
699 reply = dbus_message_new_method_return(msg);
702 DBusMessageIter args;
704 dbus_message_iter_init_append(reply, &args);
707 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(ret) );
711 int size = g_list_length(engine_list);
712 if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(size))) {
713 ret = STTD_ERROR_OPERATION_FAILED;
718 iter = g_list_first(engine_list);
720 while (NULL != iter) {
723 if (NULL != engine) {
725 if (NULL != engine->engine_id && NULL != engine->engine_name && NULL != engine->ug_name) {
726 SLOG(LOG_DEBUG, TAG_STTD, "engine id : %s, engine name : %s, ug_name, : %s",
727 engine->engine_id, engine->engine_name, engine->ug_name);
729 dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(engine->engine_id) );
730 dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(engine->engine_name) );
731 dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(engine->ug_name) );
733 SLOG(LOG_ERROR, TAG_STTD, "[ERROR] Engine info is NULL");
736 if (NULL != engine->engine_id)
737 g_free(engine->engine_id);
738 if (NULL != engine->engine_name)
739 g_free(engine->engine_name);
740 if (NULL != engine->ug_name)
741 g_free(engine->ug_name);
745 SLOG(LOG_ERROR, TAG_STTD, "[ERROR] Engine info is NULL");
748 engine_list = g_list_remove_link(engine_list, iter);
750 iter = g_list_first(engine_list);
753 SLOG(LOG_DEBUG, TAG_STTD, "[OUT] Result(%d)", ret);
755 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
758 if (!dbus_connection_send(conn, reply, NULL)) {
759 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Out Of Memory!");
762 dbus_connection_flush(conn);
763 dbus_message_unref(reply);
765 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to create reply message!!");
768 SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
769 SLOG(LOG_DEBUG, TAG_STTD, " ");
774 int sttd_dbus_server_setting_get_engine(DBusConnection* conn, DBusMessage* msg)
777 dbus_error_init(&err);
781 int ret = STTD_ERROR_OPERATION_FAILED;
783 dbus_message_get_args(msg, &err,
784 DBUS_TYPE_INT32, &pid,
787 SLOG(LOG_DEBUG, TAG_STTD, ">>>>> Setting Get Engine");
789 if (dbus_error_is_set(&err)) {
790 SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] setting get engine : get arguments error (%s)", err.message);
791 dbus_error_free(&err);
792 ret = STTD_ERROR_OPERATION_FAILED;
794 SLOG(LOG_DEBUG, TAG_STTD, "[IN] setting get engine : uid(%d)", pid);
795 ret = sttd_server_setting_get_engine(pid, &engine_id);
799 reply = dbus_message_new_method_return(msg);
803 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_STRING, &engine_id, DBUS_TYPE_INVALID);
805 SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d), Engine id(%s)", ret, engine_id);
808 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
809 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
812 if (!dbus_connection_send(conn, reply, NULL)) {
813 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Out Of Memory!");
816 dbus_connection_flush(conn);
817 dbus_message_unref(reply);
819 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to create reply message!!");
822 SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
823 SLOG(LOG_DEBUG, TAG_STTD, " ");
828 int sttd_dbus_server_setting_set_engine(DBusConnection* conn, DBusMessage* msg)
831 dbus_error_init(&err);
835 int ret = STTD_ERROR_OPERATION_FAILED;
837 dbus_message_get_args(msg, &err,
838 DBUS_TYPE_INT32, &pid,
839 DBUS_TYPE_STRING, &engine_id,
842 SLOG(LOG_DEBUG, TAG_STTD, ">>>>> Setting Set Engine");
844 if (dbus_error_is_set(&err)) {
845 SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] setting set engine : get arguments error (%s)", err.message);
846 dbus_error_free(&err);
847 ret = STTD_ERROR_OPERATION_FAILED;
849 SLOG(LOG_DEBUG, TAG_STTD, "[IN] setting set engine : uid(%d)", pid);
850 ret = sttd_server_setting_set_engine(pid, engine_id);
854 reply = dbus_message_new_method_return(msg);
857 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
860 SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d) ", ret);
862 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d) ", ret);
865 if (!dbus_connection_send(conn, reply, NULL)) {
866 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Out Of Memory!");
869 dbus_connection_flush(conn);
870 dbus_message_unref(reply);
872 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to create reply message!!");
875 SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
876 SLOG(LOG_DEBUG, TAG_STTD, " ");
881 int sttd_dbus_server_setting_get_language_list(DBusConnection* conn, DBusMessage* msg)
884 dbus_error_init(&err);
887 GList* lang_list = NULL;
889 int ret = STTD_ERROR_OPERATION_FAILED;
891 dbus_message_get_args(msg, &err,
892 DBUS_TYPE_INT32, &pid,
895 SLOG(LOG_DEBUG, TAG_STTD, ">>>>> Setting Get Language List");
897 if (dbus_error_is_set(&err)) {
898 SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] setting get language list : get arguments error (%s)", err.message);
899 dbus_error_free(&err);
900 ret = STTD_ERROR_OPERATION_FAILED;
902 SLOG(LOG_DEBUG, TAG_STTD, "[IN] setting get language list : uid(%d)", pid);
903 ret = sttd_server_setting_get_lang_list(pid, &engine_id, &lang_list);
907 reply = dbus_message_new_method_return(msg);
910 DBusMessageIter args;
911 dbus_message_iter_init_append(reply, &args);
914 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &ret);
917 dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(engine_id));
919 int size = g_list_length(lang_list);
920 SLOG(LOG_ERROR, TAG_STTD, "[OUT DEBUG] Count(%d) ", size);
923 if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(size))) {
924 ret = STTD_ERROR_OPERATION_FAILED;
925 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d) ", ret);
930 iter = g_list_first(lang_list);
932 while (NULL != iter) {
933 temp_lang = iter->data;
935 dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(temp_lang) );
937 if (NULL != temp_lang)
940 lang_list = g_list_remove_link(lang_list, iter);
942 iter = g_list_first(lang_list);
944 SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d) ", ret);
947 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d) ", ret);
950 if (!dbus_connection_send(conn, reply, NULL)) {
951 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Out Of Memory!");
954 dbus_connection_flush(conn);
955 dbus_message_unref(reply);
957 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to create reply message!!");
960 SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
961 SLOG(LOG_DEBUG, TAG_STTD, " ");
966 int sttd_dbus_server_setting_get_default_language(DBusConnection* conn, DBusMessage* msg)
969 dbus_error_init(&err);
973 int ret = STTD_ERROR_OPERATION_FAILED;
975 dbus_message_get_args(msg, &err,
976 DBUS_TYPE_INT32, &pid,
979 SLOG(LOG_DEBUG, TAG_STTD, ">>>>> Setting Get Default Language");
981 if (dbus_error_is_set(&err)) {
982 SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] setting get default language : get arguments error (%s)", err.message);
983 dbus_error_free(&err);
984 ret = STTD_ERROR_OPERATION_FAILED;
986 SLOG(LOG_DEBUG, TAG_STTD, "[IN] setting get default language : uid(%d)", pid);
987 ret = sttd_server_setting_get_default_language(pid, &language);
991 reply = dbus_message_new_method_return(msg);
995 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_STRING, &language, DBUS_TYPE_INVALID);
996 SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d), Default Language(%s)", ret, language);
999 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
1000 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
1003 if (!dbus_connection_send(conn, reply, NULL)) {
1004 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Out Of Memory!");
1007 dbus_connection_flush(conn);
1008 dbus_message_unref(reply);
1010 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to create reply message!!");
1013 SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
1014 SLOG(LOG_DEBUG, TAG_STTD, " ");
1019 int sttd_dbus_server_setting_set_default_language(DBusConnection* conn, DBusMessage* msg)
1022 dbus_error_init(&err);
1026 int ret = STTD_ERROR_OPERATION_FAILED;
1028 dbus_message_get_args(msg, &err,
1029 DBUS_TYPE_INT32, &pid,
1030 DBUS_TYPE_STRING, &language,
1033 SLOG(LOG_DEBUG, TAG_STTD, ">>>>> Setting Set Default Language");
1035 if (dbus_error_is_set(&err)) {
1036 SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] setting set default language : get arguments error (%s)", err.message);
1037 dbus_error_free(&err);
1038 ret = STTD_ERROR_OPERATION_FAILED;
1040 SLOG(LOG_DEBUG, TAG_STTD, "[IN] setting set default language : uid(%d), language(%s)", pid, language);
1041 ret = sttd_server_setting_set_default_language(pid, language);
1045 reply = dbus_message_new_method_return(msg);
1047 if (NULL != reply) {
1048 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
1051 SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d)", ret);
1053 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
1056 if (!dbus_connection_send(conn, reply, NULL)) {
1057 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Out Of Memory!");
1060 dbus_connection_flush(conn);
1061 dbus_message_unref(reply);
1063 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to create reply message!!");
1066 SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
1067 SLOG(LOG_DEBUG, TAG_STTD, " ");
1072 int sttd_dbus_server_setting_get_profanity_filter(DBusConnection* conn, DBusMessage* msg)
1075 dbus_error_init(&err);
1079 int ret = STTD_ERROR_OPERATION_FAILED;
1081 dbus_message_get_args(msg, &err,
1082 DBUS_TYPE_INT32, &pid,
1085 SLOG(LOG_DEBUG, TAG_STTD, ">>>>> Setting Get Profanity Filter");
1087 if (dbus_error_is_set(&err)) {
1088 SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] setting get profanity filter : get arguments error (%s)", err.message);
1089 dbus_error_free(&err);
1090 ret = STTD_ERROR_OPERATION_FAILED;
1092 SLOG(LOG_DEBUG, TAG_STTD, "[IN] setting get profanity filter : uid(%d)", pid);
1093 ret = sttd_server_setting_get_profanity_filter(pid, &value);
1097 reply = dbus_message_new_method_return(msg);
1099 if (NULL != reply) {
1101 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INT32, &value, DBUS_TYPE_INVALID);
1102 SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d) , value(%s)", ret, value ? "true":"false");
1104 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
1105 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
1108 if (!dbus_connection_send(conn, reply, NULL)) {
1109 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Out Of Memory!");
1112 dbus_connection_flush(conn);
1113 dbus_message_unref(reply);
1115 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to create reply message!!");
1118 SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
1119 SLOG(LOG_DEBUG, TAG_STTD, " ");
1124 int sttd_dbus_server_setting_set_profanity_filter(DBusConnection* conn, DBusMessage* msg)
1127 dbus_error_init(&err);
1131 int ret = STTD_ERROR_OPERATION_FAILED;
1133 dbus_message_get_args(msg, &err,
1134 DBUS_TYPE_INT32, &pid,
1135 DBUS_TYPE_INT32, &value,
1138 SLOG(LOG_DEBUG, TAG_STTD, ">>>>> Setting Set Profanity Filter");
1140 if (dbus_error_is_set(&err)) {
1141 SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] setting set profanity filter : get arguments error (%s)", err.message);
1142 dbus_error_free(&err);
1143 ret = STTD_ERROR_OPERATION_FAILED;
1145 SLOG(LOG_DEBUG, TAG_STTD, "[IN] setting set profanity filter : uid(%d), value(%s)", pid, value ? "true":"false");
1146 ret = sttd_server_setting_set_profanity_filter(pid, (bool)value);
1150 reply = dbus_message_new_method_return(msg);
1152 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
1154 if (NULL != reply) {
1156 SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d)", ret);
1158 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
1161 if (!dbus_connection_send(conn, reply, NULL)) {
1162 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Out Of Memory!");
1165 dbus_connection_flush(conn);
1166 dbus_message_unref(reply);
1168 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to create reply message!!");
1171 SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
1172 SLOG(LOG_DEBUG, TAG_STTD, " ");
1177 int sttd_dbus_server_setting_get_punctuation_override(DBusConnection* conn, DBusMessage* msg)
1180 dbus_error_init(&err);
1184 int ret = STTD_ERROR_OPERATION_FAILED;
1186 dbus_message_get_args(msg, &err,
1187 DBUS_TYPE_INT32, &pid,
1190 SLOG(LOG_DEBUG, TAG_STTD, ">>>>> Setting Get Punctuation Override");
1192 if (dbus_error_is_set(&err)) {
1193 SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] setting get punctuation override : get arguments error (%s)", err.message);
1194 dbus_error_free(&err);
1195 ret = STTD_ERROR_OPERATION_FAILED;
1197 SLOG(LOG_DEBUG, TAG_STTD, "[IN] setting get punctuation override : uid(%d)", pid);
1198 ret = sttd_server_setting_get_punctuation_override(pid, &value);
1202 reply = dbus_message_new_method_return(msg);
1204 if (NULL != reply) {
1206 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INT32, &value, DBUS_TYPE_INVALID);
1207 SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d) , value(%s)", ret, value ? "true":"false");
1209 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
1210 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
1213 if (!dbus_connection_send(conn, reply, NULL)) {
1214 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Out Of Memory!");
1218 dbus_connection_flush(conn);
1219 dbus_message_unref(reply);
1221 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to create reply message!!");
1224 SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
1225 SLOG(LOG_DEBUG, TAG_STTD, " ");
1230 int sttd_dbus_server_setting_set_punctuation_override(DBusConnection* conn, DBusMessage* msg)
1233 dbus_error_init(&err);
1237 int ret = STTD_ERROR_OPERATION_FAILED;
1239 dbus_message_get_args(msg, &err,
1240 DBUS_TYPE_INT32, &pid,
1241 DBUS_TYPE_INT32, &value,
1244 SLOG(LOG_DEBUG, TAG_STTD, ">>>>> Setting Set Profanity Filter");
1246 if (dbus_error_is_set(&err)) {
1247 SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] setting set punctuation override : get arguments error (%s)", err.message);
1248 dbus_error_free(&err);
1249 ret = STTD_ERROR_OPERATION_FAILED;
1251 SLOG(LOG_DEBUG, TAG_STTD, "[IN] setting set punctuation override : uid(%d), value(%s)", pid, value ? "true":"false");
1252 ret = sttd_server_setting_set_punctuation_override(pid, value);
1256 reply = dbus_message_new_method_return(msg);
1258 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
1260 if (NULL != reply) {
1262 SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d)", ret);
1264 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
1267 if (!dbus_connection_send(conn, reply, NULL)) {
1268 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Out Of Memory!");
1272 dbus_connection_flush(conn);
1273 dbus_message_unref(reply);
1275 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to create reply message!!");
1278 SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
1279 SLOG(LOG_DEBUG, TAG_STTD, " ");
1284 int sttd_dbus_server_setting_get_silence_detection(DBusConnection* conn, DBusMessage* msg)
1287 dbus_error_init(&err);
1291 int ret = STTD_ERROR_OPERATION_FAILED;
1293 dbus_message_get_args(msg, &err,
1294 DBUS_TYPE_INT32, &pid,
1297 SLOG(LOG_DEBUG, TAG_STTD, ">>>>> Setting Get Silence Detection");
1299 if (dbus_error_is_set(&err)) {
1300 SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] setting get silence detection : get arguments error (%s)", err.message);
1301 dbus_error_free(&err);
1302 ret = STTD_ERROR_OPERATION_FAILED;
1304 SLOG(LOG_DEBUG, TAG_STTD, "[IN] setting get silence detection : uid(%d)", pid);
1305 ret = sttd_server_setting_get_silence_detection(pid, &value);
1309 reply = dbus_message_new_method_return(msg);
1311 if (NULL != reply) {
1313 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INT32, &value, DBUS_TYPE_INVALID);
1314 SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d) , Value(%s)", ret, value ? "true":"false");
1316 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
1317 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
1320 if (!dbus_connection_send(conn, reply, NULL)) {
1321 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Out Of Memory!");
1325 dbus_connection_flush(conn);
1326 dbus_message_unref(reply);
1328 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to create reply message!!");
1331 SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
1332 SLOG(LOG_DEBUG, TAG_STTD, " ");
1337 int sttd_dbus_server_setting_set_silence_detection(DBusConnection* conn, DBusMessage* msg)
1340 dbus_error_init(&err);
1344 int ret = STTD_ERROR_OPERATION_FAILED;
1346 dbus_message_get_args(msg, &err,
1347 DBUS_TYPE_INT32, &pid,
1348 DBUS_TYPE_INT32, &value,
1350 SLOG(LOG_DEBUG, TAG_STTD, ">>>>> Setting Set Silence Detection");
1352 if (dbus_error_is_set(&err)) {
1353 SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] setting set silence detection : get arguments error (%s)", err.message);
1354 dbus_error_free(&err);
1355 ret = STTD_ERROR_OPERATION_FAILED;
1357 SLOG(LOG_DEBUG, TAG_STTD, "[IN] setting set silence detection : uid(%d), value(%s)", pid, value ? "true":"false");
1358 ret = sttd_server_setting_set_silence_detection(pid, value);
1362 reply = dbus_message_new_method_return(msg);
1364 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
1366 if (NULL != reply) {
1368 SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d)", ret);
1370 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
1373 if (!dbus_connection_send(conn, reply, NULL)) {
1374 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Out Of Memory!");
1377 dbus_connection_flush(conn);
1378 dbus_message_unref(reply);
1380 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to create reply message!!");
1383 SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
1384 SLOG(LOG_DEBUG, TAG_STTD, " ");
1390 int sttd_dbus_server_setting_get_engine_setting(DBusConnection* conn, DBusMessage* msg)
1393 dbus_error_init(&err);
1397 GList* engine_setting_list = NULL;
1398 int ret = STTD_ERROR_OPERATION_FAILED;
1400 dbus_message_get_args(msg, &err,
1401 DBUS_TYPE_INT32, &pid,
1404 SLOG(LOG_DEBUG, TAG_STTD, ">>>>> Setting Get Engine Setting");
1406 if (dbus_error_is_set(&err)) {
1407 SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] setting get engine setting : get arguments error (%s)", err.message);
1408 dbus_error_free(&err);
1409 ret = STTD_ERROR_OPERATION_FAILED;
1411 SLOG(LOG_DEBUG, TAG_STTD, "[IN] setting get engine setting : uid(%d)", pid);
1412 ret = sttd_server_setting_get_engine_setting(pid, &engine_id, &engine_setting_list);
1416 reply = dbus_message_new_method_return(msg);
1418 if (NULL != reply) {
1419 DBusMessageIter args;
1420 dbus_message_iter_init_append(reply, &args);
1423 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(ret) );
1426 if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(engine_id))) {
1427 ret = STTD_ERROR_OPERATION_FAILED;
1428 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to add engine id");
1430 if (NULL != engine_id) free(engine_id);
1433 int size = g_list_length(engine_setting_list);
1434 if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(size))) {
1435 ret = STTD_ERROR_OPERATION_FAILED;
1436 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] setting get engine setting : result(%d)", ret);
1439 engine_setting_s* setting;
1441 iter = g_list_first(engine_setting_list);
1443 while (NULL != iter) {
1444 setting = iter->data;
1446 if (NULL != setting) {
1447 if (NULL != setting->key && NULL != setting->value) {
1448 dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(setting->key) );
1449 dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(setting->value) );
1451 SLOG(LOG_ERROR, TAG_STTD, "[ERROR] setting key is NULL");
1454 if (NULL != setting->key)
1455 g_free(setting->key);
1456 if (NULL != setting->value)
1457 g_free(setting->value);
1461 SLOG(LOG_ERROR, TAG_STTD, "[ERROR] setting key is NULL");
1464 engine_setting_list = g_list_remove_link(engine_setting_list, iter);
1466 iter = g_list_first(engine_setting_list);
1468 SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] setting engine setting list : result(%d) \n", ret);
1472 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
1475 if (!dbus_connection_send(conn, reply, NULL)) {
1476 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Out Of Memory!");
1479 dbus_connection_flush(conn);
1480 dbus_message_unref(reply);
1482 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to create reply message!!");
1485 SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
1486 SLOG(LOG_DEBUG, TAG_STTD, " ");
1491 int sttd_dbus_server_setting_set_engine_setting(DBusConnection* conn, DBusMessage* msg)
1494 dbus_error_init(&err);
1499 int ret = STTD_ERROR_OPERATION_FAILED;
1501 dbus_message_get_args(msg, &err,
1502 DBUS_TYPE_INT32, &pid,
1503 DBUS_TYPE_STRING, &key,
1504 DBUS_TYPE_STRING, &value,
1507 SLOG(LOG_DEBUG, TAG_STTD, ">>>>> Setting Set Engine Setting");
1509 if (dbus_error_is_set(&err)) {
1510 SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] setting set engine setting : get arguments error (%s)", err.message);
1511 dbus_error_free(&err);
1512 ret = STTD_ERROR_OPERATION_FAILED;
1514 SLOG(LOG_DEBUG, TAG_STTD, "[IN] setting set engine setting : uid(%d), key(%s), value(%s)", pid, key, value);
1515 ret = sttd_server_setting_set_engine_setting(pid, key, value);
1519 reply = dbus_message_new_method_return(msg);
1521 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
1523 if (NULL != reply) {
1525 SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d)", ret);
1527 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
1530 if (!dbus_connection_send(conn, reply, NULL)) {
1531 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Out Of Memory!");
1534 dbus_connection_flush(conn);
1535 dbus_message_unref(reply);
1537 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to create reply message!!");
1540 SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
1541 SLOG(LOG_DEBUG, TAG_STTD, " ");
1546 int sttd_dbus_server_stop_by_daemon(DBusMessage* msg)
1549 dbus_error_init(&err);
1553 dbus_message_get_args(msg, &err,
1554 DBUS_TYPE_INT32, &uid,
1557 SLOG(LOG_DEBUG, TAG_STTD, ">>>>> Stop by daemon");
1559 if (dbus_error_is_set(&err)) {
1560 SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] sttd stop by daemon : Get arguments error (%s)", err.message);
1561 dbus_error_free(&err);
1563 SLOG(LOG_DEBUG, TAG_STTD, "[IN] sttd stop by daemon : uid(%d)", uid);
1564 sttd_server_stop(uid);
1566 /* check silence detection option from config */
1567 int ret = sttdc_send_set_state(uid, (int)APP_STATE_PROCESSING);
1569 SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d)", ret);
1571 SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
1573 sttd_server_finalize(uid);
1577 SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
1578 SLOG(LOG_DEBUG, TAG_STTD, " ");