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;
254 status = _bt_check_dpm_handsfree_only();
257 status = _bt_check_dpm_pairing_restriction();
260 status = _bt_check_dpm_desktop_connectivity_restriction();
262 case BT_DPM_ADDRESS: {
263 status = _bt_check_dpm_blacklist_device((bluetooth_device_address_t *)param);
268 uuid = (char *)param;
269 status = _bt_check_dpm_blacklist_uuid(uuid);
273 status = _bt_check_dpm_transfer_restriction();
275 /* TODO: MAP? see above */
277 status = _bt_check_dpm_hsp_restriction();
280 status = _bt_check_dpm_a2dp_restriction();
283 status = _bt_check_dpm_avrcp_restriction();
286 status = _bt_check_dpm_spp_restriction();
289 BT_ERR("Unknown service");
296 BT_EXPORT_API int bluetooth_dpm_set_allow_mode(bt_dpm_allow_t value)
298 int result = BLUETOOTH_ERROR_NONE;
299 #ifdef TIZEN_FEATURE_BT_DPM
303 #ifdef TIZEN_FEATURE_BT_DPM
304 if (value >= BLUETOOTH_DPM_BT_ALLOWED &&
305 value <= BLUETOOTH_DPM_BT_RESTRICTED) {
306 if (vconf_set_int(VCONFKEY_BT_DPM_STATUS, value) != 0) {
307 BT_ERR("Set VCONFKEY_BT_DPM_STATUS failed\n");
308 result = BLUETOOTH_ERROR_INTERNAL;
310 result = BLUETOOTH_ERROR_NONE;
312 result = BLUETOOTH_ERROR_INVALID_PARAM;
314 if (vconf_get_int(VCONFKEY_BT_STATUS, &bt_status) < 0)
315 BT_ERR("Error in reading VCONFKEY_BT_STATUS");
317 if (bt_status == VCONFKEY_BT_STATUS_ON) {
319 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
321 g_array_append_vals(in_param1, &value, sizeof(int));
323 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_ALLOW_BT_MODE,
324 in_param1, in_param2, in_param3, in_param4, &out_param);
326 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
328 if (result == BLUETOOTH_ERROR_NONE &&
329 value == BLUETOOTH_DPM_BT_RESTRICTED) {
330 result = bluetooth_disable_adapter();
335 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
337 g_array_append_vals(in_param1, &value, sizeof(int));
339 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_ALLOW_BT_MODE,
340 in_param1, in_param2, in_param3, in_param4, &out_param);
342 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
349 BT_EXPORT_API int bluetooth_dpm_get_allow_mode(bt_dpm_allow_t *value)
353 #ifdef TIZEN_FEATURE_BT_DPM
354 if (vconf_get_int(VCONFKEY_BT_DPM_STATUS, value) != 0) {
355 BT_ERR("fail to get vconf key!");
356 return BLUETOOTH_ERROR_INTERNAL;
358 result = BLUETOOTH_ERROR_NONE;
360 BT_CHECK_ENABLED_ANY(return);
363 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
365 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_ALLOW_BT_MODE,
366 in_param1, in_param2, in_param3, in_param4, &out_param);
368 if (result == BLUETOOTH_ERROR_NONE) {
369 if (out_param->len > 0) {
370 *value = g_array_index(out_param,
373 BT_ERR("out_param length is 0!!");
377 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
384 BT_EXPORT_API int bluetooth_dpm_activate_device_restriction(bt_dpm_status_t value)
388 BT_CHECK_ENABLED_ANY(return);
391 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
393 g_array_append_vals(in_param1, &value, sizeof(int));
395 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_DEVICE_RESTRITION,
396 in_param1, in_param2, in_param3, in_param4, &out_param);
398 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
404 BT_EXPORT_API int bluetooth_dpm_is_device_restriction_active(bt_dpm_status_t *value)
408 BT_CHECK_ENABLED_ANY(return);
411 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
413 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_DEVICE_RESTRITION,
414 in_param1, in_param2, in_param3, in_param4, &out_param);
416 if (result == BLUETOOTH_ERROR_NONE) {
417 if (out_param->len > 0) {
418 *value = g_array_index(out_param,
421 BT_ERR("out_param length is 0!!");
425 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
431 BT_EXPORT_API int bluetooth_dpm_activate_uuid_restriction(bt_dpm_status_t value)
435 BT_CHECK_ENABLED_ANY(return);
438 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
440 g_array_append_vals(in_param1, &value, sizeof(int));
442 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_UUID_RESTRITION,
443 in_param1, in_param2, in_param3, in_param4, &out_param);
445 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
451 BT_EXPORT_API int bluetooth_dpm_is_uuid_restriction_active(bt_dpm_status_t *value)
455 BT_CHECK_ENABLED_ANY(return);
458 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
460 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_UUID_RESTRITION,
461 in_param1, in_param2, in_param3, in_param4, &out_param);
463 if (result == BLUETOOTH_ERROR_NONE) {
464 if (out_param->len > 0) {
465 *value = g_array_index(out_param,
468 BT_ERR("out_param length is 0!!");
472 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
479 BT_EXPORT_API int bluetooth_dpm_add_devices_to_blacklist(const bluetooth_device_address_t *device_address)
483 BT_CHECK_PARAMETER(device_address, return);
484 BT_CHECK_ENABLED_ANY(return);
487 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
489 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
492 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_ADD_DEVICES_BLACKLIST,
493 in_param1, in_param2, in_param3, in_param4, &out_param);
495 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
501 BT_EXPORT_API int bluetooth_dpm_add_devices_to_whitelist(const bluetooth_device_address_t *device_address)
505 BT_CHECK_PARAMETER(device_address, return);
506 BT_CHECK_ENABLED_ANY(return);
509 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
511 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
513 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_ADD_DEVICES_WHITELIST,
514 in_param1, in_param2, in_param3, in_param4, &out_param);
516 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
523 BT_EXPORT_API int bluetooth_dpm_add_uuids_to_blacklist(const char *service_uuid)
526 char uuid[BLUETOOTH_UUID_STRING_MAX];
528 BT_CHECK_PARAMETER(service_uuid, return);
529 BT_CHECK_ENABLED_ANY(return);
533 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
535 g_strlcpy(uuid, service_uuid, sizeof(uuid));
536 g_array_append_vals(in_param1, uuid, BLUETOOTH_UUID_STRING_MAX);
538 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_ADD_UUIDS_BLACKLIST,
539 in_param1, in_param2, in_param3, in_param4, &out_param);
541 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
548 BT_EXPORT_API int bluetooth_dpm_add_uuids_to_whitelist(const char *service_uuid)
551 char uuid[BLUETOOTH_UUID_STRING_MAX];
553 BT_CHECK_PARAMETER(service_uuid, return);
554 BT_CHECK_ENABLED_ANY(return);
557 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
559 g_strlcpy(uuid, service_uuid, sizeof(uuid));
560 g_array_append_vals(in_param1, uuid, BLUETOOTH_UUID_STRING_MAX);
562 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_ADD_UUIDS_WHITELIST,
563 in_param1, in_param2, in_param3, in_param4, &out_param);
565 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
571 BT_EXPORT_API int bluetooth_dpm_clear_devices_from_blacklist(void)
575 BT_CHECK_ENABLED_ANY(return);
578 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
580 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_CLEAR_DEVICES_BLACKLIST,
581 in_param1, in_param2, in_param3, in_param4, &out_param);
583 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
589 BT_EXPORT_API int bluetooth_dpm_clear_devices_from_whitelist(void)
593 BT_CHECK_ENABLED_ANY(return);
596 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
598 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_CLEAR_DEVICES_WHITELIST,
599 in_param1, in_param2, in_param3, in_param4, &out_param);
601 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
607 BT_EXPORT_API int bluetooth_dpm_clear_uuids_from_blacklist(void)
611 BT_CHECK_ENABLED_ANY(return);
614 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
616 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_CLEAR_UUIDS_BLACKLIST,
617 in_param1, in_param2, in_param3, in_param4, &out_param);
619 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
625 BT_EXPORT_API int bluetooth_dpm_clear_uuids_from_whitelist(void)
629 BT_CHECK_ENABLED_ANY(return);
632 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
634 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_CLEAR_UUIDS_WHITELIST,
635 in_param1, in_param2, in_param3, in_param4, &out_param);
637 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
643 static void _bluetooth_extract_dpm_device_info(int count,
644 bt_dpm_device_list_t *dst_info,
645 bt_dpm_device_list_t *src_info)
649 for (i = 0; i < count; i++) {
650 memset(dst_info->addresses[i].addr, 0,
651 BLUETOOTH_ADDRESS_LENGTH);
653 g_strlcpy((gchar *)dst_info->addresses[i].addr, (gchar *)src_info->addresses[i].addr,
654 BLUETOOTH_ADDRESS_LENGTH);
656 // BT_DBG("address[%d] : %s", i, dst_info->addresses[i].addr);
660 static void _bluetooth_extract_dpm_uuid_info(int count,
661 bt_dpm_uuids_list_t *dst_info,
662 bt_dpm_uuids_list_t *src_info)
666 for (i = 0; i < count; i++) {
667 memset(dst_info->uuids[i], 0,
668 BLUETOOTH_UUID_STRING_MAX);
670 g_strlcpy(dst_info->uuids[i], src_info->uuids[i],
671 BLUETOOTH_UUID_STRING_MAX);
673 BT_DBG("uuids[%d] : %s", i, dst_info->uuids[i]);
677 BT_EXPORT_API int bluetooth_dpm_get_devices_from_blacklist(bt_dpm_device_list_t *device_list)
680 bt_dpm_device_list_t *devices = NULL;
682 BT_CHECK_ENABLED_ANY(return);
685 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
687 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_DEVICES_BLACKLIST,
688 in_param1, in_param2, in_param3, in_param4, &out_param);
690 if (result == BLUETOOTH_ERROR_NONE) {
691 devices = &g_array_index(out_param, bt_dpm_device_list_t, 0);
692 BT_DBG("device_list->count : %d", devices->count);
694 if (devices->count == 0) {
695 BT_ERR("device_list->count is zero !");
696 result = BLUETOOTH_ERROR_NOT_FOUND;
699 device_list->count = devices->count;
701 _bluetooth_extract_dpm_device_info(devices->count,
702 device_list, devices);
704 BT_ERR("Get Devices list Failed");
707 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
712 BT_EXPORT_API int bluetooth_dpm_get_devices_from_whitelist(bt_dpm_device_list_t *device_list)
715 bt_dpm_device_list_t *devices = NULL;
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_DEVICES_WHITELIST,
723 in_param1, in_param2, in_param3, in_param4, &out_param);
725 if (result == BLUETOOTH_ERROR_NONE) {
726 devices = &g_array_index(out_param, bt_dpm_device_list_t, 0);
727 BT_DBG("device_list->count : %d", devices->count);
729 if (devices->count == 0) {
730 BT_ERR("device_list->count is zero !");
731 result = BLUETOOTH_ERROR_NOT_FOUND;
734 device_list->count = devices->count;
736 _bluetooth_extract_dpm_device_info(devices->count,
737 device_list, devices);
740 BT_ERR("Get Devices list Failed");
742 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
747 BT_EXPORT_API int bluetooth_dpm_get_uuids_from_blacklist(bt_dpm_uuids_list_t *uuid_list)
750 bt_dpm_uuids_list_t *uuids;
752 BT_CHECK_ENABLED_ANY(return);
755 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
757 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_UUIDS_BLACKLIST,
758 in_param1, in_param2, in_param3, in_param4, &out_param);
760 if (result == BLUETOOTH_ERROR_NONE) {
761 uuids = &g_array_index(out_param, bt_dpm_uuids_list_t, 0);
762 BT_DBG("uuids->count : %d", uuids->count);
764 if (uuids->count == 0) {
765 BT_ERR("uuids->count is zero !");
766 result = BLUETOOTH_ERROR_NOT_FOUND;
769 uuid_list->count = uuids->count;
770 _bluetooth_extract_dpm_uuid_info(uuids->count,
773 BT_ERR("Get UUIDS list Failed");
776 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
781 BT_EXPORT_API int bluetooth_dpm_get_uuids_from_whitelist(bt_dpm_uuids_list_t *uuid_list)
784 bt_dpm_uuids_list_t *uuids;
786 BT_CHECK_ENABLED_ANY(return);
789 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
791 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_UUIDS_WHITELIST,
792 in_param1, in_param2, in_param3, in_param4, &out_param);
794 if (result == BLUETOOTH_ERROR_NONE) {
795 uuids = &g_array_index(out_param, bt_dpm_uuids_list_t, 0);
796 BT_DBG("uuids->count : %d", uuids->count);
798 if (uuids->count == 0) {
799 BT_ERR("uuids->count is zero !");
800 result = BLUETOOTH_ERROR_NOT_FOUND;
803 uuid_list->count = uuids->count;
805 _bluetooth_extract_dpm_uuid_info(uuids->count,
808 BT_ERR("Get UUIDS list Failed");
811 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
816 BT_EXPORT_API int bluetooth_dpm_remove_device_from_whitelist(const bluetooth_device_address_t *device_address)
820 BT_CHECK_PARAMETER(device_address, return);
821 BT_CHECK_ENABLED_ANY(return);
824 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
826 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
828 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_REMOVE_DEVICE_WHITELIST,
829 in_param1, in_param2, in_param3, in_param4, &out_param);
831 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
836 BT_EXPORT_API int bluetooth_dpm_remove_device_from_blacklist(const bluetooth_device_address_t *device_address)
840 BT_CHECK_PARAMETER(device_address, return);
841 BT_CHECK_ENABLED_ANY(return);
844 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
846 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
848 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_REMOVE_DEVICE_BLACKLIST,
849 in_param1, in_param2, in_param3, in_param4, &out_param);
851 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
856 BT_EXPORT_API int bluetooth_dpm_remove_uuid_from_whitelist(const char *service_uuid)
859 char uuid[BLUETOOTH_UUID_STRING_MAX];
861 BT_CHECK_PARAMETER(service_uuid, return);
862 BT_CHECK_ENABLED_ANY(return);
865 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
867 g_strlcpy(uuid, service_uuid, sizeof(uuid));
868 g_array_append_vals(in_param1, uuid, BLUETOOTH_UUID_STRING_MAX);
870 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_REMOVE_UUID_WHITELIST,
871 in_param1, in_param2, in_param3, in_param4, &out_param);
873 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
878 BT_EXPORT_API int bluetooth_dpm_remove_uuid_from_blacklist(const char *service_uuid)
881 char uuid[BLUETOOTH_UUID_STRING_MAX];
883 BT_CHECK_PARAMETER(service_uuid, return);
884 BT_CHECK_ENABLED_ANY(return);
887 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
889 g_strlcpy(uuid, service_uuid, sizeof(uuid));
890 g_array_append_vals(in_param1, uuid, BLUETOOTH_UUID_STRING_MAX);
892 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_REMOVE_UUID_BLACKLIST,
893 in_param1, in_param2, in_param3, in_param4, &out_param);
895 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
901 BT_EXPORT_API int bluetooth_dpm_set_allow_outgoing_call(bt_dpm_status_t value)
905 BT_CHECK_ENABLED_ANY(return);
908 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
910 g_array_append_vals(in_param1, &value, sizeof(int));
912 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_ALLOW_OUTGOING_CALL,
913 in_param1, in_param2, in_param3, in_param4, &out_param);
915 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
920 BT_EXPORT_API int bluetooth_dpm_get_allow_outgoing_call(bt_dpm_status_t *value)
924 BT_CHECK_ENABLED_ANY(return);
927 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
929 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_ALLOW_OUTGOING_CALL,
930 in_param1, in_param2, in_param3, in_param4, &out_param);
932 if (result == BLUETOOTH_ERROR_NONE) {
933 if (out_param->len > 0) {
934 *value = g_array_index(out_param,
937 BT_ERR("out_param length is 0!!");
941 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
946 BT_EXPORT_API int bluetooth_dpm_set_pairing_state(bt_dpm_status_t value)
950 BT_CHECK_ENABLED_ANY(return);
953 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
955 g_array_append_vals(in_param1, &value, sizeof(int));
957 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_PAIRING_STATE,
958 in_param1, in_param2, in_param3, in_param4, &out_param);
960 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
965 BT_EXPORT_API int bluetooth_dpm_get_pairing_state(bt_dpm_status_t *value)
969 BT_CHECK_ENABLED_ANY(return);
972 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
974 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_ALLOW_BT_MODE,
975 in_param1, in_param2, in_param3, in_param4, &out_param);
977 if (result == BLUETOOTH_ERROR_NONE) {
978 if (out_param->len > 0) {
979 *value = g_array_index(out_param,
982 BT_ERR("out_param length is 0!!");
986 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
991 BT_EXPORT_API int bluetooth_dpm_set_profile_state(bt_dpm_profile_t profile, bt_dpm_status_t value)
995 BT_CHECK_ENABLED_ANY(return);
998 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1000 g_array_append_vals(in_param1, &profile, sizeof(int));
1001 g_array_append_vals(in_param2, &value, sizeof(int));
1003 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_PROFILE_STATE,
1004 in_param1, in_param2, in_param3, in_param4, &out_param);
1006 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1011 BT_EXPORT_API int bluetooth_dpm_get_profile_state(bt_dpm_profile_t profile, bt_dpm_status_t *value)
1015 BT_CHECK_ENABLED_ANY(return);
1018 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1020 g_array_append_vals(in_param1, &profile, sizeof(int));
1022 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_PROFILE_STATE,
1023 in_param1, in_param2, in_param3, in_param4, &out_param);
1025 if (result == BLUETOOTH_ERROR_NONE) {
1026 if (out_param->len > 0) {
1027 *value = g_array_index(out_param,
1030 BT_ERR("out_param length is 0!!");
1034 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1039 BT_EXPORT_API int bluetooth_dpm_set_desktop_connectivity_state(bt_dpm_status_t value)
1043 BT_CHECK_ENABLED_ANY(return);
1046 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1048 g_array_append_vals(in_param1, &value, sizeof(int));
1050 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_DESKROP_CONNECTIVITY_STATE,
1051 in_param1, in_param2, in_param3, in_param4, &out_param);
1053 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1058 BT_EXPORT_API int bluetooth_dpm_get_desktop_connectivity_state(bt_dpm_status_t *value)
1062 BT_CHECK_ENABLED_ANY(return);
1065 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1067 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_DESKROP_CONNECTIVITY_STATE,
1068 in_param1, in_param2, in_param3, in_param4, &out_param);
1070 if (result == BLUETOOTH_ERROR_NONE) {
1071 if (out_param->len > 0) {
1072 *value = g_array_index(out_param,
1075 BT_ERR("out_param length is 0!!");
1079 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1084 BT_EXPORT_API int bluetooth_dpm_set_discoverable_state(bt_dpm_status_t value)
1088 BT_CHECK_ENABLED_ANY(return);
1091 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1093 g_array_append_vals(in_param1, &value, sizeof(int));
1095 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_DISCOVERABLE_STATE,
1096 in_param1, in_param2, in_param3, in_param4, &out_param);
1098 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1103 BT_EXPORT_API int bluetooth_dpm_get_discoverable_state(bt_dpm_status_t *value)
1107 BT_CHECK_ENABLED_ANY(return);
1110 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1112 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_DISCOVERABLE_STATE,
1113 in_param1, in_param2, in_param3, in_param4, &out_param);
1115 if (result == BLUETOOTH_ERROR_NONE) {
1116 if (out_param->len > 0) {
1117 *value = g_array_index(out_param,
1120 BT_ERR("out_param length is 0!!");
1124 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1129 BT_EXPORT_API int bluetooth_dpm_set_limited_discoverable_state(bt_dpm_status_t value)
1133 BT_CHECK_ENABLED_ANY(return);
1136 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1138 g_array_append_vals(in_param1, &value, sizeof(int));
1140 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_LIMITED_DISCOVERABLE_STATE,
1141 in_param1, in_param2, in_param3, in_param4, &out_param);
1143 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1148 BT_EXPORT_API int bluetooth_dpm_get_limited_discoverable_state(bt_dpm_status_t *value)
1152 BT_CHECK_ENABLED_ANY(return);
1155 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1157 g_array_append_vals(in_param1, &value, sizeof(int));
1159 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_LIMITED_DISCOVERABLE_STATE,
1160 in_param1, in_param2, in_param3, in_param4, &out_param);
1162 if (result == BLUETOOTH_ERROR_NONE) {
1163 if (out_param->len > 0) {
1164 *value = g_array_index(out_param,
1167 BT_ERR("out_param length is 0!!");
1171 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1176 BT_EXPORT_API int bluetooth_dpm_set_data_transfer_state(bt_dpm_status_t value)
1180 BT_CHECK_ENABLED_ANY(return);
1183 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1185 g_array_append_vals(in_param1, &value, sizeof(int));
1187 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_DATA_TRANSFER_STATE,
1188 in_param1, in_param2, in_param3, in_param4, &out_param);
1190 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1195 BT_EXPORT_API int bluetooth_dpm_get_data_transfer_state(bt_dpm_status_t *value)
1199 BT_CHECK_ENABLED_ANY(return);
1202 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1204 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_DATA_TRANSFER_STATE,
1205 in_param1, in_param2, in_param3, in_param4, &out_param);
1207 if (result == BLUETOOTH_ERROR_NONE) {
1208 if (out_param->len > 0) {
1209 *value = g_array_index(out_param,
1212 BT_ERR("out_param length is 0!!");
1216 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1220 #endif /* #ifdef TIZEN_FEATURE_BT_DPM */