2 * Copyright (c) 2011-2015 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #include "vc_cmd_db.h"
18 #include "vc_config_mgr.h"
19 #include "vcd_config.h"
23 static vcd_config_lang_changed_cb g_lang_cb;
25 static void* g_user_data;
27 static vcd_state_e g_state;
29 static int g_foreground_pid;
31 #define COMMAND_TYPE_MAX 7
32 static int g_enabled_command_type[COMMAND_TYPE_MAX] = {
38 1, /* SYSTEM_BACKGROUND */
42 void __vcd_config_lang_changed_cb(const char* before_lang, const char* current_lang)
44 if (NULL != before_lang && NULL != current_lang && strncmp(before_lang, current_lang, strlen(before_lang))) {
45 if (NULL != g_lang_cb)
46 g_lang_cb(current_lang, g_user_data);
48 SLOG(LOG_ERROR, TAG_VCD, "Language changed callback is NULL");
53 int vcd_config_initialize(vcd_config_lang_changed_cb lang_cb, vcd_config_foreground_changed_cb fore_cb, void* user_data)
55 if (NULL == lang_cb) {
56 SLOG(LOG_ERROR, TAG_VCD, "[Config] Invalid parameter");
57 return VCD_ERROR_INVALID_PARAMETER;
61 ret = vc_config_mgr_initialize(getpid());
63 SLOG(LOG_ERROR, TAG_VCD, "[Config] Fail to initialize config manager : %d", ret);
64 return VCD_ERROR_OPERATION_FAILED;
67 ret = vc_config_mgr_set_lang_cb(getpid(), __vcd_config_lang_changed_cb);
69 SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to set config changed callback : %d", ret);
70 return VCD_ERROR_OPERATION_FAILED;
73 ret = vc_db_initialize();
75 SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to initialize DB : %d", ret);
80 g_user_data = user_data;
82 g_foreground_pid = VC_RUNTIME_INFO_NO_FOREGROUND;
87 int vcd_config_finalize()
89 vc_config_mgr_unset_lang_cb(getpid());
90 vc_config_mgr_finalize(getpid());
92 int ret = vc_db_finalize();
94 SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to finalize DB, ret(%d)", ret);
99 int vcd_config_get_default_language(char** language)
101 if (NULL == language)
102 return VCD_ERROR_INVALID_PARAMETER;
104 if (0 != vc_config_mgr_get_default_language(language)) {
105 SLOG(LOG_ERROR, TAG_VCD, "[Config ERROR] Fail to get language");
106 return VCD_ERROR_OPERATION_FAILED;
112 int vcd_config_set_default_language(const char* language)
114 if (NULL == language)
115 return VCD_ERROR_INVALID_PARAMETER;
117 if (0 != vc_config_mgr_set_default_language(language)) {
118 SLOG(LOG_ERROR, TAG_VCD, "[Config ERROR] Fail to get language");
119 return VCD_ERROR_OPERATION_FAILED;
125 int vcd_config_set_service_state(vcd_state_e state)
129 SLOG(LOG_DEBUG, TAG_VCD, "[Config] Config is changed : %d", g_state);
134 vcd_state_e vcd_config_get_service_state()
139 int vcd_config_get_foreground(int* pid)
141 *pid = g_foreground_pid;
145 int vcd_config_set_foreground(int pid, bool value)
148 g_foreground_pid = pid;
150 if (pid == g_foreground_pid) {
151 g_foreground_pid = VC_RUNTIME_INFO_NO_FOREGROUND;
157 int vcd_config_enable_command_type(int cmd_type)
159 if (cmd_type <= 0 || cmd_type >= COMMAND_TYPE_MAX) {
160 SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Invalid command type");
164 g_enabled_command_type[cmd_type] = 1;
168 int vcd_config_disable_command_type(int cmd_type)
170 if (cmd_type <= 0 || cmd_type >= COMMAND_TYPE_MAX) {
171 SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Invalid command type");
175 g_enabled_command_type[cmd_type] = 0;
179 int vcd_config_get_command_type_enabled(int cmd_type)
181 if (cmd_type <= 0 || cmd_type >= COMMAND_TYPE_MAX) {
182 SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Invalid command type");
186 return g_enabled_command_type[cmd_type];