upload tizen1.0 source
[pkgs/o/oma-ds-service.git] / src / Framework / Task / OMA_DS_Engine_Controller_Task.c
1 /*
2  * oma-ds-service
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Contact: JuHak Park <juhaki.park@samsung.com>,
7  *          JuneHyuk Lee <junhyuk7.lee@samsung.com>,
8  *          SunBong Ha <sunbong.ha@samsung.com>
9  *
10  * Licensed under the Apache License, Version 2.0 (the "License");
11  * you may not use this file except in compliance with the License.
12  * You may obtain a copy of the License at
13  *
14  * http://www.apache.org/licenses/LICENSE-2.0
15  *
16  * Unless required by applicable law or agreed to in writing, software
17  * distributed under the License is distributed on an "AS IS" BASIS,
18  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19  * See the License for the specific language governing permissions and
20  * limitations under the License.
21  *
22  */
23
24
25
26
27 /*
28  * For any sort of issue you concern as to this software,
29  * you may use following point of contact.
30  * All resources contributed on this software
31  * are orinigally written by S-Core Inc., a member of Samsung Group.
32  *
33  * SeongWon Shim <seongwon.shim@samsung.com>
34  */
35
36 /**
37  *   @OMA_DS_Engine_Controller_Task.c
38  *   @version                                                                   0.1
39  *   @brief                                                                             This file is the source file of implementation of make and register task to Engine Controller
40  */
41
42
43 #include <string.h>
44 #include "Framework/Task/OMA_DS_Engine_Controller_Task.h"
45
46 #include "agent-framework/Utility/fw_log.h"
47 #include "ServiceEngine/SE_Account.h"
48 #include "ServiceEngine/SE_AutoConfig.h"
49 #include "ServiceEngine/SE_Sync.h"
50 #include "ServiceEngine/SE_Storage.h"
51 #include "ServiceEngine/SE_Notification.h"
52
53 #define LOG_TAG "OMA_DS_COMMON"
54
55 static GList *sync_request_id_list = NULL;
56
57 static void __free_sync_categorie_list(void *list);
58 static void __free_delete_profile_list(void *list);
59 static void __free_resource_cp_list(void *list);
60
61 static void __free_sync_category(sync_category *category);
62 static void __free_resource_cp(resource_cp *resource);
63 static request_msg_info_t *__create_request_msg_info(int sync_type, unsigned int request_id);
64 static void __request_msg_info_free(request_msg_info_t *pInfo);
65
66 static void *__string_copy_struct(void *string);
67
68
69
70 static void __free_sync_categorie_list(void *list)
71 {
72         GList *categories = (GList *)list;
73         GList *iter = NULL;
74         for (iter = categories; iter != NULL; iter = g_list_next(iter))
75                 __free_sync_category(iter->data);
76
77
78         g_list_free(categories);
79 }
80
81 static void __free_delete_profile_list(void *list)
82 {
83         GList *profiles = (GList *)list;
84         GList *iter = NULL;
85         for (iter = profiles; iter != NULL; iter = g_list_next(iter))
86                 free(iter->data);
87
88         g_list_free(profiles);
89 }
90
91 static void __free_resource_cp_list(void *list)
92 {
93         GList *profiles = (GList *)list;
94         GList *iter = NULL;
95         for (iter = profiles; iter != NULL; iter = g_list_next(iter))
96                 __free_resource_cp(iter->data);
97
98         g_list_free(profiles);
99 }
100
101 static void __free_sync_category(sync_category *category)
102 {
103         if (category->srcURI != NULL)
104                 free(category->srcURI);
105
106         if (category->tgtURI != NULL)
107                 free(category->tgtURI);
108
109         if (category->id != NULL)
110                 free(category->id);
111
112         if (category->password != NULL)
113                 free(category->password);
114
115         free(category);
116 }
117
118 static void __free_resource_cp(resource_cp *resource)
119 {
120         if (resource->name != NULL)
121                 free(resource->name);
122
123         if (resource->accept != NULL)
124                 free(resource->accept);
125
126         if (resource->id != NULL)
127                 free(resource->id);
128
129         if (resource->password != NULL)
130                 free(resource->password);
131
132         if (resource->authType != NULL)
133                 free(resource->authType);
134
135         if (resource->authData != NULL)
136                 free(resource->authData);
137
138         free(resource);
139 }
140
141 static request_msg_info_t *__create_request_msg_info(int sync_type, unsigned int request_id)
142 {
143         request_msg_info_t *pInfo = (request_msg_info_t *) calloc(1, sizeof(request_msg_info_t));
144         if (pInfo == NULL) {
145                 return NULL;
146         }
147
148         pInfo->sync_type = sync_type;
149         pInfo->request_id = request_id;
150
151         return pInfo;
152 }
153
154 static void __request_msg_info_free(request_msg_info_t *pInfo)
155 {
156         if (pInfo != NULL) {
157                 free(pInfo);
158         }
159 }
160
161 static void *__string_copy_struct(void *string)
162 {
163         return strdup((const char *)string);
164 }
165
166
167
168 /*TODO have to be removed after removing vconf*/
169 task_spec_t *make_add_account_task()
170 {
171         param_spec *pParam_spec1 = param_spec_structure("profile", __string_copy_struct, free,
172                                                                                                         true, false, false, NULL, false, NULL, false, NULL);
173
174         param_spec *pParam_spec2 = param_spec_int("result", false, true, false, 0, 0, false, 0, false, 0, 0);
175
176         param_spec *param_spec_array[2] = {pParam_spec1, pParam_spec2};
177
178         task_spec_t *pTask_spec = task_spec_alloc_simple_task_spec("add_account",
179                                                                                         add_account_task_process, NULL, NULL,
180                                                                                         2, param_spec_array);
181
182         param_spec_unref(pParam_spec1);
183         param_spec_unref(pParam_spec2);
184
185         return pTask_spec;
186 }
187
188 /*TODO have to be removed after removing vconf*/
189 task_spec_t *make_edit_account_task()
190 {
191         param_spec *pParam_spec1 = param_spec_structure("profile", __string_copy_struct, free,
192                                                                                                         true, false, false, NULL, false, NULL, false, NULL);
193
194         param_spec *pParam_spec2 = param_spec_int("result", false, true, false, 0, 0, false, 0, false, 0, 0);
195
196         param_spec *param_spec_array[2] = {pParam_spec1, pParam_spec2};
197
198         task_spec_t *pTask_spec = task_spec_alloc_simple_task_spec("edit_account",
199                                                                                         edit_account_task_process, NULL, NULL,
200                                                                                         2, param_spec_array);
201
202         param_spec_unref(pParam_spec1);
203         param_spec_unref(pParam_spec2);
204
205         return pTask_spec;
206 }
207 /*TODO have to be removed after removing vconf*/
208 task_spec_t *make_autoconfigure_task()
209 {
210         param_spec *pParam_spec1 = param_spec_structure("profile", __string_copy_struct, free,
211                                                                                                         true, false, false, NULL, false, NULL, false, NULL);
212         param_spec *param_spec_array[1] = {pParam_spec1};
213
214         task_spec_t *pTask_spec = task_spec_alloc_simple_task_spec("auto_configure",
215                                                                                         autoconfigure_task_process, NULL, NULL,
216                                                                                         1, param_spec_array);
217
218         param_spec_unref(pParam_spec1);
219
220         return pTask_spec;
221 }
222
223 task_spec_t *make_synchronize_task()
224 {
225         param_spec *pParam_spec1 = param_spec_int("accountId", true, false, false, 0, 0, false, 0, false, 0, 0);
226         param_spec *pParam_spec2 = param_spec_structure("syncMode", __string_copy_struct, free,
227                                                                                                         true, false, false, NULL, false, NULL, false, NULL);
228         param_spec *pParam_spec3 = param_spec_structure("sanPackage", NULL, sanPackageParserFree,
229                                                                                                         true, false, false, NULL, false, NULL, false, NULL);
230         param_spec *param_spec_array[3] = {pParam_spec1, pParam_spec2, pParam_spec3};
231
232         task_spec_t *pTask_spec = task_spec_alloc_simple_task_spec("synchronize",
233                                                                                         synchronize_task_process, NULL, NULL,
234                                                                                         3, param_spec_array);
235
236         param_spec_unref(pParam_spec1);
237         param_spec_unref(pParam_spec2);
238         param_spec_unref(pParam_spec3);
239
240         return pTask_spec;
241 }
242
243 task_spec_t *make_add_profile_task()
244 {
245         param_spec *pParam_spec1 = param_spec_structure("profileDirName", __string_copy_struct, free,
246                                                                                                                 true, false, false, NULL, false, NULL, false, NULL);
247         param_spec *pParam_spec2 = param_spec_structure("profileName", __string_copy_struct, free,
248                                                                                                         true, false, false, NULL, false, NULL, false, NULL);
249         param_spec *pParam_spec3 = param_spec_structure("addr", __string_copy_struct, free,
250                                                                                                         true, false, false, NULL, false, NULL, false, NULL);
251         param_spec *pParam_spec4 = param_spec_structure("id", __string_copy_struct, free,
252                                                                                                         true, false, false, NULL, false, NULL, false, NULL);
253         param_spec *pParam_spec5 = param_spec_structure("password", __string_copy_struct, free,
254                                                                                                         true, false, false, NULL, false, NULL, false, NULL);
255         param_spec *pParam_spec6 = param_spec_structure("syncMode", __string_copy_struct, free,
256                                                                                                         true, false, false, NULL, false, NULL, false, NULL);
257         param_spec *pParam_spec7 = param_spec_structure("syncType", __string_copy_struct, free,
258                                                                                                         true, false, false, NULL, false, NULL, false, NULL);
259         param_spec *pParam_spec8 = param_spec_structure("interval", __string_copy_struct, free,
260                                                                                                         true, false, false, NULL, false, NULL, false, NULL);
261         param_spec *pParam_spec9 = param_spec_structure("categories", NULL, __free_sync_categorie_list,
262                                                                                                                 true, false, false, NULL, false, NULL, false, NULL);
263
264         param_spec *pParam_spec10 = param_spec_int("result", false, true, false, 0, 0, false, 0, false, 0, 0);
265         param_spec *pParam_spec11 = param_spec_int("accountId", false, true, false, 0, 0, false, 0, false, 0, 0);
266
267         param_spec *param_spec_array[11] = {pParam_spec1, pParam_spec2, pParam_spec3, pParam_spec4, pParam_spec5,
268                         pParam_spec6, pParam_spec7, pParam_spec8, pParam_spec9, pParam_spec10, pParam_spec11};
269
270         task_spec_t *pTask_spec = task_spec_alloc_simple_task_spec("add_profile",
271                                                                                         add_profile_task_process, NULL, NULL,
272                                                                                         11, param_spec_array);
273
274         param_spec_unref(pParam_spec1);
275         param_spec_unref(pParam_spec2);
276         param_spec_unref(pParam_spec3);
277         param_spec_unref(pParam_spec4);
278         param_spec_unref(pParam_spec5);
279         param_spec_unref(pParam_spec6);
280         param_spec_unref(pParam_spec7);
281         param_spec_unref(pParam_spec8);
282         param_spec_unref(pParam_spec9);
283         param_spec_unref(pParam_spec10);
284         param_spec_unref(pParam_spec11);
285
286         return pTask_spec;
287 }
288
289
290 task_spec_t *make_edit_profile_task()
291 {
292         param_spec *pParam_spec1 = param_spec_int("accountId", true, false, false, 0, 0, false, 0, false, 0, 0);
293         param_spec *pParam_spec2 = param_spec_structure("profileName", __string_copy_struct, free,
294                                                                                                                 true, false, false, NULL, false, NULL, false, NULL);
295         param_spec *pParam_spec3 = param_spec_structure("addr", __string_copy_struct, free,
296                                                                                                         true, false, false, NULL, false, NULL, false, NULL);
297         param_spec *pParam_spec4 = param_spec_structure("id", __string_copy_struct, free,
298                                                                                                         true, false, false, NULL, false, NULL, false, NULL);
299         param_spec *pParam_spec5 = param_spec_structure("password", __string_copy_struct, free,
300                                                                                                         true, false, false, NULL, false, NULL, false, NULL);
301         param_spec *pParam_spec6 = param_spec_structure("syncMode", __string_copy_struct, free,
302                                                                                                         true, false, false, NULL, false, NULL, false, NULL);
303         param_spec *pParam_spec7 = param_spec_structure("syncType", __string_copy_struct, free,
304                                                                                                         true, false, false, NULL, false, NULL, false, NULL);
305         param_spec *pParam_spec8 = param_spec_structure("interval", __string_copy_struct, free,
306                                                                                                         true, false, false, NULL, false, NULL, false, NULL);
307         param_spec *pParam_spec9 = param_spec_structure("categories", NULL, __free_sync_categorie_list,
308                                                                                                                 true, false, false, NULL, false, NULL, false, NULL);
309
310         param_spec *pParam_spec10 = param_spec_int("result", false, true, false, 0, 0, false, 0, false, 0, 0);
311
312         param_spec *param_spec_array[10] = {pParam_spec1, pParam_spec2, pParam_spec3, pParam_spec4, pParam_spec5,
313                         pParam_spec6, pParam_spec7, pParam_spec8, pParam_spec9, pParam_spec10};
314
315         task_spec_t *pTask_spec = task_spec_alloc_simple_task_spec("edit_profile",
316                                                                                         edit_profile_task_process, NULL, NULL,
317                                                                                         10, param_spec_array);
318
319         param_spec_unref(pParam_spec1);
320         param_spec_unref(pParam_spec2);
321         param_spec_unref(pParam_spec3);
322         param_spec_unref(pParam_spec4);
323         param_spec_unref(pParam_spec5);
324         param_spec_unref(pParam_spec6);
325         param_spec_unref(pParam_spec7);
326         param_spec_unref(pParam_spec8);
327         param_spec_unref(pParam_spec9);
328         param_spec_unref(pParam_spec10);
329
330         return pTask_spec;
331 }
332
333
334 task_spec_t *make_delete_profile_task()
335 {
336         param_spec *pParam_spec1 = param_spec_structure("profiles", NULL, __free_delete_profile_list,
337                                                                                                                 true, false, false, NULL, false, NULL, false, NULL);
338
339         param_spec *pParam_spec2 = param_spec_int("result", false, true, false, 0, 0, false, 0, false, 0, 0);
340
341         param_spec *param_spec_array[2] = {pParam_spec1, pParam_spec2};
342
343         task_spec_t *pTask_spec = task_spec_alloc_simple_task_spec("delete_profile",
344                                                                                         delete_profile_task_process, NULL, NULL,
345                                                                                         2, param_spec_array);
346
347         param_spec_unref(pParam_spec1);
348         param_spec_unref(pParam_spec2);
349
350         return pTask_spec;
351 }
352
353
354 task_spec_t *make_auto_configure_task()
355 {
356         param_spec *pParam_spec1 = param_spec_structure("profileDirName", __string_copy_struct, free,
357                                                                                                         true, false, false, NULL, false, NULL, false, NULL);
358         param_spec *pParam_spec2 = param_spec_structure("addr", __string_copy_struct, free,
359                                                                                                         true, false, false, NULL, false, NULL, false, NULL);
360         param_spec *pParam_spec3 = param_spec_structure("id", __string_copy_struct, free,
361                                                                                                         true, false, false, NULL, false, NULL, false, NULL);
362         param_spec *pParam_spec4 = param_spec_structure("password", __string_copy_struct, free,
363                                                                                                         true, false, false, NULL, false, NULL, false, NULL);
364
365         param_spec *param_spec_array[4] = {pParam_spec1, pParam_spec2, pParam_spec3, pParam_spec4};
366
367         task_spec_t *pTask_spec = task_spec_alloc_simple_task_spec("auto_configure",
368                                                                                         auto_configure_task_process, NULL, NULL,
369                                                                                         4, param_spec_array);
370
371         param_spec_unref(pParam_spec1);
372         param_spec_unref(pParam_spec2);
373         param_spec_unref(pParam_spec3);
374         param_spec_unref(pParam_spec4);
375
376         return pTask_spec;
377 }
378
379
380 task_spec_t *make_sync_status_task()
381 {
382         task_spec_t *pTask_spec = task_spec_alloc_simple_task_spec("sync_status",
383                                                                                         sync_status_task_process, NULL, NULL,
384                                                                                         0, NULL);
385
386         return pTask_spec;
387 }
388
389 task_spec_t *make_get_profile_name_task()
390 {
391         param_spec *pParam_spec1 = param_spec_int("accountId", true, false, false, 0, 0, false, 0, false, 0, 0);
392         param_spec *pParam_spec2 = param_spec_int("result", false, true, false, 0, 0, false, 0, false, 0, 0);
393         param_spec *pParam_spec3 = param_spec_structure("profileName", __string_copy_struct, free,
394                                                                                                                 false, true, false, NULL, false, NULL, false, NULL);
395         param_spec *param_spec_array[3] = {pParam_spec1, pParam_spec2, pParam_spec3};
396
397         task_spec_t *pTask_spec = task_spec_alloc_simple_task_spec("get_profile_name",
398                                                                                         get_profile_name_task_process, NULL, NULL,
399                                                                                         3, param_spec_array);
400
401         param_spec_unref(pParam_spec1);
402         param_spec_unref(pParam_spec2);
403         param_spec_unref(pParam_spec3);
404
405         return pTask_spec;
406 }
407
408 task_spec_t *make_get_profile_server_info_task()
409 {
410         param_spec *pParam_spec1 = param_spec_int("accountId", true, false, false, 0, 0, false, 0, false, 0, 0);
411         param_spec *pParam_spec2 = param_spec_int("result", false, true, false, 0, 0, false, 0, false, 0, 0);
412         param_spec *pParam_spec3 = param_spec_structure("addr", __string_copy_struct, free,
413                                                                                                                         false, true, false, NULL, false, NULL, false, NULL);
414         param_spec *pParam_spec4 = param_spec_structure("id", __string_copy_struct, free,
415                                                                                                                         false, true, false, NULL, false, NULL, false, NULL);
416         param_spec *pParam_spec5 = param_spec_structure("password", __string_copy_struct, free,
417                                                                                                                         false, true, false, NULL, false, NULL, false, NULL);
418
419         param_spec *param_spec_array[5] = {pParam_spec1, pParam_spec2, pParam_spec3, pParam_spec4, pParam_spec5};
420
421         task_spec_t *pTask_spec = task_spec_alloc_simple_task_spec("get_profile_server_info",
422                                                                                         get_profile_server_info_task_process, NULL, NULL,
423                                                                                         5, param_spec_array);
424
425         param_spec_unref(pParam_spec1);
426         param_spec_unref(pParam_spec2);
427         param_spec_unref(pParam_spec3);
428         param_spec_unref(pParam_spec4);
429         param_spec_unref(pParam_spec5);
430
431         return pTask_spec;
432 }
433
434 task_spec_t *make_get_profile_sync_mode_task()
435 {
436         param_spec *pParam_spec1 = param_spec_int("accountId", true, false, false, 0, 0, false, 0, false, 0, 0);
437         param_spec *pParam_spec2 = param_spec_int("result", false, true, false, 0, 0, false, 0, false, 0, 0);
438         param_spec *pParam_spec3 = param_spec_structure("syncMode", __string_copy_struct, free,
439                                                                                                                                 false, true, false, NULL, false, NULL, false, NULL);
440         param_spec *pParam_spec4 = param_spec_structure("syncType", __string_copy_struct, free,
441                                                                                                                                 false, true, false, NULL, false, NULL, false, NULL);
442         param_spec *pParam_spec5 = param_spec_structure("interval", __string_copy_struct, free,
443                                                                                                                                 false, true, false, NULL, false, NULL, false, NULL);
444
445         param_spec *param_spec_array[5] = {pParam_spec1, pParam_spec2, pParam_spec3, pParam_spec4, pParam_spec5};
446
447         task_spec_t *pTask_spec = task_spec_alloc_simple_task_spec("get_profile_sync_mode",
448                                                                                         get_profile_sync_mode_task_process, NULL, NULL,
449                                                                                         5, param_spec_array);
450
451         param_spec_unref(pParam_spec1);
452         param_spec_unref(pParam_spec2);
453         param_spec_unref(pParam_spec3);
454         param_spec_unref(pParam_spec4);
455         param_spec_unref(pParam_spec5);
456
457         return pTask_spec;
458 }
459
460 task_spec_t *make_get_profile_sync_category_task()
461 {
462         param_spec *pParam_spec1 = param_spec_int("accountId", true, false, false, 0, 0, false, 0, false, 0, 0);
463         param_spec *pParam_spec2 = param_spec_int("contentType", true, false, false, 0, 0, false, 0, false, 0, 0);
464
465         param_spec *pParam_spec3 = param_spec_int("result", false, true, false, 0, 0, false, 0, false, 0, 0);
466         param_spec *pParam_spec4 = param_spec_int("enabled", false, true, false, 0, 0, false, 0, false, 0, 0);
467         param_spec *pParam_spec5 = param_spec_structure("srcURI", __string_copy_struct, free,
468                                                                                                                                         false, true, false, NULL, false, NULL, false, NULL);
469         param_spec *pParam_spec6 = param_spec_structure("tgtURI", __string_copy_struct, free,
470                                                                                                                                         false, true, false, NULL, false, NULL, false, NULL);
471         param_spec *pParam_spec7 = param_spec_structure("id", __string_copy_struct, free,
472                                                                                                                                         false, true, false, NULL, false, NULL, false, NULL);
473         param_spec *pParam_spec8 = param_spec_structure("password", __string_copy_struct, free,
474                                                                                                                                         false, true, false, NULL, false, NULL, false, NULL);
475
476         param_spec *param_spec_array[8] = {pParam_spec1, pParam_spec2, pParam_spec3, pParam_spec4,
477                         pParam_spec5, pParam_spec6, pParam_spec7, pParam_spec8};
478
479         task_spec_t *pTask_spec = task_spec_alloc_simple_task_spec("get_profile_sync_category",
480                                                                                         get_profile_sync_category_task_process, NULL, NULL,
481                                                                                         8, param_spec_array);
482
483         param_spec_unref(pParam_spec1);
484         param_spec_unref(pParam_spec2);
485         param_spec_unref(pParam_spec3);
486         param_spec_unref(pParam_spec4);
487         param_spec_unref(pParam_spec5);
488         param_spec_unref(pParam_spec6);
489         param_spec_unref(pParam_spec7);
490         param_spec_unref(pParam_spec8);
491
492         return pTask_spec;
493 }
494
495 task_spec_t *make_get_profile_last_session_task()
496 {
497         param_spec *pParam_spec1 = param_spec_int("accountId", true, false, false, 0, 0, false, 0, false, 0, 0);
498
499         param_spec *pParam_spec2 = param_spec_int("result", false, true, false, 0, 0, false, 0, false, 0, 0);
500         param_spec *pParam_spec3 = param_spec_int("lastSessionStatus", false, true, false, 0, 0, false, 0, false, 0, 0);
501         param_spec *pParam_spec4 = param_spec_int("lastSessionTime", false, true, false, 0, 0, false, 0, false, 0, 0);
502         param_spec *param_spec_array[4] = {pParam_spec1, pParam_spec2, pParam_spec3, pParam_spec4 };
503
504         task_spec_t *pTask_spec = task_spec_alloc_simple_task_spec("get_profile_last_session",
505                                                                                         get_profile_last_session_task_process, NULL, NULL,
506                                                                                         4, param_spec_array);
507
508         param_spec_unref(pParam_spec1);
509         param_spec_unref(pParam_spec2);
510         param_spec_unref(pParam_spec3);
511         param_spec_unref(pParam_spec4);
512
513         return pTask_spec;
514 }
515
516 task_spec_t *make_get_profile_statistics_task()
517 {
518         param_spec *pParam_spec1 = param_spec_int("accountId", true, false, false, 0, 0, false, 0, false, 0, 0);
519         param_spec *pParam_spec2 = param_spec_int("contentType", true, false, false, 0, 0, false, 0, false, 0, 0);
520
521         param_spec *pParam_spec3 = param_spec_int("result", false, true, false, 0, 0, false, 0, false, 0, 0);
522         param_spec *pParam_spec4 = param_spec_structure("dbSynced", __string_copy_struct, free,
523                                                                                                                                                 false, true, false, NULL, false, NULL, false, NULL);
524         param_spec *pParam_spec5 = param_spec_int("lastSessionTime", false, true, false, 0, 0, false, 0, false, 0, 0);
525         param_spec *pParam_spec6 = param_spec_int("server2Client_Total", false, true, false, 0, 0, false, 0, false, 0, 0);
526         param_spec *pParam_spec7 = param_spec_int("server2Client_NrOfAdd", false, true, false, 0, 0, false, 0, false, 0, 0);
527         param_spec *pParam_spec8 = param_spec_int("server2Client_NrOfDelete", false, true, false, 0, 0, false, 0, false, 0, 0);
528         param_spec *pParam_spec9 = param_spec_int("server2Client_NrOfReplace", false, true, false, 0, 0, false, 0, false, 0, 0);
529         param_spec *pParam_spec10 = param_spec_int("client2Server_Total", false, true, false, 0, 0, false, 0, false, 0, 0);
530         param_spec *pParam_spec11 = param_spec_int("client2Server_NrOfAdd", false, true, false, 0, 0, false, 0, false, 0, 0);
531         param_spec *pParam_spec12 = param_spec_int("client2Server_NrOfDelete", false, true, false, 0, 0, false, 0, false, 0, 0);
532         param_spec *pParam_spec13 = param_spec_int("client2Server_NrOfReplace", false, true, false, 0, 0, false, 0, false, 0, 0);
533
534         param_spec *param_spec_array[13] = {pParam_spec1, pParam_spec2, pParam_spec3,
535                         pParam_spec4, pParam_spec5, pParam_spec6, pParam_spec7, pParam_spec8,
536                         pParam_spec9, pParam_spec10, pParam_spec11, pParam_spec12, pParam_spec13};
537
538         task_spec_t *pTask_spec = task_spec_alloc_simple_task_spec("get_profile_statistics",
539                                                                                         get_profile_statistics_task_process, NULL, NULL,
540                                                                                         13, param_spec_array);
541
542         param_spec_unref(pParam_spec1);
543         param_spec_unref(pParam_spec2);
544         param_spec_unref(pParam_spec3);
545         param_spec_unref(pParam_spec4);
546         param_spec_unref(pParam_spec5);
547         param_spec_unref(pParam_spec6);
548         param_spec_unref(pParam_spec7);
549         param_spec_unref(pParam_spec8);
550         param_spec_unref(pParam_spec9);
551         param_spec_unref(pParam_spec10);
552         param_spec_unref(pParam_spec11);
553         param_spec_unref(pParam_spec12);
554         param_spec_unref(pParam_spec13);
555
556         return pTask_spec;
557 }
558
559 task_spec_t *make_reset_synchronizing_profiles_task()
560 {
561         task_spec_t *pTask_spec = task_spec_alloc_simple_task_spec("reset_synchronizing_profiles",
562                                                                                         reset_synchronizing_profiles_task_process, NULL, NULL,
563                                                                                         0, NULL);
564
565         return pTask_spec;
566 }
567
568 task_spec_t *make_add_profile_cp_task()
569 {
570         param_spec *pParam_spec1 = param_spec_structure("profileName", __string_copy_struct, free,
571                                                                                                         true, false, false, NULL, false, NULL, false, NULL);
572         param_spec *pParam_spec2 = param_spec_structure("addr", __string_copy_struct, free,
573                                                                                                         true, false, false, NULL, false, NULL, false, NULL);
574         param_spec *pParam_spec3 = param_spec_structure("id", __string_copy_struct, free,
575                                                                                                         true, false, false, NULL, false, NULL, false, NULL);
576         param_spec *pParam_spec4 = param_spec_structure("password", __string_copy_struct, free,
577                                                                                                         true, false, false, NULL, false, NULL, false, NULL);
578         param_spec *pParam_spec5 = param_spec_structure("categories", NULL, __free_resource_cp_list,
579                                                                                                                 true, false, false, NULL, false, NULL, false, NULL);
580
581         param_spec *pParam_spec6 = param_spec_int("result", false, true, false, 0, 0, false, 0, false, 0, 0);
582         param_spec *pParam_spec7 = param_spec_int("accountId", false, true, false, 0, 0, false, 0, false, 0, 0);
583
584         param_spec *param_spec_array[7] = {pParam_spec1, pParam_spec2, pParam_spec3, pParam_spec4, pParam_spec5,
585                         pParam_spec6, pParam_spec7};
586
587         task_spec_t *pTask_spec = task_spec_alloc_simple_task_spec("add_profile_cp",
588                                                                                         add_profile_cp_task_process, NULL, NULL,
589                                                                                         7, param_spec_array);
590
591         param_spec_unref(pParam_spec1);
592         param_spec_unref(pParam_spec2);
593         param_spec_unref(pParam_spec3);
594         param_spec_unref(pParam_spec4);
595         param_spec_unref(pParam_spec5);
596         param_spec_unref(pParam_spec6);
597         param_spec_unref(pParam_spec7);
598
599         return pTask_spec;
600 }
601
602 task_spec_t *make_refresh_from_service_task()
603 {
604         param_spec *pParam_spec1 = param_spec_int("accountId", true, false, false, 0, 0, false, 0, false, 0, 0);
605
606         param_spec *param_spec_array[1] = {pParam_spec1};
607
608         task_spec_t *pTask_spec = task_spec_alloc_simple_task_spec("refresh_from_service",
609                                                                                         refresh_from_service_task_process, NULL, NULL,
610                                                                                         1, param_spec_array);
611
612         param_spec_unref(pParam_spec1);
613
614         return pTask_spec;
615 }
616
617
618 /*FIXME cancel request to NA */
619 /*task_spec_t *make_cancel_sync_request()
620 {
621         task_spec_t *pTask_spec = task_spec_alloc_simple_task_spec("cancel_sync_request",
622                                                                                         cancel_sync_request_task_process, NULL, NULL,
623                                                                                         0, NULL);
624
625         return pTask_spec;
626 }*/
627
628 /*TODO have to be removed after removing vconf*/
629 task_error_t add_account_task_process(unsigned int param_cnt, param_t **param_array)
630 {
631         FW_LOGV("start");
632         task_error_t err = TASK_ERROR_RUN_SUCCESS;
633
634         /* step 1 : process add account */
635         char *profile = NULL;
636         int accountId;
637         param_value_get_value(&(param_array[0]->param_value), EC_VALUE_TYPE_STRUCT, &profile);
638
639         int result = update_all_config(profile, true, &accountId);
640         if (result == 0)
641                 err = TASK_ERROR_RUN_FAILED;
642
643         param_value_set_value(&(param_array[1]->param_value), EC_VALUE_TYPE_INT, &result);
644
645         /*step 2 : start refresh_from_service for added account */
646         void *in_param_value_array[1] = {&accountId};
647         int in_param_index_array[1] = {0};
648         ECValueType in_param_value_type_array[1] = {EC_VALUE_TYPE_INT};
649         unsigned int request_msg_id = 0;
650         engine_controller_async_request_task(EC_MSG_TYPE_SYNC_TASK_REFRESH_FROM_SERVICE, 0,
651                                                                                                                                 1, in_param_index_array, in_param_value_type_array, in_param_value_array,
652                                                                                                                                 NULL, NULL, (int *)&request_msg_id);
653
654         FW_LOGV("end");
655         return err;
656 }
657
658 /*TODO have to be removed after removing vconf*/
659 task_error_t edit_account_task_process(unsigned int param_cnt, param_t **param_array)
660 {
661         FW_LOGV("start");
662         task_error_t err = TASK_ERROR_RUN_SUCCESS;
663
664         char *profile = NULL;
665         int accountId;
666         param_value_get_value(&(param_array[0]->param_value), EC_VALUE_TYPE_STRUCT, &profile);
667
668         int result = update_all_config(profile, false, &accountId);
669         if (result == 0)
670                 err = TASK_ERROR_RUN_FAILED;
671
672         param_value_set_value(&(param_array[1]->param_value), EC_VALUE_TYPE_INT, &result);
673
674         FW_LOGV("end");
675         return err;
676 }
677
678 /*TODO have to be removed after removing vconf*/
679 task_error_t autoconfigure_task_process(unsigned int param_cnt, param_t **param_array)
680 {
681         FW_LOGV("start");
682         task_error_t err = TASK_ERROR_RUN_SUCCESS;
683
684         char *profile = NULL;
685         param_value_get_value(&(param_array[0]->param_value), EC_VALUE_TYPE_STRUCT, &profile);
686
687         bool result = autoconfigure_from_vconf(profile);
688         if (result == false)
689                 err = TASK_ERROR_RUN_FAILED;
690
691         FW_LOGV("end");
692         return err;
693 }
694
695 task_error_t synchronize_task_process(unsigned int param_cnt, param_t **param_array)
696 {
697         FW_LOGV("start");
698         task_error_t err = TASK_ERROR_RUN_SUCCESS;
699
700         int accountId = 0;
701         param_value_get_value(&(param_array[0]->param_value), EC_VALUE_TYPE_INT, &accountId);
702
703         if (accountId < 0) {
704                 err = TASK_ERROR_RUN_FAILED;
705                 return err;
706         }
707
708         char *syncMode = NULL;
709         param_value_get_value(&(param_array[1]->param_value), EC_VALUE_TYPE_STRUCT, &syncMode);
710
711         SanPackage *pSanPackage = NULL;
712         param_value_get_value(&(param_array[2]->param_value), EC_VALUE_TYPE_STRUCT, &pSanPackage);
713
714         FW_LOGV("accountId = %d",  accountId);
715         FW_LOGV("syncMode = %s", syncMode);
716
717         bool result = synchronize(accountId, syncMode, pSanPackage);
718         if (result == false)
719                 err = TASK_ERROR_RUN_FAILED;
720
721         FW_LOGV("end");
722
723         return err;
724 }
725
726 task_error_t add_profile_task_process(unsigned int param_cnt, param_t **param_array)
727 {
728         FW_LOGV("start");
729         task_error_t err = TASK_ERROR_RUN_SUCCESS;
730
731         char *profileDirName = NULL;
732         char *profileName = NULL;
733         char *addr = NULL;
734         char *id = NULL;
735         char *password = NULL;
736         char *syncMode = NULL;
737         char *syncType = NULL;
738         char *interval = NULL;
739         GList *categories = NULL;
740         int accountId;
741
742         bool res;
743         int result;
744
745         param_value_get_value(&(param_array[0]->param_value), EC_VALUE_TYPE_STRUCT, &profileDirName);
746         param_value_get_value(&(param_array[1]->param_value), EC_VALUE_TYPE_STRUCT, &profileName);
747         param_value_get_value(&(param_array[2]->param_value), EC_VALUE_TYPE_STRUCT, &addr);
748         param_value_get_value(&(param_array[3]->param_value), EC_VALUE_TYPE_STRUCT, &id);
749         param_value_get_value(&(param_array[4]->param_value), EC_VALUE_TYPE_STRUCT, &password);
750         param_value_get_value(&(param_array[5]->param_value), EC_VALUE_TYPE_STRUCT, &syncMode);
751         param_value_get_value(&(param_array[6]->param_value), EC_VALUE_TYPE_STRUCT, &syncType);
752         param_value_get_value(&(param_array[7]->param_value), EC_VALUE_TYPE_STRUCT, &interval);
753         param_value_get_value(&(param_array[8]->param_value), EC_VALUE_TYPE_STRUCT, &categories);
754
755         res =  add_profile(profileDirName, profileName, addr, id, password, syncMode, syncType, interval, categories, &accountId);
756         if (res == false) {
757                 err = TASK_ERROR_RUN_FAILED;
758                 result = 0;
759         } else
760                 result = 1;
761
762         param_value_set_value(&(param_array[9]->param_value), EC_VALUE_TYPE_INT, &result);
763         param_value_set_value(&(param_array[10]->param_value), EC_VALUE_TYPE_INT, &accountId);
764
765         FW_LOGV("end");
766         return err;
767 }
768
769 task_error_t edit_profile_task_process(unsigned int param_cnt, param_t **param_array)
770 {
771         FW_LOGV("start");
772         task_error_t err = TASK_ERROR_RUN_SUCCESS;
773
774         int accountId;
775         char *profileName = NULL;
776         char *addr = NULL;
777         char *id = NULL;
778         char *password = NULL;
779         char *syncMode = NULL;
780         char *syncType = NULL;
781         char *interval = NULL;
782         GList *categories = NULL;
783
784         bool res;
785         int result;
786
787         param_value_get_value(&(param_array[0]->param_value), EC_VALUE_TYPE_INT, &accountId);
788         param_value_get_value(&(param_array[1]->param_value), EC_VALUE_TYPE_STRUCT, &profileName);
789         param_value_get_value(&(param_array[2]->param_value), EC_VALUE_TYPE_STRUCT, &addr);
790         param_value_get_value(&(param_array[3]->param_value), EC_VALUE_TYPE_STRUCT, &id);
791         param_value_get_value(&(param_array[4]->param_value), EC_VALUE_TYPE_STRUCT, &password);
792         param_value_get_value(&(param_array[5]->param_value), EC_VALUE_TYPE_STRUCT, &syncMode);
793         param_value_get_value(&(param_array[6]->param_value), EC_VALUE_TYPE_STRUCT, &syncType);
794         param_value_get_value(&(param_array[7]->param_value), EC_VALUE_TYPE_STRUCT, &interval);
795         param_value_get_value(&(param_array[8]->param_value), EC_VALUE_TYPE_STRUCT, &categories);
796
797         res =  edit_profile(accountId, profileName, addr, id, password, syncMode, syncType, interval, categories);
798         if (res == false) {
799                 err = TASK_ERROR_RUN_FAILED;
800                 result = 0;
801         } else
802                 result = 1;
803
804         param_value_set_value(&(param_array[9]->param_value), EC_VALUE_TYPE_INT, &result);
805
806         FW_LOGV("end");
807         return err;
808 }
809
810 task_error_t delete_profile_task_process(unsigned int param_cnt, param_t **param_array)
811 {
812         FW_LOGV("start");
813         bool res;
814         int result;
815         task_error_t err = TASK_ERROR_RUN_SUCCESS;
816
817         GList *profiles = NULL;
818         param_value_get_value(&(param_array[0]->param_value), EC_VALUE_TYPE_STRUCT, &profiles);
819
820         res = delete_profiles(profiles);
821         if (res == 0) {
822                 err = TASK_ERROR_RUN_FAILED;
823                 result = 0;
824         } else
825                 result = 1;
826
827         param_value_set_value(&(param_array[1]->param_value), EC_VALUE_TYPE_INT, &result);
828
829         FW_LOGV("end");
830         return err;
831
832 }
833
834 task_error_t auto_configure_task_process(unsigned int param_cnt, param_t **param_array)
835 {
836         FW_LOGV("start");
837         task_error_t err = TASK_ERROR_RUN_SUCCESS;
838
839         char *profildDirName = NULL;
840         char *addr = NULL;
841         char *id = NULL;
842         char *password = NULL;
843
844         param_value_get_value(&(param_array[0]->param_value), EC_VALUE_TYPE_STRUCT, &profildDirName);
845         param_value_get_value(&(param_array[1]->param_value), EC_VALUE_TYPE_STRUCT, &addr);
846         param_value_get_value(&(param_array[2]->param_value), EC_VALUE_TYPE_STRUCT, &id);
847         param_value_get_value(&(param_array[3]->param_value), EC_VALUE_TYPE_STRUCT, &password);
848
849         bool result = autoconfigure(profildDirName, addr, id, password);
850         if (result == false)
851                 err = TASK_ERROR_RUN_FAILED;
852
853         FW_LOGV("end");
854         return err;
855 }
856
857 task_error_t sync_status_task_process(unsigned int param_cnt, param_t **param_array)
858 {
859         FW_LOGV("start");
860         task_error_t err = TASK_ERROR_RUN_SUCCESS;
861
862         char *profileDirName = NULL;
863
864         get_synchronising_profile(&profileDirName);
865
866         FW_LOGV("profileDirName = %s", profileDirName);
867         send_noti_sync_status(profileDirName);
868
869         FW_LOGV("end");
870         return err;
871 }
872
873 task_error_t get_profile_name_task_process(unsigned int param_cnt, param_t **param_array)
874 {
875         FW_LOGV("start");
876         task_error_t err = TASK_ERROR_RUN_SUCCESS;
877
878         int accountId = 0;
879         char *profileName = NULL;
880         int result;
881         bool res;
882
883         param_value_get_value(&(param_array[0]->param_value), EC_VALUE_TYPE_INT, &accountId);
884         if (accountId < 0) {
885                 err = TASK_ERROR_RUN_FAILED;
886                 return err;
887         }
888
889         res = get_profile_name(accountId, &profileName);
890         if (res == false) {
891                 err = TASK_ERROR_RUN_FAILED;
892                 result = 0;
893         } else
894                 result = 1;
895
896         param_value_set_value(&(param_array[1]->param_value), EC_VALUE_TYPE_INT, &result);
897         param_value_set_value(&(param_array[2]->param_value), EC_VALUE_TYPE_STRUCT, &profileName);
898
899         FW_LOGV("end");
900
901         return err;
902 }
903
904 task_error_t get_profile_server_info_task_process(unsigned int param_cnt, param_t **param_array)
905 {
906         FW_LOGV("start");
907         task_error_t err = TASK_ERROR_RUN_SUCCESS;
908
909         int accountId = 0;
910         char *addr = NULL;
911         char *id = NULL;
912         char *password = NULL;
913         bool res;
914         int result;
915
916         param_value_get_value(&(param_array[0]->param_value), EC_VALUE_TYPE_INT, &accountId);
917         if (accountId < 0) {
918                 err = TASK_ERROR_RUN_FAILED;
919                 return err;
920         }
921
922         res = get_profile_server_info(accountId, &addr, &id, &password);
923         if (res == false) {
924                 err = TASK_ERROR_RUN_FAILED;
925                 result = 0;
926         } else
927                 result = 1;
928
929         param_value_set_value(&(param_array[1]->param_value), EC_VALUE_TYPE_INT, &result);
930         param_value_set_value(&(param_array[2]->param_value), EC_VALUE_TYPE_STRUCT, &addr);
931         param_value_set_value(&(param_array[3]->param_value), EC_VALUE_TYPE_STRUCT, &id);
932         param_value_set_value(&(param_array[4]->param_value), EC_VALUE_TYPE_STRUCT, &password);
933
934         FW_LOGV("end");
935
936         return err;
937 }
938
939 task_error_t get_profile_sync_mode_task_process(unsigned int param_cnt, param_t **param_array)
940 {
941         FW_LOGV("start");
942         task_error_t err = TASK_ERROR_RUN_SUCCESS;
943
944         int accountId = 0;
945         char *syncMode = NULL;
946         char *syncType = NULL;
947         char *interval = NULL;
948         bool res;
949         int result;
950
951         param_value_get_value(&(param_array[0]->param_value), EC_VALUE_TYPE_INT, &accountId);
952         if (accountId < 0) {
953                 err = TASK_ERROR_RUN_FAILED;
954                 return err;
955         }
956
957         res =  get_profile_sync_mode(accountId, &syncMode, &syncType, &interval);
958         if (res == false) {
959                 err = TASK_ERROR_RUN_FAILED;
960                 result = 0;
961         } else
962                 result = 1;
963
964         param_value_set_value(&(param_array[1]->param_value), EC_VALUE_TYPE_INT, &result);
965         param_value_set_value(&(param_array[2]->param_value), EC_VALUE_TYPE_STRUCT, &syncMode);
966         param_value_set_value(&(param_array[3]->param_value), EC_VALUE_TYPE_STRUCT, &syncType);
967         param_value_set_value(&(param_array[4]->param_value), EC_VALUE_TYPE_STRUCT, &interval);
968
969         FW_LOGV("end");
970
971         return err;
972 }
973
974 task_error_t get_profile_sync_category_task_process(unsigned int param_cnt, param_t **param_array)
975 {
976         FW_LOGV("start");
977         task_error_t err = TASK_ERROR_RUN_SUCCESS;
978
979         int accountId = 0;
980         int contentType;
981
982         int enabled;
983         char *srcURI = NULL;
984         char *tgtURI = NULL;
985         char *id = NULL;
986         char *password = NULL;
987         bool res;
988         int result;
989
990         param_value_get_value(&(param_array[0]->param_value), EC_VALUE_TYPE_INT, &accountId);
991         if (accountId < 0) {
992                 err = TASK_ERROR_RUN_FAILED;
993                 return err;
994         }
995
996         param_value_get_value(&(param_array[1]->param_value), EC_VALUE_TYPE_INT, &contentType);
997
998
999         res = get_profile_sync_category(accountId, contentType, &enabled, &srcURI, &tgtURI, &id, &password);
1000         if (res == false) {
1001                 err = TASK_ERROR_RUN_FAILED;
1002                 result = 0;
1003         } else
1004                 result = 1;
1005
1006         param_value_set_value(&(param_array[2]->param_value), EC_VALUE_TYPE_INT, &result);
1007         param_value_set_value(&(param_array[3]->param_value), EC_VALUE_TYPE_INT, &enabled);
1008         param_value_set_value(&(param_array[4]->param_value), EC_VALUE_TYPE_STRUCT, &srcURI);
1009         param_value_set_value(&(param_array[5]->param_value), EC_VALUE_TYPE_STRUCT, &tgtURI);
1010         param_value_set_value(&(param_array[6]->param_value), EC_VALUE_TYPE_STRUCT, &id);
1011         param_value_set_value(&(param_array[7]->param_value), EC_VALUE_TYPE_STRUCT, &password);
1012
1013         FW_LOGV("end");
1014
1015         return err;
1016 }
1017
1018 task_error_t get_profile_last_session_task_process(unsigned int param_cnt, param_t **param_array)
1019 {
1020         FW_LOGV("start");
1021         task_error_t err = TASK_ERROR_RUN_SUCCESS;
1022
1023         int accountId = 0;
1024         int lastSessionStatus;
1025         int lastSessionTime;
1026         bool res;
1027         int result;
1028
1029         param_value_get_value(&(param_array[0]->param_value), EC_VALUE_TYPE_INT, &accountId);
1030         if (accountId < 0) {
1031                 err = TASK_ERROR_RUN_FAILED;
1032                 return err;
1033         }
1034
1035         res = get_last_session_info(accountId, &lastSessionStatus, &lastSessionTime);
1036         if (res == false) {
1037                 err = TASK_ERROR_RUN_FAILED;
1038                 result = 0;
1039         } else
1040                 result = 1;
1041
1042         param_value_set_value(&(param_array[1]->param_value), EC_VALUE_TYPE_INT, &result);
1043         param_value_set_value(&(param_array[2]->param_value), EC_VALUE_TYPE_INT, &lastSessionStatus);
1044         param_value_set_value(&(param_array[3]->param_value), EC_VALUE_TYPE_INT, &lastSessionTime);
1045
1046         FW_LOGV("end");
1047
1048         return err;
1049 }
1050
1051 task_error_t get_profile_statistics_task_process(unsigned int param_cnt, param_t **param_array)
1052 {
1053         FW_LOGV("start");
1054         task_error_t err = TASK_ERROR_RUN_SUCCESS;
1055
1056         int accountId = 0;
1057         int contentType;
1058
1059         char *dbSynced = NULL;
1060         int lastSessionTime;
1061         int server2Client_Total;
1062         int server2Client_NrOfAdd;
1063         int server2Client_NrOfDelete;
1064         int server2Client_NrOfReplace;
1065         int client2Server_Total;
1066         int client2Server_NrOfAdd;
1067         int client2Server_NrOfDelete;
1068         int client2Server_NrOfReplace;
1069
1070         bool res;
1071         int result;
1072
1073         param_value_get_value(&(param_array[0]->param_value), EC_VALUE_TYPE_INT, &accountId);
1074         if (accountId < 0) {
1075                 err = TASK_ERROR_RUN_FAILED;
1076                 return err;
1077         }
1078
1079         param_value_get_value(&(param_array[1]->param_value), EC_VALUE_TYPE_INT, &contentType);
1080
1081
1082         res =  get_profile_statistics(accountId, contentType, &dbSynced, &lastSessionTime,
1083                         &server2Client_Total, &server2Client_NrOfAdd, &server2Client_NrOfDelete, &server2Client_NrOfReplace,
1084                         &client2Server_Total, &client2Server_NrOfAdd, &client2Server_NrOfDelete, &client2Server_NrOfReplace);
1085
1086         if (res == false) {
1087                 err = TASK_ERROR_RUN_FAILED;
1088                 result = 0;
1089         } else
1090                 result = 1;
1091
1092         param_value_set_value(&(param_array[2]->param_value), EC_VALUE_TYPE_INT, &result);
1093         param_value_set_value(&(param_array[3]->param_value), EC_VALUE_TYPE_STRUCT, &dbSynced);
1094         param_value_set_value(&(param_array[4]->param_value), EC_VALUE_TYPE_INT, &lastSessionTime);
1095         param_value_set_value(&(param_array[5]->param_value), EC_VALUE_TYPE_INT, &server2Client_Total);
1096         param_value_set_value(&(param_array[6]->param_value), EC_VALUE_TYPE_INT, &server2Client_NrOfAdd);
1097         param_value_set_value(&(param_array[7]->param_value), EC_VALUE_TYPE_INT, &server2Client_NrOfDelete);
1098         param_value_set_value(&(param_array[8]->param_value), EC_VALUE_TYPE_INT, &server2Client_NrOfReplace);
1099         param_value_set_value(&(param_array[9]->param_value), EC_VALUE_TYPE_INT, &client2Server_Total);
1100         param_value_set_value(&(param_array[10]->param_value), EC_VALUE_TYPE_INT, &client2Server_NrOfAdd);
1101         param_value_set_value(&(param_array[11]->param_value), EC_VALUE_TYPE_INT, &client2Server_NrOfDelete);
1102         param_value_set_value(&(param_array[12]->param_value), EC_VALUE_TYPE_INT, &client2Server_NrOfReplace);
1103
1104         FW_LOGV("end");
1105
1106         return err;
1107 }
1108
1109 task_error_t reset_synchronizing_profiles_task_process(unsigned int param_cnt, param_t **param_array)
1110 {
1111         FW_LOGV("start");
1112         task_error_t err = TASK_ERROR_RUN_SUCCESS;
1113
1114         reset_synchronizing_profiles();
1115
1116         FW_LOGV("end");
1117         return err;
1118 }
1119
1120 /*FIXME cancel request to NA */
1121 /*task_error_t cancel_sync_request_task_process(unsigned int param_cnt, param_t **param_array)
1122 {
1123         FW_LOGV("start");
1124         task_error_t err = TASK_ERROR_RUN_SUCCESS;
1125
1126         cancel_sync_request();
1127
1128         FW_LOGV("end");
1129         return err;
1130 }*/
1131
1132 task_error_t add_profile_cp_task_process(unsigned int param_cnt, param_t **param_array)
1133 {
1134         FW_LOGV("start");
1135         task_error_t err = TASK_ERROR_RUN_SUCCESS;
1136
1137         char *profileName = NULL;
1138         char *addr = NULL;
1139         char *id = NULL;
1140         char *password = NULL;
1141         GList *categories = NULL;
1142         int accountId;
1143
1144         bool res;
1145         int result;
1146
1147         param_value_get_value(&(param_array[0]->param_value), EC_VALUE_TYPE_STRUCT, &profileName);
1148         param_value_get_value(&(param_array[1]->param_value), EC_VALUE_TYPE_STRUCT, &addr);
1149         param_value_get_value(&(param_array[2]->param_value), EC_VALUE_TYPE_STRUCT, &id);
1150         param_value_get_value(&(param_array[3]->param_value), EC_VALUE_TYPE_STRUCT, &password);
1151         param_value_get_value(&(param_array[4]->param_value), EC_VALUE_TYPE_STRUCT, &categories);
1152
1153         res =  add_profile_cp(profileName, addr, id, password, categories, &accountId);
1154         if (res == false) {
1155                 err = TASK_ERROR_RUN_FAILED;
1156                 result = 0;
1157         } else
1158                 result = 1;
1159
1160         param_value_set_value(&(param_array[5]->param_value), EC_VALUE_TYPE_INT, &result);
1161         param_value_set_value(&(param_array[6]->param_value), EC_VALUE_TYPE_INT, &accountId);
1162
1163         FW_LOGV("end");
1164         return err;
1165 }
1166
1167
1168 task_error_t refresh_from_service_task_process(unsigned int param_cnt, param_t **param_array)
1169 {
1170         FW_LOGV("start");
1171         task_error_t err = TASK_ERROR_RUN_SUCCESS;
1172
1173         int accountId;
1174         bool res;
1175
1176         param_value_get_value(&(param_array[0]->param_value), EC_VALUE_TYPE_INT, &accountId);
1177
1178         res =  refresh_from_service_all(accountId);
1179         if (res == false)
1180                 err = TASK_ERROR_RUN_FAILED;
1181
1182         FW_LOGV("end");
1183         return err;
1184 }
1185
1186 void insert_request_msg_info(int sync_type, unsigned int request_id)
1187 {
1188         sync_request_id_list = g_list_prepend(sync_request_id_list, __create_request_msg_info(sync_type, request_id));
1189 }
1190
1191 void delete_request_msg_info(unsigned int request_id)
1192 {
1193         GList *iter = NULL;
1194         request_msg_info_t *pMsg_info = NULL;
1195
1196         for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
1197                 pMsg_info = iter->data;
1198
1199                 if (pMsg_info->request_id == request_id) {
1200                         sync_request_id_list = g_list_remove_link(sync_request_id_list, iter);
1201                         break;
1202                 }
1203         }
1204
1205         if (iter != NULL) {
1206                 __request_msg_info_free(iter->data);
1207                 g_list_free_1(iter);
1208         }
1209 }
1210
1211 bool get_synchronizing_request_id(unsigned int *pRequest_id)
1212 {
1213         bool success = false;
1214         request_msg_info_t *pMsg_info = NULL;
1215         GList *iter = NULL;
1216
1217         for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
1218                 pMsg_info = iter->data;
1219
1220                 if (pMsg_info->sync_type == SYNC_MODE_MANUAL || pMsg_info->sync_type == SYNC_MODE_PERIODIC  || pMsg_info->sync_type == SYNC_MODE_SAN) {
1221                         success = true;
1222                         *pRequest_id = pMsg_info->request_id;
1223
1224                         __request_msg_info_free(pMsg_info);
1225                         sync_request_id_list = g_list_delete_link(sync_request_id_list, iter);
1226
1227                         break;
1228                 }
1229         }
1230
1231         return success;
1232 }
1233
1234 bool get_manual_sync_request_id(unsigned int *pRequest_id)
1235 {
1236         bool success = false;
1237         request_msg_info_t *pMsg_info = NULL;
1238         GList *iter = NULL;
1239
1240         for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
1241                 pMsg_info = iter->data;
1242
1243                 if (pMsg_info->sync_type == SYNC_MODE_MANUAL) {
1244                         success = true;
1245                         *pRequest_id = pMsg_info->request_id;
1246
1247                         __request_msg_info_free(pMsg_info);
1248                         sync_request_id_list = g_list_delete_link(sync_request_id_list, iter);
1249                         break;
1250                 }
1251         }
1252
1253         return success;
1254 }
1255
1256 bool get_periodic_sync_request_id(unsigned int *pRequest_id)
1257 {
1258         bool success = false;
1259         request_msg_info_t *pMsg_info = NULL;
1260         GList *iter = NULL;
1261
1262         for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
1263                 pMsg_info = iter->data;
1264
1265                 if (pMsg_info->sync_type == SYNC_MODE_PERIODIC) {
1266                         success = true;
1267                         *pRequest_id = pMsg_info->request_id;
1268
1269                         __request_msg_info_free(pMsg_info);
1270                         sync_request_id_list = g_list_delete_link(sync_request_id_list, iter);
1271
1272                         break;
1273                 }
1274         }
1275
1276         return success;
1277 }
1278
1279 bool get_san_sync_request_id(unsigned int *pRequest_id)
1280 {
1281         bool success = false;
1282         request_msg_info_t *pMsg_info = NULL;
1283         GList *iter = NULL;
1284
1285         for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
1286                 pMsg_info = iter->data;
1287
1288                 if (pMsg_info->sync_type == SYNC_MODE_SAN) {
1289                         success = true;
1290                         *pRequest_id = pMsg_info->request_id;
1291
1292                         __request_msg_info_free(pMsg_info);
1293                         sync_request_id_list = g_list_delete_link(sync_request_id_list, iter);
1294
1295                         break;
1296                 }
1297         }
1298
1299         return success;
1300 }
1301
1302 bool get_auto_configure_request_id(unsigned int *pRequest_id)
1303 {
1304         bool success = false;
1305         request_msg_info_t *pMsg_info = NULL;
1306         GList *iter = NULL;
1307
1308         for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
1309                 pMsg_info = iter->data;
1310
1311                 if (pMsg_info->sync_type == SYNC_MODE_AUTOCONFIG) {
1312                         success = true;
1313                         *pRequest_id = pMsg_info->request_id;
1314
1315                         __request_msg_info_free(pMsg_info);
1316                         sync_request_id_list = g_list_delete_link(sync_request_id_list, iter);
1317
1318                         break;
1319                 }
1320         }
1321
1322         return success;
1323 }
1324