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_blocklist_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_blocklist(&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;
89 return BT_DPM_NO_SERVICE;
91 return BT_DPM_ALLOWED;
94 static bt_dpm_status_e _bt_check_dpm_blocklist_uuid(char *uuid)
96 bt_dpm_status_e bt_dpm_status = BT_DPM_ALLOWED;
97 bt_dpm_status_t dpm_status = BLUETOOTH_DPM_ALLOWED;
98 bt_dpm_profile_t dpm_profile = BLUETOOTH_DPM_PROFILE_NONE;
99 bt_dpm_uuids_list_t uuid_list;
100 int ret = BLUETOOTH_DPM_RESULT_SUCCESS;
101 retv_if(!uuid, bt_dpm_status);
103 ret = bluetooth_dpm_get_uuids_from_blocklist(&uuid_list);
104 if (ret == BLUETOOTH_DPM_RESULT_SUCCESS) {
106 for (i = 0; i < uuid_list.count; i++) {
107 if (g_strcmp0(uuid, uuid_list.uuids[i]) == 0)
108 return BT_DPM_RESTRICTED;
111 return BT_DPM_NO_SERVICE;
114 if (g_strcmp0(BT_OPP_UUID, uuid) == 0) {
115 bt_dpm_status_t dpm_status = BLUETOOTH_DPM_ALLOWED;
116 bluetooth_dpm_get_data_transfer_state(&dpm_status);
117 return (dpm_status == BLUETOOTH_DPM_RESTRICTED ? BT_DPM_RESTRICTED : BT_DPM_ALLOWED);
119 /* TODO: MAP? see above */
121 /* ++ check MDM profile restriction ++ */
122 if (g_strcmp0(BT_A2DP_UUID, uuid) == 0)
123 dpm_profile = BLUETOOTH_DPM_POLICY_A2DP_PROFILE_STATE;
124 else if (g_strcmp0(BT_AVRCP_TARGET_UUID, uuid) == 0)
125 dpm_profile = BLUETOOTH_DPM_POLICY_AVRCP_PROFILE_STATE;
126 else if (g_strcmp0(BT_HFP_AUDIO_GATEWAY_UUID, uuid) == 0)
127 dpm_profile = BLUETOOTH_DPM_POLICY_HFP_PROFILE_STATE;
128 else if (g_strcmp0(BT_HSP_AUDIO_GATEWAY_UUID, uuid) == 0)
129 dpm_profile = BLUETOOTH_DPM_POLICY_HSP_PROFILE_STATE;
130 else if (g_strcmp0(BT_OBEX_PSE_UUID, uuid) == 0)
131 dpm_profile = BLUETOOTH_DPM_POLICY_PBAP_PROFILE_STATE;
133 if (dpm_profile != BLUETOOTH_DPM_PROFILE_NONE) {
134 ret = bluetooth_dpm_get_profile_state(dpm_profile, &dpm_status);
135 return (dpm_status == BLUETOOTH_DPM_RESTRICTED ? BT_DPM_RESTRICTED : BT_DPM_ALLOWED);
137 /* -- check DPM profile restriction -- */
139 return bt_dpm_status;
142 static bt_dpm_status_e _bt_check_dpm_transfer_restriction(void)
144 bt_dpm_status_e dpm_status = BT_DPM_ALLOWED;
145 bt_dpm_status_t dpm_value = BLUETOOTH_DPM_ALLOWED;
147 dpm_status = _bt_check_dpm_blocklist_uuid(BT_OPP_UUID);
148 /* TODO: MAP? see above */
150 if (dpm_status == BT_DPM_NO_SERVICE || dpm_status == BT_DPM_RESTRICTED)
153 bluetooth_dpm_get_data_transfer_state(&dpm_value);
155 return (dpm_value == BLUETOOTH_DPM_RESTRICTED ? BT_DPM_RESTRICTED : BT_DPM_ALLOWED);
158 static bt_dpm_status_e _bt_check_dpm_hsp_restriction(void)
160 bt_dpm_status_e dpm_status = BT_DPM_ALLOWED;
162 dpm_status = _bt_check_dpm_blocklist_uuid(BT_HFP_AUDIO_GATEWAY_UUID);
164 if (dpm_status == BT_DPM_NO_SERVICE || dpm_status == BT_DPM_RESTRICTED)
167 dpm_status = _bt_check_dpm_blocklist_uuid(BT_HSP_AUDIO_GATEWAY_UUID);
168 if (dpm_status == BT_DPM_NO_SERVICE || dpm_status == BT_DPM_RESTRICTED)
174 static bt_dpm_status_e _bt_check_dpm_a2dp_restriction(void)
176 bt_dpm_status_e dpm_status = BT_DPM_ALLOWED;
178 dpm_status = _bt_check_dpm_blocklist_uuid(BT_A2DP_UUID);
180 if (dpm_status == BT_DPM_NO_SERVICE || dpm_status == BT_DPM_RESTRICTED)
186 static bt_dpm_status_e _bt_check_dpm_avrcp_restriction(void)
188 bt_dpm_status_e dpm_status = BT_DPM_ALLOWED;
190 dpm_status = _bt_check_dpm_blocklist_uuid(BT_AVRCP_TARGET_UUID);
192 if (dpm_status == BT_DPM_NO_SERVICE || dpm_status == BT_DPM_RESTRICTED)
198 static bt_dpm_status_e _bt_check_dpm_spp_restriction(void)
200 bt_dpm_status_e dpm_status = BT_DPM_ALLOWED;
202 dpm_status = _bt_check_dpm_blocklist_uuid(BT_SPP_UUID);
204 if (dpm_status == BT_DPM_NO_SERVICE || dpm_status == BT_DPM_RESTRICTED)
210 int _bt_check_dpm(int service, void *param)
212 bt_dpm_status_e status = BT_DPM_ALLOWED;
216 status = _bt_check_dpm_handsfree_only();
219 status = _bt_check_dpm_pairing_restriction();
222 status = _bt_check_dpm_desktop_connectivity_restriction();
224 case BT_DPM_ADDRESS: {
225 status = _bt_check_dpm_blocklist_device((bluetooth_device_address_t *)param);
230 uuid = (char *)param;
231 status = _bt_check_dpm_blocklist_uuid(uuid);
235 status = _bt_check_dpm_transfer_restriction();
237 /* TODO: MAP? see above */
239 status = _bt_check_dpm_hsp_restriction();
242 status = _bt_check_dpm_a2dp_restriction();
245 status = _bt_check_dpm_avrcp_restriction();
248 status = _bt_check_dpm_spp_restriction();
251 BT_ERR("Unknown service");
258 BT_EXPORT_API int bluetooth_dpm_set_allow_mode(bt_dpm_allow_t value)
260 int result = BLUETOOTH_ERROR_NONE;
263 if (value >= BLUETOOTH_DPM_BT_ALLOWED &&
264 value <= BLUETOOTH_DPM_BT_RESTRICTED) {
265 if (vconf_set_int(VCONFKEY_BT_DPM_STATUS, value) != 0) {
266 BT_ERR("Set VCONFKEY_BT_DPM_STATUS failed\n");
267 result = BLUETOOTH_ERROR_INTERNAL;
269 result = BLUETOOTH_ERROR_NONE;
271 result = BLUETOOTH_ERROR_INVALID_PARAM;
273 if (vconf_get_int(VCONFKEY_BT_STATUS, &bt_status) < 0)
274 BT_ERR("Error in reading VCONFKEY_BT_STATUS");
276 if (bt_status == VCONFKEY_BT_STATUS_ON) {
278 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
280 g_array_append_vals(in_param1, &value, sizeof(int));
282 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_ALLOW_BT_MODE,
283 in_param1, in_param2, in_param3, in_param4, &out_param);
285 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
287 if (result == BLUETOOTH_ERROR_NONE &&
288 value == BLUETOOTH_DPM_BT_RESTRICTED) {
289 result = bluetooth_disable_adapter();
297 BT_EXPORT_API int bluetooth_dpm_get_allow_mode(bt_dpm_allow_t *value)
301 if (vconf_get_int(VCONFKEY_BT_DPM_STATUS, value) != 0) {
302 BT_ERR("fail to get vconf key!");
303 return BLUETOOTH_ERROR_INTERNAL;
305 result = BLUETOOTH_ERROR_NONE;
311 BT_EXPORT_API int bluetooth_dpm_activate_device_restriction(bt_dpm_status_t value)
315 BT_CHECK_ENABLED_ANY(return);
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_DEVICE_RESTRITION,
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);
331 BT_EXPORT_API int bluetooth_dpm_is_device_restriction_active(bt_dpm_status_t *value)
335 BT_CHECK_ENABLED_ANY(return);
338 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
340 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_DEVICE_RESTRITION,
341 in_param1, in_param2, in_param3, in_param4, &out_param);
343 if (result == BLUETOOTH_ERROR_NONE) {
344 if (out_param->len > 0) {
345 *value = g_array_index(out_param,
348 BT_ERR("out_param length is 0!!");
352 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
358 BT_EXPORT_API int bluetooth_dpm_activate_uuid_restriction(bt_dpm_status_t value)
362 BT_CHECK_ENABLED_ANY(return);
365 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
367 g_array_append_vals(in_param1, &value, sizeof(int));
369 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_UUID_RESTRITION,
370 in_param1, in_param2, in_param3, in_param4, &out_param);
372 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
378 BT_EXPORT_API int bluetooth_dpm_is_uuid_restriction_active(bt_dpm_status_t *value)
382 BT_CHECK_ENABLED_ANY(return);
385 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
387 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_UUID_RESTRITION,
388 in_param1, in_param2, in_param3, in_param4, &out_param);
390 if (result == BLUETOOTH_ERROR_NONE) {
391 if (out_param->len > 0) {
392 *value = g_array_index(out_param,
395 BT_ERR("out_param length is 0!!");
399 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
406 BT_EXPORT_API int bluetooth_dpm_add_devices_to_blocklist(const bluetooth_device_address_t *device_address)
410 BT_CHECK_PARAMETER(device_address, return);
411 BT_CHECK_ENABLED_ANY(return);
414 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
416 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
419 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_ADD_DEVICES_BLOCKLIST,
420 in_param1, in_param2, in_param3, in_param4, &out_param);
422 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
428 BT_EXPORT_API int bluetooth_dpm_add_devices_to_allowlist(const bluetooth_device_address_t *device_address)
432 BT_CHECK_PARAMETER(device_address, return);
433 BT_CHECK_ENABLED_ANY(return);
436 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
438 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
440 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_ADD_DEVICES_ALLOWLIST,
441 in_param1, in_param2, in_param3, in_param4, &out_param);
443 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
450 BT_EXPORT_API int bluetooth_dpm_add_uuids_to_blocklist(const char *service_uuid)
453 char uuid[BLUETOOTH_UUID_STRING_MAX];
455 BT_CHECK_PARAMETER(service_uuid, return);
456 BT_CHECK_ENABLED_ANY(return);
460 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
462 g_strlcpy(uuid, service_uuid, sizeof(uuid));
463 g_array_append_vals(in_param1, uuid, BLUETOOTH_UUID_STRING_MAX);
465 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_ADD_UUIDS_BLOCKLIST,
466 in_param1, in_param2, in_param3, in_param4, &out_param);
468 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
475 BT_EXPORT_API int bluetooth_dpm_add_uuids_to_allowlist(const char *service_uuid)
478 char uuid[BLUETOOTH_UUID_STRING_MAX];
480 BT_CHECK_PARAMETER(service_uuid, return);
481 BT_CHECK_ENABLED_ANY(return);
484 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
486 g_strlcpy(uuid, service_uuid, sizeof(uuid));
487 g_array_append_vals(in_param1, uuid, BLUETOOTH_UUID_STRING_MAX);
489 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_ADD_UUIDS_ALLOWLIST,
490 in_param1, in_param2, in_param3, in_param4, &out_param);
492 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
498 BT_EXPORT_API int bluetooth_dpm_clear_devices_from_blocklist(void)
502 BT_CHECK_ENABLED_ANY(return);
505 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
507 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_CLEAR_DEVICES_BLOCKLIST,
508 in_param1, in_param2, in_param3, in_param4, &out_param);
510 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
516 BT_EXPORT_API int bluetooth_dpm_clear_devices_from_allowlist(void)
520 BT_CHECK_ENABLED_ANY(return);
523 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
525 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_CLEAR_DEVICES_ALLOWLIST,
526 in_param1, in_param2, in_param3, in_param4, &out_param);
528 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
534 BT_EXPORT_API int bluetooth_dpm_clear_uuids_from_blocklist(void)
538 BT_CHECK_ENABLED_ANY(return);
541 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
543 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_CLEAR_UUIDS_BLOCKLIST,
544 in_param1, in_param2, in_param3, in_param4, &out_param);
546 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
552 BT_EXPORT_API int bluetooth_dpm_clear_uuids_from_allowlist(void)
556 BT_CHECK_ENABLED_ANY(return);
559 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
561 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_CLEAR_UUIDS_ALLOWLIST,
562 in_param1, in_param2, in_param3, in_param4, &out_param);
564 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
570 static void _bluetooth_extract_dpm_device_info(int count,
571 bt_dpm_device_list_t *dst_info,
572 bt_dpm_device_list_t *src_info)
576 for (i = 0; i < count; i++) {
577 memset(dst_info->addresses[i].addr, 0,
578 BLUETOOTH_ADDRESS_LENGTH);
580 g_strlcpy((gchar *)dst_info->addresses[i].addr, (gchar *)src_info->addresses[i].addr,
581 BLUETOOTH_ADDRESS_LENGTH);
583 // BT_DBG("address[%d] : %s", i, dst_info->addresses[i].addr);
587 static void _bluetooth_extract_dpm_uuid_info(int count,
588 bt_dpm_uuids_list_t *dst_info,
589 bt_dpm_uuids_list_t *src_info)
593 for (i = 0; i < count; i++) {
594 memset(dst_info->uuids[i], 0,
595 BLUETOOTH_UUID_STRING_MAX);
597 g_strlcpy(dst_info->uuids[i], src_info->uuids[i],
598 BLUETOOTH_UUID_STRING_MAX);
600 BT_DBG("uuids[%d] : %s", i, dst_info->uuids[i]);
604 BT_EXPORT_API int bluetooth_dpm_get_devices_from_blocklist(bt_dpm_device_list_t *device_list)
607 bt_dpm_device_list_t *devices = NULL;
609 BT_CHECK_ENABLED_ANY(return);
612 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
614 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_DEVICES_BLOCKLIST,
615 in_param1, in_param2, in_param3, in_param4, &out_param);
617 if (result == BLUETOOTH_ERROR_NONE) {
618 devices = &g_array_index(out_param, bt_dpm_device_list_t, 0);
619 BT_DBG("device_list->count : %d", devices->count);
621 if (devices->count == 0) {
622 BT_ERR("device_list->count is zero !");
623 result = BLUETOOTH_ERROR_NOT_FOUND;
626 device_list->count = devices->count;
628 _bluetooth_extract_dpm_device_info(devices->count,
629 device_list, devices);
631 BT_ERR("Get Devices list Failed");
634 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
639 BT_EXPORT_API int bluetooth_dpm_get_devices_from_allowlist(bt_dpm_device_list_t *device_list)
642 bt_dpm_device_list_t *devices = NULL;
644 BT_CHECK_ENABLED_ANY(return);
647 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
649 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_DEVICES_ALLOWLIST,
650 in_param1, in_param2, in_param3, in_param4, &out_param);
652 if (result == BLUETOOTH_ERROR_NONE) {
653 devices = &g_array_index(out_param, bt_dpm_device_list_t, 0);
654 BT_DBG("device_list->count : %d", devices->count);
656 if (devices->count == 0) {
657 BT_ERR("device_list->count is zero !");
658 result = BLUETOOTH_ERROR_NOT_FOUND;
661 device_list->count = devices->count;
663 _bluetooth_extract_dpm_device_info(devices->count,
664 device_list, devices);
667 BT_ERR("Get Devices list Failed");
669 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
674 BT_EXPORT_API int bluetooth_dpm_get_uuids_from_blocklist(bt_dpm_uuids_list_t *uuid_list)
677 bt_dpm_uuids_list_t *uuids;
679 BT_CHECK_ENABLED_ANY(return);
682 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
684 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_UUIDS_BLOCKLIST,
685 in_param1, in_param2, in_param3, in_param4, &out_param);
687 if (result == BLUETOOTH_ERROR_NONE) {
688 uuids = &g_array_index(out_param, bt_dpm_uuids_list_t, 0);
689 BT_DBG("uuids->count : %d", uuids->count);
691 if (uuids->count == 0) {
692 BT_ERR("uuids->count is zero !");
693 result = BLUETOOTH_ERROR_NOT_FOUND;
696 uuid_list->count = uuids->count;
697 _bluetooth_extract_dpm_uuid_info(uuids->count,
700 BT_ERR("Get UUIDS list Failed");
703 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
708 BT_EXPORT_API int bluetooth_dpm_get_uuids_from_allowlist(bt_dpm_uuids_list_t *uuid_list)
711 bt_dpm_uuids_list_t *uuids;
713 BT_CHECK_ENABLED_ANY(return);
716 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
718 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_UUIDS_ALLOWLIST,
719 in_param1, in_param2, in_param3, in_param4, &out_param);
721 if (result == BLUETOOTH_ERROR_NONE) {
722 uuids = &g_array_index(out_param, bt_dpm_uuids_list_t, 0);
723 BT_DBG("uuids->count : %d", uuids->count);
725 if (uuids->count == 0) {
726 BT_ERR("uuids->count is zero !");
727 result = BLUETOOTH_ERROR_NOT_FOUND;
730 uuid_list->count = uuids->count;
732 _bluetooth_extract_dpm_uuid_info(uuids->count,
735 BT_ERR("Get UUIDS list Failed");
738 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
743 BT_EXPORT_API int bluetooth_dpm_remove_device_from_allowlist(const bluetooth_device_address_t *device_address)
747 BT_CHECK_PARAMETER(device_address, return);
748 BT_CHECK_ENABLED_ANY(return);
751 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
753 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
755 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_REMOVE_DEVICE_ALLOWLIST,
756 in_param1, in_param2, in_param3, in_param4, &out_param);
758 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
763 BT_EXPORT_API int bluetooth_dpm_remove_device_from_blocklist(const bluetooth_device_address_t *device_address)
767 BT_CHECK_PARAMETER(device_address, return);
768 BT_CHECK_ENABLED_ANY(return);
771 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
773 g_array_append_vals(in_param1, device_address, sizeof(bluetooth_device_address_t));
775 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_REMOVE_DEVICE_BLOCKLIST,
776 in_param1, in_param2, in_param3, in_param4, &out_param);
778 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
783 BT_EXPORT_API int bluetooth_dpm_remove_uuid_from_allowlist(const char *service_uuid)
786 char uuid[BLUETOOTH_UUID_STRING_MAX];
788 BT_CHECK_PARAMETER(service_uuid, return);
789 BT_CHECK_ENABLED_ANY(return);
792 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
794 g_strlcpy(uuid, service_uuid, sizeof(uuid));
795 g_array_append_vals(in_param1, uuid, BLUETOOTH_UUID_STRING_MAX);
797 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_REMOVE_UUID_ALLOWLIST,
798 in_param1, in_param2, in_param3, in_param4, &out_param);
800 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
805 BT_EXPORT_API int bluetooth_dpm_remove_uuid_from_blocklist(const char *service_uuid)
809 char uuid[BLUETOOTH_UUID_STRING_MAX];
811 BT_CHECK_PARAMETER(service_uuid, return);
812 BT_CHECK_ENABLED_ANY(return);
815 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
817 g_strlcpy(uuid, service_uuid, sizeof(uuid));
818 g_array_append_vals(in_param1, uuid, BLUETOOTH_UUID_STRING_MAX);
820 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_REMOVE_UUID_BLOCKLIST,
821 in_param1, in_param2, in_param3, in_param4, &out_param);
823 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
829 BT_EXPORT_API int bluetooth_dpm_set_allow_outgoing_call(bt_dpm_status_t value)
833 BT_CHECK_ENABLED_ANY(return);
836 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
838 g_array_append_vals(in_param1, &value, sizeof(int));
840 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_ALLOW_OUTGOING_CALL,
841 in_param1, in_param2, in_param3, in_param4, &out_param);
843 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
848 BT_EXPORT_API int bluetooth_dpm_get_allow_outgoing_call(bt_dpm_status_t *value)
852 BT_CHECK_ENABLED_ANY(return);
855 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
857 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_ALLOW_OUTGOING_CALL,
858 in_param1, in_param2, in_param3, in_param4, &out_param);
860 if (result == BLUETOOTH_ERROR_NONE) {
861 if (out_param->len > 0) {
862 *value = g_array_index(out_param,
865 BT_ERR("out_param length is 0!!");
869 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
874 BT_EXPORT_API int bluetooth_dpm_set_pairing_state(bt_dpm_status_t value)
878 BT_CHECK_ENABLED_ANY(return);
881 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
883 g_array_append_vals(in_param1, &value, sizeof(int));
885 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_PAIRING_STATE,
886 in_param1, in_param2, in_param3, in_param4, &out_param);
888 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
893 BT_EXPORT_API int bluetooth_dpm_get_pairing_state(bt_dpm_status_t *value)
897 BT_CHECK_ENABLED_ANY(return);
900 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
902 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_ALLOW_BT_MODE,
903 in_param1, in_param2, in_param3, in_param4, &out_param);
905 if (result == BLUETOOTH_ERROR_NONE) {
906 if (out_param->len > 0) {
907 *value = g_array_index(out_param,
910 BT_ERR("out_param length is 0!!");
914 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
919 BT_EXPORT_API int bluetooth_dpm_set_profile_state(bt_dpm_profile_t profile, bt_dpm_status_t value)
923 BT_CHECK_ENABLED_ANY(return);
926 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
928 g_array_append_vals(in_param1, &profile, sizeof(int));
929 g_array_append_vals(in_param2, &value, sizeof(int));
931 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_PROFILE_STATE,
932 in_param1, in_param2, in_param3, in_param4, &out_param);
934 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
939 BT_EXPORT_API int bluetooth_dpm_get_profile_state(bt_dpm_profile_t profile, bt_dpm_status_t *value)
943 BT_CHECK_ENABLED_ANY(return);
946 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
948 g_array_append_vals(in_param1, &profile, sizeof(int));
950 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_PROFILE_STATE,
951 in_param1, in_param2, in_param3, in_param4, &out_param);
953 if (result == BLUETOOTH_ERROR_NONE) {
954 if (out_param->len > 0) {
955 *value = g_array_index(out_param,
958 BT_ERR("out_param length is 0!!");
962 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
967 BT_EXPORT_API int bluetooth_dpm_set_desktop_connectivity_state(bt_dpm_status_t value)
971 BT_CHECK_ENABLED_ANY(return);
974 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
976 g_array_append_vals(in_param1, &value, sizeof(int));
978 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_DESKROP_CONNECTIVITY_STATE,
979 in_param1, in_param2, in_param3, in_param4, &out_param);
981 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
986 BT_EXPORT_API int bluetooth_dpm_get_desktop_connectivity_state(bt_dpm_status_t *value)
990 BT_CHECK_ENABLED_ANY(return);
993 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
995 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_DESKROP_CONNECTIVITY_STATE,
996 in_param1, in_param2, in_param3, in_param4, &out_param);
998 if (result == BLUETOOTH_ERROR_NONE) {
999 if (out_param->len > 0) {
1000 *value = g_array_index(out_param,
1003 BT_ERR("out_param length is 0!!");
1007 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1012 BT_EXPORT_API int bluetooth_dpm_set_discoverable_state(bt_dpm_status_t value)
1016 BT_CHECK_ENABLED_ANY(return);
1019 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1021 g_array_append_vals(in_param1, &value, sizeof(int));
1023 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_DISCOVERABLE_STATE,
1024 in_param1, in_param2, in_param3, in_param4, &out_param);
1026 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1031 BT_EXPORT_API int bluetooth_dpm_get_discoverable_state(bt_dpm_status_t *value)
1035 BT_CHECK_ENABLED_ANY(return);
1038 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1040 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_DISCOVERABLE_STATE,
1041 in_param1, in_param2, in_param3, in_param4, &out_param);
1043 if (result == BLUETOOTH_ERROR_NONE) {
1044 if (out_param->len > 0) {
1045 *value = g_array_index(out_param,
1048 BT_ERR("out_param length is 0!!");
1052 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1057 BT_EXPORT_API int bluetooth_dpm_set_limited_discoverable_state(bt_dpm_status_t value)
1061 BT_CHECK_ENABLED_ANY(return);
1064 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1066 g_array_append_vals(in_param1, &value, sizeof(int));
1068 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_LIMITED_DISCOVERABLE_STATE,
1069 in_param1, in_param2, in_param3, in_param4, &out_param);
1071 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1076 BT_EXPORT_API int bluetooth_dpm_get_limited_discoverable_state(bt_dpm_status_t *value)
1080 BT_CHECK_ENABLED_ANY(return);
1083 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1085 g_array_append_vals(in_param1, &value, sizeof(int));
1087 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_LIMITED_DISCOVERABLE_STATE,
1088 in_param1, in_param2, in_param3, in_param4, &out_param);
1090 if (result == BLUETOOTH_ERROR_NONE) {
1091 if (out_param->len > 0) {
1092 *value = g_array_index(out_param,
1095 BT_ERR("out_param length is 0!!");
1099 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1104 BT_EXPORT_API int bluetooth_dpm_set_data_transfer_state(bt_dpm_status_t value)
1108 BT_CHECK_ENABLED_ANY(return);
1111 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1113 g_array_append_vals(in_param1, &value, sizeof(int));
1115 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_SET_DATA_TRANSFER_STATE,
1116 in_param1, in_param2, in_param3, in_param4, &out_param);
1118 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1123 BT_EXPORT_API int bluetooth_dpm_get_data_transfer_state(bt_dpm_status_t *value)
1127 BT_CHECK_ENABLED_ANY(return);
1130 BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1132 result = _bt_send_request(BT_BLUEZ_SERVICE, BT_DPM_GET_DATA_TRANSFER_STATE,
1133 in_param1, in_param2, in_param3, in_param4, &out_param);
1135 if (result == BLUETOOTH_ERROR_NONE) {
1136 if (out_param->len > 0) {
1137 *value = g_array_index(out_param,
1140 BT_ERR("out_param length is 0!!");
1144 BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);