4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: JuHak Park <juhaki.park@samsung.com>,
7 * JuneHyuk Lee <junhyuk7.lee@samsung.com>,
8 * SunBong Ha <sunbong.ha@samsung.com>
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
14 * http://www.apache.org/licenses/LICENSE-2.0
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.
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.
33 * SeongWon Shim <seongwon.shim@samsung.com>
37 * @OMA_DS_Engine_Controller_Task.c
39 * @brief This file is the source file of implementation of make and register task to Engine Controller
44 #include "Framework/Task/OMA_DS_Engine_Controller_Task.h"
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"
53 #define LOG_TAG "OMA_DS_COMMON"
55 static GList *sync_request_id_list = NULL;
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);
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);
66 static void *__string_copy_struct(void *string);
70 static void __free_sync_categorie_list(void *list)
72 GList *categories = (GList *)list;
74 for (iter = categories; iter != NULL; iter = g_list_next(iter))
75 __free_sync_category(iter->data);
78 g_list_free(categories);
81 static void __free_delete_profile_list(void *list)
83 GList *profiles = (GList *)list;
85 for (iter = profiles; iter != NULL; iter = g_list_next(iter))
88 g_list_free(profiles);
91 static void __free_resource_cp_list(void *list)
93 GList *profiles = (GList *)list;
95 for (iter = profiles; iter != NULL; iter = g_list_next(iter))
96 __free_resource_cp(iter->data);
98 g_list_free(profiles);
101 static void __free_sync_category(sync_category *category)
103 if (category->srcURI != NULL)
104 free(category->srcURI);
106 if (category->tgtURI != NULL)
107 free(category->tgtURI);
109 if (category->id != NULL)
112 if (category->password != NULL)
113 free(category->password);
118 static void __free_resource_cp(resource_cp *resource)
120 if (resource->name != NULL)
121 free(resource->name);
123 if (resource->accept != NULL)
124 free(resource->accept);
126 if (resource->id != NULL)
129 if (resource->password != NULL)
130 free(resource->password);
132 if (resource->authType != NULL)
133 free(resource->authType);
135 if (resource->authData != NULL)
136 free(resource->authData);
141 static request_msg_info_t *__create_request_msg_info(int sync_type, unsigned int request_id)
143 request_msg_info_t *pInfo = (request_msg_info_t *) calloc(1, sizeof(request_msg_info_t));
148 pInfo->sync_type = sync_type;
149 pInfo->request_id = request_id;
154 static void __request_msg_info_free(request_msg_info_t *pInfo)
161 static void *__string_copy_struct(void *string)
163 return strdup((const char *)string);
168 /*TODO have to be removed after removing vconf*/
169 task_spec_t *make_add_account_task()
171 param_spec *pParam_spec1 = param_spec_structure("profile", __string_copy_struct, free,
172 true, false, false, NULL, false, NULL, false, NULL);
174 param_spec *pParam_spec2 = param_spec_int("result", false, true, false, 0, 0, false, 0, false, 0, 0);
176 param_spec *param_spec_array[2] = {pParam_spec1, pParam_spec2};
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);
182 param_spec_unref(pParam_spec1);
183 param_spec_unref(pParam_spec2);
188 /*TODO have to be removed after removing vconf*/
189 task_spec_t *make_edit_account_task()
191 param_spec *pParam_spec1 = param_spec_structure("profile", __string_copy_struct, free,
192 true, false, false, NULL, false, NULL, false, NULL);
194 param_spec *pParam_spec2 = param_spec_int("result", false, true, false, 0, 0, false, 0, false, 0, 0);
196 param_spec *param_spec_array[2] = {pParam_spec1, pParam_spec2};
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);
202 param_spec_unref(pParam_spec1);
203 param_spec_unref(pParam_spec2);
207 /*TODO have to be removed after removing vconf*/
208 task_spec_t *make_autoconfigure_task()
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};
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);
218 param_spec_unref(pParam_spec1);
223 task_spec_t *make_synchronize_task()
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};
232 task_spec_t *pTask_spec = task_spec_alloc_simple_task_spec("synchronize",
233 synchronize_task_process, NULL, NULL,
234 3, param_spec_array);
236 param_spec_unref(pParam_spec1);
237 param_spec_unref(pParam_spec2);
238 param_spec_unref(pParam_spec3);
243 task_spec_t *make_add_profile_task()
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);
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);
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};
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);
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);
290 task_spec_t *make_edit_profile_task()
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);
310 param_spec *pParam_spec10 = param_spec_int("result", false, true, false, 0, 0, false, 0, false, 0, 0);
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};
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);
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);
334 task_spec_t *make_delete_profile_task()
336 param_spec *pParam_spec1 = param_spec_structure("profiles", NULL, __free_delete_profile_list,
337 true, false, false, NULL, false, NULL, false, NULL);
339 param_spec *pParam_spec2 = param_spec_int("result", false, true, false, 0, 0, false, 0, false, 0, 0);
341 param_spec *param_spec_array[2] = {pParam_spec1, pParam_spec2};
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);
347 param_spec_unref(pParam_spec1);
348 param_spec_unref(pParam_spec2);
354 task_spec_t *make_auto_configure_task()
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);
365 param_spec *param_spec_array[4] = {pParam_spec1, pParam_spec2, pParam_spec3, pParam_spec4};
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);
371 param_spec_unref(pParam_spec1);
372 param_spec_unref(pParam_spec2);
373 param_spec_unref(pParam_spec3);
374 param_spec_unref(pParam_spec4);
380 task_spec_t *make_sync_status_task()
382 task_spec_t *pTask_spec = task_spec_alloc_simple_task_spec("sync_status",
383 sync_status_task_process, NULL, NULL,
389 task_spec_t *make_get_profile_name_task()
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};
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);
401 param_spec_unref(pParam_spec1);
402 param_spec_unref(pParam_spec2);
403 param_spec_unref(pParam_spec3);
408 task_spec_t *make_get_profile_server_info_task()
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);
419 param_spec *param_spec_array[5] = {pParam_spec1, pParam_spec2, pParam_spec3, pParam_spec4, pParam_spec5};
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);
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);
434 task_spec_t *make_get_profile_sync_mode_task()
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);
445 param_spec *param_spec_array[5] = {pParam_spec1, pParam_spec2, pParam_spec3, pParam_spec4, pParam_spec5};
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);
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);
460 task_spec_t *make_get_profile_sync_category_task()
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);
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);
476 param_spec *param_spec_array[8] = {pParam_spec1, pParam_spec2, pParam_spec3, pParam_spec4,
477 pParam_spec5, pParam_spec6, pParam_spec7, pParam_spec8};
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);
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);
495 task_spec_t *make_get_profile_last_session_task()
497 param_spec *pParam_spec1 = param_spec_int("accountId", true, false, false, 0, 0, false, 0, false, 0, 0);
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 };
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);
508 param_spec_unref(pParam_spec1);
509 param_spec_unref(pParam_spec2);
510 param_spec_unref(pParam_spec3);
511 param_spec_unref(pParam_spec4);
516 task_spec_t *make_get_profile_statistics_task()
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);
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);
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};
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);
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);
559 task_spec_t *make_reset_synchronizing_profiles_task()
561 task_spec_t *pTask_spec = task_spec_alloc_simple_task_spec("reset_synchronizing_profiles",
562 reset_synchronizing_profiles_task_process, NULL, NULL,
568 task_spec_t *make_add_profile_cp_task()
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);
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);
584 param_spec *param_spec_array[7] = {pParam_spec1, pParam_spec2, pParam_spec3, pParam_spec4, pParam_spec5,
585 pParam_spec6, pParam_spec7};
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);
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);
602 task_spec_t *make_refresh_from_service_task()
604 param_spec *pParam_spec1 = param_spec_int("accountId", true, false, false, 0, 0, false, 0, false, 0, 0);
606 param_spec *param_spec_array[1] = {pParam_spec1};
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);
612 param_spec_unref(pParam_spec1);
618 /*FIXME cancel request to NA */
619 /*task_spec_t *make_cancel_sync_request()
621 task_spec_t *pTask_spec = task_spec_alloc_simple_task_spec("cancel_sync_request",
622 cancel_sync_request_task_process, NULL, NULL,
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)
632 task_error_t err = TASK_ERROR_RUN_SUCCESS;
634 /* step 1 : process add account */
635 char *profile = NULL;
637 param_value_get_value(&(param_array[0]->param_value), EC_VALUE_TYPE_STRUCT, &profile);
639 int result = update_all_config(profile, true, &accountId);
641 err = TASK_ERROR_RUN_FAILED;
643 param_value_set_value(&(param_array[1]->param_value), EC_VALUE_TYPE_INT, &result);
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);
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)
662 task_error_t err = TASK_ERROR_RUN_SUCCESS;
664 char *profile = NULL;
666 param_value_get_value(&(param_array[0]->param_value), EC_VALUE_TYPE_STRUCT, &profile);
668 int result = update_all_config(profile, false, &accountId);
670 err = TASK_ERROR_RUN_FAILED;
672 param_value_set_value(&(param_array[1]->param_value), EC_VALUE_TYPE_INT, &result);
678 /*TODO have to be removed after removing vconf*/
679 task_error_t autoconfigure_task_process(unsigned int param_cnt, param_t **param_array)
682 task_error_t err = TASK_ERROR_RUN_SUCCESS;
684 char *profile = NULL;
685 param_value_get_value(&(param_array[0]->param_value), EC_VALUE_TYPE_STRUCT, &profile);
687 bool result = autoconfigure_from_vconf(profile);
689 err = TASK_ERROR_RUN_FAILED;
695 task_error_t synchronize_task_process(unsigned int param_cnt, param_t **param_array)
698 task_error_t err = TASK_ERROR_RUN_SUCCESS;
701 param_value_get_value(&(param_array[0]->param_value), EC_VALUE_TYPE_INT, &accountId);
704 err = TASK_ERROR_RUN_FAILED;
708 char *syncMode = NULL;
709 param_value_get_value(&(param_array[1]->param_value), EC_VALUE_TYPE_STRUCT, &syncMode);
711 SanPackage *pSanPackage = NULL;
712 param_value_get_value(&(param_array[2]->param_value), EC_VALUE_TYPE_STRUCT, &pSanPackage);
714 FW_LOGV("accountId = %d", accountId);
715 FW_LOGV("syncMode = %s", syncMode);
717 bool result = synchronize(accountId, syncMode, pSanPackage);
719 err = TASK_ERROR_RUN_FAILED;
726 task_error_t add_profile_task_process(unsigned int param_cnt, param_t **param_array)
729 task_error_t err = TASK_ERROR_RUN_SUCCESS;
731 char *profileDirName = NULL;
732 char *profileName = NULL;
735 char *password = NULL;
736 char *syncMode = NULL;
737 char *syncType = NULL;
738 char *interval = NULL;
739 GList *categories = NULL;
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);
755 res = add_profile(profileDirName, profileName, addr, id, password, syncMode, syncType, interval, categories, &accountId);
757 err = TASK_ERROR_RUN_FAILED;
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);
769 task_error_t edit_profile_task_process(unsigned int param_cnt, param_t **param_array)
772 task_error_t err = TASK_ERROR_RUN_SUCCESS;
775 char *profileName = NULL;
778 char *password = NULL;
779 char *syncMode = NULL;
780 char *syncType = NULL;
781 char *interval = NULL;
782 GList *categories = NULL;
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);
797 res = edit_profile(accountId, profileName, addr, id, password, syncMode, syncType, interval, categories);
799 err = TASK_ERROR_RUN_FAILED;
804 param_value_set_value(&(param_array[9]->param_value), EC_VALUE_TYPE_INT, &result);
810 task_error_t delete_profile_task_process(unsigned int param_cnt, param_t **param_array)
815 task_error_t err = TASK_ERROR_RUN_SUCCESS;
817 GList *profiles = NULL;
818 param_value_get_value(&(param_array[0]->param_value), EC_VALUE_TYPE_STRUCT, &profiles);
820 res = delete_profiles(profiles);
822 err = TASK_ERROR_RUN_FAILED;
827 param_value_set_value(&(param_array[1]->param_value), EC_VALUE_TYPE_INT, &result);
834 task_error_t auto_configure_task_process(unsigned int param_cnt, param_t **param_array)
837 task_error_t err = TASK_ERROR_RUN_SUCCESS;
839 char *profildDirName = NULL;
842 char *password = NULL;
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);
849 bool result = autoconfigure(profildDirName, addr, id, password);
851 err = TASK_ERROR_RUN_FAILED;
857 task_error_t sync_status_task_process(unsigned int param_cnt, param_t **param_array)
860 task_error_t err = TASK_ERROR_RUN_SUCCESS;
862 char *profileDirName = NULL;
864 get_synchronising_profile(&profileDirName);
866 FW_LOGV("profileDirName = %s", profileDirName);
867 send_noti_sync_status(profileDirName);
873 task_error_t get_profile_name_task_process(unsigned int param_cnt, param_t **param_array)
876 task_error_t err = TASK_ERROR_RUN_SUCCESS;
879 char *profileName = NULL;
883 param_value_get_value(&(param_array[0]->param_value), EC_VALUE_TYPE_INT, &accountId);
885 err = TASK_ERROR_RUN_FAILED;
889 res = get_profile_name(accountId, &profileName);
891 err = TASK_ERROR_RUN_FAILED;
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);
904 task_error_t get_profile_server_info_task_process(unsigned int param_cnt, param_t **param_array)
907 task_error_t err = TASK_ERROR_RUN_SUCCESS;
912 char *password = NULL;
916 param_value_get_value(&(param_array[0]->param_value), EC_VALUE_TYPE_INT, &accountId);
918 err = TASK_ERROR_RUN_FAILED;
922 res = get_profile_server_info(accountId, &addr, &id, &password);
924 err = TASK_ERROR_RUN_FAILED;
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);
939 task_error_t get_profile_sync_mode_task_process(unsigned int param_cnt, param_t **param_array)
942 task_error_t err = TASK_ERROR_RUN_SUCCESS;
945 char *syncMode = NULL;
946 char *syncType = NULL;
947 char *interval = NULL;
951 param_value_get_value(&(param_array[0]->param_value), EC_VALUE_TYPE_INT, &accountId);
953 err = TASK_ERROR_RUN_FAILED;
957 res = get_profile_sync_mode(accountId, &syncMode, &syncType, &interval);
959 err = TASK_ERROR_RUN_FAILED;
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);
974 task_error_t get_profile_sync_category_task_process(unsigned int param_cnt, param_t **param_array)
977 task_error_t err = TASK_ERROR_RUN_SUCCESS;
986 char *password = NULL;
990 param_value_get_value(&(param_array[0]->param_value), EC_VALUE_TYPE_INT, &accountId);
992 err = TASK_ERROR_RUN_FAILED;
996 param_value_get_value(&(param_array[1]->param_value), EC_VALUE_TYPE_INT, &contentType);
999 res = get_profile_sync_category(accountId, contentType, &enabled, &srcURI, &tgtURI, &id, &password);
1001 err = TASK_ERROR_RUN_FAILED;
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);
1018 task_error_t get_profile_last_session_task_process(unsigned int param_cnt, param_t **param_array)
1021 task_error_t err = TASK_ERROR_RUN_SUCCESS;
1024 int lastSessionStatus;
1025 int lastSessionTime;
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;
1035 res = get_last_session_info(accountId, &lastSessionStatus, &lastSessionTime);
1037 err = TASK_ERROR_RUN_FAILED;
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);
1051 task_error_t get_profile_statistics_task_process(unsigned int param_cnt, param_t **param_array)
1054 task_error_t err = TASK_ERROR_RUN_SUCCESS;
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;
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;
1079 param_value_get_value(&(param_array[1]->param_value), EC_VALUE_TYPE_INT, &contentType);
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);
1087 err = TASK_ERROR_RUN_FAILED;
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);
1109 task_error_t reset_synchronizing_profiles_task_process(unsigned int param_cnt, param_t **param_array)
1112 task_error_t err = TASK_ERROR_RUN_SUCCESS;
1114 reset_synchronizing_profiles();
1120 /*FIXME cancel request to NA */
1121 /*task_error_t cancel_sync_request_task_process(unsigned int param_cnt, param_t **param_array)
1124 task_error_t err = TASK_ERROR_RUN_SUCCESS;
1126 cancel_sync_request();
1132 task_error_t add_profile_cp_task_process(unsigned int param_cnt, param_t **param_array)
1135 task_error_t err = TASK_ERROR_RUN_SUCCESS;
1137 char *profileName = NULL;
1140 char *password = NULL;
1141 GList *categories = NULL;
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);
1153 res = add_profile_cp(profileName, addr, id, password, categories, &accountId);
1155 err = TASK_ERROR_RUN_FAILED;
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);
1168 task_error_t refresh_from_service_task_process(unsigned int param_cnt, param_t **param_array)
1171 task_error_t err = TASK_ERROR_RUN_SUCCESS;
1176 param_value_get_value(&(param_array[0]->param_value), EC_VALUE_TYPE_INT, &accountId);
1178 res = refresh_from_service_all(accountId);
1180 err = TASK_ERROR_RUN_FAILED;
1186 void insert_request_msg_info(int sync_type, unsigned int request_id)
1188 sync_request_id_list = g_list_prepend(sync_request_id_list, __create_request_msg_info(sync_type, request_id));
1191 void delete_request_msg_info(unsigned int request_id)
1194 request_msg_info_t *pMsg_info = NULL;
1196 for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
1197 pMsg_info = iter->data;
1199 if (pMsg_info->request_id == request_id) {
1200 sync_request_id_list = g_list_remove_link(sync_request_id_list, iter);
1206 __request_msg_info_free(iter->data);
1207 g_list_free_1(iter);
1211 bool get_synchronizing_request_id(unsigned int *pRequest_id)
1213 bool success = false;
1214 request_msg_info_t *pMsg_info = NULL;
1217 for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
1218 pMsg_info = iter->data;
1220 if (pMsg_info->sync_type == SYNC_MODE_MANUAL || pMsg_info->sync_type == SYNC_MODE_PERIODIC || pMsg_info->sync_type == SYNC_MODE_SAN) {
1222 *pRequest_id = pMsg_info->request_id;
1224 __request_msg_info_free(pMsg_info);
1225 sync_request_id_list = g_list_delete_link(sync_request_id_list, iter);
1234 bool get_manual_sync_request_id(unsigned int *pRequest_id)
1236 bool success = false;
1237 request_msg_info_t *pMsg_info = NULL;
1240 for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
1241 pMsg_info = iter->data;
1243 if (pMsg_info->sync_type == SYNC_MODE_MANUAL) {
1245 *pRequest_id = pMsg_info->request_id;
1247 __request_msg_info_free(pMsg_info);
1248 sync_request_id_list = g_list_delete_link(sync_request_id_list, iter);
1256 bool get_periodic_sync_request_id(unsigned int *pRequest_id)
1258 bool success = false;
1259 request_msg_info_t *pMsg_info = NULL;
1262 for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
1263 pMsg_info = iter->data;
1265 if (pMsg_info->sync_type == SYNC_MODE_PERIODIC) {
1267 *pRequest_id = pMsg_info->request_id;
1269 __request_msg_info_free(pMsg_info);
1270 sync_request_id_list = g_list_delete_link(sync_request_id_list, iter);
1279 bool get_san_sync_request_id(unsigned int *pRequest_id)
1281 bool success = false;
1282 request_msg_info_t *pMsg_info = NULL;
1285 for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
1286 pMsg_info = iter->data;
1288 if (pMsg_info->sync_type == SYNC_MODE_SAN) {
1290 *pRequest_id = pMsg_info->request_id;
1292 __request_msg_info_free(pMsg_info);
1293 sync_request_id_list = g_list_delete_link(sync_request_id_list, iter);
1302 bool get_auto_configure_request_id(unsigned int *pRequest_id)
1304 bool success = false;
1305 request_msg_info_t *pMsg_info = NULL;
1308 for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
1309 pMsg_info = iter->data;
1311 if (pMsg_info->sync_type == SYNC_MODE_AUTOCONFIG) {
1313 *pRequest_id = pMsg_info->request_id;
1315 __request_msg_info_free(pMsg_info);
1316 sync_request_id_list = g_list_delete_link(sync_request_id_list, iter);