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

Commit 733432ca authored by Ajay Nambi's avatar Ajay Nambi Committed by Ricardo Cerqueira
Browse files

Telephony: Handle Data Call List

* Check call status before validating data call state
* Remove duplicates from the list of data calls
* Add RIL_UNSOL_DATA_NETWORK_STATE_CHANGED string to RIL

Change-Id: Iea75053cb8226ec15d2a2c11a73332e5ebe8c793
parent 0a872611
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -1168,6 +1168,28 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
        return list;
    }

    /**
     * Clear data call entries with duplicate call ids.
     * The function will retain the first found unique call id.
     *
     * @param dataCalls
     * @return unique set of dataCalls.
     */
    private ArrayList<DataCallState> clearDuplicates(
            ArrayList<DataCallState> dataCalls) {
        // clear duplicate cid's
        ArrayList<Integer> cids = new ArrayList<Integer>();
        ArrayList<DataCallState> uniqueCalls = new ArrayList<DataCallState>();
        for (DataCallState dc : dataCalls) {
            if (!cids.contains(dc.cid)) {
                uniqueCalls.add(dc);
                cids.add(dc.cid);
            }
        }
        log("Number of DataCallStates:" + dataCalls.size() + "Unique count:" + uniqueCalls.size());
        return uniqueCalls;
    }

    /**
     * @param ar is the result of RIL_REQUEST_DATA_CALL_LIST
     * or RIL_UNSOL_DATA_CALL_LIST_CHANGED
@@ -1187,6 +1209,8 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
        }
        if (DBG) log("onDataStateChanged(ar): DataCallState size=" + dataCallStates.size());

        dataCallStates = clearDuplicates(dataCallStates);

        // Create a hash map to store the dataCallState of each DataConnectionAc
        HashMap<DataCallState, DataConnectionAc> dataCallStateToDcac;
        dataCallStateToDcac = new HashMap<DataCallState, DataConnectionAc>();