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

Commit 7cc9593e authored by Petr Havlena's avatar Petr Havlena Committed by Steve Kondik
Browse files

add adhoc support into android framework

Change-Id: Ief7dc45901a74fa6c3c3b33cb51c3e8e65169796
parent 0128a783
Loading
Loading
Loading
Loading
+183 −0
Original line number Diff line number Diff line
@@ -98703,6 +98703,16 @@
 visibility="public"
>
</field>
<field name="adhocSSID"
 type="boolean"
 transient="false"
 volatile="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="allowedAuthAlgorithms"
 type="java.util.BitSet"
 transient="false"
@@ -98753,6 +98763,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"
@@ -98889,6 +98909,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"
+0 −2
Original line number Diff line number Diff line
@@ -454,8 +454,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");
}

+59 −1
Original line number Diff line number Diff line
@@ -94,7 +94,7 @@ import com.android.internal.R;
 */
public class WifiService extends IWifiManager.Stub {
    private static final String TAG = "WifiService";
    private static final boolean DBG = false;
    private static final boolean DBG = true;
    private static final Pattern scanResultPattern = Pattern.compile("\t+");
    private final WifiStateTracker mWifiStateTracker;
    /* TODO: fetch a configurable interface */
@@ -905,6 +905,15 @@ public class WifiService extends IWifiManager.Stub {
            }
        }

        value = mWifiStateTracker.getNetworkVariable(netId, WifiConfiguration.modeVarName);
        config.adhocSSID = false;
        if (!TextUtils.isEmpty(value)) {
            try {
                config.adhocSSID = Integer.parseInt(value) != 0;
            } catch (NumberFormatException ignore) {
            }
        }

        value = mWifiStateTracker.getNetworkVariable(netId, WifiConfiguration.wepTxKeyIdxVarName);
        config.wepTxKeyIndex = -1;
        if (!TextUtils.isEmpty(value)) {
@@ -1083,6 +1092,55 @@ public class WifiService extends IWifiManager.Stub {
                break setVariables;
            }

            if(config.adhocSSID) {
                if (DBG) {
                    Slog.d(TAG, "setting adhoc network");
                }
                //Set Adhoc Mode
                if (!mWifiStateTracker.setNetworkVariable(
                        netId,
                        WifiConfiguration.modeVarName,
                        config.modeAdhoc)) {
                    if (DBG) {
                        Slog.d(TAG, "failed to set adhoc mode: " + config.adhocSSID);
                    }
                    break setVariables;
                }

                String frequency;
                if (config.frequency != 0) {
                    frequency = Integer.toString(config.frequency);
                } else {
                    //Default to channel 11
                    frequency = Integer.toString(WifiConfiguration.ChannelFrequency.CHANNEL_11);
                }

                //Set frequency
                if (!mWifiStateTracker.setNetworkVariable(
                        netId,
                        WifiConfiguration.frequencyVarName,
                        frequency)) {
                    if (DBG) {
                        Slog.d(TAG, "failed to set frequency: " + frequency);
                    }
                    break setVariables;
                }
            } else {
                if (DBG) {
                    Slog.d(TAG, "setting non adhoc network");
                }
                //Set Infrastructure Mode
                if (!mWifiStateTracker.setNetworkVariable(
                        netId,
                        WifiConfiguration.modeVarName,
                        config.modeInfrastructure)) {
                    if (DBG) {
                        Slog.d(TAG, "failed to set infrastructure mode: " + config.adhocSSID);
                    }
                    break setVariables;
                }
            }

            String allowedKeyManagementString =
                makeString(config.allowedKeyManagement, WifiConfiguration.KeyMgmt.strings);
            if (config.allowedKeyManagement.cardinality() != 0 &&
+52 −0
Original line number Diff line number Diff line
@@ -42,6 +42,41 @@ 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 {
@@ -263,6 +298,17 @@ public class WifiConfiguration implements Parcelable {
     */
    public boolean hiddenSSID;

    /**
     * This is a adhoc network
     */
    public boolean adhocSSID;

    /**
     * If the signal is Adhoc, then frequency must be set
     * otherwise, we don't care what the frequency is
     */
    public int frequency;

    /**
     * The set of key management protocols supported by this configuration.
     * See {@link KeyMgmt} for descriptions of the values.
@@ -300,6 +346,8 @@ public class WifiConfiguration implements Parcelable {
        SSID = null;
        BSSID = null;
        priority = 0;
        frequency = 0;
        adhocSSID = false;
        hiddenSSID = false;
        allowedKeyManagement = new BitSet();
        allowedProtocols = new BitSet();
@@ -444,6 +492,8 @@ public class WifiConfiguration implements Parcelable {
        dest.writeInt(wepTxKeyIndex);
        dest.writeInt(priority);
        dest.writeInt(hiddenSSID ? 1 : 0);
        dest.writeInt(adhocSSID ? 1 : 0);
        dest.writeInt(frequency);

        writeBitSet(dest, allowedKeyManagement);
        writeBitSet(dest, allowedProtocols);
@@ -471,6 +521,8 @@ public class WifiConfiguration implements Parcelable {
                config.wepTxKeyIndex = in.readInt();
                config.priority = in.readInt();
                config.hiddenSSID = in.readInt() != 0;
                config.adhocSSID = in.readInt() != 0;
                config.frequency = in.readInt();
                config.allowedKeyManagement   = readBitSet(in);
                config.allowedProtocols       = readBitSet(in);
                config.allowedAuthAlgorithms  = readBitSet(in);