Fix dbus delay when requesting hello
[platform/core/uifw/stt.git] / server / sttd_dbus_server.c
index e2266b8..b3ab460 100644 (file)
@@ -62,7 +62,7 @@ int sttd_dbus_server_initialize(DBusConnection* conn, DBusMessage* msg)
                DBUS_TYPE_INT32, &pid,
                DBUS_TYPE_INT32, &uid,
                DBUS_TYPE_INVALID);
-       
+
        SLOG(LOG_DEBUG, TAG_STTD, ">>>>> STT Initialize");
 
        if (dbus_error_is_set(&err)) {
@@ -70,7 +70,7 @@ int sttd_dbus_server_initialize(DBusConnection* conn, DBusMessage* msg)
                dbus_error_free(&err);
                ret = STTD_ERROR_OPERATION_FAILED;
        } else {
-               SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt initialize : pid(%d), uid(%d)", pid , uid); 
+               SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt initialize : pid(%d), uid(%d)", pid , uid);
                ret =  sttd_server_initialize(pid, uid, &silence_supported, &credential_needed);
        }
 
@@ -78,15 +78,19 @@ int sttd_dbus_server_initialize(DBusConnection* conn, DBusMessage* msg)
        reply = dbus_message_new_method_return(msg);
 
        if (NULL != reply) {
+               int int_silence_supported = (int)silence_supported;
+               int int_credential_needed = (int)credential_needed;
+
                dbus_message_append_args(reply, 
                        DBUS_TYPE_INT32, &ret, 
-                       DBUS_TYPE_INT32, &silence_supported,
-                       DBUS_TYPE_INT32, &credential_needed,
+                       DBUS_TYPE_INT32, &int_silence_supported,
+                       DBUS_TYPE_INT32, &int_credential_needed,
                        DBUS_TYPE_INVALID);
 
+
                if (0 == ret) {
                        SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d), silence(%d), credential(%d)", 
-                               ret, silence_supported, credential_needed); 
+                               ret, silence_supported, credential_needed);
                } else {
                        SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
                }
@@ -123,7 +127,7 @@ int sttd_dbus_server_finalize(DBusConnection* conn, DBusMessage* msg)
                dbus_error_free(&err);
                ret = STTD_ERROR_OPERATION_FAILED;
        } else {
-               SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt finalize : uid(%d)", uid); 
+               SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt finalize : uid(%d)", uid);
                ret =  sttd_server_finalize(uid);
        }
 
@@ -174,7 +178,7 @@ int sttd_dbus_server_get_support_engines(DBusConnection* conn, DBusMessage* msg)
                dbus_error_free(&err);
                ret = STTD_ERROR_OPERATION_FAILED;
        } else {
-               SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt supported engines : uid(%d)", uid); 
+               SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt supported engines : uid(%d)", uid);
                ret = sttd_server_get_supported_engines(uid, &engine_list);
        }
 
@@ -215,11 +219,21 @@ int sttd_dbus_server_get_support_engines(DBusConnection* conn, DBusMessage* msg)
                                                        SLOG(LOG_ERROR, TAG_STTD, "[ERROR] Engine info is NULL");
                                                }
 
-                                               if (NULL != engine->engine_id)          free(engine->engine_id);
-                                               if (NULL != engine->engine_name)        free(engine->engine_name);
-                                               if (NULL != engine->ug_name)            free(engine->ug_name);
+                                               if (NULL != engine->engine_id) {
+                                                       free(engine->engine_id);
+                                                       engine->engine_id = NULL;
+                                               }
+                                               if (NULL != engine->engine_name) {
+                                                       free(engine->engine_name);
+                                                       engine->engine_name = NULL;
+                                               }
+                                               if (NULL != engine->ug_name) {
+                                                       free(engine->ug_name);
+                                                       engine->ug_name = NULL;
+                                               }
 
                                                free(engine);
+                                               engine = NULL;
                                        } else {
                                                SLOG(LOG_ERROR, TAG_STTD, "[ERROR] Engine info is NULL");
                                        }
