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

Commit 7692bb21 authored by xin He's avatar xin He Committed by Android (Google) Code Review
Browse files

Merge "Initial codes for Quality network selection"

parents f577d79e f7705c3e
Loading
Loading
Loading
Loading
+14 −10
Original line number Diff line number Diff line
@@ -413,22 +413,26 @@
    <!-- Boolean indicating whether or not wifi firmware debugging is enabled -->
    <bool translatable="false" name="config_wifi_enable_wifi_firmware_debugging">true</bool>

    <!-- Integer specifying the basic autojoin parameters -->
    <!-- Integer specifying the basic Quality Network Selection parameters -->
    <integer translatable="false" name="config_wifi_framework_5GHz_preference_boost_threshold">-65</integer>
    <integer translatable="false" name="config_wifi_framework_5GHz_preference_boost_factor">5</integer>
    <integer translatable="false" name="config_wifi_framework_5GHz_preference_boost_factor">40</integer>
    <integer translatable="false" name="config_wifi_framework_current_association_hysteresis_high">16</integer>
    <integer translatable="false" name="config_wifi_framework_current_association_hysteresis_low">10</integer>
    <integer translatable="false" name="config_wifi_framework_5GHz_preference_penalty_threshold">-75</integer>
    <integer translatable="false" name="config_wifi_framework_5GHz_preference_penalty_factor">2</integer>

    <integer translatable="false" name="config_wifi_framework_RSSI_SCORE_OFFSET">85</integer>
    <integer translatable="false" name="config_wifi_framework_RSSI_SCORE_SLOPE">4</integer>
    <integer translatable="false" name="config_wifi_framework_SAME_BSSID_AWARD">24</integer>
    <integer translatable="false" name="config_wifi_framework_LAST_SELECTION_AWARD">480</integer>
    <integer translatable="false" name="config_wifi_framework_PASSPOINT_SECURITY_AWARD">40</integer>
    <integer translatable="false" name="config_wifi_framework_SECURITY_AWARD">80</integer>
    <!-- Integer parameters of the wifi to cellular handover feature
         wifi should not stick to bad networks -->
    <integer translatable="false" name="config_wifi_framework_wifi_score_bad_rssi_threshold_5GHz">-82</integer>
    <integer translatable="false" name="config_wifi_framework_wifi_score_low_rssi_threshold_5GHz">-72</integer>
    <integer translatable="false" name="config_wifi_framework_wifi_score_good_rssi_threshold_5GHz">-60</integer>
    <integer translatable="false" name="config_wifi_framework_wifi_score_bad_rssi_threshold_24GHz">-87</integer>
    <integer translatable="false" name="config_wifi_framework_wifi_score_low_rssi_threshold_24GHz">-77</integer>
    <integer translatable="false" name="config_wifi_framework_wifi_score_good_rssi_threshold_24GHz">-65</integer>
    <integer translatable="false" name="config_wifi_framework_wifi_score_low_rssi_threshold_5GHz">-70</integer>
    <integer translatable="false" name="config_wifi_framework_wifi_score_good_rssi_threshold_5GHz">-57</integer>
    <integer translatable="false" name="config_wifi_framework_wifi_score_bad_rssi_threshold_24GHz">-85</integer>
    <integer translatable="false" name="config_wifi_framework_wifi_score_low_rssi_threshold_24GHz">-73</integer>
    <integer translatable="false" name="config_wifi_framework_wifi_score_good_rssi_threshold_24GHz">-60</integer>
    <integer translatable="false" name="config_wifi_framework_wifi_score_bad_link_speed_24">6</integer>
    <integer translatable="false" name="config_wifi_framework_wifi_score_bad_link_speed_5">12</integer>
    <integer translatable="false" name="config_wifi_framework_wifi_score_good_link_speed_24">24</integer>
@@ -502,7 +506,7 @@
    <integer translatable="false" name="config_wifi_framework_network_black_list_min_time_milli">120000</integer>

    <!-- Integer indicating RSSI boost given to current network -->
    <integer translatable="false" name="config_wifi_framework_current_network_boost">25</integer>
    <integer translatable="false" name="config_wifi_framework_current_network_boost">16</integer>

    <!-- Integer indicating how to handle beacons with uninitialized RSSI value of 0 -->
    <integer translatable="false" name="config_wifi_framework_scan_result_rssi_level_patchup_value">-85</integer>
