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

Commit d717442d authored by Jack Yu's avatar Jack Yu
Browse files

Considered network preference when simulating legacy data RAT

Correctly supported the legacy data RAT when both cellular
and IWLAN are in service. In this case only report
RAT as IWLAN when any type of APN is preferred on IWLAN.
Otherwise still use the RAT reported by cellular network
service.

Bug: 133516945
Test: Manual

Merged-In: Id53b018baed1f0f1dc1b959fbf3a857deeee37f1
Change-Id: Id53b018baed1f0f1dc1b959fbf3a857deeee37f1
(cherry picked from commit a3775424)
parent 4d38939d
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -1995,11 +1995,16 @@ public class ServiceStateTracker extends Handler {
                NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WLAN);
        NetworkRegistrationInfo wwanPsRegState = serviceState.getNetworkRegistrationInfo(
                NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);

        // Check if any APN is preferred on IWLAN.
        boolean isIwlanPreferred = mTransportManager.isAnyApnPreferredOnIwlan();
        serviceState.setIwlanPreferred(isIwlanPreferred);
        if (wlanPsRegState != null
                && wlanPsRegState.getAccessNetworkTechnology()
                == TelephonyManager.NETWORK_TYPE_IWLAN
                && wlanPsRegState.getRegistrationState()
                == NetworkRegistrationInfo.REGISTRATION_STATE_HOME) {
                == NetworkRegistrationInfo.REGISTRATION_STATE_HOME
                && isIwlanPreferred) {
            serviceState.setDataRegState(ServiceState.STATE_IN_SERVICE);
        } else if (wwanPsRegState != null) {
            // If the device is not camped on IWLAN, then we use cellular PS registration state
+15 −0
Original line number Diff line number Diff line
@@ -423,6 +423,21 @@ public class TransportManager extends Handler {
                ? AccessNetworkConstants.TRANSPORT_TYPE_WWAN : mCurrentTransports.get(apnType);
    }

    /**
     * Check if there is any APN type of network preferred on IWLAN.
     *
     * @return {@code true} if there is any APN preferred on IWLAN, otherwise {@code false}.
     */
    public boolean isAnyApnPreferredOnIwlan() {
        for (int i = 0; i < mCurrentAvailableNetworks.size(); i++) {
            int[] networkList = mCurrentAvailableNetworks.valueAt(i);
            if (networkList.length > 0 && networkList[0] == AccessNetworkType.IWLAN) {
                return true;
            }
        }
        return false;
    }

    /**
     * Register for data handover needed event
     *