[Boiler Plate] Update Boiler plate to remove unwanted information
[platform/core/connectivity/bluetooth-frwk.git] / bt-api / bt-pbap.c
1 /*
2  * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *              http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17 #include <vconf.h>
18 #if !defined(LIBNOTIFY_SUPPORT) && !defined(LIBNOTIFICATION_SUPPORT)
19 #include <syspopup_caller.h>
20 #endif
21
22 #include "bluetooth-api.h"
23 #include "bt-internal-types.h"
24
25 #include "bt-common.h"
26 #include "bt-request-sender.h"
27 #include "bt-event-handler.h"
28
29 static char is_pbap_initialized = FALSE;
30
31 #define BT_CHECK_PBAP_INITIALIZED(func) \
32         if (is_pbap_initialized == FALSE) \
33         { \
34                 BT_ERR("BT PBAP Client is not initiatized"); \
35                 func BLUETOOTH_ERROR_NOT_INITIALIZED; \
36         } \
37
38
39 BT_EXPORT_API int bluetooth_pbap_init(void)
40 {
41         bt_user_info_t *user_info;
42         int ret;
43
44         BT_CHECK_ENABLED(return);
45         if (is_pbap_initialized)
46                 return BLUETOOTH_ERROR_ALREADY_INITIALIZED;
47
48         user_info = _bt_get_user_data(BT_COMMON);
49         retv_if(user_info->cb == NULL, BLUETOOTH_ERROR_INTERNAL);
50
51         ret = _bt_register_event(BT_PBAP_CLIENT_EVENT, user_info->cb,
52                                         user_info->user_data);
53         if (ret == 0)
54                 is_pbap_initialized = TRUE;
55
56         return ret;
57 }
58
59 BT_EXPORT_API int bluetooth_pbap_deinit(void)
60 {
61         int ret;
62         BT_CHECK_ENABLED(return);
63         BT_CHECK_PBAP_INITIALIZED(return);
64
65         ret = _bt_unregister_event(BT_PBAP_CLIENT_EVENT);
66
67         if (ret == 0)
68                 is_pbap_initialized = FALSE;
69
70         return ret;
71 }
72
73 BT_EXPORT_API int bluetooth_pbap_connect(const bluetooth_device_address_t *address)
74 {
75         BT_DBG("+");
76         int result;
77
78         BT_CHECK_ENABLED(return);
79         BT_CHECK_PBAP_INITIALIZED(return);
80
81         BT_INIT_PARAMS();
82         BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
83
84         g_array_append_vals(in_param1, address,
85                                 sizeof(bluetooth_device_address_t));
86         result = _bt_send_request(BT_OBEX_SERVICE, BT_PBAP_CONNECT,
87                 in_param1, in_param2, in_param3, in_param4, &out_param);
88
89         BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
90
91         BT_DBG("-");
92         return result;
93 }
94
95 BT_EXPORT_API int bluetooth_pbap_disconnect(const bluetooth_device_address_t *address)
96 {
97         BT_DBG("+");
98         int result;
99
100         BT_CHECK_ENABLED(return);
101         BT_CHECK_PBAP_INITIALIZED(return);
102
103         BT_INIT_PARAMS();
104         BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
105
106         g_array_append_vals(in_param1, address,
107                                 sizeof(bluetooth_device_address_t));
108         result = _bt_send_request(BT_OBEX_SERVICE, BT_PBAP_DISCONNECT,
109                 in_param1, in_param2, in_param3, in_param4, &out_param);
110
111         BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
112
113         BT_DBG("-");
114         return result;
115 }
116
117 BT_EXPORT_API int bluetooth_pbap_get_phonebook_size(const bluetooth_device_address_t *address,
118                 bt_pbap_folder_t *folder)
119 {
120         BT_DBG("+");
121         int result;
122
123         BT_CHECK_ENABLED(return);
124         BT_CHECK_PBAP_INITIALIZED(return);
125
126         BT_INIT_PARAMS();
127         BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
128
129         g_array_append_vals(in_param1, address, sizeof(bluetooth_device_address_t));
130
131         g_array_append_vals(in_param2, folder, sizeof(bt_pbap_folder_t));
132
133         result = _bt_send_request(BT_OBEX_SERVICE, BT_PBAP_GET_PHONEBOOK_SIZE,
134                 in_param1, in_param2, in_param3, in_param4, &out_param);
135
136         BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
137
138         BT_DBG("-");
139         return result;
140 }
141
142 BT_EXPORT_API int bluetooth_pbap_get_phonebook(const bluetooth_device_address_t *address,
143                 bt_pbap_folder_t *folder, bt_pbap_pull_parameters_t *app_param)
144 {
145         BT_DBG("+");
146         int result;
147
148         BT_CHECK_ENABLED(return);
149         BT_CHECK_PBAP_INITIALIZED(return);
150
151         BT_INIT_PARAMS();
152         BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
153
154         g_array_append_vals(in_param1, address,
155                                 sizeof(bluetooth_device_address_t));
156         g_array_append_vals(in_param2, folder, sizeof(bt_pbap_folder_t));
157         g_array_append_vals(in_param3, app_param, sizeof(bt_pbap_pull_parameters_t));
158         result = _bt_send_request(BT_OBEX_SERVICE, BT_PBAP_GET_PHONEBOOK,
159                 in_param1, in_param2, in_param3, in_param4, &out_param);
160
161         BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
162
163         BT_DBG("-");
164         return result;
165 }
166
167 BT_EXPORT_API int bluetooth_pbap_get_list(const bluetooth_device_address_t *address,
168                 bt_pbap_folder_t *folder, bt_pbap_list_parameters_t *app_param)
169 {
170         BT_DBG("+");
171         int result;
172
173         BT_CHECK_ENABLED(return);
174         BT_CHECK_PBAP_INITIALIZED(return);
175
176         BT_INIT_PARAMS();
177         BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
178
179         g_array_append_vals(in_param1, address,
180                                 sizeof(bluetooth_device_address_t));
181         g_array_append_vals(in_param2, folder, sizeof(bt_pbap_folder_t));
182         g_array_append_vals(in_param3, app_param, sizeof(bt_pbap_list_parameters_t));
183
184         result = _bt_send_request(BT_OBEX_SERVICE, BT_PBAP_GET_LIST,
185                 in_param1, in_param2, in_param3, in_param4, &out_param);
186
187         BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
188
189         BT_DBG("-");
190         return result;
191 }
192
193 BT_EXPORT_API int bluetooth_pbap_pull_vcard(const bluetooth_device_address_t *address,
194                 bt_pbap_folder_t *folder, bt_pbap_pull_vcard_parameters_t *app_param)
195 {
196         BT_DBG("+");
197         int result;
198
199         BT_CHECK_ENABLED(return);
200         BT_CHECK_PBAP_INITIALIZED(return);
201
202         BT_INIT_PARAMS();
203         BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
204
205         g_array_append_vals(in_param1, address, sizeof(bluetooth_device_address_t));
206         g_array_append_vals(in_param2, folder, sizeof(bt_pbap_folder_t));
207         g_array_append_vals(in_param3, app_param, sizeof(bt_pbap_pull_vcard_parameters_t));
208
209         result = _bt_send_request(BT_OBEX_SERVICE, BT_PBAP_PULL_VCARD,
210                 in_param1, in_param2, in_param3, in_param4, &out_param);
211
212         BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
213
214         BT_DBG("-");
215         return result;
216 }
217
218 BT_EXPORT_API int bluetooth_pbap_phonebook_search(const bluetooth_device_address_t *address,
219                 bt_pbap_folder_t *folder, bt_pbap_search_parameters_t *app_param)
220 {
221         BT_DBG("+");
222         int result;
223         BT_CHECK_ENABLED(return);
224         BT_CHECK_PBAP_INITIALIZED(return);
225
226         BT_INIT_PARAMS();
227         BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
228
229         g_array_append_vals(in_param1, address, sizeof(bluetooth_device_address_t));
230         g_array_append_vals(in_param2, folder, sizeof(bt_pbap_folder_t));
231         g_array_append_vals(in_param3, app_param, sizeof(bt_pbap_search_parameters_t));
232
233         result = _bt_send_request(BT_OBEX_SERVICE, BT_PBAP_PHONEBOOK_SEARCH,
234                 in_param1, in_param2, in_param3, in_param4, &out_param);
235
236         BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
237
238         BT_DBG("-");
239         return result;
240 }