From 56c2d2ff27536a1d8edf0037cd41ff3ea3272fd9 Mon Sep 17 00:00:00 2001 From: John Wang Date: Wed, 7 Apr 2010 08:57:17 -0700 Subject: Add emergencyOnly indicator in ServiceState. For bug 2536842 to show signal strength in Emergency mode. The STATE_EMERGENCY_ONLY of ServiceState is not in-use. So add a hide interface to indicate Emergency mode. Change-Id: I19398ac5e73a722dcaaf744347f961d1fa7513ac --- telephony/java/android/telephony/ServiceState.java | 33 ++++++++++++++++++++-- .../telephony/gsm/GsmServiceStateTracker.java | 20 +++++-------- 2 files changed, 37 insertions(+), 16 deletions(-) (limited to 'telephony') diff --git a/telephony/java/android/telephony/ServiceState.java b/telephony/java/android/telephony/ServiceState.java index 48a40fa..6c66559 100644 --- a/telephony/java/android/telephony/ServiceState.java +++ b/telephony/java/android/telephony/ServiceState.java @@ -113,6 +113,8 @@ public class ServiceState implements Parcelable { private String mOperatorNumeric; private boolean mIsManualNetworkSelection; + private boolean mIsEmergencyOnly; + //***** CDMA private int mRadioTechnology; private boolean mCssIndicator; @@ -170,6 +172,7 @@ public class ServiceState implements Parcelable { mCdmaDefaultRoamingIndicator = s.mCdmaDefaultRoamingIndicator; mCdmaEriIconIndex = s.mCdmaEriIconIndex; mCdmaEriIconMode = s.mCdmaEriIconMode; + mIsEmergencyOnly = s.mIsEmergencyOnly; } /** @@ -190,6 +193,7 @@ public class ServiceState implements Parcelable { mCdmaDefaultRoamingIndicator = in.readInt(); mCdmaEriIconIndex = in.readInt(); mCdmaEriIconMode = in.readInt(); + mIsEmergencyOnly = in.readInt() != 0; } public void writeToParcel(Parcel out, int flags) { @@ -207,6 +211,7 @@ public class ServiceState implements Parcelable { out.writeInt(mCdmaDefaultRoamingIndicator); out.writeInt(mCdmaEriIconIndex); out.writeInt(mCdmaEriIconMode); + out.writeInt(mIsEmergencyOnly ? 1 : 0); } public int describeContents() { @@ -250,6 +255,13 @@ public class ServiceState implements Parcelable { /** * @hide */ + public boolean isEmergencyOnly() { + return mIsEmergencyOnly; + } + + /** + * @hide + */ public int getCdmaRoamingIndicator(){ return this.mCdmaRoamingIndicator; } @@ -330,7 +342,8 @@ public class ServiceState implements Parcelable { + ((null == mOperatorAlphaShort) ? 0 : mOperatorAlphaShort.hashCode()) + ((null == mOperatorNumeric) ? 0 : mOperatorNumeric.hashCode()) + mCdmaRoamingIndicator - + mCdmaDefaultRoamingIndicator); + + mCdmaDefaultRoamingIndicator + + (mIsEmergencyOnly ? 1 : 0)); } @Override @@ -359,7 +372,8 @@ public class ServiceState implements Parcelable { && equalsHandlesNulls(mSystemId, s.mSystemId) && equalsHandlesNulls(mCdmaRoamingIndicator, s.mCdmaRoamingIndicator) && equalsHandlesNulls(mCdmaDefaultRoamingIndicator, - s.mCdmaDefaultRoamingIndicator)); + s.mCdmaDefaultRoamingIndicator) + && mIsEmergencyOnly == s.mIsEmergencyOnly); } @Override @@ -418,7 +432,8 @@ public class ServiceState implements Parcelable { + " " + mNetworkId + " " + mSystemId + "RoamInd: " + mCdmaRoamingIndicator - + "DefRoamInd: " + mCdmaDefaultRoamingIndicator); + + "DefRoamInd: " + mCdmaDefaultRoamingIndicator + + "EmergOnly: " + mIsEmergencyOnly); } public void setStateOutOfService() { @@ -436,6 +451,7 @@ public class ServiceState implements Parcelable { mCdmaDefaultRoamingIndicator = -1; mCdmaEriIconIndex = -1; mCdmaEriIconMode = -1; + mIsEmergencyOnly = false; } // TODO - can't this be combined with the above func.. @@ -454,6 +470,7 @@ public class ServiceState implements Parcelable { mCdmaDefaultRoamingIndicator = -1; mCdmaEriIconIndex = -1; mCdmaEriIconMode = -1; + mIsEmergencyOnly = false; } public void setState(int state) { @@ -464,6 +481,14 @@ public class ServiceState implements Parcelable { mRoaming = roaming; } + + /** + * @hide + */ + public void setEmergencyOnly(boolean emergencyOnly) { + mIsEmergencyOnly = emergencyOnly; + } + /** * @hide */ @@ -542,6 +567,7 @@ public class ServiceState implements Parcelable { mSystemId = m.getInt("systemId"); mCdmaRoamingIndicator = m.getInt("cdmaRoamingIndicator"); mCdmaDefaultRoamingIndicator = m.getInt("cdmaDefaultRoamingIndicator"); + mIsEmergencyOnly = m.getBoolean("emergencyOnly"); } /** @@ -563,6 +589,7 @@ public class ServiceState implements Parcelable { m.putInt("systemId", mSystemId); m.putInt("cdmaRoamingIndicator", mCdmaRoamingIndicator); m.putInt("cdmaDefaultRoamingIndicator", mCdmaDefaultRoamingIndicator); + m.putBoolean("emergencyOnly", Boolean.valueOf(mIsEmergencyOnly)); } //***** CDMA diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java index e4fcf6c..50b8eba 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java @@ -102,7 +102,6 @@ final class GsmServiceStateTracker extends ServiceStateTracker { * Mark when service state is in emergency call only mode */ private boolean mEmergencyOnly = false; - private boolean mNewEmergencyOnly = false; private RegistrantList gprsAttachedRegistrants = new RegistrantList(); private RegistrantList gprsDetachedRegistrants = new RegistrantList(); @@ -591,8 +590,8 @@ final class GsmServiceStateTracker extends ServiceStateTracker { if (rule != curSpnRule || !TextUtils.equals(spn, curSpn) || !TextUtils.equals(plmn, curPlmn)) { - boolean showSpn = mEmergencyOnly - || (rule & SIMRecords.SPN_RULE_SHOW_SPN) == SIMRecords.SPN_RULE_SHOW_SPN; + boolean showSpn = !mEmergencyOnly + && (rule & SIMRecords.SPN_RULE_SHOW_SPN) == SIMRecords.SPN_RULE_SHOW_SPN; boolean showPlmn = (rule & SIMRecords.SPN_RULE_SHOW_PLMN) == SIMRecords.SPN_RULE_SHOW_PLMN; @@ -672,9 +671,9 @@ final class GsmServiceStateTracker extends ServiceStateTracker { newSS.setState (regCodeToServiceState(regState)); if (regState == 10 || regState == 12 || regState == 13 || regState == 14) { - mNewEmergencyOnly = true; + mEmergencyOnly = true; } else { - mNewEmergencyOnly = false; + mEmergencyOnly = false; } // LAC and CID are -1 if not avail @@ -741,6 +740,7 @@ final class GsmServiceStateTracker extends ServiceStateTracker { roaming = false; } newSS.setRoaming(roaming); + newSS.setEmergencyOnly(mEmergencyOnly); pollStateDone(); } } @@ -886,8 +886,6 @@ final class GsmServiceStateTracker extends ServiceStateTracker { boolean hasLocationChanged = !newCellLoc.equals(cellLoc); - boolean hasEmergencyOnlyChanged = mNewEmergencyOnly != mEmergencyOnly; - // Add an event log when connection state changes if (ss.getState() != newSS.getState() || gprsState != newGPRSState) { EventLog.writeEvent(EventLogTags.GSM_SERVICE_STATE_CHANGE, @@ -905,8 +903,6 @@ final class GsmServiceStateTracker extends ServiceStateTracker { cellLoc = newCellLoc; newCellLoc = tcl; - mEmergencyOnly = mNewEmergencyOnly; - // Add an event log when network type switched // TODO: we may add filtering to reduce the event logged, // i.e. check preferred network setting, only switch to 2G, etc @@ -937,6 +933,8 @@ final class GsmServiceStateTracker extends ServiceStateTracker { if (hasChanged) { String operatorNumeric; + updateSpnDisplay(); + phone.setSystemProperty(TelephonyProperties.PROPERTY_OPERATOR_ALPHA, ss.getOperatorAlphaLong()); @@ -1005,10 +1003,6 @@ final class GsmServiceStateTracker extends ServiceStateTracker { phone.notifyServiceStateChanged(ss); } - if (hasChanged || hasEmergencyOnlyChanged) { - updateSpnDisplay(); - } - if (hasGprsAttached) { gprsAttachedRegistrants.notifyRegistrants(); } -- cgit v1.1