3 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * Licensed under the Apache License, Version 2.0 (the License);
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
23 #endif /* __cplusplus */
30 * Enumerations of error codes for OMA DS API
33 SYNC_AGENT_DS_FAIL = -1, /**< Fail */
34 SYNC_AGENT_DS_SUCCESS = 0 /**< Successful */
35 } sync_agent_ds_error_e;
38 * Enumerations of service type
41 SYNC_AGENT_CONTACT = 0, /**< Contact */
42 SYNC_AGENT_CALENDAR = 1, /**< Calendar */
43 SYNC_AGENT_MEMO = 2, /**< Memo */
44 SYNC_AGENT_CALLLOG = 3 /**< Calllog */
45 } sync_agent_ds_service_type_e;
48 * @brief Structure of OMA DS Server information instance
51 char *addr; /**< Server ip */
53 char *password; /**< Password */
54 } sync_agent_ds_server_info;
57 * @brief Structure of OMA DS Sync information instance
60 char *sync_mode; /**< Sync mode */
61 char *sync_type; /**< Sync type */
62 char *interval; /**< Interval */
63 } sync_agent_ds_sync_info;
66 * @brief Structure of OMA DS Service information instance
69 sync_agent_ds_service_type_e service_type; /**< Service type */
70 int enabled; /**< Enable or not */
71 char *src_uri; /**< Source uri */
72 char *tgt_uri; /**< Target uri */
74 char *password; /**< password */
75 } sync_agent_ds_service_info;
78 * @brief Structure of OMA DS Profile information instance
81 char *profile_dir_name; /**< Profile dir name */
82 char *profile_name; /**< Profile name */
83 sync_agent_ds_server_info server_info; /**< Server information */
84 sync_agent_ds_sync_info sync_info; /**< Sync information */
85 GList *service_list; /**< Service list */
86 int last_sync_status; /**< Last sync status */
87 int last_sync_time; /**< Last sync time */
88 } sync_agent_ds_profile_info;
91 * @brief Structure of OMA DS Statistics information instance
94 char *dbsynced; /**< Sync result(success, fail, stop) */
95 int last_session_time; /**< Sync time */
96 int server2client_total; /**< Total items(server to client) */
97 int server2client_nrofadd; /**< Add items(server to client) */
98 int server2client_nrofdelete; /**< Delete items(server to client) */
99 int server2client_nrofreplace; /**< Replace items(server to client) */
100 int client2server_total; /**< Total items(client to server) */
101 int client2server_nrofadd; /**< Add items(client to server) */
102 int client2server_nrofdelete; /**< Delete items(client to server) */
103 int client2server_nrofreplace; /**< Replace items(client to server) */
104 } sync_agent_ds_statistics_info;
107 * @brief profile info handler
109 typedef void *ds_profile_h;
112 * @brief initialize OMA DS
116 * sync_agent_ds_error_e ds_err = sync_agent_ds_init();
117 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
124 * @return SYNC_AGENT_DS_SUCCESS on success, SYNC_AGENT_DS_FAIL on fail
125 * @see sync_agent_ds_deinit
127 sync_agent_ds_error_e sync_agent_ds_init();
130 * @brief create profile info
134 * ds_profile_h profile_h = NULL;
136 * ds_err = sync_agent_ds_create_profile_info(&profile_h);
137 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
144 * @param[out] profile_h profile info initialized
145 * @return SYNC_AGENT_DS_SUCCESS on success, SYNC_AGENT_DS_FAIL on fail
146 * @see sync_agent_ds_free_profile_info
148 sync_agent_ds_error_e sync_agent_ds_create_profile_info(ds_profile_h * profile_h);
151 * @brief set profile name into profile info
155 * ds_profile_h profile_h = NULL;
156 * char *profile_dir_name = "Sync1";
157 * char *profile_name = "profile name";
159 * sync_agent_ds_error_e ds_err = sync_agent_ds_create_profile_info(&profile_h);
160 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
166 * ds_err = sync_agent_ds_set_profile_name(profile_h, profile_dir_name, profile_name);
167 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
174 * @param[in] profile_h profile info initialized
175 * @param[in] profile_dir_name profile dir name
176 * @param[in] profile_name profile name
177 * @return SYNC_AGENT_DS_SUCCESS on success, SYNC_AGENT_DS_FAIL on fail
179 sync_agent_ds_error_e sync_agent_ds_set_profile_name(ds_profile_h profile_h, char *profile_dir_name, char *profile_name);
182 * @brief set server information into profile info
186 * ds_profile_h profile_h = NULL;
187 * char *addr = "http://xxx.xxx.xxx";
189 * char *password = "password";
191 * sync_agent_ds_error_e ds_err = sync_agent_ds_create_profile_info(&profile_h);
192 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
198 * ds_err = sync_agent_ds_set_server_info(profile_h, addr, id, password);
199 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
206 * @param[in] profile_h profile info initialized
207 * @param[in] addr server ip address
208 * @param[in] id account id
209 * @param[in] password account password
210 * @return SYNC_AGENT_DS_SUCCESS on success, SYNC_AGENT_DS_FAIL on fail
212 sync_agent_ds_error_e sync_agent_ds_set_server_info(ds_profile_h profile_h, char *addr, char *id, char *password);
215 * @brief set sync information into profile info
219 * ds_profile_h profile_h = NULL;
220 * char *sync_mode = "Periodic";
221 * char *sync_type = "Update both";
222 * char *interval = "1 hour";
224 * sync_agent_ds_error_e ds_err = sync_agent_ds_create_profile_info(&profile_h);
225 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
231 * ds_err = sync_agent_ds_set_sync_info(profile_h, sync_mode, sync_type, interval);
232 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
239 * @param[in] profile_h profile info initialized
240 * @param[in] sync_mode sync mode(Push, Manual, Periodic)
241 * @param[in] sync_type sync type(Full, Update both, Update to server, Update to phone, Refresh from server, Refresh from phone)
242 * @param[in] interval interval(only for periodic sync(5 minutes, 15 minutes, 1 hour, 4 hours, 12 hours, 1 day, 1 week))
243 * @return SYNC_AGENT_DS_SUCCESS on success, SYNC_AGENT_DS_FAIL on fail
245 sync_agent_ds_error_e sync_agent_ds_set_sync_info(ds_profile_h profile_h, char *sync_mode, char *sync_type, char *interval);
248 * @brief set service information into profile info
252 * ds_profile_h profile_h = NULL;
253 * sync_agent_ds_service_type_e service_type = SYNC_AGENT_CONTACT;
255 * char *src_uri = "Contacts";
256 * char *tgt_uri = "card";
258 * char *password = "password";
260 * sync_agent_ds_error_e ds_err = sync_agent_ds_create_profile_info(&profile_h);
261 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
267 * ds_err = sync_agent_ds_set_sync_category(profile_h, service_type, enabled, src_uri, tgt_uri, id, password);
268 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
275 * @param[in] profile_h profile info initialized
276 * @param[in] service_type service type(SYNC_AGENT_CONTACT, SYNC_AGENT_CALENDAR, SYNC_AGENT_MEMO, SYNC_AGENT_CALLLOG)
277 * @param[in] enabled enable or not( 1 = enable, 0 = prevent)
278 * @param[in] src_uri source uri
279 * @param[in] tgt_uri target uri
281 * @param[in] password password
282 * @return SYNC_AGENT_DS_SUCCESS on success, SYNC_AGENT_DS_FAIL on fail
284 sync_agent_ds_error_e sync_agent_ds_set_sync_service_info(ds_profile_h profile_h, sync_agent_ds_service_type_e service_type, int enabled, char *src_uri, char *tgt_uri, char *id, char *password);
287 * @brief get profile dir name, profile name from profile info
291 * ds_profile_h profile_h = NULL;
292 * char *profile_dir_name = "Sync1";
293 * char *get_profile_dir_name = NULL;
294 * char *profile_name = NULL;
296 * sync_agent_ds_error_e ds_err = sync_agent_ds_get_profile(profile_dir_name, &profile_h);
297 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
303 * ds_err = sync_agent_ds_get_profile_name(profile_h, &get_profile_dir_name, &profile_name);
304 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
311 * @param[in] profile_h profile info
312 * @param[out] profile_dir_name profile dir name
313 * @param[out] profile_name profile name
314 * @return SYNC_AGENT_DS_SUCCESS on success, SYNC_AGENT_DS_FAIL on fail
315 * @see sync_agent_ds_get_profile
317 sync_agent_ds_error_e sync_agent_ds_get_profile_name(ds_profile_h profile_h, char **profile_dir_name, char **profile_name);
320 * @brief get profile server information from profile info
324 * ds_profile_h profile_h = NULL;
325 * char *profile_dir_name = "Sync1";
326 * sync_agent_ds_server_info server_info = {NULL};
328 * sync_agent_ds_error_e ds_err = sync_agent_ds_get_profile(profile_dir_name, &profile_h);
329 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
335 * ds_err = sync_agent_ds_get_server_info(profile_h, &server_info);
336 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
343 * @param[in] profile_h profile info
344 * @param[out] server_info server info structure
345 * @return SYNC_AGENT_DS_SUCCESS on success, SYNC_AGENT_DS_FAIL on fail
346 * @see sync_agent_ds_get_profile
348 sync_agent_ds_error_e sync_agent_ds_get_server_info(ds_profile_h profile_h, sync_agent_ds_server_info * server_info);
351 * @brief get profile sync information from profile info
355 * ds_profile_h profile_h = NULL;
356 * char *profile_dir_name = "Sync1";
357 * sync_agent_ds_sync_info sync_info = {NULL};
359 * sync_agent_ds_error_e ds_err = sync_agent_ds_get_profile(profile_dir_name, &profile_h);
360 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
366 * ds_err = sync_agent_ds_get_sync_info(profile_h, &sync_info);
367 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
374 * @param[in] profile_h profile info
375 * @param[out] sync_info sync info structure
376 * @return SYNC_AGENT_DS_SUCCESS on success, SYNC_AGENT_DS_FAIL on fail
377 * @see sync_agent_ds_get_profile
379 sync_agent_ds_error_e sync_agent_ds_get_sync_info(ds_profile_h profile_h, sync_agent_ds_sync_info * sync_info);
382 * @brief get profile service information list from profile info
386 * ds_profile_h profile_h = NULL;
387 * char *profile_dir_name = "Sync1";
388 * GList service_list = NULL;
390 * sync_agent_ds_error_e ds_err = sync_agent_ds_get_profile(profile_dir_name, &profile_h);
391 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
397 * ds_err = sync_agent_ds_get_sync_category_info(profile_h, &service_list);
398 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
405 * @param[in] profile_h profile info
406 * @param[out] service_list list of service_info structure
407 * @return SYNC_AGENT_DS_SUCCESS on success, SYNC_AGENT_DS_FAIL on fail
408 * @see sync_agent_ds_get_profile
410 sync_agent_ds_error_e sync_agent_ds_get_sync_service_info(ds_profile_h profile_h, GList ** service_list);
413 * @brief get profile last sync status, last sync time from profile info
417 * ds_profile_h profile_h = NULL;
418 * char *profile_dir_name = "Sync1";
419 * int last_sync_status = 0;
420 * int last_sync_time = 0;
422 * sync_agent_ds_error_e ds_err = sync_agent_ds_get_profile(profile_dir_name, &profile_h);
423 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
429 * ds_err = sync_agent_ds_get_last_sync_info(profile_h, &last_sync_status, &last_sync_time);
430 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
437 * @param[in] profile_h profile info
438 * @param[out] last_sync_status last sync status
439 * @param[out] last_sync_time last sync time
440 * @return SYNC_AGENT_DS_SUCCESS on success, SYNC_AGENT_DS_FAIL on fail
441 * @see sync_agent_ds_get_profile
443 sync_agent_ds_error_e sync_agent_ds_get_last_sync_info(ds_profile_h profile_h, int *last_sync_status, int *last_sync_time);
446 * @brief get statistics info list from profile info
450 * ds_profile_h profile_h = NULL;
451 * char *profile_dir_name = "Sync1";
452 * GList *statistics_list = NULL;
454 * sync_agent_ds_error_e ds_err = sync_agent_ds_get_profile(profile_dir_name, &profile_h);
455 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
461 * ds_err = sync_agent_ds_get_sync_statistics(profile_h, &statistics_list);
462 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
469 * @param[in] profile_h profile info
470 * @param[out] statistics_list list of statistics info structure
471 * @return SYNC_AGENT_DS_SUCCESS on success, SYNC_AGENT_DS_FAIL on fail
472 * @see sync_agent_ds_get_profile
474 sync_agent_ds_error_e sync_agent_ds_get_sync_statistics(ds_profile_h profile_h, GList ** statistics_list);
481 * ds_profile_h profile_h = NULL;
482 * char *profile_dir_name = "Sync1";
483 * char *profile_name = "profile name";
485 * char *addr = "http://xxx.xxx.xxx";
487 * char *password = "password";
489 * char *sync_mode = "Periodic";
490 * char *sync_type = "Update both";
491 * char *interval = "1 hour";
493 * sync_agent_ds_service_type_e service_type = SYNC_AGENT_CONTACT;
495 * char *src_uri = "Contacts";
496 * char *tgt_uri = "card";
498 * char *password = "password";
500 * int profile_id = 0;
502 * sync_agent_ds_error_e ds_err = sync_agent_ds_create_profile_info(&profile_h);
503 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
508 * ds_err = sync_agent_ds_set_profile_name(profile_h, profile_dir_name, profile_name);
509 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
514 * ds_err = sync_agent_ds_set_server_info(profile_h, addr, id, password);
515 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
520 * ds_err = sync_agent_ds_set_sync_info(profile_h, sync_mode, sync_type, interval);
521 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
526 * ds_err = sync_agent_ds_set_sync_category(profile_h, service_type, enabled, src_uri, tgt_uri, id, password);
527 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
532 * ds_err = sync_agent_ds_add_profile(profile_h, &profile_id);
533 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
539 * @param[in] profile_h profile info
540 * @param[out] profile_id profile id
541 * @return SYNC_AGENT_DS_SUCCESS on success, SYNC_AGENT_DS_FAIL on fail
542 * @see sync_agent_ds_create_profile_info, sync_agent_ds_set_profile_name, sync_agent_ds_set_server_info, sync_agent_ds_set_sync_info, sync_agent_ds_set_sync_category
544 sync_agent_ds_error_e sync_agent_ds_add_profile(ds_profile_h profile_h, int *profile_id);
547 * @brief get profile info
551 * ds_profile_h profile_h = NULL;
552 * char * profile_dir_name = "Sync1";
554 * sync_agent_ds_error_e ds_err = sync_agent_ds_get_profile(profile_dir_name, &profile_h);
555 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
560 * @param[in] profile_dir_name profile dir name
561 * @param[out] profile_h profile info
562 * @return SYNC_AGENT_DS_SUCCESS on success, SYNC_AGENT_DS_FAIL on fail
563 * @see sync_agent_ds_free_profile_info
565 sync_agent_ds_error_e sync_agent_ds_get_profile(char *profile_dir_name, ds_profile_h * profile_h);
568 * @brief get all profiles info
572 * ds_profile_h profile_h = NULL;
573 * GList **profile_list = NULL;
575 * sync_agent_ds_error_e ds_err = sync_agent_ds_get_all_profile(&profile_list);
576 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
581 * @param[out] profile_list list of profile info
582 * @return SYNC_AGENT_DS_SUCCESS on success, SYNC_AGENT_DS_FAIL on fail
583 * @see sync_agent_ds_free_profile_info
585 sync_agent_ds_error_e sync_agent_ds_get_all_profile(GList ** profile_list);
588 * @brief update profile
592 * ds_profile_h profile_h = NULL;
593 * char *profile_dir_name = "Sync1";
594 * char *profile_name = "updated profile name";
596 * char *addr = "http://xxx.xxx.xxx";
598 * char *password = "password";
600 * char *sync_mode = "Periodic";
601 * char *sync_type = "Update both";
602 * char *interval = "1 hour";
604 * sync_agent_ds_service_type_e service_type = SYNC_AGENT_CONTACT;
606 * char *src_uri = "Contacts";
607 * char *tgt_uri = "card";
609 * char *password = "password";
611 * sync_agent_ds_error_e ds_err = sync_agent_ds_create_profile_info(&profile_h);
612 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
617 * ds_err = sync_agent_ds_set_profile_name(profile_h, profile_dir_name, profile_name);
618 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
623 * ds_err = sync_agent_ds_set_server_info(profile_h, addr, id, password);
624 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
629 * ds_err = sync_agent_ds_set_sync_info(profile_h, sync_mode, sync_type, interval);
630 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
635 * ds_err = sync_agent_ds_set_sync_category(profile_h, service_type, enabled, src_uri, tgt_uri, id, password);
636 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
641 * ds_err = sync_agent_ds_update_profile(profile_h);
642 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
647 * @param[in] profile_h profile info
648 * @return SYNC_AGENT_DS_SUCCESS on success, SYNC_AGENT_DS_FAIL on fail
649 * @see sync_agent_ds_create_profile_info, sync_agent_ds_set_profile_name, sync_agent_ds_set_server_info, sync_agent_ds_set_sync_info, sync_agent_ds_set_sync_category
651 sync_agent_ds_error_e sync_agent_ds_update_profile(ds_profile_h profile_h);
654 * @brief delete profile
658 * sync_agent_ds_error_e ds_err = SYNC_AGENT_DS_FAIL;
659 * ds_profile_h profile_h = NULL;
660 * char *profileDirName = "Sync1";
662 * ds_err = sync_agent_ds_create_profile_info(&profile_h);
663 * if (result == SYNC_AGENT_DS_FAIL) {
667 * ds_err = sync_agent_ds_set_profile_name(profile_h, profileDirName, NULL);
668 * if (result == SYNC_AGENT_DS_FAIL) {
673 * ds_err = sync_agent_ds_delete_profile(profile_h);
674 * if (result == SYNC_AGENT_DS_FAIL) {
679 * @param[in] profile_h profile info
680 * @return SYNC_AGENT_DS_SUCCESS on success, SYNC_AGENT_DS_FAIL on fail
681 * @see sync_agent_ds_create_profile_info, sync_agent_ds_set_profile_name
683 sync_agent_ds_error_e sync_agent_ds_delete_profile(ds_profile_h profile_h);
690 * sync_agent_ds_error_e ds_err = SYNC_AGENT_DS_FAIL;
691 * ds_profile_h profile_h = NULL;
692 * char *profileDirName = "Sync1";
694 * ds_err = sync_agent_ds_create_profile_info(&profile_h);
695 * if (result == SYNC_AGENT_DS_FAIL) {
699 * ds_err = sync_agent_ds_set_profile_name(profile_h, profileDirName, NULL);
700 * if (result == SYNC_AGENT_DS_FAIL) {
705 * ds_err = sync_agent_ds_start_sync(profile_h);
706 * if (result == SYNC_AGENT_DS_FAIL) {
711 * @param[in] profile_h profile info
712 * @return SYNC_AGENT_DS_SUCCESS on success, SYNC_AGENT_DS_FAIL on fail
713 * @see sync_agent_ds_create_profile_info, sync_agent_ds_set_profile_name
715 sync_agent_ds_error_e sync_agent_ds_start_sync(ds_profile_h profile_h);
722 * sync_agent_ds_error_e ds_err = SYNC_AGENT_DS_FAIL;
723 * ds_profile_h profile_h = NULL;
724 * char *profileDirName = "Sync1";
726 * ds_err = sync_agent_ds_create_profile_info(&profile_h);
727 * if (result == SYNC_AGENT_DS_FAIL) {
731 * ds_err = sync_agent_ds_set_profile_name(profile_h, profileDirName, NULL);
732 * if (result == SYNC_AGENT_DS_FAIL) {
737 * ds_err = sync_agent_ds_stop_sync(profile_h);
738 * if (result == SYNC_AGENT_DS_FAIL) {
743 * @param[in] profile_h profile info
744 * @return SYNC_AGENT_DS_SUCCESS on success, SYNC_AGENT_DS_FAIL on fail
745 * @see sync_agent_ds_create_profile_info, sync_agent_ds_set_profile_name
747 sync_agent_ds_error_e sync_agent_ds_stop_sync(ds_profile_h profile_h);
750 * @brief free profile info
754 * sync_agent_ds_error_e ds_err = SYNC_AGENT_DS_FAIL;
755 * ds_profile_h profile_h = NULL;
757 * ds_err = sync_agent_ds_create_profile_info(&profile_h);
758 * if (result == SYNC_AGENT_DS_FAIL) {
762 * sync_agent_ds_free_profile_info(profile_h);
765 * @param[in] profile_h profile info
766 * @return SYNC_AGENT_DS_SUCCESS on success, SYNC_AGENT_DS_FAIL on fail
767 * @see sync_agent_ds_create_profile_info, sync_agent_ds_get_profile, sync_agent_ds_get_all_profile
770 sync_agent_ds_free_profile_info(ds_profile_h profile_h);
773 * @brief deinitialize OMA DS
777 * sync_agent_ds_error_e ds_err = sync_agent_ds_init();
778 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
783 * ds_err = sync_agent_ds_deinit();
784 * if(ds_err != SYNC_AGENT_DS_SUCCESS) {
789 * @return SYNC_AGENT_DS_SUCCESS on success, SYNC_AGENT_DS_FAIL on fail
790 * @see sync_agent_ds_init
792 sync_agent_ds_error_e sync_agent_ds_deinit();
800 #endif /* __cplusplus */
801 #endif /* OMA_DS_API_H_ */