4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Hocheol Seo <hocheol.seo@samsung.com>
7 * Girishashok Joshi <girish.joshi@samsung.com>
8 * Chanyeol Park <chanyeol.park@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.
24 #include <syspopup_caller.h>
26 #include "bluetooth-api.h"
27 #include "bt-internal-types.h"
29 #include "bt-common.h"
30 #include "bt-request-sender.h"
31 #include "bt-event-handler.h"
33 static char is_pbap_initialized = FALSE;
35 #define BT_CHECK_PBAP_INITIALIZED(func) \
36 if (is_pbap_initialized == FALSE) \
38 BT_ERR("BT PBAP Client is not initiatized"); \
39 func BLUETOOTH_ERROR_NOT_INITIALIZED; \
43 BT_EXPORT_API int bluetooth_pbap_init(void)
45 bt_user_info_t *user_info;
48 BT_CHECK_ENABLED(return);
49 if (is_pbap_initialized)
50 return BLUETOOTH_ERROR_ALREADY_INITIALIZED;
52 user_info = _bt_get_user_data(BT_COMMON);
53 retv_if(user_info->cb == NULL, BLUETOOTH_ERROR_INTERNAL);
55 ret = _bt_register_event(BT_PBAP_CLIENT_EVENT, user_info->cb,
56 user_info->user_data);
58 is_pbap_initialized = TRUE;
63 BT_EXPORT_API int bluetooth_pbap_deinit(void)
66 BT_CHECK_ENABLED(return);
67 BT_CHECK_PBAP_INITIALIZED(return);
69 ret = _bt_unregister_event(BT_PBAP_CLIENT_EVENT);
72 is_pbap_initialized = FALSE;
77 BT_EXPORT_API int bluetooth_pbap_connect(const bluetooth_device_address_t *address)
82 BT_CHECK_ENABLED(return);
83 BT_CHECK_PBAP_INITIALIZED(return);
86 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
88 g_array_append_vals(in_param1, address,
89 sizeof(bluetooth_device_address_t));
90 result = _bt_send_request(BT_OBEX_SERVICE, BT_PBAP_CONNECT,
91 in_param1, in_param2, in_param3, in_param4, &out_param);
93 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
99 BT_EXPORT_API int bluetooth_pbap_disconnect(const bluetooth_device_address_t *address)
104 BT_CHECK_ENABLED(return);
105 BT_CHECK_PBAP_INITIALIZED(return);
108 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
110 g_array_append_vals(in_param1, address,
111 sizeof(bluetooth_device_address_t));
112 result = _bt_send_request(BT_OBEX_SERVICE, BT_PBAP_DISCONNECT,
113 in_param1, in_param2, in_param3, in_param4, &out_param);
115 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
121 BT_EXPORT_API int bluetooth_pbap_get_phonebook_size(const bluetooth_device_address_t *address,
122 bt_pbap_folder_t *folder)
127 BT_CHECK_ENABLED(return);
128 BT_CHECK_PBAP_INITIALIZED(return);
131 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
133 g_array_append_vals(in_param1, address, sizeof(bluetooth_device_address_t));
135 g_array_append_vals(in_param2, folder, sizeof(bt_pbap_folder_t));
137 result = _bt_send_request(BT_OBEX_SERVICE, BT_PBAP_GET_PHONEBOOK_SIZE,
138 in_param1, in_param2, in_param3, in_param4, &out_param);
140 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
146 BT_EXPORT_API int bluetooth_pbap_get_phonebook(const bluetooth_device_address_t *address,
147 bt_pbap_folder_t *folder, bt_pbap_pull_parameters_t *app_param)
152 BT_CHECK_ENABLED(return);
153 BT_CHECK_PBAP_INITIALIZED(return);
156 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
158 g_array_append_vals(in_param1, address,
159 sizeof(bluetooth_device_address_t));
160 g_array_append_vals(in_param2, folder, sizeof(bt_pbap_folder_t));
161 g_array_append_vals(in_param3, app_param, sizeof(bt_pbap_pull_parameters_t));
162 result = _bt_send_request(BT_OBEX_SERVICE, BT_PBAP_GET_PHONEBOOK,
163 in_param1, in_param2, in_param3, in_param4, &out_param);
165 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
171 BT_EXPORT_API int bluetooth_pbap_get_list(const bluetooth_device_address_t *address,
172 bt_pbap_folder_t *folder, bt_pbap_list_parameters_t *app_param)
177 BT_CHECK_ENABLED(return);
178 BT_CHECK_PBAP_INITIALIZED(return);
181 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
183 g_array_append_vals(in_param1, address,
184 sizeof(bluetooth_device_address_t));
185 g_array_append_vals(in_param2, folder, sizeof(bt_pbap_folder_t));
186 g_array_append_vals(in_param3, app_param, sizeof(bt_pbap_list_parameters_t));
188 result = _bt_send_request(BT_OBEX_SERVICE, BT_PBAP_GET_LIST,
189 in_param1, in_param2, in_param3, in_param4, &out_param);
191 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
197 BT_EXPORT_API int bluetooth_pbap_pull_vcard(const bluetooth_device_address_t *address,
198 bt_pbap_folder_t *folder, bt_pbap_pull_vcard_parameters_t *app_param)
203 BT_CHECK_ENABLED(return);
204 BT_CHECK_PBAP_INITIALIZED(return);
207 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
209 g_array_append_vals(in_param1, address, sizeof(bluetooth_device_address_t));
210 g_array_append_vals(in_param2, folder, sizeof(bt_pbap_folder_t));
211 g_array_append_vals(in_param3, app_param, sizeof(bt_pbap_pull_vcard_parameters_t));
213 result = _bt_send_request(BT_OBEX_SERVICE, BT_PBAP_PULL_VCARD,
214 in_param1, in_param2, in_param3, in_param4, &out_param);
216 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
222 BT_EXPORT_API int bluetooth_pbap_phonebook_search(const bluetooth_device_address_t *address,
223 bt_pbap_folder_t *folder, bt_pbap_search_parameters_t *app_param)
227 BT_CHECK_ENABLED(return);
228 BT_CHECK_PBAP_INITIALIZED(return);
231 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
233 g_array_append_vals(in_param1, address, sizeof(bluetooth_device_address_t));
234 g_array_append_vals(in_param2, folder, sizeof(bt_pbap_folder_t));
235 g_array_append_vals(in_param3, app_param, sizeof(bt_pbap_search_parameters_t));
237 result = _bt_send_request(BT_OBEX_SERVICE, BT_PBAP_PHONEBOOK_SEARCH,
238 in_param1, in_param2, in_param3, in_param4, &out_param);
240 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);