Reduce logs
[platform/core/uifw/voice-control.git] / client / vc_setting.c
1 /*
2 * Copyright (c) 2011-2015 Samsung Electronics Co., Ltd All Rights Reserved
3 *
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
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
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.
15 */
16
17
18 #include "vc_config_mgr.h"
19 #include "vc_main.h"
20 #include "voice_control_common.h"
21 #include "voice_control_setting.h"
22
23 /**
24 * @brief Enumerations of mode.
25 */
26 typedef enum {
27         VC_SETTING_STATE_NONE = 0,
28         VC_SETTING_STATE_READY
29 } vc_setting_state_e;
30
31 #define VC_SETTING_CONFIG_HANDLE        300000
32
33 static vc_setting_state_e g_state = VC_SETTING_STATE_NONE;
34
35 static vc_setting_enabled_changed_cb g_callback = NULL;
36
37 static void* g_user_data = NULL;
38
39 static vc_setting_current_language_changed_cb g_lang_callback = NULL;
40
41 static void* g_lang_user_data = NULL;
42
43 const char* vc_tag()
44 {
45         return TAG_VCS;
46 }
47
48 void __config_lang_changed_cb(const char* before_lang, const char* current_lang)
49 {
50         SLOG(LOG_DEBUG, TAG_VCS, "Lang changed : before(%s) current(%s)", before_lang, current_lang);
51
52         if (NULL != g_lang_callback) {
53                 g_lang_callback(before_lang, current_lang, g_lang_user_data);
54         }
55 }
56
57 void __vc_setting_state_changed_cb(int before_state, int current_state, void* user_data)
58 {
59         SLOG(LOG_DEBUG, TAG_VCS, "Service State changed : Before(%d) Current(%d)",
60                  before_state, current_state);
61         return;
62 }
63
64 void __vc_setting_enabled_changed_cb(bool enabled)
65 {
66         SLOG(LOG_DEBUG, TAG_VCS, "Service enabled changed : %s", enabled ? "on" : "off");
67
68         if (NULL != g_callback) {
69                 g_callback(enabled, g_user_data);
70         }
71
72         return;
73 }
74
75 int vc_setting_initialize(void)
76 {
77         SLOG(LOG_DEBUG, TAG_VCS, "@@@ Initialize VC Setting");
78
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, "@@@");
82                 return VC_ERROR_NONE;
83         }
84
85         int ret = vc_config_mgr_initialize(getpid() + VC_SETTING_CONFIG_HANDLE);
86         if (0 != ret) {
87                 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Fail to initialize config manager");
88                 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
89                 return VC_ERROR_OPERATION_FAILED;
90         }
91
92         ret = vc_config_mgr_set_lang_cb(getpid() + VC_SETTING_CONFIG_HANDLE, __config_lang_changed_cb);
93         if (0 != ret) {
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;
98         }
99
100         ret = vc_config_mgr_set_enabled_cb(getpid() + VC_SETTING_CONFIG_HANDLE, __vc_setting_enabled_changed_cb);
101
102         g_state = VC_SETTING_STATE_READY;
103
104         SLOG(LOG_DEBUG, TAG_VCS, "@@@");
105
106         return VC_ERROR_NONE;
107 }
108
109 int vc_setting_deinitialize()
110 {
111         SLOG(LOG_DEBUG, TAG_VCS, "@@@ Deinitialize VC Setting");
112
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;
117         }
118
119         vc_config_mgr_unset_lang_cb(getpid() + VC_SETTING_CONFIG_HANDLE);
120         vc_config_mgr_finalize(getpid() + VC_SETTING_CONFIG_HANDLE);
121
122         g_state = VC_SETTING_STATE_NONE;
123
124         SLOG(LOG_DEBUG, TAG_VCS, "@@@");
125
126         return VC_ERROR_NONE;
127 }
128
129 int vc_setting_foreach_supported_languages(vc_setting_supported_language_cb callback, void* user_data)
130 {
131         SLOG(LOG_DEBUG, TAG_VCS, "@@@ Foreach supported languages");
132
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;
137         }
138
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;
143         }
144
145         int ret = vc_config_mgr_get_language_list((vc_supported_language_cb)callback, user_data);
146         if (0 != ret) {
147                 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
148         } else {
149                 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Foreach supported languages");
150         }
151
152         SLOG(LOG_DEBUG, TAG_VCS, "@@@");
153
154         return ret;
155 }
156
157 int vc_setting_get_language(char** language)
158 {
159         SLOG(LOG_DEBUG, TAG_VCS, "@@@ Get default language");
160
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;
165         }
166
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;
171         }
172
173         int ret = vc_config_mgr_get_default_language(language);
174         if (0 != ret) {
175                 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
176         } else {
177                 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Get default language");
178         }
179
180         SLOG(LOG_DEBUG, TAG_VCS, "@@@");
181
182         return ret;
183 }
184
185 int vc_setting_set_language(const char* language)
186 {
187         SLOG(LOG_DEBUG, TAG_VCS, "@@@ Set default language");
188
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;
193         }
194
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;
199         }
200
201         int ret = vc_config_mgr_set_default_language(language);
202         if (0 != ret) {
203                 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
204         } else {
205                 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Set default language");
206         }
207
208         SLOG(LOG_DEBUG, TAG_VCS, "@@@");
209
210         return ret;
211 }
212
213 int vc_setting_set_auto_language(bool value)
214 {
215         SLOG(LOG_DEBUG, TAG_VCS, "@@@ Set auto voice");
216
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;
221         }
222
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;
227         }
228
229         int ret = vc_config_mgr_set_auto_language(value);
230         if (0 != ret) {
231                 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
232         } else {
233                 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Set auto language (%s)", value ? "on" : "off");
234         }
235
236         SLOG(LOG_DEBUG, TAG_VCS, "@@@");
237
238         return ret;
239 }
240
241 int vc_setting_get_auto_language(bool* value)
242 {
243         SLOG(LOG_DEBUG, TAG_VCS, "@@@ Get auto language");
244
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;
249         }
250
251         if (NULL == value) {
252                 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Param is NULL");
253                 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
254                 return VC_ERROR_INVALID_PARAMETER;
255         }
256
257         int ret = vc_config_mgr_get_auto_language(value);
258         if (0 != ret) {
259                 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
260         } else {
261                 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Get auto language (%s)", *value ? "true" : "false");
262         }
263
264         SLOG(LOG_DEBUG, TAG_VCS, "@@@");
265
266         return 0;
267 }
268
269 int vc_setting_set_enabled(bool value)
270 {
271         SLOG(LOG_DEBUG, TAG_VCS, "@@@ Set service enabled");
272
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;
277         }
278
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;
283         }
284
285         int ret = vc_config_mgr_set_enabled(value);
286         if (0 != ret) {
287                 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
288         } else {
289                 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Set service enabled (%s)", value ? "on" : "off");
290         }
291
292         SLOG(LOG_DEBUG, TAG_VCS, "@@@");
293
294         return ret;
295 }
296
297 int vc_setting_get_enabled(bool* value)
298 {
299         SLOG(LOG_DEBUG, TAG_VCS, "@@@ Get service enabled");
300
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;
305         }
306
307         if (NULL == value) {
308                 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Param is NULL");
309                 SLOG(LOG_DEBUG, TAG_VCS, "@@@");
310                 return VC_ERROR_INVALID_PARAMETER;
311         }
312
313         int ret = vc_config_mgr_get_enabled(value);
314         if (0 != ret) {
315                 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
316         } else {
317                 /* Copy value */
318                 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Get service enabled (%s)", *value ? "on" : "off");
319         }
320
321         SLOG(LOG_DEBUG, TAG_VCS, "@@@");
322
323         return ret;
324 }
325
326 int vc_setting_set_enabled_changed_cb(vc_setting_enabled_changed_cb callback, void* user_data)
327 {
328         SLOG(LOG_DEBUG, TAG_VCS, "@@@ Set service enabled callback");
329
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;
334         }
335
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;
340         }
341
342         g_callback = callback;
343         g_user_data = user_data;
344
345         SLOG(LOG_DEBUG, TAG_VCS, "@@@");
346
347         return 0;
348 }
349
350 int vc_setting_unset_enabled_changed_cb()
351 {
352         SLOG(LOG_DEBUG, TAG_VCS, "@@@ Unset service enabled callback");
353
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;
358         }
359
360         g_callback = NULL;
361         g_user_data = NULL;
362
363         SLOG(LOG_DEBUG, TAG_VCS, "@@@");
364
365         return 0;
366 }
367
368 int vc_setting_set_current_language_changed_cb(vc_setting_current_language_changed_cb callback, void* user_data)
369 {
370         SLOG(LOG_DEBUG, TAG_VCS, "@@@ Set current language changed callback");
371
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;
376         }
377
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;
382         }
383
384         g_lang_callback = callback;
385         g_lang_user_data = user_data;
386
387         SLOG(LOG_DEBUG, TAG_VCS, "@@@");
388
389         return 0;
390 }
391
392 int vc_setting_unset_current_language_changed_cb()
393 {
394         SLOG(LOG_DEBUG, TAG_VCS, "@@@ Unset current language changed callback");
395
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;
400         }
401
402         g_lang_callback = NULL;
403         g_lang_user_data = NULL;
404
405         SLOG(LOG_DEBUG, TAG_VCS, "@@@");
406
407         return 0;
408 }
409