diff options
author | Bruno Kremp <bruno.kremp@sony.com> | 2023-01-24 08:51:46 +0100 |
---|---|---|
committer | Oscar Shu <xshu@google.com> | 2023-02-10 00:48:43 +0000 |
commit | dd920f2cf38d4e36f72a9053adda48548e59148f (patch) | |
tree | 3161813863974c66cb2dfe0b594507e93cd4e250 | |
parent | b77a9fc50f28899924fdfdbd27f23c9b8268b6ed (diff) | |
download | wificond-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.cpp | 7 | ||||
-rw-r--r-- | scanning/pno_settings.h | 8 | ||||
-rw-r--r-- | scanning/scanner_impl.cpp | 8 | ||||
-rw-r--r-- | tests/scanner_unittest.cpp | 28 |
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_); |