/*
-* Copyright (c) 2011 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
*/
-#include <vconf.h>
-
-#include "sttd_main.h"
+#include "stt_config_mgr.h"
#include "sttd_config.h"
+#include "sttd_main.h"
-/*
-* stt-daemon config
-*/
+static sttd_config_engine_changed_cb g_engine_cb;
-int sttd_config_get_char_type(const char* key, char** value)
-{
- if (NULL == key || NULL == value) {
- SLOG(LOG_ERROR, TAG_STTD, "[STTD Config ERROR] Input parameter is NULL");
- return STTD_ERROR_INVALID_PARAMETER;
- }
-
- *value = vconf_get_str(key);
- if (NULL == *value) {
- SLOG(LOG_ERROR, TAG_STTD, "[STTD Config ERROR] Fail to get char type from config : key(%s)", key);
- return -1;
- }
+static sttd_config_language_changed_cb g_lang_cb;
- return 0;
-}
+static sttd_config_silence_changed_cb g_silence_cb;
-int sttd_config_set_char_type(const char* key, const char* value)
-{
- if (NULL == key || NULL == value) {
- SLOG(LOG_ERROR, TAG_STTD, "[STTD Config ERROR] Input parameter is NULL");
- return STTD_ERROR_INVALID_PARAMETER;
- }
+static void* g_user_data;
- if (0 != vconf_set_str(key, value)) {
- SLOG(LOG_ERROR, TAG_STTD, "[STTD Config ERROR] Fail to set char type");
- return -1;
- }
- return 0;
+const char* stt_tag()
+{
+ return "sttd";
}
-int sttd_config_get_bool_type(const char* key, bool* value)
+
+void __sttd_config_engine_changed_cb(const char* engine_id, const char* setting, const char* language, bool support_silence, bool need_credential, void* user_data)
{
- if (NULL == key || NULL == value) {
- SLOG(LOG_ERROR, TAG_STTD, "[STTD Config ERROR] Input parameter is NULL");
- return STTD_ERROR_INVALID_PARAMETER;
- }
-
- int result ;
- if (0 != vconf_get_int(key, &result)) {
- SLOG(LOG_ERROR, TAG_STTD, "[STTD Config ERROR] Fail to get bool type config : key(%s)", key);
- return -1;
+ /* Need to check engine is valid */
+ if (false == stt_config_check_default_engine_is_valid(engine_id)) {
+ SECURE_SLOG(LOG_ERROR, TAG_STTD, "Engine id is NOT valid : %s", engine_id);
+ return;
}
- *value = (bool) result;
-
- return 0;
+ if (NULL != g_engine_cb)
+ g_engine_cb(engine_id, language, support_silence, need_credential, g_user_data);
+ else
+ SLOG(LOG_ERROR, TAG_STTD, "Engine changed callback is NULL");
}
-int sttd_config_set_bool_type(const char* key, const bool value)
+void __sttd_config_lang_changed_cb(const char* before_language, const char* current_language, void* user_data)
{
- if (NULL == key) {
- SLOG(LOG_ERROR, TAG_STTD, "[STTD Config ERROR] Input parameter is NULL");
- return STTD_ERROR_INVALID_PARAMETER;
- }
-
- int result = (int)value;
- if (0 != vconf_set_int(key, result)) {
- SLOG(LOG_ERROR, TAG_STTD, "[STTD Config ERROR] Fail to get bool type config : key(%s)", key);
- return -1;
+ if (false == stt_config_check_default_language_is_valid(current_language)) {
+ SECURE_SLOG(LOG_ERROR, TAG_STTD, "Language is NOT valid : %s", current_language);
+ return;
}
- return 0;
+ if (NULL != g_lang_cb)
+ g_lang_cb(current_language, g_user_data);
+ else
+ SLOG(LOG_ERROR, TAG_STTD, "Language changed callback is NULL");
}
-/*
-* plug-in daemon interface
-*/
-
-int __make_key_for_engine(const char* engine_id, const char* key, char** out_key)
+void __config_bool_changed_cb(stt_config_type_e type, bool bool_value, void* user_data)
{
- int key_size = strlen(STTD_CONFIG_PREFIX) + strlen(engine_id) + strlen(key) + 2; /* 2 means both '/' and '\0'*/
+ SECURE_SLOG(LOG_DEBUG, TAG_STTD, " type(%d) bool(%s)", type, bool_value ? "on" : "off");
- *out_key = (char*) malloc( sizeof(char) * key_size);
-
- snprintf(*out_key, key_size, "%s%s/%s", STTD_CONFIG_PREFIX, engine_id, key );
+ if (STT_CONFIG_TYPE_OPTION_SILENCE_DETECTION == type) {
+ if (NULL != g_silence_cb) {
+ g_silence_cb(bool_value, g_user_data);
+ SLOG(LOG_DEBUG, TAG_STTD, "Call back silence detection changed");
+ }
+ }
- return 0;
+ return;
}
-int sttd_config_set_persistent_data(const char* engine_id, const char* key, const char* value)
+int sttd_config_initialize(sttd_config_engine_changed_cb engine_cb,
+ sttd_config_language_changed_cb lang_cb,
+ sttd_config_silence_changed_cb silence_cb,
+ void* user_data)
{
- if (NULL == engine_id || NULL == key || NULL == value) {
- SLOG(LOG_ERROR, TAG_STTD, "[STTD Config ERROR] BAD Parameter");
- return STTD_ERROR_INVALID_PARAMETER;
- }
-
- char* vconf_key = NULL;
- if (0 != __make_key_for_engine(engine_id, key, &vconf_key)) {
- SLOG(LOG_ERROR, TAG_STTD, "[STTD Config ERROR] Fail __make_key_for_engine()");
+ if (NULL == engine_cb || NULL == lang_cb || NULL == silence_cb) {
+ SLOG(LOG_ERROR, TAG_STTD, "[Config] Invalid parameter");
return -1;
}
- if (NULL == vconf_key)
+ int ret = -1;
+ ret = stt_config_mgr_initialize(getpid());
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_STTD, "[Config] Fail to initialize config manager");
return -1;
+ }
- if (0 != vconf_set_str(vconf_key, value)) {
- SLOG(LOG_ERROR, TAG_STTD, "[STTD Config ERROR] Fail to set key, value");
-
- if (vconf_key != NULL)
- free(vconf_key);
-
+ ret = stt_config_mgr_set_callback(getpid(), __sttd_config_engine_changed_cb, __sttd_config_lang_changed_cb,
+ __config_bool_changed_cb, NULL);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_STTD, "[ERROR] Fail to set config changed : %d", ret);
return -1;
}
- SLOG(LOG_DEBUG, TAG_STTD, "[STTD Config DEBUG] sttd_config_set_persistent_data : key(%s), value(%s)", vconf_key, value);
-
- if (NULL != vconf_key)
- free(vconf_key);
+ g_engine_cb = engine_cb;
+ g_lang_cb = lang_cb;
+ g_silence_cb = silence_cb;
+ g_user_data = user_data;
return 0;
}
-int sttd_config_get_persistent_data(const char* engine_id, const char* key, char** value)
+int sttd_config_finalize()
{
- if (NULL == engine_id) {
- SLOG(LOG_ERROR, TAG_STTD, "[STTD Config ERROR] BAD Parameter");
- return STTD_ERROR_INVALID_PARAMETER;
- }
+ stt_config_mgr_finalize(getpid());
- char* vconf_key = NULL;
-
- if (0 != __make_key_for_engine(engine_id, key, &vconf_key)) {
- SLOG(LOG_ERROR, TAG_STTD, "[STTD Config ERROR] Fail __make_key_for_engine()");
- return -1;
- }
+ return 0;
+}
- if (NULL == vconf_key)
+int sttd_config_get_default_engine(char** engine_id)
+{
+ if (NULL == engine_id)
return -1;
- char* temp;
- temp = vconf_get_str(vconf_key);
- if (NULL == temp) {
- SLOG(LOG_ERROR, TAG_STTD, "[STTD Config ERROR] Fail to get value");
-
- if(vconf_key != NULL)
- free(vconf_key);
-
- return -1;
+ if (0 != stt_config_mgr_get_engine(engine_id)) {
+ SLOG(LOG_ERROR, TAG_STTD, "[Config ERROR] Fail to get engine id");
}
- *value = g_strdup(temp);
+ return 0;
+}
- SLOG(LOG_DEBUG, TAG_STTD, "[STTD Config DEBUG] sttd_config_get_persistent_data : key(%s), value(%s)", vconf_key, *value);
+int sttd_config_set_default_engine(const char* engine_id)
+{
+ if (NULL == engine_id)
+ return -1;
- if (vconf_key != NULL) free(vconf_key);
- if (temp != NULL) free(temp);
+ if (0 != stt_config_mgr_set_engine(engine_id)) {
+ SLOG(LOG_ERROR, TAG_STTD, "[Config ERROR] Fail to set engine id");
+ }
return 0;
}
-int sttd_config_remove_persistent_data(const char* engine_id, const char* key)
+int sttd_config_get_default_language(char** language)
{
- if (NULL == engine_id || NULL == key) {
- SLOG(LOG_ERROR, TAG_STTD, "[STTD Config ERROR] BAD Parameter");
- return STTD_ERROR_INVALID_PARAMETER;
- }
-
- char* vconf_key = NULL;
- if (0 != __make_key_for_engine(engine_id, key, &vconf_key)) {
- SLOG(LOG_ERROR, TAG_STTD, "[STTD Config ERROR] Fail __make_key_for_engine()");
+ if (NULL == language)
return -1;
- }
- if (NULL == vconf_key)
+ if (0 != stt_config_mgr_get_default_language(language)) {
+ SLOG(LOG_ERROR, TAG_STTD, "[Config ERROR] Fail to get language");
return -1;
+ }
- if (0 != vconf_unset(vconf_key)) {
- SLOG(LOG_ERROR, TAG_STTD, "[STTD Config ERROR] Fail to remove key");
+ return 0;
+}
- if(vconf_key != NULL)
- free(vconf_key);
+int sttd_config_get_default_silence_detection(int* silence)
+{
+ if (NULL == silence)
+ return -1;
+ bool value;
+ if (0 != stt_config_mgr_get_silence_detection(&value)) {
+ SLOG(LOG_ERROR, TAG_STTD, "[Config ERROR] Fail to set language");
return -1;
}
- SLOG(LOG_DEBUG, TAG_STTD, "[STTD Config DEBUG] sttd_config_remove_persistent_data : key(%s)", vconf_key);
-
- if( NULL != vconf_key )
- free(vconf_key);
+ *silence = (int)value;
return 0;
}
+int sttd_config_time_add(int index, int event, const char* text, long start_time, long end_time)
+{
+ return stt_config_mgr_add_time_info(index, event, text, start_time, end_time);
+}
+
+int sttd_config_time_save()
+{
+ return stt_config_mgr_save_time_info_file();
+}
+int sttd_config_time_reset()
+{
+ return stt_config_mgr_reset_time_info();
+}