Clean up code according to coding rule
[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;
36
37 static void* g_user_data;
38
39
40 const char* vc_tag()
41 {
42         return TAG_VCS;
43 }
44
45 void __config_lang_changed_cb(const char* before_lang, const char* current_lang)
46 {
47         SLOG(LOG_DEBUG, TAG_VCS, "Lang changed : before(%s) current(%s)", before_lang, current_lang);
48 }
49
50 void __vc_setting_state_changed_cb(int before_state, int current_state, void* user_data)
51 {
52         SLOG(LOG_DEBUG, TAG_VCS, "Service State changed : Before(%d) Current(%d)",
53                  before_state, current_state);
54         return;
55 }
56
57 void __vc_setting_enabled_changed_cb(bool enabled)
58 {
59         SLOG(LOG_DEBUG, TAG_VCS, "Service enabled changed : %s", enabled ? "on" : "off");
60
61         if (NULL != g_callback) {
62                 g_callback(enabled, g_user_data);
63         }
64
65         return;
66 }
67
68 int vc_setting_initialize(void)
69 {
70         SLOG(LOG_DEBUG, TAG_VCS, "===== Initialize VC Setting");
71
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, " ");
76                 return VC_ERROR_NONE;
77         }
78
79         int ret = vc_config_mgr_initialize(getpid() + VC_SETTING_CONFIG_HANDLE);
80         if (0 != ret) {
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;
85         }
86
87         ret = vc_config_mgr_set_lang_cb(getpid() + VC_SETTING_CONFIG_HANDLE, __config_lang_changed_cb);
88         if (0 != ret) {
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;
93         }
94
95         ret = vc_config_mgr_set_enabled_cb(getpid() + VC_SETTING_CONFIG_HANDLE, __vc_setting_enabled_changed_cb);
96
97         g_state = VC_SETTING_STATE_READY;
98
99         SLOG(LOG_DEBUG, TAG_VCS, "=====");
100         SLOG(LOG_DEBUG, TAG_VCS, " ");
101
102         return VC_ERROR_NONE;
103 }
104
105 int vc_setting_deinitialize()
106 {
107         SLOG(LOG_DEBUG, TAG_VCS, "===== Deinitialize VC Setting");
108
109         vc_config_mgr_unset_lang_cb(getpid() + VC_SETTING_CONFIG_HANDLE);
110         vc_config_mgr_finalize(getpid() + VC_SETTING_CONFIG_HANDLE);
111
112         g_state = VC_SETTING_STATE_NONE;
113
114         SLOG(LOG_DEBUG, TAG_VCS, "=====");
115         SLOG(LOG_DEBUG, TAG_VCS, " ");
116
117         return VC_ERROR_NONE;
118 }
119
120 int vc_setting_foreach_supported_languages(vc_setting_supported_language_cb callback, void* user_data)
121 {
122         SLOG(LOG_DEBUG, TAG_VCS, "===== Foreach supported languages");
123
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;
129         }
130
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;
136         }
137
138         int ret = vc_config_mgr_get_language_list((vc_supported_language_cb)callback, user_data);
139         if (0 != ret) {
140                 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
141         } else {
142                 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Foreach supported languages");
143         }
144
145         SLOG(LOG_DEBUG, TAG_VCS, "=====");
146         SLOG(LOG_DEBUG, TAG_VCS, " ");
147
148         return ret;
149 }
150
151 int vc_setting_get_language(char** language)
152 {
153         SLOG(LOG_DEBUG, TAG_VCS, "===== Get default language");
154
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;
160         }
161
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;
167         }
168
169         int ret = vc_config_mgr_get_default_language(language);
170         if (0 != ret) {
171                 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
172         } else {
173                 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Get default language");
174         }
175
176         SLOG(LOG_DEBUG, TAG_VCS, "=====");
177         SLOG(LOG_DEBUG, TAG_VCS, " ");
178
179         return ret;
180 }
181
182 int vc_setting_set_language(const char* language)
183 {
184         SLOG(LOG_DEBUG, TAG_VCS, "===== Set default language");
185
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;
191         }
192
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;
198         }
199
200         int ret = vc_config_mgr_set_default_language(language);
201         if (0 != ret) {
202                 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
203         } else {
204                 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Set default language");
205         }
206
207         SLOG(LOG_DEBUG, TAG_VCS, "=====");
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                 SLOG(LOG_DEBUG, TAG_VCS, " ");
221                 return VC_ERROR_INVALID_STATE;
222         }
223
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;
229         }
230
231         int ret = vc_config_mgr_set_auto_language(value);
232         if (0 != ret) {
233                 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
234         } else {
235                 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Set auto language (%s)", value ? "on" : "off");
236         }
237
238         SLOG(LOG_DEBUG, TAG_VCS, "=====");
239         SLOG(LOG_DEBUG, TAG_VCS, " ");
240
241         return ret;
242 }
243
244 int vc_setting_get_auto_language(bool* value)
245 {
246         SLOG(LOG_DEBUG, TAG_VCS, "===== Get auto language");
247
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;
253         }
254
255         if (NULL == value) {
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;
260         }
261
262         int ret = vc_config_mgr_get_auto_language(value);
263         if (0 != ret) {
264                 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
265         } else {
266                 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Get auto language (%s)", *value ? "true" : "false");
267         }
268
269         SLOG(LOG_DEBUG, TAG_VCS, "=====");
270         SLOG(LOG_DEBUG, TAG_VCS, " ");
271
272         return 0;
273 }
274
275 int vc_setting_set_enabled(bool value)
276 {
277         SLOG(LOG_DEBUG, TAG_VCS, "===== Set service enabled");
278
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;
284         }
285
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;
291         }
292
293         int ret = vc_config_mgr_set_enabled(value);
294         if (0 != ret) {
295                 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
296         } else {
297                 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Set service enabled (%s)", value ? "on" : "off");
298         }
299
300         SLOG(LOG_DEBUG, TAG_VCS, "=====");
301         SLOG(LOG_DEBUG, TAG_VCS, " ");
302
303         return ret;
304 }
305
306 int vc_setting_get_enabled(bool* value)
307 {
308         SLOG(LOG_DEBUG, TAG_VCS, "===== Get service enabled");
309
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;
315         }
316
317         if (NULL == value) {
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;
322         }
323
324         int ret = vc_config_mgr_get_enabled(value);
325         if (0 != ret) {
326                 SLOG(LOG_ERROR, TAG_VCS, "[ERROR] Result : %d", ret);
327         } else {
328                 /* Copy value */
329                 SLOG(LOG_DEBUG, TAG_VCS, "[SUCCESS] Get service enabled (%s)", *value ? "on" : "off");
330         }
331
332         SLOG(LOG_DEBUG, TAG_VCS, "=====");
333         SLOG(LOG_DEBUG, TAG_VCS, " ");
334
335         return ret;
336 }
337
338 int vc_setting_set_enabled_changed_cb(vc_setting_enabled_changed_cb callback, void* user_data)
339 {
340         SLOG(LOG_DEBUG, TAG_VCS, "===== Set service enabled callback");
341
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;
347         }
348
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;
354         }
355
356         g_callback = callback;
357         g_user_data = user_data;
358
359         SLOG(LOG_DEBUG, TAG_VCS, "=====");
360         SLOG(LOG_DEBUG, TAG_VCS, " ");
361
362         return 0;
363 }
364
365 int vc_setting_unset_enabled_changed_cb()
366 {
367         SLOG(LOG_DEBUG, TAG_VCS, "===== Unset service enabled callback");
368
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;
374         }
375
376         g_callback = NULL;
377         g_user_data = NULL;
378
379         SLOG(LOG_DEBUG, TAG_VCS, "=====");
380         SLOG(LOG_DEBUG, TAG_VCS, " ");
381
382         return 0;
383 }