diff options
author | xshu <xshu@google.com> | 2018-06-13 14:09:06 -0700 |
---|---|---|
committer | xshu <xshu@google.com> | 2018-11-05 14:22:36 -0800 |
commit | 894960003ef7ccb181dee54da59fe787f471e406 (patch) | |
tree | b591c8622aabb3788f3c10e4bee84c9dadf46690 /service | |
parent | 92f114e589464dc926002ebf6ada9716a184840a (diff) |
Pno frequency culling: plumb freq to wificond
Add int[] frequecies to PnoNetwork data structure and add the pipeline
to do the plumbing down to wificond.
Bug: 64312268
Test: compile, unit test
Manual test:
flash to device
connect to AP in shield box
close shield box
screen off to trigger pno scan
observe pno scan started and no crashes
open shield box
wait for connection to occur
Change-Id: I4ebaf7f034e5a4d0f50582bd469460b3ec00d761
Diffstat (limited to 'service')
4 files changed, 16 insertions, 7 deletions
diff --git a/service/java/com/android/server/wifi/WifiNative.java b/service/java/com/android/server/wifi/WifiNative.java index ab5b7f08f..f148e01b6 100644 --- a/service/java/com/android/server/wifi/WifiNative.java +++ b/service/java/com/android/server/wifi/WifiNative.java @@ -49,6 +49,7 @@ import java.nio.charset.CharsetDecoder; import java.nio.charset.StandardCharsets; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.HashSet; @@ -2124,7 +2125,7 @@ public class WifiNative { @Override public int hashCode() { - return (ssid == null ? 0 : ssid.hashCode()); + return Objects.hash(ssid); } } @@ -2155,6 +2156,7 @@ public class WifiNative { public String ssid; public byte flags; public byte auth_bit_field; + public int[] frequencies; @Override public boolean equals(Object otherObj) { @@ -2165,14 +2167,13 @@ public class WifiNative { } PnoNetwork other = (PnoNetwork) otherObj; return ((Objects.equals(ssid, other.ssid)) && (flags == other.flags) - && (auth_bit_field == other.auth_bit_field)); + && (auth_bit_field == other.auth_bit_field)) + && Arrays.equals(frequencies, other.frequencies); } @Override public int hashCode() { - int result = (ssid == null ? 0 : ssid.hashCode()); - result ^= ((int) flags * 31) + ((int) auth_bit_field << 8); - return result; + return Objects.hash(ssid, flags, auth_bit_field, frequencies); } } diff --git a/service/java/com/android/server/wifi/WificondControl.java b/service/java/com/android/server/wifi/WificondControl.java index dce6443aa..57559d25a 100644 --- a/service/java/com/android/server/wifi/WificondControl.java +++ b/service/java/com/android/server/wifi/WificondControl.java @@ -652,6 +652,7 @@ public class WificondControl implements IBinder.DeathRecipient { Log.e(TAG, "Illegal argument " + network.ssid, e); continue; } + condNetwork.frequencies = network.frequencies; settings.pnoNetworks.add(condNetwork); } } diff --git a/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java b/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java index 3267cfd4c..57f832674 100644 --- a/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java +++ b/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java @@ -1729,6 +1729,8 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub { nativePnoSetting.networkList[i].flags = pnoSettings.networkList[i].flags; nativePnoSetting.networkList[i].auth_bit_field = pnoSettings.networkList[i].authBitField; + nativePnoSetting.networkList[i].frequencies = + pnoSettings.networkList[i].frequencies; } return nativePnoSetting; } diff --git a/service/java/com/android/server/wifi/wificond/PnoNetwork.java b/service/java/com/android/server/wifi/wificond/PnoNetwork.java index e05e99330..159e53a47 100644 --- a/service/java/com/android/server/wifi/wificond/PnoNetwork.java +++ b/service/java/com/android/server/wifi/wificond/PnoNetwork.java @@ -19,6 +19,7 @@ package com.android.server.wifi.wificond; import android.os.Parcel; import android.os.Parcelable; +import java.util.Arrays; import java.util.Objects; /** @@ -30,6 +31,7 @@ public class PnoNetwork implements Parcelable { public boolean isHidden; public byte[] ssid; + public int[] frequencies; /** public constructor */ public PnoNetwork() { } @@ -42,14 +44,15 @@ public class PnoNetwork implements Parcelable { return false; } PnoNetwork network = (PnoNetwork) rhs; - return java.util.Arrays.equals(ssid, network.ssid) + return Arrays.equals(ssid, network.ssid) + && Arrays.equals(frequencies, network.frequencies) && isHidden == network.isHidden; } /** override hash code */ @Override public int hashCode() { - return Objects.hash(isHidden, ssid); + return Objects.hash(isHidden, ssid, frequencies); } /** implement Parcelable interface */ @@ -66,6 +69,7 @@ public class PnoNetwork implements Parcelable { public void writeToParcel(Parcel out, int flags) { out.writeInt(isHidden ? 1 : 0); out.writeByteArray(ssid); + out.writeIntArray(frequencies); } /** implement Parcelable interface */ @@ -76,6 +80,7 @@ public class PnoNetwork implements Parcelable { PnoNetwork result = new PnoNetwork(); result.isHidden = in.readInt() != 0 ? true : false; result.ssid = in.createByteArray(); + result.frequencies = in.createIntArray(); return result; } |