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

Commit b77f6a19 authored by Drew Jacobs's avatar Drew Jacobs Committed by Steve Kondik
Browse files

Changes to enable Adhoc wifi connection.

parent 687642e0
Loading
Loading
Loading
Loading
+196 −0
Original line number Diff line number Diff line
@@ -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"
@@ -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"
@@ -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"
@@ -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"
+0 −2
Original line number Diff line number Diff line
@@ -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");
}

+63 −0
Original line number Diff line number Diff line
@@ -234,6 +234,7 @@ public class WifiService extends IWifiManager.Stub {
        setWifiEnabledBlocking(wifiEnabled, false, Process.myUid());
    }
      

    private boolean getPersistedWifiEnabled() {
        final ContentResolver cr = mContext.getContentResolver();
        try {
@@ -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
@@ -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)) {
@@ -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 &&
+2 −0
Original line number Diff line number Diff line
@@ -44,6 +44,8 @@ interface IWifiManager

    List<ScanResult> getScanResults();
    
    boolean setAdhocMode(boolean adhoc);

    boolean disconnect();

    boolean reconnect();
+57 −2
Original line number Diff line number Diff line
@@ -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 {
@@ -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();
@@ -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);
@@ -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