Loading src/java/com/android/internal/telephony/metrics/DataConnectionStateTracker.java +64 −11 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static com.android.internal.telephony.flags.Flags.dataRatMetricEnabled; import android.os.Handler; import android.os.HandlerExecutor; import android.os.HandlerThread; import android.telephony.PhysicalChannelConfig; import android.telephony.PreciseDataConnectionState; import android.telephony.SubscriptionManager; import android.telephony.TelephonyCallback; Loading Loading @@ -50,8 +51,10 @@ public class DataConnectionStateTracker { private int mSubId; private HashMap<Integer, PreciseDataConnectionState> mLastPreciseDataConnectionState = new HashMap<>(); private PreciseDataConnectionStateListenerImpl mDataConnectionStateListener; private TelephonyListenerImpl mTelephonyListener; private int mActiveDataSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; private int mChannelCountEnum = TelephonyStatsLog .CONNECTED_CHANNEL_CHANGED__CONNECTED_CHANNEL_COUNT__CHANNEL_COUNT_UNSPECIFIED; private final SubscriptionManager.OnSubscriptionsChangedListener mSubscriptionsChangedListener = new SubscriptionManager.OnSubscriptionsChangedListener() { Loading Loading @@ -136,15 +139,15 @@ public class DataConnectionStateTracker { TelephonyManager telephonyManager = mPhone.getContext().getSystemService(TelephonyManager.class); if (telephonyManager != null) { mDataConnectionStateListener = new PreciseDataConnectionStateListenerImpl(mExecutor); mDataConnectionStateListener.register(telephonyManager.createForSubscriptionId(subId)); mTelephonyListener = new TelephonyListenerImpl(mExecutor); mTelephonyListener.register(telephonyManager.createForSubscriptionId(subId)); } } private void unregisterTelephonyListener() { if (mDataConnectionStateListener != null) { mDataConnectionStateListener.unregister(); mDataConnectionStateListener = null; if (mTelephonyListener != null) { mTelephonyListener.unregister(); mTelephonyListener = null; } } Loading @@ -167,7 +170,11 @@ public class DataConnectionStateTracker { return sDataConnectionStateTracker.valueAt(0).mActiveDataSubId; } /** Log RAT if the active data subId changes to another subId with a different RAT */ /** * Log RAT if the active data subId changes to another subId with a different RAT. * * @param subId the current active data subId */ private void logRATChanges(int subId) { if (mSubId == subId && mActiveDataSubId != subId) { int newDataRat = mPhone.getServiceStateTracker() Loading @@ -188,13 +195,14 @@ public class DataConnectionStateTracker { } } private class PreciseDataConnectionStateListenerImpl extends TelephonyCallback private class TelephonyListenerImpl extends TelephonyCallback implements TelephonyCallback.PreciseDataConnectionStateListener, TelephonyCallback.ActiveDataSubscriptionIdListener { TelephonyCallback.ActiveDataSubscriptionIdListener, TelephonyCallback.PhysicalChannelConfigListener { private final Executor mExecutor; private TelephonyManager mTelephonyManager = null; PreciseDataConnectionStateListenerImpl(Executor executor) { TelephonyListenerImpl(Executor executor) { mExecutor = executor; } Loading Loading @@ -223,8 +231,53 @@ public class DataConnectionStateTracker { public void onActiveDataSubscriptionIdChanged(int subId) { if (dataRatMetricEnabled()) { logRATChanges(subId); } mActiveDataSubId = subId; } @Override public void onPhysicalChannelConfigChanged(List<PhysicalChannelConfig> configs) { logChannelChange(configs); } /** Log channel number if it changes for active data subscription*/ private void logChannelChange(List<PhysicalChannelConfig> configs) { int connectedChannelCount = configs.size(); int channelCountEnum = TelephonyStatsLog .CONNECTED_CHANNEL_CHANGED__CONNECTED_CHANNEL_COUNT__CHANNEL_COUNT_UNSPECIFIED; switch(connectedChannelCount) { case 0: channelCountEnum = TelephonyStatsLog .CONNECTED_CHANNEL_CHANGED__CONNECTED_CHANNEL_COUNT__CHANNEL_COUNT_ONE; break; case 1: channelCountEnum = TelephonyStatsLog .CONNECTED_CHANNEL_CHANGED__CONNECTED_CHANNEL_COUNT__CHANNEL_COUNT_ONE; break; case 2: channelCountEnum = TelephonyStatsLog .CONNECTED_CHANNEL_CHANGED__CONNECTED_CHANNEL_COUNT__CHANNEL_COUNT_TWO; break; case 3: channelCountEnum = TelephonyStatsLog .CONNECTED_CHANNEL_CHANGED__CONNECTED_CHANNEL_COUNT__CHANNEL_COUNT_THREE; break; case 4: channelCountEnum = TelephonyStatsLog .CONNECTED_CHANNEL_CHANGED__CONNECTED_CHANNEL_COUNT__CHANNEL_COUNT_FOUR; break; // Greater than 4 default: channelCountEnum = TelephonyStatsLog .CONNECTED_CHANNEL_CHANGED__CONNECTED_CHANNEL_COUNT__CHANNEL_COUNT_FIVE; } if (mChannelCountEnum != channelCountEnum) { if (mSubId != mActiveDataSubId) { TelephonyStatsLog.write(TelephonyStatsLog.CONNECTED_CHANNEL_CHANGED, channelCountEnum); } mChannelCountEnum = channelCountEnum; } } } } Loading
src/java/com/android/internal/telephony/metrics/DataConnectionStateTracker.java +64 −11 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static com.android.internal.telephony.flags.Flags.dataRatMetricEnabled; import android.os.Handler; import android.os.HandlerExecutor; import android.os.HandlerThread; import android.telephony.PhysicalChannelConfig; import android.telephony.PreciseDataConnectionState; import android.telephony.SubscriptionManager; import android.telephony.TelephonyCallback; Loading Loading @@ -50,8 +51,10 @@ public class DataConnectionStateTracker { private int mSubId; private HashMap<Integer, PreciseDataConnectionState> mLastPreciseDataConnectionState = new HashMap<>(); private PreciseDataConnectionStateListenerImpl mDataConnectionStateListener; private TelephonyListenerImpl mTelephonyListener; private int mActiveDataSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; private int mChannelCountEnum = TelephonyStatsLog .CONNECTED_CHANNEL_CHANGED__CONNECTED_CHANNEL_COUNT__CHANNEL_COUNT_UNSPECIFIED; private final SubscriptionManager.OnSubscriptionsChangedListener mSubscriptionsChangedListener = new SubscriptionManager.OnSubscriptionsChangedListener() { Loading Loading @@ -136,15 +139,15 @@ public class DataConnectionStateTracker { TelephonyManager telephonyManager = mPhone.getContext().getSystemService(TelephonyManager.class); if (telephonyManager != null) { mDataConnectionStateListener = new PreciseDataConnectionStateListenerImpl(mExecutor); mDataConnectionStateListener.register(telephonyManager.createForSubscriptionId(subId)); mTelephonyListener = new TelephonyListenerImpl(mExecutor); mTelephonyListener.register(telephonyManager.createForSubscriptionId(subId)); } } private void unregisterTelephonyListener() { if (mDataConnectionStateListener != null) { mDataConnectionStateListener.unregister(); mDataConnectionStateListener = null; if (mTelephonyListener != null) { mTelephonyListener.unregister(); mTelephonyListener = null; } } Loading @@ -167,7 +170,11 @@ public class DataConnectionStateTracker { return sDataConnectionStateTracker.valueAt(0).mActiveDataSubId; } /** Log RAT if the active data subId changes to another subId with a different RAT */ /** * Log RAT if the active data subId changes to another subId with a different RAT. * * @param subId the current active data subId */ private void logRATChanges(int subId) { if (mSubId == subId && mActiveDataSubId != subId) { int newDataRat = mPhone.getServiceStateTracker() Loading @@ -188,13 +195,14 @@ public class DataConnectionStateTracker { } } private class PreciseDataConnectionStateListenerImpl extends TelephonyCallback private class TelephonyListenerImpl extends TelephonyCallback implements TelephonyCallback.PreciseDataConnectionStateListener, TelephonyCallback.ActiveDataSubscriptionIdListener { TelephonyCallback.ActiveDataSubscriptionIdListener, TelephonyCallback.PhysicalChannelConfigListener { private final Executor mExecutor; private TelephonyManager mTelephonyManager = null; PreciseDataConnectionStateListenerImpl(Executor executor) { TelephonyListenerImpl(Executor executor) { mExecutor = executor; } Loading Loading @@ -223,8 +231,53 @@ public class DataConnectionStateTracker { public void onActiveDataSubscriptionIdChanged(int subId) { if (dataRatMetricEnabled()) { logRATChanges(subId); } mActiveDataSubId = subId; } @Override public void onPhysicalChannelConfigChanged(List<PhysicalChannelConfig> configs) { logChannelChange(configs); } /** Log channel number if it changes for active data subscription*/ private void logChannelChange(List<PhysicalChannelConfig> configs) { int connectedChannelCount = configs.size(); int channelCountEnum = TelephonyStatsLog .CONNECTED_CHANNEL_CHANGED__CONNECTED_CHANNEL_COUNT__CHANNEL_COUNT_UNSPECIFIED; switch(connectedChannelCount) { case 0: channelCountEnum = TelephonyStatsLog .CONNECTED_CHANNEL_CHANGED__CONNECTED_CHANNEL_COUNT__CHANNEL_COUNT_ONE; break; case 1: channelCountEnum = TelephonyStatsLog .CONNECTED_CHANNEL_CHANGED__CONNECTED_CHANNEL_COUNT__CHANNEL_COUNT_ONE; break; case 2: channelCountEnum = TelephonyStatsLog .CONNECTED_CHANNEL_CHANGED__CONNECTED_CHANNEL_COUNT__CHANNEL_COUNT_TWO; break; case 3: channelCountEnum = TelephonyStatsLog .CONNECTED_CHANNEL_CHANGED__CONNECTED_CHANNEL_COUNT__CHANNEL_COUNT_THREE; break; case 4: channelCountEnum = TelephonyStatsLog .CONNECTED_CHANNEL_CHANGED__CONNECTED_CHANNEL_COUNT__CHANNEL_COUNT_FOUR; break; // Greater than 4 default: channelCountEnum = TelephonyStatsLog .CONNECTED_CHANNEL_CHANGED__CONNECTED_CHANNEL_COUNT__CHANNEL_COUNT_FIVE; } if (mChannelCountEnum != channelCountEnum) { if (mSubId != mActiveDataSubId) { TelephonyStatsLog.write(TelephonyStatsLog.CONNECTED_CHANNEL_CHANGED, channelCountEnum); } mChannelCountEnum = channelCountEnum; } } } }