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 "tts_setting.h"
17 #include "tts_setting_dbus.h"
20 static DBusConnection* g_conn = NULL;
22 int tts_setting_dbus_open_connection()
25 SLOG(LOG_WARN, TAG_TTSC, "Already existed connection");
32 /* initialise the error value */
33 dbus_error_init(&err);
35 /* connect to the DBUS system bus, and check for errors */
36 g_conn = dbus_bus_get_private(DBUS_BUS_SYSTEM, &err);
38 if (dbus_error_is_set(&err)) {
39 SLOG(LOG_ERROR, TAG_TTSC, "Dbus Connection Error (%s)\n", err.message);
40 dbus_error_free(&err);
44 SLOG(LOG_ERROR, TAG_TTSC, "Fail to get dbus connection \n");
45 return TTS_SETTING_ERROR_OPERATION_FAILED;
50 char service_name[64];
51 memset(service_name, 0, 64);
52 snprintf(service_name, 64, "%s%d", TTS_SETTING_SERVICE_NAME, pid);
54 SLOG(LOG_DEBUG, TAG_TTSC, "service name is %s\n", service_name);
56 /* register our name on the bus, and check for errors */
57 ret = dbus_bus_request_name(g_conn, service_name, DBUS_NAME_FLAG_REPLACE_EXISTING , &err);
59 if (dbus_error_is_set(&err)) {
60 SLOG(LOG_ERROR, TAG_TTSC, "Name Error (%s)\n", err.message);
61 dbus_error_free(&err);
64 if (DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER != ret) {
65 printf("fail dbus_bus_request_name()\n");
66 return TTS_SETTING_ERROR_OPERATION_FAILED;
72 int tts_setting_dbus_close_connection()
75 dbus_error_init(&err);
79 char service_name[64];
80 memset(service_name, 0, 64);
81 snprintf(service_name, 64, "%s%d", TTS_SETTING_SERVICE_NAME, pid);
83 dbus_bus_release_name(g_conn, service_name, &err);
85 dbus_connection_close(g_conn);
92 int tts_setting_dbus_request_hello()
96 msg = dbus_message_new_method_call(
97 TTS_SERVER_SERVICE_NAME,
98 TTS_SERVER_SERVICE_OBJECT_PATH,
99 TTS_SERVER_SERVICE_INTERFACE,
100 TTS_SETTING_METHOD_HELLO);
103 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request setting hello : Fail to make message \n");
104 return TTS_SETTING_ERROR_OPERATION_FAILED;
106 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request setting hello");
110 dbus_error_init(&err);
112 DBusMessage* result_msg = NULL;
115 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, 500, &err);
117 dbus_message_unref(msg);
119 if (NULL != result_msg) {
120 dbus_message_unref(result_msg);
122 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< setting hello");
125 SLOG(LOG_ERROR, TAG_TTSC, "<<<< setting hello : no response");
132 int tts_setting_dbus_request_initialize()
136 msg = dbus_message_new_method_call(
137 TTS_SERVER_SERVICE_NAME,
138 TTS_SERVER_SERVICE_OBJECT_PATH,
139 TTS_SERVER_SERVICE_INTERFACE,
140 TTS_SETTING_METHOD_INITIALIZE);
143 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request setting initialize : Fail to make message \n");
144 return TTS_SETTING_ERROR_OPERATION_FAILED;
146 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request setting initialize");
151 dbus_message_append_args( msg,
152 DBUS_TYPE_INT32, &pid,
156 dbus_error_init(&err);
158 DBusMessage* result_msg;
159 int result = TTS_SETTING_ERROR_OPERATION_FAILED;
161 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, 3000, &err);
163 if (NULL != result_msg) {
164 dbus_message_get_args(result_msg, &err, DBUS_TYPE_INT32, &result, DBUS_TYPE_INVALID);
166 if (dbus_error_is_set(&err)) {
167 SLOG(LOG_ERROR, TAG_TTSC, "Get arguments error (%s)\n", err.message);
168 dbus_error_free(&err);
169 result = TTS_SETTING_ERROR_OPERATION_FAILED;
171 dbus_message_unref(result_msg);
175 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< setting initialize : result = %d \n", result);
177 SLOG(LOG_ERROR, TAG_TTSC, "<<<< setting initialize : result = %d \n", result);
180 dbus_message_unref(msg);
185 int tts_setting_dbus_request_finalilze()
189 msg = dbus_message_new_method_call(
190 TTS_SERVER_SERVICE_NAME,
191 TTS_SERVER_SERVICE_OBJECT_PATH,
192 TTS_SERVER_SERVICE_INTERFACE,
193 TTS_SETTING_METHOD_FINALIZE);
196 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request setting finalize : Fail to make message \n");
197 return TTS_SETTING_ERROR_OPERATION_FAILED;
199 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request setting finalize");
204 dbus_message_append_args(msg, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
207 dbus_error_init(&err);
209 DBusMessage* result_msg;
212 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, 3000, &err);
214 if (NULL != result_msg) {
215 dbus_message_get_args(result_msg, &err,
216 DBUS_TYPE_INT32, &result,
219 if (dbus_error_is_set(&err)) {
220 SLOG(LOG_ERROR, TAG_TTSC, "Get arguments error (%s)\n", err.message);
221 dbus_error_free(&err);
222 result = TTS_SETTING_ERROR_OPERATION_FAILED;
224 dbus_message_unref(result_msg);
228 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< setting finalize : result = %d \n", result);
230 SLOG(LOG_ERROR, TAG_TTSC, "<<<< setting finalize : result = %d \n", result);
233 dbus_message_unref(msg);
238 int tts_setting_dbus_request_get_engine_list(tts_setting_supported_engine_cb callback, void* user_data)
242 msg = dbus_message_new_method_call(
243 TTS_SERVER_SERVICE_NAME,
244 TTS_SERVER_SERVICE_OBJECT_PATH,
245 TTS_SERVER_SERVICE_INTERFACE,
246 TTS_SETTING_METHOD_GET_ENGINE_LIST);
249 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request setting get engine list : Fail to make message \n");
250 return TTS_SETTING_ERROR_OPERATION_FAILED;
252 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request setting get engine list");
257 dbus_message_append_args(msg, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
260 dbus_error_init(&err);
262 DBusMessage* result_msg;
263 int result = TTS_SETTING_ERROR_OPERATION_FAILED;
265 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, 3000, &err);
267 if (NULL != result_msg) {
268 DBusMessageIter args;
270 if (dbus_message_iter_init(result_msg, &args)) {
272 if (DBUS_TYPE_INT32 == dbus_message_iter_get_arg_type(&args)) {
273 dbus_message_iter_get_basic(&args, &result);
274 dbus_message_iter_next(&args);
278 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< setting get engine list : result = %d \n", result);
285 /* Get engine count */
286 if (DBUS_TYPE_INT32 == dbus_message_iter_get_arg_type(&args)) {
287 dbus_message_iter_get_basic(&args, &size);
288 dbus_message_iter_next(&args);
292 for (i=0 ; i<size ; i++) {
293 dbus_message_iter_get_basic(&args, &(temp_id));
294 dbus_message_iter_next(&args);
296 dbus_message_iter_get_basic(&args, &(temp_name));
297 dbus_message_iter_next(&args);
299 dbus_message_iter_get_basic(&args, &(temp_path));
300 dbus_message_iter_next(&args);
302 if (true != callback(temp_id, temp_name, temp_path, user_data)) {
307 SLOG(LOG_ERROR, TAG_TTSC, "<<<< setting get engine list : result = %d \n", result);
310 SLOG(LOG_ERROR, TAG_TTSC, "<<<< setting get engine list : invalid message \n");
313 dbus_message_unref(result_msg);
315 SLOG(LOG_ERROR, TAG_TTSC, "<<<< setting get engine list : result message is NULL!! \n");
318 dbus_message_unref(msg);
323 int tts_setting_dbus_request_get_engine(char** engine_id)
325 if (NULL == engine_id) {
326 SLOG(LOG_ERROR, TAG_TTSC, "Input parameter is NULL");
327 return TTS_SETTING_ERROR_INVALID_PARAMETER;
332 msg = dbus_message_new_method_call(
333 TTS_SERVER_SERVICE_NAME,
334 TTS_SERVER_SERVICE_OBJECT_PATH,
335 TTS_SERVER_SERVICE_INTERFACE,
336 TTS_SETTING_METHOD_GET_ENGINE);
339 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request setting get engine : Fail to make message \n");
340 return TTS_SETTING_ERROR_OPERATION_FAILED;
342 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request setting get engine ");
347 dbus_message_append_args( msg,
348 DBUS_TYPE_INT32, &pid,
352 dbus_error_init(&err);
354 DBusMessage* result_msg;
355 int result = TTS_SETTING_ERROR_OPERATION_FAILED;
358 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, 3000, &err);
360 if (NULL != result_msg) {
361 dbus_message_get_args(result_msg, &err, DBUS_TYPE_INT32, &result, DBUS_TYPE_STRING, &temp, DBUS_TYPE_INVALID);
363 if (dbus_error_is_set(&err)) {
364 SLOG(LOG_ERROR, TAG_TTSC, "Get arguments error (%s)\n", err.message);
365 dbus_error_free(&err);
366 result = TTS_SETTING_ERROR_OPERATION_FAILED;
368 dbus_message_unref(result_msg);
372 *engine_id = strdup(temp);
374 if (NULL == *engine_id) {
375 SLOG(LOG_ERROR, TAG_TTSC, "<<<< setting get engine : Out of memory \n");
376 result = TTS_SETTING_ERROR_OUT_OF_MEMORY;
378 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< setting get engine : result(%d), engine id(%s)\n", result, *engine_id);
381 SLOG(LOG_ERROR, TAG_TTSC, "<<<< setting get engine : result(%d) \n", result);
384 dbus_message_unref(msg);
390 int tts_setting_dbus_request_set_engine(const char* engine_id)
392 if (NULL == engine_id) {
393 SLOG(LOG_ERROR, TAG_TTSC, "Input parameter is NULL");
394 return TTS_SETTING_ERROR_INVALID_PARAMETER;
399 msg = dbus_message_new_method_call(
400 TTS_SERVER_SERVICE_NAME,
401 TTS_SERVER_SERVICE_OBJECT_PATH,
402 TTS_SERVER_SERVICE_INTERFACE,
403 TTS_SETTING_METHOD_SET_ENGINE);
406 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request setting set engine : Fail to make message \n");
407 return TTS_SETTING_ERROR_OPERATION_FAILED;
409 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request setting set engine : engine id(%s)", engine_id);
414 dbus_message_append_args( msg,
415 DBUS_TYPE_INT32, &pid,
416 DBUS_TYPE_STRING, &engine_id,
420 dbus_error_init(&err);
422 DBusMessage* result_msg;
423 int result = TTS_SETTING_ERROR_OPERATION_FAILED;
425 result_msg = dbus_connection_send_with_reply_and_block ( g_conn, msg, 3000, &err);
427 if (NULL != result_msg) {
428 dbus_message_get_args(result_msg, &err, DBUS_TYPE_INT32, &result, DBUS_TYPE_INVALID);
430 if (dbus_error_is_set(&err)) {
431 SLOG(LOG_ERROR, TAG_TTSC, "Get arguments error (%s)\n", err.message);
432 dbus_error_free(&err);
433 result = TTS_SETTING_ERROR_OPERATION_FAILED;
435 dbus_message_unref(result_msg);
439 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< setting set engine : result(%d) \n", result);
441 SLOG(LOG_ERROR, TAG_TTSC, "<<<< setting set engine : result(%d) \n", result);
444 dbus_message_unref(msg);
449 int tts_setting_dbus_request_get_voice_list(tts_setting_supported_voice_cb callback, void* user_data)
451 if (NULL == callback) {
452 SLOG(LOG_ERROR, TAG_TTSC, "Input parameter is NULL");
453 return TTS_SETTING_ERROR_INVALID_PARAMETER;
458 msg = dbus_message_new_method_call(
459 TTS_SERVER_SERVICE_NAME,
460 TTS_SERVER_SERVICE_OBJECT_PATH,
461 TTS_SERVER_SERVICE_INTERFACE,
462 TTS_SETTING_METHOD_GET_VOICE_LIST);
465 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request setting get voice list : Fail to make message \n");
466 return TTS_SETTING_ERROR_OPERATION_FAILED;
468 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request setting get voice list");
473 dbus_message_append_args( msg,
474 DBUS_TYPE_INT32, &pid,
478 dbus_error_init(&err);
480 DBusMessage* result_msg;
481 int result = TTS_SETTING_ERROR_OPERATION_FAILED;
483 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, 3000, &err);
485 DBusMessageIter args;
487 if (NULL != result_msg) {
488 if (dbus_message_iter_init(result_msg, &args)) {
490 if (DBUS_TYPE_INT32 == dbus_message_iter_get_arg_type(&args)) {
491 dbus_message_iter_get_basic(&args, &result);
492 dbus_message_iter_next(&args);
496 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< setting get voice list : result = %d \n", result);
499 char* temp_id = NULL;
500 char* temp_lang = NULL;
503 /* Get current voice */
504 dbus_message_iter_get_basic(&args, &temp_id);
505 dbus_message_iter_next(&args);
507 if (NULL != temp_id) {
508 /* Get voice count */
509 if (DBUS_TYPE_INT32 == dbus_message_iter_get_arg_type(&args)) {
510 dbus_message_iter_get_basic(&args, &size);
511 dbus_message_iter_next(&args);
515 for (i=0 ; i<size ; i++) {
516 dbus_message_iter_get_basic(&args, &(temp_lang) );
517 dbus_message_iter_next(&args);
519 dbus_message_iter_get_basic(&args, &(temp_type) );
520 dbus_message_iter_next(&args);
522 if (true != callback(temp_id, temp_lang, temp_type, user_data)) {
527 SLOG(LOG_ERROR, TAG_TTSC, "Engine ID is NULL \n");
528 result = TTS_SETTING_ERROR_OPERATION_FAILED;
532 SLOG(LOG_ERROR, TAG_TTSC, "<<<< setting get voice list : result = %d \n", result);
536 dbus_message_unref(result_msg);
538 SLOG(LOG_ERROR, TAG_TTSC, "<<<< setting get voice list : Result message is NULL!!");
541 dbus_message_unref(msg);
546 int tts_setting_dbus_request_get_default_voice(char** language, tts_setting_voice_type_e* voice_type)
548 if (NULL == language || NULL == voice_type) {
549 SLOG(LOG_ERROR, TAG_TTSC, "Input Parameter is NULL");
550 return TTS_SETTING_ERROR_INVALID_PARAMETER;
555 msg = dbus_message_new_method_call(
556 TTS_SERVER_SERVICE_NAME,
557 TTS_SERVER_SERVICE_OBJECT_PATH,
558 TTS_SERVER_SERVICE_INTERFACE,
559 TTS_SETTING_METHOD_GET_DEFAULT_VOICE);
562 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request setting get default voice : Fail to make message \n");
563 return TTS_SETTING_ERROR_OPERATION_FAILED;
565 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request setting get default voice");
570 dbus_message_append_args( msg,
571 DBUS_TYPE_INT32, &pid,
575 dbus_error_init(&err);
577 DBusMessage* result_msg;
578 int result = TTS_SETTING_ERROR_OPERATION_FAILED;
582 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, 3000, &err);
584 if (NULL != result_msg) {
585 dbus_message_get_args(result_msg, &err,
586 DBUS_TYPE_INT32, &result,
587 DBUS_TYPE_STRING, &temp_char,
588 DBUS_TYPE_INT32, &temp_int,
591 if (dbus_error_is_set(&err)) {
592 SLOG(LOG_ERROR, TAG_TTSC, "Get arguments error (%s)\n", err.message);
593 dbus_error_free(&err);
594 result = TTS_SETTING_ERROR_OPERATION_FAILED;
597 dbus_message_unref(result_msg);
601 *language = strdup(temp_char);
602 *voice_type = (tts_setting_voice_type_e)temp_int;
604 if (NULL == *language) {
605 SLOG(LOG_ERROR, TAG_TTSC, "<<<< setting get default voice : Out of memory \n");
606 result = TTS_SETTING_ERROR_OUT_OF_MEMORY;
608 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< setting get default voice : result(%d), lang(%s), vctype(%d) \n", result, *language, *voice_type);
611 SLOG(LOG_ERROR, TAG_TTSC, "<<<< setting get default voice : result(%d) \n", result);
614 dbus_message_unref(msg);
619 int tts_setting_dbus_request_set_default_voice(const char* language, const int voicetype )
621 if (NULL == language) {
622 SLOG(LOG_ERROR, TAG_TTSC, "Input Parameter is NULL");
623 return TTS_SETTING_ERROR_INVALID_PARAMETER;
628 msg = dbus_message_new_method_call(
629 TTS_SERVER_SERVICE_NAME,
630 TTS_SERVER_SERVICE_OBJECT_PATH,
631 TTS_SERVER_SERVICE_INTERFACE,
632 TTS_SETTING_METHOD_SET_DEFAULT_VOICE);
635 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request setting set default voice : Fail to make message \n");
636 return TTS_SETTING_ERROR_OPERATION_FAILED;
638 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request setting set default voice : language(%s), type(%d)", language, voicetype);
643 dbus_message_append_args( msg,
644 DBUS_TYPE_INT32, &pid,
645 DBUS_TYPE_STRING, &language,
646 DBUS_TYPE_INT32, &voicetype,
650 dbus_error_init(&err);
652 DBusMessage* result_msg;
653 int result = TTS_SETTING_ERROR_OPERATION_FAILED;
655 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, 3000, &err);
657 if (NULL != result_msg) {
658 dbus_message_get_args(result_msg, &err, DBUS_TYPE_INT32, &result, DBUS_TYPE_INVALID);
660 if (dbus_error_is_set(&err)) {
661 SLOG(LOG_ERROR, TAG_TTSC, "Get arguments error (%s)\n", err.message);
662 dbus_error_free(&err);
663 result = TTS_SETTING_ERROR_OPERATION_FAILED;
665 dbus_message_unref(result_msg);
669 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< setting set default voice : result(%d)", result);
671 SLOG(LOG_ERROR, TAG_TTSC, "<<<< setting set default voice : result(%d)", result);
674 dbus_message_unref(msg);
679 int tts_setting_dbus_request_get_default_speed(int* speed)
682 SLOG(LOG_ERROR, TAG_TTSC, "Input Parameter is NULL");
683 return TTS_SETTING_ERROR_INVALID_PARAMETER;
688 msg = dbus_message_new_method_call(
689 TTS_SERVER_SERVICE_NAME,
690 TTS_SERVER_SERVICE_OBJECT_PATH,
691 TTS_SERVER_SERVICE_INTERFACE,
692 TTS_SETTING_METHOD_GET_DEFAULT_SPEED);
695 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request setting get default speed : Fail to make message \n");
696 return TTS_SETTING_ERROR_OPERATION_FAILED;
698 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request setting get default speed ");
703 dbus_message_append_args( msg,
704 DBUS_TYPE_INT32, &pid,
708 dbus_error_init(&err);
710 DBusMessage* result_msg;
712 int result = TTS_SETTING_ERROR_OPERATION_FAILED;
714 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, 3000, &err);
716 if (NULL != result_msg) {
717 dbus_message_get_args(result_msg, &err,
718 DBUS_TYPE_INT32, &result,
719 DBUS_TYPE_INT32, &temp_int,
722 if (dbus_error_is_set(&err)) {
723 SLOG(LOG_ERROR, TAG_TTSC, "Get arguments error (%s)\n", err.message);
724 dbus_error_free(&err);
725 result = TTS_SETTING_ERROR_OPERATION_FAILED;
727 dbus_message_unref(result_msg);
732 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< setting get default speed : result(%d), speed(%d)", result, *speed);
734 SLOG(LOG_ERROR, TAG_TTSC, "<<<< setting get default speed : result(%d)", result);
737 dbus_message_unref(msg);
742 int tts_setting_dbus_request_set_default_speed(const int speed)
746 msg = dbus_message_new_method_call(
747 TTS_SERVER_SERVICE_NAME,
748 TTS_SERVER_SERVICE_OBJECT_PATH,
749 TTS_SERVER_SERVICE_INTERFACE,
750 TTS_SETTING_METHOD_SET_DEFAULT_SPEED);
753 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request setting set default speed : Fail to make message \n");
754 return TTS_SETTING_ERROR_OPERATION_FAILED;
756 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request setting set default speed : speed(%d)", speed);
761 dbus_message_append_args(msg,
762 DBUS_TYPE_INT32, &pid,
763 DBUS_TYPE_INT32, &speed,
767 dbus_error_init(&err);
769 DBusMessage* result_msg;
770 int result = TTS_SETTING_ERROR_OPERATION_FAILED;
771 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, 3000, &err);
773 if (NULL != result_msg) {
774 dbus_message_get_args(result_msg, &err, DBUS_TYPE_INT32, &result, DBUS_TYPE_INVALID);
776 if (dbus_error_is_set(&err)) {
777 SLOG(LOG_ERROR, TAG_TTSC, "Get arguments error (%s)\n", err.message);
778 dbus_error_free(&err);
779 result = TTS_SETTING_ERROR_OPERATION_FAILED;
781 dbus_message_unref(result_msg);
785 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< setting set default speed : result(%d)", result);
787 SLOG(LOG_ERROR, TAG_TTSC, "<<<< setting set default speed : result(%d)", result);
790 dbus_message_unref(msg);
795 int tts_setting_dbus_request_get_engine_setting(tts_setting_engine_setting_cb callback, void* user_data)
797 if (NULL == callback) {
798 SLOG(LOG_ERROR, TAG_TTSC, "Input Parameter is NULL");
799 return TTS_SETTING_ERROR_INVALID_PARAMETER;
804 msg = dbus_message_new_method_call(
805 TTS_SERVER_SERVICE_NAME,
806 TTS_SERVER_SERVICE_OBJECT_PATH,
807 TTS_SERVER_SERVICE_INTERFACE,
808 TTS_SETTING_METHOD_GET_ENGINE_SETTING);
811 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request setting get engine setting : Fail to make message \n");
812 return TTS_SETTING_ERROR_OPERATION_FAILED;
814 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request setting get engine setting");
819 dbus_message_append_args( msg,
820 DBUS_TYPE_INT32, &pid,
824 dbus_error_init(&err);
826 DBusMessage* result_msg;
827 int result = TTS_SETTING_ERROR_OPERATION_FAILED;
829 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, 3000, &err);
831 if (NULL != result_msg) {
832 DBusMessageIter args;
834 if (dbus_message_iter_init(result_msg, &args)) {
836 if (DBUS_TYPE_INT32 == dbus_message_iter_get_arg_type(&args)) {
837 dbus_message_iter_get_basic(&args, &result);
838 dbus_message_iter_next(&args);
842 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< get engine setting : result = %d \n", result);
844 char* temp_id = NULL;
849 dbus_message_iter_get_basic(&args, &temp_id);
850 dbus_message_iter_next(&args);
852 if (NULL != temp_id) {
853 /* Get setting count */
854 if (DBUS_TYPE_INT32 == dbus_message_iter_get_arg_type(&args)) {
855 dbus_message_iter_get_basic(&args, &size);
856 dbus_message_iter_next(&args);
860 for (i=0 ; i<size ; i++) {
861 dbus_message_iter_get_basic(&args, &(temp_key) );
862 dbus_message_iter_next(&args);
864 dbus_message_iter_get_basic(&args, &(temp_value) );
865 dbus_message_iter_next(&args);
867 if (true != callback(temp_id, temp_key, temp_value, user_data)) {
872 SLOG(LOG_ERROR, TAG_TTSC, "<<<< get engine setting : result message is invalid \n");
873 result = TTS_SETTING_ERROR_OPERATION_FAILED;
877 SLOG(LOG_ERROR, TAG_TTSC, "<<<< get engine setting : result message is invalid \n");
878 result = TTS_SETTING_ERROR_OPERATION_FAILED;
881 dbus_message_unref(result_msg);
883 SLOG(LOG_ERROR, TAG_TTSC, "<<<< get engine setting : Result message is NULL!! \n");
886 dbus_message_unref(msg);
891 int tts_setting_dbus_request_set_engine_setting(const char* key, const char* value)
893 if (NULL == key || NULL == value) {
894 SLOG(LOG_ERROR, TAG_TTSC, "Input Parameter is NULL");
895 return TTS_SETTING_ERROR_INVALID_PARAMETER;
900 msg = dbus_message_new_method_call(
901 TTS_SERVER_SERVICE_NAME,
902 TTS_SERVER_SERVICE_OBJECT_PATH,
903 TTS_SERVER_SERVICE_INTERFACE,
904 TTS_SETTING_METHOD_SET_ENGINE_SETTING);
907 SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request setting set engine setting : Fail to make message \n");
908 return TTS_SETTING_ERROR_OPERATION_FAILED;
910 SLOG(LOG_DEBUG, TAG_TTSC, ">>>> Request setting set engine setting : key(%s), value(%s)", key, value);
915 dbus_message_append_args( msg,
916 DBUS_TYPE_INT32, &pid,
917 DBUS_TYPE_STRING, &key,
918 DBUS_TYPE_STRING, &value,
922 dbus_error_init(&err);
924 DBusMessage* result_msg;
925 int result = TTS_SETTING_ERROR_OPERATION_FAILED;
927 result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, 3000, &err);
929 if (NULL != result_msg) {
930 dbus_message_get_args(result_msg, &err, DBUS_TYPE_INT32, &result, DBUS_TYPE_INVALID);
932 if (dbus_error_is_set(&err)) {
933 SLOG(LOG_ERROR, TAG_TTSC, "<<<< Get arguments error (%s)\n", err.message);
934 dbus_error_free(&err);
937 dbus_message_unref(result_msg);
941 SLOG(LOG_DEBUG, TAG_TTSC, "<<<< setting set engine setting : result(%d)", result);
943 SLOG(LOG_ERROR, TAG_TTSC, "<<<< setting set engine setting : result(%d)", result);
946 dbus_message_unref(msg);