2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 #if !defined(LIBNOTIFY_SUPPORT) && !defined(LIBNOTIFICATION_SUPPORT)
19 #include <syspopup_caller.h>
22 #include "bluetooth-api.h"
23 #include "bt-internal-types.h"
25 #include "bt-common.h"
26 #include "bt-request-sender.h"
27 #include "bt-event-handler.h"
29 static char is_pbap_initialized = FALSE;
31 #define BT_CHECK_PBAP_INITIALIZED(func) \
32 if (is_pbap_initialized == FALSE) \
34 BT_ERR("BT PBAP Client is not initiatized"); \
35 func BLUETOOTH_ERROR_NOT_INITIALIZED; \
39 BT_EXPORT_API int bluetooth_pbap_init(void)
41 bt_user_info_t *user_info;
44 BT_CHECK_ENABLED(return);
45 if (is_pbap_initialized)
46 return BLUETOOTH_ERROR_ALREADY_INITIALIZED;
48 user_info = _bt_get_user_data(BT_COMMON);
49 retv_if(user_info->cb == NULL, BLUETOOTH_ERROR_INTERNAL);
51 ret = _bt_register_event(BT_PBAP_CLIENT_EVENT, user_info->cb,
52 user_info->user_data);
54 is_pbap_initialized = TRUE;
59 BT_EXPORT_API int bluetooth_pbap_deinit(void)
62 BT_CHECK_ENABLED(return);
63 BT_CHECK_PBAP_INITIALIZED(return);
65 ret = _bt_unregister_event(BT_PBAP_CLIENT_EVENT);
68 is_pbap_initialized = FALSE;
73 BT_EXPORT_API int bluetooth_pbap_connect(const bluetooth_device_address_t *address)
78 BT_CHECK_ENABLED(return);
79 BT_CHECK_PBAP_INITIALIZED(return);
82 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
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);
89 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
95 BT_EXPORT_API int bluetooth_pbap_disconnect(const bluetooth_device_address_t *address)
100 BT_CHECK_ENABLED(return);
101 BT_CHECK_PBAP_INITIALIZED(return);
104 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
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);
111 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
117 BT_EXPORT_API int bluetooth_pbap_get_phonebook_size(const bluetooth_device_address_t *address,
118 bt_pbap_folder_t *folder)
123 BT_CHECK_ENABLED(return);
124 BT_CHECK_PBAP_INITIALIZED(return);
127 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
129 g_array_append_vals(in_param1, address, sizeof(bluetooth_device_address_t));
131 g_array_append_vals(in_param2, folder, sizeof(bt_pbap_folder_t));
133 result = _bt_send_request(BT_OBEX_SERVICE, BT_PBAP_GET_PHONEBOOK_SIZE,
134 in_param1, in_param2, in_param3, in_param4, &out_param);
136 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
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)
148 BT_CHECK_ENABLED(return);
149 BT_CHECK_PBAP_INITIALIZED(return);
152 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
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);
161 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
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)
173 BT_CHECK_ENABLED(return);
174 BT_CHECK_PBAP_INITIALIZED(return);
177 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
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));
184 result = _bt_send_request(BT_OBEX_SERVICE, BT_PBAP_GET_LIST,
185 in_param1, in_param2, in_param3, in_param4, &out_param);
187 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
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)
199 BT_CHECK_ENABLED(return);
200 BT_CHECK_PBAP_INITIALIZED(return);
203 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
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));
209 result = _bt_send_request(BT_OBEX_SERVICE, BT_PBAP_PULL_VCARD,
210 in_param1, in_param2, in_param3, in_param4, &out_param);
212 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
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)
223 BT_CHECK_ENABLED(return);
224 BT_CHECK_PBAP_INITIALIZED(return);
227 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
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));
233 result = _bt_send_request(BT_OBEX_SERVICE, BT_PBAP_PHONEBOOK_SEARCH,
234 in_param1, in_param2, in_param3, in_param4, &out_param);
236 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);