Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3dc4364a authored by Bruno Randolf's avatar Bruno Randolf Committed by Ricardo Cerqueira
Browse files

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
parent d05093f9
Loading
Loading
Loading
Loading
+35 −0
Original line number Diff line number Diff line
@@ -1116,6 +1116,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 &&
@@ -1494,6 +1511,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)) {
+24 −0
Original line number Diff line number Diff line
@@ -44,6 +44,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;
    /**
     * Recognized key management schemes.
@@ -246,6 +250,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.
@@ -332,6 +348,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();
@@ -593,6 +611,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();
@@ -621,6 +641,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);
@@ -652,6 +674,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);