@@ -273,7 +287,7 @@ int sttd_dbus_server_set_current_engine(DBusConnection* conn, DBusMessage* msg)
                dbus_error_free(&err);
                ret = STTD_ERROR_OPERATION_FAILED;
        } else {
-               SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt set current engine : uid(%d)", uid); 
+               SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt set current engine : uid(%d), engine_id(%s)", uid, (NULL == engine_id) ? "NULL" : engine_id);
                ret = sttd_server_set_current_engine(uid, engine_id, &silence_supported, &credential_needed);
        }
 
@@ -281,10 +295,13 @@ int sttd_dbus_server_set_current_engine(DBusConnection* conn, DBusMessage* msg)
        reply = dbus_message_new_method_return(msg);
 
        if (NULL != reply) {
+               int int_silence_supported = (int)silence_supported;
+               int int_credential_needed = (int)credential_needed;
+
                dbus_message_append_args(reply, 
                        DBUS_TYPE_INT32, &ret, 
-                       DBUS_TYPE_INT32, &silence_supported,
-                       DBUS_TYPE_INT32, &credential_needed,
+                       DBUS_TYPE_INT32, &int_silence_supported,
+                       DBUS_TYPE_INT32, &int_credential_needed,
                        DBUS_TYPE_INVALID);
 
                if (0 == ret) {
@@ -328,7 +345,7 @@ int sttd_dbus_server_get_current_engine(DBusConnection* conn, DBusMessage* msg)
                dbus_error_free(&err);
                ret = STTD_ERROR_OPERATION_FAILED;
        } else {
-               SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt get current engine : uid(%d)", uid); 
+               SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt get current engine : uid(%d)", uid);
                ret = sttd_server_get_current_engine(uid, &engine);
        }
 
@@ -390,7 +407,7 @@ int sttd_dbus_server_check_app_agreed(DBusConnection* conn, DBusMessage* msg)
                dbus_error_free(&err);
                ret = STTD_ERROR_OPERATION_FAILED;
        } else {
-               SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt Is engine available : uid(%d)", uid); 
+               SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt Is engine available : uid(%d)", uid);
                ret = sttd_server_check_app_agreed(uid, appid, &available);
        }
 
@@ -444,7 +461,7 @@ int sttd_dbus_server_get_support_lang(DBusConnection* conn, DBusMessage* msg)
                dbus_error_free(&err);
                ret = STTD_ERROR_OPERATION_FAILED;
        } else {
-               SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt supported langs : uid(%d)", uid); 
+               SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt supported langs : uid(%d)", uid);
                ret = sttd_server_get_supported_languages(uid, &lang_list);
        }
 
@@ -523,7 +540,7 @@ int sttd_dbus_server_get_default_lang(DBusConnection* conn, DBusMessage* msg)
                dbus_error_free(&err);
                ret = STTD_ERROR_OPERATION_FAILED;
        } else {
-               SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt get default lang : uid(%d)", uid); 
+               SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt get default lang : uid(%d)", uid);
                ret = sttd_server_get_current_langauage(uid, &lang);
        }
 
@@ -571,7 +588,7 @@ int sttd_dbus_server_set_private_data(DBusConnection* conn, DBusMessage* msg)
        int uid;
        char* key;
        char* data;
-       int ret = 0;
+       int ret = STTD_ERROR_OPERATION_FAILED;
        dbus_message_get_args(msg, &err,
                DBUS_TYPE_INT32, &uid,
                DBUS_TYPE_STRING, &key,
@@ -604,7 +621,7 @@ int sttd_dbus_server_set_private_data(DBusConnection* conn, DBusMessage* msg)
                }
 
                if (!dbus_connection_send(conn, reply, NULL)) {
-                       SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to send reply");
+                       SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Out Of Memory!");
                }
 
                dbus_connection_flush(conn);
