summaryrefslogtreecommitdiffstats
path: root/service/java/com/android/server/wifi/scanner/NoBandChannelHelper.java
diff options
context:
space:
mode:
authorMitchell Wills <mwills@google.com>2016-02-04 18:43:08 -0800
committerMitchell Wills <mwills@google.com>2016-02-08 23:07:03 -0800
commit712ef6246834caeac3d5b06bea08e85d6b29cd7a (patch)
treee20dcfb15c46b57883ab2e4e06be55ce7294aec5 /service/java/com/android/server/wifi/scanner/NoBandChannelHelper.java
parent68cb8c02b4ad079c54a2ffd4407da921d18c7af9 (diff)
downloadandroid_frameworks_opt_net_wifi-712ef6246834caeac3d5b06bea08e85d6b29cd7a.tar.gz
android_frameworks_opt_net_wifi-712ef6246834caeac3d5b06bea08e85d6b29cd7a.tar.bz2
android_frameworks_opt_net_wifi-712ef6246834caeac3d5b06bea08e85d6b29cd7a.zip
Add scan channel helper abstraction
This will allow code to easily function without worrying about the differences in the amount of information known about scan channels. Currently this abstraction will only support merging channels, but more functionality will be added as needed. Eventually this will replace all functionality in WifiChannelHelper. Change-Id: Ic41501204fa4ff4470491055f4204ad9a88000d4
Diffstat (limited to 'service/java/com/android/server/wifi/scanner/NoBandChannelHelper.java')
-rw-r--r--service/java/com/android/server/wifi/scanner/NoBandChannelHelper.java80
1 files changed, 80 insertions, 0 deletions
diff --git a/service/java/com/android/server/wifi/scanner/NoBandChannelHelper.java b/service/java/com/android/server/wifi/scanner/NoBandChannelHelper.java
new file mode 100644
index 000000000..5c50abb1b
--- /dev/null
+++ b/service/java/com/android/server/wifi/scanner/NoBandChannelHelper.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.wifi.scanner;
+
+import android.net.wifi.WifiScanner;
+import android.util.ArraySet;
+
+import com.android.server.wifi.WifiNative;
+
+/**
+ * ChannelHelper that offers channel manipulation utilities when the channels in a band are not
+ * known. Operations performed may simplify any band to include all channels.
+ */
+public class NoBandChannelHelper extends ChannelHelper {
+
+ /**
+ * ChannelCollection that merges channels without knowing which channels are in each band. In
+ * order to do this if any band is added or the maxChannels is exceeded then all channels will
+ * be included.
+ */
+ public class NoBandChannelCollection extends ChannelCollection {
+ private final ArraySet<Integer> mChannels = new ArraySet<Integer>();
+ private boolean mAllChannels = false;
+
+ @Override
+ public void addChannel(int frequency) {
+ mChannels.add(frequency);
+ }
+
+ @Override
+ public void addBand(int band) {
+ if (band != WifiScanner.WIFI_BAND_UNSPECIFIED) {
+ mAllChannels = true;
+ }
+ }
+
+ @Override
+ public void clear() {
+ mAllChannels = false;
+ mChannels.clear();
+ }
+
+ @Override
+ public void fillBucketSettings(WifiNative.BucketSettings bucketSettings, int maxChannels) {
+ if (mAllChannels || mChannels.size() > maxChannels) {
+ bucketSettings.band = WifiScanner.WIFI_BAND_BOTH_WITH_DFS;
+ bucketSettings.num_channels = 0;
+ bucketSettings.channels = null;
+ } else {
+ bucketSettings.band = WifiScanner.WIFI_BAND_UNSPECIFIED;
+ bucketSettings.num_channels = mChannels.size();
+ bucketSettings.channels = new WifiNative.ChannelSettings[mChannels.size()];
+ for (int i = 0; i < mChannels.size(); ++i) {
+ WifiNative.ChannelSettings channelSettings = new WifiNative.ChannelSettings();
+ channelSettings.frequency = mChannels.valueAt(i);
+ bucketSettings.channels[i] = channelSettings;
+ }
+ }
+ }
+ }
+
+ @Override
+ public ChannelCollection createChannelCollection() {
+ return new NoBandChannelCollection();
+ }
+}