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.
18 #include "vc_config_mgr.h"
20 #include "vc_setting_dbus.h"
21 #include "voice_control_common.h"
22 #include "voice_control_setting.h"
25 * @brief Enumerations of mode.
28 VC_SETTING_STATE_NONE = 0,
29 VC_SETTING_STATE_READY
32 #define VC_SETTING_CONFIG_HANDLE 300000
34 static vc_setting_state_e g_state = VC_SETTING_STATE_NONE;
36 static vc_setting_enabled_changed_cb g_callback = NULL;
38 static void* g_user_data = NULL;
40 static vc_setting_current_language_changed_cb g_lang_callback = NULL;
42 static void* g_lang_user_data = NULL;
49 void __config_lang_changed_cb(const char* before_lang, const char* current_lang)
51 SLOG(LOG_DEBUG, TAG_VCS, "Lang changed : before(%s) current(%s)", before_lang, current_lang);
53 if (NULL != g_lang_callback) {
54 g_lang_callback(before_lang, current_lang, g_lang_user_data);
58 void __vc_setting_state_changed_cb(int before_state, int current_state, void* user_data)
60 SLOG(LOG_DEBUG, TAG_VCS, "Service State changed : Before(%d) Current(%d)",
61 before_state, current_state);
65 void __vc_setting_enabled_changed_cb(bool enabled)
67 SLOG(LOG_DEBUG, TAG_VCS, "Service enabled changed : %s", enabled ? "on" : "off");
69 if (NULL != g_callback) {
70 g_callback(enabled, g_user_data);
76 int vc_setting_initialize(void)
78 SLOG(LOG_DEBUG, TAG_VCS, "@@@ Initialize VC Setting");
80 if (VC_SETTING_STATE_READY == g_state) {
81 SLOG(LOG_WARN, TAG_VCS, "[WARNING] VC Setting has already been initialized.");
82 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
86 int ret = vc_config_mgr_initialize(getpid() + VC_SETTING_CONFIG_HANDLE);
88 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Fail to initialize config manager");
89 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
90 return VC_ERROR_OPERATION_FAILED;
93 ret = vc_config_mgr_set_lang_cb(getpid() + VC_SETTING_CONFIG_HANDLE, __config_lang_changed_cb);
95 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Fail to initialize config manager");
96 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
97 vc_config_mgr_finalize(getpid() + VC_SETTING_CONFIG_HANDLE);
98 return VC_ERROR_OPERATION_FAILED;
101 ret = vc_config_mgr_set_enabled_cb(getpid() + VC_SETTING_CONFIG_HANDLE, __vc_setting_enabled_changed_cb);
103 g_state = VC_SETTING_STATE_READY;
105 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
107 return VC_ERROR_NONE;
110 int vc_setting_deinitialize()
112 SLOG(LOG_DEBUG, TAG_VCS, "@@@ Deinitialize VC Setting");
114 if (VC_SETTING_STATE_READY != g_state) {
115 SLOG(LOG_WARN, TAG_VCS, "[WARNING] VC Setting is not initialized");
116 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
117 return VC_ERROR_INVALID_STATE;
120 vc_config_mgr_unset_lang_cb(getpid() + VC_SETTING_CONFIG_HANDLE);
121 vc_config_mgr_finalize(getpid() + VC_SETTING_CONFIG_HANDLE);
123 g_state = VC_SETTING_STATE_NONE;
125 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
127 return VC_ERROR_NONE;
130 int vc_setting_foreach_supported_languages(vc_setting_supported_language_cb callback, void* user_data)
132 SLOG(LOG_DEBUG, TAG_VCS, "@@@ Foreach supported languages");
134 if (VC_SETTING_STATE_NONE == g_state) {
135 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Not initialized");
136 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
137 return VC_ERROR_INVALID_STATE;
140 if (NULL == callback) {
141 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Param is NULL");
142 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
143 return VC_ERROR_INVALID_PARAMETER;
146 int ret = vc_config_mgr_get_language_list((vc_supported_language_cb)callback, user_data);
148 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
150 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Foreach supported languages");
153 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
158 int vc_setting_get_language(char** language)
160 SLOG(LOG_DEBUG, TAG_VCS, "@@@ Get default language");
162 if (VC_SETTING_STATE_NONE == g_state) {
163 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Not initialized");
164 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
165 return VC_ERROR_INVALID_STATE;
168 if (NULL == language) {
169 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Input parameter is NULL");
170 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
171 return VC_ERROR_INVALID_PARAMETER;
174 int ret = vc_config_mgr_get_default_language(language);
176 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
178 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Get default language");
181 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
186 int vc_setting_set_language(const char* language)
188 SLOG(LOG_DEBUG, TAG_VCS, "@@@ Set default language");
190 if (VC_SETTING_STATE_NONE == g_state) {
191 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Not initialized");
192 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
193 return VC_ERROR_INVALID_STATE;
196 if (NULL == language) {
197 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Input parameter is NULL");
198 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
199 return VC_ERROR_INVALID_PARAMETER;
202 int ret = vc_config_mgr_set_default_language(language);
204 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
206 if (0 != vc_setting_dbus_open_connection()) {
207 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Fail to open connection");
208 return VC_ERROR_OPERATION_FAILED;
211 if (0 != vc_setting_dbus_request_hello()) {
212 SLOG(LOG_DEBUG, TAG_VCS, "[DEBUG] Daemon is not available");
214 ret = vc_setting_dbus_request_set_language(getpid(), language);
215 SLOG(LOG_DEBUG, TAG_VCS, "[DEBUG] Set default language (%d)", ret);
218 if (0 != vc_setting_dbus_close_connection()) {
219 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Fail to close connection");
220 return VC_ERROR_OPERATION_FAILED;
224 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
229 int vc_setting_set_auto_language(bool value)
231 SLOG(LOG_DEBUG, TAG_VCS, "@@@ Set auto voice");
233 if (VC_SETTING_STATE_NONE == g_state) {
234 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Not initialized");
235 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
236 return VC_ERROR_INVALID_STATE;
239 if (value != true && value != false) {
240 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Invalid value");
241 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
242 return VC_ERROR_INVALID_PARAMETER;
245 int ret = vc_config_mgr_set_auto_language(value);
247 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
249 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Set auto language (%s)", value ? "on" : "off");
252 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
257 int vc_setting_get_auto_language(bool* value)
259 SLOG(LOG_DEBUG, TAG_VCS, "@@@ Get auto language");
261 if (VC_SETTING_STATE_NONE == g_state) {
262 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Not initialized");
263 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
264 return VC_ERROR_INVALID_STATE;
268 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Param is NULL");
269 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
270 return VC_ERROR_INVALID_PARAMETER;
273 int ret = vc_config_mgr_get_auto_language(value);
275 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
277 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Get auto language (%s)", *value ? "true" : "false");
280 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
285 int vc_setting_set_enabled(bool value)
287 SLOG(LOG_DEBUG, TAG_VCS, "@@@ Set service enabled");
289 if (VC_SETTING_STATE_NONE == g_state) {
290 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Not initialized");
291 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
292 return VC_ERROR_INVALID_STATE;
295 if (value != true && value != false) {
296 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Invalid value");
297 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
298 return VC_ERROR_INVALID_PARAMETER;
301 int ret = vc_config_mgr_set_enabled(value);
303 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
305 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Set service enabled (%s)", value ? "on" : "off");
308 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
313 int vc_setting_get_enabled(bool* value)
315 SLOG(LOG_DEBUG, TAG_VCS, "@@@ Get service enabled");
317 if (VC_SETTING_STATE_NONE == g_state) {
318 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Not initialized");
319 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
320 return VC_ERROR_INVALID_STATE;
324 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Param is NULL");
325 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
326 return VC_ERROR_INVALID_PARAMETER;
329 int ret = vc_config_mgr_get_enabled(value);
331 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
334 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Get service enabled (%s)", *value ? "on" : "off");
337 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
342 int vc_setting_set_enabled_changed_cb(vc_setting_enabled_changed_cb callback, void* user_data)
344 SLOG(LOG_DEBUG, TAG_VCS, "@@@ Set service enabled callback");
346 if (VC_SETTING_STATE_NONE == g_state) {
347 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Not initialized");
348 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
349 return VC_ERROR_INVALID_STATE;
352 if (NULL == callback) {
353 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Param is NULL");
354 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
355 return VC_ERROR_INVALID_PARAMETER;
358 g_callback = callback;
359 g_user_data = user_data;
361 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
366 int vc_setting_unset_enabled_changed_cb()
368 SLOG(LOG_DEBUG, TAG_VCS, "@@@ Unset service enabled callback");
370 if (VC_SETTING_STATE_NONE == g_state) {
371 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Not initialized");
372 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
373 return VC_ERROR_INVALID_STATE;
379 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
384 int vc_setting_set_current_language_changed_cb(vc_setting_current_language_changed_cb callback, void* user_data)
386 SLOG(LOG_DEBUG, TAG_VCS, "@@@ Set current language changed callback");
388 if (VC_SETTING_STATE_NONE == g_state) {
389 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Not initialized");
390 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
391 return VC_ERROR_INVALID_STATE;
394 if (NULL == callback) {
395 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Param is NULL");
396 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
397 return VC_ERROR_INVALID_PARAMETER;
400 g_lang_callback = callback;
401 g_lang_user_data = user_data;
403 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
408 int vc_setting_unset_current_language_changed_cb()
410 SLOG(LOG_DEBUG, TAG_VCS, "@@@ Unset current language changed callback");
412 if (VC_SETTING_STATE_NONE == g_state) {
413 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Not initialized");
414 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
415 return VC_ERROR_INVALID_STATE;
418 g_lang_callback = NULL;
419 g_lang_user_data = NULL;
421 SLOG(LOG_DEBUG, TAG_VCS, "@@@");