diff options
author | Xin Li <delphij@google.com> | 2023-10-05 15:45:00 -0700 |
---|---|---|
committer | Xin Li <delphij@google.com> | 2023-10-05 15:45:00 -0700 |
commit | 299f2ecf1d1db75cef2ae3607f0cae7bd1202fdf (patch) | |
tree | 5ef02b67062a9ace9741c398f5c43dbb4916c921 | |
parent | e0a843d5f4666f3c4f76d7d24541f157a8fad8c7 (diff) | |
parent | f98bb5a8e2a3001a57add8d25933bd56cb8f3e72 (diff) | |
download | wificond-299f2ecf1d1db75cef2ae3607f0cae7bd1202fdf.tar.gz |
Merge Android 14
Bug: 298295554
Merged-In: I22b1d636f2c5209c9bc996d758331a43c3b8133a
Change-Id: I86a3f0863bf8f3b03aad843a2d46e7827ecd4ddd
-rw-r--r-- | OWNERS | 1 | ||||
-rw-r--r-- | aidl/android/net/wifi/nl80211/IScanEvent.aidl | 3 | ||||
-rw-r--r-- | aidl/android/net/wifi/nl80211/IWifiScannerImpl.aidl | 21 | ||||
-rw-r--r-- | scanning/pno_settings.cpp | 7 | ||||
-rw-r--r-- | scanning/pno_settings.h | 8 | ||||
-rw-r--r-- | scanning/scan_utils.cpp | 7 | ||||
-rw-r--r-- | scanning/scan_utils.h | 2 | ||||
-rw-r--r-- | scanning/scanner_impl.cpp | 50 | ||||
-rw-r--r-- | scanning/scanner_impl.h | 4 | ||||
-rw-r--r-- | scanning/single_scan_settings.cpp | 2 | ||||
-rw-r--r-- | scanning/single_scan_settings.h | 4 | ||||
-rw-r--r-- | tests/mock_scan_utils.h | 3 | ||||
-rw-r--r-- | tests/scan_utils_unittest.cpp | 14 | ||||
-rw-r--r-- | tests/scanner_unittest.cpp | 53 | ||||
-rw-r--r-- | wifi_keystore_hal_connector.cpp | 4 |
15 files changed, 132 insertions, 51 deletions
@@ -1,2 +1,3 @@ etancohen@google.com arabawy@google.com +kumachang@google.com diff --git a/aidl/android/net/wifi/nl80211/IScanEvent.aidl b/aidl/android/net/wifi/nl80211/IScanEvent.aidl index 3ee8195..0434f24 100644 --- a/aidl/android/net/wifi/nl80211/IScanEvent.aidl +++ b/aidl/android/net/wifi/nl80211/IScanEvent.aidl @@ -22,5 +22,8 @@ package android.net.wifi.nl80211; */ interface IScanEvent { oneway void OnScanResultReady(); + // This callback is deprecated in Android 14. + // Newer wificond implementation should call OnScanRequestFailed(). oneway void OnScanFailed(); + oneway void OnScanRequestFailed(int errorCode); } diff --git a/aidl/android/net/wifi/nl80211/IWifiScannerImpl.aidl b/aidl/android/net/wifi/nl80211/IWifiScannerImpl.aidl index 02c714c..e619739 100644 --- a/aidl/android/net/wifi/nl80211/IWifiScannerImpl.aidl +++ b/aidl/android/net/wifi/nl80211/IWifiScannerImpl.aidl @@ -30,6 +30,20 @@ interface IWifiScannerImpl { const int SCAN_TYPE_LOW_SPAN = 0; const int SCAN_TYPE_LOW_POWER = 1; const int SCAN_TYPE_HIGH_ACCURACY = 2; + + // Scan request status + // Request succeeded + const int SCAN_STATUS_SUCCESS = 0; + // All other standard error codes are mapped to this + const int SCAN_STATUS_FAILED_GENERIC = 1; + //Device or resource busy - Due to connection in progress, processing another scan request etc. + const int SCAN_STATUS_FAILED_BUSY = 2; + // Aborted - Due to another high priority operation like roaming, offload scan etc + const int SCAN_STATUS_FAILED_ABORT = 3; + // No such device - Due to wrong interface or interface doesn't exist + const int SCAN_STATUS_FAILED_NODEV = 4; + // Invalid argument - Due to wrong/unsupported argument passed in scan params + const int SCAN_STATUS_FAILED_INVALID_ARGS = 5; // Scan type used internally if the device does not support // the type specified in |SingleScanSettings.scan_type|. // Scan requests from framework with this type will be rejected. @@ -46,8 +60,13 @@ interface IWifiScannerImpl { int getMaxSsidsPerScan(); // Request a single scan using a SingleScanSettings parcelable object. + // This interface is deprecated from Android 14, newer wificond implementation should call + // scanRequest() which can return the scan request status. boolean scan(in SingleScanSettings scanSettings); + // Request a single scan using a SingleScanSettings parcelable object. + int scanRequest(in SingleScanSettings scanSettings); + // Subscribe single scanning events. // Scanner assumes there is only one subscriber. // This call will replace any existing |handler|. @@ -75,5 +94,5 @@ interface IWifiScannerImpl { // Abort ongoing scan. void abortScan(); - // TODO(nywang) add more interfaces. + // add more interfaces. } 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/scan_utils.cpp b/scanning/scan_utils.cpp index 6c2cb22..8c79b20 100644 --- a/scanning/scan_utils.cpp +++ b/scanning/scan_utils.cpp @@ -281,6 +281,7 @@ bool ScanUtils::Scan(uint32_t interface_index, bool enable_6ghz_rnr, const vector<vector<uint8_t>>& ssids, const vector<uint32_t>& freqs, + const vector<uint8_t>& vendor_ies, int* error_code) { NL80211Packet trigger_scan( netlink_manager_->GetFamilyId(), @@ -341,6 +342,12 @@ bool ScanUtils::Scan(uint32_t interface_index, scan_flags)); LOG(DEBUG) << "Triggering scan with scan_flag=" << scan_flags; } + + if (!vendor_ies.empty()) { + NL80211Attr<vector<uint8_t>> vendor_ie_attr(NL80211_ATTR_IE, vendor_ies); + trigger_scan.AddAttribute(vendor_ie_attr); + } + // We are receiving an ERROR/ACK message instead of the actual // scan results here, so it is OK to expect a timely response because // kernel is supposed to send the ERROR/ACK back before the scan starts. diff --git a/scanning/scan_utils.h b/scanning/scan_utils.h index 3ac7f4a..2d4cfe3 100644 --- a/scanning/scan_utils.h +++ b/scanning/scan_utils.h @@ -94,6 +94,7 @@ class ScanUtils { // If |ssids| contains an empty string, it will a scan for all ssids. // - |freqs| is a vector of frequencies we request to scan. // If |freqs| is an empty vector, it will scan all supported frequencies. + // - |vendor_ies| is a vector of vendor ies we add it in probe req. // - |error_code| contains the errno kernel replied when this returns false. // Returns true on success. virtual bool Scan(uint32_t interface_index, @@ -102,6 +103,7 @@ class ScanUtils { bool enable_6ghz_rnr, const std::vector<std::vector<uint8_t>>& ssids, const std::vector<uint32_t>& freqs, + const std::vector<uint8_t>& vendor_ies, int* error_code); // Send scan request to kernel for interface with index |interface_index|. diff --git a/scanning/scanner_impl.cpp b/scanning/scanner_impl.cpp index c7857df..e89fff4 100644 --- a/scanning/scanner_impl.cpp +++ b/scanning/scanner_impl.cpp @@ -57,6 +57,20 @@ bool IsScanTypeSupported(int scan_type, const WiphyFeatures& wiphy_features) { return {}; } +int convertStdErrNumToScanStatus(int errNum) { + switch(errNum) { + case EINVAL: + return IWifiScannerImpl::SCAN_STATUS_FAILED_INVALID_ARGS; + case EBUSY: + return IWifiScannerImpl::SCAN_STATUS_FAILED_BUSY; + case ENODEV: + return IWifiScannerImpl::SCAN_STATUS_FAILED_NODEV; + default: + return IWifiScannerImpl::SCAN_STATUS_FAILED_GENERIC; + } + return {}; +} + constexpr const int kPercentNetworksWithFreq = 30; constexpr const int32_t kPnoScanDefaultFreqs2G[] = {2412, 2417, 2422, 2427, 2432, 2437, 2447, 2452, 2457, 2462}; @@ -143,10 +157,10 @@ Status ScannerImpl::getMaxSsidsPerScan(int32_t* out_max_ssids_per_scan) { return Status::ok(); } -Status ScannerImpl::scan(const SingleScanSettings& scan_settings, - bool* out_success) { +Status ScannerImpl::scanRequest(const SingleScanSettings& scan_settings, + int* status) { if (!CheckIsValid()) { - *out_success = false; + *status = IWifiScannerImpl::SCAN_STATUS_FAILED_GENERIC; return Status::ok(); } @@ -190,19 +204,33 @@ Status ScannerImpl::scan(const SingleScanSettings& scan_settings, int error_code = 0; if (!scan_utils_->Scan(interface_index_, request_random_mac, scan_type, - scan_settings.enable_6ghz_rnr_, ssids, freqs, &error_code)) { + scan_settings.enable_6ghz_rnr_, ssids, freqs, + scan_settings.vendor_ies_, &error_code)) { if (error_code == ENODEV) { nodev_counter_ ++; LOG(WARNING) << "Scan failed with error=nodev. counter=" << nodev_counter_; } CHECK(error_code != ENODEV || nodev_counter_ <= 3) << "Driver is in a bad state, restarting wificond"; - *out_success = false; + *status = convertStdErrNumToScanStatus(error_code); return Status::ok(); } nodev_counter_ = 0; scan_started_ = true; - *out_success = true; + *status = IWifiScannerImpl::SCAN_STATUS_SUCCESS; + return Status::ok(); + +} +Status ScannerImpl::scan(const SingleScanSettings& scan_settings, + bool* out_success) { + + int status = 0; + scanRequest(scan_settings, &status); + if (status == IWifiScannerImpl::SCAN_STATUS_SUCCESS) { + *out_success = true; + } else { + *out_success = false; + } return Status::ok(); } @@ -437,7 +465,7 @@ void ScannerImpl::OnScanResultsReady(uint32_t interface_index, bool aborted, // TODO: Pass other parameters back once we find framework needs them. if (aborted) { LOG(WARNING) << "Scan aborted"; - scan_event_handler_->OnScanFailed(); + scan_event_handler_->OnScanRequestFailed(IWifiScannerImpl::SCAN_STATUS_FAILED_ABORT); } else { scan_event_handler_->OnScanResultReady(); } @@ -471,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/scanning/scanner_impl.h b/scanning/scanner_impl.h index 449f454..2e34c01 100644 --- a/scanning/scanner_impl.h +++ b/scanning/scanner_impl.h @@ -55,6 +55,10 @@ class ScannerImpl : public android::net::wifi::nl80211::BnWifiScannerImpl { const android::net::wifi::nl80211::SingleScanSettings& scan_settings, bool* out_success) override; + ::android::binder::Status scanRequest( + const android::net::wifi::nl80211::SingleScanSettings& + scan_settings, + int* status) override; ::android::binder::Status startPnoScan( const android::net::wifi::nl80211::PnoSettings& pno_settings, bool* out_success) override; diff --git a/scanning/single_scan_settings.cpp b/scanning/single_scan_settings.cpp index 47809fb..28dad53 100644 --- a/scanning/single_scan_settings.cpp +++ b/scanning/single_scan_settings.cpp @@ -55,6 +55,7 @@ status_t SingleScanSettings::writeToParcel(::android::Parcel* parcel) const { RETURN_IF_FAILED(parcel->writeInt32(1)); RETURN_IF_FAILED(network.writeToParcel(parcel)); } + RETURN_IF_FAILED(parcel->writeByteVector(vendor_ies_)); return ::android::OK; } @@ -107,6 +108,7 @@ status_t SingleScanSettings::readFromParcel(const ::android::Parcel* parcel) { RETURN_IF_FAILED(network.readFromParcel(parcel)); hidden_networks_.push_back(network); } + RETURN_IF_FAILED(parcel->readByteVector(&vendor_ies_)); return ::android::OK; } diff --git a/scanning/single_scan_settings.h b/scanning/single_scan_settings.h index a7d99dd..27bf774 100644 --- a/scanning/single_scan_settings.h +++ b/scanning/single_scan_settings.h @@ -36,7 +36,8 @@ class SingleScanSettings : public ::android::Parcelable { bool operator==(const SingleScanSettings& rhs) const { return (scan_type_ == rhs.scan_type_ && channel_settings_ == rhs.channel_settings_ && - hidden_networks_ == rhs.hidden_networks_); + hidden_networks_ == rhs.hidden_networks_ && + vendor_ies_ == rhs.vendor_ies_); } ::android::status_t writeToParcel(::android::Parcel* parcel) const override; ::android::status_t readFromParcel(const ::android::Parcel* parcel) override; @@ -45,6 +46,7 @@ class SingleScanSettings : public ::android::Parcelable { bool enable_6ghz_rnr_; std::vector<ChannelSettings> channel_settings_; std::vector<HiddenNetwork> hidden_networks_; + std::vector<uint8_t> vendor_ies_; private: bool isValidScanType() const; diff --git a/tests/mock_scan_utils.h b/tests/mock_scan_utils.h index 3f43bb2..1c6ccc3 100644 --- a/tests/mock_scan_utils.h +++ b/tests/mock_scan_utils.h @@ -41,13 +41,14 @@ class MockScanUtils : public ScanUtils { uint32_t interface_index, std::vector<android::net::wifi::nl80211::NativeScanResult>* out_scan_results)); - MOCK_METHOD7(Scan, bool( + MOCK_METHOD8(Scan, bool( uint32_t interface_index, bool request_random_mac, int scan_type, bool enable_6ghz_rnr, const std::vector<std::vector<uint8_t>>& ssids, const std::vector<uint32_t>& freqs, + const std::vector<uint8_t>& vendor_ies, int* error_code)); MOCK_METHOD10(StartScheduledScan, bool( diff --git a/tests/scan_utils_unittest.cpp b/tests/scan_utils_unittest.cpp index d2f3631..e2eb414 100644 --- a/tests/scan_utils_unittest.cpp +++ b/tests/scan_utils_unittest.cpp @@ -155,7 +155,7 @@ TEST_F(ScanUtilsTest, CanSendScanRequest) { AppendMessageAndReturn, response, true, _1, _2))); int errno_ignored; EXPECT_TRUE(scan_utils_.Scan(kFakeInterfaceIndex, kFakeUseRandomMAC, - kFakeScanType, false, {}, {}, &errno_ignored)); + kFakeScanType, false, {}, {}, {}, &errno_ignored)); // TODO(b/34231420): Add validation of requested scan ssids, threshold, // and frequencies. } @@ -175,7 +175,7 @@ TEST_F(ScanUtilsTest, CanSendScanRequestWithRandomAddr) { int errno_ignored; EXPECT_TRUE(scan_utils_.Scan(kFakeInterfaceIndex, true, IWifiScannerImpl::SCAN_TYPE_DEFAULT, - false, {}, {}, &errno_ignored)); + false, {}, {}, {}, &errno_ignored)); } TEST_F(ScanUtilsTest, CanSendScanRequestForLowSpanScan) { @@ -195,7 +195,7 @@ TEST_F(ScanUtilsTest, CanSendScanRequestForLowSpanScan) { int errno_ignored; EXPECT_TRUE(scan_utils_.Scan(kFakeInterfaceIndex, false, IWifiScannerImpl::SCAN_TYPE_LOW_SPAN, - true, {}, {}, &errno_ignored)); + true, {}, {}, {}, &errno_ignored)); } TEST_F(ScanUtilsTest, CanSendScanRequestForLowPowerScan) { @@ -213,7 +213,7 @@ TEST_F(ScanUtilsTest, CanSendScanRequestForLowPowerScan) { int errno_ignored; EXPECT_TRUE(scan_utils_.Scan(kFakeInterfaceIndex, false, IWifiScannerImpl::SCAN_TYPE_LOW_POWER, - false, {}, {}, &errno_ignored)); + false, {}, {}, {}, &errno_ignored)); } TEST_F(ScanUtilsTest, CanSendScanRequestForHighAccuracyScan) { @@ -231,7 +231,7 @@ TEST_F(ScanUtilsTest, CanSendScanRequestForHighAccuracyScan) { int errno_ignored; EXPECT_TRUE(scan_utils_.Scan(kFakeInterfaceIndex, false, IWifiScannerImpl::SCAN_TYPE_HIGH_ACCURACY, - false, {}, {}, &errno_ignored)); + false, {}, {}, {}, &errno_ignored)); } TEST_F(ScanUtilsTest, CanSendScanRequestForHighAccuracyScanWithRandomAddr) { @@ -251,7 +251,7 @@ TEST_F(ScanUtilsTest, CanSendScanRequestForHighAccuracyScanWithRandomAddr) { int errno_ignored; EXPECT_TRUE(scan_utils_.Scan(kFakeInterfaceIndex, true, IWifiScannerImpl::SCAN_TYPE_HIGH_ACCURACY, - false, {}, {}, &errno_ignored)); + false, {}, {}, {}, &errno_ignored)); } TEST_F(ScanUtilsTest, CanHandleScanRequestFailure) { @@ -264,7 +264,7 @@ TEST_F(ScanUtilsTest, CanHandleScanRequestFailure) { AppendMessageAndReturn, response, true, _1, _2))); int error_code; EXPECT_FALSE(scan_utils_.Scan(kFakeInterfaceIndex, kFakeUseRandomMAC, - kFakeScanType, false, {}, {}, &error_code)); + kFakeScanType, false, {}, {}, {}, &error_code)); EXPECT_EQ(kFakeErrorCode, error_code); } diff --git a/tests/scanner_unittest.cpp b/tests/scanner_unittest.cpp index 869a21b..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}; @@ -67,6 +69,7 @@ bool ReturnErrorCodeForScanRequest( bool enable_6ghz_rnr, const std::vector<std::vector<uint8_t>>& ssids_ignored, const std::vector<uint32_t>& freqs_ignored, + const std::vector<uint8_t>& vendor_ies, int* error_code) { *error_code = mock_error_code; // Returing false because this helper function is used for failure case. @@ -121,7 +124,7 @@ class ScannerTest : public ::testing::Test { TEST_F(ScannerTest, TestSingleScan) { EXPECT_CALL(scan_utils_, - Scan(_, _, IWifiScannerImpl::SCAN_TYPE_DEFAULT, false, _, _, _)). + Scan(_, _, IWifiScannerImpl::SCAN_TYPE_DEFAULT, false, _, _, _, _)). WillOnce(Return(true)); bool success = false; scanner_impl_.reset(new ScannerImpl(kFakeInterfaceIndex, @@ -134,7 +137,7 @@ TEST_F(ScannerTest, TestSingleScan) { TEST_F(ScannerTest, TestSingleScanForLowSpanScan) { EXPECT_CALL(scan_utils_, - Scan(_, _, IWifiScannerImpl::SCAN_TYPE_LOW_SPAN, true, _, _, _)). + Scan(_, _, IWifiScannerImpl::SCAN_TYPE_LOW_SPAN, true, _, _, _, _)). WillOnce(Return(true)); wiphy_features_.supports_low_span_oneshot_scan = true; ScannerImpl scanner_impl(kFakeInterfaceIndex, scan_capabilities_, @@ -150,7 +153,7 @@ TEST_F(ScannerTest, TestSingleScanForLowSpanScan) { TEST_F(ScannerTest, TestSingleScanForLowPowerScan) { EXPECT_CALL(scan_utils_, - Scan(_, _, IWifiScannerImpl::SCAN_TYPE_LOW_POWER, _, _, _, _)). + Scan(_, _, IWifiScannerImpl::SCAN_TYPE_LOW_POWER, _, _, _, _, _)). WillOnce(Return(true)); wiphy_features_.supports_low_power_oneshot_scan = true; ScannerImpl scanner_impl(kFakeInterfaceIndex, scan_capabilities_, @@ -165,7 +168,7 @@ TEST_F(ScannerTest, TestSingleScanForLowPowerScan) { TEST_F(ScannerTest, TestSingleScanForHighAccuracyScan) { EXPECT_CALL(scan_utils_, - Scan(_, _, IWifiScannerImpl::SCAN_TYPE_HIGH_ACCURACY, _, _, _, _)). + Scan(_, _, IWifiScannerImpl::SCAN_TYPE_HIGH_ACCURACY, _, _, _, _, _)). WillOnce(Return(true)); wiphy_features_.supports_high_accuracy_oneshot_scan = true; ScannerImpl scanner_impl(kFakeInterfaceIndex, scan_capabilities_, @@ -180,7 +183,7 @@ TEST_F(ScannerTest, TestSingleScanForHighAccuracyScan) { TEST_F(ScannerTest, TestSingleScanForLowSpanScanWithNoWiphySupport) { EXPECT_CALL(scan_utils_, - Scan(_, _, IWifiScannerImpl::SCAN_TYPE_DEFAULT, _, _, _, _)). + Scan(_, _, IWifiScannerImpl::SCAN_TYPE_DEFAULT, _, _, _, _, _)). WillOnce(Return(true)); ScannerImpl scanner_impl(kFakeInterfaceIndex, scan_capabilities_, wiphy_features_, &client_interface_impl_, @@ -194,7 +197,7 @@ TEST_F(ScannerTest, TestSingleScanForLowSpanScanWithNoWiphySupport) { TEST_F(ScannerTest, TestSingleScanForLowPowerScanWithNoWiphySupport) { EXPECT_CALL(scan_utils_, - Scan(_, _, IWifiScannerImpl::SCAN_TYPE_DEFAULT, _, _, _, _)). + Scan(_, _, IWifiScannerImpl::SCAN_TYPE_DEFAULT, _, _, _, _, _)). WillOnce(Return(true)); ScannerImpl scanner_impl(kFakeInterfaceIndex, scan_capabilities_, wiphy_features_, &client_interface_impl_, @@ -208,7 +211,7 @@ TEST_F(ScannerTest, TestSingleScanForLowPowerScanWithNoWiphySupport) { TEST_F(ScannerTest, TestSingleScanForHighAccuracyScanWithNoWiphySupport) { EXPECT_CALL(scan_utils_, - Scan(_, _, IWifiScannerImpl::SCAN_TYPE_DEFAULT, _, _, _, _)). + Scan(_, _, IWifiScannerImpl::SCAN_TYPE_DEFAULT, _, _, _, _, _)). WillOnce(Return(true)); ScannerImpl scanner_impl(kFakeInterfaceIndex, scan_capabilities_, wiphy_features_, &client_interface_impl_, @@ -227,10 +230,10 @@ TEST_F(ScannerTest, TestSingleScanFailure) { &scan_utils_)); EXPECT_CALL( scan_utils_, - Scan(_, _, _, _, _, _, _)). + Scan(_, _, _, _, _, _, _, _)). WillOnce(Invoke(bind( ReturnErrorCodeForScanRequest, EBUSY, - _1, _2, _3, _4, _5, _6, _7))); + _1, _2, _3, _4, _5, _6, _7, _8))); bool success = false; EXPECT_TRUE(scanner_impl_->scan(SingleScanSettings(), &success).isOk()); @@ -244,10 +247,10 @@ TEST_F(ScannerTest, TestProcessAbortsOnScanReturningNoDeviceErrorSeveralTimes) { &scan_utils_)); ON_CALL( scan_utils_, - Scan(_, _, _, _, _, _, _)). + Scan(_, _, _, _, _, _, _, _)). WillByDefault(Invoke(bind( ReturnErrorCodeForScanRequest, ENODEV, - _1, _2, _3, _4, _5, _6, _7))); + _1, _2, _3, _4, _5, _6, _7, _8))); bool single_scan_failure; EXPECT_TRUE(scanner_impl_->scan(SingleScanSettings(), &single_scan_failure).isOk()); @@ -266,7 +269,7 @@ TEST_F(ScannerTest, TestAbortScan) { scan_capabilities_, wiphy_features_, &client_interface_impl_, &scan_utils_)); - EXPECT_CALL(scan_utils_, Scan(_, _, _, _, _, _, _)).WillOnce(Return(true)); + EXPECT_CALL(scan_utils_, Scan(_, _, _, _, _, _, _, _)).WillOnce(Return(true)); EXPECT_TRUE( scanner_impl_->scan(SingleScanSettings(), &single_scan_success).isOk()); EXPECT_TRUE(single_scan_success); @@ -345,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_, @@ -355,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( @@ -368,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); } @@ -388,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( @@ -426,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_); @@ -457,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_); @@ -496,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_); @@ -539,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_); diff --git a/wifi_keystore_hal_connector.cpp b/wifi_keystore_hal_connector.cpp index 271e444..4884f77 100644 --- a/wifi_keystore_hal_connector.cpp +++ b/wifi_keystore_hal_connector.cpp @@ -43,7 +43,9 @@ void WifiKeystoreHalConnector::start() { configureRpcThreadpool(1, false /* callerWillJoin */); android::sp<IKeystore> wifiKeystoreHalService = new Keystore(); android::status_t err = wifiKeystoreHalService->registerAsService(); - CHECK(err == android::OK) << "Cannot register wifi keystore HAL service: " << err; + if (err != android::OK) { + LOG(INFO) << "Did not register wifi keystore HIDL HAL service: " << err; + } } } // namespace wificond } // namespace android |