/*
-* Copyright (c) 2012, 2013 Samsung Electronics Co., Ltd All Rights Reserved
+* Copyright (c) 2011-2014 Samsung Electronics Co., Ltd All Rights Reserved
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
DBusMessage* msg;
- SLOG(LOG_DEBUG, TAG_STTD, "[Dbus] Send hello message : uid(%d)", uid);
+ SECURE_SLOG(LOG_DEBUG, TAG_STTD, "[Dbus] Send hello message : uid(%d)", uid);
msg = dbus_message_new_method_call(
service_name,
result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, g_waiting_time, &err);
dbus_message_unref(msg);
+ if (dbus_error_is_set(&err)) {
+ SLOG(LOG_ERROR, TAG_STTD, "[ERROR] Send error (%s)", err.message);
+ dbus_error_free(&err);
+ }
if (NULL != result_msg) {
dbus_message_get_args(result_msg, &err, DBUS_TYPE_INT32, &result, DBUS_TYPE_INVALID);
DBusMessage* msg;
- SLOG(LOG_DEBUG, TAG_STTD, "[Dbus] Send get state message : uid(%d)", uid);
+ SECURE_SLOG(LOG_DEBUG, TAG_STTD, "[Dbus] Send get state message : uid(%d)", uid);
msg = dbus_message_new_method_call(
service_name,
result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, g_waiting_time, &err);
dbus_message_unref(msg);
+ if (dbus_error_is_set(&err)) {
+ SLOG(LOG_ERROR, TAG_STTD, "[ERROR] Send error (%s)", err.message);
+ dbus_error_free(&err);
+ }
if (NULL != result_msg) {
dbus_message_get_args(result_msg, &err, DBUS_TYPE_INT32, &tmp, DBUS_TYPE_INVALID);
return result;
}
-int sttdc_send_result(int uid, const char* type, const char** data, int data_count, const char* result_msg)
+int sttdc_send_result(int uid, int event, const char** data, int data_count, const char* result_msg)
{
int pid = sttd_client_get_pid(uid);
snprintf(target_if_name, sizeof(target_if_name), "%s%d", STT_CLIENT_SERVICE_INTERFACE, pid);
DBusMessage* msg;
-
- SLOG(LOG_DEBUG, TAG_STTD, "[Dbus] send result signal : uid(%d), type(%s), result count(%d)", uid, type, data_count);
+
+ SECURE_SLOG(LOG_DEBUG, TAG_STTD, "[Dbus] send result signal : uid(%d), event(%d), result count(%d)", uid, event, data_count);
msg = dbus_message_new_method_call(
service_name,
dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &uid);
char* msg_temp;
- if (NULL == type) {
- msg_temp = strdup("None");
- dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(msg_temp));
- SLOG(LOG_WARN, TAG_STTD, "[Dbus] result type is NULL");
- free(msg_temp);
- } else {
- dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(type));
- SLOG(LOG_DEBUG, TAG_STTD, "[Dbus] result type(%s)", type );
- }
+ dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &event);
/* Append result msg */
if (NULL == result_msg) {
}
int i;
-
- SLOG(LOG_DEBUG, TAG_STTD, "[Dbus] result size (%d)", data_count);
- for (i=0 ; i<data_count ; i++) {
+ SECURE_SLOG(LOG_DEBUG, TAG_STTD, "[Dbus] result size (%d)", data_count);
+ for (i = 0;i < data_count;i++) {
if (NULL != data[i]) {
- SLOG(LOG_DEBUG, TAG_STTD, "[Dbus] result (%d, %s)", i, data[i] );
+ SECURE_SLOG(LOG_DEBUG, TAG_STTD, "[Dbus] result (%d, %s)", i, data[i] );
if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &data[i])) {
SLOG(LOG_ERROR, TAG_STTD, "[Dbus] response message : Fail to append result data");
sttd_client_delete(uid);
}
- SLOG(LOG_ERROR, TAG_STTD, "[Dbus ERROR] Result from engine is NULL(%d) %s", i);
-
+ SECURE_SLOG(LOG_ERROR, TAG_STTD, "[Dbus ERROR] Result from engine is NULL(%d)", i);
return -1;
}
}
return 0;
}
-int sttdc_send_partial_result(int uid, const char* data)
-{
- int pid = sttd_client_get_pid(uid);
-
- if (0 > pid) {
- SLOG(LOG_ERROR, TAG_STTD, "[Dbus ERROR] pid is NOT valid" );
- return -1;
- }
-
- if (NULL == data) {
- SLOG(LOG_ERROR, TAG_STTD, "[Dbus ERROR] Input data is NULL" );
- return -1;
- }
-
- char service_name[64];
- memset(service_name, 0, 64);
- snprintf(service_name, 64, "%s%d", STT_CLIENT_SERVICE_NAME, pid);
-
- char target_if_name[128];
- snprintf(target_if_name, sizeof(target_if_name), "%s%d", STT_CLIENT_SERVICE_INTERFACE, pid);
-
- DBusMessage* msg;
-
- SLOG(LOG_DEBUG, TAG_STTD, "[Dbus] send result signal : uid(%d), result(%s)", uid, data);
-
- msg = dbus_message_new_method_call(
- service_name,
- STT_CLIENT_SERVICE_OBJECT_PATH,
- target_if_name,
- STTD_METHOD_PARTIAL_RESULT);
-
- if (NULL == msg) {
- SLOG(LOG_ERROR, TAG_STTD, "[Dbus ERROR] Fail to create message");
- return -1;
- }
-
- DBusMessageIter args;
- dbus_message_iter_init_append(msg, &args);
-
- /* Append uid & type */
- dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &uid);
-
- SLOG(LOG_DEBUG, TAG_STTD, "[Dbus] Partial result (%s)", data );
-
- if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, data)) {
- SLOG(LOG_ERROR, TAG_STTD, "[Dbus] response message : Fail to append result data");
- return -1;
- }
-
- if (!dbus_connection_send(g_conn, msg, NULL)) {
- SLOG(LOG_ERROR, TAG_STTD, "[Dbus ERROR] Fail to send message : Out Of Memory !");
- return -1;
- }
-
- dbus_connection_flush(g_conn);
- dbus_message_unref(msg);
-
- return 0;
-}
-
-int sttdc_send_error_signal(int uid, int reason, char *err_msg)
+int sttdc_send_error_signal(int uid, int reason, const char *err_msg)
{
if (NULL == err_msg) {
SLOG(LOG_ERROR, TAG_STTD, "[Dbus ERROR] Input parameter is NULL");
result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, g_waiting_time, &err);
dbus_message_unref(msg);
+ if (dbus_error_is_set(&err)) {
+ SLOG(LOG_ERROR, TAG_STTD, "[ERROR] Send error (%s)", err.message);
+ dbus_error_free(&err);
+ }
if (NULL != result_msg) {
dbus_message_unref(result_msg);
DBusMessage* msg;
- SLOG(LOG_DEBUG, TAG_STTD, "[Dbus] Send change state message : uid(%d), state(%d)", uid, state);
+ SECURE_SLOG(LOG_DEBUG, TAG_STTD, "[Dbus] Send change state message : uid(%d), state(%d)", uid, state);
msg = dbus_message_new_method_call(
service_name,
DBUS_TYPE_INT32, &state,
DBUS_TYPE_INVALID);
- DBusError err;
- dbus_error_init(&err);
-
- DBusMessage* result_msg;
- int result = -1;
+ if (!dbus_connection_send(g_conn, msg, NULL)) {
+ SLOG(LOG_ERROR, TAG_STTD, "[Dbus ERROR] Fail to send message : Out Of Memory !");
+ return -1;
+ }
- result_msg = dbus_connection_send_with_reply_and_block(g_conn, msg, g_waiting_time, &err);
+ dbus_connection_flush(g_conn);
dbus_message_unref(msg);
- if (NULL != result_msg) {
- dbus_message_get_args(result_msg, &err, DBUS_TYPE_INT32, &result, DBUS_TYPE_INVALID);
-
- if (dbus_error_is_set(&err)) {
- SLOG(LOG_ERROR, TAG_STTD, "[Dbus] Get arguments error (%s)\n", err.message);
- dbus_error_free(&err);
- result = -1;
- }
-
- dbus_message_unref(result_msg);
- } else {
- SLOG(LOG_DEBUG, TAG_STTD, "[Dbus] Result message is NULL. Client is not available");
- }
-
- return result;
+ return 0;
}
static Eina_Bool listener_event_callback(void* data, Ecore_Fd_Handler *fd_handler)
msg = dbus_connection_pop_message(conn);
+ if (true != dbus_connection_get_is_connected(conn)) {
+ SLOG(LOG_ERROR, TAG_STTD, "[Dbus ERROR] Conn is disconnected");
+ return ECORE_CALLBACK_RENEW;
+ }
+
/* loop again if we haven't read a message */
- if (NULL == msg || NULL == conn) {
+ if (NULL == msg) {
return ECORE_CALLBACK_RENEW;
}
else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_METHOD_FINALIZE))
sttd_dbus_server_finalize(conn, msg);
-
+
+ else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_METHOD_SET_CURRENT_ENGINE))
+ sttd_dbus_server_set_current_engine(conn, msg);
+
+ else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_METHOD_CHECK_APP_AGREED))
+ sttd_dbus_server_check_app_agreed(conn, msg);
+
else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_METHOD_GET_SUPPORT_LANGS))
sttd_dbus_server_get_support_lang(conn, msg);
else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_METHOD_GET_CURRENT_LANG))
sttd_dbus_server_get_default_lang(conn, msg);
- else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_METHOD_IS_PARTIAL_SUPPORTED))
- sttd_dbus_server_is_partial_result_supported(conn, msg);
+ else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_METHOD_IS_TYPE_SUPPORTED))
+ sttd_dbus_server_is_recognition_type_supported(conn, msg);
+
+
+ else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_METHOD_SET_START_SOUND))
+ sttd_dbus_server_set_start_sound(conn, msg);
+
+ else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_METHOD_UNSET_START_SOUND))
+ sttd_dbus_server_unset_start_sound(conn, msg);
+
+ else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_METHOD_SET_STOP_SOUND))
+ sttd_dbus_server_set_stop_sound(conn, msg);
+
+ else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_METHOD_UNSET_STOP_SOUND))
+ sttd_dbus_server_unset_stop_sound(conn, msg);
+
else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_METHOD_START))
sttd_dbus_server_start(conn, msg);
else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_METHOD_CANCEL))
sttd_dbus_server_cancel(conn, msg);
- else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_METHOD_START_FILE_RECONITION))
- sttd_dbus_server_start_file_recognition(conn, msg);
-
- /* setting event */
- else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_SETTING_METHOD_HELLO))
- sttd_dbus_server_hello(conn, msg);
-
- else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_SETTING_METHOD_INITIALIZE))
- sttd_dbus_server_setting_initialize(conn, msg);
-
- else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_SETTING_METHOD_FINALIZE))
- sttd_dbus_server_setting_finalize(conn, msg);
-
- else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_SETTING_METHOD_GET_ENGINE_LIST))
- sttd_dbus_server_setting_get_engine_list(conn, msg);
-
- else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_SETTING_METHOD_GET_ENGINE))
- sttd_dbus_server_setting_get_engine(conn, msg);
-
- else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_SETTING_METHOD_SET_ENGINE))
- sttd_dbus_server_setting_set_engine(conn, msg);
-
- else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_SETTING_METHOD_GET_LANG_LIST))
- sttd_dbus_server_setting_get_language_list(conn, msg);
-
- else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_SETTING_METHOD_GET_DEFAULT_LANG))
- sttd_dbus_server_setting_get_default_language(conn, msg);
-
- else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_SETTING_METHOD_SET_DEFAULT_LANG))
- sttd_dbus_server_setting_set_default_language(conn, msg);
-
-
- else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_SETTING_METHOD_GET_PROFANITY))
- sttd_dbus_server_setting_get_profanity_filter(conn, msg);
-
- else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_SETTING_METHOD_SET_PROFANITY))
- sttd_dbus_server_setting_set_profanity_filter(conn, msg);
-
- else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_SETTING_METHOD_GET_PUNCTUATION))
- sttd_dbus_server_setting_get_punctuation_override(conn, msg);
-
- else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_SETTING_METHOD_SET_PUNCTUATION))
- sttd_dbus_server_setting_set_punctuation_override(conn, msg);
-
- else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_SETTING_METHOD_GET_SILENCE))
- sttd_dbus_server_setting_get_silence_detection(conn, msg);
-
- else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_SETTING_METHOD_SET_SILENCE))
- sttd_dbus_server_setting_set_silence_detection(conn, msg);
-
-
- else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_SETTING_METHOD_GET_ENGINE_SETTING))
- sttd_dbus_server_setting_get_engine_setting(conn, msg);
-
- else if (dbus_message_is_method_call(msg, STT_SERVER_SERVICE_INTERFACE, STT_SETTING_METHOD_SET_ENGINE_SETTING))
- sttd_dbus_server_setting_set_engine_setting(conn, msg);
-
/* free the message */
dbus_message_unref(msg);
ret = dbus_bus_request_name(g_conn, STT_SERVER_SERVICE_NAME, DBUS_NAME_FLAG_REPLACE_EXISTING , &err);
if (DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER != ret) {
- printf("Fail to be primary owner in dbus request.");
SLOG(LOG_ERROR, TAG_STTD, "[Dbus ERROR] Fail to be primary owner");
return -1;
}