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 #include "bluetooth-api.h"
19 #include "bt-internal-types.h"
21 #include "bt-common.h"
22 #include "bt-request-sender.h"
23 #include "bt-event-handler.h"
25 #ifdef TIZEN_FEATURE_BT_DPM
29 BT_EXPORT_API int bluetooth_bond_device(const bluetooth_device_address_t *device_address)
32 bt_user_info_t *user_info;
34 BT_CHECK_PARAMETER(device_address, return);
35 BT_CHECK_ENABLED(return);
37 if (_bt_check_privilege(BT_CHECK_PRIVILEGE, BT_BOND_DEVICE)
38 == BLUETOOTH_ERROR_PERMISSION_DEINED) {
39 BT_ERR("Don't have a privilege to use this API");
40 return BLUETOOTH_ERROR_PERMISSION_DEINED;
43 #ifdef TIZEN_FEATURE_BT_DPM
44 if (_bt_check_dpm(BT_DPM_PAIRING, NULL) == BT_DPM_RESTRICTED) {
45 BT_ERR("Not allow to pair the device");
46 return BLUETOOTH_ERROR_DEVICE_POLICY_RESTRICTION;
49 if (_bt_check_dpm(BT_DPM_ADDRESS, (void *)device_address) == BT_DPM_RESTRICTED) {
50 BT_ERR("Blacklist device");
51 return BLUETOOTH_ERROR_DEVICE_POLICY_RESTRICTION;
55 user_info = _bt_get_user_data(BT_COMMON);
56 retv_if(user_info->cb == NULL, BLUETOOTH_ERROR_INTERNAL);
59 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
61 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
63 result = _bt_send_request_async(BT_BLUEZ_SERVICE, BT_BOND_DEVICE,
64 in_param1, in_param2, in_param3, in_param4,
65 user_info->cb, user_info->user_data);
67 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
72 BT_EXPORT_API int bluetooth_bond_device_by_type(
73 const bluetooth_device_address_t *device_address,
74 bluetooth_conn_type_t conn_type)
77 bt_user_info_t *user_info;
79 BT_CHECK_PARAMETER(device_address, return);
80 BT_CHECK_ENABLED(return);
82 if (_bt_check_privilege(BT_CHECK_PRIVILEGE, BT_BOND_DEVICE_BY_TYPE)
83 == BLUETOOTH_ERROR_PERMISSION_DEINED) {
84 BT_ERR("Don't have a privilege to use this API");
85 return BLUETOOTH_ERROR_PERMISSION_DEINED;
89 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
91 user_info = _bt_get_user_data(BT_COMMON);
92 retv_if(user_info == NULL, BLUETOOTH_ERROR_INTERNAL);
94 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
95 g_array_append_vals(in_param2, &conn_type, sizeof(unsigned short));
97 result = _bt_send_request_async(BT_BLUEZ_SERVICE, BT_BOND_DEVICE_BY_TYPE,
98 in_param1, in_param2, in_param3, in_param4,
99 user_info->cb, user_info->user_data);
101 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
106 BT_EXPORT_API int bluetooth_cancel_bonding(void)
110 BT_CHECK_ENABLED(return);
113 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
115 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_CANCEL_BONDING,
116 in_param1, in_param2, in_param3, in_param4, &out_param);
118 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
123 BT_EXPORT_API int bluetooth_unbond_device(const bluetooth_device_address_t *device_address)
126 bt_user_info_t *user_info;
128 BT_CHECK_PARAMETER(device_address, return);
129 BT_CHECK_ENABLED(return);
131 if (_bt_check_privilege(BT_CHECK_PRIVILEGE, BT_UNBOND_DEVICE)
132 == BLUETOOTH_ERROR_PERMISSION_DEINED) {
133 BT_ERR("Don't have a privilege to use this API");
134 return BLUETOOTH_ERROR_PERMISSION_DEINED;
137 user_info = _bt_get_user_data(BT_COMMON);
138 retv_if(user_info->cb == NULL, BLUETOOTH_ERROR_INTERNAL);
141 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
143 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
145 result = _bt_send_request_async(BT_BLUEZ_SERVICE, BT_UNBOND_DEVICE,
146 in_param1, in_param2, in_param3, in_param4,
147 user_info->cb, user_info->user_data);
149 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
154 BT_EXPORT_API int bluetooth_get_bonded_device(const bluetooth_device_address_t *device_address,
155 bluetooth_device_info_t *dev_info)
159 BT_CHECK_PARAMETER(device_address, return);
160 BT_CHECK_PARAMETER(dev_info, return);
161 BT_CHECK_ENABLED(return);
164 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
166 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
168 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_GET_BONDED_DEVICE,
169 in_param1, in_param2, in_param3, in_param4, &out_param);
171 if (result == BLUETOOTH_ERROR_NONE) {
172 if (out_param->len > 0) {
173 *dev_info = g_array_index(out_param,
174 bluetooth_device_info_t, 0);
176 BT_ERR("out_param length is 0!!");
180 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
185 BT_EXPORT_API int bluetooth_get_is_alias_set(const bluetooth_device_address_t *device_address,
186 gboolean *is_alias_set)
190 BT_CHECK_PARAMETER(device_address, return);
191 BT_CHECK_PARAMETER(is_alias_set, return);
192 BT_CHECK_ENABLED(return);
195 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
197 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
199 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_GET_IS_ALIAS_SET,
200 in_param1, in_param2, in_param3, in_param4, &out_param);
202 if (result == BLUETOOTH_ERROR_NONE)
203 *is_alias_set = g_array_index(out_param, gboolean, 0);
205 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
210 BT_EXPORT_API int bluetooth_get_remote_device(const bluetooth_device_address_t *device_address)
212 return BLUETOOTH_ERROR_NONE;
215 BT_EXPORT_API int bluetooth_search_service(const bluetooth_device_address_t *device_address)
218 bt_user_info_t *user_info;
220 BT_CHECK_PARAMETER(device_address, return);
221 BT_CHECK_ENABLED(return);
223 if (_bt_check_privilege(BT_CHECK_PRIVILEGE, BT_SEARCH_SERVICE)
224 == BLUETOOTH_ERROR_PERMISSION_DEINED) {
225 BT_ERR("Don't have a privilege to use this API");
226 return BLUETOOTH_ERROR_PERMISSION_DEINED;
229 user_info = _bt_get_user_data(BT_COMMON);
230 retv_if(user_info->cb == NULL, BLUETOOTH_ERROR_INTERNAL);
233 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
235 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
237 result = _bt_send_request_async(BT_BLUEZ_SERVICE, BT_SEARCH_SERVICE,
238 in_param1, in_param2, in_param3, in_param4,
239 user_info->cb, user_info->user_data);
241 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
246 BT_EXPORT_API int bluetooth_cancel_service_search(void)
250 BT_CHECK_ENABLED(return);
253 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
255 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_CANCEL_SEARCH_SERVICE,
256 in_param1, in_param2, in_param3, in_param4, &out_param);
258 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
263 BT_EXPORT_API int bluetooth_set_alias(const bluetooth_device_address_t *device_address,
267 char alias_name[BLUETOOTH_DEVICE_NAME_LENGTH_MAX];
269 BT_CHECK_PARAMETER(device_address, return);
270 BT_CHECK_PARAMETER(alias, return);
271 BT_CHECK_ENABLED(return);
274 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
276 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
277 g_strlcpy(alias_name, alias, sizeof(alias_name));
278 g_array_append_vals(in_param2, alias_name, BLUETOOTH_DEVICE_NAME_LENGTH_MAX);
280 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_SET_ALIAS,
281 in_param1, in_param2, in_param3, in_param4, &out_param);
283 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
288 BT_EXPORT_API int bluetooth_authorize_device(const bluetooth_device_address_t *device_address,
293 BT_CHECK_PARAMETER(device_address, return);
294 BT_CHECK_ENABLED(return);
297 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
299 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
300 g_array_append_vals(in_param2, &authorized, sizeof(gboolean));
302 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_SET_AUTHORIZATION,
303 in_param1, in_param2, in_param3, in_param4, &out_param);
305 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
310 BT_EXPORT_API int bluetooth_is_device_connected(const bluetooth_device_address_t *device_address,
311 bluetooth_service_type_t type,
312 gboolean *is_connected)
316 BT_CHECK_PARAMETER(device_address, return);
317 BT_CHECK_PARAMETER(is_connected, return);
318 BT_CHECK_ENABLED(return);
320 #ifdef TIZEN_FEATURE_BT_RFCOMM_DIRECT
321 if (type & BLUETOOTH_RFCOMM_SERVICE) {
322 result = bluetooth_rfcomm_client_is_connected(device_address, is_connected);
323 if (*is_connected == FALSE)
324 result = bluetooth_rfcomm_server_is_connected(device_address, is_connected);
331 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
333 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
334 g_array_append_vals(in_param2, &type, sizeof(int));
336 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_IS_DEVICE_CONNECTED,
337 in_param1, in_param2, in_param3, in_param4, &out_param);
339 if (result == BLUETOOTH_ERROR_NONE)
340 *is_connected = g_array_index(out_param, gboolean, 0);
342 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
347 #ifdef TIZEN_GATT_CLIENT
348 BT_EXPORT_API int bluetooth_connect_le(const bluetooth_device_address_t *device_address,
349 gboolean auto_connect, int client_id)
351 BT_EXPORT_API int bluetooth_connect_le(const bluetooth_device_address_t *device_address, gboolean auto_connect)
355 bt_user_info_t *user_info;
357 BT_CHECK_PARAMETER(device_address, return);
358 BT_CHECK_ENABLED_ANY(return);
360 if (_bt_check_privilege(BT_CHECK_PRIVILEGE, BT_CONNECT_LE)
361 == BLUETOOTH_ERROR_PERMISSION_DEINED) {
362 BT_ERR("Don't have a privilege to use this API");
363 return BLUETOOTH_ERROR_PERMISSION_DEINED;
367 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
369 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
370 g_array_append_vals(in_param2, &auto_connect, sizeof(gboolean));
372 #ifdef TIZEN_GATT_CLIENT
373 g_array_append_vals(in_param3, &client_id, sizeof(int));
376 user_info = _bt_get_user_data(BT_COMMON);
377 retv_if(user_info == NULL, BLUETOOTH_ERROR_INTERNAL);
379 BT_INFO_C("### Connect LE");
380 result = _bt_send_request_async(BT_BLUEZ_SERVICE, BT_CONNECT_LE,
381 in_param1, in_param2, in_param3, in_param4,
382 user_info->cb, user_info->user_data);
384 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
389 #ifdef TIZEN_GATT_CLIENT
390 BT_EXPORT_API int bluetooth_disconnect_le(const bluetooth_device_address_t *device_address,
393 BT_EXPORT_API int bluetooth_disconnect_le(const bluetooth_device_address_t *device_address)
397 bt_user_info_t *user_info;
399 BT_CHECK_PARAMETER(device_address, return);
400 BT_CHECK_ENABLED_ANY(return);
402 if (_bt_check_privilege(BT_CHECK_PRIVILEGE, BT_DISCONNECT_LE)
403 == BLUETOOTH_ERROR_PERMISSION_DEINED) {
404 BT_ERR("Don't have a privilege to use this API");
405 return BLUETOOTH_ERROR_PERMISSION_DEINED;
409 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
411 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
412 #ifdef TIZEN_GATT_CLIENT
413 BT_INFO("Send GATT disconnect using Client Interface [%d]", client_id);
414 g_array_append_vals(in_param2, &client_id, sizeof(int));
416 user_info = _bt_get_user_data(BT_COMMON);
417 retv_if(user_info == NULL, BLUETOOTH_ERROR_INTERNAL);
419 BT_INFO_C("### Disconnect LE");
420 result = _bt_send_request_async(BT_BLUEZ_SERVICE, BT_DISCONNECT_LE,
421 in_param1, in_param2, in_param3, in_param4,
422 user_info->cb, user_info->user_data);
424 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
429 BT_EXPORT_API int bluetooth_enable_rssi(const bluetooth_device_address_t *remote_address,
430 int link_type, bt_rssi_threshold_t *rssi_threshold)
432 #ifdef __BROADCOM_PATCH__
435 BT_CHECK_ENABLED(return);
438 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
439 g_array_append_vals(in_param1, remote_address, sizeof(bluetooth_device_address_t));
440 g_array_append_vals(in_param2, &link_type, sizeof(int));
441 g_array_append_vals(in_param3, rssi_threshold, sizeof(bt_rssi_threshold_t));
443 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_ENABLE_RSSI,
444 in_param1, in_param2, in_param3, in_param4, &out_param);
446 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
450 BT_ERR("Current chipset does not support this function.");
451 return BLUETOOTH_ERROR_NOT_SUPPORT;
455 BT_EXPORT_API int bluetooth_get_rssi_strength(const bluetooth_device_address_t *remote_address, int link_type)
457 #ifdef __BROADCOM_PATCH__
460 BT_CHECK_ENABLED(return);
463 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
464 g_array_append_vals(in_param1, remote_address, sizeof(bluetooth_device_address_t));
465 g_array_append_vals(in_param2, &link_type, sizeof(int));
467 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_GET_RSSI,
468 in_param1, in_param2, in_param3, in_param4, &out_param);
470 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
474 BT_ERR("Current chipset does not support this function.");
475 return BLUETOOTH_ERROR_NOT_SUPPORT;
479 BT_EXPORT_API int bluetooth_le_conn_update(const bluetooth_device_address_t *address,
480 const bluetooth_le_connection_param_t *parameters)
484 BT_CHECK_ENABLED(return);
485 BT_CHECK_PARAMETER(address, return);
486 BT_CHECK_PARAMETER(parameters, return);
489 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
491 g_array_append_vals(in_param1, address,
492 sizeof(bluetooth_device_address_t));
493 g_array_append_vals(in_param2, parameters,
494 sizeof(bluetooth_le_connection_param_t));
496 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_LE_CONN_UPDATE,
497 in_param1, in_param2, in_param3, in_param4, &out_param);
499 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
504 BT_EXPORT_API int bluetooth_get_connected_link_type(
505 const bluetooth_device_address_t *device_address,
506 bluetooth_connected_link_t *connected)
510 BT_CHECK_PARAMETER(device_address, return);
511 BT_CHECK_ENABLED(return);
514 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
516 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
518 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_GET_CONNECTED_LINK_TYPE,
519 in_param1, in_param2, in_param3, in_param4, &out_param);
521 if (result == BLUETOOTH_ERROR_NONE)
522 *connected = g_array_index(out_param, guint, 0);
524 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
529 BT_EXPORT_API int bluetooth_set_pin_code(
530 const bluetooth_device_address_t *device_address,
531 const bluetooth_device_pin_code_t *pin_code)
535 BT_CHECK_PARAMETER(device_address, return);
536 BT_CHECK_PARAMETER(pin_code, return);
537 BT_CHECK_ENABLED(return);
540 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
542 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
543 g_array_append_vals(in_param2, pin_code, sizeof(bluetooth_device_pin_code_t));
545 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_SET_PIN_CODE,
546 in_param1, in_param2, in_param3, in_param4, &out_param);
548 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
553 BT_EXPORT_API int bluetooth_unset_pin_code(
554 const bluetooth_device_address_t *device_address)
558 BT_CHECK_PARAMETER(device_address, return);
559 BT_CHECK_ENABLED(return);
562 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
564 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
566 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_UNSET_PIN_CODE,
567 in_param1, in_param2, in_param3, in_param4, &out_param);
569 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
574 BT_EXPORT_API int bluetooth_update_le_connection_mode(const bluetooth_device_address_t *address,
575 const bluetooth_le_connection_mode_t mode)
579 BT_CHECK_ENABLED(return);
580 BT_CHECK_PARAMETER(address, return);
583 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
585 g_array_append_vals(in_param1, address,
586 sizeof(bluetooth_device_address_t));
587 g_array_append_vals(in_param2, &mode,
588 sizeof(bluetooth_le_connection_mode_t));
590 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_UPDATE_LE_CONNECTION_MODE,
591 in_param1, in_param2, in_param3, in_param4, &out_param);
593 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
598 BT_EXPORT_API int bluetooth_request_att_mtu(const bluetooth_device_address_t *device_address, unsigned int mtu)
601 bt_user_info_t *user_info;
603 BT_CHECK_PARAMETER(device_address, return);
604 BT_CHECK_ENABLED_ANY(return);
606 if (mtu > BLUETOOTH_MAX_ATT_MTU)
607 return BLUETOOTH_ERROR_INVALID_PARAM;
609 if (_bt_check_privilege(BT_CHECK_PRIVILEGE, BT_REQ_ATT_MTU)
610 == BLUETOOTH_ERROR_PERMISSION_DEINED) {
611 BT_ERR("Don't have a privilege to use this API");
612 return BLUETOOTH_ERROR_PERMISSION_DEINED;
616 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
618 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
619 g_array_append_vals(in_param2, &mtu, sizeof(unsigned int));
621 user_info = _bt_get_user_data(BT_COMMON);
622 retv_if(user_info == NULL, BLUETOOTH_ERROR_INTERNAL);
624 result = _bt_send_request_async(BT_BLUEZ_SERVICE, BT_REQ_ATT_MTU,
625 in_param1, in_param2, in_param3, in_param4,
626 user_info->cb, user_info->user_data);
628 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
633 BT_EXPORT_API int bluetooth_get_att_mtu(const bluetooth_device_address_t *device_address,
638 BT_CHECK_PARAMETER(device_address, return);
639 BT_CHECK_PARAMETER(mtu, return);
640 BT_CHECK_ENABLED(return);
643 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
645 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
647 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_GET_ATT_MTU,
648 in_param1, in_param2, in_param3, in_param4, &out_param);
650 if (result == BLUETOOTH_ERROR_NONE)
651 *mtu = g_array_index(out_param, unsigned int, 0);
653 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
658 BT_EXPORT_API int bluetooth_get_device_ida(const bluetooth_device_address_t *device_rpa,
659 bluetooth_device_address_t *id_address)
663 BT_CHECK_PARAMETER(device_rpa, return);
664 BT_CHECK_PARAMETER(id_address, return);
665 BT_CHECK_ENABLED_ANY(return);
668 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
670 g_array_append_vals(in_param1, device_rpa, sizeof(bluetooth_device_address_t));
672 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_GET_DEVICE_IDA,
673 in_param1, in_param2, in_param3, in_param4, &out_param);
675 if (result == BLUETOOTH_ERROR_NONE) {
676 *id_address = g_array_index(out_param,
677 bluetooth_device_address_t, 0);
680 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
685 BT_EXPORT_API int bluetooth_force_hcidump(int timeout)
689 BT_CHECK_ENABLED_ANY(return);
692 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
694 g_array_append_vals(in_param1, &timeout, sizeof(int));
696 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_ENABLE_FORCE_HCI_DUMP,
697 in_param1, in_param2, in_param3, in_param4, &out_param);
699 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
704 BT_EXPORT_API int bluetooth_set_profile_trusted(
705 const bluetooth_device_address_t *device_address,
706 int profile, int trust)
710 BT_CHECK_PARAMETER(device_address, return);
711 BT_CHECK_ENABLED(return);
714 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
716 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
717 g_array_append_vals(in_param2, &profile, sizeof(int));
718 g_array_append_vals(in_param3, &trust, sizeof(int));
720 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_SET_PROFILE_TRUSTED,
721 in_param1, in_param2, in_param3, in_param4, &out_param);
723 if (result == BLUETOOTH_ERROR_NONE)
724 BT_DBG("SUCCESSFUL");
726 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
731 BT_EXPORT_API int bluetooth_get_profile_trusted(
732 const bluetooth_device_address_t *device_address,
733 int profile, int *trust)
736 int trust_profile = 0;
737 BT_CHECK_PARAMETER(device_address, return);
738 BT_CHECK_ENABLED(return);
741 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
743 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
744 g_array_append_vals(in_param2, &profile, sizeof(int));
746 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_GET_PROFILE_TRUSTED,
747 in_param1, in_param2, in_param3, in_param4, &out_param);
749 if (result == BLUETOOTH_ERROR_NONE) {
750 trust_profile = g_array_index(out_param, guint, 0);
751 BT_DBG("SUCCESSFUL");
753 BT_DBG("TRUST %d", trust_profile);
754 *trust = trust_profile;
755 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
760 BT_EXPORT_API int bluetooth_passkey_reply(char *passkey, gboolean reply)
764 char str_passkey[BLUETOOTH_DEVICE_PASSKEY_LENGTH_MAX];
766 BT_CHECK_PARAMETER(passkey, return);
767 BT_CHECK_ENABLED(return);
770 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
772 g_strlcpy(str_passkey, passkey, sizeof(str_passkey));
773 g_array_append_vals(in_param1, str_passkey, BLUETOOTH_DEVICE_PASSKEY_LENGTH_MAX);
774 g_array_append_vals(in_param2, &reply, sizeof(gboolean));
776 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_PASSKEY_REPLY,
777 in_param1, in_param2, in_param3, in_param4, &out_param);
779 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
784 BT_EXPORT_API int bluetooth_passkey_confirmation_reply(gboolean reply)
788 BT_CHECK_ENABLED(return);
791 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
792 g_array_append_vals(in_param1, &reply, sizeof(gboolean));
793 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_PASSKEY_CONFIRMATION_REPLY,
794 in_param1, in_param2, in_param3, in_param4, &out_param);
795 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);