/*
-* Copyright (c) 2012, 2013 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
* limitations under the License.
*/
-
-#include <sys/wait.h>
+#include <dirent.h>
#include <Ecore.h>
-#include <sys/types.h>
+#include <libxml/parser.h>
#include <sys/stat.h>
-#include <dirent.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include "stt_config_mgr.h"
#include "stt_main.h"
#include "stt_setting.h"
-#include "stt_setting_dbus.h"
-
-
-static int __check_setting_stt_daemon();
-static bool g_is_daemon_started = false;
-
-static Ecore_Timer* g_setting_connect_timer = NULL;
static stt_setting_state_e g_state = STT_SETTING_STATE_NONE;
-static stt_setting_initialized_cb g_initialized_cb;
-
+static stt_setting_supported_engine_cb g_engine_cb;
static void* g_user_data;
-static int g_reason;
+static stt_setting_config_changed_cb g_config_changed_cb;
+static void* g_config_changed_user_data;
-/* API Implementation */
-static Eina_Bool __stt_setting_initialized(void *data)
-{
- g_initialized_cb(g_state, g_reason, g_user_data);
+static stt_setting_engine_changed_cb g_engine_changed_cb;
+static void* g_engine_changed_user_data;
- return EINA_FALSE;
+const char* stt_tag()
+{
+ return "sttc";
}
-static Eina_Bool __stt_setting_connect_daemon(void *data)
+void __config_engine_changed_cb(const char* engine_id, const char* setting, const char* language, bool support_silence, bool need_credential, void* user_data)
{
- /* Send hello */
- if (0 != stt_setting_dbus_request_hello()) {
- if (false == g_is_daemon_started) {
- g_is_daemon_started = true;
- __check_setting_stt_daemon();
- }
- return EINA_TRUE;
- }
-
- SLOG(LOG_DEBUG, TAG_STTC, "===== Connect daemon");
-
- /* do request initialize */
- int ret = -1;
-
- ret = stt_setting_dbus_request_initialize();
+ if (NULL != engine_id) SECURE_SLOG(LOG_DEBUG, TAG_STTC, "Engine id(%s)", engine_id);
+ if (NULL != setting) SECURE_SLOG(LOG_DEBUG, TAG_STTC, "Engine setting(%s)", setting);
+ if (NULL != language) SECURE_SLOG(LOG_DEBUG, TAG_STTC, "Language(%s)", language);
+ SLOG(LOG_DEBUG, TAG_STTC, "Silence(%s), Credential(%s)", support_silence ? "on" : "off", need_credential ? "need" : "no need");
- if (STT_SETTING_ERROR_ENGINE_NOT_FOUND == ret) {
- SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Engine not found");
- } else if (STT_SETTING_ERROR_NONE != ret) {
- SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Fail to connection : %d", ret);
- } else {
- /* success to connect stt-daemon */
- g_state = STT_SETTING_STATE_READY;
- }
-
- g_reason = ret;
+ if (NULL != g_config_changed_cb)
+ g_engine_changed_cb(g_config_changed_user_data);
+}
- ecore_timer_add(0, __stt_setting_initialized, NULL);
+void __config_lang_changed_cb(const char* before_language, const char* current_language, void* user_data)
+{
+ SECURE_SLOG(LOG_DEBUG, TAG_STTC, "Lang changed : lang(%s)", current_language);
- g_setting_connect_timer = NULL;
+ if (NULL != g_config_changed_cb)
+ g_config_changed_cb(g_config_changed_user_data);
+}
- SLOG(LOG_DEBUG, TAG_STTC, "=====");
- SLOG(LOG_DEBUG, TAG_STTC, " ");
+void __config_bool_changed_cb(stt_config_type_e type, bool bool_value, void* user_data)
+{
+ SECURE_SLOG(LOG_DEBUG, TAG_STTC, " type(%d) bool(%s)", type, bool_value ? "on" : "off");
- return EINA_FALSE;
+ if (NULL != g_config_changed_cb)
+ g_config_changed_cb(g_config_changed_user_data);
}
-int stt_setting_initialize(stt_setting_initialized_cb callback, void* user_data)
+int stt_setting_initialize(void)
{
SLOG(LOG_DEBUG, TAG_STTC, "===== Initialize STT Setting");
if (STT_SETTING_STATE_READY == g_state) {
- SLOG(LOG_WARN, TAG_STTC, "[WARNING] STT Setting has already been initialized. \n");
+ SLOG(LOG_WARN, TAG_STTC, "[WARNING] STT Setting has already been initialized. ");
SLOG(LOG_DEBUG, TAG_STTC, "=====");
SLOG(LOG_DEBUG, TAG_STTC, " ");
return STT_SETTING_ERROR_NONE;
}
- if( 0 != stt_setting_dbus_open_connection() ) {
- SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Fail to open connection\n ");
- SLOG(LOG_DEBUG, TAG_STTC, "=====");
- SLOG(LOG_DEBUG, TAG_STTC, " ");
+ int ret = stt_config_mgr_initialize(getpid());
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Fail to initialize config manager : %d", ret);
return STT_SETTING_ERROR_OPERATION_FAILED;
}
- g_initialized_cb = callback;
- g_user_data = user_data;
+ ret = stt_config_mgr_set_callback(getpid(), __config_engine_changed_cb, __config_lang_changed_cb, __config_bool_changed_cb, NULL);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Fail to set config changed : %d", ret);
+ return STT_SETTING_ERROR_OPERATION_FAILED;
+ }
- g_setting_connect_timer = ecore_timer_add(0, __stt_setting_connect_daemon, NULL);
+ g_state = STT_SETTING_STATE_READY;
+
+ g_engine_changed_cb = NULL;
+ g_engine_changed_user_data = NULL;
+
+ g_config_changed_cb = NULL;
+ g_config_changed_user_data = NULL;
SLOG(LOG_DEBUG, TAG_STTC, "=====");
SLOG(LOG_DEBUG, TAG_STTC, " ");
return STT_SETTING_ERROR_NONE;
}
-int stt_setting_finalize ()
+int stt_setting_finalize()
{
SLOG(LOG_DEBUG, TAG_STTC, "===== Finalize STT Setting");
-
- int ret = 0;
-
- if (STT_SETTING_STATE_READY == g_state) {
- ret = stt_setting_dbus_request_finalilze();
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_STTC, "Fail : finialize(%d)", ret);
- }
- }
- if (NULL != g_setting_connect_timer) {
- SLOG(LOG_DEBUG, TAG_STTC, "Setting Connect Timer is deleted");
- ecore_timer_del(g_setting_connect_timer);
- }
-
- g_is_daemon_started = false;
-
- if (0 != stt_setting_dbus_close_connection()) {
- SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Fail to close connection");
- } else {
- SLOG(LOG_DEBUG, TAG_STTC, "[SUCCESS] Finalize");
- }
+ stt_config_mgr_finalize(getpid());
g_state = STT_SETTING_STATE_NONE;
return STT_SETTING_ERROR_NONE;
}
+bool __config_mgr_get_engine_list(const char* engine_id, const char* engine_name, const char* setting, bool support_silence, void* user_data)
+{
+ return g_engine_cb(engine_id, engine_name, setting, g_user_data);
+}
+
int stt_setting_foreach_supported_engines(stt_setting_supported_engine_cb callback, void* user_data)
{
SLOG(LOG_DEBUG, TAG_STTC, "===== Foreach supported engines");
return STT_SETTING_ERROR_INVALID_PARAMETER;
}
- int ret = stt_setting_dbus_request_get_engine_list(callback, user_data);
+ g_engine_cb = callback;
+ g_user_data = user_data;
+
+ int ret = stt_config_mgr_get_engine_list(__config_mgr_get_engine_list, NULL);
if (0 != ret) {
SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Result : %d", ret);
} else {
SLOG(LOG_DEBUG, TAG_STTC, "[SUCCESS] Foreach supported engines");
}
-
+
SLOG(LOG_DEBUG, TAG_STTC, "=====");
SLOG(LOG_DEBUG, TAG_STTC, " ");
return STT_SETTING_ERROR_INVALID_PARAMETER;
}
- int ret = stt_setting_dbus_request_get_engine(engine_id);
+ int ret = stt_config_mgr_get_engine(engine_id);
if (0 != ret) {
SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Result : %d", ret);
} else {
return STT_SETTING_ERROR_INVALID_PARAMETER;
}
- int ret = stt_setting_dbus_request_set_engine(engine_id);
+ SECURE_SLOG(LOG_DEBUG, TAG_STTC, "New engine id : %s", engine_id);
+
+ int ret = stt_config_mgr_set_engine(engine_id);
if (0 != ret) {
SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Result : %d", ret);
} else {
SLOG(LOG_DEBUG, TAG_STTC, "=====");
SLOG(LOG_DEBUG, TAG_STTC, " ");
-
+
return ret;
}
return STT_SETTING_ERROR_INVALID_PARAMETER;
}
- int ret = stt_setting_dbus_request_get_language_list(callback, user_data);
+ char* current_engine;
+ int ret = stt_config_mgr_get_engine(¤t_engine);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Fail to get current engine : %d", ret);
+ return -1;
+ }
+
+ ret = stt_config_mgr_get_language_list(current_engine, (stt_config_supported_langauge_cb)callback, user_data);
+
+ if (NULL != current_engine)
+ free(current_engine);
if (0 != ret) {
SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Result : %d", ret);
} else {
SLOG(LOG_DEBUG, TAG_STTC, "[SUCCESS] Foreach supported languages");
}
-
+
SLOG(LOG_DEBUG, TAG_STTC, "=====");
SLOG(LOG_DEBUG, TAG_STTC, " ");
return STT_SETTING_ERROR_INVALID_PARAMETER;
}
- int ret = stt_setting_dbus_request_get_default_language(language);
+ int ret = stt_config_mgr_get_default_language(language);
if (0 != ret) {
SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Result : %d", ret);
} else {
- SLOG(LOG_DEBUG, TAG_STTC, "[SUCCESS] Foreach supported voices");
+ SECURE_SLOG(LOG_DEBUG, TAG_STTC, "[SUCCESS] Default language : %s", *language);
}
SLOG(LOG_DEBUG, TAG_STTC, "=====");
return STT_SETTING_ERROR_INVALID_PARAMETER;
}
- int ret = stt_setting_dbus_request_set_default_language(language);
+ int ret = stt_config_mgr_set_default_language(language);
if (0 != ret) {
SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Result : %d", ret);
} else {
- SLOG(LOG_DEBUG, TAG_STTC, "[SUCCESS] Set default voice");
+ SECURE_SLOG(LOG_DEBUG, TAG_STTC, "[SUCCESS] Set default language : %s", language);
}
SLOG(LOG_DEBUG, TAG_STTC, "=====");
return ret;
}
-int stt_setting_get_profanity_filter(bool* value)
+int stt_setting_set_auto_language(bool value)
{
- SLOG(LOG_DEBUG, TAG_STTC, "===== Get profanity filter");
-
- int ret = 0;
+ SLOG(LOG_DEBUG, TAG_STTC, "===== Set auto voice");
if (STT_SETTING_STATE_NONE == g_state) {
SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Not initialized");
return STT_SETTING_ERROR_INVALID_STATE;
}
- if (NULL == value) {
- SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Input parameter is NULL");
+ if (value != true && value != false) {
+ SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Invalid value");
SLOG(LOG_DEBUG, TAG_STTC, "=====");
SLOG(LOG_DEBUG, TAG_STTC, " ");
return STT_SETTING_ERROR_INVALID_PARAMETER;
}
- ret = stt_setting_dbus_request_get_profanity_filter(value);
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Result (%d)", ret);
- } else {
- SLOG(LOG_DEBUG, TAG_STTC, "[SUCCESS] Get profanity filter(%s)", *value ? "true":"false");
- }
-
- SLOG(LOG_DEBUG, TAG_STTC, "=====");
- SLOG(LOG_DEBUG, TAG_STTC, " ");
-
- return ret;
-}
-
-int stt_setting_set_profanity_filter(const bool value)
-{
- SLOG(LOG_DEBUG, TAG_STTC, "===== Set profanity filter");
-
- int ret = 0;
-
- if (STT_SETTING_STATE_NONE == g_state) {
- SLOG(LOG_ERROR, TAG_STTC, "[ERROR] not initialized");
- SLOG(LOG_DEBUG, TAG_STTC, "=====");
- SLOG(LOG_DEBUG, TAG_STTC, " ");
- return STT_SETTING_ERROR_INVALID_STATE;
- }
-
- ret = stt_setting_dbus_request_set_profanity_filter(value);
+ int ret = stt_config_mgr_set_auto_language(value);
if (0 != ret) {
- SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Result (%d)", ret);
+ SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Result : %d", ret);
} else {
- SLOG(LOG_DEBUG, TAG_STTC, "[SUCCESS] Set profanity filter(%s)", value ? "true":"false");
+ SECURE_SLOG(LOG_DEBUG, TAG_STTC, "[SUCCESS] Set auto language (%s)", value ? "on" : "off");
}
SLOG(LOG_DEBUG, TAG_STTC, "=====");
return ret;
}
-int stt_setting_get_punctuation_override(bool* value)
+int stt_setting_get_auto_language(bool* value)
{
- SLOG(LOG_DEBUG, TAG_STTC, "===== Get punctuation override");
-
- int ret = 0;
+ SLOG(LOG_DEBUG, TAG_STTC, "===== Get auto language");
if (STT_SETTING_STATE_NONE == g_state) {
- SLOG(LOG_ERROR, TAG_STTC, "[ERROR] not initialized");
+ SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Not initialized");
SLOG(LOG_DEBUG, TAG_STTC, "=====");
SLOG(LOG_DEBUG, TAG_STTC, " ");
return STT_SETTING_ERROR_INVALID_STATE;
}
if (NULL == value) {
- SLOG(LOG_ERROR, TAG_STTC, "[ERROR] param is NULL");
+ SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Param is NULL");
SLOG(LOG_DEBUG, TAG_STTC, "=====");
SLOG(LOG_DEBUG, TAG_STTC, " ");
return STT_SETTING_ERROR_INVALID_PARAMETER;
}
- ret = stt_setting_dbus_request_get_punctuation_override(value);
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Result (%d)", ret);
- } else {
- SLOG(LOG_DEBUG, TAG_STTC, "[SUCCESS] Get punctuation override(%s)", *value ? "true":"false");
- }
-
- SLOG(LOG_DEBUG, TAG_STTC, "=====");
- SLOG(LOG_DEBUG, TAG_STTC, " ");
-
- return ret;
-}
-
-int stt_setting_set_punctuation_override(bool value)
-{
- SLOG(LOG_DEBUG, TAG_STTC, "===== Set punctuation override");
-
- int ret = 0;
-
- if (STT_SETTING_STATE_NONE == g_state) {
- SLOG(LOG_ERROR, TAG_STTC, "[ERROR] not initialized");
- SLOG(LOG_DEBUG, TAG_STTC, "=====");
- SLOG(LOG_DEBUG, TAG_STTC, " ");
- return STT_SETTING_ERROR_INVALID_STATE;
- }
-
- ret = stt_setting_dbus_request_set_punctuation_override(value);
+ int ret = stt_config_mgr_get_auto_language(value);
if (0 != ret) {
- SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Result (%d)", ret);
+ SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Result : %d", ret);
} else {
- SLOG(LOG_DEBUG, TAG_STTC, "[SUCCESS] Set punctuation override(%s)", value ? "true":"false");
+ /* Copy value */
+ SECURE_SLOG(LOG_DEBUG, TAG_STTC, "[SUCCESS] Get auto language (%s)", *value ? "true" : "false");
}
SLOG(LOG_DEBUG, TAG_STTC, "=====");
SLOG(LOG_DEBUG, TAG_STTC, " ");
- return ret;
+ return 0;
}
int stt_setting_get_silence_detection(bool* value)
{
SLOG(LOG_DEBUG, TAG_STTC, "===== Get silence detection");
- int ret = 0;
-
if (STT_SETTING_STATE_NONE == g_state) {
SLOG(LOG_ERROR, TAG_STTC, "[ERROR] not initialized");
SLOG(LOG_DEBUG, TAG_STTC, "=====");
return STT_SETTING_ERROR_INVALID_PARAMETER;
}
- ret = stt_setting_dbus_request_get_silence_detection(value);
+ int ret = stt_config_mgr_get_silence_detection(value);
if (0 != ret) {
- SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Result (%d)", ret);
+ SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Result (%d)", ret);
} else {
- SLOG(LOG_DEBUG, TAG_STTC, "[SUCCESS] Get silence detection(%s)", *value ? "true":"false");
+ SECURE_SLOG(LOG_DEBUG, TAG_STTC, "[SUCCESS] Get silence detection(%s)", *value ? "true" : "false");
}
SLOG(LOG_DEBUG, TAG_STTC, "=====");
{
SLOG(LOG_DEBUG, TAG_STTC, "===== Set silence detection");
- int ret = 0;
-
if (STT_SETTING_STATE_NONE == g_state) {
SLOG(LOG_ERROR, TAG_STTC, "[ERROR] not initialized");
SLOG(LOG_DEBUG, TAG_STTC, "=====");
return STT_SETTING_ERROR_INVALID_STATE;
}
- ret = stt_setting_dbus_request_set_silence_detection(value);
+ int ret = stt_config_mgr_set_silence_detection(value);
if (0 != ret) {
- SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Result (%d)", ret);
+ SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Result (%d)", ret);
} else {
- SLOG(LOG_DEBUG, TAG_STTC, "[SUCCESS] Set silence detection(%s)", value ? "true":"false");
+ SECURE_SLOG(LOG_DEBUG, TAG_STTC, "[SUCCESS] Set silence detection(%s)", value ? "true" : "false");
}
SLOG(LOG_DEBUG, TAG_STTC, "=====");
return ret;
}
-int stt_setting_foreach_engine_settings(stt_setting_engine_setting_cb callback, void* user_data)
+int stt_setting_set_engine_changed_cb(stt_setting_engine_changed_cb callback, void* user_data)
{
- SLOG(LOG_DEBUG, TAG_STTC, "===== Foreach engine setting");
-
- int ret = 0;
-
- if (STT_SETTING_STATE_NONE == g_state) {
- SLOG(LOG_ERROR, TAG_STTC, "[ERROR] not initialized");
- SLOG(LOG_DEBUG, TAG_STTC, "=====");
- SLOG(LOG_DEBUG, TAG_STTC, " ");
- return STT_SETTING_ERROR_INVALID_STATE;
- }
-
if (NULL == callback) {
- SLOG(LOG_ERROR, TAG_STTC, "[ERROR] parameter is NULL");
- SLOG(LOG_DEBUG, TAG_STTC, "=====");
- SLOG(LOG_DEBUG, TAG_STTC, " ");
- return STT_SETTING_ERROR_INVALID_PARAMETER;
- }
-
- ret = stt_setting_dbus_request_get_engine_setting(callback, user_data);
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Result (%d)", ret);
- } else {
- SLOG(LOG_DEBUG, TAG_STTC, "[SUCCESS] Foreach engine setting");
- }
-
- SLOG(LOG_DEBUG, TAG_STTC, "=====");
- SLOG(LOG_DEBUG, TAG_STTC, " ");
-
- return ret;
-}
-
-int stt_setting_set_engine_setting(const char* key, const char* value)
-{
- SLOG(LOG_DEBUG, TAG_STTC, "===== Set engine setting");
-
- int ret = 0;
-
- if (STT_SETTING_STATE_NONE == g_state) {
- SLOG(LOG_ERROR, TAG_STTC, "[ERROR] not initialized");
- return STT_SETTING_ERROR_INVALID_STATE;
- }
-
- if (NULL == key || NULL == value) {
- SLOG(LOG_ERROR, TAG_STTC, "[ERROR] parameter is NULL");
+ SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Input param is NULL");
return STT_SETTING_ERROR_INVALID_PARAMETER;
}
- ret = stt_setting_dbus_request_set_engine_setting(key, value);
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Result (%d)", ret);
- } else {
- SLOG(LOG_DEBUG, TAG_STTC, "[SUCCESS] Set engine setting(%s)", *value ? "true":"false");
- }
-
- SLOG(LOG_DEBUG, TAG_STTC, "=====");
- SLOG(LOG_DEBUG, TAG_STTC, " ");
+ g_engine_changed_cb = callback;
+ g_engine_changed_user_data = user_data;
- return ret;
+ return STT_SETTING_ERROR_NONE;
}
-int __setting_get_cmd_line(char *file, char *buf)
+int stt_setting_unset_engine_changed_cb()
{
- FILE *fp = NULL;
- int i;
-
- fp = fopen(file, "r");
- if (fp == NULL) {
- SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Get command line");
- return -1;
- }
-
- memset(buf, 0, 256);
- fgets(buf, 256, fp);
- fclose(fp);
+ g_engine_changed_cb = NULL;
+ g_engine_changed_user_data = NULL;
- return 0;
+ return STT_SETTING_ERROR_NONE;
}
-static bool __stt_setting_is_alive()
+int stt_setting_set_config_changed_cb(stt_setting_config_changed_cb callback, void* user_data)
{
- DIR *dir;
- struct dirent *entry;
- struct stat filestat;
-
- int pid;
- char cmdLine[256];
- char tempPath[256];
-
- dir = opendir("/proc");
- if (NULL == dir) {
- SLOG(LOG_ERROR, TAG_STTC, "process checking is FAILED");
- return FALSE;
- }
-
- while ((entry = readdir(dir)) != NULL) {
- if (0 != lstat(entry->d_name, &filestat))
- continue;
-
- if (!S_ISDIR(filestat.st_mode))
- continue;
-
- pid = atoi(entry->d_name);
- if (pid <= 0) continue;
-
- sprintf(tempPath, "/proc/%d/cmdline", pid);
- if (0 != __setting_get_cmd_line(tempPath, cmdLine)) {
- continue;
- }
-
- if ( 0 == strncmp(cmdLine, "[stt-daemon]", strlen("[stt-daemon]")) ||
- 0 == strncmp(cmdLine, "stt-daemon", strlen("stt-daemon")) ||
- 0 == strncmp(cmdLine, "/usr/bin/stt-daemon", strlen("/usr/bin/stt-daemon"))) {
- SLOG(LOG_DEBUG, TAG_STTC, "stt-daemon is ALIVE !! \n");
- closedir(dir);
- return TRUE;
- }
+ if (NULL == callback) {
+ SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Input param is NULL");
+ return STT_SETTING_ERROR_INVALID_PARAMETER;
}
- SLOG(LOG_DEBUG, TAG_STTC, "THERE IS NO stt-daemon !! \n");
- closedir(dir);
- return FALSE;
+ g_config_changed_cb = callback;
+ g_config_changed_user_data = user_data;
+ return STT_SETTING_ERROR_NONE;
}
-int __check_setting_stt_daemon()
+int stt_setting_unset_config_changed_cb()
{
- if (TRUE == __stt_setting_is_alive())
- return 0;
-
- /* fork-exec stt-daemom */
- int pid = 0, i = 0;
-
- pid = fork();
-
- switch(pid) {
- case -1:
- SLOG(LOG_DEBUG, TAG_STTC, "Fail to create stt-daemon");
- break;
-
- case 0:
- setsid();
- for( i = 0 ; i < _NSIG ; i++ )
- signal(i, SIG_DFL);
-
- execl("/usr/bin/stt-daemon", "/usr/bin/stt-daemon", NULL);
- break;
-
- default:
- break;
- }
-
- return 0;
-}
+ g_config_changed_cb = NULL;
+ g_config_changed_user_data = NULL;
+ return STT_SETTING_ERROR_NONE;
+}
\ No newline at end of file