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

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

add adhoc support into android framework

parent a1b6b608
Loading
Loading
Loading
Loading
+183 −0
Original line number Diff line number Diff line
@@ -92324,6 +92324,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"
@@ -92374,6 +92384,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"
@@ -92510,6 +92530,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
@@ -423,8 +423,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
@@ -93,7 +93,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 */
@@ -902,6 +902,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)) {
@@ -1080,6 +1089,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);