X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=client%2Fstt_dbus.c;h=2f3292a99d21ba9833cd458d0d80db79d8461529;hb=2640fb987983c80bd5312f9bc03e7b321dbeff78;hp=e5da10009046857c03defd8527ec57c001b00b2b;hpb=228c936b90ad516c06a60920b6555cde29254d7f;p=platform%2Fcore%2Fuifw%2Fstt.git diff --git a/client/stt_dbus.c b/client/stt_dbus.c index e5da100..2f3292a 100644 --- a/client/stt_dbus.c +++ b/client/stt_dbus.c @@ -705,6 +705,8 @@ int stt_dbus_open_connection() return STT_ERROR_OPERATION_FAILED; } + dbus_connection_set_exit_on_disconnect(g_conn_listener, false); + int pid = getpid(); char service_name[64]; @@ -2139,3 +2141,118 @@ int stt_dbus_request_cancel(int uid) return result; #endif } + +int stt_dbus_request_start_file(int uid, const char* lang, const char* type, int silence, const char* appid, const char* credential, const char* filepath, stt_audio_type_e audio_type, int sample_rate) +{ + if (NULL == lang || NULL == type || NULL == appid) { + SLOG(LOG_ERROR, TAG_STTC, "Input parameter is NULL"); + return STT_ERROR_INVALID_PARAMETER; + } + + DBusMessage* msg; + + /* create a signal & check for errors */ + msg = dbus_message_new_method_call( + g_server_service_name, + g_server_service_object, + g_server_service_interface, + STT_METHOD_START_FILE); + + if (NULL == msg) { + SLOG(LOG_ERROR, TAG_STTC, ">>>> stt start file : Fail to make message"); + return STT_ERROR_OPERATION_FAILED; + } else { + SLOG(LOG_DEBUG, TAG_STTC, ">>>> stt start file : uid(%d), language(%s), type(%s), appid(%s), filepath(%s), audio_type(%d), sample_rate(%d)", uid, lang, type, appid, filepath, audio_type, sample_rate); + } + + char *temp = NULL; + if (NULL == credential) { + temp = strdup("NULL"); + } else { + temp = strdup(credential); + } + + dbus_message_append_args(msg, + DBUS_TYPE_INT32, &uid, + DBUS_TYPE_STRING, &lang, + DBUS_TYPE_STRING, &type, + DBUS_TYPE_INT32, &silence, + DBUS_TYPE_STRING, &appid, + DBUS_TYPE_STRING, &temp, + DBUS_TYPE_STRING, &filepath, + DBUS_TYPE_INT32, &audio_type, + DBUS_TYPE_INT32, &sample_rate, + DBUS_TYPE_INVALID); + if (g_conn_sender) { + dbus_message_set_no_reply(msg, TRUE); + + if (!dbus_connection_send(g_conn_sender, msg, NULL)) { + SLOG(LOG_ERROR, TAG_STTC, "[Dbus ERROR] <<<< stt start message : Out Of Memory !"); + if (NULL != temp) { + free(temp); + temp = NULL; + } + return STT_ERROR_OUT_OF_MEMORY; + } else { + dbus_connection_flush(g_conn_sender); + } + + dbus_message_unref(msg); + + } else { + SLOG(LOG_WARN, TAG_STTC, "[WARN] dbus connection handle is null (%p)", g_conn_sender); + if (NULL != temp) { + free(temp); + temp = NULL; + } + return STT_ERROR_OPERATION_FAILED; + } + + if (NULL != temp) { + free(temp); + temp = NULL; + } + return 0; +} + +int stt_dbus_request_cancel_file(int uid) +{ + DBusMessage* msg; + + /* create a signal & check for errors */ + msg = dbus_message_new_method_call( + g_server_service_name, + g_server_service_object, + g_server_service_interface, + STT_METHOD_CANCEL_FILE); + + if (NULL == msg) { + SLOG(LOG_ERROR, TAG_STTC, ">>>> stt cancel file : Fail to make message"); + return STT_ERROR_OPERATION_FAILED; + } else { + SLOG(LOG_DEBUG, TAG_STTC, ">>>> stt cancel file : uid(%d)", uid); + } + + dbus_message_append_args(msg, + DBUS_TYPE_INT32, &uid, + DBUS_TYPE_INVALID); + + if (g_conn_sender) { + dbus_message_set_no_reply(msg, TRUE); + + if (!dbus_connection_send(g_conn_sender, msg, NULL)) { + SLOG(LOG_ERROR, TAG_STTC, "[Dbus ERROR] <<<< stt stop message : Out Of Memory !"); + return STT_ERROR_OUT_OF_MEMORY; + } else { + dbus_connection_flush(g_conn_sender); + } + + dbus_message_unref(msg); + } else { + SLOG(LOG_WARN, TAG_STTC, "[WARN] dbus connection handle is null (%p)", g_conn_sender); + return STT_ERROR_OPERATION_FAILED; + } + + return 0; +} +