Loading api/current.xml +196 −0 Original line number Diff line number Diff line Loading @@ -85805,6 +85805,16 @@ visibility="public" > </field> <field name="frequency" type="int" transient="false" volatile="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </field> <field name="hiddenSSID" type="boolean" transient="false" Loading @@ -85815,6 +85825,16 @@ visibility="public" > </field> <field name="isAdhoc" type="boolean" transient="false" volatile="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </field> <field name="networkId" type="int" transient="false" Loading Loading @@ -85941,6 +85961,169 @@ > </field> </class> <class name="WifiConfiguration.ChannelFrequency" extends="java.lang.Object" abstract="false" static="true" final="false" deprecated="not deprecated" visibility="public" > <field name="CHANNEL_1" type="int" transient="false" volatile="false" value="2412" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="CHANNEL_10" type="int" transient="false" volatile="false" value="2457" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="CHANNEL_11" type="int" transient="false" volatile="false" value="2462" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="CHANNEL_12" type="int" transient="false" volatile="false" value="2467" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="CHANNEL_13" type="int" transient="false" volatile="false" value="2472" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="CHANNEL_14" type="int" transient="false" volatile="false" value="2484" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="CHANNEL_2" type="int" transient="false" volatile="false" value="2417" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="CHANNEL_3" type="int" transient="false" volatile="false" value="2422" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="CHANNEL_4" type="int" transient="false" volatile="false" value="2427" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="CHANNEL_5" type="int" transient="false" volatile="false" value="2432" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="CHANNEL_6" type="int" transient="false" volatile="false" value="2437" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="CHANNEL_7" type="int" transient="false" volatile="false" value="2442" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="CHANNEL_8" type="int" transient="false" volatile="false" value="2447" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="CHANNEL_9" type="int" transient="false" volatile="false" value="2452" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> </class> <class name="WifiConfiguration.GroupCipher" extends="java.lang.Object" abstract="false" Loading Loading @@ -86675,6 +86858,19 @@ visibility="public" > </method> <method name="setAdhocMode" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="adhoc" type="boolean"> </parameter> </method> <method name="setWifiEnabled" return="boolean" abstract="false" core/jni/android_net_wifi_Wifi.cpp +0 −2 Original line number Diff line number Diff line Loading @@ -438,8 +438,6 @@ static jboolean android_net_wifi_setBluetoothCoexistenceScanModeCommand(JNIEnv* static jboolean android_net_wifi_saveConfigCommand(JNIEnv* env, jobject clazz) { // Make sure we never write out a value for AP_SCAN other than 1 (void)doBooleanCommand("AP_SCAN 1", "OK"); return doBooleanCommand("SAVE_CONFIG", "OK"); } Loading services/java/com/android/server/WifiService.java +63 −0 Original line number Diff line number Diff line Loading @@ -234,6 +234,7 @@ public class WifiService extends IWifiManager.Stub { setWifiEnabledBlocking(wifiEnabled, false, Process.myUid()); } private boolean getPersistedWifiEnabled() { final ContentResolver cr = mContext.getContentResolver(); try { Loading Loading @@ -443,6 +444,24 @@ public class WifiService extends IWifiManager.Stub { return mWifiState; } /** * see {@link android.net.wifi.WifiManager#setAdhocMode(boolean adhoc)} * @return {@code true} if the operation succeeds */ public boolean setAdhocMode(boolean adhoc) { enforceChangePermission(); synchronized (mWifiStateTracker) { //We need AP_SCAN = 2 for Adhoc to function correctly if (adhoc) { Log.d(TAG, "Adhoc Mode Set"); return WifiNative.setScanResultHandlingCommand(WifiStateTracker.SUPPL_SCAN_HANDLING_LIST_ONLY); } else { Log.d(TAG, "Normal Mode Set"); return WifiNative.setScanResultHandlingCommand(WifiStateTracker.SUPPL_SCAN_HANDLING_NORMAL); } } } /** * see {@link android.net.wifi.WifiManager#disconnect()} * @return {@code true} if the operation succeeds Loading Loading @@ -578,6 +597,15 @@ public class WifiService extends IWifiManager.Stub { } } value = WifiNative.getNetworkVariableCommand(netId, WifiConfiguration.modeVarName); config.isAdhoc = false; if (!TextUtils.isEmpty(value)) { try { config.isAdhoc = Integer.parseInt(value) != 0; } catch (NumberFormatException ignore) { } } value = WifiNative.getNetworkVariableCommand(netId, WifiConfiguration.wepTxKeyIdxVarName); config.wepTxKeyIndex = -1; if (!TextUtils.isEmpty(value)) { Loading Loading @@ -755,6 +783,41 @@ public class WifiService extends IWifiManager.Stub { break setVariables; } if (config.isAdhoc) { //Set Adhoc Mode if (!WifiNative.setNetworkVariableCommand( netId, WifiConfiguration.modeVarName, WifiConfiguration.modeAdhoc)) { if (DBG) { Log.d(TAG, "failed to set mode: " + WifiConfiguration.modeAdhoc); } } else { Log.d(TAG, "set mode to : " + config.modeAdhoc); } //Set Frequency String frequency; if (config.frequency != 0) { frequency = Integer.toString(config.frequency); } else { //Default to channel 1 frequency = Integer.toString(WifiConfiguration.ChannelFrequency.CHANNEL_1); } if (!WifiNative.setNetworkVariableCommand( netId, WifiConfiguration.frequencyVarName, frequency)) { if (DBG) { Log.d(TAG, "failed to set frequency: " + frequency); } } else { Log.d(TAG, "set frequency to : " + frequency); } } else { Log.d(TAG, "Creating Non-adhoc network"); } String allowedKeyManagementString = makeString(config.allowedKeyManagement, WifiConfiguration.KeyMgmt.strings); if (config.allowedKeyManagement.cardinality() != 0 && Loading wifi/java/android/net/wifi/IWifiManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -44,6 +44,8 @@ interface IWifiManager List<ScanResult> getScanResults(); boolean setAdhocMode(boolean adhoc); boolean disconnect(); boolean reconnect(); Loading wifi/java/android/net/wifi/WifiConfiguration.java +57 −2 Original line number Diff line number Diff line Loading @@ -42,6 +42,43 @@ public class WifiConfiguration implements Parcelable { public static final String priorityVarName = "priority"; /** {@hide} */ public static final String hiddenSSIDVarName = "scan_ssid"; /** {@hide} */ public static final String modeVarName = "mode"; /** {@hide} */ public static final String frequencyVarName = "frequency"; /** {@hide} */ public static final String modeInfrastructure = "0"; /** {@hide} */ public static final String modeAdhoc = "1"; /** * Channel Frequency Values, to be used for setting up Adhoc Networks */ public static class ChannelFrequency { private ChannelFrequency() { } /** Channel Frequencies by Channel Number * Allowed use may vary by region * USA allows use of channels 1 through 11 * Europe allows channels 1 through 13 * Japan uses all channels, with 14 restricted to 802.11b traffic */ public static final int CHANNEL_1 = 2412; public static final int CHANNEL_2 = 2417; public static final int CHANNEL_3 = 2422; public static final int CHANNEL_4 = 2427; public static final int CHANNEL_5 = 2432; public static final int CHANNEL_6 = 2437; public static final int CHANNEL_7 = 2442; public static final int CHANNEL_8 = 2447; public static final int CHANNEL_9 = 2452; public static final int CHANNEL_10 = 2457; public static final int CHANNEL_11 = 2462; public static final int CHANNEL_12 = 2467; public static final int CHANNEL_13 = 2472; public static final int CHANNEL_14 = 2484; } /** {@hide} */ public class EnterpriseField { Loading Loading @@ -294,13 +331,27 @@ public class WifiConfiguration implements Parcelable { */ public BitSet allowedGroupCiphers; /** * This signal is an Adhoc signal, so it must make sure that scan mode * is set to 2 and that mode is set to 1 (IBSS) for {@code wpa_supplicant} */ public boolean isAdhoc; /** * If the signal is Adhoc, then frequency must be set * otherwise, we don't care what the frequency is */ public int frequency; public WifiConfiguration() { networkId = -1; SSID = null; BSSID = null; priority = 0; frequency = 0; hiddenSSID = false; isAdhoc = false; allowedKeyManagement = new BitSet(); allowedProtocols = new BitSet(); allowedAuthAlgorithms = new BitSet(); Loading Loading @@ -444,6 +495,8 @@ public class WifiConfiguration implements Parcelable { dest.writeInt(wepTxKeyIndex); dest.writeInt(priority); dest.writeInt(hiddenSSID ? 1 : 0); dest.writeInt(isAdhoc ? 1 : 0); dest.writeInt(frequency); writeBitSet(dest, allowedKeyManagement); writeBitSet(dest, allowedProtocols); Loading Loading @@ -471,6 +524,8 @@ public class WifiConfiguration implements Parcelable { config.wepTxKeyIndex = in.readInt(); config.priority = in.readInt(); config.hiddenSSID = in.readInt() != 0; config.isAdhoc = in.readInt() != 0; config.frequency = in.readInt(); config.allowedKeyManagement = readBitSet(in); config.allowedProtocols = readBitSet(in); config.allowedAuthAlgorithms = readBitSet(in); Loading Loading
api/current.xml +196 −0 Original line number Diff line number Diff line Loading @@ -85805,6 +85805,16 @@ visibility="public" > </field> <field name="frequency" type="int" transient="false" volatile="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </field> <field name="hiddenSSID" type="boolean" transient="false" Loading @@ -85815,6 +85825,16 @@ visibility="public" > </field> <field name="isAdhoc" type="boolean" transient="false" volatile="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </field> <field name="networkId" type="int" transient="false" Loading Loading @@ -85941,6 +85961,169 @@ > </field> </class> <class name="WifiConfiguration.ChannelFrequency" extends="java.lang.Object" abstract="false" static="true" final="false" deprecated="not deprecated" visibility="public" > <field name="CHANNEL_1" type="int" transient="false" volatile="false" value="2412" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="CHANNEL_10" type="int" transient="false" volatile="false" value="2457" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="CHANNEL_11" type="int" transient="false" volatile="false" value="2462" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="CHANNEL_12" type="int" transient="false" volatile="false" value="2467" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="CHANNEL_13" type="int" transient="false" volatile="false" value="2472" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="CHANNEL_14" type="int" transient="false" volatile="false" value="2484" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="CHANNEL_2" type="int" transient="false" volatile="false" value="2417" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="CHANNEL_3" type="int" transient="false" volatile="false" value="2422" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="CHANNEL_4" type="int" transient="false" volatile="false" value="2427" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="CHANNEL_5" type="int" transient="false" volatile="false" value="2432" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="CHANNEL_6" type="int" transient="false" volatile="false" value="2437" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="CHANNEL_7" type="int" transient="false" volatile="false" value="2442" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="CHANNEL_8" type="int" transient="false" volatile="false" value="2447" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="CHANNEL_9" type="int" transient="false" volatile="false" value="2452" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> </class> <class name="WifiConfiguration.GroupCipher" extends="java.lang.Object" abstract="false" Loading Loading @@ -86675,6 +86858,19 @@ visibility="public" > </method> <method name="setAdhocMode" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="adhoc" type="boolean"> </parameter> </method> <method name="setWifiEnabled" return="boolean" abstract="false"
core/jni/android_net_wifi_Wifi.cpp +0 −2 Original line number Diff line number Diff line Loading @@ -438,8 +438,6 @@ static jboolean android_net_wifi_setBluetoothCoexistenceScanModeCommand(JNIEnv* static jboolean android_net_wifi_saveConfigCommand(JNIEnv* env, jobject clazz) { // Make sure we never write out a value for AP_SCAN other than 1 (void)doBooleanCommand("AP_SCAN 1", "OK"); return doBooleanCommand("SAVE_CONFIG", "OK"); } Loading
services/java/com/android/server/WifiService.java +63 −0 Original line number Diff line number Diff line Loading @@ -234,6 +234,7 @@ public class WifiService extends IWifiManager.Stub { setWifiEnabledBlocking(wifiEnabled, false, Process.myUid()); } private boolean getPersistedWifiEnabled() { final ContentResolver cr = mContext.getContentResolver(); try { Loading Loading @@ -443,6 +444,24 @@ public class WifiService extends IWifiManager.Stub { return mWifiState; } /** * see {@link android.net.wifi.WifiManager#setAdhocMode(boolean adhoc)} * @return {@code true} if the operation succeeds */ public boolean setAdhocMode(boolean adhoc) { enforceChangePermission(); synchronized (mWifiStateTracker) { //We need AP_SCAN = 2 for Adhoc to function correctly if (adhoc) { Log.d(TAG, "Adhoc Mode Set"); return WifiNative.setScanResultHandlingCommand(WifiStateTracker.SUPPL_SCAN_HANDLING_LIST_ONLY); } else { Log.d(TAG, "Normal Mode Set"); return WifiNative.setScanResultHandlingCommand(WifiStateTracker.SUPPL_SCAN_HANDLING_NORMAL); } } } /** * see {@link android.net.wifi.WifiManager#disconnect()} * @return {@code true} if the operation succeeds Loading Loading @@ -578,6 +597,15 @@ public class WifiService extends IWifiManager.Stub { } } value = WifiNative.getNetworkVariableCommand(netId, WifiConfiguration.modeVarName); config.isAdhoc = false; if (!TextUtils.isEmpty(value)) { try { config.isAdhoc = Integer.parseInt(value) != 0; } catch (NumberFormatException ignore) { } } value = WifiNative.getNetworkVariableCommand(netId, WifiConfiguration.wepTxKeyIdxVarName); config.wepTxKeyIndex = -1; if (!TextUtils.isEmpty(value)) { Loading Loading @@ -755,6 +783,41 @@ public class WifiService extends IWifiManager.Stub { break setVariables; } if (config.isAdhoc) { //Set Adhoc Mode if (!WifiNative.setNetworkVariableCommand( netId, WifiConfiguration.modeVarName, WifiConfiguration.modeAdhoc)) { if (DBG) { Log.d(TAG, "failed to set mode: " + WifiConfiguration.modeAdhoc); } } else { Log.d(TAG, "set mode to : " + config.modeAdhoc); } //Set Frequency String frequency; if (config.frequency != 0) { frequency = Integer.toString(config.frequency); } else { //Default to channel 1 frequency = Integer.toString(WifiConfiguration.ChannelFrequency.CHANNEL_1); } if (!WifiNative.setNetworkVariableCommand( netId, WifiConfiguration.frequencyVarName, frequency)) { if (DBG) { Log.d(TAG, "failed to set frequency: " + frequency); } } else { Log.d(TAG, "set frequency to : " + frequency); } } else { Log.d(TAG, "Creating Non-adhoc network"); } String allowedKeyManagementString = makeString(config.allowedKeyManagement, WifiConfiguration.KeyMgmt.strings); if (config.allowedKeyManagement.cardinality() != 0 && Loading
wifi/java/android/net/wifi/IWifiManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -44,6 +44,8 @@ interface IWifiManager List<ScanResult> getScanResults(); boolean setAdhocMode(boolean adhoc); boolean disconnect(); boolean reconnect(); Loading
wifi/java/android/net/wifi/WifiConfiguration.java +57 −2 Original line number Diff line number Diff line Loading @@ -42,6 +42,43 @@ public class WifiConfiguration implements Parcelable { public static final String priorityVarName = "priority"; /** {@hide} */ public static final String hiddenSSIDVarName = "scan_ssid"; /** {@hide} */ public static final String modeVarName = "mode"; /** {@hide} */ public static final String frequencyVarName = "frequency"; /** {@hide} */ public static final String modeInfrastructure = "0"; /** {@hide} */ public static final String modeAdhoc = "1"; /** * Channel Frequency Values, to be used for setting up Adhoc Networks */ public static class ChannelFrequency { private ChannelFrequency() { } /** Channel Frequencies by Channel Number * Allowed use may vary by region * USA allows use of channels 1 through 11 * Europe allows channels 1 through 13 * Japan uses all channels, with 14 restricted to 802.11b traffic */ public static final int CHANNEL_1 = 2412; public static final int CHANNEL_2 = 2417; public static final int CHANNEL_3 = 2422; public static final int CHANNEL_4 = 2427; public static final int CHANNEL_5 = 2432; public static final int CHANNEL_6 = 2437; public static final int CHANNEL_7 = 2442; public static final int CHANNEL_8 = 2447; public static final int CHANNEL_9 = 2452; public static final int CHANNEL_10 = 2457; public static final int CHANNEL_11 = 2462; public static final int CHANNEL_12 = 2467; public static final int CHANNEL_13 = 2472; public static final int CHANNEL_14 = 2484; } /** {@hide} */ public class EnterpriseField { Loading Loading @@ -294,13 +331,27 @@ public class WifiConfiguration implements Parcelable { */ public BitSet allowedGroupCiphers; /** * This signal is an Adhoc signal, so it must make sure that scan mode * is set to 2 and that mode is set to 1 (IBSS) for {@code wpa_supplicant} */ public boolean isAdhoc; /** * If the signal is Adhoc, then frequency must be set * otherwise, we don't care what the frequency is */ public int frequency; public WifiConfiguration() { networkId = -1; SSID = null; BSSID = null; priority = 0; frequency = 0; hiddenSSID = false; isAdhoc = false; allowedKeyManagement = new BitSet(); allowedProtocols = new BitSet(); allowedAuthAlgorithms = new BitSet(); Loading Loading @@ -444,6 +495,8 @@ public class WifiConfiguration implements Parcelable { dest.writeInt(wepTxKeyIndex); dest.writeInt(priority); dest.writeInt(hiddenSSID ? 1 : 0); dest.writeInt(isAdhoc ? 1 : 0); dest.writeInt(frequency); writeBitSet(dest, allowedKeyManagement); writeBitSet(dest, allowedProtocols); Loading Loading @@ -471,6 +524,8 @@ public class WifiConfiguration implements Parcelable { config.wepTxKeyIndex = in.readInt(); config.priority = in.readInt(); config.hiddenSSID = in.readInt() != 0; config.isAdhoc = in.readInt() != 0; config.frequency = in.readInt(); config.allowedKeyManagement = readBitSet(in); config.allowedProtocols = readBitSet(in); config.allowedAuthAlgorithms = readBitSet(in); Loading