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 #if !defined(LIBNOTIFY_SUPPORT) && !defined(LIBNOTIFICATION_SUPPORT)
25 #include <syspopup_caller.h>
28 #include "bluetooth-api.h"
29 #include "bt-internal-types.h"
31 #include "bt-common.h"
32 #include "bt-request-sender.h"
33 #include "bt-event-handler.h"
35 static char is_pbap_initialized = FALSE;
37 #define BT_CHECK_PBAP_INITIALIZED(func) \
38 if (is_pbap_initialized == FALSE) \
40 BT_ERR("BT PBAP Client is not initiatized"); \
41 func BLUETOOTH_ERROR_NOT_INITIALIZED; \
45 BT_EXPORT_API int bluetooth_pbap_init(void)
47 bt_user_info_t *user_info;
50 BT_CHECK_ENABLED(return);
51 if (is_pbap_initialized)
52 return BLUETOOTH_ERROR_ALREADY_INITIALIZED;
54 user_info = _bt_get_user_data(BT_COMMON);
55 retv_if(user_info->cb == NULL, BLUETOOTH_ERROR_INTERNAL);
57 ret = _bt_register_event(BT_PBAP_CLIENT_EVENT, user_info->cb,
58 user_info->user_data);
60 is_pbap_initialized = TRUE;
65 BT_EXPORT_API int bluetooth_pbap_deinit(void)
68 BT_CHECK_ENABLED(return);
69 BT_CHECK_PBAP_INITIALIZED(return);
71 ret = _bt_unregister_event(BT_PBAP_CLIENT_EVENT);
74 is_pbap_initialized = FALSE;
79 BT_EXPORT_API int bluetooth_pbap_connect(const bluetooth_device_address_t *address)
84 BT_CHECK_ENABLED(return);
85 BT_CHECK_PBAP_INITIALIZED(return);
88 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
90 g_array_append_vals(in_param1, address,
91 sizeof(bluetooth_device_address_t));
92 result = _bt_send_request(BT_OBEX_SERVICE, BT_PBAP_CONNECT,
93 in_param1, in_param2, in_param3, in_param4, &out_param);
95 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
101 BT_EXPORT_API int bluetooth_pbap_disconnect(const bluetooth_device_address_t *address)
106 BT_CHECK_ENABLED(return);
107 BT_CHECK_PBAP_INITIALIZED(return);
110 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
112 g_array_append_vals(in_param1, address,
113 sizeof(bluetooth_device_address_t));
114 result = _bt_send_request(BT_OBEX_SERVICE, BT_PBAP_DISCONNECT,
115 in_param1, in_param2, in_param3, in_param4, &out_param);
117 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
123 BT_EXPORT_API int bluetooth_pbap_get_phonebook_size(const bluetooth_device_address_t *address,
124 bt_pbap_folder_t *folder)
129 BT_CHECK_ENABLED(return);
130 BT_CHECK_PBAP_INITIALIZED(return);
133 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
135 g_array_append_vals(in_param1, address, sizeof(bluetooth_device_address_t));
137 g_array_append_vals(in_param2, folder, sizeof(bt_pbap_folder_t));
139 result = _bt_send_request(BT_OBEX_SERVICE, BT_PBAP_GET_PHONEBOOK_SIZE,
140 in_param1, in_param2, in_param3, in_param4, &out_param);
142 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
148 BT_EXPORT_API int bluetooth_pbap_get_phonebook(const bluetooth_device_address_t *address,
149 bt_pbap_folder_t *folder, bt_pbap_pull_parameters_t *app_param)
154 BT_CHECK_ENABLED(return);
155 BT_CHECK_PBAP_INITIALIZED(return);
158 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
160 g_array_append_vals(in_param1, address,
161 sizeof(bluetooth_device_address_t));
162 g_array_append_vals(in_param2, folder, sizeof(bt_pbap_folder_t));
163 g_array_append_vals(in_param3, app_param, sizeof(bt_pbap_pull_parameters_t));
164 result = _bt_send_request(BT_OBEX_SERVICE, BT_PBAP_GET_PHONEBOOK,
165 in_param1, in_param2, in_param3, in_param4, &out_param);
167 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
173 BT_EXPORT_API int bluetooth_pbap_get_list(const bluetooth_device_address_t *address,
174 bt_pbap_folder_t *folder, bt_pbap_list_parameters_t *app_param)
179 BT_CHECK_ENABLED(return);
180 BT_CHECK_PBAP_INITIALIZED(return);
183 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
185 g_array_append_vals(in_param1, address,
186 sizeof(bluetooth_device_address_t));
187 g_array_append_vals(in_param2, folder, sizeof(bt_pbap_folder_t));
188 g_array_append_vals(in_param3, app_param, sizeof(bt_pbap_list_parameters_t));
190 result = _bt_send_request(BT_OBEX_SERVICE, BT_PBAP_GET_LIST,
191 in_param1, in_param2, in_param3, in_param4, &out_param);
193 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
199 BT_EXPORT_API int bluetooth_pbap_pull_vcard(const bluetooth_device_address_t *address,
200 bt_pbap_folder_t *folder, bt_pbap_pull_vcard_parameters_t *app_param)
205 BT_CHECK_ENABLED(return);
206 BT_CHECK_PBAP_INITIALIZED(return);
209 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
211 g_array_append_vals(in_param1, address, sizeof(bluetooth_device_address_t));
212 g_array_append_vals(in_param2, folder, sizeof(bt_pbap_folder_t));
213 g_array_append_vals(in_param3, app_param, sizeof(bt_pbap_pull_vcard_parameters_t));
215 result = _bt_send_request(BT_OBEX_SERVICE, BT_PBAP_PULL_VCARD,
216 in_param1, in_param2, in_param3, in_param4, &out_param);
218 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
224 BT_EXPORT_API int bluetooth_pbap_phonebook_search(const bluetooth_device_address_t *address,
225 bt_pbap_folder_t *folder, bt_pbap_search_parameters_t *app_param)
229 BT_CHECK_ENABLED(return);
230 BT_CHECK_PBAP_INITIALIZED(return);
233 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
235 g_array_append_vals(in_param1, address, sizeof(bluetooth_device_address_t));
236 g_array_append_vals(in_param2, folder, sizeof(bt_pbap_folder_t));
237 g_array_append_vals(in_param3, app_param, sizeof(bt_pbap_search_parameters_t));
239 result = _bt_send_request(BT_OBEX_SERVICE, BT_PBAP_PHONEBOOK_SEARCH,
240 in_param1, in_param2, in_param3, in_param4, &out_param);
242 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);