+6 −1
Original line number Diff line number Diff line
@@ -310,7 +310,12 @@
  <java-symbol type="integer" name="config_wifi_framework_current_association_hysteresis_high" />
  <java-symbol type="integer" name="config_wifi_framework_current_association_hysteresis_low" />
  <java-symbol type="integer" name="config_wifi_framework_5GHz_preference_penalty_threshold" />
  <java-symbol type="integer" name="config_wifi_framework_5GHz_preference_penalty_factor" />
  <java-symbol type="integer" name="config_wifi_framework_RSSI_SCORE_OFFSET" />
  <java-symbol type="integer" name="config_wifi_framework_RSSI_SCORE_SLOPE" />
  <java-symbol type="integer" name="config_wifi_framework_SAME_BSSID_AWARD" />
  <java-symbol type="integer" name="config_wifi_framework_LAST_SELECTION_AWARD" />
  <java-symbol type="integer" name="config_wifi_framework_PASSPOINT_SECURITY_AWARD" />
  <java-symbol type="integer" name="config_wifi_framework_SECURITY_AWARD" />
  <java-symbol type="integer" name="config_wifi_disconnected_short_scan_interval" />
  <java-symbol type="integer" name="config_wifi_disconnected_long_scan_interval" />
  <java-symbol type="integer" name="config_wifi_associated_short_scan_interval" />
