summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--service/java/com/android/server/wifi/WifiChannelHelper.java79
-rw-r--r--service/java/com/android/server/wifi/WifiScanningServiceImpl.java19
-rw-r--r--service/java/com/android/server/wifi/scanner/ChannelHelper.java86
-rw-r--r--tests/wifitests/src/com/android/server/wifi/MultiClientSchedulerTest.java44
-rw-r--r--tests/wifitests/src/com/android/server/wifi/scanner/ChannelHelperTest.java48
5 files changed, 165 insertions, 111 deletions
diff --git a/service/java/com/android/server/wifi/WifiChannelHelper.java b/service/java/com/android/server/wifi/WifiChannelHelper.java
index 823c36715..e59451978 100644
--- a/service/java/com/android/server/wifi/WifiChannelHelper.java
+++ b/service/java/com/android/server/wifi/WifiChannelHelper.java
@@ -164,85 +164,6 @@ public final class WifiChannelHelper {
return band;
}
- public static String toString(WifiScanner.ChannelSpec[] channels) {
- if (channels == null) {
- return "null";
- }
-
- StringBuilder sb = new StringBuilder();
- sb.append("[");
- for (int c = 0; c < channels.length; c++) {
- sb.append(channels[c].frequency);
- if (c != channels.length - 1) {
- sb.append(",");
- }
- }
- sb.append("]");
- return sb.toString();
- }
-
- public static String toString(WifiNative.ChannelSettings[] channels, int numChannels) {
- if (channels == null) {
- return "null";
- }
-
- StringBuilder sb = new StringBuilder();
- sb.append("[");
- for (int c = 0; c < numChannels; c++) {
- sb.append(channels[c].frequency);
- if (c != numChannels - 1) {
- sb.append(",");
- }
- }
- sb.append("]");
- return sb.toString();
- }
-
- public static String toString(int band, WifiScanner.ChannelSpec[] channels, int maxChannels) {
- if (band != WifiScanner.WIFI_BAND_UNSPECIFIED) {
- return toString(band);
- }
- if (channels.length > maxChannels) {
- return toString(getBandFromChannels(channels));
- }
-
- return toString(channels);
- }
-
- public static String toString(int band, WifiNative.ChannelSettings[] channels,
- int numChannels,
- int maxChannels) {
- if (band != WifiScanner.WIFI_BAND_UNSPECIFIED) {
- return toString(band);
- }
- if (numChannels > maxChannels) {
- return toString(getBandFromChannels(channels, numChannels));
- }
-
- return toString(channels, numChannels);
- }
-
- public static String toString(int band) {
- switch (band) {
- case WifiScanner.WIFI_BAND_UNSPECIFIED:
- return "unspecified";
- case WifiScanner.WIFI_BAND_24_GHZ:
- return "24Ghz";
- case WifiScanner.WIFI_BAND_5_GHZ:
- return "5Ghz (no DFS)";
- case WifiScanner.WIFI_BAND_5_GHZ_DFS_ONLY:
- return "5Ghz (DFS only)";
- case WifiScanner.WIFI_BAND_5_GHZ_WITH_DFS:
- return "5Ghz (DFS incl)";
- case WifiScanner.WIFI_BAND_BOTH:
- return "24Ghz & 5Ghz (no DFS)";
- case WifiScanner.WIFI_BAND_BOTH_WITH_DFS:
- return "24Ghz & 5Ghz (DFS incl)";
- }
-
- return "invalid band";
- }
-
private WifiChannelHelper() {
// don't allow initialization
}
diff --git a/service/java/com/android/server/wifi/WifiScanningServiceImpl.java b/service/java/com/android/server/wifi/WifiScanningServiceImpl.java
index 7eb2855ce..0957ad900 100644
--- a/service/java/com/android/server/wifi/WifiScanningServiceImpl.java
+++ b/service/java/com/android/server/wifi/WifiScanningServiceImpl.java
@@ -49,7 +49,8 @@ import com.android.internal.util.AsyncChannel;
import com.android.internal.util.Protocol;
import com.android.internal.util.State;
import com.android.internal.util.StateMachine;
-import com.android.server.wifi.WifiScannerImpl;
+
+import com.android.server.wifi.scanner.ChannelHelper;
import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -866,9 +867,8 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub {
for (int b = 0; b < schedule.num_buckets; b++) {
WifiNative.BucketSettings bucket = schedule.buckets[b];
Log.d(TAG, "bucket " + bucket.bucket + " (" + bucket.period_ms + "ms)"
- + "[" + bucket.report_events + "]: "
- + WifiChannelHelper.toString(bucket.band, bucket.channels,
- bucket.num_channels, mScheduler.getMaxChannels()));
+ + "[" + bucket.report_events + "]: "
+ + ChannelHelper.toString(bucket));
}
if (mScannerImpl.startBatchedScan(schedule, mStateMachine)) {
@@ -885,8 +885,7 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub {
WifiNative.BucketSettings bucket = schedule.buckets[b];
loge("bucket " + bucket.bucket + " (" + bucket.period_ms + "ms)"
+ "[" + bucket.report_events + "]: "
- + WifiChannelHelper.toString(bucket.band, bucket.channels,
- bucket.num_channels, mScheduler.getMaxChannels()));
+ + ChannelHelper.toString(bucket));
}
return false;
}
@@ -1512,11 +1511,7 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub {
sb.append(", batch=").append(settings.maxScansToCache);
sb.append(", numAP=").append(settings.numBssidsPerScan);
}
- if (settings.band != WifiScanner.WIFI_BAND_UNSPECIFIED) {
- sb.append(", band=(").append(WifiChannelHelper.toString(settings.band)).append(")");
- } else {
- sb.append(", channels=(").append(WifiChannelHelper.toString(settings.channels)).append(")");
- }
+ sb.append(", ").append(ChannelHelper.toString(settings));
sb.append("]");
return sb.toString();
@@ -1558,7 +1553,7 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub {
WifiNative.BucketSettings bucket = schedule.buckets[b];
pw.println(" bucket " + bucket.bucket + " (" + bucket.period_ms + "ms)["
+ bucket.report_events + "]: "
- + WifiChannelHelper.toString(bucket.band, bucket.channels, bucket.num_channels, 8));
+ + ChannelHelper.toString(bucket));
}
}
}
diff --git a/service/java/com/android/server/wifi/scanner/ChannelHelper.java b/service/java/com/android/server/wifi/scanner/ChannelHelper.java
index 50e6f27ee..1f5ae73fd 100644
--- a/service/java/com/android/server/wifi/scanner/ChannelHelper.java
+++ b/service/java/com/android/server/wifi/scanner/ChannelHelper.java
@@ -102,4 +102,90 @@ public abstract class ChannelHelper {
*/
public abstract Set<Integer> getSupplicantScanFreqs();
}
+
+
+ /*
+ * Utility methods for converting band/channels to strings
+ */
+
+ /**
+ * Create a string representation of the channels in the ScanSettings.
+ * If it contains a list of channels then the channels are returned, otherwise a string name of
+ * the band is returned.
+ */
+ public static String toString(WifiScanner.ScanSettings scanSettings) {
+ if (scanSettings.band == WifiScanner.WIFI_BAND_UNSPECIFIED) {
+ return toString(scanSettings.channels);
+ } else {
+ return toString(scanSettings.band);
+ }
+ }
+
+ /**
+ * Create a string representation of the channels in the BucketSettings.
+ * If it contains a list of channels then the channels are returned, otherwise a string name of
+ * the band is returned.
+ */
+ public static String toString(WifiNative.BucketSettings bucketSettings) {
+ if (bucketSettings.band == WifiScanner.WIFI_BAND_UNSPECIFIED) {
+ return toString(bucketSettings.channels, bucketSettings.num_channels);
+ } else {
+ return toString(bucketSettings.band);
+ }
+ }
+
+ private static String toString(WifiScanner.ChannelSpec[] channels) {
+ if (channels == null) {
+ return "null";
+ }
+
+ StringBuilder sb = new StringBuilder();
+ sb.append("[");
+ for (int c = 0; c < channels.length; c++) {
+ sb.append(channels[c].frequency);
+ if (c != channels.length - 1) {
+ sb.append(",");
+ }
+ }
+ sb.append("]");
+ return sb.toString();
+ }
+
+ private static String toString(WifiNative.ChannelSettings[] channels, int numChannels) {
+ if (channels == null) {
+ return "null";
+ }
+
+ StringBuilder sb = new StringBuilder();
+ sb.append("[");
+ for (int c = 0; c < numChannels; c++) {
+ sb.append(channels[c].frequency);
+ if (c != numChannels - 1) {
+ sb.append(",");
+ }
+ }
+ sb.append("]");
+ return sb.toString();
+ }
+
+ private static String toString(int band) {
+ switch (band) {
+ case WifiScanner.WIFI_BAND_UNSPECIFIED:
+ return "unspecified";
+ case WifiScanner.WIFI_BAND_24_GHZ:
+ return "24Ghz";
+ case WifiScanner.WIFI_BAND_5_GHZ:
+ return "5Ghz (no DFS)";
+ case WifiScanner.WIFI_BAND_5_GHZ_DFS_ONLY:
+ return "5Ghz (DFS only)";
+ case WifiScanner.WIFI_BAND_5_GHZ_WITH_DFS:
+ return "5Ghz (DFS incl)";
+ case WifiScanner.WIFI_BAND_BOTH:
+ return "24Ghz & 5Ghz (no DFS)";
+ case WifiScanner.WIFI_BAND_BOTH_WITH_DFS:
+ return "24Ghz & 5Ghz (DFS incl)";
+ }
+
+ return "invalid band";
+ }
}
diff --git a/tests/wifitests/src/com/android/server/wifi/MultiClientSchedulerTest.java b/tests/wifitests/src/com/android/server/wifi/MultiClientSchedulerTest.java
index 97da4a473..45dc3899e 100644
--- a/tests/wifitests/src/com/android/server/wifi/MultiClientSchedulerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/MultiClientSchedulerTest.java
@@ -34,6 +34,7 @@ import android.net.wifi.WifiScanner.ScanSettings;
import android.test.suitebuilder.annotation.SmallTest;
import com.android.server.wifi.WifiNative.BucketSettings;
+import com.android.server.wifi.scanner.ChannelHelper;
import org.junit.After;
import org.junit.Before;
@@ -546,36 +547,39 @@ public class MultiClientSchedulerTest {
if ((settings.reportEvents & WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN) != 0) {
if ((bucket.report_events & WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN) == 0) {
ignoreString
- .append(" ")
- .append(WifiChannelHelper.toString(getAllChannels(bucket)))
- .append("=after_each_scan:")
- .append(bucket.report_events & WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN)
- .append("!=")
- .append(settings.reportEvents & WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN);
+ .append(" ")
+ .append(ChannelHelper.toString(bucket))
+ .append("=after_each_scan:")
+ .append(bucket.report_events & WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN)
+ .append("!=")
+ .append(settings.reportEvents
+ & WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN);
continue;
}
}
if ((settings.reportEvents & WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT) != 0) {
if ((bucket.report_events & WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT) == 0) {
ignoreString
- .append(" ")
- .append(WifiChannelHelper.toString(getAllChannels(bucket)))
- .append("=full_result:")
- .append(bucket.report_events & WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT)
- .append("!=")
- .append(settings.reportEvents & WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT);
+ .append(" ")
+ .append(ChannelHelper.toString(bucket))
+ .append("=full_result:")
+ .append(bucket.report_events
+ & WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT)
+ .append("!=")
+ .append(settings.reportEvents
+ & WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT);
continue;
}
}
if ((settings.reportEvents & WifiScanner.REPORT_EVENT_NO_BATCH) == 0) {
if ((bucket.report_events & WifiScanner.REPORT_EVENT_NO_BATCH) != 0) {
ignoreString
- .append(" ")
- .append(WifiChannelHelper.toString(getAllChannels(bucket)))
- .append("=no_batch:")
- .append(bucket.report_events & WifiScanner.REPORT_EVENT_NO_BATCH)
- .append("!=")
- .append(settings.reportEvents & WifiScanner.REPORT_EVENT_NO_BATCH);
+ .append(" ")
+ .append(ChannelHelper.toString(bucket))
+ .append("=no_batch:")
+ .append(bucket.report_events & WifiScanner.REPORT_EVENT_NO_BATCH)
+ .append("!=")
+ .append(settings.reportEvents & WifiScanner.REPORT_EVENT_NO_BATCH);
continue;
}
}
@@ -596,7 +600,7 @@ public class MultiClientSchedulerTest {
if (bucket.period_ms != expectedPeriod) {
ignoreString
.append(" ")
- .append(WifiChannelHelper.toString(getAllChannels(bucket)))
+ .append(ChannelHelper.toString(bucket))
.append("=period:")
.append(bucket.period_ms)
.append("!=")
@@ -607,7 +611,7 @@ public class MultiClientSchedulerTest {
if (bucket.period_ms > expectedPeriod) {
ignoreString
.append(" ")
- .append(WifiChannelHelper.toString(getAllChannels(bucket)))
+ .append(ChannelHelper.toString(bucket))
.append("=period:")
.append(bucket.period_ms)
.append(">")
diff --git a/tests/wifitests/src/com/android/server/wifi/scanner/ChannelHelperTest.java b/tests/wifitests/src/com/android/server/wifi/scanner/ChannelHelperTest.java
index 196376c41..c54e3997b 100644
--- a/tests/wifitests/src/com/android/server/wifi/scanner/ChannelHelperTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/scanner/ChannelHelperTest.java
@@ -20,6 +20,7 @@ import static com.android.server.wifi.ScanTestUtil.channelsToNativeSettings;
import static com.android.server.wifi.ScanTestUtil.channelsToSpec;
import static com.android.server.wifi.ScanTestUtil.createRequest;
+import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.doCallRealMethod;
import static org.mockito.Mockito.mock;
@@ -44,6 +45,53 @@ public class ChannelHelperTest {
/**
* Unit tests for
+ * {@link com.android.server.wifi.scanner.ChannelHelper#toString}.
+ */
+ public static class ToStringTest {
+ /**
+ * Compute a string representing the channels in a ScanSettings with a band set.
+ */
+ @Test
+ public void scanSettings_band() {
+ WifiScanner.ScanSettings scanSettings = createRequest(WifiScanner.WIFI_BAND_BOTH,
+ 10000, 0, 20, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN);
+ assertEquals("24Ghz & 5Ghz (no DFS)", ChannelHelper.toString(scanSettings));
+ }
+
+ /**
+ * Compute a string representing the channels in a ScanSettings with a list of channels set.
+ */
+ @Test
+ public void scanSettings_channels() {
+ WifiScanner.ScanSettings scanSettings = createRequest(channelsToSpec(5150, 2400),
+ 10000, 0, 20, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN);
+ assertEquals("[5150,2400]", ChannelHelper.toString(scanSettings));
+ }
+
+ /**
+ * Compute a string representing the channels in a BucketSettings with a band set.
+ */
+ @Test
+ public void bucketSettings_band() {
+ WifiScanner.ScanSettings scanSettings = createRequest(WifiScanner.WIFI_BAND_5_GHZ,
+ 10000, 0, 20, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN);
+ assertEquals("5Ghz (no DFS)", ChannelHelper.toString(scanSettings));
+ }
+
+ /**
+ * Compute a string representing the channels in a BucketSettings with a list of channels
+ * set.
+ */
+ @Test
+ public void bucketSettings_channels() {
+ WifiScanner.ScanSettings scanSettings = createRequest(channelsToSpec(2400, 5100),
+ 10000, 0, 20, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN);
+ assertEquals("[2400,5100]", ChannelHelper.toString(scanSettings));
+ }
+ }
+
+ /**
+ * Unit tests for
* {@link com.android.server.wifi.scanner.ChannelHelper.ChannelCollection}.
*/
public static class ChannelCollectionTest {