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_DPM_ENABLE
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_DPM_ENABLE
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);
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 BT_EXPORT_API int bluetooth_connect_le(const bluetooth_device_address_t *device_address, gboolean auto_connect)
350 bt_user_info_t *user_info;
352 BT_CHECK_PARAMETER(device_address, return);
353 BT_CHECK_ENABLED_ANY(return);
355 if (_bt_check_privilege(BT_CHECK_PRIVILEGE, BT_CONNECT_LE)
356 == BLUETOOTH_ERROR_PERMISSION_DEINED) {
357 BT_ERR("Don't have a privilege to use this API");
358 return BLUETOOTH_ERROR_PERMISSION_DEINED;
362 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
364 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
365 g_array_append_vals(in_param2, &auto_connect, sizeof(gboolean));
367 user_info = _bt_get_user_data(BT_COMMON);
368 retv_if(user_info == NULL, BLUETOOTH_ERROR_INTERNAL);
370 BT_INFO_C("### Connect LE");
371 result = _bt_send_request_async(BT_BLUEZ_SERVICE, BT_CONNECT_LE,
372 in_param1, in_param2, in_param3, in_param4,
373 user_info->cb, user_info->user_data);
375 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
380 BT_EXPORT_API int bluetooth_disconnect_le(const bluetooth_device_address_t *device_address)
383 bt_user_info_t *user_info;
385 BT_CHECK_PARAMETER(device_address, return);
386 BT_CHECK_ENABLED_ANY(return);
388 if (_bt_check_privilege(BT_CHECK_PRIVILEGE, BT_DISCONNECT_LE)
389 == BLUETOOTH_ERROR_PERMISSION_DEINED) {
390 BT_ERR("Don't have a privilege to use this API");
391 return BLUETOOTH_ERROR_PERMISSION_DEINED;
395 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
397 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
398 user_info = _bt_get_user_data(BT_COMMON);
399 retv_if(user_info == NULL, BLUETOOTH_ERROR_INTERNAL);
401 BT_INFO_C("### Disconnect LE");
402 result = _bt_send_request_async(BT_BLUEZ_SERVICE, BT_DISCONNECT_LE,
403 in_param1, in_param2, in_param3, in_param4,
404 user_info->cb, user_info->user_data);
406 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
411 BT_EXPORT_API int bluetooth_enable_rssi(const bluetooth_device_address_t *remote_address,
412 int link_type, bt_rssi_threshold_t *rssi_threshold)
414 #ifdef __BROADCOM_PATCH__
417 BT_CHECK_ENABLED(return);
420 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
421 g_array_append_vals(in_param1, remote_address, sizeof(bluetooth_device_address_t));
422 g_array_append_vals(in_param2, &link_type, sizeof(int));
423 g_array_append_vals(in_param3, rssi_threshold, sizeof(bt_rssi_threshold_t));
425 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_ENABLE_RSSI,
426 in_param1, in_param2, in_param3, in_param4, &out_param);
428 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
432 BT_ERR("Current chipset does not support this function.");
433 return BLUETOOTH_ERROR_NOT_SUPPORT;
437 BT_EXPORT_API int bluetooth_get_rssi_strength(const bluetooth_device_address_t *remote_address, int link_type)
439 #ifdef __BROADCOM_PATCH__
442 BT_CHECK_ENABLED(return);
445 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
446 g_array_append_vals(in_param1, remote_address, sizeof(bluetooth_device_address_t));
447 g_array_append_vals(in_param2, &link_type, sizeof(int));
449 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_GET_RSSI,
450 in_param1, in_param2, in_param3, in_param4, &out_param);
452 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
456 BT_ERR("Current chipset does not support this function.");
457 return BLUETOOTH_ERROR_NOT_SUPPORT;
461 BT_EXPORT_API int bluetooth_le_conn_update(const bluetooth_device_address_t *address,
462 const bluetooth_le_connection_param_t *parameters)
466 BT_CHECK_ENABLED(return);
467 BT_CHECK_PARAMETER(address, return);
468 BT_CHECK_PARAMETER(parameters, return);
471 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
473 g_array_append_vals(in_param1, address,
474 sizeof(bluetooth_device_address_t));
475 g_array_append_vals(in_param2, parameters,
476 sizeof(bluetooth_le_connection_param_t));
478 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_LE_CONN_UPDATE,
479 in_param1, in_param2, in_param3, in_param4, &out_param);
481 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
486 BT_EXPORT_API int bluetooth_get_connected_link_type(
487 const bluetooth_device_address_t *device_address,
488 bluetooth_connected_link_t *connected)
492 BT_CHECK_PARAMETER(device_address, return);
493 BT_CHECK_ENABLED(return);
496 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
498 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
500 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_GET_CONNECTED_LINK_TYPE,
501 in_param1, in_param2, in_param3, in_param4, &out_param);
503 if (result == BLUETOOTH_ERROR_NONE)
504 *connected = g_array_index(out_param, guint, 0);
506 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
511 BT_EXPORT_API int bluetooth_set_pin_code(
512 const bluetooth_device_address_t *device_address,
513 const bluetooth_device_pin_code_t *pin_code)
517 BT_CHECK_PARAMETER(device_address, return);
518 BT_CHECK_PARAMETER(pin_code, return);
519 BT_CHECK_ENABLED(return);
522 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
524 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
525 g_array_append_vals(in_param2, pin_code, sizeof(bluetooth_device_pin_code_t));
527 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_SET_PIN_CODE,
528 in_param1, in_param2, in_param3, in_param4, &out_param);
530 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
535 BT_EXPORT_API int bluetooth_unset_pin_code(
536 const bluetooth_device_address_t *device_address)
540 BT_CHECK_PARAMETER(device_address, return);
541 BT_CHECK_ENABLED(return);
544 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
546 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
548 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_UNSET_PIN_CODE,
549 in_param1, in_param2, in_param3, in_param4, &out_param);
551 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
556 BT_EXPORT_API int bluetooth_update_le_connection_mode(const bluetooth_device_address_t *address,
557 const bluetooth_le_connection_mode_t mode)
561 BT_CHECK_ENABLED(return);
562 BT_CHECK_PARAMETER(address, return);
565 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
567 g_array_append_vals(in_param1, address,
568 sizeof(bluetooth_device_address_t));
569 g_array_append_vals(in_param2, &mode,
570 sizeof(bluetooth_le_connection_mode_t));
572 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_UPDATE_LE_CONNECTION_MODE,
573 in_param1, in_param2, in_param3, in_param4, &out_param);
575 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
580 BT_EXPORT_API int bluetooth_request_att_mtu(const bluetooth_device_address_t *device_address, unsigned int mtu)
583 bt_user_info_t *user_info;
585 BT_CHECK_PARAMETER(device_address, return);
586 BT_CHECK_ENABLED_ANY(return);
588 if (mtu > BLUETOOTH_MAX_ATT_MTU)
589 return BLUETOOTH_ERROR_INVALID_PARAM;
591 if (_bt_check_privilege(BT_CHECK_PRIVILEGE, BT_REQ_ATT_MTU)
592 == BLUETOOTH_ERROR_PERMISSION_DEINED) {
593 BT_ERR("Don't have a privilege to use this API");
594 return BLUETOOTH_ERROR_PERMISSION_DEINED;
598 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
600 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
601 g_array_append_vals(in_param2, &mtu, sizeof(unsigned int));
603 user_info = _bt_get_user_data(BT_COMMON);
604 retv_if(user_info == NULL, BLUETOOTH_ERROR_INTERNAL);
606 result = _bt_send_request_async(BT_BLUEZ_SERVICE, BT_REQ_ATT_MTU,
607 in_param1, in_param2, in_param3, in_param4,
608 user_info->cb, user_info->user_data);
610 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
615 BT_EXPORT_API int bluetooth_get_att_mtu(const bluetooth_device_address_t *device_address,
620 BT_CHECK_PARAMETER(device_address, return);
621 BT_CHECK_PARAMETER(mtu, return);
622 BT_CHECK_ENABLED(return);
625 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
627 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
629 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_GET_ATT_MTU,
630 in_param1, in_param2, in_param3, in_param4, &out_param);
632 if (result == BLUETOOTH_ERROR_NONE)
633 *mtu = g_array_index(out_param, unsigned int, 0);
635 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
640 BT_EXPORT_API int bluetooth_get_device_ida(const bluetooth_device_address_t *device_rpa,
641 bluetooth_device_address_t *id_address)
645 BT_CHECK_PARAMETER(device_rpa, return);
646 BT_CHECK_PARAMETER(id_address, return);
647 BT_CHECK_ENABLED_ANY(return);
650 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
652 g_array_append_vals(in_param1, device_rpa, sizeof(bluetooth_device_address_t));
654 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_GET_DEVICE_IDA,
655 in_param1, in_param2, in_param3, in_param4, &out_param);
657 if (result == BLUETOOTH_ERROR_NONE) {
658 *id_address = g_array_index(out_param,
659 bluetooth_device_address_t, 0);
662 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
667 BT_EXPORT_API int bluetooth_force_hcidump(int timeout)
671 BT_CHECK_ENABLED_ANY(return);
674 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
676 g_array_append_vals(in_param1, &timeout, sizeof(int));
678 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_ENABLE_FORCE_HCI_DUMP,
679 in_param1, in_param2, in_param3, in_param4, &out_param);
681 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
686 BT_EXPORT_API int bluetooth_set_profile_trusted(
687 const bluetooth_device_address_t *device_address,
688 int profile, int trust)
692 BT_CHECK_PARAMETER(device_address, return);
693 BT_CHECK_ENABLED(return);
696 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
698 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
699 g_array_append_vals(in_param2, &profile, sizeof(int));
700 g_array_append_vals(in_param3, &trust, sizeof(int));
702 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_SET_PROFILE_TRUSTED,
703 in_param1, in_param2, in_param3, in_param4, &out_param);
705 if (result == BLUETOOTH_ERROR_NONE)
706 BT_DBG("SUCCESSFUL");
708 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
713 BT_EXPORT_API int bluetooth_get_profile_trusted(
714 const bluetooth_device_address_t *device_address,
715 int profile, int *trust)
718 int trust_profile = 0;
719 BT_CHECK_PARAMETER(device_address, return);
720 BT_CHECK_ENABLED(return);
723 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
725 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
726 g_array_append_vals(in_param2, &profile, sizeof(int));
728 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_GET_PROFILE_TRUSTED,
729 in_param1, in_param2, in_param3, in_param4, &out_param);
731 if (result == BLUETOOTH_ERROR_NONE) {
732 trust_profile = g_array_index(out_param, guint, 0);
733 BT_DBG("SUCCESSFUL");
735 BT_DBG("TRUST %d", trust_profile);
736 *trust = trust_profile;
737 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
742 BT_EXPORT_API int bluetooth_set_profile_restricted(
743 const bluetooth_device_address_t *device_address,
744 int profile, int restricted)
748 BT_CHECK_PARAMETER(device_address, return);
749 BT_CHECK_ENABLED(return);
752 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
754 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
755 g_array_append_vals(in_param2, &profile, sizeof(int));
756 g_array_append_vals(in_param3, &restricted, sizeof(int));
758 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_SET_PROFILE_RESTRICTED,
759 in_param1, in_param2, in_param3, in_param4, &out_param);
761 if (result == BLUETOOTH_ERROR_NONE)
762 BT_DBG("SUCCESSFUL");
764 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
769 BT_EXPORT_API int bluetooth_get_profile_restricted(
770 const bluetooth_device_address_t *device_address,
771 int profile, int *restricted)
774 int restrict_profile = 0;
775 BT_CHECK_PARAMETER(device_address, return);
776 BT_CHECK_ENABLED(return);
779 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
781 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
782 g_array_append_vals(in_param2, &profile, sizeof(int));
784 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_GET_PROFILE_RESTRICTED,
785 in_param1, in_param2, in_param3, in_param4, &out_param);
787 if (result == BLUETOOTH_ERROR_NONE) {
788 restrict_profile = g_array_index(out_param, guint, 0);
789 BT_DBG("SUCCESSFUL");
791 BT_DBG("Restricted %d", restrict_profile);
792 *restricted = restrict_profile;
793 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
798 BT_EXPORT_API int bluetooth_passkey_reply(char *passkey, gboolean reply)
802 char str_passkey[BLUETOOTH_DEVICE_PASSKEY_LENGTH_MAX];
804 BT_CHECK_PARAMETER(passkey, return);
805 BT_CHECK_ENABLED(return);
808 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
810 g_strlcpy(str_passkey, passkey, sizeof(str_passkey));
811 g_array_append_vals(in_param1, str_passkey, BLUETOOTH_DEVICE_PASSKEY_LENGTH_MAX);
812 g_array_append_vals(in_param2, &reply, sizeof(gboolean));
814 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_PASSKEY_REPLY,
815 in_param1, in_param2, in_param3, in_param4, &out_param);
817 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
822 BT_EXPORT_API int bluetooth_passkey_confirmation_reply(gboolean reply)
826 BT_CHECK_ENABLED(return);
829 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
830 g_array_append_vals(in_param1, &reply, sizeof(gboolean));
831 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_PASSKEY_CONFIRMATION_REPLY,
832 in_param1, in_param2, in_param3, in_param4, &out_param);
833 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);