X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=server%2Fsttd_config.c;h=7d836dd90b213eef000defd2e6147f413b89f83f;hb=6de6690ccfd448cbefd579c34c74c55a6b5fa3c5;hp=de21d3ca11673687d75c41eacbb3982941ac844a;hpb=1ef33ee75879fecb9e80bc87cc8c060f3d9cb741;p=platform%2Fcore%2Fuifw%2Fstt.git diff --git a/server/sttd_config.c b/server/sttd_config.c index de21d3c..7d836dd 100644 --- a/server/sttd_config.c +++ b/server/sttd_config.c @@ -1,5 +1,5 @@ /* -* 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 @@ -12,198 +12,170 @@ */ -#include - -#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(); +}