blob: e8b646d93cb631719e157f72b65fbafd247d6a6a [file] [log] [blame]
/*
* 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.Log;
import com.android.server.wifi.WifiNative;
/**
* KnownBandsChannelHelper that uses band to channel mappings retrieved from the HAL.
* Also supporting updating the channel list from the HAL on demand.
*/
public class HalChannelHelper extends KnownBandsChannelHelper {
private static final String TAG = "HalChannelHelper";
private final WifiNative mWifiNative;
public HalChannelHelper(WifiNative wifiNative) {
mWifiNative = wifiNative;
final int[] emptyFreqList = new int[0];
setBandChannels(emptyFreqList, emptyFreqList, emptyFreqList);
updateChannels();
}
@Override
public void updateChannels() {
int[] channels24G = mWifiNative.getChannelsForBand(WifiScanner.WIFI_BAND_24_GHZ);
if (channels24G == null) Log.e(TAG, "Failed to get channels for 2.4GHz band");
int[] channels5G = mWifiNative.getChannelsForBand(WifiScanner.WIFI_BAND_5_GHZ);
if (channels5G == null) Log.e(TAG, "Failed to get channels for 5GHz band");
int[] channelsDfs = mWifiNative.getChannelsForBand(WifiScanner.WIFI_BAND_5_GHZ_DFS_ONLY);
if (channelsDfs == null) Log.e(TAG, "Failed to get channels for 5GHz DFS only band");
if (channels24G == null || channels5G == null || channelsDfs == null) {
Log.e(TAG, "Failed to get all channels for band, not updating band channel lists");
} else if (channels24G.length > 0 || channels5G.length > 0 || channelsDfs.length > 0) {
setBandChannels(channels24G, channels5G, channelsDfs);
} else {
Log.e(TAG, "Got zero length for all channel lists");
}
}
}