Fix dlog format argument error
[platform/core/uifw/stt.git] / server / sttd_config.c
index de21d3c..7d836dd 100644 (file)
@@ -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
 */
 
 
-#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();
+}