Loading proto/src/telephony.proto +3 −0 Original line number Diff line number Diff line Loading @@ -931,6 +931,9 @@ message TelephonyEvent { /** Data switch caused by CBRS switch. */ DATA_SWITCH_REASON_CBRS = 3; /** Data switch caused by non-default SIM having better availability(e.g.signal). */ DATA_SWITCH_REASON_AUTO = 4; } /** The reason for data switch. */ Loading src/java/com/android/internal/telephony/ServiceStateTracker.java +3 −2 Original line number Diff line number Diff line Loading @@ -4947,9 +4947,10 @@ public class ServiceStateTracker extends Handler { * * @param h handler to notify * @param what what code of message when delivered * @param userobj the user obj that will be passed back when notify */ public void registerForServiceStateChanged(Handler h, int what) { mServiceStateChangedRegistrants.addUnique(h, what, null); public void registerForServiceStateChanged(Handler h, int what, Object userobj) { mServiceStateChangedRegistrants.addUnique(h, what, userobj); } /** Loading src/java/com/android/internal/telephony/data/DataConfigManager.java +49 −0 Original line number Diff line number Diff line Loading @@ -76,6 +76,12 @@ public class DataConfigManager extends Handler { /** The default timeout in ms for data network stuck in a transit state. */ private static final int DEFAULT_NETWORK_TRANSIT_STATE_TIMEOUT_MS = 300000; /** Default time threshold in ms to define a internet connection status to be stable. */ public static int DEFAULT_AUTO_DATA_SWITCH_STABILITY_TIME_MS = 10000; /** The max number of retries when a pre-switching validation fails. */ public static int DEFAULT_AUTO_DATA_SWITCH_MAX_RETRY = 7; /** Event for carrier config changed. */ private static final int EVENT_CARRIER_CONFIG_CHANGED = 1; Loading Loading @@ -218,6 +224,12 @@ public class DataConfigManager extends Handler { "anomaly_network_handover_timeout"; /** DeviceConfig key of anomaly report: True for enabling APN config invalidity detection */ private static final String KEY_ANOMALY_APN_CONFIG_ENABLED = "anomaly_apn_config_enabled"; /** DeviceConfig key of the time threshold in ms for defining a network status to be stable. **/ private static final String KEY_AUTO_DATA_SWITCH_AVAILABILITY_STABILITY_TIME_THRESHOLD = "auto_data_switch_availability_stability_time_threshold"; /** DeviceConfig key of the maximum number of retries when a validation for switching failed.**/ private static final String KEY_AUTO_DATA_SWITCH_VALIDATION_MAX_RETRY = "auto_data_switch_validation_max_retry"; /** Anomaly report thresholds for frequent setup data call failure. */ private EventFrequency mSetupDataCallAnomalyReportThreshold; Loading Loading @@ -260,6 +272,18 @@ public class DataConfigManager extends Handler { */ private boolean mIsApnConfigAnomalyReportEnabled; /** * Time threshold in ms to define a internet connection status to be stable(e.g. out of service, * in service, wifi is the default active network.etc), while -1 indicates auto switch feature * disabled. */ private long mAutoDataSwitchAvailabilityStabilityTimeThreshold; /** * The maximum number of retries when a pre-switching validation fails. */ private int mAutoDataSwitchValidationMaxRetry; private @NonNull final Phone mPhone; private @NonNull final String mLogTag; Loading Loading @@ -425,6 +449,12 @@ public class DataConfigManager extends Handler { KEY_ANOMALY_NETWORK_HANDOVER_TIMEOUT, DEFAULT_NETWORK_TRANSIT_STATE_TIMEOUT_MS); mIsApnConfigAnomalyReportEnabled = properties.getBoolean( KEY_ANOMALY_APN_CONFIG_ENABLED, false); mAutoDataSwitchAvailabilityStabilityTimeThreshold = properties.getInt( KEY_AUTO_DATA_SWITCH_AVAILABILITY_STABILITY_TIME_THRESHOLD, DEFAULT_AUTO_DATA_SWITCH_STABILITY_TIME_MS); mAutoDataSwitchValidationMaxRetry = properties.getInt( KEY_AUTO_DATA_SWITCH_VALIDATION_MAX_RETRY, DEFAULT_AUTO_DATA_SWITCH_MAX_RETRY); } /** Loading Loading @@ -900,6 +930,22 @@ public class DataConfigManager extends Handler { return mIsApnConfigAnomalyReportEnabled; } /** * @return The maximum number of retries when a validation for switching failed. */ public int getAutoDataSwitchValidationMaxRetry() { return mAutoDataSwitchValidationMaxRetry; } /** * @return Time threshold in ms to define a internet connection status to be stable * (e.g. out of service, in service, wifi is the default active network.etc), while -1 indicates * auto switch feature disabled. */ public long getAutoDataSwitchAvailabilityStabilityTimeThreshold() { return mAutoDataSwitchAvailabilityStabilityTimeThreshold; } /** * Get the TCP config string, used by {@link LinkProperties#setTcpBufferSizes(String)}. * The config string will have the following form, with values in bytes: Loading Loading @@ -1280,6 +1326,9 @@ public class DataConfigManager extends Handler { pw.println("mNetworkDisconnectingTimeout=" + mNetworkDisconnectingTimeout); pw.println("mNetworkHandoverTimeout=" + mNetworkHandoverTimeout); pw.println("mIsApnConfigAnomalyReportEnabled=" + mIsApnConfigAnomalyReportEnabled); pw.println("mAutoDataSwitchAvailabilityStabilityTimeThreshold=" + mAutoDataSwitchAvailabilityStabilityTimeThreshold); pw.println("mAutoDataSwitchValidationMaxRetry=" + mAutoDataSwitchValidationMaxRetry); pw.println("Metered APN types=" + mMeteredApnTypes.stream() .map(ApnSetting::getApnTypeString).collect(Collectors.joining(","))); pw.println("Roaming metered APN types=" + mRoamingMeteredApnTypes.stream() Loading src/java/com/android/internal/telephony/data/DataNetwork.java +1 −1 Original line number Diff line number Diff line Loading @@ -1024,7 +1024,7 @@ public class DataNetwork extends StateMachine { mPhone.getDisplayInfoController().registerForTelephonyDisplayInfoChanged( getHandler(), EVENT_DISPLAY_INFO_CHANGED, null); mPhone.getServiceStateTracker().registerForServiceStateChanged(getHandler(), EVENT_SERVICE_STATE_CHANGED); EVENT_SERVICE_STATE_CHANGED, null); for (int transport : mAccessNetworksManager.getAvailableTransports()) { mDataServiceManagers.get(transport) .registerForDataCallListChanged(getHandler(), EVENT_DATA_STATE_CHANGED); Loading src/java/com/android/internal/telephony/data/DataNetworkController.java +2 −2 Original line number Diff line number Diff line Loading @@ -969,7 +969,7 @@ public class DataNetworkController extends Handler { }); mPhone.getServiceStateTracker().registerForServiceStateChanged(this, EVENT_SERVICE_STATE_CHANGED); EVENT_SERVICE_STATE_CHANGED, null); mDataConfigManager.registerCallback(new DataConfigManagerCallback(this::post) { @Override public void onCarrierConfigChanged() { Loading @@ -991,7 +991,7 @@ public class DataNetworkController extends Handler { if (!mAccessNetworksManager.isInLegacyMode()) { mPhone.getServiceStateTracker().registerForServiceStateChanged(this, EVENT_SERVICE_STATE_CHANGED); EVENT_SERVICE_STATE_CHANGED, null); mDataServiceManagers.get(AccessNetworkConstants.TRANSPORT_TYPE_WLAN) .registerForServiceBindingChanged(this, EVENT_DATA_SERVICE_BINDING_CHANGED); } Loading Loading
proto/src/telephony.proto +3 −0 Original line number Diff line number Diff line Loading @@ -931,6 +931,9 @@ message TelephonyEvent { /** Data switch caused by CBRS switch. */ DATA_SWITCH_REASON_CBRS = 3; /** Data switch caused by non-default SIM having better availability(e.g.signal). */ DATA_SWITCH_REASON_AUTO = 4; } /** The reason for data switch. */ Loading
src/java/com/android/internal/telephony/ServiceStateTracker.java +3 −2 Original line number Diff line number Diff line Loading @@ -4947,9 +4947,10 @@ public class ServiceStateTracker extends Handler { * * @param h handler to notify * @param what what code of message when delivered * @param userobj the user obj that will be passed back when notify */ public void registerForServiceStateChanged(Handler h, int what) { mServiceStateChangedRegistrants.addUnique(h, what, null); public void registerForServiceStateChanged(Handler h, int what, Object userobj) { mServiceStateChangedRegistrants.addUnique(h, what, userobj); } /** Loading
src/java/com/android/internal/telephony/data/DataConfigManager.java +49 −0 Original line number Diff line number Diff line Loading @@ -76,6 +76,12 @@ public class DataConfigManager extends Handler { /** The default timeout in ms for data network stuck in a transit state. */ private static final int DEFAULT_NETWORK_TRANSIT_STATE_TIMEOUT_MS = 300000; /** Default time threshold in ms to define a internet connection status to be stable. */ public static int DEFAULT_AUTO_DATA_SWITCH_STABILITY_TIME_MS = 10000; /** The max number of retries when a pre-switching validation fails. */ public static int DEFAULT_AUTO_DATA_SWITCH_MAX_RETRY = 7; /** Event for carrier config changed. */ private static final int EVENT_CARRIER_CONFIG_CHANGED = 1; Loading Loading @@ -218,6 +224,12 @@ public class DataConfigManager extends Handler { "anomaly_network_handover_timeout"; /** DeviceConfig key of anomaly report: True for enabling APN config invalidity detection */ private static final String KEY_ANOMALY_APN_CONFIG_ENABLED = "anomaly_apn_config_enabled"; /** DeviceConfig key of the time threshold in ms for defining a network status to be stable. **/ private static final String KEY_AUTO_DATA_SWITCH_AVAILABILITY_STABILITY_TIME_THRESHOLD = "auto_data_switch_availability_stability_time_threshold"; /** DeviceConfig key of the maximum number of retries when a validation for switching failed.**/ private static final String KEY_AUTO_DATA_SWITCH_VALIDATION_MAX_RETRY = "auto_data_switch_validation_max_retry"; /** Anomaly report thresholds for frequent setup data call failure. */ private EventFrequency mSetupDataCallAnomalyReportThreshold; Loading Loading @@ -260,6 +272,18 @@ public class DataConfigManager extends Handler { */ private boolean mIsApnConfigAnomalyReportEnabled; /** * Time threshold in ms to define a internet connection status to be stable(e.g. out of service, * in service, wifi is the default active network.etc), while -1 indicates auto switch feature * disabled. */ private long mAutoDataSwitchAvailabilityStabilityTimeThreshold; /** * The maximum number of retries when a pre-switching validation fails. */ private int mAutoDataSwitchValidationMaxRetry; private @NonNull final Phone mPhone; private @NonNull final String mLogTag; Loading Loading @@ -425,6 +449,12 @@ public class DataConfigManager extends Handler { KEY_ANOMALY_NETWORK_HANDOVER_TIMEOUT, DEFAULT_NETWORK_TRANSIT_STATE_TIMEOUT_MS); mIsApnConfigAnomalyReportEnabled = properties.getBoolean( KEY_ANOMALY_APN_CONFIG_ENABLED, false); mAutoDataSwitchAvailabilityStabilityTimeThreshold = properties.getInt( KEY_AUTO_DATA_SWITCH_AVAILABILITY_STABILITY_TIME_THRESHOLD, DEFAULT_AUTO_DATA_SWITCH_STABILITY_TIME_MS); mAutoDataSwitchValidationMaxRetry = properties.getInt( KEY_AUTO_DATA_SWITCH_VALIDATION_MAX_RETRY, DEFAULT_AUTO_DATA_SWITCH_MAX_RETRY); } /** Loading Loading @@ -900,6 +930,22 @@ public class DataConfigManager extends Handler { return mIsApnConfigAnomalyReportEnabled; } /** * @return The maximum number of retries when a validation for switching failed. */ public int getAutoDataSwitchValidationMaxRetry() { return mAutoDataSwitchValidationMaxRetry; } /** * @return Time threshold in ms to define a internet connection status to be stable * (e.g. out of service, in service, wifi is the default active network.etc), while -1 indicates * auto switch feature disabled. */ public long getAutoDataSwitchAvailabilityStabilityTimeThreshold() { return mAutoDataSwitchAvailabilityStabilityTimeThreshold; } /** * Get the TCP config string, used by {@link LinkProperties#setTcpBufferSizes(String)}. * The config string will have the following form, with values in bytes: Loading Loading @@ -1280,6 +1326,9 @@ public class DataConfigManager extends Handler { pw.println("mNetworkDisconnectingTimeout=" + mNetworkDisconnectingTimeout); pw.println("mNetworkHandoverTimeout=" + mNetworkHandoverTimeout); pw.println("mIsApnConfigAnomalyReportEnabled=" + mIsApnConfigAnomalyReportEnabled); pw.println("mAutoDataSwitchAvailabilityStabilityTimeThreshold=" + mAutoDataSwitchAvailabilityStabilityTimeThreshold); pw.println("mAutoDataSwitchValidationMaxRetry=" + mAutoDataSwitchValidationMaxRetry); pw.println("Metered APN types=" + mMeteredApnTypes.stream() .map(ApnSetting::getApnTypeString).collect(Collectors.joining(","))); pw.println("Roaming metered APN types=" + mRoamingMeteredApnTypes.stream() Loading
src/java/com/android/internal/telephony/data/DataNetwork.java +1 −1 Original line number Diff line number Diff line Loading @@ -1024,7 +1024,7 @@ public class DataNetwork extends StateMachine { mPhone.getDisplayInfoController().registerForTelephonyDisplayInfoChanged( getHandler(), EVENT_DISPLAY_INFO_CHANGED, null); mPhone.getServiceStateTracker().registerForServiceStateChanged(getHandler(), EVENT_SERVICE_STATE_CHANGED); EVENT_SERVICE_STATE_CHANGED, null); for (int transport : mAccessNetworksManager.getAvailableTransports()) { mDataServiceManagers.get(transport) .registerForDataCallListChanged(getHandler(), EVENT_DATA_STATE_CHANGED); Loading
src/java/com/android/internal/telephony/data/DataNetworkController.java +2 −2 Original line number Diff line number Diff line Loading @@ -969,7 +969,7 @@ public class DataNetworkController extends Handler { }); mPhone.getServiceStateTracker().registerForServiceStateChanged(this, EVENT_SERVICE_STATE_CHANGED); EVENT_SERVICE_STATE_CHANGED, null); mDataConfigManager.registerCallback(new DataConfigManagerCallback(this::post) { @Override public void onCarrierConfigChanged() { Loading @@ -991,7 +991,7 @@ public class DataNetworkController extends Handler { if (!mAccessNetworksManager.isInLegacyMode()) { mPhone.getServiceStateTracker().registerForServiceStateChanged(this, EVENT_SERVICE_STATE_CHANGED); EVENT_SERVICE_STATE_CHANGED, null); mDataServiceManagers.get(AccessNetworkConstants.TRANSPORT_TYPE_WLAN) .registerForServiceBindingChanged(this, EVENT_DATA_SERVICE_BINDING_CHANGED); } Loading