Add logic to set default language of the engine
[platform/core/uifw/stt.git] / common / stt_config_mgr.c
old mode 100644 (file)
new mode 100755 (executable)
index b66b1d8..479ac08
@@ -1,5 +1,5 @@
 /*
-*  Copyright (c) 2011-2014 Samsung Electronics Co., Ltd All Rights Reserved
+*  Copyright (c) 2011-2016 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
@@ -19,6 +19,7 @@
 #include <unistd.h>
 #include <sys/inotify.h>
 #include <vconf.h>
+#include <buxton2.h>
 
 #include "stt_config_mgr.h"
 #include "stt_defs.h"
@@ -111,7 +112,7 @@ int __stt_config_mgr_select_lang(const char* engine_id, char** language)
 {
        if (NULL == engine_id || NULL == language) {
                SLOG(LOG_ERROR, stt_tag(), "[ERROR] Input parameter is NULL");
-               return false;
+               return STT_CONFIG_ERROR_INVALID_PARAMETER;
        }
 
        GSList *iter = NULL;
@@ -119,7 +120,7 @@ int __stt_config_mgr_select_lang(const char* engine_id, char** language)
 
        if (0 >= g_slist_length(g_engine_list)) {
                SLOG(LOG_ERROR, stt_tag(), "[ERROR] There is no engine!!");
-               return false;
+               return STT_CONFIG_ERROR_OPERATION_FAILED;
        }
 
        /* Get a first item */
@@ -130,7 +131,8 @@ int __stt_config_mgr_select_lang(const char* engine_id, char** language)
 
                if (NULL == engine_info) {
                        SLOG(LOG_ERROR, stt_tag(), "engine info is NULL");
-                       return false;
+                       iter = g_slist_next(iter);
+                       continue;
                }
 
                if (0 != strcmp(engine_id, engine_info->uuid)) {
@@ -138,37 +140,20 @@ int __stt_config_mgr_select_lang(const char* engine_id, char** language)
                        continue;
                }
 
-               GSList *iter_lang = NULL;
-               char* engine_lang = NULL;
-               if (g_slist_length(engine_info->languages) > 0) {
-                       /* Get a first item */
-                       iter_lang = g_slist_nth(engine_info->languages, 0);
-
-                       while (NULL != iter_lang) {
-                               engine_lang = iter_lang->data;
-                               if (NULL != engine_lang) {
-                                       /* Default language is STT_BASE_LANGUAGE */
-                                       if (0 == strcmp(STT_BASE_LANGUAGE, engine_lang)) {
-                                               *language = strdup(engine_lang);
-                                               SLOG(LOG_DEBUG, stt_tag(), "Selected language : %s", *language);
-                                               return 0;
-                                       }
-                               }
+               if (NULL == engine_info->default_lang) {
+                       SLOG(LOG_ERROR, stt_tag(), "[ERROR] Default language of the engine info is NULL");
+                       return STT_CONFIG_ERROR_INVALID_LANGUAGE;
+               }
 
-                               iter_lang = g_slist_next(iter_lang);
-                       }
+               *language = strdup(engine_info->default_lang);
 
-                       /* Not support STT_BASE_LANGUAGE */
-                       if (NULL != engine_lang) {
-                               *language = strdup(engine_lang);
-                               SLOG(LOG_DEBUG, stt_tag(), "Selected language : %s", *language);
-                               return 0;
-                       }
+               if (NULL != *language) {
+                       SLOG(LOG_DEBUG, stt_tag(), "Selected language : %s", *language);
+                       return STT_CONFIG_ERROR_NONE;
                }
-               break;
        }
 
-       return -1;
+       return STT_CONFIG_ERROR_OPERATION_FAILED;
 }
 
 Eina_Bool stt_config_mgr_inotify_event_cb(void* data, Ecore_Fd_Handler *fd_handler)
