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

Commit 463aacfb authored by Android (Google) Code Review's avatar Android (Google) Code Review
Browse files

Merge change 6661 into donut

* changes:
  wifi: WifiManager.startScan() will now do passive scans by default.
parents be91fdbc a5ec95cd
Loading
Loading
Loading
Loading
+16 −12
Original line number Diff line number Diff line
@@ -27,6 +27,8 @@

namespace android {

static jboolean sScanModeActive = false;

/*
 * The following remembers the jfieldID's of the fields
 * of the DhcpInfo Java object, so that we don't have
@@ -254,27 +256,29 @@ static jboolean android_net_wifi_reassociateCommand(JNIEnv* env, jobject clazz)
    return doBooleanCommand("REASSOCIATE", "OK");
}

static jboolean android_net_wifi_scanCommand(JNIEnv* env, jobject clazz)
static jboolean doSetScanMode(jboolean setActive)
{
    return doBooleanCommand((setActive ? "DRIVER SCAN-ACTIVE" : "DRIVER SCAN-PASSIVE"), "OK");
}

static jboolean android_net_wifi_scanCommand(JNIEnv* env, jobject clazz, jboolean forceActive)
{
    jboolean result;

    // Ignore any error from setting the scan mode.
    // The scan will still work.
    (void)doBooleanCommand("DRIVER SCAN-ACTIVE", "OK");
    if (forceActive && !sScanModeActive)
        doSetScanMode(true);
    result = doBooleanCommand("SCAN", "OK");
    (void)doBooleanCommand("DRIVER SCAN-PASSIVE", "OK");
    if (forceActive && !sScanModeActive)
        doSetScanMode(sScanModeActive);
    return result;
}

static jboolean android_net_wifi_setScanModeCommand(JNIEnv* env, jobject clazz, jboolean setActive)
{
    jboolean result;
    // Ignore any error from setting the scan mode.
    // The scan will still work.
    if (setActive) {
        return doBooleanCommand("DRIVER SCAN-ACTIVE", "OK");
    } else {
        return doBooleanCommand("DRIVER SCAN-PASSIVE", "OK");
    }
    sScanModeActive = setActive;
    return doSetScanMode(setActive);
}

static jboolean android_net_wifi_startDriverCommand(JNIEnv* env, jobject clazz)
@@ -509,7 +513,7 @@ static JNINativeMethod gWifiMethods[] = {
    { "disconnectCommand", "()Z",  (void *)android_net_wifi_disconnectCommand },
    { "reconnectCommand", "()Z",  (void *)android_net_wifi_reconnectCommand },
    { "reassociateCommand", "()Z",  (void *)android_net_wifi_reassociateCommand },
    { "scanCommand", "()Z", (void*) android_net_wifi_scanCommand },
    { "scanCommand", "(Z)Z", (void*) android_net_wifi_scanCommand },
    { "setScanModeCommand", "(Z)Z", (void*) android_net_wifi_setScanModeCommand },
    { "startDriverCommand", "()Z", (void*) android_net_wifi_startDriverCommand },
    { "stopDriverCommand", "()Z", (void*) android_net_wifi_stopDriverCommand },
+2 −2
Original line number Diff line number Diff line
@@ -436,7 +436,7 @@ public class WifiService extends IWifiManager.Stub {
     * see {@link android.net.wifi.WifiManager#startScan()}
     * @return {@code true} if the operation succeeds
     */
    public boolean startScan() {
    public boolean startScan(boolean forceActive) {
        enforceChangePermission();
        synchronized (mWifiStateTracker) {
            switch (mWifiStateTracker.getSupplicantState()) {
@@ -450,7 +450,7 @@ public class WifiService extends IWifiManager.Stub {
                            WifiStateTracker.SUPPL_SCAN_HANDLING_LIST_ONLY);
                    break;
            }
            return WifiNative.scanCommand();
            return WifiNative.scanCommand(forceActive);
        }
    }

+1 −1
Original line number Diff line number Diff line
@@ -40,7 +40,7 @@ interface IWifiManager

    boolean pingSupplicant();

    boolean startScan();
    boolean startScan(boolean forceActive);

    List<ScanResult> getScanResults();

+20 −2
Original line number Diff line number Diff line
@@ -478,7 +478,25 @@ public class WifiManager {
     */
    public boolean startScan() {
        try {
            return mService.startScan();
            return mService.startScan(false);
        } catch (RemoteException e) {
            return false;
        }
    }

    /**
     * Request a scan for access points. Returns immediately. The availability
     * of the results is made known later by means of an asynchronous event sent
     * on completion of the scan.
     * This is a variant of startScan that forces an active scan, even if passive
     * scans are the current default
     * @return {@code true} if the operation succeeded, i.e., the scan was initiated
     *
     * @hide
     */
    public boolean startScanActive() {
        try {
            return mService.startScan(true);
        } catch (RemoteException e) {
            return false;
        }
+1 −1
Original line number Diff line number Diff line
@@ -51,7 +51,7 @@ public class WifiNative {

    public native static boolean pingCommand();

    public native static boolean scanCommand();
    public native static boolean scanCommand(boolean forceActive);
    
    public native static boolean setScanModeCommand(boolean setActive);

Loading