Tizen 2.1 base
[platform/core/system/sync-agent.git] / src / framework / device-manager / interface.c
1 /*
2  * sync-agent
3  * Copyright (c) 2012 Samsung Electronics Co., Ltd.
4  *
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
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
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.
16  */
17
18 #include <unistd.h>
19
20 #include "utility/sync_util.h"
21 #include "utility/fw_alloc.h"
22 #include "device-manager/interface.h"
23 #include "device-manager/interface_internal.h"
24 #include "device-manager/mdm_error.h"
25 #include "device-manager/mdm_control_code.h"
26 #include "device-manager/mdm_type.h"
27 #include "plugin/device_manager_plugin.h"
28
29 #ifndef EXPORT_API
30 #define EXPORT_API __attribute__ ((visibility("default")))
31 #endif
32
33 #ifndef SYNC_AGENT_LOG
34 #undef LOG_TAG
35 #define LOG_TAG "AF_MDM"
36 #endif
37
38 EXPORT_API sync_agent_dm_mdm_return_e sync_agent_start_mdm_service(int mdm_plugin_id, char *pkgName)
39 {
40         _EXTERN_FUNC_ENTER;
41
42         retvm_if(pkgName == NULL, SYNC_AGENT_DM_MDM_FAILED, "pkgName is NULL !!");
43
44         sync_agent_dm_mdm_return_e res = SYNC_AGENT_DM_MDM_SUCCEEDED;
45
46         plugin_start_service_cb func_point_start_service = plugin_get_function_start_service(mdm_plugin_id);
47
48         retvm_if(func_point_start_service == NULL, SYNC_AGENT_DM_MDM_FAILED, "cannot get plugin_start_service_cb !!");
49
50         res = func_point_start_service(pkgName);
51
52         _EXTERN_FUNC_EXIT;
53
54         return res;
55 }
56
57 EXPORT_API sync_agent_dm_mdm_return_e sync_agent_stop_mdm_service(int mdm_plugin_id, char *pkgName)
58 {
59         _EXTERN_FUNC_ENTER;
60
61         retvm_if(pkgName == NULL, SYNC_AGENT_DM_MDM_FAILED, "pkgName is NULL !!");
62
63         sync_agent_dm_mdm_return_e res = SYNC_AGENT_DM_MDM_SUCCEEDED;
64
65         plugin_stop_service_cb func_point_stop_service = plugin_get_function_stop_service(mdm_plugin_id);
66
67         retvm_if(func_point_stop_service == NULL, SYNC_AGENT_DM_MDM_FAILED, "cannot get plugin_stop_service_cb !!");
68
69         res = func_point_stop_service(pkgName);
70
71         _EXTERN_FUNC_EXIT;
72
73         return res;
74 }
75
76 EXPORT_API sync_agent_dm_mdm_return_e sync_agent_set_mdm_value(int mdm_plugin_id, sync_agent_dm_mdm_ctrl_e ctrl, ...)
77 {
78         _EXTERN_FUNC_ENTER;
79
80         va_list va;
81         sync_agent_dm_mdm_return_e res = SYNC_AGENT_DM_MDM_SUCCEEDED;
82
83         plugin_set_device_manager_value_cb func_point_set_device_manager_value = plugin_get_function_set_device_manager_value(mdm_plugin_id);
84
85         retvm_if(func_point_set_device_manager_value == NULL, SYNC_AGENT_DM_MDM_FAILED, "cannot get plugin_set_device_manager_value_cb !!");
86
87         va_start(va, ctrl);
88         res = func_point_set_device_manager_value(ctrl, va);
89         va_end(va);
90
91         _EXTERN_FUNC_EXIT;
92
93         return res;
94 }
95
96 EXPORT_API sync_agent_dm_mdm_return_e sync_agent_get_mdm_value(int mdm_plugin_id, sync_agent_dm_mdm_ctrl_e ctrl, ...)
97 {
98         _EXTERN_FUNC_ENTER;
99
100         va_list va;
101         sync_agent_dm_mdm_return_e res = SYNC_AGENT_DM_MDM_SUCCEEDED;
102
103         plugin_get_device_manager_value_cb func_point_get_device_manager_value = plugin_get_function_get_device_manager_value(mdm_plugin_id);
104
105         retvm_if(func_point_get_device_manager_value == NULL, SYNC_AGENT_DM_MDM_FAILED, "cannot get plugin_get_device_manager_value_cb !!");
106
107         va_start(va, ctrl);
108         res = func_point_get_device_manager_value(ctrl, va);
109         va_end(va);
110
111         _EXTERN_FUNC_EXIT;
112
113         return res;
114 }
115
116 EXPORT_API sync_agent_dm_mdm_return_e sync_agent_execute_mdm(int mdm_plugin_id, sync_agent_dm_mdm_ctrl_e ctrl, ...)
117 {
118         _EXTERN_FUNC_ENTER;
119
120         va_list va;
121         sync_agent_dm_mdm_return_e res = SYNC_AGENT_DM_MDM_SUCCEEDED;
122
123         plugin_execute_device_manager_cb func_point_execute_device_manager = plugin_get_function_execute_device_manager(mdm_plugin_id);
124
125         retvm_if(func_point_execute_device_manager == NULL, SYNC_AGENT_DM_MDM_FAILED, "cannot get plugin_execute_device_manager_cb !!");
126
127         va_start(va, ctrl);
128         res = func_point_execute_device_manager(ctrl, va);
129         va_end(va);
130
131         _EXTERN_FUNC_EXIT;
132
133         return res;
134 }
135
136 int dm_register_mdm_callback(int mdm_plugin_id, sync_agent_dm_mdm_event_e event, sync_agent_device_manager_cb callback, void *userdata)
137 {
138         _EXTERN_FUNC_ENTER;
139
140         sync_agent_dm_mdm_return_e res = SYNC_AGENT_DM_MDM_SUCCEEDED;
141
142         plugin_register_device_manager_callback_cb func_point_register_device_manager_callback = plugin_get_function_register_device_manager_callback(mdm_plugin_id);
143
144         retvm_if(func_point_register_device_manager_callback == NULL, SYNC_AGENT_DM_MDM_FAILED, "cannot get plugin_device_manager_register_callback_cb !!");
145
146         res = func_point_register_device_manager_callback(event, callback, userdata);
147
148         _EXTERN_FUNC_EXIT;
149
150         return res;
151 }
152
153 sync_agent_dm_mdm_return_e dm_register_deregister_mdm_callback(int mdm_plugin_id, int handle)
154 {
155         _EXTERN_FUNC_ENTER;
156
157         sync_agent_dm_mdm_return_e res = SYNC_AGENT_DM_MDM_SUCCEEDED;
158
159         plugin_deregister_device_manager_callback_cb func_point_deregister_device_manager_callback = plugin_get_function_deregister_device_manager_callback(mdm_plugin_id);
160
161         retvm_if(func_point_deregister_device_manager_callback == NULL, SYNC_AGENT_DM_MDM_FAILED, "cannot get plugin_device_manager_deregister_callback_cb !!");
162
163         res = func_point_deregister_device_manager_callback(handle);
164
165         _EXTERN_FUNC_EXIT;
166
167         return res;
168 }