summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorxshu <xshu@google.com>2018-06-13 14:09:06 -0700
committerxshu <xshu@google.com>2018-11-05 14:22:36 -0800
commit894960003ef7ccb181dee54da59fe787f471e406 (patch)
treeb591c8622aabb3788f3c10e4bee84c9dadf46690 /service
parent92f114e589464dc926002ebf6ada9716a184840a (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')
-rw-r--r--service/java/com/android/server/wifi/WifiNative.java11
-rw-r--r--service/java/com/android/server/wifi/WificondControl.java1
-rw-r--r--service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java2
-rw-r--r--service/java/com/android/server/wifi/wificond/PnoNetwork.java9
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;
}