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;
37 static void* g_user_data;
45 void __config_lang_changed_cb(const char* before_lang, const char* current_lang)
47 SLOG(LOG_DEBUG, TAG_VCS, "Lang changed : before(%s) current(%s)", before_lang, current_lang);
50 void __vc_setting_state_changed_cb(int before_state, int current_state, void* user_data)
52 SLOG(LOG_DEBUG, TAG_VCS, "Service State changed : Before(%d) Current(%d)",
53 before_state, current_state);
57 void __vc_setting_enabled_changed_cb(bool enabled)
59 SLOG(LOG_DEBUG, TAG_VCS, "Service enabled changed : %s", enabled ? "on" : "off");
61 if (NULL != g_callback) {
62 g_callback(enabled, g_user_data);
68 int vc_setting_initialize(void)
70 SLOG(LOG_DEBUG, TAG_VCS, "===== Initialize VC Setting");
72 if (VC_SETTING_STATE_READY == g_state) {
73 SLOG(LOG_WARN, TAG_VCS, "[WARNING] VC Setting has already been initialized.");
74 SLOG(LOG_DEBUG, TAG_VCS, "=====");
75 SLOG(LOG_DEBUG, TAG_VCS, " ");
79 int ret = vc_config_mgr_initialize(getpid() + VC_SETTING_CONFIG_HANDLE);
81 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Fail to initialize config manager");
82 SLOG(LOG_DEBUG, TAG_VCS, "=====");
83 SLOG(LOG_DEBUG, TAG_VCS, " ");
84 return VC_ERROR_OPERATION_FAILED;
87 ret = vc_config_mgr_set_lang_cb(getpid() + VC_SETTING_CONFIG_HANDLE, __config_lang_changed_cb);
89 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Fail to initialize config manager");
90 SLOG(LOG_DEBUG, TAG_VCS, "=====");
91 SLOG(LOG_DEBUG, TAG_VCS, " ");
92 return VC_ERROR_OPERATION_FAILED;
95 ret = vc_config_mgr_set_enabled_cb(getpid() + VC_SETTING_CONFIG_HANDLE, __vc_setting_enabled_changed_cb);
97 g_state = VC_SETTING_STATE_READY;
99 SLOG(LOG_DEBUG, TAG_VCS, "=====");
100 SLOG(LOG_DEBUG, TAG_VCS, " ");
102 return VC_ERROR_NONE;
105 int vc_setting_deinitialize()
107 SLOG(LOG_DEBUG, TAG_VCS, "===== Deinitialize VC Setting");
109 vc_config_mgr_unset_lang_cb(getpid() + VC_SETTING_CONFIG_HANDLE);
110 vc_config_mgr_finalize(getpid() + VC_SETTING_CONFIG_HANDLE);
112 g_state = VC_SETTING_STATE_NONE;
114 SLOG(LOG_DEBUG, TAG_VCS, "=====");
115 SLOG(LOG_DEBUG, TAG_VCS, " ");
117 return VC_ERROR_NONE;
120 int vc_setting_foreach_supported_languages(vc_setting_supported_language_cb callback, void* user_data)
122 SLOG(LOG_DEBUG, TAG_VCS, "===== Foreach supported languages");
124 if (VC_SETTING_STATE_NONE == g_state) {
125 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Not initialized");
126 SLOG(LOG_DEBUG, TAG_VCS, "=====");
127 SLOG(LOG_DEBUG, TAG_VCS, " ");
128 return VC_ERROR_INVALID_STATE;
131 if (NULL == callback) {
132 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Param is NULL");
133 SLOG(LOG_DEBUG, TAG_VCS, "=====");
134 SLOG(LOG_DEBUG, TAG_VCS, " ");
135 return VC_ERROR_INVALID_PARAMETER;
138 int ret = vc_config_mgr_get_language_list((vc_supported_language_cb)callback, user_data);
140 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
142 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Foreach supported languages");
145 SLOG(LOG_DEBUG, TAG_VCS, "=====");
146 SLOG(LOG_DEBUG, TAG_VCS, " ");
151 int vc_setting_get_language(char** language)
153 SLOG(LOG_DEBUG, TAG_VCS, "===== Get default language");
155 if (VC_SETTING_STATE_NONE == g_state) {
156 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Not initialized");
157 SLOG(LOG_DEBUG, TAG_VCS, "=====");
158 SLOG(LOG_DEBUG, TAG_VCS, " ");
159 return VC_ERROR_INVALID_STATE;
162 if (NULL == language) {
163 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Input parameter is NULL");
164 SLOG(LOG_DEBUG, TAG_VCS, "=====");
165 SLOG(LOG_DEBUG, TAG_VCS, " ");
166 return VC_ERROR_INVALID_PARAMETER;
169 int ret = vc_config_mgr_get_default_language(language);
171 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
173 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Get default language");
176 SLOG(LOG_DEBUG, TAG_VCS, "=====");
177 SLOG(LOG_DEBUG, TAG_VCS, " ");
182 int vc_setting_set_language(const char* language)
184 SLOG(LOG_DEBUG, TAG_VCS, "===== Set default language");
186 if (VC_SETTING_STATE_NONE == g_state) {
187 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Not initialized");
188 SLOG(LOG_DEBUG, TAG_VCS, "=====");
189 SLOG(LOG_DEBUG, TAG_VCS, " ");
190 return VC_ERROR_INVALID_STATE;
193 if (NULL == language) {
194 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Input parameter is NULL");
195 SLOG(LOG_DEBUG, TAG_VCS, "=====");
196 SLOG(LOG_DEBUG, TAG_VCS, " ");
197 return VC_ERROR_INVALID_PARAMETER;
200 int ret = vc_config_mgr_set_default_language(language);
202 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
204 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Set default language");
207 SLOG(LOG_DEBUG, TAG_VCS, "=====");
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 SLOG(LOG_DEBUG, TAG_VCS, " ");
221 return VC_ERROR_INVALID_STATE;
224 if (value != true && value != false) {
225 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Invalid value");
226 SLOG(LOG_DEBUG, TAG_VCS, "=====");
227 SLOG(LOG_DEBUG, TAG_VCS, " ");
228 return VC_ERROR_INVALID_PARAMETER;
231 int ret = vc_config_mgr_set_auto_language(value);
233 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
235 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Set auto language (%s)", value ? "on" : "off");
238 SLOG(LOG_DEBUG, TAG_VCS, "=====");
239 SLOG(LOG_DEBUG, TAG_VCS, " ");
244 int vc_setting_get_auto_language(bool* value)
246 SLOG(LOG_DEBUG, TAG_VCS, "===== Get auto language");
248 if (VC_SETTING_STATE_NONE == g_state) {
249 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Not initialized");
250 SLOG(LOG_DEBUG, TAG_VCS, "=====");
251 SLOG(LOG_DEBUG, TAG_VCS, " ");
252 return VC_ERROR_INVALID_STATE;
256 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Param is NULL");
257 SLOG(LOG_DEBUG, TAG_VCS, "=====");
258 SLOG(LOG_DEBUG, TAG_VCS, " ");
259 return VC_ERROR_INVALID_PARAMETER;
262 int ret = vc_config_mgr_get_auto_language(value);
264 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
266 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Get auto language (%s)", *value ? "true" : "false");
269 SLOG(LOG_DEBUG, TAG_VCS, "=====");
270 SLOG(LOG_DEBUG, TAG_VCS, " ");
275 int vc_setting_set_enabled(bool value)
277 SLOG(LOG_DEBUG, TAG_VCS, "===== Set service enabled");
279 if (VC_SETTING_STATE_NONE == g_state) {
280 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Not initialized");
281 SLOG(LOG_DEBUG, TAG_VCS, "=====");
282 SLOG(LOG_DEBUG, TAG_VCS, " ");
283 return VC_ERROR_INVALID_STATE;
286 if (value != true && value != false) {
287 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Invalid value");
288 SLOG(LOG_DEBUG, TAG_VCS, "=====");
289 SLOG(LOG_DEBUG, TAG_VCS, " ");
290 return VC_ERROR_INVALID_PARAMETER;
293 int ret = vc_config_mgr_set_enabled(value);
295 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
297 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Set service enabled (%s)", value ? "on" : "off");
300 SLOG(LOG_DEBUG, TAG_VCS, "=====");
301 SLOG(LOG_DEBUG, TAG_VCS, " ");
306 int vc_setting_get_enabled(bool* value)
308 SLOG(LOG_DEBUG, TAG_VCS, "===== Get service enabled");
310 if (VC_SETTING_STATE_NONE == g_state) {
311 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Not initialized");
312 SLOG(LOG_DEBUG, TAG_VCS, "=====");
313 SLOG(LOG_DEBUG, TAG_VCS, " ");
314 return VC_ERROR_INVALID_STATE;
318 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Param is NULL");
319 SLOG(LOG_DEBUG, TAG_VCS, "=====");
320 SLOG(LOG_DEBUG, TAG_VCS, " ");
321 return VC_ERROR_INVALID_PARAMETER;
324 int ret = vc_config_mgr_get_enabled(value);
326 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
329 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Get service enabled (%s)", *value ? "on" : "off");
332 SLOG(LOG_DEBUG, TAG_VCS, "=====");
333 SLOG(LOG_DEBUG, TAG_VCS, " ");
338 int vc_setting_set_enabled_changed_cb(vc_setting_enabled_changed_cb callback, void* user_data)
340 SLOG(LOG_DEBUG, TAG_VCS, "===== Set service enabled callback");
342 if (VC_SETTING_STATE_NONE == g_state) {
343 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Not initialized");
344 SLOG(LOG_DEBUG, TAG_VCS, "=====");
345 SLOG(LOG_DEBUG, TAG_VCS, " ");
346 return VC_ERROR_INVALID_STATE;
349 if (NULL == callback) {
350 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Param is NULL");
351 SLOG(LOG_DEBUG, TAG_VCS, "=====");
352 SLOG(LOG_DEBUG, TAG_VCS, " ");
353 return VC_ERROR_INVALID_PARAMETER;
356 g_callback = callback;
357 g_user_data = user_data;
359 SLOG(LOG_DEBUG, TAG_VCS, "=====");
360 SLOG(LOG_DEBUG, TAG_VCS, " ");
365 int vc_setting_unset_enabled_changed_cb()
367 SLOG(LOG_DEBUG, TAG_VCS, "===== Unset service enabled callback");
369 if (VC_SETTING_STATE_NONE == g_state) {
370 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Not initialized");
371 SLOG(LOG_DEBUG, TAG_VCS, "=====");
372 SLOG(LOG_DEBUG, TAG_VCS, " ");
373 return VC_ERROR_INVALID_STATE;
379 SLOG(LOG_DEBUG, TAG_VCS, "=====");
380 SLOG(LOG_DEBUG, TAG_VCS, " ");