2 * Copyright (c) 2012 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.
19 #include "tts_client.h"
21 #define INIT_WAITING_TIME 5000
22 #define WAITING_TIME 1000
24 static Ecore_Fd_Handler* g_fd_handler = NULL;
26 static DBusConnection* g_conn = NULL;
29 extern int __tts_cb_error(int uid, tts_error_e reason, int utt_id);
31 extern int __tts_cb_set_state(int uid, int state);
33 extern int __tts_cb_utt_started(int uid, int utt_id);
35 extern int __tts_cb_utt_completed(int uid, int utt_id);
38 static Eina_Bool listener_event_callback(void* data, Ecore_Fd_Handler *fd_handler)
40 DBusConnection* conn = (DBusConnection*)data;
42 if (NULL == conn) return ECORE_CALLBACK_RENEW;
44 dbus_connection_read_write_dispatch(conn, 50);
46 DBusMessage* msg = NULL;
47 msg = dbus_connection_pop_message(conn);
49 /* loop again if we haven't read a message */
51 return ECORE_CALLBACK_RENEW;
55 dbus_error_init(&err);
57 DBusMessage *reply = NULL;
60 snprintf(if_name, 64, "%s%d", TTS_CLIENT_SERVICE_INTERFACE, getpid());
62 /* check if the message is a signal from the correct interface and with the correct name */
63 if (dbus_message_is_method_call(msg, if_name, TTSD_METHOD_HELLO)) {
64 SLOG(LOG_DEBUG, TAG_TTSC, "===== Get Hello");
68 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID);
71 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts get hello : uid(%d) \n", uid);
74 tts_client_s* client = tts_client_get_by_uid(uid);
80 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts get hello : invalid uid \n");
83 reply = dbus_message_new_method_return(msg);
86 dbus_message_append_args(reply, DBUS_TYPE_INT32, &response, DBUS_TYPE_INVALID);
88 if (!dbus_connection_send(conn, reply, NULL))
89 SLOG(LOG_ERROR, TAG_TTSC, ">>>> tts get hello : fail to send reply");
91 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> tts get hello : result(%d)", response);
93 dbus_connection_flush(conn);
94 dbus_message_unref(reply);
96 SLOG(LOG_ERROR, TAG_TTSC, ">>>> tts get hello : fail to create reply message");
99 SLOG(LOG_DEBUG, TAG_TTSC, "=====");
100 SLOG(LOG_DEBUG, TAG_TTSC, " ");
101 } /* TTSD_METHOD_HELLO */
103 else if (dbus_message_is_method_call(msg, if_name, TTSD_METHOD_UTTERANCE_STARTED)) {
104 SLOG(LOG_DEBUG, TAG_TTSC, "===== Get utterance started");
106 dbus_message_get_args(msg, &err,
107 DBUS_TYPE_INT32, &uid,
108 DBUS_TYPE_INT32, &uttid,
111 if (dbus_error_is_set(&err)) {
112 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Get Utterance started - Get arguments error (%s)\n", err.message);
113 dbus_error_free(&err);
115 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< Get Utterance started message : uid(%d), uttid(%d) \n", uid, uttid);
116 __tts_cb_utt_started(uid, uttid);
119 SLOG(LOG_DEBUG, TAG_TTSC, "=====");
120 SLOG(LOG_DEBUG, TAG_TTSC, " ");
121 }/* TTS_SIGNAL_UTTERANCE_STARTED */
123 else if (dbus_message_is_method_call(msg, if_name, TTSD_METHOD_UTTERANCE_COMPLETED)) {
124 SLOG(LOG_DEBUG, TAG_TTSC, "===== Get utterance completed");
126 dbus_message_get_args(msg, &err,
127 DBUS_TYPE_INT32, &uid,
128 DBUS_TYPE_INT32, &uttid,
131 if (dbus_error_is_set(&err)) {
132 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Get Utterance completed - Get arguments error (%s)\n", err.message);
133 dbus_error_free(&err);
135 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< Get Utterance completed message : uid(%d), uttid(%d) \n", uid, uttid);
136 __tts_cb_utt_completed(uid, uttid);
139 SLOG(LOG_DEBUG, TAG_TTSC, "=====");
140 SLOG(LOG_DEBUG, TAG_TTSC, " ");
141 }/* TTS_SIGNAL_UTTERANCE_COMPLETED */
143 else if (dbus_message_is_method_call(msg, if_name, TTSD_METHOD_SET_STATE)) {
144 SLOG(LOG_DEBUG, TAG_TTSC, "===== Get state changed callback");
147 dbus_message_get_args(msg, &err,
148 DBUS_TYPE_INT32, &uid,
149 DBUS_TYPE_INT32, &state,
152 if (dbus_error_is_set(&err)) {
153 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Get state change - Get arguments error (%s)", err.message);
154 dbus_error_free(&err);
156 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< Get state change : uid(%d) , state(%d)", uid, state);
157 __tts_cb_set_state(uid, state);
160 SLOG(LOG_DEBUG, TAG_TTSC, "=====");
161 SLOG(LOG_DEBUG, TAG_TTSC, " ");
162 } /* TTSD_METHOD_SET_STATE */
164 else if (dbus_message_is_method_call(msg, if_name, TTSD_METHOD_ERROR)) {
165 SLOG(LOG_DEBUG, TAG_TTSC, "===== Get error callback");
171 dbus_message_get_args(msg, &err,
172 DBUS_TYPE_INT32, &uid,
173 DBUS_TYPE_INT32, &uttid,
174 DBUS_TYPE_INT32, &reason,
177 if (dbus_error_is_set(&err)) {
178 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Get Error signal - Get arguments error (%s)\n", err.message);
179 dbus_error_free(&err);
181 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< Get Error signal : uid(%d), error(%d), uttid(%d)\n", uid, reason, uttid);
182 __tts_cb_error(uid, reason, uttid);
185 SLOG(LOG_DEBUG, TAG_TTSC, "=====");
186 SLOG(LOG_DEBUG, TAG_TTSC, " ");
187 }/* TTS_SIGNAL_ERROR */
189 /* free the message */
190 dbus_message_unref(msg);
192 return ECORE_CALLBACK_PASS_ON;
196 int tts_dbus_open_connection()
198 if (NULL != g_conn) {
199 SLOG(LOG_WARN, TAG_TTSC, "already existed connection ");
206 /* initialise the error value */
207 dbus_error_init(&err);
209 /* connect to the DBUS system bus, and check for errors */
210 g_conn = dbus_bus_get_private(DBUS_BUS_SYSTEM, &err);
212 if (dbus_error_is_set(&err)) {
213 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Dbus Connection Error (%s)\n", err.message);
214 dbus_error_free(&err);
217 if (NULL == g_conn) {
218 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] fail to get dbus connection \n");
219 return TTS_ERROR_OPERATION_FAILED;
222 dbus_connection_set_exit_on_disconnect(g_conn, false);
226 char service_name[64];
227 memset(service_name, 0, 64);
228 snprintf(service_name, 64, "%s%d", TTS_CLIENT_SERVICE_NAME, pid);
230 SLOG(LOG_DEBUG, TAG_TTSC, "Service name is %s\n", service_name);
232 /* register our name on the bus, and check for errors */
233 ret = dbus_bus_request_name(g_conn, service_name, DBUS_NAME_FLAG_REPLACE_EXISTING , &err);
235 if (dbus_error_is_set(&err)) {
236 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Name Error (%s)\n", err.message);
237 dbus_error_free(&err);
240 if (DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER != ret) {
241 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to open connection : Service name has already been existed. \n");
242 return TTS_ERROR_OPERATION_FAILED;
246 snprintf(rule, 128, "type='signal',interface='%s%d'", TTS_CLIENT_SERVICE_INTERFACE, pid);
248 /* add a rule for which messages we want to see */
249 dbus_bus_add_match(g_conn, rule, &err);
250 dbus_connection_flush(g_conn);
252 if (dbus_error_is_set(&err)) {
253 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Match Error (%s)\n", err.message);
254 return TTS_ERROR_OPERATION_FAILED;
258 dbus_connection_get_unix_fd(g_conn, &fd);
260 g_fd_handler = ecore_main_fd_handler_add(fd, ECORE_FD_READ, (Ecore_Fd_Cb)listener_event_callback, g_conn, NULL, NULL);
262 if (NULL == g_fd_handler) {
263 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to get fd handler from ecore \n");
264 return TTS_ERROR_OPERATION_FAILED;
271 int tts_dbus_close_connection()
274 dbus_error_init(&err);
276 ecore_main_fd_handler_del(g_fd_handler);
280 char service_name[64];
281 memset(service_name, 0, 64);
282 snprintf(service_name, 64, "%s%d", TTS_CLIENT_SERVICE_NAME, pid);
284 dbus_bus_release_name (g_conn, service_name, &err);
286 dbus_connection_close(g_conn);
295 int tts_dbus_reconnect()
297 bool connected = dbus_connection_get_is_connected(g_conn);
298 SLOG(LOG_DEBUG, "[DBUS] %s\n", connected ? "Connected" : "Not connected");
300 if (false == connected) {
301 tts_dbus_close_connection();
303 if(0 != tts_dbus_open_connection()) {
304 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to reconnect");
308 SLOG(LOG_DEBUG, TAG_TTSC, "[DBUS] Reconnect");
315 int tts_dbus_request_hello()
319 msg = dbus_message_new_method_call(
320 TTS_SERVER_SERVICE_NAME,
321 TTS_SERVER_SERVICE_OBJECT_PATH,
322 TTS_SERVER_SERVICE_INTERFACE,
326 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request tts hello : Fail to make message \n");
327 return TTS_ERROR_OPERATION_FAILED;
329 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request tts hello");
333 dbus_error_init(&err);
335 DBusMessage* result_msg = NULL;
338 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, WAITING_TIME, &err);
340 dbus_message_unref(msg);
342 if (NULL != result_msg) {
343 dbus_message_unref(result_msg);
345 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts hello");
348 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts hello : no response");
349 result = TTS_ERROR_OPERATION_FAILED;
355 int tts_dbus_request_initialize(int uid)
359 dbus_error_init(&err);
361 msg = dbus_message_new_method_call(
362 TTS_SERVER_SERVICE_NAME,
363 TTS_SERVER_SERVICE_OBJECT_PATH,
364 TTS_SERVER_SERVICE_INTERFACE,
365 TTS_METHOD_INITIALIZE);
368 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request tts initialize : Fail to make message \n");
369 if (dbus_error_is_set(&err))
370 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] %s", err.message);
372 return TTS_ERROR_OPERATION_FAILED;
374 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request tts initialize : uid(%d)", uid);
378 if (true != dbus_message_append_args(msg, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID)) {
379 dbus_message_unref(msg);
380 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to append args");
382 return TTS_ERROR_OPERATION_FAILED;
385 DBusMessage* result_msg;
386 int result = TTS_ERROR_OPERATION_FAILED;
388 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, INIT_WAITING_TIME, &err);
389 dbus_message_unref(msg);
391 if (dbus_error_is_set(&err))
392 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] %s", err.message);
394 if (NULL != result_msg) {
395 dbus_message_get_args(result_msg, &err,
396 DBUS_TYPE_INT32, &result,
399 if (dbus_error_is_set(&err)) {
400 SLOG(LOG_ERROR, TAG_TTSC, "Get arguments error (%s)\n", err.message);
401 dbus_error_free(&err);
402 result = TTS_ERROR_OPERATION_FAILED;
405 dbus_message_unref(result_msg);
407 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Result message is NULL ");
408 if (dbus_error_is_set(&err))
409 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] %s", err.message);
410 tts_dbus_reconnect();
414 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts initialize : result = %d \n", result);
416 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts initialize : result = %d \n", result);
423 int tts_dbus_request_finalize(int uid)
427 dbus_error_init(&err);
429 msg = dbus_message_new_method_call(
430 TTS_SERVER_SERVICE_NAME,
431 TTS_SERVER_SERVICE_OBJECT_PATH,
432 TTS_SERVER_SERVICE_INTERFACE,
433 TTS_METHOD_FINALIZE);
436 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request tts finalize : Fail to make message");
437 if (dbus_error_is_set(&err))
438 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] %s", err.message);
440 return TTS_ERROR_OPERATION_FAILED;
442 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request tts finalize : uid(%d)", uid);
445 if (true != dbus_message_append_args(msg, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID)) {
446 dbus_message_unref(msg);
447 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to append args");
449 return TTS_ERROR_OPERATION_FAILED;
452 DBusMessage* result_msg;
453 int result = TTS_ERROR_OPERATION_FAILED;
455 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, WAITING_TIME, &err);
456 dbus_message_unref(msg);
458 if (dbus_error_is_set(&err))
459 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] %s", err.message);
461 if (NULL != result_msg) {
462 dbus_message_get_args(result_msg, &err, DBUS_TYPE_INT32, &result, DBUS_TYPE_INVALID);
464 if (dbus_error_is_set(&err)) {
465 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Get arguments error (%s)\n", err.message);
466 dbus_error_free(&err);
467 result = TTS_ERROR_OPERATION_FAILED;
470 dbus_message_unref(result_msg);
472 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Result message is NULL ");
473 if (dbus_error_is_set(&err))
474 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] %s", err.message);
475 tts_dbus_reconnect();
479 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts finalize : result = %d \n", result);
481 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts finalize : result = %d \n", result);
487 int tts_dbus_request_get_support_voice(int uid, tts_h tts, tts_supported_voice_cb callback, void* user_data)
491 dbus_error_init(&err);
493 msg = dbus_message_new_method_call(
494 TTS_SERVER_SERVICE_NAME,
495 TTS_SERVER_SERVICE_OBJECT_PATH,
496 TTS_SERVER_SERVICE_INTERFACE,
497 TTS_METHOD_GET_SUPPORT_VOICES);
500 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request tts get supported voices : Fail to make message");
501 if (dbus_error_is_set(&err))
502 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] %s", err.message);
504 return TTS_ERROR_OPERATION_FAILED;
506 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request tts get supported voices : uid(%d)", uid);
509 if (true != dbus_message_append_args( msg, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID)) {
510 dbus_message_unref(msg);
511 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to append args");
513 return TTS_ERROR_OPERATION_FAILED;
516 DBusMessage* result_msg;
517 DBusMessageIter args;
518 int result = TTS_ERROR_OPERATION_FAILED;
520 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, WAITING_TIME, &err );
521 dbus_message_unref(msg);
523 if (dbus_error_is_set(&err)) {
524 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] %s", err.message);
525 printf("result message : %p\n", result_msg);
528 if (NULL != result_msg) {
529 if (dbus_message_iter_init(result_msg, &args)) {
531 if (DBUS_TYPE_INT32 == dbus_message_iter_get_arg_type(&args)) {
532 dbus_message_iter_get_basic(&args, &result);
533 dbus_message_iter_next(&args);
537 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts get supported voices : result = %d \n", result);
544 if (DBUS_TYPE_INT32 == dbus_message_iter_get_arg_type(&args)) {
545 dbus_message_iter_get_basic(&args, &size);
546 dbus_message_iter_next(&args);
550 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts size of voice error : size = %d \n", size);
553 for (i=0 ; i<size ; i++) {
554 dbus_message_iter_get_basic(&args, &(temp_char) );
555 dbus_message_iter_next(&args);
556 dbus_message_iter_get_basic(&args, &(temp_int) );
557 dbus_message_iter_next(&args);
559 if (true != callback(tts, temp_char, (tts_voice_type_e)temp_int, user_data)) {
565 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts get supported voices : result = %d \n", result);
568 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts get supported voices : result message is invalid \n");
569 result = TTS_ERROR_OPERATION_FAILED;
571 dbus_message_unref(result_msg);
573 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Result message is NULL");
574 if (dbus_error_is_set(&err))
575 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] %s", err.message);
576 tts_dbus_reconnect();
582 int tts_dbus_request_get_default_voice(int uid , char** lang, tts_voice_type_e* vctype)
584 if (NULL == lang || NULL == vctype) {
585 SLOG(LOG_ERROR, TAG_TTSC, "Input parameter is NULL");
586 return TTS_ERROR_INVALID_PARAMETER;
591 dbus_error_init(&err);
593 msg = dbus_message_new_method_call(
594 TTS_SERVER_SERVICE_NAME,
595 TTS_SERVER_SERVICE_OBJECT_PATH,
596 TTS_SERVER_SERVICE_INTERFACE,
597 TTS_METHOD_GET_CURRENT_VOICE);
600 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request tts get default voice : Fail to make message");
601 if (dbus_error_is_set(&err))
602 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] %s", err.message);
604 return TTS_ERROR_OPERATION_FAILED;
606 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request tts get default voice : uid(%d)", uid);
609 if (true != dbus_message_append_args( msg, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID)) {
610 dbus_message_unref(msg);
611 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to append args");
613 return TTS_ERROR_OPERATION_FAILED;
616 DBusMessage* result_msg;
617 int result = TTS_ERROR_OPERATION_FAILED;
621 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, WAITING_TIME, &err);
622 dbus_message_unref(msg);
624 if (dbus_error_is_set(&err)) {
625 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] %s", err.message);
626 printf("result message : %p\n", result_msg);
629 if (NULL != result_msg) {
630 dbus_message_get_args(result_msg, &err,
631 DBUS_TYPE_INT32, &result,
632 DBUS_TYPE_STRING, &temp_lang,
633 DBUS_TYPE_INT32, &voice_type,
636 if (dbus_error_is_set(&err)) {
637 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Get arguments error (%s)\n", err.message);
638 dbus_error_free(&err);
639 result = TTS_ERROR_OPERATION_FAILED;
641 dbus_message_unref(result_msg);
643 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Result message is NULL ");
644 if (dbus_error_is_set(&err))
645 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] %s", err.message);
646 tts_dbus_reconnect();
650 *lang = strdup(temp_lang);
651 *vctype = (tts_voice_type_e)voice_type;
654 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts get default voice : Out of memory \n");
655 result = TTS_ERROR_OUT_OF_MEMORY;
657 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts get default voice : result(%d), lang(%s), vctype(%d) \n", result, *lang, *vctype);
660 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts get default voice : result(%d) \n", result);
667 int tts_dbus_request_add_text(int uid, const char* text, const char* lang, int vctype, int speed, int uttid)
669 if (NULL == text || NULL == lang) {
670 SLOG(LOG_ERROR, TAG_TTSC, "Input parameter is NULL");
671 return TTS_ERROR_INVALID_PARAMETER;
676 dbus_error_init(&err);
678 msg = dbus_message_new_method_call(
679 TTS_SERVER_SERVICE_NAME,
680 TTS_SERVER_SERVICE_OBJECT_PATH,
681 TTS_SERVER_SERVICE_INTERFACE,
682 TTS_METHOD_ADD_QUEUE);
685 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request tts add text : Fail to make message");
686 if (dbus_error_is_set(&err))
687 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] %s", err.message);
689 return TTS_ERROR_OPERATION_FAILED;
691 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request tts add text : uid(%d), text(%s), lang(%s), type(%d), speed(%d), id(%d)",
692 uid, text, lang, vctype, speed, uttid);
695 if (true != dbus_message_append_args( msg,
696 DBUS_TYPE_INT32, &uid,
697 DBUS_TYPE_STRING, &text,
698 DBUS_TYPE_STRING, &lang,
699 DBUS_TYPE_INT32, &vctype,
700 DBUS_TYPE_INT32, &speed,
701 DBUS_TYPE_INT32, &uttid,
702 DBUS_TYPE_INVALID)) {
703 dbus_message_unref(msg);
704 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to append args");
706 return TTS_ERROR_OPERATION_FAILED;
709 DBusMessage* result_msg;
710 int result = TTS_ERROR_OPERATION_FAILED;
712 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, 5000, &err);
713 dbus_message_unref(msg);
715 if (dbus_error_is_set(&err))
716 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] %s", err.message);
718 if (NULL != result_msg) {
719 dbus_message_get_args(result_msg, &err,
720 DBUS_TYPE_INT32, &result,
723 if (dbus_error_is_set(&err)) {
724 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts add text : Get arguments error (%s)\n", err.message);
725 dbus_error_free(&err);
726 result = TTS_ERROR_OPERATION_FAILED;
728 dbus_message_unref(result_msg);
730 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Result message is NULL ");
731 if (dbus_error_is_set(&err))
732 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] %s", err.message);
733 tts_dbus_reconnect();
737 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts add text : result(%d) \n", result);
739 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts add text : result(%d) \n", result);
745 int tts_dbus_request_play(int uid)
749 dbus_error_init(&err);
751 msg = dbus_message_new_method_call(
752 TTS_SERVER_SERVICE_NAME,
753 TTS_SERVER_SERVICE_OBJECT_PATH,
754 TTS_SERVER_SERVICE_INTERFACE,
758 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request tts play : Fail to make message");
759 if (dbus_error_is_set(&err))
760 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] %s", err.message);
762 return TTS_ERROR_OPERATION_FAILED;
764 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request tts play : uid(%d)", uid);
767 if (true != dbus_message_append_args(msg, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID)) {
768 dbus_message_unref(msg);
769 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to append args");
771 return TTS_ERROR_OPERATION_FAILED;
774 DBusMessage* result_msg;
775 int result = TTS_ERROR_OPERATION_FAILED;
777 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, 5000, &err);
778 dbus_message_unref(msg);
780 if (dbus_error_is_set(&err))
781 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] %s", err.message);
783 if (NULL != result_msg) {
784 dbus_message_get_args(result_msg, &err,
785 DBUS_TYPE_INT32, &result,
788 if (dbus_error_is_set(&err)) {
789 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts play : Get arguments error (%s)\n", err.message);
790 dbus_error_free(&err);
791 result = TTS_ERROR_OPERATION_FAILED;
793 dbus_message_unref(result_msg);
795 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Result message is NULL ");
796 if (dbus_error_is_set(&err))
797 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] %s", err.message);
798 tts_dbus_reconnect();
802 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts play : result(%d) \n", result);
804 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts play : result(%d) \n", result);
811 int tts_dbus_request_stop(int uid)
815 dbus_error_init(&err);
817 msg = dbus_message_new_method_call(
818 TTS_SERVER_SERVICE_NAME,
819 TTS_SERVER_SERVICE_OBJECT_PATH,
820 TTS_SERVER_SERVICE_INTERFACE,
824 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request tts stop : Fail to make message");
825 if (dbus_error_is_set(&err))
826 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] %s", err.message);
828 return TTS_ERROR_OPERATION_FAILED;
830 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request tts stop : uid(%d)", uid);
833 DBusMessage* result_msg;
834 int result = TTS_ERROR_OPERATION_FAILED;
836 if (true != dbus_message_append_args(msg, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID)) {
837 dbus_message_unref(msg);
838 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to append args");
840 return TTS_ERROR_OPERATION_FAILED;
843 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, 5000, &err);
844 dbus_message_unref(msg);
846 if (dbus_error_is_set(&err))
847 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] %s", err.message);
849 if (NULL != result_msg) {
850 dbus_message_get_args(result_msg, &err,
851 DBUS_TYPE_INT32, &result,
854 if (dbus_error_is_set(&err)) {
855 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts stop : Get arguments error (%s)\n", err.message);
856 dbus_error_free(&err);
857 result = TTS_ERROR_OPERATION_FAILED;
859 dbus_message_unref(result_msg);
861 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Result message is NULL ");
862 if (dbus_error_is_set(&err))
863 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] %s", err.message);
864 tts_dbus_reconnect();
868 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts stop : result(%d) \n", result);
870 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts stop : result(%d) \n", result);
876 int tts_dbus_request_pause(int uid)
880 dbus_error_init(&err);
882 msg = dbus_message_new_method_call(
883 TTS_SERVER_SERVICE_NAME,
884 TTS_SERVER_SERVICE_OBJECT_PATH,
885 TTS_SERVER_SERVICE_INTERFACE,
889 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request tts pause : Fail to make message");
890 if (dbus_error_is_set(&err))
891 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] %s", err.message);
893 return TTS_ERROR_OPERATION_FAILED;
895 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request tts pause : uid(%d)", uid);
898 DBusMessage* result_msg;
899 int result = TTS_ERROR_OPERATION_FAILED;
901 if (true != dbus_message_append_args(msg, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID)) {
902 dbus_message_unref(msg);
903 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to append args");
905 return TTS_ERROR_OPERATION_FAILED;
908 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, 5000, &err);
909 dbus_message_unref(msg);
911 if (dbus_error_is_set(&err))
912 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] %s", err.message);
914 if (NULL != result_msg) {
915 dbus_message_get_args(result_msg, &err,
916 DBUS_TYPE_INT32, &result,
919 if (dbus_error_is_set(&err)) {
920 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts pause : Get arguments error (%s)\n", err.message);
921 dbus_error_free(&err);
922 result = TTS_ERROR_OPERATION_FAILED;
924 dbus_message_unref(result_msg);
926 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Result message is NULL ");
927 if (dbus_error_is_set(&err))
928 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] %s", err.message);
929 tts_dbus_reconnect();
933 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts pause : result(%d) \n", result);
935 SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts pause : result(%d) \n", result);