Loading src/java/com/android/internal/telephony/DefaultPhoneNotifier.java +1 −23 Original line number Diff line number Diff line Loading @@ -31,13 +31,11 @@ import android.telephony.PreciseCallState; import android.telephony.PreciseDataConnectionState; import android.telephony.ServiceState; import android.telephony.TelephonyDisplayInfo; import android.telephony.TelephonyManager; import android.telephony.TelephonyManager.DataEnabledReason; import android.telephony.TelephonyRegistryManager; import android.telephony.emergency.EmergencyNumber; import android.telephony.ims.ImsReasonInfo; import com.android.internal.telephony.PhoneInternalInterface.DataActivityState; import com.android.telephony.Rlog; import java.util.List; Loading Loading @@ -123,8 +121,7 @@ public class DefaultPhoneNotifier implements PhoneNotifier { @Override public void notifyDataActivity(Phone sender) { int subId = sender.getSubId(); mTelephonyRegistryMgr.notifyDataActivityChanged(subId, convertDataActivityState(sender.getDataActivityState())); mTelephonyRegistryMgr.notifyDataActivityChanged(subId, sender.getDataActivityState()); } @Override Loading Loading @@ -265,25 +262,6 @@ public class DefaultPhoneNotifier implements PhoneNotifier { sender.getSubId(), linkCapacityEstimateList); } /** * Convert the {@link DataActivityState} enum into the TelephonyManager.DATA_* constants for the * public API. */ public static int convertDataActivityState(DataActivityState state) { switch (state) { case DATAIN: return TelephonyManager.DATA_ACTIVITY_IN; case DATAOUT: return TelephonyManager.DATA_ACTIVITY_OUT; case DATAINANDOUT: return TelephonyManager.DATA_ACTIVITY_INOUT; case DORMANT: return TelephonyManager.DATA_ACTIVITY_DORMANT; default: return TelephonyManager.DATA_ACTIVITY_NONE; } } /** * Convert the {@link Call.State} enum into the PreciseCallState.PRECISE_CALL_STATE_* constants * for the public API. Loading src/java/com/android/internal/telephony/GsmCdmaPhone.java +9 −9 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ import android.telecom.PhoneAccountHandle; import android.telecom.TelecomManager; import android.telecom.VideoProfile; import android.telephony.AccessNetworkConstants; import android.telephony.Annotation.DataActivityType; import android.telephony.Annotation.RadioPowerState; import android.telephony.BarringInfo; import android.telephony.CarrierConfigManager; Loading Loading @@ -780,34 +781,33 @@ public class GsmCdmaPhone extends Phone { } @Override public DataActivityState getDataActivityState() { public @DataActivityType int getDataActivityState() { if (isUsingNewDataStack()) { // TODO: Support it correctly. return DataActivityState.NONE; return getDataNetworkController().getDataActivity(); } DataActivityState ret = DataActivityState.NONE; int ret = TelephonyManager.DATA_ACTIVITY_NONE; if (mSST.getCurrentDataConnectionState() == ServiceState.STATE_IN_SERVICE && getDcTracker(AccessNetworkConstants.TRANSPORT_TYPE_WWAN) != null) { switch (getDcTracker(AccessNetworkConstants.TRANSPORT_TYPE_WWAN).getActivity()) { case DATAIN: ret = DataActivityState.DATAIN; ret = TelephonyManager.DATA_ACTIVITY_IN; break; case DATAOUT: ret = DataActivityState.DATAOUT; ret = TelephonyManager.DATA_ACTIVITY_OUT; break; case DATAINANDOUT: ret = DataActivityState.DATAINANDOUT; ret = TelephonyManager.DATA_ACTIVITY_INOUT; break; case DORMANT: ret = DataActivityState.DORMANT; ret = TelephonyManager.DATA_ACTIVITY_DORMANT; break; default: ret = DataActivityState.NONE; ret = TelephonyManager.DATA_ACTIVITY_NONE; break; } } Loading src/java/com/android/internal/telephony/PhoneInternalInterface.java +4 −4 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.os.Message; import android.os.ResultReceiver; import android.os.WorkSource; import android.telecom.VideoProfile; import android.telephony.Annotation.DataActivityType; import android.telephony.ImsiEncryptionInfo; import android.telephony.NetworkScanRequest; import android.telephony.PreciseDataConnectionState; Loading Loading @@ -312,11 +313,10 @@ public interface PhoneInternalInterface { PreciseDataConnectionState getPreciseDataConnectionState(String apnType); /** * Get the current DataActivityState. No change notification exists at this * interface -- use * {@link android.telephony.TelephonyManager} instead. * Get the current data activity. No change notification exists at this * interface. */ DataActivityState getDataActivityState(); @DataActivityType int getDataActivityState(); /** * Returns a list of MMI codes that are pending. (They have initiated Loading src/java/com/android/internal/telephony/data/DataNetwork.java +26 −15 Original line number Diff line number Diff line Loading @@ -89,6 +89,7 @@ import com.android.internal.telephony.data.DataEvaluation.DataAllowedReason; import com.android.internal.telephony.data.DataNetworkController.NetworkRequestList; import com.android.internal.telephony.data.DataRetryManager.DataHandoverRetryEntry; import com.android.internal.telephony.data.DataRetryManager.DataRetryEntry; import com.android.internal.telephony.data.LinkBandwidthEstimator.LinkBandwidthEstimatorCallback; import com.android.internal.telephony.data.TelephonyNetworkAgent.TelephonyNetworkAgentCallback; import com.android.internal.telephony.metrics.DataCallSessionStats; import com.android.internal.telephony.metrics.TelephonyMetrics; Loading Loading @@ -181,9 +182,6 @@ public class DataNetwork extends StateMachine { /** Event for bandwidth estimation from the modem changed. */ private static final int EVENT_BANDWIDTH_ESTIMATE_FROM_MODEM_CHANGED = 11; /** Event for bandwidth estimation from the bandwidth estimator changed. */ private static final int EVENT_BANDWIDTH_ESTIMATE_FROM_BANDWIDTH_ESTIMATOR_CHANGED = 12; /** Event for display info changed. This is for getting 5G NSA or mmwave information. */ private static final int EVENT_DISPLAY_INFO_CHANGED = 13; Loading Loading @@ -619,6 +617,11 @@ public class DataNetwork extends StateMachine { */ private int mCarrierServicePackageUid = Process.INVALID_UID; /** * Link bandwidth estimator callback for receiving latest link bandwidth information. */ private @Nullable LinkBandwidthEstimatorCallback mLinkBandwidthEstimatorCallback; /** * The network bandwidth. */ Loading Loading @@ -956,7 +959,6 @@ public class DataNetwork extends StateMachine { mPhone.getServiceStateTracker().registerForDataRegStateOrRatChanged( transport, getHandler(), EVENT_SERVICE_STATE_CHANGED, transport); } mPhone.getCarrierPrivilegesTracker().registerCarrierPrivilegesListener(getHandler(), EVENT_CARRIER_PRIVILEGED_UIDS_CHANGED, null); Loading @@ -969,6 +971,7 @@ public class DataNetwork extends StateMachine { @Override public void exit() { logv("Unregistering all events."); mPhone.getCarrierPrivilegesTracker().unregisterCarrierPrivilegesListener(getHandler()); for (int transport : mAccessNetworksManager.getAvailableTransports()) { mDataServiceManagers.get(transport) .unregisterForDataCallListChanged(getHandler()); Loading Loading @@ -1029,7 +1032,6 @@ public class DataNetwork extends StateMachine { break; } case EVENT_BANDWIDTH_ESTIMATE_FROM_MODEM_CHANGED: case EVENT_BANDWIDTH_ESTIMATE_FROM_BANDWIDTH_ESTIMATOR_CHANGED: case EVENT_TEAR_DOWN_NETWORK: case EVENT_PCO_DATA_RECEIVED: case EVENT_STUCK_IN_TRANSIENT_STATE: Loading Loading @@ -1217,11 +1219,6 @@ public class DataNetwork extends StateMachine { } onBandwidthUpdatedFromModem((List<LinkCapacityEstimate>) ar.result); break; case EVENT_BANDWIDTH_ESTIMATE_FROM_BANDWIDTH_ESTIMATOR_CHANGED: ar = (AsyncResult) msg.obj; Pair<Integer, Integer> pair = (Pair<Integer, Integer>) ar.result; onBandwidthUpdated(pair.first, pair.second); break; case EVENT_DISPLAY_INFO_CHANGED: onDisplayInfoChanged(); break; Loading Loading @@ -1571,8 +1568,20 @@ public class DataNetwork extends StateMachine { mPhone.mCi.registerForLceInfo( getHandler(), EVENT_BANDWIDTH_ESTIMATE_FROM_MODEM_CHANGED, null); } else if (bandwidthEstimateSource == BANDWIDTH_SOURCE_BANDWIDTH_ESTIMATOR) { mPhone.getLinkBandwidthEstimator().registerForBandwidthChanged( getHandler(), EVENT_BANDWIDTH_ESTIMATE_FROM_BANDWIDTH_ESTIMATOR_CHANGED, null); if (mLinkBandwidthEstimatorCallback == null) { mLinkBandwidthEstimatorCallback = new LinkBandwidthEstimatorCallback(getHandler()::post) { @Override public void onBandwidthChanged(int uplinkBandwidthKbps, int downlinkBandwidthKbps) { if (isConnected()) { onBandwidthUpdated(uplinkBandwidthKbps, downlinkBandwidthKbps); } } }; mPhone.getLinkBandwidthEstimator().registerCallback( mLinkBandwidthEstimatorCallback); } } else { loge("Invalid bandwidth source configuration: " + bandwidthEstimateSource); } Loading @@ -1586,7 +1595,11 @@ public class DataNetwork extends StateMachine { if (bandwidthEstimateSource == BANDWIDTH_SOURCE_MODEM) { mPhone.mCi.unregisterForLceInfo(getHandler()); } else if (bandwidthEstimateSource == BANDWIDTH_SOURCE_BANDWIDTH_ESTIMATOR) { mPhone.getLinkBandwidthEstimator().unregisterForBandwidthChanged(getHandler()); if (mLinkBandwidthEstimatorCallback != null) { mPhone.getLinkBandwidthEstimator() .unregisterCallback(mLinkBandwidthEstimatorCallback); mLinkBandwidthEstimatorCallback = null; } } else { loge("Invalid bandwidth source configuration: " + bandwidthEstimateSource); } Loading Loading @@ -3036,8 +3049,6 @@ public class DataNetwork extends StateMachine { return "EVENT_DETACH_ALL_NETWORK_REQUESTS"; case EVENT_BANDWIDTH_ESTIMATE_FROM_MODEM_CHANGED: return "EVENT_BANDWIDTH_ESTIMATE_FROM_MODEM_CHANGED"; case EVENT_BANDWIDTH_ESTIMATE_FROM_BANDWIDTH_ESTIMATOR_CHANGED: return "EVENT_BANDWIDTH_ESTIMATE_FROM_BANDWIDTH_ESTIMATOR_CHANGED"; case EVENT_DISPLAY_INFO_CHANGED: return "EVENT_DISPLAY_INFO_CHANGED"; case EVENT_START_HANDOVER: Loading src/java/com/android/internal/telephony/data/DataNetworkController.java +54 −6 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import android.telephony.AccessNetworkConstants; import android.telephony.AccessNetworkConstants.AccessNetworkType; import android.telephony.AccessNetworkConstants.RadioAccessNetworkType; import android.telephony.AccessNetworkConstants.TransportType; import android.telephony.Annotation.DataActivityType; import android.telephony.Annotation.DataFailureCause; import android.telephony.Annotation.NetCapability; import android.telephony.Annotation.NetworkType; Loading Loading @@ -96,6 +97,7 @@ import com.android.internal.telephony.data.DataRetryManager.DataRetryManagerCall import com.android.internal.telephony.data.DataRetryManager.DataSetupRetryEntry; import com.android.internal.telephony.data.DataSettingsManager.DataSettingsManagerCallback; import com.android.internal.telephony.data.DataStallRecoveryManager.DataStallRecoveryManagerCallback; import com.android.internal.telephony.data.LinkBandwidthEstimator.LinkBandwidthEstimatorCallback; import com.android.internal.telephony.ims.ImsResolver; import com.android.internal.telephony.util.TelephonyUtils; import com.android.telephony.Rlog; Loading Loading @@ -311,6 +313,9 @@ public class DataNetworkController extends Handler { /** SIM state. */ private @SimState int mSimState = TelephonyManager.SIM_STATE_UNKNOWN; /** Data activity. */ private @DataActivityType int mDataActivity = TelephonyManager.DATA_ACTIVITY_NONE; /** * IMS state callbacks. Key is the IMS feature, value is the callback. */ Loading Loading @@ -586,12 +591,6 @@ public class DataNetworkController extends Handler { * @param transport The transport of the data service. */ public void onDataServiceBound(@TransportType int transport) {} /** * Called when DataNetwork is frequently attempted to be torn down due to Network Unwanted * call from connectivity service */ public void onTrackNetworkUnwanted() {} } /** Loading Loading @@ -993,6 +992,15 @@ public class DataNetworkController extends Handler { this, EVENT_VOICE_CALL_ENDED, null); } mPhone.mCi.registerForSlicingConfigChanged(this, EVENT_SLICE_CONFIG_CHANGED, null); mPhone.getLinkBandwidthEstimator().registerCallback( new LinkBandwidthEstimatorCallback(this::post) { @Override public void onDataActivityChanged(@DataActivityType int dataActivity) { DataNetworkController.this.updateDataActivity(); } } ); } @Override Loading Loading @@ -1935,6 +1943,37 @@ public class DataNetworkController extends Handler { return false; } /** * @return {@code true} if data is dormant. */ private boolean isDataDormant() { return mDataNetworkList.stream().anyMatch( dataNetwork -> dataNetwork.getLinkStatus() == DataCallResponse.LINK_STATUS_DORMANT) && mDataNetworkList.stream().noneMatch( dataNetwork -> dataNetwork.getLinkStatus() == DataCallResponse.LINK_STATUS_ACTIVE); } /** * Update data activity. */ private void updateDataActivity() { int dataActivity = TelephonyManager.DATA_ACTIVITY_NONE; if (isDataDormant()) { dataActivity = TelephonyManager.DATA_ACTIVITY_DORMANT; } else if (mPhone.getLinkBandwidthEstimator() != null) { dataActivity = mPhone.getLinkBandwidthEstimator().getDataActivity(); } if (mDataActivity != dataActivity) { logv("updateDataActivity: dataActivity=" + DataUtils.dataActivityToString(dataActivity)); mDataActivity = dataActivity; mPhone.notifyDataActivity(); } } /** * Remove a network request, which is originated from the apps. Note that remove a network * will not result in tearing down the network. The tear down request directly comes from Loading Loading @@ -2866,6 +2905,8 @@ public class DataNetworkController extends Handler { mDataNetworkControllerCallbacks.forEach(callback -> callback.invokeFromExecutor( () -> callback.onPhysicalLinkStatusChanged(mInternetLinkStatus))); } updateDataActivity(); } /** Loading Loading @@ -3184,6 +3225,13 @@ public class DataNetworkController extends Handler { return NetworkRegistrationInfo.REGISTRATION_STATE_UNKNOWN; } /** * @return The data activity. Note this is only updated when screen is on. */ public @DataActivityType int getDataActivity() { return mDataActivity; } /** * Register data network controller callback. * Loading Loading
src/java/com/android/internal/telephony/DefaultPhoneNotifier.java +1 −23 Original line number Diff line number Diff line Loading @@ -31,13 +31,11 @@ import android.telephony.PreciseCallState; import android.telephony.PreciseDataConnectionState; import android.telephony.ServiceState; import android.telephony.TelephonyDisplayInfo; import android.telephony.TelephonyManager; import android.telephony.TelephonyManager.DataEnabledReason; import android.telephony.TelephonyRegistryManager; import android.telephony.emergency.EmergencyNumber; import android.telephony.ims.ImsReasonInfo; import com.android.internal.telephony.PhoneInternalInterface.DataActivityState; import com.android.telephony.Rlog; import java.util.List; Loading Loading @@ -123,8 +121,7 @@ public class DefaultPhoneNotifier implements PhoneNotifier { @Override public void notifyDataActivity(Phone sender) { int subId = sender.getSubId(); mTelephonyRegistryMgr.notifyDataActivityChanged(subId, convertDataActivityState(sender.getDataActivityState())); mTelephonyRegistryMgr.notifyDataActivityChanged(subId, sender.getDataActivityState()); } @Override Loading Loading @@ -265,25 +262,6 @@ public class DefaultPhoneNotifier implements PhoneNotifier { sender.getSubId(), linkCapacityEstimateList); } /** * Convert the {@link DataActivityState} enum into the TelephonyManager.DATA_* constants for the * public API. */ public static int convertDataActivityState(DataActivityState state) { switch (state) { case DATAIN: return TelephonyManager.DATA_ACTIVITY_IN; case DATAOUT: return TelephonyManager.DATA_ACTIVITY_OUT; case DATAINANDOUT: return TelephonyManager.DATA_ACTIVITY_INOUT; case DORMANT: return TelephonyManager.DATA_ACTIVITY_DORMANT; default: return TelephonyManager.DATA_ACTIVITY_NONE; } } /** * Convert the {@link Call.State} enum into the PreciseCallState.PRECISE_CALL_STATE_* constants * for the public API. Loading
src/java/com/android/internal/telephony/GsmCdmaPhone.java +9 −9 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ import android.telecom.PhoneAccountHandle; import android.telecom.TelecomManager; import android.telecom.VideoProfile; import android.telephony.AccessNetworkConstants; import android.telephony.Annotation.DataActivityType; import android.telephony.Annotation.RadioPowerState; import android.telephony.BarringInfo; import android.telephony.CarrierConfigManager; Loading Loading @@ -780,34 +781,33 @@ public class GsmCdmaPhone extends Phone { } @Override public DataActivityState getDataActivityState() { public @DataActivityType int getDataActivityState() { if (isUsingNewDataStack()) { // TODO: Support it correctly. return DataActivityState.NONE; return getDataNetworkController().getDataActivity(); } DataActivityState ret = DataActivityState.NONE; int ret = TelephonyManager.DATA_ACTIVITY_NONE; if (mSST.getCurrentDataConnectionState() == ServiceState.STATE_IN_SERVICE && getDcTracker(AccessNetworkConstants.TRANSPORT_TYPE_WWAN) != null) { switch (getDcTracker(AccessNetworkConstants.TRANSPORT_TYPE_WWAN).getActivity()) { case DATAIN: ret = DataActivityState.DATAIN; ret = TelephonyManager.DATA_ACTIVITY_IN; break; case DATAOUT: ret = DataActivityState.DATAOUT; ret = TelephonyManager.DATA_ACTIVITY_OUT; break; case DATAINANDOUT: ret = DataActivityState.DATAINANDOUT; ret = TelephonyManager.DATA_ACTIVITY_INOUT; break; case DORMANT: ret = DataActivityState.DORMANT; ret = TelephonyManager.DATA_ACTIVITY_DORMANT; break; default: ret = DataActivityState.NONE; ret = TelephonyManager.DATA_ACTIVITY_NONE; break; } } Loading
src/java/com/android/internal/telephony/PhoneInternalInterface.java +4 −4 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.os.Message; import android.os.ResultReceiver; import android.os.WorkSource; import android.telecom.VideoProfile; import android.telephony.Annotation.DataActivityType; import android.telephony.ImsiEncryptionInfo; import android.telephony.NetworkScanRequest; import android.telephony.PreciseDataConnectionState; Loading Loading @@ -312,11 +313,10 @@ public interface PhoneInternalInterface { PreciseDataConnectionState getPreciseDataConnectionState(String apnType); /** * Get the current DataActivityState. No change notification exists at this * interface -- use * {@link android.telephony.TelephonyManager} instead. * Get the current data activity. No change notification exists at this * interface. */ DataActivityState getDataActivityState(); @DataActivityType int getDataActivityState(); /** * Returns a list of MMI codes that are pending. (They have initiated Loading
src/java/com/android/internal/telephony/data/DataNetwork.java +26 −15 Original line number Diff line number Diff line Loading @@ -89,6 +89,7 @@ import com.android.internal.telephony.data.DataEvaluation.DataAllowedReason; import com.android.internal.telephony.data.DataNetworkController.NetworkRequestList; import com.android.internal.telephony.data.DataRetryManager.DataHandoverRetryEntry; import com.android.internal.telephony.data.DataRetryManager.DataRetryEntry; import com.android.internal.telephony.data.LinkBandwidthEstimator.LinkBandwidthEstimatorCallback; import com.android.internal.telephony.data.TelephonyNetworkAgent.TelephonyNetworkAgentCallback; import com.android.internal.telephony.metrics.DataCallSessionStats; import com.android.internal.telephony.metrics.TelephonyMetrics; Loading Loading @@ -181,9 +182,6 @@ public class DataNetwork extends StateMachine { /** Event for bandwidth estimation from the modem changed. */ private static final int EVENT_BANDWIDTH_ESTIMATE_FROM_MODEM_CHANGED = 11; /** Event for bandwidth estimation from the bandwidth estimator changed. */ private static final int EVENT_BANDWIDTH_ESTIMATE_FROM_BANDWIDTH_ESTIMATOR_CHANGED = 12; /** Event for display info changed. This is for getting 5G NSA or mmwave information. */ private static final int EVENT_DISPLAY_INFO_CHANGED = 13; Loading Loading @@ -619,6 +617,11 @@ public class DataNetwork extends StateMachine { */ private int mCarrierServicePackageUid = Process.INVALID_UID; /** * Link bandwidth estimator callback for receiving latest link bandwidth information. */ private @Nullable LinkBandwidthEstimatorCallback mLinkBandwidthEstimatorCallback; /** * The network bandwidth. */ Loading Loading @@ -956,7 +959,6 @@ public class DataNetwork extends StateMachine { mPhone.getServiceStateTracker().registerForDataRegStateOrRatChanged( transport, getHandler(), EVENT_SERVICE_STATE_CHANGED, transport); } mPhone.getCarrierPrivilegesTracker().registerCarrierPrivilegesListener(getHandler(), EVENT_CARRIER_PRIVILEGED_UIDS_CHANGED, null); Loading @@ -969,6 +971,7 @@ public class DataNetwork extends StateMachine { @Override public void exit() { logv("Unregistering all events."); mPhone.getCarrierPrivilegesTracker().unregisterCarrierPrivilegesListener(getHandler()); for (int transport : mAccessNetworksManager.getAvailableTransports()) { mDataServiceManagers.get(transport) .unregisterForDataCallListChanged(getHandler()); Loading Loading @@ -1029,7 +1032,6 @@ public class DataNetwork extends StateMachine { break; } case EVENT_BANDWIDTH_ESTIMATE_FROM_MODEM_CHANGED: case EVENT_BANDWIDTH_ESTIMATE_FROM_BANDWIDTH_ESTIMATOR_CHANGED: case EVENT_TEAR_DOWN_NETWORK: case EVENT_PCO_DATA_RECEIVED: case EVENT_STUCK_IN_TRANSIENT_STATE: Loading Loading @@ -1217,11 +1219,6 @@ public class DataNetwork extends StateMachine { } onBandwidthUpdatedFromModem((List<LinkCapacityEstimate>) ar.result); break; case EVENT_BANDWIDTH_ESTIMATE_FROM_BANDWIDTH_ESTIMATOR_CHANGED: ar = (AsyncResult) msg.obj; Pair<Integer, Integer> pair = (Pair<Integer, Integer>) ar.result; onBandwidthUpdated(pair.first, pair.second); break; case EVENT_DISPLAY_INFO_CHANGED: onDisplayInfoChanged(); break; Loading Loading @@ -1571,8 +1568,20 @@ public class DataNetwork extends StateMachine { mPhone.mCi.registerForLceInfo( getHandler(), EVENT_BANDWIDTH_ESTIMATE_FROM_MODEM_CHANGED, null); } else if (bandwidthEstimateSource == BANDWIDTH_SOURCE_BANDWIDTH_ESTIMATOR) { mPhone.getLinkBandwidthEstimator().registerForBandwidthChanged( getHandler(), EVENT_BANDWIDTH_ESTIMATE_FROM_BANDWIDTH_ESTIMATOR_CHANGED, null); if (mLinkBandwidthEstimatorCallback == null) { mLinkBandwidthEstimatorCallback = new LinkBandwidthEstimatorCallback(getHandler()::post) { @Override public void onBandwidthChanged(int uplinkBandwidthKbps, int downlinkBandwidthKbps) { if (isConnected()) { onBandwidthUpdated(uplinkBandwidthKbps, downlinkBandwidthKbps); } } }; mPhone.getLinkBandwidthEstimator().registerCallback( mLinkBandwidthEstimatorCallback); } } else { loge("Invalid bandwidth source configuration: " + bandwidthEstimateSource); } Loading @@ -1586,7 +1595,11 @@ public class DataNetwork extends StateMachine { if (bandwidthEstimateSource == BANDWIDTH_SOURCE_MODEM) { mPhone.mCi.unregisterForLceInfo(getHandler()); } else if (bandwidthEstimateSource == BANDWIDTH_SOURCE_BANDWIDTH_ESTIMATOR) { mPhone.getLinkBandwidthEstimator().unregisterForBandwidthChanged(getHandler()); if (mLinkBandwidthEstimatorCallback != null) { mPhone.getLinkBandwidthEstimator() .unregisterCallback(mLinkBandwidthEstimatorCallback); mLinkBandwidthEstimatorCallback = null; } } else { loge("Invalid bandwidth source configuration: " + bandwidthEstimateSource); } Loading Loading @@ -3036,8 +3049,6 @@ public class DataNetwork extends StateMachine { return "EVENT_DETACH_ALL_NETWORK_REQUESTS"; case EVENT_BANDWIDTH_ESTIMATE_FROM_MODEM_CHANGED: return "EVENT_BANDWIDTH_ESTIMATE_FROM_MODEM_CHANGED"; case EVENT_BANDWIDTH_ESTIMATE_FROM_BANDWIDTH_ESTIMATOR_CHANGED: return "EVENT_BANDWIDTH_ESTIMATE_FROM_BANDWIDTH_ESTIMATOR_CHANGED"; case EVENT_DISPLAY_INFO_CHANGED: return "EVENT_DISPLAY_INFO_CHANGED"; case EVENT_START_HANDOVER: Loading
src/java/com/android/internal/telephony/data/DataNetworkController.java +54 −6 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import android.telephony.AccessNetworkConstants; import android.telephony.AccessNetworkConstants.AccessNetworkType; import android.telephony.AccessNetworkConstants.RadioAccessNetworkType; import android.telephony.AccessNetworkConstants.TransportType; import android.telephony.Annotation.DataActivityType; import android.telephony.Annotation.DataFailureCause; import android.telephony.Annotation.NetCapability; import android.telephony.Annotation.NetworkType; Loading Loading @@ -96,6 +97,7 @@ import com.android.internal.telephony.data.DataRetryManager.DataRetryManagerCall import com.android.internal.telephony.data.DataRetryManager.DataSetupRetryEntry; import com.android.internal.telephony.data.DataSettingsManager.DataSettingsManagerCallback; import com.android.internal.telephony.data.DataStallRecoveryManager.DataStallRecoveryManagerCallback; import com.android.internal.telephony.data.LinkBandwidthEstimator.LinkBandwidthEstimatorCallback; import com.android.internal.telephony.ims.ImsResolver; import com.android.internal.telephony.util.TelephonyUtils; import com.android.telephony.Rlog; Loading Loading @@ -311,6 +313,9 @@ public class DataNetworkController extends Handler { /** SIM state. */ private @SimState int mSimState = TelephonyManager.SIM_STATE_UNKNOWN; /** Data activity. */ private @DataActivityType int mDataActivity = TelephonyManager.DATA_ACTIVITY_NONE; /** * IMS state callbacks. Key is the IMS feature, value is the callback. */ Loading Loading @@ -586,12 +591,6 @@ public class DataNetworkController extends Handler { * @param transport The transport of the data service. */ public void onDataServiceBound(@TransportType int transport) {} /** * Called when DataNetwork is frequently attempted to be torn down due to Network Unwanted * call from connectivity service */ public void onTrackNetworkUnwanted() {} } /** Loading Loading @@ -993,6 +992,15 @@ public class DataNetworkController extends Handler { this, EVENT_VOICE_CALL_ENDED, null); } mPhone.mCi.registerForSlicingConfigChanged(this, EVENT_SLICE_CONFIG_CHANGED, null); mPhone.getLinkBandwidthEstimator().registerCallback( new LinkBandwidthEstimatorCallback(this::post) { @Override public void onDataActivityChanged(@DataActivityType int dataActivity) { DataNetworkController.this.updateDataActivity(); } } ); } @Override Loading Loading @@ -1935,6 +1943,37 @@ public class DataNetworkController extends Handler { return false; } /** * @return {@code true} if data is dormant. */ private boolean isDataDormant() { return mDataNetworkList.stream().anyMatch( dataNetwork -> dataNetwork.getLinkStatus() == DataCallResponse.LINK_STATUS_DORMANT) && mDataNetworkList.stream().noneMatch( dataNetwork -> dataNetwork.getLinkStatus() == DataCallResponse.LINK_STATUS_ACTIVE); } /** * Update data activity. */ private void updateDataActivity() { int dataActivity = TelephonyManager.DATA_ACTIVITY_NONE; if (isDataDormant()) { dataActivity = TelephonyManager.DATA_ACTIVITY_DORMANT; } else if (mPhone.getLinkBandwidthEstimator() != null) { dataActivity = mPhone.getLinkBandwidthEstimator().getDataActivity(); } if (mDataActivity != dataActivity) { logv("updateDataActivity: dataActivity=" + DataUtils.dataActivityToString(dataActivity)); mDataActivity = dataActivity; mPhone.notifyDataActivity(); } } /** * Remove a network request, which is originated from the apps. Note that remove a network * will not result in tearing down the network. The tear down request directly comes from Loading Loading @@ -2866,6 +2905,8 @@ public class DataNetworkController extends Handler { mDataNetworkControllerCallbacks.forEach(callback -> callback.invokeFromExecutor( () -> callback.onPhysicalLinkStatusChanged(mInternetLinkStatus))); } updateDataActivity(); } /** Loading Loading @@ -3184,6 +3225,13 @@ public class DataNetworkController extends Handler { return NetworkRegistrationInfo.REGISTRATION_STATE_UNKNOWN; } /** * @return The data activity. Note this is only updated when screen is on. */ public @DataActivityType int getDataActivity() { return mDataActivity; } /** * Register data network controller callback. * Loading