summaryrefslogtreecommitdiffstats
path: root/wifi
diff options
context:
space:
mode:
authorBruno Randolf <br1@einfach.org>2013-02-02 11:09:55 +0000
committerGerrit Code Review <gerrit@cyanogenmod.org>2013-03-24 16:12:47 -0700
commitd464e60ad07cf0bdb424ffa83e98756ecfd678e8 (patch)
tree84d6f5cde2988f027ac72577c3a213e8c0748e7e /wifi
parent21b88245d868a976df2f03301a0baa79540efb1b (diff)
downloadframeworks_base-d464e60ad07cf0bdb424ffa83e98756ecfd678e8.zip
frameworks_base-d464e60ad07cf0bdb424ffa83e98756ecfd678e8.tar.gz
frameworks_base-d464e60ad07cf0bdb424ffa83e98756ecfd678e8.tar.bz2
Wifi: Enable Ad-Hoc (IBSS) network configuration
This adds two public but hidden variables to WifiConfiguration: isIBSS and frequency. These are used for configuring IBSS mode. WifiConfigStore is exended to get and set these variables to wpa_supplicant (via WifiNative). Change-Id: Iab02c3d738c05c2de036350ea77b78789213e357
Diffstat (limited to 'wifi')
-rw-r--r--wifi/java/android/net/wifi/WifiConfigStore.java35
-rw-r--r--wifi/java/android/net/wifi/WifiConfiguration.java24
2 files changed, 59 insertions, 0 deletions
diff --git a/wifi/java/android/net/wifi/WifiConfigStore.java b/wifi/java/android/net/wifi/WifiConfigStore.java
index 84506b6..f77ece3 100644
--- a/wifi/java/android/net/wifi/WifiConfigStore.java
+++ b/wifi/java/android/net/wifi/WifiConfigStore.java
@@ -1004,6 +1004,23 @@ class WifiConfigStore {
break setVariables;
}
+ if (config.isIBSS) {
+ if(!mWifiNative.setNetworkVariable(
+ netId,
+ WifiConfiguration.modeVarName,
+ "1")) {
+ loge("failed to set adhoc mode");
+ break setVariables;
+ }
+ if(!mWifiNative.setNetworkVariable(
+ netId,
+ WifiConfiguration.frequencyVarName,
+ Integer.toString(config.frequency))) {
+ loge("failed to set frequency");
+ break setVariables;
+ }
+ }
+
String allowedKeyManagementString =
makeString(config.allowedKeyManagement, WifiConfiguration.KeyMgmt.strings);
if (config.allowedKeyManagement.cardinality() != 0 &&
@@ -1354,6 +1371,24 @@ class WifiConfigStore {
}
}
+ value = mWifiNative.getNetworkVariable(netId, WifiConfiguration.modeVarName);
+ config.isIBSS = false;
+ if (!TextUtils.isEmpty(value)) {
+ try {
+ config.isIBSS = Integer.parseInt(value) != 0;
+ } catch (NumberFormatException ignore) {
+ }
+ }
+
+ value = mWifiNative.getNetworkVariable(netId, WifiConfiguration.frequencyVarName);
+ config.frequency = 0;
+ if (!TextUtils.isEmpty(value)) {
+ try {
+ config.frequency = Integer.parseInt(value);
+ } catch (NumberFormatException ignore) {
+ }
+ }
+
value = mWifiNative.getNetworkVariable(netId, WifiConfiguration.wepTxKeyIdxVarName);
config.wepTxKeyIndex = -1;
if (!TextUtils.isEmpty(value)) {
diff --git a/wifi/java/android/net/wifi/WifiConfiguration.java b/wifi/java/android/net/wifi/WifiConfiguration.java
index c4fe1b4..162862b 100644
--- a/wifi/java/android/net/wifi/WifiConfiguration.java
+++ b/wifi/java/android/net/wifi/WifiConfiguration.java
@@ -77,6 +77,10 @@ public class WifiConfiguration implements Parcelable {
/** {@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 int INVALID_NETWORK_ID = -1;
/** {@hide} */
@@ -327,6 +331,18 @@ public class WifiConfiguration implements Parcelable {
*/
public boolean hiddenSSID;
+ /**
+ * This is an Ad-Hoc (IBSS) network
+ * {@hide}
+ */
+ public boolean isIBSS;
+
+ /**
+ * Frequency of the Ad-Hoc (IBSS) network, if newly created
+ * {@hide}
+ */
+ public int frequency;
+
/**
* The set of key management protocols supported by this configuration.
* See {@link KeyMgmt} for descriptions of the values.
@@ -405,6 +421,8 @@ public class WifiConfiguration implements Parcelable {
BSSID = null;
priority = 0;
hiddenSSID = false;
+ isIBSS = false;
+ frequency = 0;
disableReason = DISABLED_UNKNOWN_REASON;
allowedKeyManagement = new BitSet();
allowedProtocols = new BitSet();
@@ -600,6 +618,8 @@ public class WifiConfiguration implements Parcelable {
wepTxKeyIndex = source.wepTxKeyIndex;
priority = source.priority;
hiddenSSID = source.hiddenSSID;
+ isIBSS = source.isIBSS;
+ frequency = source.frequency;
allowedKeyManagement = (BitSet) source.allowedKeyManagement.clone();
allowedProtocols = (BitSet) source.allowedProtocols.clone();
allowedAuthAlgorithms = (BitSet) source.allowedAuthAlgorithms.clone();
@@ -628,6 +648,8 @@ public class WifiConfiguration implements Parcelable {
dest.writeInt(wepTxKeyIndex);
dest.writeInt(priority);
dest.writeInt(hiddenSSID ? 1 : 0);
+ dest.writeInt(isIBSS ? 1 : 0);
+ dest.writeInt(frequency);
writeBitSet(dest, allowedKeyManagement);
writeBitSet(dest, allowedProtocols);
@@ -659,6 +681,8 @@ public class WifiConfiguration implements Parcelable {
config.wepTxKeyIndex = in.readInt();
config.priority = in.readInt();
config.hiddenSSID = in.readInt() != 0;
+ config.isIBSS = in.readInt() != 0;
+ config.frequency = in.readInt();
config.allowedKeyManagement = readBitSet(in);
config.allowedProtocols = readBitSet(in);
config.allowedAuthAlgorithms = readBitSet(in);