天天看點

Android Wi-Fi 設定帶寬代碼流程

1 LINUX/android/frameworks/base/wifi/java/android/net/wifi/WifiManager.java

    public void setFrequencyBand(int band, boolean persist) {
	                

 
	        try {
	
 
	            mService.setFrequencyBand(band, persist);
	
 
	        } catch (RemoteException e) { }
	
 
	    }
	
       

2 LINUX/android/frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiServiceImpl.java

    public void setFrequencyBand(int band, boolean persist) {
	                
 
	        enforceChangePermission();
	
 
	        if (!isDualBandSupported()) return;
	
 
	        Slog.i(TAG, "WifiService trying to set frequency band to " + band +
	
 
	                " with persist set to " + persist);
	
 
	        final long token = Binder.clearCallingIdentity();
	
 
	        try {
	
 
	            mWifiStateMachine.setFrequencyBand(band, persist);
	
 
	        } finally {
	
 
	            Binder.restoreCallingIdentity(token);
	
 
	        }
	
 
	    }
	
       

3 LINUX/android/frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiStateMachine.java

    public void setFrequencyBand(int band, boolean persist) {
	                
 
	        if (persist) {
	
 
	            Settings.Global.putInt(mContext.getContentResolver(),
	
 
	                    Settings.Global.WIFI_FREQUENCY_BAND,
	
 
	                    band);
	
 
	        }
	
 
	        sendMessage(CMD_SET_FREQUENCY_BAND, band, );
	
 
	    }
	
       

4 LINUX/android/frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiNative.java

    public boolean setBand(int band) {
	                
 
	        String bandstr;
	
 
 
	        if (band == WifiManager.WIFI_FREQUENCY_BAND_5GHZ)
	
 
	            bandstr = "5G";
	
 
	        else if (band == WifiManager.WIFI_FREQUENCY_BAND_2GHZ)
	
 
	            bandstr = "2G";
	
 
	        else
 
	            bandstr = "AUTO";
	
 
	        return doBooleanCommand("SET SETBAND " + bandstr);
	
 
	    }