am 1c82f56f: Display CSIM SPN only if camping SID/NID matches CSIM CDMAHOME
* commit '1c82f56f2453a8a7c83090017ab2427a74829b9a': Display CSIM SPN only if camping SID/NID matches CSIM CDMAHOME
This commit is contained in:
@@ -134,8 +134,6 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Not sure if this is needed in CDMALTE phone.
|
|
||||||
// mDataRoaming = regCodeIsRoaming(regState);
|
|
||||||
mLteSS.setRadioTechnology(type);
|
mLteSS.setRadioTechnology(type);
|
||||||
mLteSS.setState(regCodeToServiceState(regState));
|
mLteSS.setState(regCodeToServiceState(regState));
|
||||||
} else {
|
} else {
|
||||||
@@ -345,13 +343,14 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (cm.getSimState().isSIMReady()) {
|
if (cm.getSimState().isSIMReady()) {
|
||||||
// SIM is found on the device. If ERI roaming is OFF, use operator name
|
// SIM is found on the device. If ERI roaming is OFF and SID/NID matches
|
||||||
// from CSIM record.
|
// one configfured in SIM, use operator name from CSIM record.
|
||||||
boolean showSpn =
|
boolean showSpn =
|
||||||
((CdmaLteUiccRecords)phone.mIccRecords).getCsimSpnDisplayCondition();
|
((CdmaLteUiccRecords)phone.mIccRecords).getCsimSpnDisplayCondition();
|
||||||
int iconIndex = ss.getCdmaEriIconIndex();
|
int iconIndex = ss.getCdmaEriIconIndex();
|
||||||
|
|
||||||
if (showSpn && (iconIndex == EriInfo.ROAMING_INDICATOR_OFF)) {
|
if (showSpn && (iconIndex == EriInfo.ROAMING_INDICATOR_OFF) &&
|
||||||
|
isInHomeSidNid(ss.getSystemId(), ss.getNetworkId())) {
|
||||||
ss.setOperatorAlphaLong(phone.mIccRecords.getServiceProviderName());
|
ss.setOperatorAlphaLong(phone.mIccRecords.getServiceProviderName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -468,6 +467,34 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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, assume this is home network.
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// SID/NID are not in the list. So device is not in home network
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns OTASP_NOT_NEEDED as its not needed for LTE
|
* Returns OTASP_NOT_NEEDED as its not needed for LTE
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -130,8 +130,8 @@ public class CdmaServiceStateTracker extends ServiceStateTracker {
|
|||||||
protected String mCurPlmn = null;
|
protected String mCurPlmn = null;
|
||||||
|
|
||||||
protected String mMdn;
|
protected String mMdn;
|
||||||
private int mHomeSystemId[] = null;
|
protected int mHomeSystemId[] = null;
|
||||||
private int mHomeNetworkId[] = null;
|
protected int mHomeNetworkId[] = null;
|
||||||
protected String mMin;
|
protected String mMin;
|
||||||
protected String mPrlVersion;
|
protected String mPrlVersion;
|
||||||
protected boolean mIsMinInfoReady = false;
|
protected boolean mIsMinInfoReady = false;
|
||||||
@@ -1481,7 +1481,7 @@ public class CdmaServiceStateTracker extends ServiceStateTracker {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isSidsAllZeros() {
|
protected boolean isSidsAllZeros() {
|
||||||
if (mHomeSystemId != null) {
|
if (mHomeSystemId != null) {
|
||||||
for (int i=0; i < mHomeSystemId.length; i++) {
|
for (int i=0; i < mHomeSystemId.length; i++) {
|
||||||
if (mHomeSystemId[i] != 0) {
|
if (mHomeSystemId[i] != 0) {
|
||||||
|
|||||||
Reference in New Issue
Block a user