2 * Copyright (c) 2011-2014 Samsung Electronics Co., Ltd All Rights Reserved
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 * http://www.apache.org/licenses/LICENSE-2.0
7 * Unless required by applicable law or agreed to in writing, software
8 * distributed under the License is distributed on an "AS IS" BASIS,
9 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10 * See the License for the specific language governing permissions and
11 * limitations under the License.
17 #include <sys/inotify.h>
19 #include "tts_client.h"
20 #include "tts_config_mgr.h"
26 #define HELLO_WAITING_TIME 500
27 #define WAITING_TIME 5000
29 static DBusConnection* g_conn_sender = NULL;
30 static DBusConnection* g_conn_listener = NULL;
32 static Ecore_Fd_Handler* g_dbus_fd_handler = NULL;
35 extern int __tts_cb_error(int uid, tts_error_e reason, int utt_id, char *err_msg);
37 extern int __tts_cb_set_state(int uid, int state);
39 extern int __tts_cb_utt_started(int uid, int utt_id);
41 extern int __tts_cb_utt_completed(int uid, int utt_id);
44 static Eina_Bool listener_event_callback(void* data, Ecore_Fd_Handler *fd_handler)
46 if (NULL == g_conn_listener) return ECORE_CALLBACK_RENEW;
48 dbus_connection_read_write_dispatch(g_conn_listener, 50);
50 DBusMessage* msg = NULL;
51 msg = dbus_connection_pop_message(g_conn_listener);
53 if (true != dbus_connection_get_is_connected(g_conn_listener)) {
54 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Connection is disconnected");
55 return ECORE_CALLBACK_RENEW;
58 /* loop again if we haven't read a message */
60 return ECORE_CALLBACK_RENEW;
64 dbus_error_init(&err);
66 char if_name[64] = {0, };
67 snprintf(if_name, 64, "%s", TTS_CLIENT_SERVICE_INTERFACE);
69 if (dbus_message_is_signal(msg, if_name, TTSD_METHOD_UTTERANCE_STARTED)) {
73 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INT32, &uttid, DBUS_TYPE_INVALID);
74 if (dbus_error_is_set(&err)) {
75 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Get arguments error (%s)", err.message);
76 dbus_error_free(&err);
79 if (0 == __tts_cb_utt_started(uid, uttid)) {
80 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts utterance started : uid(%d) uttid(%d)", uid, uttid);
82 } /* TTSD_METHOD_UTTERANCE_STARTED */
84 else if (dbus_message_is_signal(msg, if_name, TTSD_METHOD_UTTERANCE_COMPLETED)) {
88 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INT32, &uttid, DBUS_TYPE_INVALID);
89 if (dbus_error_is_set(&err)) {
90 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Get arguments error (%s)", err.message);
91 dbus_error_free(&err);
94 if (0 == __tts_cb_utt_completed(uid, uttid)) {
95 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts utterance completed : uid(%d) uttid(%d)", uid, uttid);
97 } /* TTS_SIGNAL_UTTERANCE_STARTED */
99 else if (dbus_message_is_signal(msg, if_name, TTSD_METHOD_SET_STATE)) {
103 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INT32, &state, DBUS_TYPE_INVALID);
104 if (dbus_error_is_set(&err)) {
105 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Get arguments error (%s)", err.message);
106 dbus_error_free(&err);
109 if (0 == __tts_cb_set_state(uid, state)) {
110 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts state changed : uid(%d) state(%d)", uid, state);
112 } /* TTSD_SIGNAL_SET_STATE */
114 else if (dbus_message_is_signal(msg, if_name, TTSD_METHOD_ERROR)) {
120 dbus_message_get_args(msg, &err,
121 DBUS_TYPE_INT32, &uid,
122 DBUS_TYPE_INT32, &uttid,
123 DBUS_TYPE_INT32, &reason,
124 DBUS_TYPE_INT32, &err_msg,
127 if (dbus_error_is_set(&err)) {
128 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Get Error message - Get arguments error (%s)", err.message);
129 dbus_error_free(&err);
131 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Get Error message : uid(%d), error(%d), uttid(%d), err_msg(%s)", uid, reason, uttid, (NULL == err_msg) ? "NULL" : err_msg);
132 __tts_cb_error(uid, reason, uttid, err_msg);
135 } /* TTSD_SIGNAL_ERROR */
137 /* free the message */
138 dbus_message_unref(msg);
140 return ECORE_CALLBACK_PASS_ON;
143 int tts_dbus_open_connection()
145 if (NULL != g_conn_sender && NULL != g_conn_listener) {
146 SLOG(LOG_WARN, TAG_TTSC, "already existed connection ");
152 /* initialise the error value */
153 dbus_error_init(&err);
155 /* connect to the DBUS system bus, and check for errors */
156 g_conn_sender = dbus_bus_get_private(DBUS_BUS_SESSION, &err);
157 if (dbus_error_is_set(&err)) {
158 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Dbus Connection Error (%s)", err.message);
159 dbus_error_free(&err);
162 if (NULL == g_conn_sender) {
163 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] fail to get dbus connection");
164 return TTS_ERROR_OPERATION_FAILED;
167 dbus_connection_set_exit_on_disconnect(g_conn_sender, false);
169 g_conn_listener = dbus_bus_get_private(DBUS_BUS_SESSION, &err);
170 if (dbus_error_is_set(&err)) {
171 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Dbus Connection Error (%s)", err.message);
172 dbus_error_free(&err);
175 if (NULL == g_conn_listener) {
176 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] fail to get dbus connection for listener");
177 return TTS_ERROR_OPERATION_FAILED;
180 char rule[128] = {0, };
181 snprintf(rule, 128, "type='signal',interface='%s'", TTS_CLIENT_SERVICE_INTERFACE);
183 /* add a rule for which messages we want to see */
184 dbus_bus_add_match(g_conn_listener, rule, &err);
185 dbus_connection_flush(g_conn_listener);
188 if (true != dbus_connection_get_unix_fd(g_conn_listener, &fd)) {
189 SLOG(LOG_ERROR, TAG_TTSC, "Fail to get fd from dbus");
190 return TTS_ERROR_OPERATION_FAILED;
192 SLOG(LOG_DEBUG, TAG_TTSC, "Get fd from dbus : %d", fd);
195 g_dbus_fd_handler = ecore_main_fd_handler_add(fd, ECORE_FD_READ, (Ecore_Fd_Cb)listener_event_callback, NULL, NULL, NULL);
196 if (NULL == g_dbus_fd_handler) {
197 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to get fd handler from ecore");
198 return TTS_ERROR_OPERATION_FAILED;
204 int tts_dbus_close_connection()
207 dbus_error_init(&err);
209 if (NULL != g_dbus_fd_handler) {
210 ecore_main_fd_handler_del(g_dbus_fd_handler);
211 g_dbus_fd_handler = NULL;
214 dbus_connection_close(g_conn_sender);
215 dbus_connection_close(g_conn_listener);
217 dbus_connection_unref(g_conn_sender);
218 dbus_connection_unref(g_conn_listener);
220 g_conn_sender = NULL;
221 g_conn_listener = NULL;
226 int tts_dbus_reconnect()
228 bool sender_connected = dbus_connection_get_is_connected(g_conn_sender);
229 bool listener_connected = dbus_connection_get_is_connected(g_conn_listener);
230 SLOG(LOG_DEBUG, TAG_TTSC, "[DBUS] Sender(%s) Listener(%s)",
231 sender_connected ? "Connected" : "Not connected", listener_connected ? "Connected" : "Not connected");
233 if (false == sender_connected || false == listener_connected) {
234 tts_dbus_close_connection();
236 if (0 != tts_dbus_open_connection()) {
237 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to reconnect");
241 SLOG(LOG_DEBUG, TAG_TTSC, "[DBUS] Reconnect");
247 DBusMessage* __tts_dbus_make_message(int uid, const char* method)
249 if (NULL == method) {
250 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input method is NULL");
254 tts_client_s* client = tts_client_get_by_uid(uid);
257 if (NULL == client) {
258 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] uid is not available");
264 if (TTS_MODE_DEFAULT == client->mode) {
265 msg = dbus_message_new_method_call(
266 TTS_SERVER_SERVICE_NAME,
267 TTS_SERVER_SERVICE_OBJECT_PATH,
268 TTS_SERVER_SERVICE_INTERFACE,
270 } else if (TTS_MODE_NOTIFICATION == client->mode) {
271 msg = dbus_message_new_method_call(
272 TTS_NOTI_SERVER_SERVICE_NAME,
273 TTS_NOTI_SERVER_SERVICE_OBJECT_PATH,
274 TTS_NOTI_SERVER_SERVICE_INTERFACE,
276 } else if (TTS_MODE_SCREEN_READER == client->mode) {
277 msg = dbus_message_new_method_call(
278 TTS_SR_SERVER_SERVICE_NAME,
279 TTS_SR_SERVER_SERVICE_OBJECT_PATH,
280 TTS_SR_SERVER_SERVICE_INTERFACE,
283 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input mode is not available");
290 int tts_dbus_request_hello(int uid)
293 dbus_error_init(&err);
296 msg = __tts_dbus_make_message(uid, TTS_METHOD_HELLO);
298 if (dbus_error_is_set(&err)) {
299 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts dbus log : %s", err);
300 dbus_error_free(&err);
304 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request tts hello : Fail to make message");
305 return TTS_ERROR_OPERATION_FAILED;
308 DBusMessage* result_msg = NULL;
311 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, HELLO_WAITING_TIME, &err);
312 dbus_message_unref(msg);
313 if (dbus_error_is_set(&err)) {
314 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts dbus log : %s", err);
315 dbus_error_free(&err);
318 if (NULL != result_msg) {
319 dbus_message_unref(result_msg);
321 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts hello");
324 result = TTS_ERROR_TIMED_OUT;
330 int tts_dbus_request_initialize(int uid, bool* credential_needed)
334 dbus_error_init(&err);
336 msg = __tts_dbus_make_message(uid, TTS_METHOD_INITIALIZE);
339 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request tts initialize : Fail to make message");
340 return TTS_ERROR_OPERATION_FAILED;
342 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request tts initialize : uid(%d)", uid);
346 if (true != dbus_message_append_args(msg, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID)) {
347 dbus_message_unref(msg);
348 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to append args");
350 return TTS_ERROR_OPERATION_FAILED;
353 DBusMessage* result_msg;
354 int result = TTS_ERROR_OPERATION_FAILED;
356 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, WAITING_TIME, &err);
357 dbus_message_unref(msg);
358 if (dbus_error_is_set(&err)) {
359 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Send error (%s)", err.message);
360 dbus_error_free(&err);
364 if (NULL != result_msg) {
365 dbus_message_get_args(result_msg, &err,
366 DBUS_TYPE_INT32, &result,
367 DBUS_TYPE_INT32, &temp,
370 if (dbus_error_is_set(&err)) {
371 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Get arguments error (%s)", err.message);
372 dbus_error_free(&err);
373 result = TTS_ERROR_OPERATION_FAILED;
376 dbus_message_unref(result_msg);
379 *credential_needed = (bool)temp;
380 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts initialize : result = %d, credential_needed(%d)", result, *credential_needed);
382 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts initialize : result = %d", result);
385 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Result message is NULL ");
386 tts_dbus_reconnect();
387 result = TTS_ERROR_TIMED_OUT;
394 int tts_dbus_request_finalize(int uid)
398 dbus_error_init(&err);
400 msg = __tts_dbus_make_message(uid, TTS_METHOD_FINALIZE);
403 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request tts finalize : Fail to make message");
404 return TTS_ERROR_OPERATION_FAILED;
406 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request tts finalize : uid(%d)", uid);
409 if (true != dbus_message_append_args(msg, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID)) {
410 dbus_message_unref(msg);
411 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to append args");
413 return TTS_ERROR_OPERATION_FAILED;
416 DBusMessage* result_msg;
417 int result = TTS_ERROR_OPERATION_FAILED;
419 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, WAITING_TIME, &err);
420 dbus_message_unref(msg);
421 if (dbus_error_is_set(&err)) {
422 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Send error %s", err.message);
423 dbus_error_free(&err);
426 if (NULL != result_msg) {
427 dbus_message_get_args(result_msg, &err, DBUS_TYPE_INT32, &result, DBUS_TYPE_INVALID);
429 if (dbus_error_is_set(&err)) {
430 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Get arguments error (%s)", err.message);
431 dbus_error_free(&err);
432 result = TTS_ERROR_OPERATION_FAILED;
435 dbus_message_unref(result_msg);
438 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts finalize : result = %d", result);
440 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts finalize : result = %d", result);
443 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Result message is NULL ");
444 tts_dbus_reconnect();
445 result = TTS_ERROR_TIMED_OUT;
451 int tts_dbus_request_add_text(int uid, const char* text, const char* lang, int vctype, int speed, int uttid, const char* credential)
453 if (NULL == text || NULL == lang) {
454 SLOG(LOG_ERROR, TAG_TTSC, "Input parameter is NULL");
455 return TTS_ERROR_INVALID_PARAMETER;
460 dbus_error_init(&err);
462 msg = __tts_dbus_make_message(uid, TTS_METHOD_ADD_QUEUE);
465 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request tts add text : Fail to make message");
466 return TTS_ERROR_OPERATION_FAILED;
468 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request tts add text : uid(%d), text(%s), lang(%s), type(%d), speed(%d), id(%d), credential(%s)",
469 uid, text, lang, vctype, speed, uttid, (NULL == credential) ? "NULL" : credential);
473 if (NULL == credential) {
474 temp = strdup("NULL");
476 temp = strdup(credential);
479 if (true != dbus_message_append_args(msg,
480 DBUS_TYPE_INT32, &uid,
481 DBUS_TYPE_STRING, &text,
482 DBUS_TYPE_STRING, &lang,
483 DBUS_TYPE_INT32, &vctype,
484 DBUS_TYPE_INT32, &speed,
485 DBUS_TYPE_INT32, &uttid,
486 DBUS_TYPE_STRING, &temp,
487 DBUS_TYPE_INVALID)) {
488 dbus_message_unref(msg);
489 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to append args");
495 return TTS_ERROR_OPERATION_FAILED;
498 DBusMessage* result_msg;
499 int result = TTS_ERROR_OPERATION_FAILED;
501 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, WAITING_TIME, &err);
502 dbus_message_unref(msg);
503 if (dbus_error_is_set(&err)) {
504 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Send error (%s)", err.message);
505 dbus_error_free(&err);
508 if (NULL != result_msg) {
509 dbus_message_get_args(result_msg, &err,
510 DBUS_TYPE_INT32, &result,
513 if (dbus_error_is_set(&err)) {
514 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts add text : Get arguments error (%s)", err.message);
515 dbus_error_free(&err);
516 result = TTS_ERROR_OPERATION_FAILED;
518 dbus_message_unref(result_msg);
521 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts add text : result(%d)", result);
523 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts add text : result(%d)", result);
526 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Result message is NULL ");
527 tts_dbus_reconnect();
528 result = TTS_ERROR_TIMED_OUT;
538 int tts_dbus_request_set_private_data(int uid, const char* key, const char* data)
540 if (NULL == key || NULL == data) {
541 SLOG(LOG_ERROR, TAG_TTSC, "Input parameter is NULL");
542 return TTS_ERROR_INVALID_PARAMETER;
547 dbus_error_init(&err);
549 msg = __tts_dbus_make_message(uid, TTS_METHOD_SET_PRIVATE_DATA);
552 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request tts set private data : Fail to make message");
553 return TTS_ERROR_OPERATION_FAILED;
555 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request tts set private data : uid(%d)", uid);
558 if (true != dbus_message_append_args(msg,
559 DBUS_TYPE_INT32, &uid,
560 DBUS_TYPE_STRING, &key,
561 DBUS_TYPE_STRING, &data,
562 DBUS_TYPE_INVALID)) {
563 dbus_message_unref(msg);
564 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to append args");
566 return TTS_ERROR_OPERATION_FAILED;
569 DBusMessage* result_msg;
570 int result = TTS_ERROR_OPERATION_FAILED;
572 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, WAITING_TIME, &err);
573 dbus_message_unref(msg);
574 if (dbus_error_is_set(&err)) {
575 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Send error (%s)", err.message);
576 dbus_error_free(&err);
579 if (NULL != result_msg) {
580 dbus_message_get_args(result_msg, &err,
581 DBUS_TYPE_INT32, &result,
584 if (dbus_error_is_set(&err)) {
585 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts set private data : Get arguments error (%s)", err.message);
586 dbus_error_free(&err);
587 result = TTS_ERROR_OPERATION_FAILED;
589 dbus_message_unref(result_msg);
592 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts set private data : result(%d)", result);
594 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts set private data : result(%d)", result);
597 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Result message is NULL ");
598 tts_dbus_reconnect();
599 result = TTS_ERROR_TIMED_OUT;
605 int tts_dbus_request_get_private_data(int uid, const char* key, char** data)
607 if (NULL == key || NULL == data) {
608 SLOG(LOG_ERROR, TAG_TTSC, "Input parameter is NULL");
609 return TTS_ERROR_INVALID_PARAMETER;
614 dbus_error_init(&err);
616 msg = __tts_dbus_make_message(uid, TTS_METHOD_GET_PRIVATE_DATA);
619 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request tts get private data : Fail to make message");
620 return TTS_ERROR_OPERATION_FAILED;
622 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request tts get private data : uid(%d)", uid);
625 if (true != dbus_message_append_args(msg,
626 DBUS_TYPE_INT32, &uid,
627 DBUS_TYPE_STRING, &key,
628 DBUS_TYPE_INVALID)) {
629 dbus_message_unref(msg);
630 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to append args");
632 return TTS_ERROR_OPERATION_FAILED;
635 DBusMessage* result_msg;
636 int result = TTS_ERROR_OPERATION_FAILED;
638 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, WAITING_TIME, &err);
639 dbus_message_unref(msg);
640 if (dbus_error_is_set(&err)) {
641 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Send error (%s)", err.message);
642 dbus_error_free(&err);
646 if (NULL != result_msg) {
647 dbus_message_get_args(result_msg, &err,
648 DBUS_TYPE_INT32, &result,
649 DBUS_TYPE_STRING, &temp,
652 if (dbus_error_is_set(&err)) {
653 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts get private data : Get arguments error (%s)", err.message);
654 dbus_error_free(&err);
655 result = TTS_ERROR_OPERATION_FAILED;
657 dbus_message_unref(result_msg);
660 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts get private data : result(%d)", result);
662 *data = strdup(temp);
665 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts get private data : result(%d)", result);
668 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Result message is NULL ");
669 tts_dbus_reconnect();
670 result = TTS_ERROR_TIMED_OUT;
676 int tts_dbus_request_play(int uid, const char* credential)
680 dbus_error_init(&err);
682 msg = __tts_dbus_make_message(uid, TTS_METHOD_PLAY);
685 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request tts play : Fail to make message");
686 return TTS_ERROR_OPERATION_FAILED;
688 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request tts play : uid(%d)", uid);
692 if (NULL == credential) {
693 temp = strdup("NULL");
695 temp = strdup(credential);
698 if (true != dbus_message_append_args(msg,
699 DBUS_TYPE_INT32, &uid,
700 DBUS_TYPE_STRING, &temp,
701 DBUS_TYPE_INVALID)) {
702 dbus_message_unref(msg);
703 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to append args");
709 return TTS_ERROR_OPERATION_FAILED;
712 DBusMessage* result_msg;
713 int result = TTS_ERROR_OPERATION_FAILED;
715 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, WAITING_TIME, &err);
716 dbus_message_unref(msg);
717 if (dbus_error_is_set(&err)) {
718 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Send error (%s)", err.message);
719 dbus_error_free(&err);
722 if (NULL != result_msg) {
723 dbus_message_get_args(result_msg, &err,
724 DBUS_TYPE_INT32, &result,
727 if (dbus_error_is_set(&err)) {
728 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts play : Get arguments error (%s)", err.message);
729 dbus_error_free(&err);
730 result = TTS_ERROR_OPERATION_FAILED;
732 dbus_message_unref(result_msg);
735 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts play : result(%d)", result);
737 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts play : result(%d)", result);
740 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Result message is NULL ");
741 tts_dbus_reconnect();
742 result = TTS_ERROR_TIMED_OUT;
752 int tts_dbus_request_stop(int uid)
756 dbus_error_init(&err);
758 msg = __tts_dbus_make_message(uid, TTS_METHOD_STOP);
761 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request tts stop : Fail to make message");
762 return TTS_ERROR_OPERATION_FAILED;
764 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request tts stop : uid(%d)", uid);
767 DBusMessage* result_msg;
768 int result = TTS_ERROR_OPERATION_FAILED;
770 if (true != dbus_message_append_args(msg, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID)) {
771 dbus_message_unref(msg);
772 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to append args");
774 return TTS_ERROR_OPERATION_FAILED;
777 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, WAITING_TIME, &err);
778 dbus_message_unref(msg);
779 if (dbus_error_is_set(&err)) {
780 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Send error (%s)", err.message);
781 dbus_error_free(&err);
784 if (NULL != result_msg) {
785 dbus_message_get_args(result_msg, &err,
786 DBUS_TYPE_INT32, &result,
789 if (dbus_error_is_set(&err)) {
790 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts stop : Get arguments error (%s)", err.message);
791 dbus_error_free(&err);
792 result = TTS_ERROR_OPERATION_FAILED;
794 dbus_message_unref(result_msg);
797 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts stop : result(%d)", result);
799 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts stop : result(%d)", result);
802 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Result message is NULL ");
803 tts_dbus_reconnect();
804 result = TTS_ERROR_TIMED_OUT;
810 int tts_dbus_request_pause(int uid)
814 dbus_error_init(&err);
816 msg = __tts_dbus_make_message(uid, TTS_METHOD_PAUSE);
819 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request tts pause : Fail to make message");
820 return TTS_ERROR_OPERATION_FAILED;
822 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request tts pause : uid(%d)", uid);
825 DBusMessage* result_msg;
826 int result = TTS_ERROR_OPERATION_FAILED;
828 if (true != dbus_message_append_args(msg, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID)) {
829 dbus_message_unref(msg);
830 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to append args");
832 return TTS_ERROR_OPERATION_FAILED;
835 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, WAITING_TIME, &err);
836 dbus_message_unref(msg);
837 if (dbus_error_is_set(&err)) {
838 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Send error (%s)", err.message);
839 dbus_error_free(&err);
842 if (NULL != result_msg) {
843 dbus_message_get_args(result_msg, &err,
844 DBUS_TYPE_INT32, &result,
847 if (dbus_error_is_set(&err)) {
848 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts pause : Get arguments error (%s)", err.message);
849 dbus_error_free(&err);
850 result = TTS_ERROR_OPERATION_FAILED;
852 dbus_message_unref(result_msg);
855 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts pause : result(%d)", result);
857 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts pause : result(%d)", result);
860 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Result message is NULL ");
861 tts_dbus_reconnect();
862 result = TTS_ERROR_TIMED_OUT;