summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruno Kremp <bruno.kremp@sony.com>2023-01-24 08:51:46 +0100
committerOscar Shu <xshu@google.com>2023-02-10 00:48:43 +0000
commitdd920f2cf38d4e36f72a9053adda48548e59148f (patch)
tree3161813863974c66cb2dfe0b594507e93cd4e250
parentb77a9fc50f28899924fdfdbd27f23c9b8268b6ed (diff)
downloadwificond-dd920f2cf38d4e36f72a9053adda48548e59148f.tar.gz
Create variables for PNO scan interval in wificond
Set PNO scan iterations and interval multiplier as variables and get them from modules instead of hard coding in wificond. Co-authored-by: Ziwen Xiao <Ziwen.Xiao@sony.com> Test: manual test Bug: 208172490 Change-Id: I27100d529f32a724ae948e9ab1c7e9325a0e0374
-rw-r--r--scanning/pno_settings.cpp7
-rw-r--r--scanning/pno_settings.h8
-rw-r--r--scanning/scanner_impl.cpp8
-rw-r--r--tests/scanner_unittest.cpp28
4 files changed, 30 insertions, 21 deletions
diff --git a/scanning/pno_settings.cpp b/scanning/pno_settings.cpp
index 6307ea7..222c4ea 100644
--- a/scanning/pno_settings.cpp
+++ b/scanning/pno_settings.cpp
@@ -27,14 +27,13 @@ namespace net {
namespace wifi {
namespace nl80211 {
-const uint32_t PnoSettings::kFastScanIterations = 3;
-const uint32_t PnoSettings::kSlowScanIntervalMultiplier = 3;
-
status_t PnoSettings::writeToParcel(::android::Parcel* parcel) const {
RETURN_IF_FAILED(parcel->writeInt64(interval_ms_));
RETURN_IF_FAILED(parcel->writeInt32(min_2g_rssi_));
RETURN_IF_FAILED(parcel->writeInt32(min_5g_rssi_));
RETURN_IF_FAILED(parcel->writeInt32(min_6g_rssi_));
+ RETURN_IF_FAILED(parcel->writeUint32(scan_iterations_));
+ RETURN_IF_FAILED(parcel->writeUint32(scan_interval_multiplier_));
RETURN_IF_FAILED(parcel->writeInt32(pno_networks_.size()));
for (const auto& network : pno_networks_) {
// For Java readTypedList():
@@ -50,6 +49,8 @@ status_t PnoSettings::readFromParcel(const ::android::Parcel* parcel) {
RETURN_IF_FAILED(parcel->readInt32(&min_2g_rssi_));
RETURN_IF_FAILED(parcel->readInt32(&min_5g_rssi_));
RETURN_IF_FAILED(parcel->readInt32(&min_6g_rssi_));
+ RETURN_IF_FAILED(parcel->readUint32(&scan_iterations_));
+ RETURN_IF_FAILED(parcel->readUint32(&scan_interval_multiplier_));
int32_t num_pno_networks = 0;
RETURN_IF_FAILED(parcel->readInt32(&num_pno_networks));
for (int i = 0; i < num_pno_networks; i++) {
diff --git a/scanning/pno_settings.h b/scanning/pno_settings.h
index f0e0826..7ee7402 100644
--- a/scanning/pno_settings.h
+++ b/scanning/pno_settings.h
@@ -31,14 +31,14 @@ namespace nl80211 {
class PnoSettings : public ::android::Parcelable {
public:
- static const uint32_t kFastScanIterations;
- static const uint32_t kSlowScanIntervalMultiplier;
PnoSettings()
: interval_ms_(0),
min_2g_rssi_(0),
min_5g_rssi_(0),
- min_6g_rssi_(0) {}
+ min_6g_rssi_(0),
+ scan_iterations_(0),
+ scan_interval_multiplier_(0) {}
bool operator==(const PnoSettings& rhs) const {
return (pno_networks_ == rhs.pno_networks_ &&
min_2g_rssi_ == rhs.min_2g_rssi_ &&
@@ -52,6 +52,8 @@ class PnoSettings : public ::android::Parcelable {
int32_t min_2g_rssi_;
int32_t min_5g_rssi_;
int32_t min_6g_rssi_;
+ uint32_t scan_iterations_;
+ uint32_t scan_interval_multiplier_;
std::vector<PnoNetwork> pno_networks_;
};
diff --git a/scanning/scanner_impl.cpp b/scanning/scanner_impl.cpp
index c9e2eee..e89fff4 100644
--- a/scanning/scanner_impl.cpp
+++ b/scanning/scanner_impl.cpp
@@ -499,18 +499,18 @@ SchedScanIntervalSetting ScannerImpl::GenerateIntervalSetting(
bool support_num_scan_plans = scan_capabilities_.max_num_scan_plans >= 2;
bool support_scan_plan_interval =
scan_capabilities_.max_scan_plan_interval * 1000 >=
- pno_settings.interval_ms_ * PnoSettings::kSlowScanIntervalMultiplier;
+ pno_settings.interval_ms_ * pno_settings.scan_interval_multiplier_;
bool support_scan_plan_iterations =
scan_capabilities_.max_scan_plan_iterations >=
- PnoSettings::kFastScanIterations;
+ pno_settings.scan_iterations_;
uint32_t fast_scan_interval =
static_cast<uint32_t>(pno_settings.interval_ms_);
if (support_num_scan_plans && support_scan_plan_interval &&
support_scan_plan_iterations) {
return SchedScanIntervalSetting{
- {{fast_scan_interval, PnoSettings::kFastScanIterations}},
- fast_scan_interval * PnoSettings::kSlowScanIntervalMultiplier};
+ {{fast_scan_interval, pno_settings.scan_iterations_}},
+ fast_scan_interval * pno_settings.scan_interval_multiplier_};
} else {
// Device doesn't support the provided scan plans.
// Specify single interval instead.
diff --git a/tests/scanner_unittest.cpp b/tests/scanner_unittest.cpp
index 8a5209b..9ceff9f 100644
--- a/tests/scanner_unittest.cpp
+++ b/tests/scanner_unittest.cpp
@@ -51,6 +51,8 @@ namespace {
constexpr uint32_t kFakeInterfaceIndex = 12;
constexpr uint32_t kFakeScanIntervalMs = 10000;
+constexpr uint32_t kFastScanIterations = 3;
+constexpr uint32_t kSlowScanIntervalMultiplier = 3;
vector<uint32_t> kDefaultFrequencies = {2412, 2417, 2422, 2427, 2432, 2437, 2447, 2452, 2457,
2462, 5180, 5200, 5220, 5240, 5745, 5765, 5785, 5805};
@@ -346,8 +348,8 @@ TEST_F(ScannerTest, TestGenerateScanPlansIfDeviceSupports) {
0 /* max_match_sets */,
// Parameters above are not related to this test.
2 /* 1 plan for finite repeated scan and 1 plan for ininfite scan loop */,
- kFakeScanIntervalMs * PnoSettings::kSlowScanIntervalMultiplier / 1000,
- PnoSettings::kFastScanIterations);
+ kFakeScanIntervalMs * kSlowScanIntervalMultiplier / 1000,
+ kFastScanIterations);
ScannerImpl scanner(
kFakeInterfaceIndex,
scan_capabilities_scan_plan_supported, wiphy_features_,
@@ -356,6 +358,8 @@ TEST_F(ScannerTest, TestGenerateScanPlansIfDeviceSupports) {
PnoSettings pno_settings;
pno_settings.interval_ms_ = kFakeScanIntervalMs;
+ pno_settings.scan_iterations_ = kFastScanIterations;
+ pno_settings.scan_interval_multiplier_ = kSlowScanIntervalMultiplier;
SchedScanIntervalSetting interval_setting;
EXPECT_CALL(
@@ -369,7 +373,7 @@ TEST_F(ScannerTest, TestGenerateScanPlansIfDeviceSupports) {
EXPECT_TRUE(scanner.startPnoScan(pno_settings, &success_ignored).isOk());
/* 1 plan for finite repeated scan */
EXPECT_EQ(1U, interval_setting.plans.size());
- EXPECT_EQ(kFakeScanIntervalMs * PnoSettings::kSlowScanIntervalMultiplier,
+ EXPECT_EQ(kFakeScanIntervalMs * kSlowScanIntervalMultiplier,
interval_setting.final_interval_ms);
}
@@ -389,6 +393,8 @@ TEST_F(ScannerTest, TestGenerateSingleIntervalIfDeviceDoesNotSupportScanPlan) {
&scan_utils_);
PnoSettings pno_settings;
pno_settings.interval_ms_ = kFakeScanIntervalMs;
+ pno_settings.scan_iterations_ = kFastScanIterations;
+ pno_settings.scan_interval_multiplier_ = kSlowScanIntervalMultiplier;
SchedScanIntervalSetting interval_setting;
EXPECT_CALL(
@@ -427,8 +433,8 @@ TEST_F(ScannerTest, TestStartPnoScanWithNonEmptyFrequencyList) {
1 /* max_num_sched_scan_ssids */,
1 /* max_match_sets */,
0,
- kFakeScanIntervalMs * PnoSettings::kSlowScanIntervalMultiplier / 1000,
- PnoSettings::kFastScanIterations);
+ kFakeScanIntervalMs * kSlowScanIntervalMultiplier / 1000,
+ kFastScanIterations);
ScannerImpl scanner_impl(kFakeInterfaceIndex, scan_capabilities_test_frequencies,
wiphy_features_, &client_interface_impl_,
&scan_utils_);
@@ -458,8 +464,8 @@ TEST_F(ScannerTest, TestStartPnoScanWithFrequencyListNoDuplicates) {
1 /* max_num_sched_scan_ssids */,
2 /* max_match_sets */,
0,
- kFakeScanIntervalMs * PnoSettings::kSlowScanIntervalMultiplier / 1000,
- PnoSettings::kFastScanIterations);
+ kFakeScanIntervalMs * kSlowScanIntervalMultiplier / 1000,
+ kFastScanIterations);
ScannerImpl scanner_impl(kFakeInterfaceIndex, scan_capabilities_test_frequencies,
wiphy_features_, &client_interface_impl_,
&scan_utils_);
@@ -497,8 +503,8 @@ TEST_F(ScannerTest, TestStartPnoScanWithFrequencyListFallbackMechanism) {
1 /* max_num_sched_scan_ssids */,
2 /* max_match_sets */,
0,
- kFakeScanIntervalMs * PnoSettings::kSlowScanIntervalMultiplier / 1000,
- PnoSettings::kFastScanIterations);
+ kFakeScanIntervalMs * kSlowScanIntervalMultiplier / 1000,
+ kFastScanIterations);
ScannerImpl scanner_impl(kFakeInterfaceIndex, scan_capabilities_test_frequencies,
wiphy_features_, &client_interface_impl_,
&scan_utils_);
@@ -540,8 +546,8 @@ TEST_F(ScannerTest, TestStartPnoScanEmptyList) {
1 /* max_num_sched_scan_ssids */,
2 /* max_match_sets */,
0,
- kFakeScanIntervalMs * PnoSettings::kSlowScanIntervalMultiplier / 1000,
- PnoSettings::kFastScanIterations);
+ kFakeScanIntervalMs * kSlowScanIntervalMultiplier / 1000,
+ kFastScanIterations);
ScannerImpl scanner_impl(kFakeInterfaceIndex, scan_capabilities_test_frequencies,
wiphy_features_, &client_interface_impl_,
&scan_utils_);