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 "voice_control_common.h"
21 #include "voice_control_setting.h"
24 * @brief Enumerations of mode.
27 VC_SETTING_STATE_NONE = 0,
28 VC_SETTING_STATE_READY
31 #define VC_SETTING_CONFIG_HANDLE 300000
33 static vc_setting_state_e g_state = VC_SETTING_STATE_NONE;
35 static vc_setting_enabled_changed_cb g_callback = NULL;
37 static void* g_user_data = NULL;
39 static vc_setting_current_language_changed_cb g_lang_callback = NULL;
41 static void* g_lang_user_data = NULL;
48 void __config_lang_changed_cb(const char* before_lang, const char* current_lang)
50 SLOG(LOG_DEBUG, TAG_VCS, "Lang changed : before(%s) current(%s)", before_lang, current_lang);
52 if (NULL != g_lang_callback) {
53 g_lang_callback(before_lang, current_lang, g_lang_user_data);
57 void __vc_setting_state_changed_cb(int before_state, int current_state, void* user_data)
59 SLOG(LOG_DEBUG, TAG_VCS, "Service State changed : Before(%d) Current(%d)",
60 before_state, current_state);
64 void __vc_setting_enabled_changed_cb(bool enabled)
66 SLOG(LOG_DEBUG, TAG_VCS, "Service enabled changed : %s", enabled ? "on" : "off");
68 if (NULL != g_callback) {
69 g_callback(enabled, g_user_data);
75 int vc_setting_initialize(void)
77 SLOG(LOG_DEBUG, TAG_VCS, "@@@ Initialize VC Setting");
79 if (VC_SETTING_STATE_READY == g_state) {
80 SLOG(LOG_WARN, TAG_VCS, "[WARNING] VC Setting has already been initialized.");
81 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
85 int ret = vc_config_mgr_initialize(getpid() + VC_SETTING_CONFIG_HANDLE);
87 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Fail to initialize config manager");
88 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
89 return VC_ERROR_OPERATION_FAILED;
92 ret = vc_config_mgr_set_lang_cb(getpid() + VC_SETTING_CONFIG_HANDLE, __config_lang_changed_cb);
94 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Fail to initialize config manager");
95 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
96 vc_config_mgr_finalize(getpid() + VC_SETTING_CONFIG_HANDLE);
97 return VC_ERROR_OPERATION_FAILED;
100 ret = vc_config_mgr_set_enabled_cb(getpid() + VC_SETTING_CONFIG_HANDLE, __vc_setting_enabled_changed_cb);
102 g_state = VC_SETTING_STATE_READY;
104 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
106 return VC_ERROR_NONE;
109 int vc_setting_deinitialize()
111 SLOG(LOG_DEBUG, TAG_VCS, "@@@ Deinitialize VC Setting");
113 if (VC_SETTING_STATE_READY != g_state) {
114 SLOG(LOG_WARN, TAG_VCS, "[WARNING] VC Setting is not initialized");
115 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
116 return VC_ERROR_INVALID_STATE;
119 vc_config_mgr_unset_lang_cb(getpid() + VC_SETTING_CONFIG_HANDLE);
120 vc_config_mgr_finalize(getpid() + VC_SETTING_CONFIG_HANDLE);
122 g_state = VC_SETTING_STATE_NONE;
124 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
126 return VC_ERROR_NONE;
129 int vc_setting_foreach_supported_languages(vc_setting_supported_language_cb callback, void* user_data)
131 SLOG(LOG_DEBUG, TAG_VCS, "@@@ Foreach supported languages");
133 if (VC_SETTING_STATE_NONE == g_state) {
134 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Not initialized");
135 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
136 return VC_ERROR_INVALID_STATE;
139 if (NULL == callback) {
140 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Param is NULL");
141 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
142 return VC_ERROR_INVALID_PARAMETER;
145 int ret = vc_config_mgr_get_language_list((vc_supported_language_cb)callback, user_data);
147 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
149 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Foreach supported languages");
152 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
157 int vc_setting_get_language(char** language)
159 SLOG(LOG_DEBUG, TAG_VCS, "@@@ Get default language");
161 if (VC_SETTING_STATE_NONE == g_state) {
162 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Not initialized");
163 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
164 return VC_ERROR_INVALID_STATE;
167 if (NULL == language) {
168 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Input parameter is NULL");
169 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
170 return VC_ERROR_INVALID_PARAMETER;
173 int ret = vc_config_mgr_get_default_language(language);
175 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
177 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Get default language");
180 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
185 int vc_setting_set_language(const char* language)
187 SLOG(LOG_DEBUG, TAG_VCS, "@@@ Set default language");
189 if (VC_SETTING_STATE_NONE == g_state) {
190 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Not initialized");
191 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
192 return VC_ERROR_INVALID_STATE;
195 if (NULL == language) {
196 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Input parameter is NULL");
197 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
198 return VC_ERROR_INVALID_PARAMETER;
201 int ret = vc_config_mgr_set_default_language(language);
203 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
205 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Set default language");
208 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
213 int vc_setting_set_auto_language(bool value)
215 SLOG(LOG_DEBUG, TAG_VCS, "@@@ Set auto voice");
217 if (VC_SETTING_STATE_NONE == g_state) {
218 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Not initialized");
219 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
220 return VC_ERROR_INVALID_STATE;
223 if (value != true && value != false) {
224 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Invalid value");
225 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
226 return VC_ERROR_INVALID_PARAMETER;
229 int ret = vc_config_mgr_set_auto_language(value);
231 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
233 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Set auto language (%s)", value ? "on" : "off");
236 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
241 int vc_setting_get_auto_language(bool* value)
243 SLOG(LOG_DEBUG, TAG_VCS, "@@@ Get auto language");
245 if (VC_SETTING_STATE_NONE == g_state) {
246 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Not initialized");
247 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
248 return VC_ERROR_INVALID_STATE;
252 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Param is NULL");
253 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
254 return VC_ERROR_INVALID_PARAMETER;
257 int ret = vc_config_mgr_get_auto_language(value);
259 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
261 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Get auto language (%s)", *value ? "true" : "false");
264 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
269 int vc_setting_set_enabled(bool value)
271 SLOG(LOG_DEBUG, TAG_VCS, "@@@ Set service enabled");
273 if (VC_SETTING_STATE_NONE == g_state) {
274 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Not initialized");
275 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
276 return VC_ERROR_INVALID_STATE;
279 if (value != true && value != false) {
280 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Invalid value");
281 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
282 return VC_ERROR_INVALID_PARAMETER;
285 int ret = vc_config_mgr_set_enabled(value);
287 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
289 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Set service enabled (%s)", value ? "on" : "off");
292 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
297 int vc_setting_get_enabled(bool* value)
299 SLOG(LOG_DEBUG, TAG_VCS, "@@@ Get service enabled");
301 if (VC_SETTING_STATE_NONE == g_state) {
302 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Not initialized");
303 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
304 return VC_ERROR_INVALID_STATE;
308 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Param is NULL");
309 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
310 return VC_ERROR_INVALID_PARAMETER;
313 int ret = vc_config_mgr_get_enabled(value);
315 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
318 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Get service enabled (%s)", *value ? "on" : "off");
321 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
326 int vc_setting_set_enabled_changed_cb(vc_setting_enabled_changed_cb callback, void* user_data)
328 SLOG(LOG_DEBUG, TAG_VCS, "@@@ Set service enabled callback");
330 if (VC_SETTING_STATE_NONE == g_state) {
331 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Not initialized");
332 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
333 return VC_ERROR_INVALID_STATE;
336 if (NULL == callback) {
337 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Param is NULL");
338 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
339 return VC_ERROR_INVALID_PARAMETER;
342 g_callback = callback;
343 g_user_data = user_data;
345 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
350 int vc_setting_unset_enabled_changed_cb()
352 SLOG(LOG_DEBUG, TAG_VCS, "@@@ Unset service enabled callback");
354 if (VC_SETTING_STATE_NONE == g_state) {
355 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Not initialized");
356 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
357 return VC_ERROR_INVALID_STATE;
363 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
368 int vc_setting_set_current_language_changed_cb(vc_setting_current_language_changed_cb callback, void* user_data)
370 SLOG(LOG_DEBUG, TAG_VCS, "@@@ Set current language changed callback");
372 if (VC_SETTING_STATE_NONE == g_state) {
373 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Not initialized");
374 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
375 return VC_ERROR_INVALID_STATE;
378 if (NULL == callback) {
379 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Param is NULL");
380 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
381 return VC_ERROR_INVALID_PARAMETER;
384 g_lang_callback = callback;
385 g_lang_user_data = user_data;
387 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
392 int vc_setting_unset_current_language_changed_cb()
394 SLOG(LOG_DEBUG, TAG_VCS, "@@@ Unset current language changed callback");
396 if (VC_SETTING_STATE_NONE == g_state) {
397 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Not initialized");
398 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
399 return VC_ERROR_INVALID_STATE;
402 g_lang_callback = NULL;
403 g_lang_user_data = NULL;
405 SLOG(LOG_DEBUG, TAG_VCS, "@@@");