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 #ifdef TIZEN_FEATURE_BT_DPM
21 #include "bluetooth-api.h"
22 #include "bt-internal-types.h"
23 #include "bt-common.h"
24 #include "bt-request-sender.h"
25 #include "bt-event-handler.h"
26 #include "bt-event-handler.h"
29 #ifdef TIZEN_FEATURE_BT_DPM
30 BT_EXPORT_API int bluetooth_dpm_is_mode_allowed(void)
33 /* check VCONFKEY_BT_STATUS */
34 if (vconf_get_int(VCONFKEY_BT_DPM_STATUS, &value) != 0) {
35 BT_ERR("fail to get vconf key!");
36 return BLUETOOTH_ERROR_INTERNAL;
38 if (value != VCONFKEY_BT_DPM_STATUS_RESTRICTED)
39 return BLUETOOTH_ERROR_NONE;
41 return BLUETOOTH_ERROR_PERMISSION_DEINED;
46 static bt_dpm_status_e _bt_check_dpm_allow_restriction(void)
50 bluetooth_dpm_get_allow_mode(&mode);
52 return (mode == BLUETOOTH_DPM_BT_RESTRICTED) ? BT_DPM_RESTRICTED : BT_DPM_ALLOWED;
56 static bt_dpm_status_e _bt_check_dpm_handsfree_only(void)
60 bluetooth_dpm_get_allow_mode(&mode);
62 return (mode == BLUETOOTH_DPM_HANDSFREE_ONLY ? BT_DPM_RESTRICTED : BT_DPM_ALLOWED);
65 static bt_dpm_status_e _bt_check_dpm_pairing_restriction(void)
67 bt_dpm_status_t dpm_status = BLUETOOTH_DPM_ALLOWED;
69 bluetooth_dpm_get_pairing_state(&dpm_status);
71 return (dpm_status == BLUETOOTH_DPM_RESTRICTED ? BT_DPM_RESTRICTED : BT_DPM_ALLOWED);
74 static bt_dpm_status_e _bt_check_dpm_desktop_connectivity_restriction(void)
76 bt_dpm_status_t dpm_status = BLUETOOTH_DPM_ALLOWED;
78 bluetooth_dpm_get_desktop_connectivity_state(&dpm_status);
80 return (dpm_status == BLUETOOTH_DPM_RESTRICTED ? BT_DPM_RESTRICTED : BT_DPM_ALLOWED);
84 static bt_dpm_status_e _bt_check_dpm_visible_restriction(void)
86 bt_dpm_status_t dpm_status = BLUETOOTH_DPM_ALLOWED;
88 bluetooth_dpm_get_desktop_connectivity_state(&dpm_status);
90 return (dpm_status == BLUETOOTH_DPM_RESTRICTED ? BT_DPM_RESTRICTED : BT_DPM_ALLOWED);
93 static bt_dpm_status_e _bt_check_dpm_limited_discoverable_mode(void)
95 bt_dpm_status_t dpm_status = BLUETOOTH_DPM_ALLOWED;
97 bluetooth_dpm_get_limited_discoverable_state(&dpm_status);
99 return (dpm_status == BLUETOOTH_DPM_RESTRICTED ? BT_DPM_RESTRICTED : BT_DPM_ALLOWED);
103 static bt_dpm_status_e _bt_check_dpm_blacklist_device(bluetooth_device_address_t *address)
105 int ret = BLUETOOTH_DPM_RESULT_SUCCESS;
106 bt_dpm_device_list_t dev_list;
107 char device_address[BT_ADDRESS_STRING_SIZE] = { 0 };
109 _bt_convert_addr_type_to_string(device_address,
110 (unsigned char *)address->addr);
112 ret = bluetooth_dpm_get_devices_from_blacklist(&dev_list);
113 if (ret == BLUETOOTH_DPM_RESULT_SUCCESS) {
115 for (i = 0; i < dev_list.count; i++) {
116 char temp_address[BT_ADDRESS_STRING_SIZE] = { 0 };
117 _bt_convert_addr_type_to_string(temp_address,
118 (unsigned char *)dev_list.addresses[i].addr);
119 if (g_strcmp0(device_address, temp_address) == 0)
120 return BT_DPM_RESTRICTED;
122 return BT_DPM_ALLOWED;
125 return BT_DPM_NO_SERVICE;
127 return BT_DPM_ALLOWED;
130 static bt_dpm_status_e _bt_check_dpm_blacklist_uuid(char *uuid)
132 bt_dpm_status_e bt_dpm_status = BT_DPM_ALLOWED;
133 bt_dpm_status_t dpm_status = BLUETOOTH_DPM_ALLOWED;
134 bt_dpm_profile_t dpm_profile = BLUETOOTH_DPM_PROFILE_NONE;
135 bt_dpm_uuids_list_t uuid_list;
136 int ret = BLUETOOTH_DPM_RESULT_SUCCESS;
137 retv_if(!uuid, bt_dpm_status);
139 ret = bluetooth_dpm_get_uuids_from_blacklist(&uuid_list);
140 if (ret == BLUETOOTH_DPM_RESULT_SUCCESS) {
142 for (i = 0; i < uuid_list.count; i++) {
143 if (g_strcmp0(uuid, uuid_list.uuids[i]) == 0)
144 return BT_DPM_RESTRICTED;
146 return BT_DPM_ALLOWED;
149 return BT_DPM_NO_SERVICE;
152 if (g_strcmp0(BT_OPP_UUID, uuid) == 0) {
153 bt_dpm_status_t dpm_status = BLUETOOTH_DPM_ALLOWED;
154 bluetooth_dpm_get_data_transfer_state(&dpm_status);
155 return (dpm_status == BLUETOOTH_DPM_RESTRICTED ? BT_DPM_RESTRICTED : BT_DPM_ALLOWED);
157 /* TODO: MAP? see above */
159 /* ++ check MDM profile restriction ++ */
160 if (g_strcmp0(BT_A2DP_UUID, uuid) == 0)
161 dpm_profile = BLUETOOTH_DPM_POLICY_A2DP_PROFILE_STATE;
162 else if (g_strcmp0(BT_AVRCP_TARGET_UUID, uuid) == 0)
163 dpm_profile = BLUETOOTH_DPM_POLICY_AVRCP_PROFILE_STATE;
164 else if (g_strcmp0(BT_HFP_AUDIO_GATEWAY_UUID, uuid) == 0)
165 dpm_profile = BLUETOOTH_DPM_POLICY_HFP_PROFILE_STATE;
166 else if (g_strcmp0(BT_HSP_AUDIO_GATEWAY_UUID, uuid) == 0)
167 dpm_profile = BLUETOOTH_DPM_POLICY_HSP_PROFILE_STATE;
168 else if (g_strcmp0(BT_OBEX_PSE_UUID, uuid) == 0)
169 dpm_profile = BLUETOOTH_DPM_POLICY_PBAP_PROFILE_STATE;
171 if (dpm_profile != BLUETOOTH_DPM_PROFILE_NONE) {
172 ret = bluetooth_dpm_get_profile_state(dpm_profile, &dpm_status);
173 return (dpm_status == BLUETOOTH_DPM_RESTRICTED ? BT_DPM_RESTRICTED : BT_DPM_ALLOWED);
175 /* -- check DPM profile restriction -- */
177 return bt_dpm_status;
180 static bt_dpm_status_e _bt_check_dpm_transfer_restriction(void)
182 bt_dpm_status_e dpm_status = BT_DPM_ALLOWED;
183 bt_dpm_status_t dpm_value = BLUETOOTH_DPM_ALLOWED;
185 dpm_status = _bt_check_dpm_blacklist_uuid(BT_OPP_UUID);
186 /* TODO: MAP? see above */
188 if (dpm_status == BT_DPM_NO_SERVICE || dpm_status == BT_DPM_RESTRICTED)
191 bluetooth_dpm_get_data_transfer_state(&dpm_value);
193 return (dpm_value == BLUETOOTH_DPM_RESTRICTED ? BT_DPM_RESTRICTED : BT_DPM_ALLOWED);
196 static bt_dpm_status_e _bt_check_dpm_hsp_restriction(void)
198 bt_dpm_status_e dpm_status = BT_DPM_ALLOWED;
200 dpm_status = _bt_check_dpm_blacklist_uuid(BT_HFP_AUDIO_GATEWAY_UUID);
202 if (dpm_status == BT_DPM_NO_SERVICE || dpm_status == BT_DPM_RESTRICTED)
205 dpm_status = _bt_check_dpm_blacklist_uuid(BT_HSP_AUDIO_GATEWAY_UUID);
206 if (dpm_status == BT_DPM_NO_SERVICE || dpm_status == BT_DPM_RESTRICTED)
212 static bt_dpm_status_e _bt_check_dpm_a2dp_restriction(void)
214 bt_dpm_status_e dpm_status = BT_DPM_ALLOWED;
216 dpm_status = _bt_check_dpm_blacklist_uuid(BT_A2DP_UUID);
218 if (dpm_status == BT_DPM_NO_SERVICE || dpm_status == BT_DPM_RESTRICTED)
224 static bt_dpm_status_e _bt_check_dpm_avrcp_restriction(void)
226 bt_dpm_status_e dpm_status = BT_DPM_ALLOWED;
228 dpm_status = _bt_check_dpm_blacklist_uuid(BT_AVRCP_TARGET_UUID);
230 if (dpm_status == BT_DPM_NO_SERVICE || dpm_status == BT_DPM_RESTRICTED)
236 static bt_dpm_status_e _bt_check_dpm_spp_restriction(void)
238 bt_dpm_status_e dpm_status = BT_DPM_ALLOWED;
240 dpm_status = _bt_check_dpm_blacklist_uuid(BT_SPP_UUID);
242 if (dpm_status == BT_DPM_NO_SERVICE || dpm_status == BT_DPM_RESTRICTED)
248 int _bt_check_dpm(int service, void *param)
250 bt_dpm_status_e status = BT_DPM_ALLOWED;
251 int ret = BLUETOOTH_ERROR_NONE;
252 BT_CHECK_ENABLED_ANY(return);
256 status = _bt_check_dpm_handsfree_only();
260 status = _bt_check_dpm_pairing_restriction();
263 status = _bt_check_dpm_desktop_connectivity_restriction();
265 case BT_DPM_ADDRESS: {
266 status = _bt_check_dpm_blacklist_device((bluetooth_device_address_t *)param);
271 uuid = (char *)param;
272 status = _bt_check_dpm_blacklist_uuid(uuid);
276 status = _bt_check_dpm_transfer_restriction();
278 /* TODO: MAP? see above */
280 status = _bt_check_dpm_hsp_restriction();
283 status = _bt_check_dpm_a2dp_restriction();
286 status = _bt_check_dpm_avrcp_restriction();
289 status = _bt_check_dpm_spp_restriction();
293 BT_ERR("Unknown service");
297 if (status == BT_DPM_RESTRICTED) {
298 BT_INFO("Service [%d], DPM permission denied", service);
299 ret = BLUETOOTH_ERROR_PERMISSION_DEINED;
300 } else if (status == BT_DPM_NO_SERVICE) {
301 BT_DBG("DPM no service [%d]", status);
302 ret = BLUETOOTH_ERROR_SERVICE_NOT_FOUND;
308 BT_EXPORT_API int bluetooth_dpm_set_allow_mode(bt_dpm_allow_t value)
310 int result = BLUETOOTH_ERROR_NONE;
311 #ifdef TIZEN_FEATURE_BT_DPM
315 #ifdef TIZEN_FEATURE_BT_DPM
316 if (vconf_get_int(VCONFKEY_BT_STATUS, &bt_status) < 0)
317 BT_ERR("Error in reading VCONFKEY_BT_STATUS");
319 if (bt_status == VCONFKEY_BT_STATUS_ON) {
320 if (vconf_set_int(VCONFKEY_BT_DPM_STATUS, value) != 0) {
321 BT_ERR("Set VCONFKEY_BT_DPM_STATUS failed\n");
322 result = BLUETOOTH_ERROR_INTERNAL;
324 BT_ERR("Set VCONFKEY_BT_DPM_STATUS success\n");
325 result = BLUETOOTH_ERROR_NONE;
329 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
331 g_array_append_vals(in_param1, &value, sizeof(int));
333 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_ALLOW_BT_MODE,
334 in_param1, in_param2, in_param3, in_param4, &out_param);
336 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
338 if (result == BLUETOOTH_ERROR_NONE &&
339 value == BLUETOOTH_DPM_BT_RESTRICTED) {
340 result = bluetooth_disable_adapter();
343 if (value >= BLUETOOTH_DPM_BT_ALLOWED &&
344 value <= BLUETOOTH_DPM_BT_RESTRICTED) {
345 if (vconf_set_int(VCONFKEY_BT_DPM_STATUS, value) != 0) {
346 BT_ERR("Set VCONFKEY_BT_DPM_STATUS failed\n");
347 result = BLUETOOTH_ERROR_INTERNAL;
349 result = BLUETOOTH_ERROR_NONE;
351 result = BLUETOOTH_ERROR_INVALID_PARAM;
355 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
357 g_array_append_vals(in_param1, &value, sizeof(int));
359 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_ALLOW_BT_MODE,
360 in_param1, in_param2, in_param3, in_param4, &out_param);
362 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
369 BT_EXPORT_API int bluetooth_dpm_get_allow_mode(bt_dpm_allow_t *value)
373 #ifdef TIZEN_FEATURE_BT_DPM
374 *value = bluetooth_dpm_is_mode_allowed();
375 result = BLUETOOTH_ERROR_NONE;
377 BT_CHECK_ENABLED_ANY(return);
380 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
382 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_ALLOW_BT_MODE,
383 in_param1, in_param2, in_param3, in_param4, &out_param);
385 if (result == BLUETOOTH_ERROR_NONE) {
386 if (out_param->len > 0) {
387 *value = g_array_index(out_param,
390 BT_ERR("out_param length is 0!!");
394 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
401 BT_EXPORT_API int bluetooth_dpm_activate_device_restriction(bt_dpm_status_t value)
405 BT_CHECK_ENABLED_ANY(return);
408 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
410 g_array_append_vals(in_param1, &value, sizeof(int));
412 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_DEVICE_RESTRITION,
413 in_param1, in_param2, in_param3, in_param4, &out_param);
415 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
421 BT_EXPORT_API int bluetooth_dpm_is_device_restriction_active(bt_dpm_status_t *value)
425 BT_CHECK_ENABLED_ANY(return);
428 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
430 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_DEVICE_RESTRITION,
431 in_param1, in_param2, in_param3, in_param4, &out_param);
433 if (result == BLUETOOTH_ERROR_NONE) {
434 if (out_param->len > 0) {
435 *value = g_array_index(out_param,
438 BT_ERR("out_param length is 0!!");
442 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
448 BT_EXPORT_API int bluetooth_dpm_activate_uuid_restriction(bt_dpm_status_t value)
452 BT_CHECK_ENABLED_ANY(return);
455 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
457 g_array_append_vals(in_param1, &value, sizeof(int));
459 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_UUID_RESTRITION,
460 in_param1, in_param2, in_param3, in_param4, &out_param);
462 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
468 BT_EXPORT_API int bluetooth_dpm_is_uuid_restriction_active(bt_dpm_status_t *value)
472 BT_CHECK_ENABLED_ANY(return);
475 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
477 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_UUID_RESTRITION,
478 in_param1, in_param2, in_param3, in_param4, &out_param);
480 if (result == BLUETOOTH_ERROR_NONE) {
481 if (out_param->len > 0) {
482 *value = g_array_index(out_param,
485 BT_ERR("out_param length is 0!!");
489 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
496 BT_EXPORT_API int bluetooth_dpm_add_devices_to_blacklist(const bluetooth_device_address_t *device_address)
500 BT_CHECK_PARAMETER(device_address, return);
501 BT_CHECK_ENABLED_ANY(return);
504 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
506 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
509 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_ADD_DEVICES_BLACKLIST,
510 in_param1, in_param2, in_param3, in_param4, &out_param);
512 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
518 BT_EXPORT_API int bluetooth_dpm_add_devices_to_whitelist(const bluetooth_device_address_t *device_address)
522 BT_CHECK_PARAMETER(device_address, return);
523 BT_CHECK_ENABLED_ANY(return);
526 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
528 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
530 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_ADD_DEVICES_WHITELIST,
531 in_param1, in_param2, in_param3, in_param4, &out_param);
533 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
540 BT_EXPORT_API int bluetooth_dpm_add_uuids_to_blacklist(const char *service_uuid)
543 char uuid[BLUETOOTH_UUID_STRING_MAX];
545 BT_CHECK_PARAMETER(service_uuid, return);
546 BT_CHECK_ENABLED_ANY(return);
550 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
552 g_strlcpy(uuid, service_uuid, sizeof(uuid));
553 g_array_append_vals(in_param1, uuid, BLUETOOTH_UUID_STRING_MAX);
555 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_ADD_UUIDS_BLACKLIST,
556 in_param1, in_param2, in_param3, in_param4, &out_param);
558 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
565 BT_EXPORT_API int bluetooth_dpm_add_uuids_to_whitelist(const char *service_uuid)
568 char uuid[BLUETOOTH_UUID_STRING_MAX];
570 BT_CHECK_PARAMETER(service_uuid, return);
571 BT_CHECK_ENABLED_ANY(return);
574 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
576 g_strlcpy(uuid, service_uuid, sizeof(uuid));
577 g_array_append_vals(in_param1, uuid, BLUETOOTH_UUID_STRING_MAX);
579 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_ADD_UUIDS_WHITELIST,
580 in_param1, in_param2, in_param3, in_param4, &out_param);
582 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
588 BT_EXPORT_API int bluetooth_dpm_clear_devices_from_blacklist(void)
592 BT_CHECK_ENABLED_ANY(return);
595 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
597 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_CLEAR_DEVICES_BLACKLIST,
598 in_param1, in_param2, in_param3, in_param4, &out_param);
600 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
606 BT_EXPORT_API int bluetooth_dpm_clear_devices_from_whitelist(void)
610 BT_CHECK_ENABLED_ANY(return);
613 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
615 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_CLEAR_DEVICES_WHITELIST,
616 in_param1, in_param2, in_param3, in_param4, &out_param);
618 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
624 BT_EXPORT_API int bluetooth_dpm_clear_uuids_from_blacklist(void)
628 BT_CHECK_ENABLED_ANY(return);
631 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
633 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_CLEAR_UUIDS_BLACKLIST,
634 in_param1, in_param2, in_param3, in_param4, &out_param);
636 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
642 BT_EXPORT_API int bluetooth_dpm_clear_uuids_from_whitelist(void)
646 BT_CHECK_ENABLED_ANY(return);
649 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
651 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_CLEAR_UUIDS_WHITELIST,
652 in_param1, in_param2, in_param3, in_param4, &out_param);
654 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
660 static void _bluetooth_extract_dpm_device_info(int count,
661 bt_dpm_device_list_t *dst_info,
662 bt_dpm_device_list_t *src_info)
666 for (i = 0; i < count; i++) {
667 memset(dst_info->addresses[i].addr, 0,
668 BLUETOOTH_ADDRESS_LENGTH);
670 g_strlcpy((gchar *)dst_info->addresses[i].addr, (gchar *)src_info->addresses[i].addr,
671 BLUETOOTH_ADDRESS_LENGTH);
673 // BT_DBG("address[%d] : %s", i, dst_info->addresses[i].addr);
677 static void _bluetooth_extract_dpm_uuid_info(int count,
678 bt_dpm_uuids_list_t *dst_info,
679 bt_dpm_uuids_list_t *src_info)
683 for (i = 0; i < count; i++) {
684 memset(dst_info->uuids[i], 0,
685 BLUETOOTH_UUID_STRING_MAX);
687 g_strlcpy(dst_info->uuids[i], src_info->uuids[i],
688 BLUETOOTH_UUID_STRING_MAX);
690 BT_DBG("uuids[%d] : %s", i, dst_info->uuids[i]);
694 BT_EXPORT_API int bluetooth_dpm_get_devices_from_blacklist(bt_dpm_device_list_t *device_list)
697 bt_dpm_device_list_t *devices = NULL;
699 BT_CHECK_ENABLED_ANY(return);
702 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
704 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_DEVICES_BLACKLIST,
705 in_param1, in_param2, in_param3, in_param4, &out_param);
707 if (result == BLUETOOTH_ERROR_NONE) {
708 devices = &g_array_index(out_param, bt_dpm_device_list_t, 0);
709 BT_DBG("device_list->count : %d", devices->count);
711 if (devices->count == 0) {
712 BT_ERR("device_list->count is zero !");
713 result = BLUETOOTH_ERROR_NOT_FOUND;
716 device_list->count = devices->count;
718 _bluetooth_extract_dpm_device_info(devices->count,
719 device_list, devices);
721 BT_ERR("Get Devices list Failed");
724 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
729 BT_EXPORT_API int bluetooth_dpm_get_devices_from_whitelist(bt_dpm_device_list_t *device_list)
732 bt_dpm_device_list_t *devices = NULL;
734 BT_CHECK_ENABLED_ANY(return);
737 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
739 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_DEVICES_WHITELIST,
740 in_param1, in_param2, in_param3, in_param4, &out_param);
742 if (result == BLUETOOTH_ERROR_NONE) {
743 devices = &g_array_index(out_param, bt_dpm_device_list_t, 0);
744 BT_DBG("device_list->count : %d", devices->count);
746 if (devices->count == 0) {
747 BT_ERR("device_list->count is zero !");
748 result = BLUETOOTH_ERROR_NOT_FOUND;
751 device_list->count = devices->count;
753 _bluetooth_extract_dpm_device_info(devices->count,
754 device_list, devices);
757 BT_ERR("Get Devices list Failed");
759 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
764 BT_EXPORT_API int bluetooth_dpm_get_uuids_from_blacklist(bt_dpm_uuids_list_t *uuid_list)
767 bt_dpm_uuids_list_t *uuids;
769 BT_CHECK_ENABLED_ANY(return);
772 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
774 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_UUIDS_BLACKLIST,
775 in_param1, in_param2, in_param3, in_param4, &out_param);
777 if (result == BLUETOOTH_ERROR_NONE) {
778 uuids = &g_array_index(out_param, bt_dpm_uuids_list_t, 0);
779 BT_DBG("uuids->count : %d", uuids->count);
781 if (uuids->count == 0) {
782 BT_ERR("uuids->count is zero !");
783 result = BLUETOOTH_ERROR_NOT_FOUND;
786 uuid_list->count = uuids->count;
787 _bluetooth_extract_dpm_uuid_info(uuids->count,
790 BT_ERR("Get UUIDS list Failed");
793 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
798 BT_EXPORT_API int bluetooth_dpm_get_uuids_from_whitelist(bt_dpm_uuids_list_t *uuid_list)
801 bt_dpm_uuids_list_t *uuids;
803 BT_CHECK_ENABLED_ANY(return);
806 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
808 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_UUIDS_WHITELIST,
809 in_param1, in_param2, in_param3, in_param4, &out_param);
811 if (result == BLUETOOTH_ERROR_NONE) {
812 uuids = &g_array_index(out_param, bt_dpm_uuids_list_t, 0);
813 BT_DBG("uuids->count : %d", uuids->count);
815 if (uuids->count == 0) {
816 BT_ERR("uuids->count is zero !");
817 result = BLUETOOTH_ERROR_NOT_FOUND;
820 uuid_list->count = uuids->count;
822 _bluetooth_extract_dpm_uuid_info(uuids->count,
825 BT_ERR("Get UUIDS list Failed");
828 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
833 BT_EXPORT_API int bluetooth_dpm_remove_device_from_whitelist(const bluetooth_device_address_t *device_address)
837 BT_CHECK_PARAMETER(device_address, return);
838 BT_CHECK_ENABLED_ANY(return);
841 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
843 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
845 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_REMOVE_DEVICE_WHITELIST,
846 in_param1, in_param2, in_param3, in_param4, &out_param);
848 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
853 BT_EXPORT_API int bluetooth_dpm_remove_device_from_blacklist(const bluetooth_device_address_t *device_address)
857 BT_CHECK_PARAMETER(device_address, return);
858 BT_CHECK_ENABLED_ANY(return);
861 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
863 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
865 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_REMOVE_DEVICE_BLACKLIST,
866 in_param1, in_param2, in_param3, in_param4, &out_param);
868 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
873 BT_EXPORT_API int bluetooth_dpm_remove_uuid_from_whitelist(const char *service_uuid)
876 char uuid[BLUETOOTH_UUID_STRING_MAX];
878 BT_CHECK_PARAMETER(service_uuid, return);
879 BT_CHECK_ENABLED_ANY(return);
882 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
884 g_strlcpy(uuid, service_uuid, sizeof(uuid));
885 g_array_append_vals(in_param1, uuid, BLUETOOTH_UUID_STRING_MAX);
887 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_REMOVE_UUID_WHITELIST,
888 in_param1, in_param2, in_param3, in_param4, &out_param);
890 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
895 BT_EXPORT_API int bluetooth_dpm_remove_uuid_from_blacklist(const char *service_uuid)
898 char uuid[BLUETOOTH_UUID_STRING_MAX];
900 BT_CHECK_PARAMETER(service_uuid, return);
901 BT_CHECK_ENABLED_ANY(return);
904 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
906 g_strlcpy(uuid, service_uuid, sizeof(uuid));
907 g_array_append_vals(in_param1, uuid, BLUETOOTH_UUID_STRING_MAX);
909 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_REMOVE_UUID_BLACKLIST,
910 in_param1, in_param2, in_param3, in_param4, &out_param);
912 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
918 BT_EXPORT_API int bluetooth_dpm_set_allow_outgoing_call(bt_dpm_status_t value)
922 BT_CHECK_ENABLED_ANY(return);
925 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
927 g_array_append_vals(in_param1, &value, sizeof(int));
929 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_ALLOW_OUTGOING_CALL,
930 in_param1, in_param2, in_param3, in_param4, &out_param);
932 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
937 BT_EXPORT_API int bluetooth_dpm_get_allow_outgoing_call(bt_dpm_status_t *value)
941 BT_CHECK_ENABLED_ANY(return);
944 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
946 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_ALLOW_OUTGOING_CALL,
947 in_param1, in_param2, in_param3, in_param4, &out_param);
949 if (result == BLUETOOTH_ERROR_NONE) {
950 if (out_param->len > 0) {
951 *value = g_array_index(out_param,
954 BT_ERR("out_param length is 0!!");
958 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
963 BT_EXPORT_API int bluetooth_dpm_set_pairing_state(bt_dpm_status_t value)
967 BT_CHECK_ENABLED_ANY(return);
970 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
972 g_array_append_vals(in_param1, &value, sizeof(int));
974 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_PAIRING_STATE,
975 in_param1, in_param2, in_param3, in_param4, &out_param);
977 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
982 BT_EXPORT_API int bluetooth_dpm_get_pairing_state(bt_dpm_status_t *value)
986 BT_CHECK_ENABLED_ANY(return);
989 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
991 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_ALLOW_BT_MODE,
992 in_param1, in_param2, in_param3, in_param4, &out_param);
994 if (result == BLUETOOTH_ERROR_NONE) {
995 if (out_param->len > 0) {
996 *value = g_array_index(out_param,
999 BT_ERR("out_param length is 0!!");
1003 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1008 BT_EXPORT_API int bluetooth_dpm_set_profile_state(bt_dpm_profile_t profile, bt_dpm_status_t value)
1012 BT_CHECK_ENABLED_ANY(return);
1015 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1017 g_array_append_vals(in_param1, &profile, sizeof(int));
1018 g_array_append_vals(in_param2, &value, sizeof(int));
1020 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_PROFILE_STATE,
1021 in_param1, in_param2, in_param3, in_param4, &out_param);
1023 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1028 BT_EXPORT_API int bluetooth_dpm_get_profile_state(bt_dpm_profile_t profile, bt_dpm_status_t *value)
1032 BT_CHECK_ENABLED_ANY(return);
1035 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1037 g_array_append_vals(in_param1, &profile, sizeof(int));
1039 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_PROFILE_STATE,
1040 in_param1, in_param2, in_param3, in_param4, &out_param);
1042 if (result == BLUETOOTH_ERROR_NONE) {
1043 if (out_param->len > 0) {
1044 *value = g_array_index(out_param,
1047 BT_ERR("out_param length is 0!!");
1051 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1056 BT_EXPORT_API int bluetooth_dpm_set_desktop_connectivity_state(bt_dpm_status_t value)
1060 BT_CHECK_ENABLED_ANY(return);
1063 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1065 g_array_append_vals(in_param1, &value, sizeof(int));
1067 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_DESKROP_CONNECTIVITY_STATE,
1068 in_param1, in_param2, in_param3, in_param4, &out_param);
1070 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1075 BT_EXPORT_API int bluetooth_dpm_get_desktop_connectivity_state(bt_dpm_status_t *value)
1079 BT_CHECK_ENABLED_ANY(return);
1082 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1084 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_DESKROP_CONNECTIVITY_STATE,
1085 in_param1, in_param2, in_param3, in_param4, &out_param);
1087 if (result == BLUETOOTH_ERROR_NONE) {
1088 if (out_param->len > 0) {
1089 *value = g_array_index(out_param,
1092 BT_ERR("out_param length is 0!!");
1096 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1101 BT_EXPORT_API int bluetooth_dpm_set_discoverable_state(bt_dpm_status_t value)
1105 BT_CHECK_ENABLED_ANY(return);
1108 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1110 g_array_append_vals(in_param1, &value, sizeof(int));
1112 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_DISCOVERABLE_STATE,
1113 in_param1, in_param2, in_param3, in_param4, &out_param);
1115 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1120 BT_EXPORT_API int bluetooth_dpm_get_discoverable_state(bt_dpm_status_t *value)
1124 BT_CHECK_ENABLED_ANY(return);
1127 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1129 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_DISCOVERABLE_STATE,
1130 in_param1, in_param2, in_param3, in_param4, &out_param);
1132 if (result == BLUETOOTH_ERROR_NONE) {
1133 if (out_param->len > 0) {
1134 *value = g_array_index(out_param,
1137 BT_ERR("out_param length is 0!!");
1141 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1146 BT_EXPORT_API int bluetooth_dpm_set_limited_discoverable_state(bt_dpm_status_t value)
1150 BT_CHECK_ENABLED_ANY(return);
1153 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1155 g_array_append_vals(in_param1, &value, sizeof(int));
1157 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_LIMITED_DISCOVERABLE_STATE,
1158 in_param1, in_param2, in_param3, in_param4, &out_param);
1160 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1165 BT_EXPORT_API int bluetooth_dpm_get_limited_discoverable_state(bt_dpm_status_t *value)
1169 BT_CHECK_ENABLED_ANY(return);
1172 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1174 g_array_append_vals(in_param1, &value, sizeof(int));
1176 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_LIMITED_DISCOVERABLE_STATE,
1177 in_param1, in_param2, in_param3, in_param4, &out_param);
1179 if (result == BLUETOOTH_ERROR_NONE) {
1180 if (out_param->len > 0) {
1181 *value = g_array_index(out_param,
1184 BT_ERR("out_param length is 0!!");
1188 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1193 BT_EXPORT_API int bluetooth_dpm_set_data_transfer_state(bt_dpm_status_t value)
1197 BT_CHECK_ENABLED_ANY(return);
1200 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1202 g_array_append_vals(in_param1, &value, sizeof(int));
1204 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_DATA_TRANSFER_STATE,
1205 in_param1, in_param2, in_param3, in_param4, &out_param);
1207 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1212 BT_EXPORT_API int bluetooth_dpm_get_data_transfer_state(bt_dpm_status_t *value)
1216 BT_CHECK_ENABLED_ANY(return);
1219 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1221 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_DATA_TRANSFER_STATE,
1222 in_param1, in_param2, in_param3, in_param4, &out_param);
1224 if (result == BLUETOOTH_ERROR_NONE) {
1225 if (out_param->len > 0) {
1226 *value = g_array_index(out_param,
1229 BT_ERR("out_param length is 0!!");
1233 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1237 #endif /* #ifdef TIZEN_FEATURE_BT_DPM */