4 * Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
20 #include "bluetooth-api.h"
21 #include "bt-internal-types.h"
23 #include "bt-common.h"
24 #include "bt-request-sender.h"
25 #include "bt-event-handler.h"
27 BT_EXPORT_API int bluetooth_bond_device(const bluetooth_device_address_t *device_address)
30 bt_user_info_t *user_info;
32 BT_CHECK_PARAMETER(device_address, return);
33 BT_CHECK_ENABLED(return);
36 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
38 user_info = _bt_get_user_data(BT_COMMON);
39 retv_if(user_info == NULL, BLUETOOTH_ERROR_INTERNAL);
41 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
43 result = _bt_send_request_async(BT_BLUEZ_SERVICE, BT_BOND_DEVICE,
44 in_param1, in_param2, in_param3, in_param4,
45 user_info->cb, user_info->user_data);
47 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
52 BT_EXPORT_API int bluetooth_cancel_bonding(void)
56 BT_CHECK_ENABLED(return);
59 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
61 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_CANCEL_BONDING,
62 in_param1, in_param2, in_param3, in_param4, &out_param);
64 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
69 BT_EXPORT_API int bluetooth_unbond_device(const bluetooth_device_address_t *device_address)
72 bt_user_info_t *user_info;
74 BT_CHECK_PARAMETER(device_address, return);
75 BT_CHECK_ENABLED(return);
78 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
80 user_info = _bt_get_user_data(BT_COMMON);
81 retv_if(user_info == NULL, BLUETOOTH_ERROR_INTERNAL);
83 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
85 result = _bt_send_request_async(BT_BLUEZ_SERVICE, BT_UNBOND_DEVICE,
86 in_param1, in_param2, in_param3, in_param4,
87 user_info->cb, user_info->user_data);
89 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
94 BT_EXPORT_API int bluetooth_get_bonded_device(const bluetooth_device_address_t *device_address,
95 bluetooth_device_info_t *dev_info)
99 BT_CHECK_PARAMETER(device_address, return);
100 BT_CHECK_PARAMETER(dev_info, return);
101 BT_CHECK_ENABLED(return);
104 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
106 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
108 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_GET_BONDED_DEVICE,
109 in_param1, in_param2, in_param3, in_param4, &out_param);
111 if (result == BLUETOOTH_ERROR_NONE) {
112 if (out_param->len > 0) {
113 *dev_info = g_array_index(out_param,
114 bluetooth_device_info_t, 0);
116 BT_DBG("out_param length is 0!!");
120 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
125 BT_EXPORT_API int bluetooth_get_remote_device(const bluetooth_device_address_t *device_address)
127 return BLUETOOTH_ERROR_NONE;
130 BT_EXPORT_API int bluetooth_search_service(const bluetooth_device_address_t *device_address)
133 bt_user_info_t *user_info;
135 BT_CHECK_PARAMETER(device_address, return);
136 BT_CHECK_ENABLED(return);
139 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
141 user_info = _bt_get_user_data(BT_COMMON);
142 retv_if(user_info == NULL, BLUETOOTH_ERROR_INTERNAL);
144 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
146 result = _bt_send_request_async(BT_BLUEZ_SERVICE, BT_SEARCH_SERVICE,
147 in_param1, in_param2, in_param3, in_param4,
148 user_info->cb, user_info->user_data);
150 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
155 BT_EXPORT_API int bluetooth_cancel_service_search(void)
159 BT_CHECK_ENABLED(return);
162 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
164 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_CANCEL_SEARCH_SERVICE,
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);
172 BT_EXPORT_API int bluetooth_set_alias(const bluetooth_device_address_t *device_address,
176 char alias_name[BLUETOOTH_DEVICE_NAME_LENGTH_MAX];
178 BT_CHECK_PARAMETER(device_address, return);
179 BT_CHECK_PARAMETER(alias, return);
180 BT_CHECK_ENABLED(return);
183 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
185 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
186 g_strlcpy(alias_name, alias, sizeof(alias_name));
187 g_array_append_vals(in_param2, alias_name, BLUETOOTH_DEVICE_NAME_LENGTH_MAX);
189 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_SET_ALIAS,
190 in_param1, in_param2, in_param3, in_param4, &out_param);
192 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
197 BT_EXPORT_API int bluetooth_authorize_device(const bluetooth_device_address_t *device_address,
202 BT_CHECK_PARAMETER(device_address, return);
203 BT_CHECK_ENABLED(return);
206 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
208 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
209 g_array_append_vals(in_param2, &authorized, sizeof(gboolean));
211 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_SET_AUTHORIZATION,
212 in_param1, in_param2, in_param3, in_param4, &out_param);
214 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
219 BT_EXPORT_API int bluetooth_is_device_connected(const bluetooth_device_address_t *device_address,
220 bluetooth_service_type_t type,
221 gboolean *is_connected)
225 BT_CHECK_PARAMETER(device_address, return);
226 BT_CHECK_PARAMETER(is_connected, return);
227 BT_CHECK_ENABLED(return);
230 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
232 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
233 g_array_append_vals(in_param2, &type, sizeof(int));
235 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_IS_DEVICE_CONNECTED,
236 in_param1, in_param2, in_param3, in_param4, &out_param);
238 if (result == BLUETOOTH_ERROR_NONE) {
239 *is_connected = g_array_index(out_param, gboolean, 0);
242 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);