Merge "Fixed concurrent access network registration info"
This commit is contained in:
@@ -337,7 +337,7 @@ public class ServiceState implements Parcelable {
|
|||||||
* Reference: 3GPP TS 36.104 5.4.3 */
|
* Reference: 3GPP TS 36.104 5.4.3 */
|
||||||
private int mLteEarfcnRsrpBoost = 0;
|
private int mLteEarfcnRsrpBoost = 0;
|
||||||
|
|
||||||
private List<NetworkRegistrationInfo> mNetworkRegistrationInfos = new ArrayList<>();
|
private final List<NetworkRegistrationInfo> mNetworkRegistrationInfos = new ArrayList<>();
|
||||||
|
|
||||||
private String mOperatorAlphaLongRaw;
|
private String mOperatorAlphaLongRaw;
|
||||||
private String mOperatorAlphaShortRaw;
|
private String mOperatorAlphaShortRaw;
|
||||||
@@ -420,8 +420,10 @@ public class ServiceState implements Parcelable {
|
|||||||
mCellBandwidths = s.mCellBandwidths == null ? null :
|
mCellBandwidths = s.mCellBandwidths == null ? null :
|
||||||
Arrays.copyOf(s.mCellBandwidths, s.mCellBandwidths.length);
|
Arrays.copyOf(s.mCellBandwidths, s.mCellBandwidths.length);
|
||||||
mLteEarfcnRsrpBoost = s.mLteEarfcnRsrpBoost;
|
mLteEarfcnRsrpBoost = s.mLteEarfcnRsrpBoost;
|
||||||
mNetworkRegistrationInfos = s.mNetworkRegistrationInfos == null ? null :
|
synchronized (mNetworkRegistrationInfos) {
|
||||||
s.getNetworkRegistrationInfoList();
|
mNetworkRegistrationInfos.clear();
|
||||||
|
mNetworkRegistrationInfos.addAll(s.getNetworkRegistrationInfoList());
|
||||||
|
}
|
||||||
mNrFrequencyRange = s.mNrFrequencyRange;
|
mNrFrequencyRange = s.mNrFrequencyRange;
|
||||||
mOperatorAlphaLongRaw = s.mOperatorAlphaLongRaw;
|
mOperatorAlphaLongRaw = s.mOperatorAlphaLongRaw;
|
||||||
mOperatorAlphaShortRaw = s.mOperatorAlphaShortRaw;
|
mOperatorAlphaShortRaw = s.mOperatorAlphaShortRaw;
|
||||||
@@ -453,8 +455,9 @@ public class ServiceState implements Parcelable {
|
|||||||
mCdmaEriIconMode = in.readInt();
|
mCdmaEriIconMode = in.readInt();
|
||||||
mIsEmergencyOnly = in.readInt() != 0;
|
mIsEmergencyOnly = in.readInt() != 0;
|
||||||
mLteEarfcnRsrpBoost = in.readInt();
|
mLteEarfcnRsrpBoost = in.readInt();
|
||||||
mNetworkRegistrationInfos = new ArrayList<>();
|
synchronized (mNetworkRegistrationInfos) {
|
||||||
in.readList(mNetworkRegistrationInfos, NetworkRegistrationInfo.class.getClassLoader());
|
in.readList(mNetworkRegistrationInfos, NetworkRegistrationInfo.class.getClassLoader());
|
||||||
|
}
|
||||||
mChannelNumber = in.readInt();
|
mChannelNumber = in.readInt();
|
||||||
mCellBandwidths = in.createIntArray();
|
mCellBandwidths = in.createIntArray();
|
||||||
mNrFrequencyRange = in.readInt();
|
mNrFrequencyRange = in.readInt();
|
||||||
@@ -481,7 +484,9 @@ public class ServiceState implements Parcelable {
|
|||||||
out.writeInt(mCdmaEriIconMode);
|
out.writeInt(mCdmaEriIconMode);
|
||||||
out.writeInt(mIsEmergencyOnly ? 1 : 0);
|
out.writeInt(mIsEmergencyOnly ? 1 : 0);
|
||||||
out.writeInt(mLteEarfcnRsrpBoost);
|
out.writeInt(mLteEarfcnRsrpBoost);
|
||||||
out.writeList(mNetworkRegistrationInfos);
|
synchronized (mNetworkRegistrationInfos) {
|
||||||
|
out.writeList(mNetworkRegistrationInfos);
|
||||||
|
}
|
||||||
out.writeInt(mChannelNumber);
|
out.writeInt(mChannelNumber);
|
||||||
out.writeIntArray(mCellBandwidths);
|
out.writeIntArray(mCellBandwidths);
|
||||||
out.writeInt(mNrFrequencyRange);
|
out.writeInt(mNrFrequencyRange);
|
||||||
@@ -823,31 +828,33 @@ public class ServiceState implements Parcelable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return Objects.hash(
|
synchronized (mNetworkRegistrationInfos) {
|
||||||
mVoiceRegState,
|
return Objects.hash(
|
||||||
mDataRegState,
|
mVoiceRegState,
|
||||||
mChannelNumber,
|
mDataRegState,
|
||||||
Arrays.hashCode(mCellBandwidths),
|
mChannelNumber,
|
||||||
mVoiceOperatorAlphaLong,
|
Arrays.hashCode(mCellBandwidths),
|
||||||
mVoiceOperatorAlphaShort,
|
mVoiceOperatorAlphaLong,
|
||||||
mVoiceOperatorNumeric,
|
mVoiceOperatorAlphaShort,
|
||||||
mDataOperatorAlphaLong,
|
mVoiceOperatorNumeric,
|
||||||
mDataOperatorAlphaShort,
|
mDataOperatorAlphaLong,
|
||||||
mDataOperatorNumeric,
|
mDataOperatorAlphaShort,
|
||||||
mIsManualNetworkSelection,
|
mDataOperatorNumeric,
|
||||||
mCssIndicator,
|
mIsManualNetworkSelection,
|
||||||
mNetworkId,
|
mCssIndicator,
|
||||||
mSystemId,
|
mNetworkId,
|
||||||
mCdmaRoamingIndicator,
|
mSystemId,
|
||||||
mCdmaDefaultRoamingIndicator,
|
mCdmaRoamingIndicator,
|
||||||
mCdmaEriIconIndex,
|
mCdmaDefaultRoamingIndicator,
|
||||||
mCdmaEriIconMode,
|
mCdmaEriIconIndex,
|
||||||
mIsEmergencyOnly,
|
mCdmaEriIconMode,
|
||||||
mLteEarfcnRsrpBoost,
|
mIsEmergencyOnly,
|
||||||
mNetworkRegistrationInfos,
|
mLteEarfcnRsrpBoost,
|
||||||
mNrFrequencyRange,
|
mNetworkRegistrationInfos,
|
||||||
mOperatorAlphaLongRaw,
|
mNrFrequencyRange,
|
||||||
mOperatorAlphaShortRaw);
|
mOperatorAlphaLongRaw,
|
||||||
|
mOperatorAlphaShortRaw);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -855,30 +862,31 @@ public class ServiceState implements Parcelable {
|
|||||||
if (!(o instanceof ServiceState)) return false;
|
if (!(o instanceof ServiceState)) return false;
|
||||||
ServiceState s = (ServiceState) o;
|
ServiceState s = (ServiceState) o;
|
||||||
|
|
||||||
return mVoiceRegState == s.mVoiceRegState
|
synchronized (mNetworkRegistrationInfos) {
|
||||||
&& mDataRegState == s.mDataRegState
|
return mVoiceRegState == s.mVoiceRegState
|
||||||
&& mIsManualNetworkSelection == s.mIsManualNetworkSelection
|
&& mDataRegState == s.mDataRegState
|
||||||
&& mChannelNumber == s.mChannelNumber
|
&& mIsManualNetworkSelection == s.mIsManualNetworkSelection
|
||||||
&& Arrays.equals(mCellBandwidths, s.mCellBandwidths)
|
&& mChannelNumber == s.mChannelNumber
|
||||||
&& equalsHandlesNulls(mVoiceOperatorAlphaLong, s.mVoiceOperatorAlphaLong)
|
&& Arrays.equals(mCellBandwidths, s.mCellBandwidths)
|
||||||
&& equalsHandlesNulls(mVoiceOperatorAlphaShort, s.mVoiceOperatorAlphaShort)
|
&& equalsHandlesNulls(mVoiceOperatorAlphaLong, s.mVoiceOperatorAlphaLong)
|
||||||
&& equalsHandlesNulls(mVoiceOperatorNumeric, s.mVoiceOperatorNumeric)
|
&& equalsHandlesNulls(mVoiceOperatorAlphaShort, s.mVoiceOperatorAlphaShort)
|
||||||
&& equalsHandlesNulls(mDataOperatorAlphaLong, s.mDataOperatorAlphaLong)
|
&& equalsHandlesNulls(mVoiceOperatorNumeric, s.mVoiceOperatorNumeric)
|
||||||
&& equalsHandlesNulls(mDataOperatorAlphaShort, s.mDataOperatorAlphaShort)
|
&& equalsHandlesNulls(mDataOperatorAlphaLong, s.mDataOperatorAlphaLong)
|
||||||
&& equalsHandlesNulls(mDataOperatorNumeric, s.mDataOperatorNumeric)
|
&& equalsHandlesNulls(mDataOperatorAlphaShort, s.mDataOperatorAlphaShort)
|
||||||
&& equalsHandlesNulls(mCssIndicator, s.mCssIndicator)
|
&& equalsHandlesNulls(mDataOperatorNumeric, s.mDataOperatorNumeric)
|
||||||
&& equalsHandlesNulls(mNetworkId, s.mNetworkId)
|
&& equalsHandlesNulls(mCssIndicator, s.mCssIndicator)
|
||||||
&& equalsHandlesNulls(mSystemId, s.mSystemId)
|
&& equalsHandlesNulls(mNetworkId, s.mNetworkId)
|
||||||
&& equalsHandlesNulls(mCdmaRoamingIndicator, s.mCdmaRoamingIndicator)
|
&& equalsHandlesNulls(mSystemId, s.mSystemId)
|
||||||
&& equalsHandlesNulls(mCdmaDefaultRoamingIndicator,
|
&& equalsHandlesNulls(mCdmaRoamingIndicator, s.mCdmaRoamingIndicator)
|
||||||
s.mCdmaDefaultRoamingIndicator)
|
&& equalsHandlesNulls(mCdmaDefaultRoamingIndicator,
|
||||||
&& mIsEmergencyOnly == s.mIsEmergencyOnly
|
s.mCdmaDefaultRoamingIndicator)
|
||||||
&& equalsHandlesNulls(mOperatorAlphaLongRaw, s.mOperatorAlphaLongRaw)
|
&& mIsEmergencyOnly == s.mIsEmergencyOnly
|
||||||
&& equalsHandlesNulls(mOperatorAlphaShortRaw, s.mOperatorAlphaShortRaw)
|
&& equalsHandlesNulls(mOperatorAlphaLongRaw, s.mOperatorAlphaLongRaw)
|
||||||
&& (mNetworkRegistrationInfos == null
|
&& equalsHandlesNulls(mOperatorAlphaShortRaw, s.mOperatorAlphaShortRaw)
|
||||||
? s.mNetworkRegistrationInfos == null : s.mNetworkRegistrationInfos != null
|
&& mNetworkRegistrationInfos.size() == s.mNetworkRegistrationInfos.size()
|
||||||
&& mNetworkRegistrationInfos.containsAll(s.mNetworkRegistrationInfos))
|
&& mNetworkRegistrationInfos.containsAll(s.mNetworkRegistrationInfos)
|
||||||
&& mNrFrequencyRange == s.mNrFrequencyRange;
|
&& mNrFrequencyRange == s.mNrFrequencyRange;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1005,36 +1013,38 @@ public class ServiceState implements Parcelable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return new StringBuilder().append("{mVoiceRegState=").append(mVoiceRegState)
|
synchronized (mNetworkRegistrationInfos) {
|
||||||
.append("(" + rilServiceStateToString(mVoiceRegState) + ")")
|
return new StringBuilder().append("{mVoiceRegState=").append(mVoiceRegState)
|
||||||
.append(", mDataRegState=").append(mDataRegState)
|
.append("(" + rilServiceStateToString(mVoiceRegState) + ")")
|
||||||
.append("(" + rilServiceStateToString(mDataRegState) + ")")
|
.append(", mDataRegState=").append(mDataRegState)
|
||||||
.append(", mChannelNumber=").append(mChannelNumber)
|
.append("(" + rilServiceStateToString(mDataRegState) + ")")
|
||||||
.append(", duplexMode()=").append(getDuplexMode())
|
.append(", mChannelNumber=").append(mChannelNumber)
|
||||||
.append(", mCellBandwidths=").append(Arrays.toString(mCellBandwidths))
|
.append(", duplexMode()=").append(getDuplexMode())
|
||||||
.append(", mVoiceOperatorAlphaLong=").append(mVoiceOperatorAlphaLong)
|
.append(", mCellBandwidths=").append(Arrays.toString(mCellBandwidths))
|
||||||
.append(", mVoiceOperatorAlphaShort=").append(mVoiceOperatorAlphaShort)
|
.append(", mVoiceOperatorAlphaLong=").append(mVoiceOperatorAlphaLong)
|
||||||
.append(", mDataOperatorAlphaLong=").append(mDataOperatorAlphaLong)
|
.append(", mVoiceOperatorAlphaShort=").append(mVoiceOperatorAlphaShort)
|
||||||
.append(", mDataOperatorAlphaShort=").append(mDataOperatorAlphaShort)
|
.append(", mDataOperatorAlphaLong=").append(mDataOperatorAlphaLong)
|
||||||
.append(", isManualNetworkSelection=").append(mIsManualNetworkSelection)
|
.append(", mDataOperatorAlphaShort=").append(mDataOperatorAlphaShort)
|
||||||
.append(mIsManualNetworkSelection ? "(manual)" : "(automatic)")
|
.append(", isManualNetworkSelection=").append(mIsManualNetworkSelection)
|
||||||
.append(", getRilVoiceRadioTechnology=").append(getRilVoiceRadioTechnology())
|
.append(mIsManualNetworkSelection ? "(manual)" : "(automatic)")
|
||||||
.append("(" + rilRadioTechnologyToString(getRilVoiceRadioTechnology()) + ")")
|
.append(", getRilVoiceRadioTechnology=").append(getRilVoiceRadioTechnology())
|
||||||
.append(", getRilDataRadioTechnology=").append(getRilDataRadioTechnology())
|
.append("(" + rilRadioTechnologyToString(getRilVoiceRadioTechnology()) + ")")
|
||||||
.append("(" + rilRadioTechnologyToString(getRilDataRadioTechnology()) + ")")
|
.append(", getRilDataRadioTechnology=").append(getRilDataRadioTechnology())
|
||||||
.append(", mCssIndicator=").append(mCssIndicator ? "supported" : "unsupported")
|
.append("(" + rilRadioTechnologyToString(getRilDataRadioTechnology()) + ")")
|
||||||
.append(", mNetworkId=").append(mNetworkId)
|
.append(", mCssIndicator=").append(mCssIndicator ? "supported" : "unsupported")
|
||||||
.append(", mSystemId=").append(mSystemId)
|
.append(", mNetworkId=").append(mNetworkId)
|
||||||
.append(", mCdmaRoamingIndicator=").append(mCdmaRoamingIndicator)
|
.append(", mSystemId=").append(mSystemId)
|
||||||
.append(", mCdmaDefaultRoamingIndicator=").append(mCdmaDefaultRoamingIndicator)
|
.append(", mCdmaRoamingIndicator=").append(mCdmaRoamingIndicator)
|
||||||
.append(", mIsEmergencyOnly=").append(mIsEmergencyOnly)
|
.append(", mCdmaDefaultRoamingIndicator=").append(mCdmaDefaultRoamingIndicator)
|
||||||
.append(", isUsingCarrierAggregation=").append(isUsingCarrierAggregation())
|
.append(", mIsEmergencyOnly=").append(mIsEmergencyOnly)
|
||||||
.append(", mLteEarfcnRsrpBoost=").append(mLteEarfcnRsrpBoost)
|
.append(", isUsingCarrierAggregation=").append(isUsingCarrierAggregation())
|
||||||
.append(", mNetworkRegistrationInfos=").append(mNetworkRegistrationInfos)
|
.append(", mLteEarfcnRsrpBoost=").append(mLteEarfcnRsrpBoost)
|
||||||
.append(", mNrFrequencyRange=").append(mNrFrequencyRange)
|
.append(", mNetworkRegistrationInfos=").append(mNetworkRegistrationInfos)
|
||||||
.append(", mOperatorAlphaLongRaw=").append(mOperatorAlphaLongRaw)
|
.append(", mNrFrequencyRange=").append(mNrFrequencyRange)
|
||||||
.append(", mOperatorAlphaShortRaw=").append(mOperatorAlphaShortRaw)
|
.append(", mOperatorAlphaLongRaw=").append(mOperatorAlphaLongRaw)
|
||||||
.append("}").toString();
|
.append(", mOperatorAlphaShortRaw=").append(mOperatorAlphaShortRaw)
|
||||||
|
.append("}").toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void init() {
|
private void init() {
|
||||||
@@ -1060,17 +1070,19 @@ public class ServiceState implements Parcelable {
|
|||||||
mIsEmergencyOnly = false;
|
mIsEmergencyOnly = false;
|
||||||
mLteEarfcnRsrpBoost = 0;
|
mLteEarfcnRsrpBoost = 0;
|
||||||
mNrFrequencyRange = FREQUENCY_RANGE_UNKNOWN;
|
mNrFrequencyRange = FREQUENCY_RANGE_UNKNOWN;
|
||||||
mNetworkRegistrationInfos.clear();
|
synchronized (mNetworkRegistrationInfos) {
|
||||||
addNetworkRegistrationInfo(new NetworkRegistrationInfo.Builder()
|
mNetworkRegistrationInfos.clear();
|
||||||
.setDomain(NetworkRegistrationInfo.DOMAIN_CS)
|
addNetworkRegistrationInfo(new NetworkRegistrationInfo.Builder()
|
||||||
.setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
|
.setDomain(NetworkRegistrationInfo.DOMAIN_CS)
|
||||||
.setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_UNKNOWN)
|
.setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
|
||||||
.build());
|
.setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_UNKNOWN)
|
||||||
addNetworkRegistrationInfo(new NetworkRegistrationInfo.Builder()
|
.build());
|
||||||
.setDomain(NetworkRegistrationInfo.DOMAIN_PS)
|
addNetworkRegistrationInfo(new NetworkRegistrationInfo.Builder()
|
||||||
.setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
|
.setDomain(NetworkRegistrationInfo.DOMAIN_PS)
|
||||||
.setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_UNKNOWN)
|
.setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
|
||||||
.build());
|
.setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_UNKNOWN)
|
||||||
|
.build());
|
||||||
|
}
|
||||||
mOperatorAlphaLongRaw = null;
|
mOperatorAlphaLongRaw = null;
|
||||||
mOperatorAlphaShortRaw = null;
|
mOperatorAlphaShortRaw = null;
|
||||||
}
|
}
|
||||||
@@ -1913,10 +1925,13 @@ public class ServiceState implements Parcelable {
|
|||||||
*/
|
*/
|
||||||
public ServiceState sanitizeLocationInfo(boolean removeCoarseLocation) {
|
public ServiceState sanitizeLocationInfo(boolean removeCoarseLocation) {
|
||||||
ServiceState state = new ServiceState(this);
|
ServiceState state = new ServiceState(this);
|
||||||
if (state.mNetworkRegistrationInfos != null) {
|
synchronized (state.mNetworkRegistrationInfos) {
|
||||||
state.mNetworkRegistrationInfos = state.mNetworkRegistrationInfos.stream()
|
List<NetworkRegistrationInfo> networkRegistrationInfos =
|
||||||
.map(NetworkRegistrationInfo::sanitizeLocationInfo)
|
state.mNetworkRegistrationInfos.stream()
|
||||||
.collect(Collectors.toList());
|
.map(NetworkRegistrationInfo::sanitizeLocationInfo)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
state.mNetworkRegistrationInfos.clear();
|
||||||
|
state.mNetworkRegistrationInfos.addAll(networkRegistrationInfos);
|
||||||
}
|
}
|
||||||
if (!removeCoarseLocation) return state;
|
if (!removeCoarseLocation) return state;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user