Loading src/java/com/android/internal/telephony/GsmCdmaCallTracker.java +12 −10 Original line number Diff line number Diff line Loading @@ -931,19 +931,21 @@ public class GsmCdmaCallTracker extends CallTracker { // Loop through foreground call connections as // it contains the known logical connections. ArrayList<Connection> connections = mForegroundCall.getConnections(); int count = connections.size(); for (int n = 0; n < count; n++) { if (Phone.DEBUG_PHONE) log("adding fgCall cn " + n + " to droppedDuringPoll"); GsmCdmaConnection cn = (GsmCdmaConnection) connections.get(n); mDroppedDuringPoll.add(cn); for (Connection cn : connections) { if (Phone.DEBUG_PHONE) { log("adding fgCall cn " + cn + "to droppedDuringPoll"); } mDroppedDuringPoll.add((GsmCdmaConnection) cn); } count = mRingingCall.getConnectionsCount(); connections = mRingingCall.getConnections(); // Loop through ringing call connections as // it may contain the known logical connections. for (int n = 0; n < count; n++) { if (Phone.DEBUG_PHONE) log("adding rgCall cn " + n + " to droppedDuringPoll"); GsmCdmaConnection cn = (GsmCdmaConnection) connections.get(n); mDroppedDuringPoll.add(cn); for (Connection cn : connections) { if (Phone.DEBUG_PHONE) { log("adding rgCall cn " + cn + "to droppedDuringPoll"); } mDroppedDuringPoll.add((GsmCdmaConnection) cn); } // Re-start Ecm timer when the connected emergency call ends Loading src/java/com/android/internal/telephony/NetworkTypeController.java +2 −1 Original line number Diff line number Diff line Loading @@ -69,7 +69,8 @@ public class NetworkTypeController extends StateMachine { private static final String STATE_ANY = "any"; private static final String STATE_LEGACY = "legacy"; private static final String[] ALL_STATES = { STATE_CONNECTED_MMWAVE, STATE_CONNECTED, STATE_NOT_RESTRICTED_RRC_IDLE, STATE_NOT_RESTRICTED_RRC_CON, STATE_RESTRICTED }; STATE_NOT_RESTRICTED_RRC_IDLE, STATE_NOT_RESTRICTED_RRC_CON, STATE_RESTRICTED, STATE_LEGACY }; /** Stop all timers and go to current state. */ public static final int EVENT_UPDATE = 0; Loading src/java/com/android/internal/telephony/dataconnection/DataConnection.java +4 −9 Original line number Diff line number Diff line Loading @@ -1300,7 +1300,6 @@ public class DataConnection extends StateMachine { public NetworkCapabilities getNetworkCapabilities() { NetworkCapabilities result = new NetworkCapabilities(); result.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR); boolean areAllApnsUnmetered = false; if (mApnSetting != null) { final String[] types = ApnSetting.getApnTypesStringFromBitmask( Loading Loading @@ -1375,10 +1374,8 @@ public class DataConnection extends StateMachine { // DataConnection has the immutable NOT_METERED capability only if all APNs in the // APN setting are unmetered according to carrier config METERED_APN_TYPES_STRINGS. // All other cases should use the dynamic TEMPORARILY_NOT_METERED capability instead. if (!ApnSettingUtils.isMetered(mApnSetting, mPhone)) { result.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED); areAllApnsUnmetered = true; } result.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED, !ApnSettingUtils.isMetered(mApnSetting, mPhone)); if (result.deduceRestrictedCapability()) { result.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED); Loading @@ -1404,14 +1401,12 @@ public class DataConnection extends StateMachine { result.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_CONGESTED); } // Mark TEMPORARILY_NOT_METERED in the following cases, // Mark TEMPORARILY_NOT_METERED in the following cases: // 1. The non-restricted data is intended for unmetered use only. // 2. DcTracker set an unmetered override due to network/location (eg. 5G). // 3. SubscriptionManager set an unmetered override as requested by policy. // 4. All attached APN contexts for this DataConnection are unmetered if ((mUnmeteredUseOnly && !mRestrictedNetworkOverride) || mUnmeteredOverride || (mSubscriptionOverride & SUBSCRIPTION_OVERRIDE_UNMETERED) != 0 || areAllApnsUnmetered) { || (mSubscriptionOverride & SUBSCRIPTION_OVERRIDE_UNMETERED) != 0) { result.addCapability(NetworkCapabilities.NET_CAPABILITY_TEMPORARILY_NOT_METERED); } else { result.removeCapability(NetworkCapabilities.NET_CAPABILITY_TEMPORARILY_NOT_METERED); Loading src/java/com/android/internal/telephony/dataconnection/DcTracker.java +1 −0 Original line number Diff line number Diff line Loading @@ -2308,6 +2308,7 @@ public class DcTracker extends Handler { setDataProfilesAsNeeded(); setInitialAttachApn(); sortApnContextByPriority(); cleanUpConnectionsOnUpdatedApns(true, Phone.REASON_CARRIER_CHANGE); setupDataOnAllConnectableApns(Phone.REASON_CARRIER_CHANGE, RetryFailures.ALWAYS); } else { log("onCarrierConfigChanged: SIM is not loaded yet."); Loading src/java/com/android/internal/telephony/uicc/euicc/EuiccCard.java +12 −0 Original line number Diff line number Diff line Loading @@ -99,6 +99,9 @@ public class EuiccCard extends UiccCard { private static final String DEV_CAP_EUTRAN = "eutran"; private static final String DEV_CAP_NFC = "nfc"; private static final String DEV_CAP_CRL = "crl"; private static final String DEV_CAP_NREPC = "nrepc"; private static final String DEV_CAP_NR5GC = "nr5gc"; private static final String DEV_CAP_EUTRAN5GC = "eutran5gc"; // These interfaces are used for simplifying the code by leveraging lambdas. private interface ApduRequestBuilder { Loading Loading @@ -1059,6 +1062,15 @@ public class EuiccCard extends UiccCard { case DEV_CAP_CRL: devCapBuilder.addChildAsBytes(Tags.TAG_CTX_7, versionBytes); break; case DEV_CAP_NREPC: devCapBuilder.addChildAsBytes(Tags.TAG_CTX_9, versionBytes); break; case DEV_CAP_NR5GC: devCapBuilder.addChildAsBytes(Tags.TAG_CTX_10, versionBytes); break; case DEV_CAP_EUTRAN5GC: devCapBuilder.addChildAsBytes(Tags.TAG_CTX_11, versionBytes); break; default: loge("Invalid device capability name: " + devCap); break; Loading Loading
src/java/com/android/internal/telephony/GsmCdmaCallTracker.java +12 −10 Original line number Diff line number Diff line Loading @@ -931,19 +931,21 @@ public class GsmCdmaCallTracker extends CallTracker { // Loop through foreground call connections as // it contains the known logical connections. ArrayList<Connection> connections = mForegroundCall.getConnections(); int count = connections.size(); for (int n = 0; n < count; n++) { if (Phone.DEBUG_PHONE) log("adding fgCall cn " + n + " to droppedDuringPoll"); GsmCdmaConnection cn = (GsmCdmaConnection) connections.get(n); mDroppedDuringPoll.add(cn); for (Connection cn : connections) { if (Phone.DEBUG_PHONE) { log("adding fgCall cn " + cn + "to droppedDuringPoll"); } mDroppedDuringPoll.add((GsmCdmaConnection) cn); } count = mRingingCall.getConnectionsCount(); connections = mRingingCall.getConnections(); // Loop through ringing call connections as // it may contain the known logical connections. for (int n = 0; n < count; n++) { if (Phone.DEBUG_PHONE) log("adding rgCall cn " + n + " to droppedDuringPoll"); GsmCdmaConnection cn = (GsmCdmaConnection) connections.get(n); mDroppedDuringPoll.add(cn); for (Connection cn : connections) { if (Phone.DEBUG_PHONE) { log("adding rgCall cn " + cn + "to droppedDuringPoll"); } mDroppedDuringPoll.add((GsmCdmaConnection) cn); } // Re-start Ecm timer when the connected emergency call ends Loading
src/java/com/android/internal/telephony/NetworkTypeController.java +2 −1 Original line number Diff line number Diff line Loading @@ -69,7 +69,8 @@ public class NetworkTypeController extends StateMachine { private static final String STATE_ANY = "any"; private static final String STATE_LEGACY = "legacy"; private static final String[] ALL_STATES = { STATE_CONNECTED_MMWAVE, STATE_CONNECTED, STATE_NOT_RESTRICTED_RRC_IDLE, STATE_NOT_RESTRICTED_RRC_CON, STATE_RESTRICTED }; STATE_NOT_RESTRICTED_RRC_IDLE, STATE_NOT_RESTRICTED_RRC_CON, STATE_RESTRICTED, STATE_LEGACY }; /** Stop all timers and go to current state. */ public static final int EVENT_UPDATE = 0; Loading
src/java/com/android/internal/telephony/dataconnection/DataConnection.java +4 −9 Original line number Diff line number Diff line Loading @@ -1300,7 +1300,6 @@ public class DataConnection extends StateMachine { public NetworkCapabilities getNetworkCapabilities() { NetworkCapabilities result = new NetworkCapabilities(); result.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR); boolean areAllApnsUnmetered = false; if (mApnSetting != null) { final String[] types = ApnSetting.getApnTypesStringFromBitmask( Loading Loading @@ -1375,10 +1374,8 @@ public class DataConnection extends StateMachine { // DataConnection has the immutable NOT_METERED capability only if all APNs in the // APN setting are unmetered according to carrier config METERED_APN_TYPES_STRINGS. // All other cases should use the dynamic TEMPORARILY_NOT_METERED capability instead. if (!ApnSettingUtils.isMetered(mApnSetting, mPhone)) { result.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED); areAllApnsUnmetered = true; } result.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED, !ApnSettingUtils.isMetered(mApnSetting, mPhone)); if (result.deduceRestrictedCapability()) { result.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED); Loading @@ -1404,14 +1401,12 @@ public class DataConnection extends StateMachine { result.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_CONGESTED); } // Mark TEMPORARILY_NOT_METERED in the following cases, // Mark TEMPORARILY_NOT_METERED in the following cases: // 1. The non-restricted data is intended for unmetered use only. // 2. DcTracker set an unmetered override due to network/location (eg. 5G). // 3. SubscriptionManager set an unmetered override as requested by policy. // 4. All attached APN contexts for this DataConnection are unmetered if ((mUnmeteredUseOnly && !mRestrictedNetworkOverride) || mUnmeteredOverride || (mSubscriptionOverride & SUBSCRIPTION_OVERRIDE_UNMETERED) != 0 || areAllApnsUnmetered) { || (mSubscriptionOverride & SUBSCRIPTION_OVERRIDE_UNMETERED) != 0) { result.addCapability(NetworkCapabilities.NET_CAPABILITY_TEMPORARILY_NOT_METERED); } else { result.removeCapability(NetworkCapabilities.NET_CAPABILITY_TEMPORARILY_NOT_METERED); Loading
src/java/com/android/internal/telephony/dataconnection/DcTracker.java +1 −0 Original line number Diff line number Diff line Loading @@ -2308,6 +2308,7 @@ public class DcTracker extends Handler { setDataProfilesAsNeeded(); setInitialAttachApn(); sortApnContextByPriority(); cleanUpConnectionsOnUpdatedApns(true, Phone.REASON_CARRIER_CHANGE); setupDataOnAllConnectableApns(Phone.REASON_CARRIER_CHANGE, RetryFailures.ALWAYS); } else { log("onCarrierConfigChanged: SIM is not loaded yet."); Loading
src/java/com/android/internal/telephony/uicc/euicc/EuiccCard.java +12 −0 Original line number Diff line number Diff line Loading @@ -99,6 +99,9 @@ public class EuiccCard extends UiccCard { private static final String DEV_CAP_EUTRAN = "eutran"; private static final String DEV_CAP_NFC = "nfc"; private static final String DEV_CAP_CRL = "crl"; private static final String DEV_CAP_NREPC = "nrepc"; private static final String DEV_CAP_NR5GC = "nr5gc"; private static final String DEV_CAP_EUTRAN5GC = "eutran5gc"; // These interfaces are used for simplifying the code by leveraging lambdas. private interface ApduRequestBuilder { Loading Loading @@ -1059,6 +1062,15 @@ public class EuiccCard extends UiccCard { case DEV_CAP_CRL: devCapBuilder.addChildAsBytes(Tags.TAG_CTX_7, versionBytes); break; case DEV_CAP_NREPC: devCapBuilder.addChildAsBytes(Tags.TAG_CTX_9, versionBytes); break; case DEV_CAP_NR5GC: devCapBuilder.addChildAsBytes(Tags.TAG_CTX_10, versionBytes); break; case DEV_CAP_EUTRAN5GC: devCapBuilder.addChildAsBytes(Tags.TAG_CTX_11, versionBytes); break; default: loge("Invalid device capability name: " + devCap); break; Loading