@@ -625,9 +642,9 @@ int sttd_dbus_server_get_private_data(DBusConnection* conn, DBusMessage* msg)
        dbus_error_init(&err);
 
        int uid;
-       char* key;
-       char* data;
-       int ret = 0;
+       char* key = NULL;
+       char* data = NULL;
+       int ret = STTD_ERROR_OPERATION_FAILED;
        dbus_message_get_args(msg, &err,
                DBUS_TYPE_INT32, &uid,
                DBUS_TYPE_STRING, &key,
@@ -661,7 +678,7 @@ int sttd_dbus_server_get_private_data(DBusConnection* conn, DBusMessage* msg)
                }
 
                if (!dbus_connection_send(conn, reply, NULL)) {
-                       SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Fail to send reply");
+                       SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Out Of Memory!");
                }
 
                dbus_connection_flush(conn);
@@ -712,7 +729,7 @@ int sttd_dbus_server_is_recognition_type_supported(DBusConnection* conn, DBusMes
                        DBUS_TYPE_INVALID);
 
                if (0 == ret) {
-                       SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d), Support(%s)", ret, support ? "true" : "false"); 
+                       SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d), Support(%s)", ret, support ? "true" : "false");
                } else {
                        SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
                }
@@ -765,7 +782,7 @@ int sttd_dbus_server_set_start_sound(DBusConnection* conn, DBusMessage* msg)
                        DBUS_TYPE_INVALID);
 
                if (0 == ret) {
-                       SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d)", ret); 
+                       SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d)", ret);
                } else {
                        SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
                }
@@ -817,7 +834,7 @@ int sttd_dbus_server_unset_start_sound(DBusConnection* conn, DBusMessage* msg)
                        DBUS_TYPE_INVALID);
 
                if (0 == ret) {
-                       SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d)", ret); 
+                       SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d)", ret);
                } else {
                        SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
                }
@@ -922,7 +939,7 @@ int sttd_dbus_server_unset_stop_sound(DBusConnection* conn, DBusMessage* msg)
                        DBUS_TYPE_INVALID);
 
                if (0 == ret) {
-                       SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d)", ret); 
+                       SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d)", ret);
                } else {
                        SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
                }
@@ -958,7 +975,7 @@ int sttd_dbus_server_start(DBusConnection* conn, DBusMessage* msg)
 
        dbus_message_get_args(msg, &err, 
                DBUS_TYPE_INT32, &uid, 
-               DBUS_TYPE_STRING, &lang,   
+               DBUS_TYPE_STRING, &lang,
                DBUS_TYPE_STRING, &type,
                DBUS_TYPE_INT32, &silence,
                DBUS_TYPE_STRING, &appid,
@@ -973,7 +990,7 @@ int sttd_dbus_server_start(DBusConnection* conn, DBusMessage* msg)
                ret = STTD_ERROR_OPERATION_FAILED;
        } else {
                SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt start : uid(%d), lang(%s), type(%s), silence(%d) appid(%s) credential(%s)"
-                       , uid, lang, type, silence, appid, credential); 
+                       , uid, lang, type, silence, appid, credential);
                ret = sttd_server_start(uid, lang, type, silence, appid, credential);
        }
 
@@ -1032,7 +1049,7 @@ int sttd_dbus_server_stop(DBusConnection* conn, DBusMessage* msg)
                dbus_error_free(&err);
                ret = STTD_ERROR_OPERATION_FAILED;
        } else {
-               SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt stop : uid(%d)", uid); 
+               SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt stop : uid(%d)", uid);
                ret = sttd_server_stop(uid);
        }
 
@@ -1090,7 +1107,7 @@ int sttd_dbus_server_cancel(DBusConnection* conn, DBusMessage* msg)
                dbus_error_free(&err);
                ret = STTD_ERROR_OPERATION_FAILED;
        } else {
-               SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt cancel : uid(%d)", uid); 
+               SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt cancel : uid(%d)", uid);
                ret = sttd_server_cancel(uid);
        }
 