@@ -193,11 +178,12 @@ Eina_Bool stt_config_mgr_inotify_event_cb(void* data, Ecore_Fd_Handler *fd_handl
                char* lang = NULL;
                int auto_lang = -1;
                int silence = -1;
+               int credential = -1;
 
                GSList *iter = NULL;
                stt_config_client_s* temp_client = NULL;
 
-               if (0 != stt_parser_find_config_changed(&engine, &setting, &auto_lang, &lang, &silence))
+               if (0 != stt_parser_find_config_changed(&engine, &setting, &auto_lang, &lang, &silence, &credential))
                        return ECORE_CALLBACK_PASS_ON;
 
                /* Engine changed */
@@ -220,6 +206,8 @@ Eina_Bool stt_config_mgr_inotify_event_cb(void* data, Ecore_Fd_Handler *fd_handl
 
                        if (-1 != silence)      g_config_info->silence_detection = silence;
 
+                       if (-1 != credential)   g_config_info->credential = credential;
+
                        /* Call all callbacks of client*/
                        iter = g_slist_nth(g_config_client_list, 0);
 
@@ -229,7 +217,7 @@ Eina_Bool stt_config_mgr_inotify_event_cb(void* data, Ecore_Fd_Handler *fd_handl
                                if (NULL != temp_client) {
                                        if (NULL != temp_client->engine_cb) {
                                                temp_client->engine_cb(g_config_info->engine_id, g_config_info->setting, g_config_info->language,
-                                                       g_config_info->silence_detection, temp_client->user_data);
+                                                       g_config_info->silence_detection, g_config_info->credential, temp_client->user_data);
                                        }
                                }
 
@@ -353,7 +341,18 @@ int __stt_config_set_auto_language()
        strncpy(candidate_lang, value, 5);
        free(value);
 
+       /* Check current config info */
+       if (NULL == g_config_info) {
+               SLOG(LOG_ERROR, stt_tag(), "Current config info is NULL");
+               return STT_CONFIG_ERROR_OPERATION_FAILED;
+       }
+
        /* Check current language */
+       if (NULL == g_config_info->language) {
+               SLOG(LOG_ERROR, stt_tag(), "Current config language is NULL");
+               return STT_CONFIG_ERROR_OPERATION_FAILED;
+       }
+
        if (0 == strncmp(g_config_info->language, candidate_lang, 5)) {
                SLOG(LOG_DEBUG, stt_tag(), "[Config] Language is auto. STT language(%s) is same with display lang", g_config_info->language);
                return 0;
@@ -362,12 +361,6 @@ int __stt_config_set_auto_language()
        }
 
        if (true == __stt_config_mgr_check_lang_is_valid(g_config_info->engine_id, candidate_lang)) {
-               /* stt default language change */
-               if (NULL == g_config_info->language) {
-                       SLOG(LOG_ERROR, stt_tag(), "Current config language is NULL");
-                       return -1;
-               }
-
                char* before_lang = NULL;
                if (0 != stt_parser_set_language(candidate_lang)) {
                        SLOG(LOG_ERROR, stt_tag(), "Fail to save default language");
@@ -441,12 +434,11 @@ int __stt_config_set_auto_language()
                        iter = g_slist_next(iter);
                }
 
-               if (NULL != g_config_info->language) {
-                       free(g_config_info->language);
-                       g_config_info->language = strdup(tmp_language);
-               }
+               free(g_config_info->language);
+               g_config_info->language = strdup(tmp_language);
 
                free(tmp_language);
+               tmp_language = NULL;
        }
 
        return 0;
@@ -554,6 +546,11 @@ int __stt_config_mgr_check_engine_is_valid(const char* engine_id)
 
        /* Change default engine */
        iter = g_slist_nth(g_engine_list, 0);
+       if (NULL == iter) {
+               SLOG(LOG_ERROR, stt_tag(), "Operation failed - false engine");
+               return STT_CONFIG_ERROR_OPERATION_FAILED;
+       }
+
        engine_info = iter->data;
        if (NULL == engine_info) {
                SLOG(LOG_ERROR, stt_tag(), "[ERROR] Engine info is NULL");
@@ -630,16 +627,73 @@ int __stt_config_mgr_check_engine_is_valid(const char* engine_id)
        SLOG(LOG_DEBUG, stt_tag(), "  Setting : %s", g_config_info->setting);
        SLOG(LOG_DEBUG, stt_tag(), "  language : %s", g_config_info->language);
        SLOG(LOG_DEBUG, stt_tag(), "  Silence detection : %s", g_config_info->silence_detection ? "on" : "off");
+       SLOG(LOG_DEBUG, stt_tag(), "  Credential : %s", g_config_info->credential ? "true" : "false");
 
        if (0 != stt_parser_set_engine(g_config_info->engine_id, g_config_info->setting, g_config_info->language,
-               g_config_info->silence_detection)) {
-                       SLOG(LOG_ERROR, stt_tag(), " Fail to save config");
+               g_config_info->silence_detection, g_config_info->credential)) {
+                       SLOG(LOG_ERROR, stt_tag(), "Fail to save config");
                        return STT_CONFIG_ERROR_OPERATION_FAILED;
        }
 
        return STT_CONFIG_ERROR_NONE;
 }
 
+static void __get_engine_list(const char* directory)
+{
+       DIR *dp = NULL;
+       struct dirent *dirp = NULL;
+
+       if (NULL == directory) {
+               SLOG(LOG_ERROR, stt_tag(), "[Directory ERROR] Directory is NULL");
+               return;
+       } else {
+               SLOG(LOG_DEBUG, stt_tag(), "[Directory DEBUG] Directory: %s", directory);
+       }
+
+       dp  = opendir(directory);
+       if (NULL != dp) {
+               do {
+                       dirp = readdir(dp);
+
+                       if (NULL != dirp) {
+                               if (!strcmp(".", dirp->d_name) || !strcmp("..", dirp->d_name))
+                                       continue;
+
+                               stt_engine_info_s* info;
+                               char* filepath = NULL;
+                               int filesize;
+
+                               filesize = strlen(directory) + strlen(dirp->d_name) + 5;
+                               filepath = (char*)calloc(filesize, sizeof(char));
+
+                               if (NULL != filepath) {
+                                       snprintf(filepath, filesize, "%s/%s", directory, dirp->d_name);
+                               } else {
+                                       SLOG(LOG_ERROR, stt_tag(), "[Config ERROR] Memory not enough!!");
+                                       continue;
+                               }
+
+                               SLOG(LOG_DEBUG, stt_tag(), "[File DEBUG] File path: %s", filepath);
+
+                               if (0 == stt_parser_get_engine_info(filepath, &info)) {
+                                       g_engine_list = g_slist_append(g_engine_list, info);
+                               }
+
+                               if (NULL != filepath) {
+                                       free(filepath);
+                                       filepath = NULL;
+                               }
+                       }
+               } while (NULL != dirp);
+
+               closedir(dp);
+       } else {
+               SLOG(LOG_WARN, stt_tag(), "[Config WARNING] Fail to open directory"); 
+       }
+
+       return;
+}
+
 int stt_config_mgr_initialize(int uid)
 {
        GSList *iter = NULL;
@@ -679,55 +733,57 @@ int stt_config_mgr_initialize(int uid)
                return STT_CONFIG_ERROR_NONE;
        }
 
-       /* Get file name from default engine directory */
-       DIR *dp = NULL;
-       int ret = -1;
-       struct dirent entry;
-       struct dirent *dirp = NULL;
-
-       g_engine_list = NULL;
-
-       SLOG(LOG_WARN, stt_tag(), "[CONFIG] default engine info(%s)", STT_DEFAULT_ENGINE_INFO);
-       dp  = opendir(STT_DEFAULT_ENGINE_INFO);
-       if (NULL != dp) {
-               do {
-                       ret = readdir_r(dp, &entry, &dirp);
-                       if (0 != ret) {
-                               SLOG(LOG_ERROR, stt_tag(), "[File ERROR] Fail to read directory");
-                               break;
-                       }
+       /* Make directories */
+       if (0 != access(STT_CONFIG_BASE, F_OK)) {
+               if (0 != mkdir(STT_CONFIG_BASE, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)) {
+                       SLOG(LOG_ERROR, stt_tag(), "[ERROR] Fail to make directory : %s", STT_CONFIG_BASE);
+                       __stt_config_release_client(uid);
+                       return STT_CONFIG_ERROR_OPERATION_FAILED;
+               } else {
+                       SLOG(LOG_DEBUG, stt_tag(), "Success to make directory : %s", STT_CONFIG_BASE);
+               }
+       }
 
-                       if (NULL != dirp) {
-                               if (!strcmp(".", dirp->d_name) || !strcmp("..", dirp->d_name))
-                                       continue;
+       if (0 != access(STT_HOME, F_OK)) {
+               if (0 != mkdir(STT_HOME, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)) {
+                       SLOG(LOG_ERROR, stt_tag(), "[ERROR] Fail to make directory : %s", STT_HOME);
+                       __stt_config_release_client(uid);
+                       return STT_CONFIG_ERROR_OPERATION_FAILED;
+               } else {
+                       SLOG(LOG_DEBUG, stt_tag(), "Success to make directory : %s", STT_HOME);
+               }
+       }
 
-                               stt_engine_info_s* info;
-                               char* filepath;
-                               int filesize;
+       if (0 != access(STT_DOWNLOAD_BASE, F_OK)) {
+               if (0 != mkdir(STT_DOWNLOAD_BASE, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)) {
+                       SLOG(LOG_ERROR, stt_tag(), "[ERROR] Fail to make directory : %s", STT_DOWNLOAD_BASE);
+                       __stt_config_release_client(uid);
+                       return STT_CONFIG_ERROR_OPERATION_FAILED;
+               } else {
+                       SLOG(LOG_DEBUG, stt_tag(), "Success to make directory : %s", STT_DOWNLOAD_BASE);
+               }
+       }
 
-                               filesize = strlen(STT_DEFAULT_ENGINE_INFO) + strlen(dirp->d_name) + 5;
-                               filepath = (char*)calloc(filesize, sizeof(char));
+       if (0 != access(STT_DOWNLOAD_ENGINE_INFO, F_OK)) {
+               if (0 != mkdir(STT_DOWNLOAD_ENGINE_INFO, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)) {
+                       SLOG(LOG_ERROR, stt_tag(), "[ERROR] Fail to make directory : %s", STT_DOWNLOAD_ENGINE_INFO);
+                       __stt_config_release_client(uid);
+                       return STT_CONFIG_ERROR_OPERATION_FAILED;
+               } else {
+                       SLOG(LOG_DEBUG, stt_tag(), "Success to make directory : %s", STT_DOWNLOAD_ENGINE_INFO);
+               }
+       }
 
-                               if (NULL != filepath) {
-                                       snprintf(filepath, filesize, "%s/%s", STT_DEFAULT_ENGINE_INFO, dirp->d_name);
-                               } else {
-                                       SLOG(LOG_ERROR, stt_tag(), "[Config ERROR] Memory not enough!!");
-                                       continue;
-                               }
 
-                               if (0 == stt_parser_get_engine_info(filepath, &info)) {
-                                       g_engine_list = g_slist_append(g_engine_list, info);
-                               }
+       /* Get file name from default engine directory */
+       g_engine_list = NULL;
 
-                               if (NULL != filepath)
-                                       free(filepath);
-                       }
-               } while (NULL != dirp);
+       SLOG(LOG_WARN, stt_tag(), "[CONFIG] default engine info(%s)", STT_DEFAULT_ENGINE_INFO);
 
-               closedir(dp);
-       } else {
-               SLOG(LOG_WARN, stt_tag(), "[Config WARNING] Fail to open default directory");
-       }
+       SLOG(LOG_DEBUG, stt_tag(), "[CONFIG] Get default engine list");
+       __get_engine_list(STT_DEFAULT_ENGINE_INFO);
+       SLOG(LOG_DEBUG, stt_tag(), "[CONFIG] Get download engine list");
+       __get_engine_list(STT_DOWNLOAD_ENGINE_INFO);
 
        __stt_config_mgr_print_engine_info();
 
@@ -773,13 +829,14 @@ int stt_config_mgr_initialize(int uid)
                }
        }
 
