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

Commit 8e80fd44 authored by Yong Zhang's avatar Yong Zhang Committed by Wink Saville
Browse files

Add the condition check of ERI for CDMA roaming.

With this fix, phone will not show that it is roaming
when it is not, and there is no need to enable the
"Data Roaming" in order to get the data to work.
parent fca3ae15
Loading
Loading
Loading
Loading
+31 −1
Original line number Diff line number Diff line
@@ -592,7 +592,10 @@ final class CdmaServiceStateTracker extends ServiceStateTracker {
                }

                mRegistrationState = registrationState;
                mCdmaRoaming = regCodeIsRoaming(registrationState);
                // mCdmaRoaming is true when registration state is roaming and TSB58 roaming
                // indicator is not in the carrier-specified list of ERIs for home system
                mCdmaRoaming =
                        regCodeIsRoaming(registrationState) && !isRoamIndForHomeSystem(states[10]);
                newSS.setState (regCodeToServiceState(registrationState));

                this.newCdmaDataConnectionState = radioTechnologyToDataServiceState(radioTechnology);
@@ -1168,6 +1171,33 @@ final class CdmaServiceStateTracker extends ServiceStateTracker {
        return 5 == code;
    }

    /**
     * Determine whether a roaming indicator is in the carrier-specified list of ERIs for
     * home system
     *
     * @param roamInd roaming indicator in String
     * @return true if the roamInd is in the carrier-specified list of ERIs for home network
     */
    private boolean isRoamIndForHomeSystem(String roamInd) {
        // retrieve the carrier-specified list of ERIs for home system
        String homeRoamIndcators = SystemProperties.get("ro.cdma.homesystem");

        if (!TextUtils.isEmpty(homeRoamIndcators)) {
            // searches through the comma-separated list for a match,
            // return true if one is found.
            for (String homeRoamInd : homeRoamIndcators.split(",")) {
                if (homeRoamInd.equals(roamInd)) {
                    return true;
                }
            }
            // no matches found against the list!
            return false;
        }

        // no system property found for the roaming indicators for home system
        return false;
    }

    /**
     * Set roaming state when cdmaRoaming is true and ons is different from spn
     * @param cdmaRoaming TS 27.007 7.2 CREG registered roaming