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.
20 #include "bluetooth-api.h"
21 #include "bt-internal-types.h"
22 #include "bt-common.h"
23 #include "bt-request-sender.h"
24 #include "bt-event-handler.h"
25 #include "bt-event-handler.h"
28 BT_EXPORT_API int bluetooth_dpm_is_mode_allowed(void)
31 /* check VCONFKEY_BT_STATUS */
32 if (vconf_get_int(VCONFKEY_BT_DPM_STATUS, &value) != 0) {
33 BT_ERR("fail to get vconf key!");
34 return BLUETOOTH_ERROR_INTERNAL;
36 if (value != VCONFKEY_BT_DPM_STATUS_RESTRICTED)
37 return BLUETOOTH_ERROR_NONE;
39 return BLUETOOTH_ERROR_PERMISSION_DEINED;
42 static bt_dpm_status_e _bt_check_dpm_handsfree_only(void)
46 bluetooth_dpm_get_allow_mode(&mode);
48 return (mode == BLUETOOTH_DPM_HANDSFREE_ONLY ? BT_DPM_RESTRICTED : BT_DPM_ALLOWED);
51 static bt_dpm_status_e _bt_check_dpm_pairing_restriction(void)
53 bt_dpm_status_t dpm_status = BLUETOOTH_DPM_ALLOWED;
55 bluetooth_dpm_get_pairing_state(&dpm_status);
57 return (dpm_status == BLUETOOTH_DPM_RESTRICTED ? BT_DPM_RESTRICTED : BT_DPM_ALLOWED);
60 static bt_dpm_status_e _bt_check_dpm_desktop_connectivity_restriction(void)
62 bt_dpm_status_t dpm_status = BLUETOOTH_DPM_ALLOWED;
64 bluetooth_dpm_get_desktop_connectivity_state(&dpm_status);
66 return (dpm_status == BLUETOOTH_DPM_RESTRICTED ? BT_DPM_RESTRICTED : BT_DPM_ALLOWED);
69 static bt_dpm_status_e _bt_check_dpm_blacklist_device(bluetooth_device_address_t *address)
71 int ret = BLUETOOTH_DPM_RESULT_SUCCESS;
72 bt_dpm_device_list_t dev_list;
73 char device_address[BT_ADDRESS_STRING_SIZE] = { 0 };
75 _bt_convert_addr_type_to_string(device_address,
76 (unsigned char *)address->addr);
78 ret = bluetooth_dpm_get_devices_from_blacklist(&dev_list);
79 if (ret == BLUETOOTH_DPM_RESULT_SUCCESS) {
81 for (i = 0; i < dev_list.count; i++) {
82 char temp_address[BT_ADDRESS_STRING_SIZE] = { 0 };
83 _bt_convert_addr_type_to_string(temp_address,
84 (unsigned char *)dev_list.addresses[i].addr);
85 if (g_strcmp0(device_address, temp_address) == 0)
86 return BT_DPM_RESTRICTED;
88 return BT_DPM_ALLOWED;
91 return BT_DPM_NO_SERVICE;
93 return BT_DPM_ALLOWED;
96 static bt_dpm_status_e _bt_check_dpm_blacklist_uuid(char *uuid)
98 bt_dpm_status_e bt_dpm_status = BT_DPM_ALLOWED;
99 bt_dpm_status_t dpm_status = BLUETOOTH_DPM_ALLOWED;
100 bt_dpm_profile_t dpm_profile = BLUETOOTH_DPM_PROFILE_NONE;
101 bt_dpm_uuids_list_t uuid_list;
102 int ret = BLUETOOTH_DPM_RESULT_SUCCESS;
103 retv_if(!uuid, bt_dpm_status);
105 ret = bluetooth_dpm_get_uuids_from_blacklist(&uuid_list);
106 if (ret == BLUETOOTH_DPM_RESULT_SUCCESS) {
108 for (i = 0; i < uuid_list.count; i++) {
109 if (g_strcmp0(uuid, uuid_list.uuids[i]) == 0)
110 return BT_DPM_RESTRICTED;
112 return BT_DPM_ALLOWED;
115 return BT_DPM_NO_SERVICE;
118 if (g_strcmp0(BT_OPP_UUID, uuid) == 0) {
119 bt_dpm_status_t dpm_status = BLUETOOTH_DPM_ALLOWED;
120 bluetooth_dpm_get_data_transfer_state(&dpm_status);
121 return (dpm_status == BLUETOOTH_DPM_RESTRICTED ? BT_DPM_RESTRICTED : BT_DPM_ALLOWED);
123 /* TODO: MAP? see above */
125 /* ++ check MDM profile restriction ++ */
126 if (g_strcmp0(BT_A2DP_UUID, uuid) == 0)
127 dpm_profile = BLUETOOTH_DPM_POLICY_A2DP_PROFILE_STATE;
128 else if (g_strcmp0(BT_AVRCP_TARGET_UUID, uuid) == 0)
129 dpm_profile = BLUETOOTH_DPM_POLICY_AVRCP_PROFILE_STATE;
130 else if (g_strcmp0(BT_HFP_AUDIO_GATEWAY_UUID, uuid) == 0)
131 dpm_profile = BLUETOOTH_DPM_POLICY_HFP_PROFILE_STATE;
132 else if (g_strcmp0(BT_HSP_AUDIO_GATEWAY_UUID, uuid) == 0)
133 dpm_profile = BLUETOOTH_DPM_POLICY_HSP_PROFILE_STATE;
134 else if (g_strcmp0(BT_OBEX_PSE_UUID, uuid) == 0)
135 dpm_profile = BLUETOOTH_DPM_POLICY_PBAP_PROFILE_STATE;
137 if (dpm_profile != BLUETOOTH_DPM_PROFILE_NONE) {
138 ret = bluetooth_dpm_get_profile_state(dpm_profile, &dpm_status);
139 return (dpm_status == BLUETOOTH_DPM_RESTRICTED ? BT_DPM_RESTRICTED : BT_DPM_ALLOWED);
141 /* -- check DPM profile restriction -- */
143 return bt_dpm_status;
146 static bt_dpm_status_e _bt_check_dpm_transfer_restriction(void)
148 bt_dpm_status_e dpm_status = BT_DPM_ALLOWED;
149 bt_dpm_status_t dpm_value = BLUETOOTH_DPM_ALLOWED;
151 dpm_status = _bt_check_dpm_blacklist_uuid(BT_OPP_UUID);
152 /* TODO: MAP? see above */
154 if (dpm_status == BT_DPM_NO_SERVICE || dpm_status == BT_DPM_RESTRICTED)
157 bluetooth_dpm_get_data_transfer_state(&dpm_value);
159 return (dpm_value == BLUETOOTH_DPM_RESTRICTED ? BT_DPM_RESTRICTED : BT_DPM_ALLOWED);
162 static bt_dpm_status_e _bt_check_dpm_hsp_restriction(void)
164 bt_dpm_status_e dpm_status = BT_DPM_ALLOWED;
166 dpm_status = _bt_check_dpm_blacklist_uuid(BT_HFP_AUDIO_GATEWAY_UUID);
168 if (dpm_status == BT_DPM_NO_SERVICE || dpm_status == BT_DPM_RESTRICTED)
171 dpm_status = _bt_check_dpm_blacklist_uuid(BT_HSP_AUDIO_GATEWAY_UUID);
172 if (dpm_status == BT_DPM_NO_SERVICE || dpm_status == BT_DPM_RESTRICTED)
178 static bt_dpm_status_e _bt_check_dpm_a2dp_restriction(void)
180 bt_dpm_status_e dpm_status = BT_DPM_ALLOWED;
182 dpm_status = _bt_check_dpm_blacklist_uuid(BT_A2DP_UUID);
184 if (dpm_status == BT_DPM_NO_SERVICE || dpm_status == BT_DPM_RESTRICTED)
190 static bt_dpm_status_e _bt_check_dpm_avrcp_restriction(void)
192 bt_dpm_status_e dpm_status = BT_DPM_ALLOWED;
194 dpm_status = _bt_check_dpm_blacklist_uuid(BT_AVRCP_TARGET_UUID);
196 if (dpm_status == BT_DPM_NO_SERVICE || dpm_status == BT_DPM_RESTRICTED)
202 static bt_dpm_status_e _bt_check_dpm_spp_restriction(void)
204 bt_dpm_status_e dpm_status = BT_DPM_ALLOWED;
206 dpm_status = _bt_check_dpm_blacklist_uuid(BT_SPP_UUID);
208 if (dpm_status == BT_DPM_NO_SERVICE || dpm_status == BT_DPM_RESTRICTED)
214 int _bt_check_dpm(int service, void *param)
216 bt_dpm_status_e status = BT_DPM_ALLOWED;
220 status = _bt_check_dpm_handsfree_only();
223 status = _bt_check_dpm_pairing_restriction();
226 status = _bt_check_dpm_desktop_connectivity_restriction();
228 case BT_DPM_ADDRESS: {
229 status = _bt_check_dpm_blacklist_device((bluetooth_device_address_t *)param);
234 uuid = (char *)param;
235 status = _bt_check_dpm_blacklist_uuid(uuid);
239 status = _bt_check_dpm_transfer_restriction();
241 /* TODO: MAP? see above */
243 status = _bt_check_dpm_hsp_restriction();
246 status = _bt_check_dpm_a2dp_restriction();
249 status = _bt_check_dpm_avrcp_restriction();
252 status = _bt_check_dpm_spp_restriction();
255 BT_ERR("Unknown service");
262 BT_EXPORT_API int bluetooth_dpm_set_allow_mode(bt_dpm_allow_t value)
264 int result = BLUETOOTH_ERROR_NONE;
267 if (value >= BLUETOOTH_DPM_BT_ALLOWED &&
268 value <= BLUETOOTH_DPM_BT_RESTRICTED) {
269 if (vconf_set_int(VCONFKEY_BT_DPM_STATUS, value) != 0) {
270 BT_ERR("Set VCONFKEY_BT_DPM_STATUS failed\n");
271 result = BLUETOOTH_ERROR_INTERNAL;
273 result = BLUETOOTH_ERROR_NONE;
275 result = BLUETOOTH_ERROR_INVALID_PARAM;
277 if (vconf_get_int(VCONFKEY_BT_STATUS, &bt_status) < 0)
278 BT_ERR("Error in reading VCONFKEY_BT_STATUS");
280 if (bt_status == VCONFKEY_BT_STATUS_ON) {
282 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
284 g_array_append_vals(in_param1, &value, sizeof(int));
286 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_ALLOW_BT_MODE,
287 in_param1, in_param2, in_param3, in_param4, &out_param);
289 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
291 if (result == BLUETOOTH_ERROR_NONE &&
292 value == BLUETOOTH_DPM_BT_RESTRICTED) {
293 result = bluetooth_disable_adapter();
301 BT_EXPORT_API int bluetooth_dpm_get_allow_mode(bt_dpm_allow_t *value)
305 if (vconf_get_int(VCONFKEY_BT_DPM_STATUS, value) != 0) {
306 BT_ERR("fail to get vconf key!");
307 return BLUETOOTH_ERROR_INTERNAL;
309 result = BLUETOOTH_ERROR_NONE;
315 BT_EXPORT_API int bluetooth_dpm_activate_device_restriction(bt_dpm_status_t value)
319 BT_CHECK_ENABLED_ANY(return);
322 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
324 g_array_append_vals(in_param1, &value, sizeof(int));
326 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_DEVICE_RESTRITION,
327 in_param1, in_param2, in_param3, in_param4, &out_param);
329 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
335 BT_EXPORT_API int bluetooth_dpm_is_device_restriction_active(bt_dpm_status_t *value)
339 BT_CHECK_ENABLED_ANY(return);
342 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
344 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_DEVICE_RESTRITION,
345 in_param1, in_param2, in_param3, in_param4, &out_param);
347 if (result == BLUETOOTH_ERROR_NONE) {
348 if (out_param->len > 0) {
349 *value = g_array_index(out_param,
352 BT_ERR("out_param length is 0!!");
356 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
362 BT_EXPORT_API int bluetooth_dpm_activate_uuid_restriction(bt_dpm_status_t value)
366 BT_CHECK_ENABLED_ANY(return);
369 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
371 g_array_append_vals(in_param1, &value, sizeof(int));
373 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_UUID_RESTRITION,
374 in_param1, in_param2, in_param3, in_param4, &out_param);
376 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
382 BT_EXPORT_API int bluetooth_dpm_is_uuid_restriction_active(bt_dpm_status_t *value)
386 BT_CHECK_ENABLED_ANY(return);
389 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
391 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_UUID_RESTRITION,
392 in_param1, in_param2, in_param3, in_param4, &out_param);
394 if (result == BLUETOOTH_ERROR_NONE) {
395 if (out_param->len > 0) {
396 *value = g_array_index(out_param,
399 BT_ERR("out_param length is 0!!");
403 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
410 BT_EXPORT_API int bluetooth_dpm_add_devices_to_blacklist(const bluetooth_device_address_t *device_address)
414 BT_CHECK_PARAMETER(device_address, return);
415 BT_CHECK_ENABLED_ANY(return);
418 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
420 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
423 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_ADD_DEVICES_BLACKLIST,
424 in_param1, in_param2, in_param3, in_param4, &out_param);
426 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
432 BT_EXPORT_API int bluetooth_dpm_add_devices_to_whitelist(const bluetooth_device_address_t *device_address)
436 BT_CHECK_PARAMETER(device_address, return);
437 BT_CHECK_ENABLED_ANY(return);
440 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
442 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
444 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_ADD_DEVICES_WHITELIST,
445 in_param1, in_param2, in_param3, in_param4, &out_param);
447 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
454 BT_EXPORT_API int bluetooth_dpm_add_uuids_to_blacklist(const char *service_uuid)
457 char uuid[BLUETOOTH_UUID_STRING_MAX];
459 BT_CHECK_PARAMETER(service_uuid, return);
460 BT_CHECK_ENABLED_ANY(return);
464 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
466 g_strlcpy(uuid, service_uuid, sizeof(uuid));
467 g_array_append_vals(in_param1, uuid, BLUETOOTH_UUID_STRING_MAX);
469 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_ADD_UUIDS_BLACKLIST,
470 in_param1, in_param2, in_param3, in_param4, &out_param);
472 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
479 BT_EXPORT_API int bluetooth_dpm_add_uuids_to_whitelist(const char *service_uuid)
482 char uuid[BLUETOOTH_UUID_STRING_MAX];
484 BT_CHECK_PARAMETER(service_uuid, return);
485 BT_CHECK_ENABLED_ANY(return);
488 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
490 g_strlcpy(uuid, service_uuid, sizeof(uuid));
491 g_array_append_vals(in_param1, uuid, BLUETOOTH_UUID_STRING_MAX);
493 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_ADD_UUIDS_WHITELIST,
494 in_param1, in_param2, in_param3, in_param4, &out_param);
496 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
502 BT_EXPORT_API int bluetooth_dpm_clear_devices_from_blacklist(void)
506 BT_CHECK_ENABLED_ANY(return);
509 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
511 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_CLEAR_DEVICES_BLACKLIST,
512 in_param1, in_param2, in_param3, in_param4, &out_param);
514 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
520 BT_EXPORT_API int bluetooth_dpm_clear_devices_from_whitelist(void)
524 BT_CHECK_ENABLED_ANY(return);
527 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
529 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_CLEAR_DEVICES_WHITELIST,
530 in_param1, in_param2, in_param3, in_param4, &out_param);
532 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
538 BT_EXPORT_API int bluetooth_dpm_clear_uuids_from_blacklist(void)
542 BT_CHECK_ENABLED_ANY(return);
545 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
547 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_CLEAR_UUIDS_BLACKLIST,
548 in_param1, in_param2, in_param3, in_param4, &out_param);
550 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
556 BT_EXPORT_API int bluetooth_dpm_clear_uuids_from_whitelist(void)
560 BT_CHECK_ENABLED_ANY(return);
563 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
565 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_CLEAR_UUIDS_WHITELIST,
566 in_param1, in_param2, in_param3, in_param4, &out_param);
568 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
574 static void _bluetooth_extract_dpm_device_info(int count,
575 bt_dpm_device_list_t *dst_info,
576 bt_dpm_device_list_t *src_info)
580 for (i = 0; i < count; i++) {
581 memset(dst_info->addresses[i].addr, 0,
582 BLUETOOTH_ADDRESS_LENGTH);
584 g_strlcpy((gchar *)dst_info->addresses[i].addr, (gchar *)src_info->addresses[i].addr,
585 BLUETOOTH_ADDRESS_LENGTH);
587 // BT_DBG("address[%d] : %s", i, dst_info->addresses[i].addr);
591 static void _bluetooth_extract_dpm_uuid_info(int count,
592 bt_dpm_uuids_list_t *dst_info,
593 bt_dpm_uuids_list_t *src_info)
597 for (i = 0; i < count; i++) {
598 memset(dst_info->uuids[i], 0,
599 BLUETOOTH_UUID_STRING_MAX);
601 g_strlcpy(dst_info->uuids[i], src_info->uuids[i],
602 BLUETOOTH_UUID_STRING_MAX);
604 BT_DBG("uuids[%d] : %s", i, dst_info->uuids[i]);
608 BT_EXPORT_API int bluetooth_dpm_get_devices_from_blacklist(bt_dpm_device_list_t *device_list)
611 bt_dpm_device_list_t *devices = NULL;
613 BT_CHECK_ENABLED_ANY(return);
616 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
618 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_DEVICES_BLACKLIST,
619 in_param1, in_param2, in_param3, in_param4, &out_param);
621 if (result == BLUETOOTH_ERROR_NONE) {
622 devices = &g_array_index(out_param, bt_dpm_device_list_t, 0);
623 BT_DBG("device_list->count : %d", devices->count);
625 if (devices->count == 0) {
626 BT_ERR("device_list->count is zero !");
627 result = BLUETOOTH_ERROR_NOT_FOUND;
630 device_list->count = devices->count;
632 _bluetooth_extract_dpm_device_info(devices->count,
633 device_list, devices);
635 BT_ERR("Get Devices list Failed");
638 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
643 BT_EXPORT_API int bluetooth_dpm_get_devices_from_whitelist(bt_dpm_device_list_t *device_list)
646 bt_dpm_device_list_t *devices = NULL;
648 BT_CHECK_ENABLED_ANY(return);
651 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
653 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_DEVICES_WHITELIST,
654 in_param1, in_param2, in_param3, in_param4, &out_param);
656 if (result == BLUETOOTH_ERROR_NONE) {
657 devices = &g_array_index(out_param, bt_dpm_device_list_t, 0);
658 BT_DBG("device_list->count : %d", devices->count);
660 if (devices->count == 0) {
661 BT_ERR("device_list->count is zero !");
662 result = BLUETOOTH_ERROR_NOT_FOUND;
665 device_list->count = devices->count;
667 _bluetooth_extract_dpm_device_info(devices->count,
668 device_list, devices);
671 BT_ERR("Get Devices list Failed");
673 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
678 BT_EXPORT_API int bluetooth_dpm_get_uuids_from_blacklist(bt_dpm_uuids_list_t *uuid_list)
681 bt_dpm_uuids_list_t *uuids;
683 BT_CHECK_ENABLED_ANY(return);
686 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
688 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_UUIDS_BLACKLIST,
689 in_param1, in_param2, in_param3, in_param4, &out_param);
691 if (result == BLUETOOTH_ERROR_NONE) {
692 uuids = &g_array_index(out_param, bt_dpm_uuids_list_t, 0);
693 BT_DBG("uuids->count : %d", uuids->count);
695 if (uuids->count == 0) {
696 BT_ERR("uuids->count is zero !");
697 result = BLUETOOTH_ERROR_NOT_FOUND;
700 uuid_list->count = uuids->count;
701 _bluetooth_extract_dpm_uuid_info(uuids->count,
704 BT_ERR("Get UUIDS list Failed");
707 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
712 BT_EXPORT_API int bluetooth_dpm_get_uuids_from_whitelist(bt_dpm_uuids_list_t *uuid_list)
715 bt_dpm_uuids_list_t *uuids;
717 BT_CHECK_ENABLED_ANY(return);
720 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
722 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_UUIDS_WHITELIST,
723 in_param1, in_param2, in_param3, in_param4, &out_param);
725 if (result == BLUETOOTH_ERROR_NONE) {
726 uuids = &g_array_index(out_param, bt_dpm_uuids_list_t, 0);
727 BT_DBG("uuids->count : %d", uuids->count);
729 if (uuids->count == 0) {
730 BT_ERR("uuids->count is zero !");
731 result = BLUETOOTH_ERROR_NOT_FOUND;
734 uuid_list->count = uuids->count;
736 _bluetooth_extract_dpm_uuid_info(uuids->count,
739 BT_ERR("Get UUIDS list Failed");
742 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
747 BT_EXPORT_API int bluetooth_dpm_remove_device_from_whitelist(const bluetooth_device_address_t *device_address)
751 BT_CHECK_PARAMETER(device_address, return);
752 BT_CHECK_ENABLED_ANY(return);
755 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
757 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
759 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_REMOVE_DEVICE_WHITELIST,
760 in_param1, in_param2, in_param3, in_param4, &out_param);
762 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
767 BT_EXPORT_API int bluetooth_dpm_remove_device_from_blacklist(const bluetooth_device_address_t *device_address)
771 BT_CHECK_PARAMETER(device_address, return);
772 BT_CHECK_ENABLED_ANY(return);
775 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
777 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
779 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_REMOVE_DEVICE_BLACKLIST,
780 in_param1, in_param2, in_param3, in_param4, &out_param);
782 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
787 BT_EXPORT_API int bluetooth_dpm_remove_uuid_from_whitelist(const char *service_uuid)
790 char uuid[BLUETOOTH_UUID_STRING_MAX];
792 BT_CHECK_PARAMETER(service_uuid, return);
793 BT_CHECK_ENABLED_ANY(return);
796 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
798 g_strlcpy(uuid, service_uuid, sizeof(uuid));
799 g_array_append_vals(in_param1, uuid, BLUETOOTH_UUID_STRING_MAX);
801 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_REMOVE_UUID_WHITELIST,
802 in_param1, in_param2, in_param3, in_param4, &out_param);
804 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
809 BT_EXPORT_API int bluetooth_dpm_remove_uuid_from_blacklist(const char *service_uuid)
812 char uuid[BLUETOOTH_UUID_STRING_MAX];
814 BT_CHECK_PARAMETER(service_uuid, return);
815 BT_CHECK_ENABLED_ANY(return);
818 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
820 g_strlcpy(uuid, service_uuid, sizeof(uuid));
821 g_array_append_vals(in_param1, uuid, BLUETOOTH_UUID_STRING_MAX);
823 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_REMOVE_UUID_BLACKLIST,
824 in_param1, in_param2, in_param3, in_param4, &out_param);
826 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
832 BT_EXPORT_API int bluetooth_dpm_set_allow_outgoing_call(bt_dpm_status_t value)
836 BT_CHECK_ENABLED_ANY(return);
839 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
841 g_array_append_vals(in_param1, &value, sizeof(int));
843 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_ALLOW_OUTGOING_CALL,
844 in_param1, in_param2, in_param3, in_param4, &out_param);
846 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
851 BT_EXPORT_API int bluetooth_dpm_get_allow_outgoing_call(bt_dpm_status_t *value)
855 BT_CHECK_ENABLED_ANY(return);
858 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
860 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_ALLOW_OUTGOING_CALL,
861 in_param1, in_param2, in_param3, in_param4, &out_param);
863 if (result == BLUETOOTH_ERROR_NONE) {
864 if (out_param->len > 0) {
865 *value = g_array_index(out_param,
868 BT_ERR("out_param length is 0!!");
872 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
877 BT_EXPORT_API int bluetooth_dpm_set_pairing_state(bt_dpm_status_t value)
881 BT_CHECK_ENABLED_ANY(return);
884 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
886 g_array_append_vals(in_param1, &value, sizeof(int));
888 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_PAIRING_STATE,
889 in_param1, in_param2, in_param3, in_param4, &out_param);
891 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
896 BT_EXPORT_API int bluetooth_dpm_get_pairing_state(bt_dpm_status_t *value)
900 BT_CHECK_ENABLED_ANY(return);
903 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
905 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_ALLOW_BT_MODE,
906 in_param1, in_param2, in_param3, in_param4, &out_param);
908 if (result == BLUETOOTH_ERROR_NONE) {
909 if (out_param->len > 0) {
910 *value = g_array_index(out_param,
913 BT_ERR("out_param length is 0!!");
917 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
922 BT_EXPORT_API int bluetooth_dpm_set_profile_state(bt_dpm_profile_t profile, bt_dpm_status_t value)
926 BT_CHECK_ENABLED_ANY(return);
929 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
931 g_array_append_vals(in_param1, &profile, sizeof(int));
932 g_array_append_vals(in_param2, &value, sizeof(int));
934 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_PROFILE_STATE,
935 in_param1, in_param2, in_param3, in_param4, &out_param);
937 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
942 BT_EXPORT_API int bluetooth_dpm_get_profile_state(bt_dpm_profile_t profile, bt_dpm_status_t *value)
946 BT_CHECK_ENABLED_ANY(return);
949 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
951 g_array_append_vals(in_param1, &profile, sizeof(int));
953 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_PROFILE_STATE,
954 in_param1, in_param2, in_param3, in_param4, &out_param);
956 if (result == BLUETOOTH_ERROR_NONE) {
957 if (out_param->len > 0) {
958 *value = g_array_index(out_param,
961 BT_ERR("out_param length is 0!!");
965 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
970 BT_EXPORT_API int bluetooth_dpm_set_desktop_connectivity_state(bt_dpm_status_t value)
974 BT_CHECK_ENABLED_ANY(return);
977 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
979 g_array_append_vals(in_param1, &value, sizeof(int));
981 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_DESKROP_CONNECTIVITY_STATE,
982 in_param1, in_param2, in_param3, in_param4, &out_param);
984 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
989 BT_EXPORT_API int bluetooth_dpm_get_desktop_connectivity_state(bt_dpm_status_t *value)
993 BT_CHECK_ENABLED_ANY(return);
996 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
998 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_DESKROP_CONNECTIVITY_STATE,
999 in_param1, in_param2, in_param3, in_param4, &out_param);
1001 if (result == BLUETOOTH_ERROR_NONE) {
1002 if (out_param->len > 0) {
1003 *value = g_array_index(out_param,
1006 BT_ERR("out_param length is 0!!");
1010 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1015 BT_EXPORT_API int bluetooth_dpm_set_discoverable_state(bt_dpm_status_t value)
1019 BT_CHECK_ENABLED_ANY(return);
1022 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1024 g_array_append_vals(in_param1, &value, sizeof(int));
1026 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_DISCOVERABLE_STATE,
1027 in_param1, in_param2, in_param3, in_param4, &out_param);
1029 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1034 BT_EXPORT_API int bluetooth_dpm_get_discoverable_state(bt_dpm_status_t *value)
1038 BT_CHECK_ENABLED_ANY(return);
1041 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1043 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_DISCOVERABLE_STATE,
1044 in_param1, in_param2, in_param3, in_param4, &out_param);
1046 if (result == BLUETOOTH_ERROR_NONE) {
1047 if (out_param->len > 0) {
1048 *value = g_array_index(out_param,
1051 BT_ERR("out_param length is 0!!");
1055 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1060 BT_EXPORT_API int bluetooth_dpm_set_limited_discoverable_state(bt_dpm_status_t value)
1064 BT_CHECK_ENABLED_ANY(return);
1067 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1069 g_array_append_vals(in_param1, &value, sizeof(int));
1071 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_LIMITED_DISCOVERABLE_STATE,
1072 in_param1, in_param2, in_param3, in_param4, &out_param);
1074 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1079 BT_EXPORT_API int bluetooth_dpm_get_limited_discoverable_state(bt_dpm_status_t *value)
1083 BT_CHECK_ENABLED_ANY(return);
1086 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1088 g_array_append_vals(in_param1, &value, sizeof(int));
1090 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_LIMITED_DISCOVERABLE_STATE,
1091 in_param1, in_param2, in_param3, in_param4, &out_param);
1093 if (result == BLUETOOTH_ERROR_NONE) {
1094 if (out_param->len > 0) {
1095 *value = g_array_index(out_param,
1098 BT_ERR("out_param length is 0!!");
1102 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1107 BT_EXPORT_API int bluetooth_dpm_set_data_transfer_state(bt_dpm_status_t value)
1111 BT_CHECK_ENABLED_ANY(return);
1114 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1116 g_array_append_vals(in_param1, &value, sizeof(int));
1118 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_DATA_TRANSFER_STATE,
1119 in_param1, in_param2, in_param3, in_param4, &out_param);
1121 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1126 BT_EXPORT_API int bluetooth_dpm_get_data_transfer_state(bt_dpm_status_t *value)
1130 BT_CHECK_ENABLED_ANY(return);
1133 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1135 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_DATA_TRANSFER_STATE,
1136 in_param1, in_param2, in_param3, in_param4, &out_param);
1138 if (result == BLUETOOTH_ERROR_NONE) {
1139 if (out_param->len > 0) {
1140 *value = g_array_index(out_param,
1143 BT_ERR("out_param length is 0!!");
1147 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);