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_config_mgr.h"
18 #include "vcd_config.h"
22 static vcd_config_lang_changed_cb g_lang_cb;
24 static void* g_user_data;
26 static vcd_state_e g_state;
28 static int g_foreground_pid;
30 static int g_audio_streaming_mode;
32 #define COMMAND_TYPE_MAX 7
34 static int g_disabled_command_type = 0x00;
36 void __vcd_config_lang_changed_cb(const char* before_lang, const char* current_lang)
38 if (NULL != before_lang && NULL != current_lang && strncmp(before_lang, current_lang, strlen(before_lang))) {
39 if (NULL != g_lang_cb)
40 g_lang_cb(current_lang, g_user_data);
42 SLOG(LOG_ERROR, TAG_VCD, "Language changed callback is NULL");
47 int vcd_config_initialize(vcd_config_lang_changed_cb lang_cb, vcd_config_foreground_changed_cb fore_cb, void* user_data)
49 if (NULL == lang_cb) {
50 SLOG(LOG_ERROR, TAG_VCD, "[Config] Invalid parameter");
51 return VCD_ERROR_INVALID_PARAMETER;
55 ret = vc_config_mgr_initialize(getpid());
57 SLOG(LOG_ERROR, TAG_VCD, "[Config] Fail to initialize config manager : %d", ret);
58 return VCD_ERROR_OPERATION_FAILED;
61 ret = vc_config_mgr_set_lang_cb(getpid(), __vcd_config_lang_changed_cb);
63 SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to set config changed callback : %d", ret);
64 return VCD_ERROR_OPERATION_FAILED;
68 g_user_data = user_data;
70 g_foreground_pid = VC_RUNTIME_INFO_NO_FOREGROUND;
72 return VCD_ERROR_NONE;
75 int vcd_config_finalize()
77 vc_config_mgr_unset_lang_cb(getpid());
78 vc_config_mgr_finalize(getpid());
80 return VCD_ERROR_NONE;
83 int vcd_config_get_default_language(char** language)
86 return VCD_ERROR_INVALID_PARAMETER;
88 if (0 != vc_config_mgr_get_default_language(language)) {
89 SLOG(LOG_ERROR, TAG_VCD, "[Config ERROR] Fail to get language");
90 return VCD_ERROR_OPERATION_FAILED;
93 return VCD_ERROR_NONE;
96 int vcd_config_set_default_language(const char* language)
99 return VCD_ERROR_INVALID_PARAMETER;
101 if (0 != vc_config_mgr_set_default_language(language)) {
102 SLOG(LOG_ERROR, TAG_VCD, "[Config ERROR] Fail to get language");
103 return VCD_ERROR_OPERATION_FAILED;
106 return VCD_ERROR_NONE;
109 int vcd_config_set_service_state(vcd_state_e state)
113 SLOG(LOG_INFO, TAG_VCD, "[Config] Config is changed : %d", g_state);
115 return VCD_ERROR_NONE;
118 vcd_state_e vcd_config_get_service_state()
123 int vcd_config_get_foreground(int* pid)
125 *pid = g_foreground_pid;
126 return VCD_ERROR_NONE;
129 int vcd_config_set_foreground(int pid, bool value)
132 g_foreground_pid = pid;
134 if (pid == g_foreground_pid) {
135 g_foreground_pid = VC_RUNTIME_INFO_NO_FOREGROUND;
138 return VCD_ERROR_NONE;
141 int vcd_config_set_disabled_command_type(int disabled_cmd_type)
143 SLOG(LOG_INFO, TAG_VCD, "[INFO] Set disabled command type (%d)", disabled_cmd_type);
145 g_disabled_command_type = disabled_cmd_type;
147 return VCD_ERROR_NONE;
150 int vcd_config_get_command_type_enabled(int cmd_type)
152 if (cmd_type <= 0 || cmd_type >= COMMAND_TYPE_MAX) {
153 SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Invalid command type");
154 return VCD_ERROR_NONE;
157 if (~(g_disabled_command_type) & (1 << cmd_type))
160 return VCD_ERROR_NONE;
163 int vcd_config_get_audio_streaming_mode(vcd_audio_streaming_mode_e* streaming_mode)
165 *streaming_mode = g_audio_streaming_mode;
166 return VCD_ERROR_NONE;
169 int vcd_config_set_audio_streaming_mode(vcd_audio_streaming_mode_e streaming_mode)
171 if (streaming_mode < VCD_AUDIO_STREAMING_MODE_VC_SERVICE || streaming_mode > VCD_AUDIO_STREAMING_MODE_OUTSIDE) {
172 SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Invalid streaming mode(%d)", streaming_mode);
173 return VCD_ERROR_INVALID_PARAMETER;
176 g_audio_streaming_mode = streaming_mode;
177 return VCD_ERROR_NONE;