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

Commit 56c2d2ff authored by John Wang's avatar John Wang
Browse files

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
parent f61eade2
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -972,7 +972,8 @@ public class StatusBarPolicy {
        int iconLevel = -1;
        int[] iconList;

        if (!hasService()) {
        // Display signal strength while in "emergency calls only" mode
        if (!hasService() && !mServiceState.isEmergencyOnly()) {
            //Slog.d(TAG, "updateSignalStrength: no service");
            if (Settings.System.getInt(mContext.getContentResolver(),
                    Settings.System.AIRPLANE_MODE_ON, 0) == 1) {
+30 −3
Original line number Diff line number Diff line
@@ -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() {
@@ -247,6 +252,13 @@ public class ServiceState implements Parcelable {
        return mRoaming;
    }

    /**
     * @hide
     */
    public boolean isEmergencyOnly() {
        return mIsEmergencyOnly;
    }

    /**
     * @hide
     */
@@ -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
+7 −13
Original line number Diff line number Diff line
@@ -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();
        }