int bt_adapter_le_set_scan_type(bt_adapter_le_scan_type_e scan_type);
/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
+ * @brief Sets the RSSI for the advertisements filter.
+ * @details Advertiser will be reported only if the signal is higher than specified rssi.
+ * @since_tizen 6.0
+ *
+ * @param[in] scan_filter The scan filter handle
+ * @param[in] rssi The RSSI signal which advertisements will be filtered
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #BT_ERROR_NONE Successful
+ * @retval #BT_ERROR_NOT_INITIALIZED Not initialized
+ * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #BT_ERROR_NOT_SUPPORTED Not supported
+ *
+ * @pre The Bluetooth service must be initialized with bt_initialize().
+ *
+ */
+int bt_adapter_le_scan_filter_set_rssi_high_threshold(bt_scan_filter_h scan_filter, int rssi);
+
+/**
* @internal
* @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
* @brief add address to whitelist for accepting scanning request.
char *manufacturer_data;
unsigned int manufacturer_data_len;
char *manufacturer_data_mask;
+ int rssi_high_threshold;
} bt_le_scan_filter_s;
/**
0xFF, src->manufacturer_data_len);
}
}
+
+ if (src->rssi_high_threshold < 0) {
+ dest->added_features |= BLUETOOTH_LE_SCAN_FILTER_FEATURE_RSSI_HIGH_THRESHOLD;
+ dest->rssi_high_threshold = src->rssi_high_threshold;
+ }
}
static bt_le_scan_filter_s *__bt_adapter_le_duplicate_scan_filter(
filter->manufacturer_data = g_memdup(src->manufacturer_data, src->manufacturer_data_len);
filter->manufacturer_data_len = src->manufacturer_data_len;
filter->manufacturer_data_mask = g_memdup(src->manufacturer_data_mask, src->manufacturer_data_len);
+ filter->rssi_high_threshold = src->rssi_high_threshold;
return filter;
}
return BT_ERROR_NONE;
}
+int bt_adapter_le_scan_filter_set_rssi_high_threshold(bt_scan_filter_h scan_filter,
+ int rssi)
+{
+ bt_le_scan_filter_s *__filter = (bt_le_scan_filter_s *)scan_filter;
+
+ BT_CHECK_LE_SUPPORT();
+ BT_CHECK_INIT_STATUS();
+ BT_CHECK_INPUT_PARAMETER(scan_filter);
+
+ if (rssi > 0 || rssi < -127) {
+ BT_ERR("INVALID_PARAMETER(0x%08x)",
+ BT_ERROR_INVALID_PARAMETER); /* LCOV_EXCL_LINE */
+ return BT_ERROR_INVALID_PARAMETER;
+ }
+
+ __filter->rssi_high_threshold = rssi;
+
+ return BT_ERROR_NONE;
+}
+
int bt_adapter_le_scan_filter_register(bt_scan_filter_h scan_filter)
{
bt_le_scan_filter_s *__filter = (bt_le_scan_filter_s *)scan_filter;
, BT_UNIT_TEST_FUNCTION_ADAPTER_LE_REGISTER_SCAN_FILTER_MANUFACTURER_DATA},
{"Register iBeaconscan filter (Manufacturer DATA)"
, BT_UNIT_TEST_FUNCTION_ADAPTER_LE_REGISTER_SCAN_FILTER_IBEACON_DATA},
+ {"Register scan filter (RSSI)"
+ , BT_UNIT_TEST_FUNCTION_ADAPTER_LE_REGISTER_SCAN_FILTER_RSSI_HIGH_THRES},
{"Unregister all scan filters"
, BT_UNIT_TEST_FUNCTION_ADAPTER_LE_UNREGISTER_ALL_SCAN_FILTERS},
{"bt_adater_le_read_maximum_data_length"
break;
case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_REGISTER_SCAN_FILTER_DEVICE_ADDRESS:
case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_REGISTER_SCAN_FILTER_DEVICE_NAME:
+ case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_REGISTER_SCAN_FILTER_RSSI_HIGH_THRES:
param_count = 1;
TC_PRT("Input data for LE scan filter");
break;
break;
}
+ case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_REGISTER_SCAN_FILTER_RSSI_HIGH_THRES: {
+ bt_scan_filter_h scan_filter = NULL;
+ int rssi_high_threshold = -75;
+
+ if (g_test_param.param_count > 0) {
+ rssi_high_threshold = atoi(g_test_param.params[0]);
+ __bt_free_test_param(&g_test_param);
+ }
+
+ ret = bt_adapter_le_scan_filter_create(&scan_filter);
+ if (ret != BT_ERROR_NONE)
+ TC_PRT("failed with [0x%04x]", ret);
+
+ ret = bt_adapter_le_scan_filter_set_rssi_high_threshold(scan_filter, rssi_high_threshold);
+ if (ret != BT_ERROR_NONE)
+ TC_PRT("failed with [0x%04x]", ret);
+
+ ret = bt_adapter_le_scan_filter_register(scan_filter);
+ if (ret != BT_ERROR_NONE)
+ TC_PRT("failed with [0x%04x]", ret);
+
+ ret = bt_adapter_le_scan_filter_destroy(scan_filter);
+ if (ret != BT_ERROR_NONE)
+ TC_PRT("failed with [0x%04x]", ret);
+
+ break;
+ }
+
case BT_UNIT_TEST_FUNCTION_ADAPTER_LE_REGISTER_SCAN_FILTER_SERVICE_SOLICITATION_UUID: {
bt_scan_filter_h scan_filter;
BT_UNIT_TEST_FUNCTION_ADAPTER_LE_REGISTER_SCAN_FILTER_SERVICE_SOLICITATION_UUID,
BT_UNIT_TEST_FUNCTION_ADAPTER_LE_REGISTER_SCAN_FILTER_MANUFACTURER_DATA,
BT_UNIT_TEST_FUNCTION_ADAPTER_LE_REGISTER_SCAN_FILTER_IBEACON_DATA,
+ BT_UNIT_TEST_FUNCTION_ADAPTER_LE_REGISTER_SCAN_FILTER_RSSI_HIGH_THRES,
BT_UNIT_TEST_FUNCTION_ADAPTER_LE_UNREGISTER_ALL_SCAN_FILTERS,
BT_UNIT_TEST_FUNCTION_ADAPTER_LE_SET_DEVICE_DISCOVERY_STATE_CHANGED_CB,
BT_UNIT_TEST_FUNCTION_ADAPTER_LE_UNSET_DEVICE_DISCOVERY_STATE_CHANGED_CB,