X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=bt-api%2Fbt-adapter-le.c;h=45fab9cbb3d6cc1a21ad9c2e8a80bd0dc566797d;hb=1fa07edcd0e77a445700975773db3300f556caf5;hp=0995f35363d195bcdcc4644e3ce6e61794d54f70;hpb=3e62974336300674483a5a4ec350344b72ca8f4e;p=platform%2Fcore%2Fconnectivity%2Fbluetooth-frwk.git diff --git a/bt-api/bt-adapter-le.c b/bt-api/bt-adapter-le.c old mode 100755 new mode 100644 index 0995f35..45fab9c --- a/bt-api/bt-adapter-le.c +++ b/bt-api/bt-adapter-le.c @@ -26,17 +26,17 @@ #include "bt-event-handler.h" static gboolean is_le_scanning = FALSE; +static int is_scan_filter_supported = -1; BT_EXPORT_API int bluetooth_check_adapter_le(void) { int ret; int value; - ret = _bt_get_adapter_path(_bt_gdbus_get_system_gconn(), NULL); + ret = _bt_get_adapter_path(_bt_get_system_private_conn(), NULL); - if (ret != BLUETOOTH_ERROR_NONE) { + if (ret != BLUETOOTH_ERROR_NONE) return BLUETOOTH_ADAPTER_LE_DISABLED; - } ret = vconf_get_int(VCONFKEY_BT_LE_STATUS, &value); if (ret != 0) { @@ -53,9 +53,6 @@ BT_EXPORT_API int bluetooth_enable_adapter_le(void) { int result; - retv_if(bluetooth_check_adapter_le() == BLUETOOTH_ADAPTER_LE_ENABLED, - BLUETOOTH_ERROR_DEVICE_ALREADY_ENABLED); - BT_INIT_PARAMS(); BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param); @@ -85,7 +82,7 @@ BT_EXPORT_API int bluetooth_disable_adapter_le(void) void _bt_set_le_scan_status(gboolean mode) { - BT_DBG("set LE scan mode : %d", mode); + BT_DBG("set LE scan mode : %d -> %d", is_le_scanning, mode); is_le_scanning = mode; } @@ -103,6 +100,8 @@ BT_EXPORT_API int bluetooth_start_le_discovery(void) BT_INIT_PARAMS(); BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param); + BT_INFO_C("### Start LE scan"); + _bt_print_api_caller_name(); result = _bt_send_request(BT_BLUEZ_SERVICE, BT_START_LE_DISCOVERY, in_param1, in_param2, in_param3, in_param4, &out_param); @@ -123,13 +122,14 @@ BT_EXPORT_API int bluetooth_stop_le_discovery(void) BT_INIT_PARAMS(); BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param); + BT_INFO_C("### Stop LE scan"); + _bt_print_api_caller_name(); result = _bt_send_request(BT_BLUEZ_SERVICE, BT_STOP_LE_DISCOVERY, in_param1, in_param2, in_param3, in_param4, &out_param); BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param); - if (result == BLUETOOTH_ERROR_NONE) - _bt_set_le_scan_status(FALSE); + _bt_set_le_scan_status(FALSE); return result; } @@ -159,6 +159,31 @@ BT_EXPORT_API int bluetooth_is_le_discovering(void) return is_discovering; } +BT_EXPORT_API gboolean bluetooth_is_scan_filter_supported(void) +{ + int result; + + if (is_scan_filter_supported == -1) { + BT_INIT_PARAMS(); + BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param); + + result = _bt_send_request(BT_BLUEZ_SERVICE, BT_IS_SCAN_FILTER_SUPPORTED, + in_param1, in_param2, in_param3, in_param4, &out_param); + + if (result == BLUETOOTH_ERROR_NONE) + is_scan_filter_supported = g_array_index(out_param, int, 0); + else + BT_ERR("Fail to send request"); + + BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param); + } + + if (is_scan_filter_supported == 1) + return TRUE; + + return FALSE; +} + BT_EXPORT_API int bluetooth_register_scan_filter(bluetooth_le_scan_filter_t *filter, int *slot_id) { int result; @@ -173,11 +198,10 @@ BT_EXPORT_API int bluetooth_register_scan_filter(bluetooth_le_scan_filter_t *fil result = _bt_send_request(BT_BLUEZ_SERVICE, BT_REGISTER_SCAN_FILTER, in_param1, in_param2, in_param3, in_param4, &out_param); - if (result == BLUETOOTH_ERROR_NONE) { + if (result == BLUETOOTH_ERROR_NONE) *slot_id = g_array_index(out_param, int, 0); - } else { + else BT_ERR("Fail to send request"); - } BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param); @@ -220,7 +244,6 @@ BT_EXPORT_API int bluetooth_unregister_all_scan_filters(void) return result; } -#ifdef TIZEN_WEARABLE gboolean __bluetooth_is_privileged_process(void) { FILE *fp = NULL; @@ -242,18 +265,18 @@ gboolean __bluetooth_is_privileged_process(void) fclose(fp); return FALSE; } -#endif BT_EXPORT_API int bluetooth_set_advertising(int handle, gboolean enable) { int result; - gboolean use_reserved_slot = FALSE; + gboolean use_reserved_slot = TRUE; BT_CHECK_ENABLED_ANY(return); -#ifdef TIZEN_WEARABLE - use_reserved_slot = __bluetooth_is_privileged_process(); -#endif + if (TIZEN_PROFILE_WEARABLE) + use_reserved_slot = __bluetooth_is_privileged_process(); + + _bt_print_api_caller_name(); BT_INIT_PARAMS(); BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param); @@ -274,13 +297,14 @@ BT_EXPORT_API int bluetooth_set_custom_advertising(int handle, gboolean enable, bluetooth_advertising_params_t *params) { int result; - gboolean use_reserved_slot = FALSE; + gboolean use_reserved_slot = TRUE; BT_CHECK_ENABLED_ANY(return); -#ifdef TIZEN_WEARABLE + if (TIZEN_PROFILE_WEARABLE) use_reserved_slot = __bluetooth_is_privileged_process(); -#endif + + _bt_print_api_caller_name(); BT_INIT_PARAMS(); BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param); @@ -329,7 +353,7 @@ BT_EXPORT_API int bluetooth_get_advertising_data(bluetooth_advertising_data_t *a BT_EXPORT_API int bluetooth_set_advertising_data(int handle, const bluetooth_advertising_data_t *value, int length) { int result; - gboolean use_reserved_slot = FALSE; + gboolean use_reserved_slot = TRUE; BT_CHECK_PARAMETER(value, return); BT_CHECK_ENABLED_ANY(return); @@ -337,9 +361,8 @@ BT_EXPORT_API int bluetooth_set_advertising_data(int handle, const bluetooth_adv if (length > BLUETOOTH_ADVERTISING_DATA_LENGTH_MAX - 3) return BLUETOOTH_ERROR_INVALID_PARAM; -#ifdef TIZEN_WEARABLE - use_reserved_slot = __bluetooth_is_privileged_process(); -#endif + if (TIZEN_PROFILE_WEARABLE) + use_reserved_slot = __bluetooth_is_privileged_process(); BT_INIT_PARAMS(); BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param); @@ -389,7 +412,7 @@ BT_EXPORT_API int bluetooth_set_scan_response_data(int handle, const bluetooth_scan_resp_data_t *value, int length) { int result; - gboolean use_reserved_slot = FALSE; + gboolean use_reserved_slot = TRUE; BT_CHECK_PARAMETER(value, return); BT_CHECK_ENABLED_ANY(return); @@ -397,9 +420,8 @@ BT_EXPORT_API int bluetooth_set_scan_response_data(int handle, if (length > BLUETOOTH_SCAN_RESP_DATA_LENGTH_MAX) return BLUETOOTH_ERROR_INVALID_PARAM; -#ifdef TIZEN_WEARABLE - use_reserved_slot = __bluetooth_is_privileged_process(); -#endif + if (TIZEN_PROFILE_WEARABLE) + use_reserved_slot = __bluetooth_is_privileged_process(); BT_INIT_PARAMS(); BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param); @@ -448,11 +470,10 @@ BT_EXPORT_API int bluetooth_is_advertising(gboolean *is_advertising) result = _bt_send_request(BT_BLUEZ_SERVICE, BT_IS_ADVERTISING, in_param1, in_param2, in_param3, in_param4, &out_param); - if (result == BLUETOOTH_ERROR_NONE) { + if (result == BLUETOOTH_ERROR_NONE) *is_advertising = g_array_index(out_param, int, 0); - } else { + else BT_ERR("Fail to send request"); - } BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param); @@ -537,6 +558,25 @@ BT_EXPORT_API int bluetooth_enable_le_privacy(gboolean enable_privacy) return result; } +BT_EXPORT_API int bluetooth_set_le_static_random_address(gboolean enable) +{ + int result; + + BT_CHECK_ENABLED_ANY(return); + + BT_INIT_PARAMS(); + BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param); + + g_array_append_vals(in_param1, &enable, sizeof(gboolean)); + + result = _bt_send_request(BT_BLUEZ_SERVICE, BT_SET_LE_STATIC_RANDOM_ADDRESS, + in_param1, in_param2, in_param3, in_param4, &out_param); + + BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param); + + return result; +} + BT_EXPORT_API int bluetooth_check_privilege_advertising_parameter(void) { if (_bt_check_privilege(BT_CHECK_PRIVILEGE, BT_SET_ADVERTISING_PARAMETERS) @@ -614,9 +654,8 @@ BT_EXPORT_API int bluetooth_le_write_host_suggested_default_data_length( BT_LE_WRITE_HOST_SUGGESTED_DATA_LENGTH, in_param1, in_param2, in_param3, in_param4, &out_param); - if (result != BLUETOOTH_ERROR_NONE) { + if (result != BLUETOOTH_ERROR_NONE) BT_ERR("Failed to Write the host suggested default data length values : %d", result); - } BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param); @@ -668,11 +707,60 @@ BT_EXPORT_API int bluetooth_le_set_data_length(bluetooth_device_address_t *addre BT_LE_SET_DATA_LENGTH, in_param1, in_param2, in_param3, in_param4, &out_param); - if (result != BLUETOOTH_ERROR_NONE) { + if (result != BLUETOOTH_ERROR_NONE) BT_ERR("Failed to Set data length values : %d", result); + + BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param); + + return result; +} + +BT_EXPORT_API int bluetooth_is_le_2m_phy_supported(gboolean *is_supported) +{ + int result; + + BT_CHECK_PARAMETER(is_supported, return); + BT_CHECK_ENABLED_ANY(return); + + BT_INIT_PARAMS(); + BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param); + + result = _bt_send_request(BT_BLUEZ_SERVICE, BT_IS_LE_2M_PHY_SUPPORTED, + in_param1, in_param2, in_param3, in_param4, &out_param); + + if (result == BLUETOOTH_ERROR_NONE) { + *is_supported = g_array_index(out_param, int, 0); + } else { + BT_ERR("Fail to send request"); + } + + BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param); + + BT_INFO("LE 2M PHY Support[%s]", *is_supported ? "TRUE" : "FALSE"); + return result; +} + +BT_EXPORT_API int bluetooth_is_le_coded_phy_supported(gboolean *is_supported) +{ + int result; + + BT_CHECK_PARAMETER(is_supported, return); + BT_CHECK_ENABLED_ANY(return); + + BT_INIT_PARAMS(); + BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param); + + result = _bt_send_request(BT_BLUEZ_SERVICE, BT_IS_LE_CODED_PHY_SUPPORTED, + in_param1, in_param2, in_param3, in_param4, &out_param); + + if (result == BLUETOOTH_ERROR_NONE) { + *is_supported = g_array_index(out_param, int, 0); + } else { + BT_ERR("Fail to send request"); } BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param); + BT_INFO("LE CODED PHY Support[%s]", *is_supported ? "TRUE" : "FALSE"); return result; }