2 * Copyright (c) 2011-2016 Samsung Electronics Co., Ltd All Rights Reserved
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 * http://www.apache.org/licenses/LICENSE-2.0
7 * Unless required by applicable law or agreed to in writing, software
8 * distributed under the License is distributed on an "AS IS" BASIS,
9 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10 * See the License for the specific language governing permissions and
11 * limitations under the License.
15 #include "ttsd_main.h"
16 #include "ttsd_dbus.h"
17 #include "ttsd_dbus_server.h"
18 #include "ttsd_server.h"
20 extern int ttsd_data_get_pid(const unsigned int uid);
23 * Dbus Client-Daemon Server
25 int ttsd_dbus_server_hello(DBusConnection* conn, DBusMessage* msg)
27 SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS Hello");
30 dbus_error_init(&err);
36 int registered_event_mask = 0;
37 dbus_message_get_args(msg, &err,
38 DBUS_TYPE_INT32, &pid,
39 DBUS_TYPE_UINT32, &uid,
40 DBUS_TYPE_INT32, &mode,
41 DBUS_TYPE_INT32, &playing_mode,
42 DBUS_TYPE_INT32, ®istered_event_mask,
45 if (dbus_error_is_set(&err)) {
46 SLOG(LOG_ERROR, tts_tag(), "[IN ERROR] ttsd Hello : get arguments error (%s)", err.message);
47 dbus_error_free(&err);
49 SLOG(LOG_INFO, tts_tag(), "[IN] ttsd hello : pid(%d), uid(%u), mode(%d), playing_mode(%d)", pid, uid, mode, playing_mode);
50 bool is_initialized = false;
51 bool is_credential_needed = false;
52 ttsd_state_e service_state = TTSD_STATE_INVALID;
53 int credential_needed = 0;
56 ttsd_server_is_already_initialized(pid, uid, &is_initialized);
57 if (false == is_initialized) {
58 ret = ttsd_server_initialize(pid, uid, (ttsd_mode_e)mode, (ttsd_playing_mode_e)playing_mode, registered_event_mask, TTS_IPC_METHOD_DBUS, &service_state, &is_credential_needed);
60 SLOG(LOG_ERROR, tts_tag(), "[IN ERROR] ttsd Hello : server initialize, ret(%d)", ret);
62 ttsd_server_update_instant_reprepare_client();
64 credential_needed = is_credential_needed ? 1 : 0;
66 SLOG(LOG_INFO, tts_tag(), "[IN] ttsd hello : already initialized. pid(%d), uid(%u)", pid, uid);
67 ret = TTS_ERROR_ALREADY_INITIALIZED;
68 credential_needed = TTS_CREDENTIAL_NEEDED_ALREADY_INITIALIZED;
71 SLOG(LOG_INFO, tts_tag(), "[INFO] send_hello. pid(%d), uid(%u), ret(%d), service_state(%d), credential_needed(%d)",
72 pid, uid, ret, (int)service_state, credential_needed);
74 ttsdc_dbus_send_hello(pid, uid, ret, (int)service_state, credential_needed);
80 int ttsd_dbus_server_hello_sync(DBusConnection* conn, DBusMessage* msg)
82 SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS Hello");
85 reply = dbus_message_new_method_return(msg);
88 if (!dbus_connection_send(conn, reply, NULL)) {
89 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] Out Of Memory!");
92 dbus_connection_flush(conn);
93 dbus_message_unref(reply);
95 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] Fail to create reply message!!");
101 int ttsd_dbus_server_initialize(DBusConnection* conn, DBusMessage* msg)
104 dbus_error_init(&err);
108 bool credential_needed = 0;
109 ttsd_state_e service_state = TTSD_STATE_INVALID;
111 int playing_mode = 0;
112 int registered_event_mask = 0;
115 dbus_message_get_args(msg, &err,
116 DBUS_TYPE_INT32, &pid,
117 DBUS_TYPE_UINT32, &uid,
118 DBUS_TYPE_INT32, &mode,
119 DBUS_TYPE_INT32, &playing_mode,
120 DBUS_TYPE_INT32, ®istered_event_mask,
123 SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS INITIALIZE");
125 if (dbus_error_is_set(&err)) {
126 SLOG(LOG_ERROR, tts_tag(), "[IN ERROR] tts initialize : get arguments error (%s)", err.message);
127 dbus_error_free(&err);
128 ret = TTSD_ERROR_OPERATION_FAILED;
130 SECURE_SLOG(LOG_DEBUG, tts_tag(), "[IN] tts initialize : pid(%d), uid(%u), mode(%d), playing_mode(%d)", pid, uid, mode, playing_mode);
131 ret = ttsd_server_initialize(pid, uid, (ttsd_mode_e)mode, (ttsd_playing_mode_e)playing_mode, registered_event_mask, TTS_IPC_METHOD_DBUS, &service_state, &credential_needed);
132 ttsd_server_update_instant_reprepare_client();
136 reply = dbus_message_new_method_return(msg);
138 int tmp_credential_needed = (int)credential_needed;
139 int tmp_service_state = (int)service_state;
140 SLOG(LOG_DEBUG, tts_tag(), "[OUT] tts initialize : result(%d), service_state(%d), credential_needed(%d)", ret, tmp_service_state, tmp_credential_needed);
142 dbus_message_append_args(reply,
143 DBUS_TYPE_INT32, &ret,
144 DBUS_TYPE_INT32, &tmp_service_state,
145 DBUS_TYPE_INT32, &tmp_credential_needed,
149 SLOG(LOG_DEBUG, tts_tag(), "[OUT] tts initialize : result(%d), service_state(%d), credential_needed(%d)", ret, tmp_service_state, tmp_credential_needed);
151 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts initialize : result(%d)", ret);
154 if (!dbus_connection_send(conn, reply, NULL)) {
155 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts initialize : Out Of Memory!");
158 dbus_connection_flush(conn);
159 dbus_message_unref(reply);
161 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts initialize : Fail to create reply message!!");
167 int ttsd_dbus_server_finalize(DBusConnection* conn, DBusMessage* msg)
170 dbus_error_init(&err);
175 dbus_message_get_args(msg, &err, DBUS_TYPE_UINT32, &uid, DBUS_TYPE_INVALID);
177 SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS FINALIZE");
179 if (dbus_error_is_set(&err)) {
180 SLOG(LOG_ERROR, tts_tag(), "[IN ERROR] tts finalize : get arguments error (%s)", err.message);
181 dbus_error_free(&err);
182 ret = TTSD_ERROR_OPERATION_FAILED;
184 SECURE_SLOG(LOG_DEBUG, tts_tag(), "[IN] tts finalize : uid(%u)", uid);
185 ret = ttsd_server_finalize(uid);
186 ttsd_server_update_instant_reprepare_client();
190 reply = dbus_message_new_method_return(msg);
193 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
196 SLOG(LOG_DEBUG, tts_tag(), "[OUT] tts finalize : result(%d)", ret);
198 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts finalize : result(%d)", ret);
201 if (!dbus_connection_send(conn, reply, NULL)) {
202 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts finalize : Out Of Memory!");
205 dbus_connection_flush(conn);
206 dbus_message_unref(reply);
208 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts finalize : Fail to create reply message!!");
214 int ttsd_dbus_server_get_support_voices(DBusConnection* conn, DBusMessage* msg)
217 dbus_error_init(&err);
221 GList* voice_list = NULL;
223 dbus_message_get_args(msg, &err, DBUS_TYPE_UINT32, &uid, DBUS_TYPE_INVALID);
225 SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS GET VOICES");
227 if (dbus_error_is_set(&err)) {
228 SLOG(LOG_ERROR, tts_tag(), "[IN ERROR] tts get supported voices : get arguments error (%s)", err.message);
229 dbus_error_free(&err);
230 ret = TTSD_ERROR_OPERATION_FAILED;
232 SECURE_SLOG(LOG_DEBUG, tts_tag(), "[IN] get supported voices : uid(%u)", uid);
233 ret = ttsd_server_get_support_voices(uid, &voice_list);
237 reply = dbus_message_new_method_return(msg);
240 DBusMessageIter args;
241 dbus_message_iter_init_append(reply, &args);
244 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(ret));
247 /* Append voice size */
248 unsigned int size = g_list_length(voice_list);
250 if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(size))) {
251 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts supported voices : Fail to append type");
252 ret = TTSD_ERROR_OPERATION_FAILED;
258 iter = g_list_first(voice_list);
260 while (NULL != iter) {
264 dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(voice->language));
265 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(voice->type));
267 if (NULL != voice->language)
268 g_free(voice->language);
273 voice_list = g_list_remove_link(voice_list, iter);
275 iter = g_list_first(voice_list);
278 SLOG(LOG_DEBUG, tts_tag(), "[OUT] tts supported voices : result(%d)", ret);
280 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts supported voices : result(%d)", ret);
283 if (!dbus_connection_send(conn, reply, NULL)) {
284 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] error : Out Of Memory!");
287 dbus_connection_flush(conn);
288 dbus_message_unref(reply);
290 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts supported voices : Fail to create reply message!!");
296 int ttsd_dbus_server_get_current_voice(DBusConnection* conn, DBusMessage* msg)
299 dbus_error_init(&err);
306 dbus_message_get_args(msg, &err, DBUS_TYPE_UINT32, &uid, DBUS_TYPE_INVALID);
308 SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS GET DEFAULT VOICE");
310 if (dbus_error_is_set(&err)) {
311 SLOG(LOG_ERROR, tts_tag(), "[IN ERROR] tts get default voice : Get arguments error (%s)", err.message);
312 dbus_error_free(&err);
313 ret = TTSD_ERROR_OPERATION_FAILED;
315 SECURE_SLOG(LOG_DEBUG, tts_tag(), "[IN] tts get default voice : uid(%u)", uid);
316 ret = ttsd_server_get_current_voice(uid, &lang, &voice_type);
320 reply = dbus_message_new_method_return(msg);
324 /* Append result and voice */
325 dbus_message_append_args(reply,
326 DBUS_TYPE_INT32, &ret,
327 DBUS_TYPE_STRING, &lang,
328 DBUS_TYPE_INT32, &voice_type,
330 SECURE_SLOG(LOG_DEBUG, tts_tag(), "[OUT] tts default voice : lang(%s), vctype(%d)", lang, voice_type);
332 dbus_message_append_args(reply,
333 DBUS_TYPE_INT32, &ret,
335 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts default voice : result(%d)", ret);
338 if (!dbus_connection_send(conn, reply, NULL)) {
339 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts default voice : Out Of Memory!");
342 dbus_connection_flush(conn);
343 dbus_message_unref(reply);
345 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts default voice : Fail to create reply message!!");
348 if (NULL != lang) free(lang);
352 int ttsd_dbus_server_add_text(DBusConnection* conn, DBusMessage* msg)
355 dbus_error_init(&err);
357 unsigned int uid, voicetype, speed, uttid;
358 char *text, *lang, *credential;
361 dbus_message_get_args(msg, &err,
362 DBUS_TYPE_UINT32, &uid,
363 DBUS_TYPE_STRING, &text,
364 DBUS_TYPE_STRING, &lang,
365 DBUS_TYPE_INT32, &voicetype,
366 DBUS_TYPE_INT32, &speed,
367 DBUS_TYPE_INT32, &uttid,
368 DBUS_TYPE_STRING, &credential,
371 SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS ADD TEXT");
373 if (dbus_error_is_set(&err)) {
374 SLOG(LOG_ERROR, tts_tag(), "[IN ERROR] tts add text : Get arguments error (%s)", err.message);
375 dbus_error_free(&err);
376 ret = TTSD_ERROR_OPERATION_FAILED;
378 SECURE_SLOG(LOG_DEBUG, tts_tag(), "[IN] tts add text : uid(%u), text(%s), lang(%s), type(%d), speed(%d), uttid(%d), credential(%s)",
379 uid, (NULL == text) ? "NULL" : text, (NULL == lang) ? "NULL" : lang, voicetype, speed, uttid, (NULL == credential) ? "NULL" : credential);
380 ret = ttsd_server_add_text(uid, text, lang, voicetype, speed, uttid, credential);
384 reply = dbus_message_new_method_return(msg);
387 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
390 SLOG(LOG_DEBUG, tts_tag(), "[OUT] tts add text : result(%d)", ret);
392 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts add text : result(%d)", ret);
395 if (!dbus_connection_send(conn, reply, NULL)) {
396 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts add text : Out Of Memory!");
399 dbus_connection_flush(conn);
400 dbus_message_unref(reply);
402 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts add text : Fail to create reply message!!");
405 SLOG(LOG_DEBUG, tts_tag(), "<<<<<");
406 SLOG(LOG_DEBUG, tts_tag(), " ");
411 int ttsd_dbus_server_play(DBusConnection* conn, DBusMessage* msg)
414 dbus_error_init(&err);
420 dbus_message_get_args(msg, &err,
421 DBUS_TYPE_UINT32, &uid,
422 DBUS_TYPE_STRING, &credential,
425 SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS PLAY");
427 if (dbus_error_is_set(&err)) {
428 SLOG(LOG_ERROR, tts_tag(), "[IN ERROR] tts play : Get arguments error (%s)", err.message);
429 dbus_error_free(&err);
430 ret = TTSD_ERROR_OPERATION_FAILED;
432 SECURE_SLOG(LOG_DEBUG, tts_tag(), "[IN] tts play : uid(%u), credential(%s)", uid, (NULL == credential) ? "NULL" : credential);
433 ret = ttsd_server_play(uid, credential);
437 reply = dbus_message_new_method_return(msg);
440 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
443 SLOG(LOG_DEBUG, tts_tag(), "[OUT] tts play : result(%d)", ret);
445 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts play : result(%d)", ret);
448 if (!dbus_connection_send(conn, reply, NULL)) {
449 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts play : Out Of Memory!");
452 dbus_connection_flush(conn);
453 dbus_message_unref(reply);
455 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts play : Fail to create reply message!!");
458 SLOG(LOG_DEBUG, tts_tag(), "<<<<<");
459 SLOG(LOG_DEBUG, tts_tag(), " ");
464 int ttsd_dbus_server_stop(DBusConnection* conn, DBusMessage* msg)
467 dbus_error_init(&err);
471 dbus_message_get_args(msg, &err,
472 DBUS_TYPE_UINT32, &uid,
475 SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS STOP");
477 if (dbus_error_is_set(&err)) {
478 SLOG(LOG_ERROR, tts_tag(), "[IN ERROR] tts stop : Get arguments error (%s)", err.message);
479 dbus_error_free(&err);
480 ret = TTSD_ERROR_OPERATION_FAILED;
482 SECURE_SLOG(LOG_DEBUG, tts_tag(), "[IN] tts stop : uid(%u)", uid);
483 ret = ttsd_server_stop(uid);
487 reply = dbus_message_new_method_return(msg);
490 dbus_message_append_args(reply,
491 DBUS_TYPE_INT32, &ret,
495 SLOG(LOG_DEBUG, tts_tag(), "[OUT] tts stop : result(%d)", ret);
497 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts stop : result(%d)", ret);
500 if (!dbus_connection_send(conn, reply, NULL)) {
501 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts stop : Out Of Memory!");
504 dbus_connection_flush(conn);
505 dbus_message_unref(reply);
507 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts stop : Fail to create reply message!!");
510 SLOG(LOG_DEBUG, tts_tag(), "<<<<<");
511 SLOG(LOG_DEBUG, tts_tag(), " ");
516 int ttsd_dbus_server_pause(DBusConnection* conn, DBusMessage* msg)
519 dbus_error_init(&err);
523 dbus_message_get_args(msg, &err,
524 DBUS_TYPE_UINT32, &uid,
527 SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS PAUSE");
529 if (dbus_error_is_set(&err)) {
530 SLOG(LOG_ERROR, tts_tag(), "[IN ERROR] tts pause : Get arguments error (%s)", err.message);
531 dbus_error_free(&err);
532 ret = TTSD_ERROR_OPERATION_FAILED;
534 SECURE_SLOG(LOG_DEBUG, tts_tag(), "[IN] tts pause : uid(%u)", uid);
535 ret = ttsd_server_pause(uid);
539 reply = dbus_message_new_method_return(msg);
542 dbus_message_append_args(reply,
543 DBUS_TYPE_INT32, &ret,
547 SLOG(LOG_DEBUG, tts_tag(), "[OUT] tts pause : result(%d)", ret);
549 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts pause : result(%d)", ret);
552 if (!dbus_connection_send(conn, reply, NULL)) {
553 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts pause : Out Of Memory!");
556 dbus_connection_flush(conn);
557 dbus_message_unref(reply);
559 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts pause : Fail to create reply message!!");
562 SLOG(LOG_DEBUG, tts_tag(), "<<<<<");
563 SLOG(LOG_DEBUG, tts_tag(), " ");
568 int ttsd_dbus_server_set_private_data(DBusConnection* conn, DBusMessage* msg)
571 dbus_error_init(&err);
577 dbus_message_get_args(msg, &err,
578 DBUS_TYPE_UINT32, &uid,
579 DBUS_TYPE_STRING, &key,
580 DBUS_TYPE_STRING, &data,
583 SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS set private data");
585 if (dbus_error_is_set(&err)) {
586 SLOG(LOG_ERROR, tts_tag(), "[IN ERROR] Fail to get arguments (%s)", err.message);
587 dbus_error_free(&err);
588 ret = TTSD_ERROR_OPERATION_FAILED;
590 SLOG(LOG_DEBUG, tts_tag(), "[IN] tts set private data(%d)", uid);
591 ret = ttsd_server_set_private_data(uid, key, data);
595 reply = dbus_message_new_method_return(msg);
598 dbus_message_append_args(reply,
599 DBUS_TYPE_INT32, &ret,
603 SLOG(LOG_DEBUG, tts_tag(), "[OUT] tts set private data : (%d)", ret);
605 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts set private data : (%d)", ret);
608 if (!dbus_connection_send(conn, reply, NULL)) {
609 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] Fail to send reply");
612 dbus_connection_flush(conn);
613 dbus_message_unref(reply);
615 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] Fail to create reply message");
618 SLOG(LOG_DEBUG, tts_tag(), "<<<<<");
619 SLOG(LOG_DEBUG, tts_tag(), "");
624 int ttsd_dbus_server_get_private_data(DBusConnection* conn, DBusMessage* msg)
627 dbus_error_init(&err);
633 dbus_message_get_args(msg, &err,
634 DBUS_TYPE_UINT32, &uid,
635 DBUS_TYPE_STRING, &key,
638 SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS get private data");
640 if (dbus_error_is_set(&err)) {
641 SLOG(LOG_ERROR, tts_tag(), "[IN ERROR] Fail to get arguments (%s)", err.message);
642 dbus_error_free(&err);
643 ret = TTSD_ERROR_OPERATION_FAILED;
645 SLOG(LOG_DEBUG, tts_tag(), "[IN] tts get private data : uid(%u)", uid);
646 ret = ttsd_server_get_private_data(uid, key, &data);
650 reply = dbus_message_new_method_return(msg);
653 dbus_message_append_args(reply,
654 DBUS_TYPE_INT32, &ret,
655 DBUS_TYPE_STRING, &data,
659 SLOG(LOG_DEBUG, tts_tag(), "[OUT] tts get private data : Result(%d), data(%s)", ret, (NULL == data) ? "NULL" : data);
661 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts get private data : (%d)", ret);
664 if (!dbus_connection_send(conn, reply, NULL)) {
665 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] Fail to send reply");
668 dbus_connection_flush(conn);
669 dbus_message_unref(reply);
671 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] Fail to create reply message");
674 SLOG(LOG_DEBUG, tts_tag(), "<<<<<");
675 SLOG(LOG_DEBUG, tts_tag(), "");
685 int ttsd_dbus_server_play_pcm(DBusConnection* conn, DBusMessage* msg)
688 dbus_error_init(&err);
693 dbus_message_get_args(msg, &err,
694 DBUS_TYPE_UINT32, &uid,
697 SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS PLAY PCM");
699 if (dbus_error_is_set(&err)) {
700 SLOG(LOG_ERROR, tts_tag(), "[IN ERROR] tts play pcm : Get arguments error (%s)", err.message);
701 dbus_error_free(&err);
702 ret = TTSD_ERROR_OPERATION_FAILED;
704 SECURE_SLOG(LOG_DEBUG, tts_tag(), "[IN] tts play pcm : uid(%u)", uid);
705 ret = ttsd_server_play_pcm(uid);
709 reply = dbus_message_new_method_return(msg);
712 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
715 SLOG(LOG_DEBUG, tts_tag(), "[OUT] tts play pcm : result(%d)", ret);
717 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts play pcm : result(%d)", ret);
720 if (!dbus_connection_send(conn, reply, NULL)) {
721 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts play pcm : Out Of Memory!");
724 dbus_connection_flush(conn);
725 dbus_message_unref(reply);
727 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts play pcm : Fail to create reply message!!");
730 SLOG(LOG_DEBUG, tts_tag(), "<<<<<");
731 SLOG(LOG_DEBUG, tts_tag(), " ");
736 int ttsd_dbus_server_stop_pcm(DBusConnection* conn, DBusMessage* msg)
739 dbus_error_init(&err);
744 dbus_message_get_args(msg, &err,
745 DBUS_TYPE_UINT32, &uid,
748 SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS STOP PCM");
750 if (dbus_error_is_set(&err)) {
751 SLOG(LOG_ERROR, tts_tag(), "[IN ERROR] tts stop pcm : Get arguments error (%s)", err.message);
752 dbus_error_free(&err);
753 ret = TTSD_ERROR_OPERATION_FAILED;
755 SECURE_SLOG(LOG_DEBUG, tts_tag(), "[IN] tts stop pcm : uid(%u)", uid);
756 ret = ttsd_server_stop(uid);
760 reply = dbus_message_new_method_return(msg);
763 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
766 SLOG(LOG_DEBUG, tts_tag(), "[OUT] tts stop pcm : result(%d)", ret);
768 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts stop pcm : result(%d)", ret);
771 if (!dbus_connection_send(conn, reply, NULL)) {
772 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts stop pcm : Out Of Memory!");
775 dbus_connection_flush(conn);
776 dbus_message_unref(reply);
778 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts stop pcm : Fail to create reply message!!");
781 SLOG(LOG_DEBUG, tts_tag(), "<<<<<");
782 SLOG(LOG_DEBUG, tts_tag(), " ");
787 int ttsd_dbus_server_add_pcm(DBusConnection* conn, DBusMessage* msg)
790 dbus_error_init(&err);
800 dbus_message_get_args(msg, &err,
801 DBUS_TYPE_UINT32, &uid,
802 DBUS_TYPE_INT32, &event,
803 DBUS_TYPE_INT32, &audio_type,
804 DBUS_TYPE_INT32, &rate,
805 //DBUS_TYPE_STRING, &data,
806 //DBUS_TYPE_INT32, &data_size,
807 DBUS_TYPE_ARRAY, DBUS_TYPE_BYTE,
811 SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS ADD PCM");
813 if (dbus_error_is_set(&err)) {
814 SLOG(LOG_ERROR, tts_tag(), "[IN ERROR] tts add pcm : Get arguments error (%s)", err.message);
815 dbus_error_free(&err);
816 ret = TTSD_ERROR_OPERATION_FAILED;
818 SECURE_SLOG(LOG_DEBUG, tts_tag(), "[IN] tts add pcm : uid(%u)", uid);
819 ret = ttsd_server_add_pcm(uid, event, (void*)data, data_size, audio_type, rate);
823 reply = dbus_message_new_method_return(msg);
826 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID);
829 SLOG(LOG_DEBUG, tts_tag(), "[OUT] tts add pcm : result(%d)", ret);
831 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts add pcm : result(%d)", ret);
834 if (!dbus_connection_send(conn, reply, NULL)) {
835 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts add pcm : Out Of Memory!");
838 dbus_connection_flush(conn);
839 dbus_message_unref(reply);
841 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts add pcm : Fail to create reply message!!");
844 SLOG(LOG_DEBUG, tts_tag(), "<<<<<");
845 SLOG(LOG_DEBUG, tts_tag(), " ");
850 int ttsd_dbus_server_get_service_state(DBusConnection* conn, DBusMessage* msg)
853 dbus_error_init(&err);
856 int state = (int)TTSD_STATE_READY;
859 dbus_message_get_args(msg, &err,
860 DBUS_TYPE_UINT32, &uid,
863 SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS GET SERVICE STATE");
865 if (dbus_error_is_set(&err)) {
866 SLOG(LOG_ERROR, tts_tag(), "[IN ERROR] tts get service state : Get arguments error (%s)", err.message);
867 dbus_error_free(&err);
868 ret = TTSD_ERROR_OPERATION_FAILED;
870 SECURE_SLOG(LOG_DEBUG, tts_tag(), "[IN] tts get service state : uid(%u)", uid);
871 ret = ttsd_server_get_service_state(uid, &state);
875 reply = dbus_message_new_method_return(msg);
878 dbus_message_append_args(reply, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INT32, &state, DBUS_TYPE_INVALID);
881 SLOG(LOG_DEBUG, tts_tag(), "[OUT] tts get service state : result(%d)", ret);
883 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts get service state : result(%d)", ret);
886 if (!dbus_connection_send(conn, reply, NULL)) {
887 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts get service state : Out Of Memory!");
890 dbus_connection_flush(conn);
891 dbus_message_unref(reply);
893 SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts get service state : Fail to create reply message!!");
896 SLOG(LOG_DEBUG, tts_tag(), "<<<<<");
897 SLOG(LOG_DEBUG, tts_tag(), " ");