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);
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 } /* TTSD_METHOD_UTTERANCE_COMPLETED */
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_METHOD_SET_STATE */
114 else if (dbus_message_is_signal(msg, if_name, TTSD_METHOD_ERROR)) {
119 dbus_message_get_args(msg, &err,
120 DBUS_TYPE_INT32, &uid,
121 DBUS_TYPE_INT32, &uttid,
122 DBUS_TYPE_INT32, &reason,
125 if (dbus_error_is_set(&err)) {
126 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Get Error message - Get arguments error (%s)", err.message);
127 dbus_error_free(&err);
130 if (0 == __tts_cb_error(uid, reason, uttid)) {
131 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Get Error message : uid(%d), error(%d), uttid(%d)", uid, reason, uttid);
133 } /* TTSD_METHOD_ERROR */
135 /* free the message */
136 dbus_message_unref(msg);
138 return ECORE_CALLBACK_PASS_ON;
141 int tts_dbus_open_connection()
143 if (NULL != g_conn_sender && NULL != g_conn_listener) {
144 SLOG(LOG_WARN, TAG_TTSC, "already existed connection ");
150 /* initialise the error value */
151 dbus_error_init(&err);
153 /* connect to the DBUS system bus, and check for errors */
154 g_conn_sender = dbus_bus_get_private(DBUS_BUS_SYSTEM, &err);
155 if (dbus_error_is_set(&err)) {
156 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Dbus Connection Error (%s)", err.message);
157 dbus_error_free(&err);
160 if (NULL == g_conn_sender) {
161 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] fail to get dbus connection");
162 return TTS_ERROR_OPERATION_FAILED;
165 dbus_connection_set_exit_on_disconnect(g_conn_sender, false);
167 g_conn_listener = dbus_bus_get_private(DBUS_BUS_SYSTEM, &err);
168 if (dbus_error_is_set(&err)) {
169 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Dbus Connection Error (%s)", err.message);
170 dbus_error_free(&err);
173 if (NULL == g_conn_listener) {
174 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] fail to get dbus connection for listener");
175 return TTS_ERROR_OPERATION_FAILED;
181 char service_name[64];
182 memset(service_name, 0, 64);
183 snprintf(service_name, 64, "%s%d", TTS_CLIENT_SERVICE_NAME, pid);
185 SLOG(LOG_DEBUG, TAG_TTSC, "Service name is %s", service_name);
187 /* register our name on the bus, and check for errors */
188 dbus_bus_request_name(g_conn_listener, service_name, DBUS_NAME_FLAG_REPLACE_EXISTING, &err);
189 if (dbus_error_is_set(&err)) {
190 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Name Error (%s)", err.message);
191 dbus_error_free(&err);
194 char rule[128] = {0, };
195 snprintf(rule, 128, "type='signal',interface='%s'", TTS_CLIENT_SERVICE_INTERFACE);
196 SLOG(LOG_DEBUG, TAG_TTSC, "rule is %s", rule);
198 /* add a rule for which messages we want to see */
199 dbus_bus_add_match(g_conn_listener, rule, &err);
200 dbus_connection_flush(g_conn_listener);
203 if (true != dbus_connection_get_unix_fd(g_conn_listener, &fd)) {
204 SLOG(LOG_ERROR, TAG_TTSC, "Fail to get fd from dbus");
205 return TTS_ERROR_OPERATION_FAILED;
207 SLOG(LOG_DEBUG, TAG_TTSC, "Get fd from dbus : %d", fd);
210 g_dbus_fd_handler = ecore_main_fd_handler_add(fd, ECORE_FD_READ, (Ecore_Fd_Cb)listener_event_callback, NULL, NULL, NULL);
211 if (NULL == g_dbus_fd_handler) {
212 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to get fd handler from ecore");
213 return TTS_ERROR_OPERATION_FAILED;
219 int tts_dbus_close_connection()
222 dbus_error_init(&err);
224 if (NULL != g_dbus_fd_handler) {
225 ecore_main_fd_handler_del(g_dbus_fd_handler);
226 g_dbus_fd_handler = NULL;
231 char service_name[64];
232 memset(service_name, 0, 64);
233 snprintf(service_name, 64, "%s%d", TTS_CLIENT_SERVICE_NAME, pid);
234 snprintf(service_name, 64, "%s", TTS_CLIENT_SERVICE_NAME);
236 dbus_bus_release_name(g_conn_listener, service_name, &err);
237 if (dbus_error_is_set(&err)) {
238 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Release name error (%s)", err.message);
239 dbus_error_free(&err);
242 g_conn_sender = NULL;
243 g_conn_listener = NULL;
248 int tts_dbus_reconnect()
250 bool sender_connected = dbus_connection_get_is_connected(g_conn_sender);
251 bool listener_connected = dbus_connection_get_is_connected(g_conn_listener);
252 SLOG(LOG_DEBUG, TAG_TTSC, "[DBUS] Sender(%s) Listener(%s)",
253 sender_connected ? "Connected" : "Not connected", listener_connected ? "Connected" : "Not connected");
255 if (false == sender_connected || false == listener_connected) {
256 tts_dbus_close_connection();
258 if (0 != tts_dbus_open_connection()) {
259 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to reconnect");
263 SLOG(LOG_DEBUG, TAG_TTSC, "[DBUS] Reconnect");
269 DBusMessage* __tts_dbus_make_message(int uid, const char* method)
271 if (NULL == method) {
272 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input method is NULL");
276 tts_client_s* client = tts_client_get_by_uid(uid);
279 if (NULL == client) {
280 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] uid is not available");
286 if (TTS_MODE_DEFAULT == client->mode) {
287 msg = dbus_message_new_method_call(
288 TTS_SERVER_SERVICE_NAME,
289 TTS_SERVER_SERVICE_OBJECT_PATH,
290 TTS_SERVER_SERVICE_INTERFACE,
292 } else if (TTS_MODE_NOTIFICATION == client->mode) {
293 msg = dbus_message_new_method_call(
294 TTS_NOTI_SERVER_SERVICE_NAME,
295 TTS_NOTI_SERVER_SERVICE_OBJECT_PATH,
296 TTS_NOTI_SERVER_SERVICE_INTERFACE,
298 } else if (TTS_MODE_SCREEN_READER == client->mode) {
299 msg = dbus_message_new_method_call(
300 TTS_SR_SERVER_SERVICE_NAME,
301 TTS_SR_SERVER_SERVICE_OBJECT_PATH,
302 TTS_SR_SERVER_SERVICE_INTERFACE,
305 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input mode is not available");
312 int tts_dbus_request_hello(int uid)
315 dbus_error_init(&err);
318 msg = __tts_dbus_make_message(uid, TTS_METHOD_HELLO);
320 if (dbus_error_is_set(&err)) {
321 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts dbus log : %s", err);
322 dbus_error_free(&err);
326 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request tts hello : Fail to make message");
327 return TTS_ERROR_OPERATION_FAILED;
330 DBusMessage* result_msg = NULL;
333 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, HELLO_WAITING_TIME, &err);
334 dbus_message_unref(msg);
335 if (dbus_error_is_set(&err)) {
336 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts dbus log : %s", err);
337 dbus_error_free(&err);
340 if (NULL != result_msg) {
341 dbus_message_unref(result_msg);
343 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts hello");
346 result = TTS_ERROR_TIMED_OUT;
352 int tts_dbus_request_initialize(int uid)
356 dbus_error_init(&err);
358 msg = __tts_dbus_make_message(uid, TTS_METHOD_INITIALIZE);
361 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request tts initialize : Fail to make message");
362 return TTS_ERROR_OPERATION_FAILED;
364 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request tts initialize : uid(%d)", uid);
368 if (true != dbus_message_append_args(msg, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID)) {
369 dbus_message_unref(msg);
370 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to append args");
372 return TTS_ERROR_OPERATION_FAILED;
375 DBusMessage* result_msg;
376 int result = TTS_ERROR_OPERATION_FAILED;
378 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, WAITING_TIME, &err);
379 dbus_message_unref(msg);
380 if (dbus_error_is_set(&err)) {
381 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Send error (%s)", err.message);
382 dbus_error_free(&err);
385 if (NULL != result_msg) {
386 dbus_message_get_args(result_msg, &err,
387 DBUS_TYPE_INT32, &result,
390 if (dbus_error_is_set(&err)) {
391 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Get arguments error (%s)", err.message);
392 dbus_error_free(&err);
393 result = TTS_ERROR_OPERATION_FAILED;
396 dbus_message_unref(result_msg);
399 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts initialize : result = %d", result);
401 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts initialize : result = %d", result);
404 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Result message is NULL ");
405 tts_dbus_reconnect();
406 result = TTS_ERROR_TIMED_OUT;
413 int tts_dbus_request_finalize(int uid)
417 dbus_error_init(&err);
419 msg = __tts_dbus_make_message(uid, TTS_METHOD_FINALIZE);
422 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request tts finalize : Fail to make message");
423 return TTS_ERROR_OPERATION_FAILED;
425 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request tts finalize : uid(%d)", uid);
428 if (true != dbus_message_append_args(msg, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID)) {
429 dbus_message_unref(msg);
430 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to append args");
432 return TTS_ERROR_OPERATION_FAILED;
435 DBusMessage* result_msg;
436 int result = TTS_ERROR_OPERATION_FAILED;
438 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, WAITING_TIME, &err);
439 dbus_message_unref(msg);
440 if (dbus_error_is_set(&err)) {
441 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Send error %s", err.message);
442 dbus_error_free(&err);
445 if (NULL != result_msg) {
446 dbus_message_get_args(result_msg, &err, DBUS_TYPE_INT32, &result, DBUS_TYPE_INVALID);
448 if (dbus_error_is_set(&err)) {
449 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Get arguments error (%s)", err.message);
450 dbus_error_free(&err);
451 result = TTS_ERROR_OPERATION_FAILED;
454 dbus_message_unref(result_msg);
457 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts finalize : result = %d", result);
459 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts finalize : result = %d", result);
462 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Result message is NULL ");
463 tts_dbus_reconnect();
464 result = TTS_ERROR_TIMED_OUT;
470 int tts_dbus_request_add_text(int uid, const char* text, const char* lang, int vctype, int speed, int uttid)
472 if (NULL == text || NULL == lang) {
473 SLOG(LOG_ERROR, TAG_TTSC, "Input parameter is NULL");
474 return TTS_ERROR_INVALID_PARAMETER;
479 dbus_error_init(&err);
481 msg = __tts_dbus_make_message(uid, TTS_METHOD_ADD_QUEUE);
484 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request tts add text : Fail to make message");
485 return TTS_ERROR_OPERATION_FAILED;
487 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request tts add text : uid(%d), text(%s), lang(%s), type(%d), speed(%d), id(%d)",
488 uid, text, lang, vctype, speed, uttid);
491 if (true != dbus_message_append_args(msg,
492 DBUS_TYPE_INT32, &uid,
493 DBUS_TYPE_STRING, &text,
494 DBUS_TYPE_STRING, &lang,
495 DBUS_TYPE_INT32, &vctype,
496 DBUS_TYPE_INT32, &speed,
497 DBUS_TYPE_INT32, &uttid,
498 DBUS_TYPE_INVALID)) {
499 dbus_message_unref(msg);
500 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to append args");
502 return TTS_ERROR_OPERATION_FAILED;
505 DBusMessage* result_msg;
506 int result = TTS_ERROR_OPERATION_FAILED;
508 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, WAITING_TIME, &err);
509 dbus_message_unref(msg);
510 if (dbus_error_is_set(&err)) {
511 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Send error (%s)", err.message);
512 dbus_error_free(&err);
515 if (NULL != result_msg) {
516 dbus_message_get_args(result_msg, &err,
517 DBUS_TYPE_INT32, &result,
520 if (dbus_error_is_set(&err)) {
521 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts add text : Get arguments error (%s)", err.message);
522 dbus_error_free(&err);
523 result = TTS_ERROR_OPERATION_FAILED;
525 dbus_message_unref(result_msg);
528 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts add text : result(%d)", result);
530 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts add text : result(%d)", result);
533 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Result message is NULL ");
534 tts_dbus_reconnect();
535 result = TTS_ERROR_TIMED_OUT;
541 int tts_dbus_request_play(int uid)
545 dbus_error_init(&err);
547 msg = __tts_dbus_make_message(uid, TTS_METHOD_PLAY);
550 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request tts play : Fail to make message");
551 return TTS_ERROR_OPERATION_FAILED;
553 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request tts play : uid(%d)", uid);
556 if (true != dbus_message_append_args(msg, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID)) {
557 dbus_message_unref(msg);
558 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to append args");
560 return TTS_ERROR_OPERATION_FAILED;
563 DBusMessage* result_msg;
564 int result = TTS_ERROR_OPERATION_FAILED;
566 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, WAITING_TIME, &err);
567 dbus_message_unref(msg);
568 if (dbus_error_is_set(&err)) {
569 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Send error (%s)", err.message);
570 dbus_error_free(&err);
573 if (NULL != result_msg) {
574 dbus_message_get_args(result_msg, &err,
575 DBUS_TYPE_INT32, &result,
578 if (dbus_error_is_set(&err)) {
579 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts play : Get arguments error (%s)", err.message);
580 dbus_error_free(&err);
581 result = TTS_ERROR_OPERATION_FAILED;
583 dbus_message_unref(result_msg);
586 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts play : result(%d)", result);
588 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts play : result(%d)", result);
591 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Result message is NULL ");
592 tts_dbus_reconnect();
593 result = TTS_ERROR_TIMED_OUT;
599 int tts_dbus_request_stop(int uid)
603 dbus_error_init(&err);
605 msg = __tts_dbus_make_message(uid, TTS_METHOD_STOP);
608 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request tts stop : Fail to make message");
609 return TTS_ERROR_OPERATION_FAILED;
611 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request tts stop : uid(%d)", uid);
614 DBusMessage* result_msg;
615 int result = TTS_ERROR_OPERATION_FAILED;
617 if (true != dbus_message_append_args(msg, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID)) {
618 dbus_message_unref(msg);
619 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to append args");
621 return TTS_ERROR_OPERATION_FAILED;
624 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, WAITING_TIME, &err);
625 dbus_message_unref(msg);
626 if (dbus_error_is_set(&err)) {
627 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Send error (%s)", err.message);
628 dbus_error_free(&err);
631 if (NULL != result_msg) {
632 dbus_message_get_args(result_msg, &err,
633 DBUS_TYPE_INT32, &result,
636 if (dbus_error_is_set(&err)) {
637 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts stop : Get arguments error (%s)", err.message);
638 dbus_error_free(&err);
639 result = TTS_ERROR_OPERATION_FAILED;
641 dbus_message_unref(result_msg);
644 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts stop : result(%d)", result);
646 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts stop : result(%d)", result);
649 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Result message is NULL ");
650 tts_dbus_reconnect();
651 result = TTS_ERROR_TIMED_OUT;
657 int tts_dbus_request_pause(int uid)
661 dbus_error_init(&err);
663 msg = __tts_dbus_make_message(uid, TTS_METHOD_PAUSE);
666 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request tts pause : Fail to make message");
667 return TTS_ERROR_OPERATION_FAILED;
669 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request tts pause : uid(%d)", uid);
672 DBusMessage* result_msg;
673 int result = TTS_ERROR_OPERATION_FAILED;
675 if (true != dbus_message_append_args(msg, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID)) {
676 dbus_message_unref(msg);
677 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to append args");
679 return TTS_ERROR_OPERATION_FAILED;
682 result_msg = dbus_connection_send_with_reply_and_block(g_conn_sender, msg, WAITING_TIME, &err);
683 dbus_message_unref(msg);
684 if (dbus_error_is_set(&err)) {
685 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Send error (%s)", err.message);
686 dbus_error_free(&err);
689 if (NULL != result_msg) {
690 dbus_message_get_args(result_msg, &err,
691 DBUS_TYPE_INT32, &result,
694 if (dbus_error_is_set(&err)) {
695 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts pause : Get arguments error (%s)", err.message);
696 dbus_error_free(&err);
697 result = TTS_ERROR_OPERATION_FAILED;
699 dbus_message_unref(result_msg);
702 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts pause : result(%d)", result);
704 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts pause : result(%d)", result);
707 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Result message is NULL ");
708 tts_dbus_reconnect();
709 result = TTS_ERROR_TIMED_OUT;