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 BT_CHECK_ENABLED_ANY(return);
255 status = _bt_check_dpm_handsfree_only();
258 status = _bt_check_dpm_pairing_restriction();
261 status = _bt_check_dpm_desktop_connectivity_restriction();
263 case BT_DPM_ADDRESS: {
264 status = _bt_check_dpm_blacklist_device((bluetooth_device_address_t *)param);
269 uuid = (char *)param;
270 status = _bt_check_dpm_blacklist_uuid(uuid);
274 status = _bt_check_dpm_transfer_restriction();
276 /* TODO: MAP? see above */
278 status = _bt_check_dpm_hsp_restriction();
281 status = _bt_check_dpm_a2dp_restriction();
284 status = _bt_check_dpm_avrcp_restriction();
287 status = _bt_check_dpm_spp_restriction();
290 BT_ERR("Unknown service");
297 BT_EXPORT_API int bluetooth_dpm_set_allow_mode(bt_dpm_allow_t value)
299 int result = BLUETOOTH_ERROR_NONE;
300 #ifdef TIZEN_FEATURE_BT_DPM
304 #ifdef TIZEN_FEATURE_BT_DPM
305 if (vconf_get_int(VCONFKEY_BT_STATUS, &bt_status) < 0)
306 BT_ERR("Error in reading VCONFKEY_BT_STATUS");
308 if (bt_status == VCONFKEY_BT_STATUS_ON) {
309 if (vconf_set_int(VCONFKEY_BT_DPM_STATUS, value) != 0) {
310 BT_ERR("Set VCONFKEY_BT_DPM_STATUS failed\n");
311 result = BLUETOOTH_ERROR_INTERNAL;
313 BT_ERR("Set VCONFKEY_BT_DPM_STATUS success\n");
314 result = BLUETOOTH_ERROR_NONE;
318 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
320 g_array_append_vals(in_param1, &value, sizeof(int));
322 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_ALLOW_BT_MODE,
323 in_param1, in_param2, in_param3, in_param4, &out_param);
325 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
327 if (result == BLUETOOTH_ERROR_NONE &&
328 value == BLUETOOTH_DPM_BT_RESTRICTED) {
329 result = bluetooth_disable_adapter();
332 if (value >= BLUETOOTH_DPM_BT_ALLOWED &&
333 value <= BLUETOOTH_DPM_BT_RESTRICTED) {
334 if (vconf_set_int(VCONFKEY_BT_DPM_STATUS, value) != 0) {
335 BT_ERR("Set VCONFKEY_BT_DPM_STATUS failed\n");
336 result = BLUETOOTH_ERROR_INTERNAL;
338 result = BLUETOOTH_ERROR_NONE;
340 result = BLUETOOTH_ERROR_INVALID_PARAM;
344 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
346 g_array_append_vals(in_param1, &value, sizeof(int));
348 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_ALLOW_BT_MODE,
349 in_param1, in_param2, in_param3, in_param4, &out_param);
351 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
358 BT_EXPORT_API int bluetooth_dpm_get_allow_mode(bt_dpm_allow_t *value)
362 #ifdef TIZEN_FEATURE_BT_DPM
363 if (vconf_get_int(VCONFKEY_BT_DPM_STATUS, value) != 0) {
364 BT_ERR("fail to get vconf key!");
365 return BLUETOOTH_ERROR_INTERNAL;
367 result = BLUETOOTH_ERROR_NONE;
369 BT_CHECK_ENABLED_ANY(return);
372 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
374 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_ALLOW_BT_MODE,
375 in_param1, in_param2, in_param3, in_param4, &out_param);
377 if (result == BLUETOOTH_ERROR_NONE) {
378 if (out_param->len > 0) {
379 *value = g_array_index(out_param,
382 BT_ERR("out_param length is 0!!");
386 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
393 BT_EXPORT_API int bluetooth_dpm_activate_device_restriction(bt_dpm_status_t value)
397 BT_CHECK_ENABLED_ANY(return);
400 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
402 g_array_append_vals(in_param1, &value, sizeof(int));
404 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_DEVICE_RESTRITION,
405 in_param1, in_param2, in_param3, in_param4, &out_param);
407 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
413 BT_EXPORT_API int bluetooth_dpm_is_device_restriction_active(bt_dpm_status_t *value)
417 BT_CHECK_ENABLED_ANY(return);
420 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
422 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_DEVICE_RESTRITION,
423 in_param1, in_param2, in_param3, in_param4, &out_param);
425 if (result == BLUETOOTH_ERROR_NONE) {
426 if (out_param->len > 0) {
427 *value = g_array_index(out_param,
430 BT_ERR("out_param length is 0!!");
434 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
440 BT_EXPORT_API int bluetooth_dpm_activate_uuid_restriction(bt_dpm_status_t value)
444 BT_CHECK_ENABLED_ANY(return);
447 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
449 g_array_append_vals(in_param1, &value, sizeof(int));
451 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_UUID_RESTRITION,
452 in_param1, in_param2, in_param3, in_param4, &out_param);
454 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
460 BT_EXPORT_API int bluetooth_dpm_is_uuid_restriction_active(bt_dpm_status_t *value)
464 BT_CHECK_ENABLED_ANY(return);
467 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
469 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_UUID_RESTRITION,
470 in_param1, in_param2, in_param3, in_param4, &out_param);
472 if (result == BLUETOOTH_ERROR_NONE) {
473 if (out_param->len > 0) {
474 *value = g_array_index(out_param,
477 BT_ERR("out_param length is 0!!");
481 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
488 BT_EXPORT_API int bluetooth_dpm_add_devices_to_blacklist(const bluetooth_device_address_t *device_address)
492 BT_CHECK_PARAMETER(device_address, return);
493 BT_CHECK_ENABLED_ANY(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));
501 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_ADD_DEVICES_BLACKLIST,
502 in_param1, in_param2, in_param3, in_param4, &out_param);
504 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
510 BT_EXPORT_API int bluetooth_dpm_add_devices_to_whitelist(const bluetooth_device_address_t *device_address)
514 BT_CHECK_PARAMETER(device_address, return);
515 BT_CHECK_ENABLED_ANY(return);
518 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
520 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
522 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_ADD_DEVICES_WHITELIST,
523 in_param1, in_param2, in_param3, in_param4, &out_param);
525 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
532 BT_EXPORT_API int bluetooth_dpm_add_uuids_to_blacklist(const char *service_uuid)
535 char uuid[BLUETOOTH_UUID_STRING_MAX];
537 BT_CHECK_PARAMETER(service_uuid, return);
538 BT_CHECK_ENABLED_ANY(return);
542 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
544 g_strlcpy(uuid, service_uuid, sizeof(uuid));
545 g_array_append_vals(in_param1, uuid, BLUETOOTH_UUID_STRING_MAX);
547 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_ADD_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);
557 BT_EXPORT_API int bluetooth_dpm_add_uuids_to_whitelist(const char *service_uuid)
560 char uuid[BLUETOOTH_UUID_STRING_MAX];
562 BT_CHECK_PARAMETER(service_uuid, return);
563 BT_CHECK_ENABLED_ANY(return);
566 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
568 g_strlcpy(uuid, service_uuid, sizeof(uuid));
569 g_array_append_vals(in_param1, uuid, BLUETOOTH_UUID_STRING_MAX);
571 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_ADD_UUIDS_WHITELIST,
572 in_param1, in_param2, in_param3, in_param4, &out_param);
574 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
580 BT_EXPORT_API int bluetooth_dpm_clear_devices_from_blacklist(void)
584 BT_CHECK_ENABLED_ANY(return);
587 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
589 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_CLEAR_DEVICES_BLACKLIST,
590 in_param1, in_param2, in_param3, in_param4, &out_param);
592 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
598 BT_EXPORT_API int bluetooth_dpm_clear_devices_from_whitelist(void)
602 BT_CHECK_ENABLED_ANY(return);
605 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
607 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_CLEAR_DEVICES_WHITELIST,
608 in_param1, in_param2, in_param3, in_param4, &out_param);
610 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
616 BT_EXPORT_API int bluetooth_dpm_clear_uuids_from_blacklist(void)
620 BT_CHECK_ENABLED_ANY(return);
623 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
625 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_CLEAR_UUIDS_BLACKLIST,
626 in_param1, in_param2, in_param3, in_param4, &out_param);
628 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
634 BT_EXPORT_API int bluetooth_dpm_clear_uuids_from_whitelist(void)
638 BT_CHECK_ENABLED_ANY(return);
641 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
643 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_CLEAR_UUIDS_WHITELIST,
644 in_param1, in_param2, in_param3, in_param4, &out_param);
646 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
652 static void _bluetooth_extract_dpm_device_info(int count,
653 bt_dpm_device_list_t *dst_info,
654 bt_dpm_device_list_t *src_info)
658 for (i = 0; i < count; i++) {
659 memset(dst_info->addresses[i].addr, 0,
660 BLUETOOTH_ADDRESS_LENGTH);
662 g_strlcpy((gchar *)dst_info->addresses[i].addr, (gchar *)src_info->addresses[i].addr,
663 BLUETOOTH_ADDRESS_LENGTH);
665 // BT_DBG("address[%d] : %s", i, dst_info->addresses[i].addr);
669 static void _bluetooth_extract_dpm_uuid_info(int count,
670 bt_dpm_uuids_list_t *dst_info,
671 bt_dpm_uuids_list_t *src_info)
675 for (i = 0; i < count; i++) {
676 memset(dst_info->uuids[i], 0,
677 BLUETOOTH_UUID_STRING_MAX);
679 g_strlcpy(dst_info->uuids[i], src_info->uuids[i],
680 BLUETOOTH_UUID_STRING_MAX);
682 BT_DBG("uuids[%d] : %s", i, dst_info->uuids[i]);
686 BT_EXPORT_API int bluetooth_dpm_get_devices_from_blacklist(bt_dpm_device_list_t *device_list)
689 bt_dpm_device_list_t *devices = NULL;
691 BT_CHECK_ENABLED_ANY(return);
694 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
696 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_DEVICES_BLACKLIST,
697 in_param1, in_param2, in_param3, in_param4, &out_param);
699 if (result == BLUETOOTH_ERROR_NONE) {
700 devices = &g_array_index(out_param, bt_dpm_device_list_t, 0);
701 BT_DBG("device_list->count : %d", devices->count);
703 if (devices->count == 0) {
704 BT_ERR("device_list->count is zero !");
705 result = BLUETOOTH_ERROR_NOT_FOUND;
708 device_list->count = devices->count;
710 _bluetooth_extract_dpm_device_info(devices->count,
711 device_list, devices);
713 BT_ERR("Get Devices list Failed");
716 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
721 BT_EXPORT_API int bluetooth_dpm_get_devices_from_whitelist(bt_dpm_device_list_t *device_list)
724 bt_dpm_device_list_t *devices = NULL;
726 BT_CHECK_ENABLED_ANY(return);
729 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
731 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_DEVICES_WHITELIST,
732 in_param1, in_param2, in_param3, in_param4, &out_param);
734 if (result == BLUETOOTH_ERROR_NONE) {
735 devices = &g_array_index(out_param, bt_dpm_device_list_t, 0);
736 BT_DBG("device_list->count : %d", devices->count);
738 if (devices->count == 0) {
739 BT_ERR("device_list->count is zero !");
740 result = BLUETOOTH_ERROR_NOT_FOUND;
743 device_list->count = devices->count;
745 _bluetooth_extract_dpm_device_info(devices->count,
746 device_list, devices);
749 BT_ERR("Get Devices list Failed");
751 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
756 BT_EXPORT_API int bluetooth_dpm_get_uuids_from_blacklist(bt_dpm_uuids_list_t *uuid_list)
759 bt_dpm_uuids_list_t *uuids;
761 BT_CHECK_ENABLED_ANY(return);
764 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
766 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_UUIDS_BLACKLIST,
767 in_param1, in_param2, in_param3, in_param4, &out_param);
769 if (result == BLUETOOTH_ERROR_NONE) {
770 uuids = &g_array_index(out_param, bt_dpm_uuids_list_t, 0);
771 BT_DBG("uuids->count : %d", uuids->count);
773 if (uuids->count == 0) {
774 BT_ERR("uuids->count is zero !");
775 result = BLUETOOTH_ERROR_NOT_FOUND;
778 uuid_list->count = uuids->count;
779 _bluetooth_extract_dpm_uuid_info(uuids->count,
782 BT_ERR("Get UUIDS list Failed");
785 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
790 BT_EXPORT_API int bluetooth_dpm_get_uuids_from_whitelist(bt_dpm_uuids_list_t *uuid_list)
793 bt_dpm_uuids_list_t *uuids;
795 BT_CHECK_ENABLED_ANY(return);
798 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
800 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_UUIDS_WHITELIST,
801 in_param1, in_param2, in_param3, in_param4, &out_param);
803 if (result == BLUETOOTH_ERROR_NONE) {
804 uuids = &g_array_index(out_param, bt_dpm_uuids_list_t, 0);
805 BT_DBG("uuids->count : %d", uuids->count);
807 if (uuids->count == 0) {
808 BT_ERR("uuids->count is zero !");
809 result = BLUETOOTH_ERROR_NOT_FOUND;
812 uuid_list->count = uuids->count;
814 _bluetooth_extract_dpm_uuid_info(uuids->count,
817 BT_ERR("Get UUIDS list Failed");
820 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
825 BT_EXPORT_API int bluetooth_dpm_remove_device_from_whitelist(const bluetooth_device_address_t *device_address)
829 BT_CHECK_PARAMETER(device_address, return);
830 BT_CHECK_ENABLED_ANY(return);
833 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
835 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
837 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_REMOVE_DEVICE_WHITELIST,
838 in_param1, in_param2, in_param3, in_param4, &out_param);
840 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
845 BT_EXPORT_API int bluetooth_dpm_remove_device_from_blacklist(const bluetooth_device_address_t *device_address)
849 BT_CHECK_PARAMETER(device_address, return);
850 BT_CHECK_ENABLED_ANY(return);
853 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
855 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
857 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_REMOVE_DEVICE_BLACKLIST,
858 in_param1, in_param2, in_param3, in_param4, &out_param);
860 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
865 BT_EXPORT_API int bluetooth_dpm_remove_uuid_from_whitelist(const char *service_uuid)
868 char uuid[BLUETOOTH_UUID_STRING_MAX];
870 BT_CHECK_PARAMETER(service_uuid, return);
871 BT_CHECK_ENABLED_ANY(return);
874 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
876 g_strlcpy(uuid, service_uuid, sizeof(uuid));
877 g_array_append_vals(in_param1, uuid, BLUETOOTH_UUID_STRING_MAX);
879 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_REMOVE_UUID_WHITELIST,
880 in_param1, in_param2, in_param3, in_param4, &out_param);
882 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
887 BT_EXPORT_API int bluetooth_dpm_remove_uuid_from_blacklist(const char *service_uuid)
890 char uuid[BLUETOOTH_UUID_STRING_MAX];
892 BT_CHECK_PARAMETER(service_uuid, return);
893 BT_CHECK_ENABLED_ANY(return);
896 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
898 g_strlcpy(uuid, service_uuid, sizeof(uuid));
899 g_array_append_vals(in_param1, uuid, BLUETOOTH_UUID_STRING_MAX);
901 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_REMOVE_UUID_BLACKLIST,
902 in_param1, in_param2, in_param3, in_param4, &out_param);
904 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
910 BT_EXPORT_API int bluetooth_dpm_set_allow_outgoing_call(bt_dpm_status_t value)
914 BT_CHECK_ENABLED_ANY(return);
917 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
919 g_array_append_vals(in_param1, &value, sizeof(int));
921 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_ALLOW_OUTGOING_CALL,
922 in_param1, in_param2, in_param3, in_param4, &out_param);
924 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
929 BT_EXPORT_API int bluetooth_dpm_get_allow_outgoing_call(bt_dpm_status_t *value)
933 BT_CHECK_ENABLED_ANY(return);
936 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
938 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_ALLOW_OUTGOING_CALL,
939 in_param1, in_param2, in_param3, in_param4, &out_param);
941 if (result == BLUETOOTH_ERROR_NONE) {
942 if (out_param->len > 0) {
943 *value = g_array_index(out_param,
946 BT_ERR("out_param length is 0!!");
950 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
955 BT_EXPORT_API int bluetooth_dpm_set_pairing_state(bt_dpm_status_t value)
959 BT_CHECK_ENABLED_ANY(return);
962 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
964 g_array_append_vals(in_param1, &value, sizeof(int));
966 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_PAIRING_STATE,
967 in_param1, in_param2, in_param3, in_param4, &out_param);
969 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
974 BT_EXPORT_API int bluetooth_dpm_get_pairing_state(bt_dpm_status_t *value)
978 BT_CHECK_ENABLED_ANY(return);
981 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
983 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_ALLOW_BT_MODE,
984 in_param1, in_param2, in_param3, in_param4, &out_param);
986 if (result == BLUETOOTH_ERROR_NONE) {
987 if (out_param->len > 0) {
988 *value = g_array_index(out_param,
991 BT_ERR("out_param length is 0!!");
995 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1000 BT_EXPORT_API int bluetooth_dpm_set_profile_state(bt_dpm_profile_t profile, bt_dpm_status_t value)
1004 BT_CHECK_ENABLED_ANY(return);
1007 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1009 g_array_append_vals(in_param1, &profile, sizeof(int));
1010 g_array_append_vals(in_param2, &value, sizeof(int));
1012 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_PROFILE_STATE,
1013 in_param1, in_param2, in_param3, in_param4, &out_param);
1015 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1020 BT_EXPORT_API int bluetooth_dpm_get_profile_state(bt_dpm_profile_t profile, bt_dpm_status_t *value)
1024 BT_CHECK_ENABLED_ANY(return);
1027 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1029 g_array_append_vals(in_param1, &profile, sizeof(int));
1031 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_PROFILE_STATE,
1032 in_param1, in_param2, in_param3, in_param4, &out_param);
1034 if (result == BLUETOOTH_ERROR_NONE) {
1035 if (out_param->len > 0) {
1036 *value = g_array_index(out_param,
1039 BT_ERR("out_param length is 0!!");
1043 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1048 BT_EXPORT_API int bluetooth_dpm_set_desktop_connectivity_state(bt_dpm_status_t value)
1052 BT_CHECK_ENABLED_ANY(return);
1055 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1057 g_array_append_vals(in_param1, &value, sizeof(int));
1059 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_DESKROP_CONNECTIVITY_STATE,
1060 in_param1, in_param2, in_param3, in_param4, &out_param);
1062 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1067 BT_EXPORT_API int bluetooth_dpm_get_desktop_connectivity_state(bt_dpm_status_t *value)
1071 BT_CHECK_ENABLED_ANY(return);
1074 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1076 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_DESKROP_CONNECTIVITY_STATE,
1077 in_param1, in_param2, in_param3, in_param4, &out_param);
1079 if (result == BLUETOOTH_ERROR_NONE) {
1080 if (out_param->len > 0) {
1081 *value = g_array_index(out_param,
1084 BT_ERR("out_param length is 0!!");
1088 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1093 BT_EXPORT_API int bluetooth_dpm_set_discoverable_state(bt_dpm_status_t value)
1097 BT_CHECK_ENABLED_ANY(return);
1100 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1102 g_array_append_vals(in_param1, &value, sizeof(int));
1104 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_DISCOVERABLE_STATE,
1105 in_param1, in_param2, in_param3, in_param4, &out_param);
1107 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1112 BT_EXPORT_API int bluetooth_dpm_get_discoverable_state(bt_dpm_status_t *value)
1116 BT_CHECK_ENABLED_ANY(return);
1119 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1121 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_DISCOVERABLE_STATE,
1122 in_param1, in_param2, in_param3, in_param4, &out_param);
1124 if (result == BLUETOOTH_ERROR_NONE) {
1125 if (out_param->len > 0) {
1126 *value = g_array_index(out_param,
1129 BT_ERR("out_param length is 0!!");
1133 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1138 BT_EXPORT_API int bluetooth_dpm_set_limited_discoverable_state(bt_dpm_status_t value)
1142 BT_CHECK_ENABLED_ANY(return);
1145 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1147 g_array_append_vals(in_param1, &value, sizeof(int));
1149 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_LIMITED_DISCOVERABLE_STATE,
1150 in_param1, in_param2, in_param3, in_param4, &out_param);
1152 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1157 BT_EXPORT_API int bluetooth_dpm_get_limited_discoverable_state(bt_dpm_status_t *value)
1161 BT_CHECK_ENABLED_ANY(return);
1164 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1166 g_array_append_vals(in_param1, &value, sizeof(int));
1168 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_LIMITED_DISCOVERABLE_STATE,
1169 in_param1, in_param2, in_param3, in_param4, &out_param);
1171 if (result == BLUETOOTH_ERROR_NONE) {
1172 if (out_param->len > 0) {
1173 *value = g_array_index(out_param,
1176 BT_ERR("out_param length is 0!!");
1180 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1185 BT_EXPORT_API int bluetooth_dpm_set_data_transfer_state(bt_dpm_status_t value)
1189 BT_CHECK_ENABLED_ANY(return);
1192 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1194 g_array_append_vals(in_param1, &value, sizeof(int));
1196 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_DATA_TRANSFER_STATE,
1197 in_param1, in_param2, in_param3, in_param4, &out_param);
1199 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1204 BT_EXPORT_API int bluetooth_dpm_get_data_transfer_state(bt_dpm_status_t *value)
1208 BT_CHECK_ENABLED_ANY(return);
1211 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1213 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_DATA_TRANSFER_STATE,
1214 in_param1, in_param2, in_param3, in_param4, &out_param);
1216 if (result == BLUETOOTH_ERROR_NONE) {
1217 if (out_param->len > 0) {
1218 *value = g_array_index(out_param,
1221 BT_ERR("out_param length is 0!!");
1225 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1229 #endif /* #ifdef TIZEN_FEATURE_BT_DPM */