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

Commit bec4eea5 authored by Ricardo Cerqueira's avatar Ricardo Cerqueira Committed by Gerrit Code Review
Browse files

Merge "Telephony: Add DORMANT state to GSM data link activity" into ics

parents 657a2a83 3195d8c5
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -150,6 +150,14 @@ public abstract class DataConnectionTracker extends Handler {
    public static final int DISABLED = 0;
    public static final int ENABLED = 1;

    /**
     * Constants for the data connection activity:
     * physical link down/up
     */
    protected static final int DATA_CONNECTION_ACTIVE_PH_LINK_INACTIVE = 0;
    protected static final int DATA_CONNECTION_ACTIVE_PH_LINK_DOWN = 1;
    protected static final int DATA_CONNECTION_ACTIVE_PH_LINK_UP = 2;

    public static final String APN_TYPE_KEY = "apnType";

    /** Delay between APN attempts.
+4 −0
Original line number Diff line number Diff line
@@ -350,6 +350,10 @@ public class GSMPhone extends PhoneBase {
                case DATAINANDOUT:
                    ret = DataActivityState.DATAINANDOUT;
                break;

                case DORMANT:
                    ret = DataActivityState.DORMANT;
                break;
            }
        }

+29 −1
Original line number Diff line number Diff line
@@ -1211,6 +1211,9 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {

        dataCallStates = clearDuplicates(dataCallStates);

        boolean isAnyDataCallDormant = false;
        boolean isAnyDataCallActive = false;

        // Create a hash map to store the dataCallState of each DataConnectionAc
        HashMap<DataCallState, DataConnectionAc> dataCallStateToDcac;
        dataCallStateToDcac = new HashMap<DataCallState, DataConnectionAc>();
@@ -1232,6 +1235,9 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
                continue;
            }

            if (newState.active == DATA_CONNECTION_ACTIVE_PH_LINK_UP) isAnyDataCallActive = true;
            if (newState.active == DATA_CONNECTION_ACTIVE_PH_LINK_DOWN) isAnyDataCallDormant = true;

            // The list of apn's associated with this DataConnection
            Collection<ApnContext> apns = dcac.getApnListSync();

@@ -1312,6 +1318,28 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
            }
        }

        if (isAnyDataCallDormant && !isAnyDataCallActive) {
            // There is no way to indicate link activity per APN right now. So
            // Link Activity will be considered dormant only when all data calls
            // are dormant.
            // If a single data call is in dormant state and none of the data
            // calls are active broadcast overall link state as dormant.
            mActivity = Activity.DORMANT;
            if (DBG) {
                log("onDataStateChanged: Data Activity updated to DORMANT. stopNetStatePoll");
            }
            stopNetStatPoll();
        } else {
            mActivity = Activity.NONE;
            if (DBG) {
                log("onDataStateChanged: Data Activity updated to NONE. " +
                         "isAnyDataCallActive = " + isAnyDataCallActive +
                         " isAnyDataCallDormant = " + isAnyDataCallDormant);
            }
            if (isAnyDataCallActive) startNetStatPoll();
        }
        mPhone.notifyDataActivity();

        if (apnsToCleanup.size() != 0) {
            // Add an event log when the network drops PDP
            int cid = getCellLocationId();
@@ -1546,7 +1574,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
            } else if (sent == 0 && received > 0) {
                newActivity = Activity.DATAIN;
            } else {
                newActivity = Activity.NONE;
                newActivity = (mActivity == Activity.DORMANT) ? mActivity : Activity.NONE;
            }

            if (mActivity != newActivity && mIsScreenOn) {