-       /* print daemon config */
-       SLOG(LOG_DEBUG, stt_tag(), "== Daemon config ==");
+       /* print stt-service config */
+       SLOG(LOG_DEBUG, stt_tag(), "== STT service config ==");
        SLOG(LOG_DEBUG, stt_tag(), " engine : %s", g_config_info->engine_id);
        SLOG(LOG_DEBUG, stt_tag(), " setting : %s", g_config_info->setting);
        SLOG(LOG_DEBUG, stt_tag(), " auto language : %s", g_config_info->auto_lang ? "on" : "off");
        SLOG(LOG_DEBUG, stt_tag(), " language : %s", g_config_info->language);
        SLOG(LOG_DEBUG, stt_tag(), " silence detection : %s", g_config_info->silence_detection ? "on" : "off");
+       SLOG(LOG_DEBUG, stt_tag(), " credential : %s", g_config_info->credential ? "true" : "false");
        SLOG(LOG_DEBUG, stt_tag(), "===================");
 
        if (0 != __stt_config_mgr_register_config_event()) {
@@ -986,6 +1043,62 @@ int stt_config_mgr_get_engine(char** engine)
        return STT_CONFIG_ERROR_NONE;
 }
 
+int __stt_config_set_buxtonkey(const char* engine)
+{
+       /* Set vconfkey */
+       struct buxton_client * bux_cli;
+       struct buxton_layer * bux_layer;
+       struct buxton_value * bux_val;
+
+       int ret = buxton_open(&bux_cli, NULL, NULL);
+       if (0 != ret) {
+               SLOG(LOG_ERROR, stt_tag(), "[DBUS-BUXTON2] Fail to open buxton client, ret(%d)", ret);
+               return STT_CONFIG_ERROR_OPERATION_FAILED;
+       }
+       bux_layer = buxton_create_layer("system");
+       if (NULL == bux_layer) {
+               SLOG(LOG_ERROR, stt_tag(), "[DBUS-BUXTON2] buxton_create_layer FAIL");
+               buxton_close(bux_cli);
+               bux_cli = NULL;
+               return STT_CONFIG_ERROR_OPERATION_FAILED;
+       }
+       bux_val = buxton_value_create_string(engine);
+       if (NULL == bux_val) {
+               SLOG(LOG_ERROR, stt_tag(), "[DBUS-BUXTON2] buxton_value_create_string FAIL");
+               buxton_free_layer(bux_layer);
+               buxton_close(bux_cli);
+               bux_layer = NULL;
+               bux_cli = NULL;
+               return STT_CONFIG_ERROR_OPERATION_FAILED;
+       } else {
+               SLOG(LOG_DEBUG, stt_tag(), "[DBUS-BUXTON2] layer: %s", buxton_layer_get_name(bux_layer));
+       }
+
+       ret = buxton_set_value_sync(bux_cli, bux_layer, STT_ENGINE_DB_DEFAULT, bux_val);
+       if (0 != ret) {
+               SLOG(LOG_ERROR, stt_tag(), "[DBUS-BUXTON2] Fail to set value sync, ret(%d)", ret);
+               buxton_value_free(bux_val);
+               buxton_free_layer(bux_layer);
+               buxton_close(bux_cli);
+
+               bux_cli = NULL;
+               bux_layer = NULL;
+               bux_val = NULL;
+               return STT_CONFIG_ERROR_OPERATION_FAILED;
+       }
+       SLOG(LOG_DEBUG, stt_tag(), "[DBUS-BUXTON2] buxton_set_value_sync: %s", STT_ENGINE_DB_DEFAULT);
+
+       buxton_value_free(bux_val);
+       buxton_free_layer(bux_layer);
+       buxton_close(bux_cli);
+
+       bux_cli = NULL;
+       bux_layer = NULL;
+       bux_val = NULL;
+
+       return STT_CONFIG_ERROR_NONE;
+}
+
 int stt_config_mgr_set_engine(const char* engine)
 {
        if (0 >= g_slist_length(g_config_client_list)) {
@@ -1008,6 +1121,12 @@ int stt_config_mgr_set_engine(const char* engine)
 
        SLOG(LOG_DEBUG, stt_tag(), "New engine id : %s", engine);
 
+       int ret = __stt_config_set_buxtonkey(engine);
+       if (0 != ret) {
+               SLOG(LOG_ERROR, stt_tag(), "[ERROR] set buxtonkey Failed!!!");
+               return ret;
+       }
+
        GSList *iter = NULL;
        stt_engine_info_s *engine_info = NULL;
        bool is_valid_engine = false;
@@ -1030,13 +1149,16 @@ int stt_config_mgr_set_engine(const char* engine)
                        continue;
                }
 
-               if (NULL != g_config_info->engine_id)
+               if (NULL != g_config_info->engine_id) {
                        free(g_config_info->engine_id);
+                       g_config_info->engine_id = NULL;
+               }
 
                g_config_info->engine_id = strdup(engine);
 
                if (NULL != g_config_info->setting) {
                        free(g_config_info->setting);
+                       g_config_info->setting = NULL;
                }
 
                if (NULL != engine_info->setting) {
@@ -1058,16 +1180,14 @@ int stt_config_mgr_set_engine(const char* engine)
                        lang = iter_lang->data;
 
                        SLOG(LOG_DEBUG, stt_tag(), " %s", lang);
-                       if (NULL != lang) {
+                       if (NULL != lang && NULL != g_config_info->language) {
                                if (0 == strcmp(lang, g_config_info->language)) {
                                        /* language is valid */
                                        is_valid_lang = true;
 
-                                       if (NULL != g_config_info->language) {
-                                               free(g_config_info->language);
+                                       free(g_config_info->language);
+                                       g_config_info->language = strdup(lang);
 
-                                               g_config_info->language = strdup(lang);
-                                       }
                                        break;
                                }
                        }
@@ -1079,8 +1199,14 @@ int stt_config_mgr_set_engine(const char* engine)
                if (false == is_valid_lang) {
                        if (NULL != g_config_info->language) {
                                free(g_config_info->language);
+                               g_config_info->language = NULL;
 
                                iter_lang = g_slist_nth(engine_info->languages, 0);
+                               if (NULL == iter_lang) {
+                                       SLOG(LOG_ERROR, stt_tag(), "Fail to get default language");
+                                       break;
+                               }
+
                                lang = iter_lang->data;
 
                                g_config_info->language = strdup(lang);
@@ -1093,6 +1219,11 @@ int stt_config_mgr_set_engine(const char* engine)
                                g_config_info->silence_detection = false;
                }
 
+               if (false == engine_info->need_credential) {
+                       if (true == g_config_info->credential)
+                               g_config_info->credential = false;
+               }
+
                is_valid_engine = true;
                break;
        }
@@ -1103,9 +1234,10 @@ int stt_config_mgr_set_engine(const char* engine)
                SLOG(LOG_DEBUG, stt_tag(), "  Setting : %s", g_config_info->setting);
                SLOG(LOG_DEBUG, stt_tag(), "  language : %s", g_config_info->language);
                SLOG(LOG_DEBUG, stt_tag(), "  Silence detection : %s", g_config_info->silence_detection ? "on" : "off");
+               SLOG(LOG_DEBUG, stt_tag(), "  Credential : %s", g_config_info->credential ? "true" : "false");
 
                if (0 != stt_parser_set_engine(g_config_info->engine_id, g_config_info->setting, g_config_info->language,
-                       g_config_info->silence_detection)) {
+                       g_config_info->silence_detection, g_config_info->credential)) {
                                SLOG(LOG_ERROR, stt_tag(), " Fail to save config");
                                return STT_CONFIG_ERROR_OPERATION_FAILED;
                }
@@ -1218,8 +1350,8 @@ int stt_config_mgr_get_language_list(const char* engine_id, stt_config_supported
                        /*Get handle data from list*/
                        lang = iter_lang->data;
 
-                       SLOG(LOG_DEBUG, stt_tag(), " %s", lang);
                        if (NULL != lang) {
+                               SLOG(LOG_DEBUG, stt_tag(), " %s", lang);
                                if (false == callback(engine_info->uuid, lang, user_data))
                                        break;
                        }
@@ -1559,9 +1691,13 @@ int stt_config_mgr_add_time_info(int index, int event, const char* text, long st
        info->start_time = start_time;
        info->end_time = end_time;
 
+       SLOG(LOG_DEBUG, stt_tag(), "[DEBUG] inside stt_config_mgr_add_time_info: index(%d), text(%s), start time(%ld), end_time(%ld)", info->index, (NULL == info->text) ? "NULL" : info->text, info->start_time, info->end_time);
+
        /* Add item to global list */
        g_time_list = g_slist_append(g_time_list, info);
 
+       SLOG(LOG_DEBUG, stt_tag(), "[DEBUG] inside stt_config_mgr_add_time_info: g_time_list length(%d)", g_slist_length(g_time_list));
+
        return 0;
 }
 
@@ -1577,7 +1713,7 @@ int stt_config_mgr_foreach_time_info(stt_config_result_time_cb callback, void* u
        ret = stt_parser_get_time_info(&temp_time);
        if (0 != ret) {
                SLOG(LOG_WARN, stt_tag(), "[WARNING] Fail to get time info : %d", ret);
-               return STT_CONFIG_ERROR_OPERATION_FAILED;
+               return STT_CONFIG_ERROR_NONE;
        }
 
        GSList *iter = NULL;