From b5010cc3c33c74cc406a70f34f93d330a3f0db6a Mon Sep 17 00:00:00 2001 From: Robert Greenwalt Date: Thu, 21 May 2009 15:11:40 -0700 Subject: Add carrier/mcc factors to wifi-channel decision. Uses ro.carrier and MCC when available to try to set (non-persistingly) the number of allowed wifi channels. Part of the fix for 1625953. --- wifi/java/android/net/wifi/IWifiManager.aidl | 2 +- wifi/java/android/net/wifi/WifiManager.java | 5 +++-- wifi/java/android/net/wifi/WifiStateTracker.java | 12 ++++++++++-- 3 files changed, 14 insertions(+), 5 deletions(-) (limited to 'wifi') diff --git a/wifi/java/android/net/wifi/IWifiManager.aidl b/wifi/java/android/net/wifi/IWifiManager.aidl index 7c3af69..0db868e 100644 --- a/wifi/java/android/net/wifi/IWifiManager.aidl +++ b/wifi/java/android/net/wifi/IWifiManager.aidl @@ -58,7 +58,7 @@ interface IWifiManager int getNumAllowedChannels(); - boolean setNumAllowedChannels(int numChannels); + boolean setNumAllowedChannels(int numChannels, boolean persist); int[] getValidChannelCounts(); diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java index 1a7caef..141d53f 100644 --- a/wifi/java/android/net/wifi/WifiManager.java +++ b/wifi/java/android/net/wifi/WifiManager.java @@ -538,14 +538,15 @@ public class WifiManager { * for some reason. * @param numChannels the number of allowed channels. Must be greater than 0 * and less than or equal to 16. + * @param persist {@code true} if you want this remembered * @return {@code true} if the operation succeeds, {@code false} otherwise, e.g., * {@code numChannels} is out of range. * * @hide pending API council */ - public boolean setNumAllowedChannels(int numChannels) { + public boolean setNumAllowedChannels(int numChannels, boolean persist) { try { - return mService.setNumAllowedChannels(numChannels); + return mService.setNumAllowedChannels(numChannels, persist); } catch (RemoteException e) { return false; } diff --git a/wifi/java/android/net/wifi/WifiStateTracker.java b/wifi/java/android/net/wifi/WifiStateTracker.java index 6771136..7ba124f 100644 --- a/wifi/java/android/net/wifi/WifiStateTracker.java +++ b/wifi/java/android/net/wifi/WifiStateTracker.java @@ -183,6 +183,10 @@ public class WifiStateTracker extends NetworkStateTracker { private boolean mUseStaticIp = false; private int mReconnectCount; + // used to store the (non-persisted) num determined during device boot + // (from mcc or other phone info) before the driver is started. + private int mNumAllowedChannels = 0; + // Variables relating to the 'available networks' notification /** @@ -571,9 +575,12 @@ public class WifiStateTracker extends NetworkStateTracker { try { return setNumAllowedChannels( Settings.Secure.getInt(mContext.getContentResolver(), - Settings.Secure.WIFI_NUM_ALLOWED_CHANNELS)); + Settings.Secure.WIFI_NUM_ALLOWED_CHANNELS)); } catch (Settings.SettingNotFoundException e) { - // if setting doesn't exist, stick with the driver default + if (mNumAllowedChannels != 0) { + WifiNative.setNumAllowedChannelsCommand(mNumAllowedChannels); + } + // otherwise, use the driver default } return true; } @@ -587,6 +594,7 @@ public class WifiStateTracker extends NetworkStateTracker { * {@code numChannels} is outside the valid range. */ public synchronized boolean setNumAllowedChannels(int numChannels) { + mNumAllowedChannels = numChannels; return WifiNative.setNumAllowedChannelsCommand(numChannels); } -- cgit v1.1