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

Commit 052f6252 authored by Qingqi Lei's avatar Qingqi Lei Committed by Android (Google) Code Review
Browse files

Merge "Revert "Collect DataRatStateChanged atom"" into main

parents ddc9b446 596d4aaa
Loading
Loading
Loading
Loading
+1 −9
Original line number Diff line number Diff line
@@ -150,11 +150,3 @@ flag {
  description: "Enable DSRS diagnostics."
  bug: "319601607"
}
 No newline at end of file

# OWNER=jackyu TARGET=24Q3
flag {
  name: "data_rat_metric_enabled"
  namespace: "telephony"
  description: "Write DataRatStateChanged atom"
  bug:"318519337"
}
+1 −42
Original line number Diff line number Diff line
@@ -16,8 +16,6 @@

package com.android.internal.telephony.metrics;

import static com.android.internal.telephony.flags.Flags.dataRatMetricEnabled;

import android.os.Handler;
import android.os.HandlerExecutor;
import android.os.HandlerThread;
@@ -29,7 +27,6 @@ import android.util.SparseArray;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.TelephonyStatsLog;

import java.util.HashMap;
import java.util.List;
@@ -51,7 +48,6 @@ public class DataConnectionStateTracker {
    private HashMap<Integer, PreciseDataConnectionState> mLastPreciseDataConnectionState =
            new HashMap<>();
    private PreciseDataConnectionStateListenerImpl mDataConnectionStateListener;
    private int mActiveDataSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;

    private final SubscriptionManager.OnSubscriptionsChangedListener mSubscriptionsChangedListener =
            new SubscriptionManager.OnSubscriptionsChangedListener() {
@@ -160,37 +156,8 @@ public class DataConnectionStateTracker {
        mPhone.getVoiceCallSessionStats().onPreciseDataConnectionStateChanged(connectionState);
    }

    static int getActiveDataSubId() {
        if (sDataConnectionStateTracker.size() == 0) {
            return SubscriptionManager.INVALID_SUBSCRIPTION_ID;
        }
        return sDataConnectionStateTracker.valueAt(0).mActiveDataSubId;
    }

    /** Log RAT if the active data subId changes to another subId with a different RAT */
    private void logRATChanges(int subId) {
        if (mSubId == subId && mActiveDataSubId != subId) {
            int newDataRat = mPhone.getServiceStateTracker()
                    .getServiceStateStats().getCurrentDataRat();
            for (int i = 0; i < sDataConnectionStateTracker.size(); i++) {
                DataConnectionStateTracker dataConnectionStateTracker =
                        sDataConnectionStateTracker.valueAt(0);
                if (dataConnectionStateTracker.mSubId == mActiveDataSubId) {
                    int previousDataRat = dataConnectionStateTracker.mPhone
                            .getServiceStateTracker().getServiceStateStats()
                            .getCurrentDataRat();
                    if (newDataRat != previousDataRat) {
                        TelephonyStatsLog.write(TelephonyStatsLog.DATA_RAT_STATE_CHANGED,
                                newDataRat);
                    }
                }
            }
        }
    }

    private class PreciseDataConnectionStateListenerImpl extends TelephonyCallback
            implements TelephonyCallback.PreciseDataConnectionStateListener,
            TelephonyCallback.ActiveDataSubscriptionIdListener {
            implements TelephonyCallback.PreciseDataConnectionStateListener {
        private final Executor mExecutor;
        private TelephonyManager mTelephonyManager = null;

@@ -218,13 +185,5 @@ public class DataConnectionStateTracker {
                PreciseDataConnectionState connectionState) {
            notifyDataConnectionStateChanged(connectionState);
        }

        @Override
        public void onActiveDataSubscriptionIdChanged(int subId) {
            if (dataRatMetricEnabled()) {
                logRATChanges(subId);
                mActiveDataSubId = subId;
            }
        }
    }
}
+0 −71
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@ import static android.telephony.TelephonyManager.DATA_CONNECTED;
import static com.android.internal.telephony.TelephonyStatsLog.VOICE_CALL_SESSION__BEARER_AT_END__CALL_BEARER_CS;
import static com.android.internal.telephony.TelephonyStatsLog.VOICE_CALL_SESSION__BEARER_AT_END__CALL_BEARER_IMS;
import static com.android.internal.telephony.TelephonyStatsLog.VOICE_CALL_SESSION__BEARER_AT_END__CALL_BEARER_UNKNOWN;
import static com.android.internal.telephony.flags.Flags.dataRatMetricEnabled;

import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -32,7 +31,6 @@ import android.telephony.Annotation.NetworkType;
import android.telephony.NetworkRegistrationInfo;
import android.telephony.ServiceState;
import android.telephony.ServiceState.RoamingType;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.telephony.ims.stub.ImsRegistrationImplBase;

@@ -40,7 +38,6 @@ import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneFactory;
import com.android.internal.telephony.ServiceStateTracker;
import com.android.internal.telephony.TelephonyStatsLog;
import com.android.internal.telephony.data.DataNetwork;
import com.android.internal.telephony.data.DataNetworkController;
import com.android.internal.telephony.data.DataNetworkController.DataNetworkControllerCallback;
@@ -64,8 +61,6 @@ public class ServiceStateStats extends DataNetworkControllerCallback {
    private final PersistAtomsStorage mStorage;
    private final DeviceStateHelper mDeviceStateHelper;
    private boolean mExistAnyConnectedInternetPdn;
    private int mCurrentDataRat =
            TelephonyStatsLog.DATA_RAT_STATE_CHANGED__DATA_RAT__DATA_RAT_UNSPECIFIED;

    public ServiceStateStats(Phone phone) {
        super(Runnable::run);
@@ -145,10 +140,6 @@ public class ServiceStateStats extends DataNetworkControllerCallback {
            addServiceStateAndSwitch(
                    prevState, now, getDataServiceSwitch(prevState.mServiceState, newState));
        }

        if (dataRatMetricEnabled()) {
            writeDataRatAtom(serviceState);
        }
    }

    /** Updates the fold state of the device for the current service state. */
@@ -465,68 +456,6 @@ public class ServiceStateStats extends DataNetworkControllerCallback {
                || isNetworkRoaming(ss, NetworkRegistrationInfo.DOMAIN_PS);
    }

    /** Collect data Rat metric. */
    private void writeDataRatAtom(@NonNull ServiceState serviceState) {
        if (DataConnectionStateTracker.getActiveDataSubId() != mPhone.getSubId()) {
            return;
        }
        NetworkRegistrationInfo wwanRegInfo = serviceState.getNetworkRegistrationInfo(
                NetworkRegistrationInfo.DOMAIN_PS,
                AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
        if (wwanRegInfo == null) {
            return;
        }
        int dataRat = wwanRegInfo.getAccessNetworkTechnology();
        int nrFrequency = serviceState.getNrFrequencyRange();
        int nrState = serviceState.getNrState();
        int translatedDataRat =
                TelephonyStatsLog.DATA_RAT_STATE_CHANGED__DATA_RAT__DATA_RAT_UNSPECIFIED;
        if (!SubscriptionManager.isValidSubscriptionId(mPhone.getSubId())) {
            translatedDataRat = TelephonyStatsLog.DATA_RAT_STATE_CHANGED__DATA_RAT__NO_SIM;
        } else if (dataRat == TelephonyManager.NETWORK_TYPE_EHRPD
                || dataRat == TelephonyManager.NETWORK_TYPE_HSPAP
                || dataRat == TelephonyManager.NETWORK_TYPE_UMTS
                || dataRat == TelephonyManager.NETWORK_TYPE_HSDPA
                || dataRat == TelephonyManager.NETWORK_TYPE_HSUPA
                || dataRat == TelephonyManager.NETWORK_TYPE_HSPA
                || dataRat == TelephonyManager.NETWORK_TYPE_EVDO_0
                || dataRat == TelephonyManager.NETWORK_TYPE_EVDO_A
                || dataRat == TelephonyManager.NETWORK_TYPE_EVDO_B) {
            translatedDataRat = TelephonyStatsLog.DATA_RAT_STATE_CHANGED__DATA_RAT__DATA_RAT_3G;
        } else if (dataRat == TelephonyManager.NETWORK_TYPE_1xRTT
                || dataRat == TelephonyManager.NETWORK_TYPE_GPRS
                || dataRat == TelephonyManager.NETWORK_TYPE_EDGE
                || dataRat == TelephonyManager.NETWORK_TYPE_CDMA
                || dataRat == TelephonyManager.NETWORK_TYPE_GSM) {
            translatedDataRat = TelephonyStatsLog.DATA_RAT_STATE_CHANGED__DATA_RAT__DATA_RAT_2G;
        } else if (dataRat == TelephonyManager.NETWORK_TYPE_NR) {
            translatedDataRat = nrFrequency != ServiceState.FREQUENCY_RANGE_MMWAVE
                    ? TelephonyStatsLog.DATA_RAT_STATE_CHANGED__DATA_RAT__DATA_RAT_5G_SA_FR1 :
                    TelephonyStatsLog.DATA_RAT_STATE_CHANGED__DATA_RAT__DATA_RAT_5G_SA_FR2;
        } else if (dataRat == TelephonyManager.NETWORK_TYPE_LTE) {
            if (nrState == NetworkRegistrationInfo.NR_STATE_CONNECTED) {
                translatedDataRat = nrFrequency != ServiceState.FREQUENCY_RANGE_MMWAVE
                    ? TelephonyStatsLog.DATA_RAT_STATE_CHANGED__DATA_RAT__DATA_RAT_5G_NSA_FR1 :
                    TelephonyStatsLog.DATA_RAT_STATE_CHANGED__DATA_RAT__DATA_RAT_5G_NSA_FR2;
            } else if (nrState == NetworkRegistrationInfo.NR_STATE_NOT_RESTRICTED) {
                translatedDataRat =
                        TelephonyStatsLog.DATA_RAT_STATE_CHANGED__DATA_RAT__DATA_RAT_5G_NSA_LTE;
            } else {
                translatedDataRat =
                        TelephonyStatsLog.DATA_RAT_STATE_CHANGED__DATA_RAT__DATA_RAT_4G_LTE;
            }
        }

        if (translatedDataRat != mCurrentDataRat) {
            TelephonyStatsLog.write(TelephonyStatsLog.DATA_RAT_STATE_CHANGED, translatedDataRat);
            mCurrentDataRat = translatedDataRat;
        }
    }

    int getCurrentDataRat() {
        return mCurrentDataRat;
    }

    @VisibleForTesting
    protected long getTimeMillis() {
        return SystemClock.elapsedRealtime();