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 != g_lang_cb)
45 g_lang_cb(current_lang, g_user_data);
47 SLOG(LOG_ERROR, TAG_VCD, "Language changed callback is NULL");
51 int vcd_config_initialize(vcd_config_lang_changed_cb lang_cb, vcd_config_foreground_changed_cb fore_cb, void* user_data)
53 if (NULL == lang_cb) {
54 SLOG(LOG_ERROR, TAG_VCD, "[Config] Invalid parameter");
55 return VCD_ERROR_INVALID_PARAMETER;
59 ret = vc_config_mgr_initialize(getpid());
61 SLOG(LOG_ERROR, TAG_VCD, "[Config] Fail to initialize config manager : %d", ret);
62 return VCD_ERROR_OPERATION_FAILED;
65 ret = vc_config_mgr_set_lang_cb(getpid(), __vcd_config_lang_changed_cb);
67 SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to set config changed callback : %d", ret);
68 return VCD_ERROR_OPERATION_FAILED;
71 ret = vc_db_initialize();
73 SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to initialize DB : %d", ret);
78 g_user_data = user_data;
80 g_foreground_pid = VC_RUNTIME_INFO_NO_FOREGROUND;
85 int vcd_config_finalize()
87 vc_config_mgr_unset_lang_cb(getpid());
88 vc_config_mgr_finalize(getpid());
90 int ret = vc_db_finalize();
92 SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to finalize DB, ret(%d)", ret);
97 int vcd_config_get_default_language(char** language)
100 return VCD_ERROR_INVALID_PARAMETER;
102 if (0 != vc_config_mgr_get_default_language(language)) {
103 SLOG(LOG_ERROR, TAG_VCD, "[Config ERROR] Fail to get language");
104 return VCD_ERROR_OPERATION_FAILED;
110 int vcd_config_set_service_state(vcd_state_e state)
114 SLOG(LOG_DEBUG, TAG_VCD, "[Config] Config is changed : %d", g_state);
119 vcd_state_e vcd_config_get_service_state()
124 int vcd_config_get_foreground(int* pid)
126 *pid = g_foreground_pid;
130 int vcd_config_set_foreground(int pid, bool value)
133 g_foreground_pid = pid;
135 if (pid == g_foreground_pid) {
136 g_foreground_pid = VC_RUNTIME_INFO_NO_FOREGROUND;
142 int vcd_config_enable_command_type(int cmd_type)
144 if (cmd_type <= 0 || cmd_type >= COMMAND_TYPE_MAX) {
145 SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Invalid command type");
149 g_enabled_command_type[cmd_type] = 1;
153 int vcd_config_disable_command_type(int cmd_type)
155 if (cmd_type <= 0 || cmd_type >= COMMAND_TYPE_MAX) {
156 SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Invalid command type");
160 g_enabled_command_type[cmd_type] = 0;
164 int vcd_config_get_command_type_enabled(int cmd_type)
166 if (cmd_type <= 0 || cmd_type >= COMMAND_TYPE_MAX) {
167 SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Invalid command type");
171 return g_enabled_command_type[cmd_type];