return FALSE;
}
-static gboolean __bt_check_scan_result_with_filter(const char *device_address,
+static gboolean __bt_check_scan_result_with_filter(const char *device_address, int rssi,
const char *adv_data, int adv_data_len,
const char *scan_data, int scan_data_len,
const bt_adapter_le_scanner_t *scanner)
continue;
}
+ /* Check RSSI filter */
+ if (filter_data->added_features &
+ BLUETOOTH_LE_SCAN_FILTER_FEATURE_RSSI_HIGH_THRESHOLD) {
+ if (rssi < filter_data->rssi_high_threshold)
+ continue;
+ }
+
BT_INFO("The scan result is conformable.");
return TRUE;
}
if (scanner->is_scanning == FALSE)
continue;
- if (__bt_check_scan_result_with_filter(address, (const char *)adv_ind_data,
+ if (__bt_check_scan_result_with_filter(address, scan_result->rssi, (const char *)adv_ind_data,
adv_ind_len, (const char *)scan_resp_data, scan_resp_len, scanner) == FALSE)
continue;
.service_data_mask = filter->service_data_mask.data.data, .service_data_mask_len = filter->service_data_mask.data_len,
.manufacturer_id = filter->manufacturer_id, .manufacturer_data = filter->manufacturer_data.data.data,
.manufacturer_data_len = filter->manufacturer_data.data_len, .manufacturer_data_mask = filter->manufacturer_data_mask.data.data,
- .manufacturer_data_mask_len = filter->manufacturer_data_mask.data_len , .added_features = filter->added_features
+ .manufacturer_data_mask_len = filter->manufacturer_data_mask.data_len , .added_features = filter->added_features,
+ .rssi_high_threshold = filter->rssi_high_threshold
};
ret = gattc_register_scan_filter(&filter_data);