Loading telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java +33 −2 Original line number Diff line number Diff line Loading @@ -125,8 +125,6 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker { } } // Not sure if this is needed in CDMALTE phone. // mDataRoaming = regCodeIsRoaming(regState); mLteSS.setRadioTechnology(type); mLteSS.setState(regCodeToServiceState(regState)); } else { Loading Loading @@ -212,6 +210,12 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker { if (DBG) log("pollStateDone: oldSS=[" + ss + "] newSS=[" + newSS + "]"); if (cm.getSimState().isSIMReady()) { // If CSIM is used, check roaming status according to SID/NID // on EFcdmahome record. newSS.setRoaming(!isInHomeSidNid(newSS.getSystemId(), newSS.getNetworkId())); } boolean hasRegistered = ss.getState() != ServiceState.STATE_IN_SERVICE && newSS.getState() == ServiceState.STATE_IN_SERVICE; Loading Loading @@ -464,6 +468,33 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker { return provisioningState; } /** * Check whether the specified SID and NID pair appears in the HOME SID/NID list * read from NV or SIM. * * @return true if provided sid/nid pair belongs to operator's home network. */ private boolean isInHomeSidNid(int sid, int nid) { // if SID/NID is not available, do not declare roaming. if (isSidsAllZeros()) return true; // length of SID/NID shold be same if (mHomeSystemId.length != mHomeNetworkId.length) return true; if (sid == 0) return true; for (int i = 0; i < mHomeSystemId.length; i++) { // Use SID only if NID is a reserved value. // SID 0 and NID 0 and 65535 are reserved. (C.0005 2.6.5.2) if ((mHomeSystemId[i] == sid) && ((mHomeNetworkId[i] == 0) || (mHomeNetworkId[i] == 65535) || (nid == 0) || (nid == 65535) || (mHomeNetworkId[i] == nid))) { return true; } } return false; } @Override protected void log(String s) { Log.d(LOG_TAG, "[CdmaLteSST] " + s); Loading telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java +3 −3 Original line number Diff line number Diff line Loading @@ -130,8 +130,8 @@ public class CdmaServiceStateTracker extends ServiceStateTracker { private String curPlmn = null; protected String mMdn; private int mHomeSystemId[] = null; private int mHomeNetworkId[] = null; protected int mHomeSystemId[] = null; protected int mHomeNetworkId[] = null; protected String mMin; protected String mPrlVersion; protected boolean mIsMinInfoReady = false; Loading Loading @@ -1481,7 +1481,7 @@ public class CdmaServiceStateTracker extends ServiceStateTracker { } } private boolean isSidsAllZeros() { protected boolean isSidsAllZeros() { if (mHomeSystemId != null) { for (int i=0; i < mHomeSystemId.length; i++) { if (mHomeSystemId[i] != 0) { Loading Loading
telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java +33 −2 Original line number Diff line number Diff line Loading @@ -125,8 +125,6 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker { } } // Not sure if this is needed in CDMALTE phone. // mDataRoaming = regCodeIsRoaming(regState); mLteSS.setRadioTechnology(type); mLteSS.setState(regCodeToServiceState(regState)); } else { Loading Loading @@ -212,6 +210,12 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker { if (DBG) log("pollStateDone: oldSS=[" + ss + "] newSS=[" + newSS + "]"); if (cm.getSimState().isSIMReady()) { // If CSIM is used, check roaming status according to SID/NID // on EFcdmahome record. newSS.setRoaming(!isInHomeSidNid(newSS.getSystemId(), newSS.getNetworkId())); } boolean hasRegistered = ss.getState() != ServiceState.STATE_IN_SERVICE && newSS.getState() == ServiceState.STATE_IN_SERVICE; Loading Loading @@ -464,6 +468,33 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker { return provisioningState; } /** * Check whether the specified SID and NID pair appears in the HOME SID/NID list * read from NV or SIM. * * @return true if provided sid/nid pair belongs to operator's home network. */ private boolean isInHomeSidNid(int sid, int nid) { // if SID/NID is not available, do not declare roaming. if (isSidsAllZeros()) return true; // length of SID/NID shold be same if (mHomeSystemId.length != mHomeNetworkId.length) return true; if (sid == 0) return true; for (int i = 0; i < mHomeSystemId.length; i++) { // Use SID only if NID is a reserved value. // SID 0 and NID 0 and 65535 are reserved. (C.0005 2.6.5.2) if ((mHomeSystemId[i] == sid) && ((mHomeNetworkId[i] == 0) || (mHomeNetworkId[i] == 65535) || (nid == 0) || (nid == 65535) || (mHomeNetworkId[i] == nid))) { return true; } } return false; } @Override protected void log(String s) { Log.d(LOG_TAG, "[CdmaLteSST] " + s); Loading
telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java +3 −3 Original line number Diff line number Diff line Loading @@ -130,8 +130,8 @@ public class CdmaServiceStateTracker extends ServiceStateTracker { private String curPlmn = null; protected String mMdn; private int mHomeSystemId[] = null; private int mHomeNetworkId[] = null; protected int mHomeSystemId[] = null; protected int mHomeNetworkId[] = null; protected String mMin; protected String mPrlVersion; protected boolean mIsMinInfoReady = false; Loading Loading @@ -1481,7 +1481,7 @@ public class CdmaServiceStateTracker extends ServiceStateTracker { } } private boolean isSidsAllZeros() { protected boolean isSidsAllZeros() { if (mHomeSystemId != null) { for (int i=0; i < mHomeSystemId.length; i++) { if (mHomeSystemId[i] != 0) { Loading