@@ -1130,3 +1147,93 @@ int sttd_dbus_server_cancel(DBusConnection* conn, DBusMessage* msg)
 
        return 0;
 }
+
+int sttd_dbus_server_start_file(DBusConnection* conn, DBusMessage* msg)
+{
+       DBusError err;
+       dbus_error_init(&err);
+
+       int uid;
+       char* lang;
+       char* type;
+       char* appid;
+       int silence;
+       char* credential;
+       char* filepath;
+       stte_audio_type_e audio_type;
+       int sample_rate;
+
+       int ret = STTD_ERROR_OPERATION_FAILED;
+
+       dbus_message_get_args(msg, &err,
+               DBUS_TYPE_INT32, &uid,
+               DBUS_TYPE_STRING, &lang,
+               DBUS_TYPE_STRING, &type,
+               DBUS_TYPE_INT32, &silence,
+               DBUS_TYPE_STRING, &appid,
+               DBUS_TYPE_STRING, &credential,
+               DBUS_TYPE_STRING, &filepath,
+               DBUS_TYPE_INT32, &audio_type,
+               DBUS_TYPE_INT32, &sample_rate,
+               DBUS_TYPE_INVALID);
+
+       SLOG(LOG_DEBUG, TAG_STTD, ">>>>> STT Start File");
+
+       if (dbus_error_is_set(&err)) {
+               SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] stt start file: get arguments error (%s)", err.message);
+               dbus_error_free(&err);
+               ret = STTD_ERROR_OPERATION_FAILED;
+       } else {
+               SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt start file : uid(%d), lang(%s), type(%s), silence(%d) appid(%s) filepath(%s), audio_type(%d), sample_rate(%d)"
+                       , uid, lang, type, silence, appid, filepath, audio_type, sample_rate);
+               ret = sttd_server_start_file(uid, lang, type, silence, appid, credential, filepath, audio_type, sample_rate);
+       }
+
+       if (0 <= ret) {
+               SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d)", ret);
+       } else {
+               SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
+               if (0 != sttdc_send_error_signal(uid, ret, "[ERROR] Fail to start file")) {
+                       SLOG(LOG_ERROR, TAG_STTD, "[ERROR] Fail to send error signal");
+               }
+       }
+
+       SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
+       SLOG(LOG_DEBUG, TAG_STTD, "  ");
+
+       return 0;
+}
+
+int sttd_dbus_server_cancel_file(DBusConnection* conn, DBusMessage* msg)
+{
+       DBusError err;
+       dbus_error_init(&err);
+
+       int uid;
+       int ret = STTD_ERROR_OPERATION_FAILED;
+       dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID);
+
+       SLOG(LOG_DEBUG, TAG_STTD, ">>>>> STT Cancel File");
+
+       if (dbus_error_is_set(&err)) {
+               SLOG(LOG_ERROR, TAG_STTD, "[IN ERROR] stt cancel file : get arguments error (%s)", err.message);
+               dbus_error_free(&err);
+               ret = STTD_ERROR_OPERATION_FAILED;
+       } else {
+               SLOG(LOG_DEBUG, TAG_STTD, "[IN] stt cancel file : uid(%d)", uid);
+               ret = sttd_server_cancel_file(uid);
+       }
+
+       if (0 <= ret) {
+               SLOG(LOG_DEBUG, TAG_STTD, "[OUT SUCCESS] Result(%d)", ret);
+       } else {
+               SLOG(LOG_ERROR, TAG_STTD, "[OUT ERROR] Result(%d)", ret);
+               if (0 != sttdc_send_error_signal(uid, ret, "[ERROR] Fail to cancel")) {
+                       SLOG(LOG_ERROR, TAG_STTD, "[ERROR] Fail to send error signal");
+               }
+       }
+       SLOG(LOG_DEBUG, TAG_STTD, "<<<<<");
+       SLOG(LOG_DEBUG, TAG_STTD, "  ");
+
+       return 0;
+}