diff options
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 { |