+30 −59
Original line number Diff line number Diff line
@@ -394,34 +394,21 @@ public class AccessPoint implements Comparable<AccessPoint> {
            summary.append(String.format(format, mConfig.providerFriendlyName));
        } else if (mConfig != null && mConfig.hasNoInternetAccess()) {
            summary.append(mContext.getString(R.string.wifi_no_internet));
        } else if (mConfig != null && ((mConfig.status == WifiConfiguration.Status.DISABLED &&
                mConfig.disableReason != WifiConfiguration.DISABLED_UNKNOWN_REASON)
               || mConfig.autoJoinStatus
                >= WifiConfiguration.AUTO_JOIN_DISABLED_ON_AUTH_FAILURE)) {
            if (mConfig.autoJoinStatus
                    >= WifiConfiguration.AUTO_JOIN_DISABLED_ON_AUTH_FAILURE) {
                if (mConfig.disableReason == WifiConfiguration.DISABLED_DHCP_FAILURE) {
                    summary.append(mContext.getString(R.string.wifi_disabled_network_failure));
                } else if (mConfig.disableReason == WifiConfiguration.DISABLED_AUTH_FAILURE) {
                    summary.append(mContext.getString(R.string.wifi_disabled_password_failure));
                } else {
                    summary.append(mContext.getString(R.string.wifi_disabled_wifi_failure));
                }
            } else {
                switch (mConfig.disableReason) {
                    case WifiConfiguration.DISABLED_AUTH_FAILURE:
        } else if (mConfig != null && !mConfig.getNetworkSelectionStatus().isNetworkEnabled()) {
            WifiConfiguration.NetworkSelectionStatus networkStatus =
                    mConfig.getNetworkSelectionStatus();
            switch (networkStatus.getNetworkSelectionDisableReason()) {
                case WifiConfiguration.NetworkSelectionStatus.DISABLED_AUTHENTICATION_FAILURE:
                    summary.append(mContext.getString(R.string.wifi_disabled_password_failure));
                    break;
                    case WifiConfiguration.DISABLED_DHCP_FAILURE:
                    case WifiConfiguration.DISABLED_DNS_FAILURE:
                case WifiConfiguration.NetworkSelectionStatus.DISABLED_DHCP_FAILURE:
                case WifiConfiguration.NetworkSelectionStatus.DISABLED_DNS_FAILURE:
                    summary.append(mContext.getString(R.string.wifi_disabled_network_failure));
                    break;
                    case WifiConfiguration.DISABLED_UNKNOWN_REASON:
                    case WifiConfiguration.DISABLED_ASSOCIATION_REJECT:
                case WifiConfiguration.NetworkSelectionStatus.DISABLED_ASSOCIATION_REJECTION:
                    summary.append(mContext.getString(R.string.wifi_disabled_generic));
                    break;
            }
            }
        } else if (mRssi == Integer.MAX_VALUE) { // Wifi out of range
            summary.append(mContext.getString(R.string.wifi_not_in_range));
        } else { // In range, not disabled.
@@ -437,11 +424,11 @@ public class AccessPoint implements Comparable<AccessPoint> {
                summary.append(" f=" + Integer.toString(mInfo.getFrequency()));
            }
            summary.append(" " + getVisibilityStatus());
            if (mConfig != null && mConfig.autoJoinStatus > 0) {
                summary.append(" (" + mConfig.autoJoinStatus);
                if (mConfig.blackListTimestamp > 0) {
            if (mConfig != null && !mConfig.getNetworkSelectionStatus().isNetworkEnabled()) {
                summary.append(" (" + mConfig.getNetworkSelectionStatus().getNetworkStatusString());
                if (mConfig.getNetworkSelectionStatus().getDisableTime() > 0) {
                    long now = System.currentTimeMillis();
                    long diff = (now - mConfig.blackListTimestamp)/1000;
                    long diff = (now - mConfig.getNetworkSelectionStatus().getDisableTime()) / 1000;
                    long sec = diff%60; //seconds
                    long min = (diff/60)%60; //minutes
                    long hour = (min/60)%60; //hours
@@ -452,17 +439,19 @@ public class AccessPoint implements Comparable<AccessPoint> {
                }
                summary.append(")");
            }
            if (mConfig != null && mConfig.numIpConfigFailures > 0) {
                summary.append(" ipf=").append(mConfig.numIpConfigFailures);
            }
            if (mConfig != null && mConfig.numConnectionFailures > 0) {
                summary.append(" cf=").append(mConfig.numConnectionFailures);

            if (mConfig != null) {
                WifiConfiguration.NetworkSelectionStatus networkStatus =
                        mConfig.getNetworkSelectionStatus();
                for (int index = WifiConfiguration.NetworkSelectionStatus.NETWORK_SELECTION_ENABLE;
                        index < WifiConfiguration.NetworkSelectionStatus
                        .NETWORK_SELECTION_DISABLED_MAX; index++) {
                    if (networkStatus.getDisableReasonCounter(index) != 0) {
                        summary.append(" " + WifiConfiguration.NetworkSelectionStatus
                                .getNetworkDisableReasonString(index) + "="
                                + networkStatus.getDisableReasonCounter(index));
                    }
            if (mConfig != null && mConfig.numAuthFailures > 0) {
                summary.append(" authf=").append(mConfig.numAuthFailures);
                }
            if (mConfig != null && mConfig.numNoInternetAccessReports > 0) {
                summary.append(" noInt=").append(mConfig.numNoInternetAccessReports);
            }
        }
        return summary.toString();
@@ -508,10 +497,6 @@ public class AccessPoint implements Comparable<AccessPoint> {
        Map<String, ScanResult> list = mScanResultCache.snapshot();
        // TODO: sort list by RSSI or age
        for (ScanResult result : list.values()) {
            if (result.seen == 0)
                continue;

            if (result.autoJoinStatus != ScanResult.ENABLED) numBlackListed++;

            if (result.frequency >= LOWER_FREQ_5GHZ
                    && result.frequency <= HIGHER_FREQ_5GHZ) {
@@ -525,8 +510,6 @@ public class AccessPoint implements Comparable<AccessPoint> {
                num24 = num24 + 1;
            }

            // Ignore results seen, older than 20 seconds
            if (now - result.seen > VISIBILITY_OUTDATED_AGE_IN_MILLI) continue;

            if (result.frequency >= LOWER_FREQ_5GHZ
                    && result.frequency <= HIGHER_FREQ_5GHZ) {
@@ -539,12 +522,6 @@ public class AccessPoint implements Comparable<AccessPoint> {
                    if (bssid != null && result.BSSID.equals(bssid)) scans5GHz.append("*");
                    scans5GHz.append("=").append(result.frequency);
                    scans5GHz.append(",").append(result.level);
                    if (result.autoJoinStatus != 0) {
                        scans5GHz.append(",st=").append(result.autoJoinStatus);
                    }
                    if (result.numIpConfigFailures != 0) {
                        scans5GHz.append(",ipf=").append(result.numIpConfigFailures);
                    }
                    scans5GHz.append("}");
                    n5++;
                }
@@ -559,12 +536,6 @@ public class AccessPoint implements Comparable<AccessPoint> {
                    if (bssid != null && result.BSSID.equals(bssid)) scans24GHz.append("*");
                    scans24GHz.append("=").append(result.frequency);
                    scans24GHz.append(",").append(result.level);
                    if (result.autoJoinStatus != 0) {
                        scans24GHz.append(",st=").append(result.autoJoinStatus);
                    }
                    if (result.numIpConfigFailures != 0) {
                        scans24GHz.append(",ipf=").append(result.numIpConfigFailures);
                    }
                    scans24GHz.append("}");
                    n24++;
                }
+36 −19
Original line number Diff line number Diff line
@@ -48,6 +48,23 @@ public class WiFiConfigurationSerializer {
     */
    private static int STATE_VERSION = 1;

    /**
     * write the Network selecton status to Byte Array
     */
    private static void writeNetworkSelectionStatus(WifiConfiguration config, DataOutputStream dest)
            throws IOException {
        WifiConfiguration.NetworkSelectionStatus status = config.getNetworkSelectionStatus();

        dest.writeInt(status.getNetworkSelectionStatus());
        dest.writeInt(status.getNetworkSelectionDisableReason());
        for (int index = WifiConfiguration.NetworkSelectionStatus.NETWORK_SELECTION_ENABLE;
                index < WifiConfiguration.NetworkSelectionStatus.NETWORK_SELECTION_DISABLED_MAX;
                index++) {
            dest.writeInt(status.getDisableReasonCounter(index));
        }
        dest.writeLong(status.getDisableTime());
        writeString(dest, status.getNetworkSelectionBSSID());
    }

    /**
     * Marshals a WifiConfig object into a byte-array.
@@ -64,12 +81,11 @@ public class WiFiConfigurationSerializer {
                out.writeInt(STATE_VERSION);
                out.writeInt(wifiConfig.networkId);
                out.writeInt(wifiConfig.status);
                out.writeInt(wifiConfig.disableReason);
                writeNetworkSelectionStatus(wifiConfig, out);
                writeString(out, wifiConfig.SSID);
                writeString(out, wifiConfig.BSSID);
                out.writeInt(wifiConfig.apBand);
                out.writeInt(wifiConfig.apChannel);
                writeString(out, wifiConfig.autoJoinBSSID);
                writeString(out, wifiConfig.FQDN);
                writeString(out, wifiConfig.providerFriendlyName);
                out.writeInt(wifiConfig.roamingConsortiumIds.length);
@@ -98,7 +114,6 @@ public class WiFiConfigurationSerializer {

                writeString(out, wifiConfig.dhcpServer);
                writeString(out, wifiConfig.defaultGwMacAddress);
                out.writeInt(wifiConfig.autoJoinStatus);
                out.writeInt(wifiConfig.selfAdded ? 1 : 0);
                out.writeInt(wifiConfig.didSelfAdd ? 1 : 0);
                out.writeInt(wifiConfig.validatedInternetAccess ? 1 : 0);
@@ -108,14 +123,9 @@ public class WiFiConfigurationSerializer {
                out.writeInt(wifiConfig.lastUpdateUid);
                writeString(out, wifiConfig.creatorName);
                writeString(out, wifiConfig.lastUpdateName);
                out.writeLong(wifiConfig.blackListTimestamp);
                out.writeLong(wifiConfig.lastConnectionFailure);
                out.writeLong(wifiConfig.lastRoamingFailure);
                out.writeInt(wifiConfig.lastRoamingFailureReason);
                out.writeLong(wifiConfig.roamingFailureBlackListTimeMilli);
                out.writeLong(wifiConfig.numConnectionFailures);
                out.writeLong(wifiConfig.numIpConfigFailures);
                out.writeInt(wifiConfig.numAuthFailures);
                out.writeInt(wifiConfig.numScorerOverride);
                out.writeInt(wifiConfig.numScorerOverrideAndSwitchedNetwork);
                out.writeInt(wifiConfig.numAssociation);
@@ -126,8 +136,6 @@ public class WiFiConfigurationSerializer {
                out.writeInt(wifiConfig.numTicksAtBadRSSI);
                out.writeInt(wifiConfig.numTicksAtNotHighRSSI);
                out.writeInt(wifiConfig.numUserTriggeredJoinAttempts);
                out.writeInt(wifiConfig.autoJoinUseAggressiveJoinAttemptThreshold);
                out.writeInt(wifiConfig.autoJoinBailedDueToLowRssi ? 1 : 0);
                out.writeInt(wifiConfig.userApproved);
                out.writeInt(wifiConfig.numNoInternetAccessReports);
                out.writeInt(wifiConfig.noInternetAccessExpected ? 1 : 0);
@@ -139,6 +147,23 @@ public class WiFiConfigurationSerializer {
        return baos.toByteArray();
    }

    /**
     *
     */
    private static void readNetworkSelectionStatusFromByteArray(DataInputStream in,
            WifiConfiguration config, int version) throws IOException {
        WifiConfiguration.NetworkSelectionStatus status = config.getNetworkSelectionStatus();
        status.setNetworkSelectionStatus(in.readInt());
        status.setNetworkSelectionDisableReason(in.readInt());
        for (int index = WifiConfiguration.NetworkSelectionStatus.NETWORK_SELECTION_ENABLE;
                index < WifiConfiguration.NetworkSelectionStatus.NETWORK_SELECTION_DISABLED_MAX;
                index++) {
            status.setDisableReasonCounter(index, in.readInt());
        }
        status.setDisableTime(in.readLong());
        status.setNetworkSelectionBSSID(readString(in, version));
    }

    /**
     * Unmarshals a byte array into a WifiConfig Object
     *
@@ -157,12 +182,11 @@ public class WiFiConfigurationSerializer {

            config.networkId = in.readInt();
            config.status = in.readInt();
            config.disableReason = in.readInt();
            readNetworkSelectionStatusFromByteArray(in, config, version);
            config.SSID = readString(in, version);
            config.BSSID = readString(in, version);
            config.apBand = in.readInt();
            config.apChannel = in.readInt();
            config.autoJoinBSSID = readString(in, version);
            config.FQDN = readString(in, version);
            config.providerFriendlyName = readString(in, version);
            int numRoamingConsortiumIds = in.readInt();
@@ -195,7 +219,6 @@ public class WiFiConfigurationSerializer {

            config.dhcpServer = readString(in, version);
            config.defaultGwMacAddress = readString(in, version);
            config.autoJoinStatus = in.readInt();
            config.selfAdded = in.readInt() != 0;
            config.didSelfAdd = in.readInt() != 0;
            config.validatedInternetAccess = in.readInt() != 0;
@@ -205,14 +228,10 @@ public class WiFiConfigurationSerializer {
            config.lastUpdateUid = in.readInt();
            config.creatorName = readString(in, version);
            config.lastUpdateName = readString(in, version);
            config.blackListTimestamp = in.readLong();
            config.lastConnectionFailure = in.readLong();
            config.lastRoamingFailure = in.readLong();
            config.lastRoamingFailureReason = in.readInt();
            config.roamingFailureBlackListTimeMilli = in.readLong();
            config.numConnectionFailures = in.readInt();
            config.numIpConfigFailures = in.readInt();
            config.numAuthFailures = in.readInt();
            config.numScorerOverride = in.readInt();
            config.numScorerOverrideAndSwitchedNetwork = in.readInt();
            config.numAssociation = in.readInt();
@@ -223,8 +242,6 @@ public class WiFiConfigurationSerializer {
            config.numTicksAtBadRSSI = in.readInt();
            config.numTicksAtNotHighRSSI = in.readInt();
            config.numUserTriggeredJoinAttempts = in.readInt();
            config.autoJoinUseAggressiveJoinAttemptThreshold = in.readInt();
            config.autoJoinBailedDueToLowRssi = in.readInt() != 0;
            config.userApproved = in.readInt();
            config.numNoInternetAccessReports = in.readInt();
            config.noInternetAccessExpected = in.readInt() != 0;
+396 −259

File changed.

Preview size limit exceeded, changes collapsed.