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

Commit 1a06b993 authored by Willy Hu's avatar Willy Hu
Browse files

Add Signal Strength to TelephonyMetrics when Data Stall

Bug: 144804770
Test: 1. Build pass.
      2. We can see the SignalStrength when calling doRecovery().
      3. atest DcTrackerTest

      Test Log:
      12-18 16:00:23.398  3661  3661 D DCT-C   : trigger data stall recovery
      12-18 16:00:23.477  3661  3661 D DCT-C   : doRecovery() signalStrength:4
      12-18 16:00:23.478  3661  3661 D DCT-C   : doRecovery() get data call list
      12-18 16:00:33.737  3661  3661 D DCT-C   : trigger data stall recovery
      12-18 16:00:33.748  3661  3661 D DCT-C   : doRecovery() signalStrength:4
      12-18 16:00:33.749  3661  3661 D DCT-C   : doRecovery() get data call list

--------------------------------------------
[1/27] com.android.internal.telephony.dataconnection.DcTrackerTest#testDataCallOnUserDisableRoaming: PASSED (2.188s)
[2/27] com.android.internal.telephony.dataconnection.DcTrackerTest#testTrySetupDataEmergencyApn: PASSED (905ms)
[3/27] com.android.internal.telephony.dataconnection.DcTrackerTest#testCarrierActionSetMeteredApnsEnabled: IGNORED (1ms)
[4/27] com.android.internal.telephony.dataconnection.DcTrackerTest#testRecoveryStepRestartRadio: PASSED (1.333s)
[5/27] com.android.internal.telephony.dataconnection.DcTrackerTest#testUserDisableData: IGNORED (1ms)
[6/27] com.android.internal.telephony.dataconnection.DcTrackerTest#testDDSResetAutoAttach: PASSED (1.760s)
[7/27] com.android.internal.telephony.dataconnection.DcTrackerTest#testTrySetupNotConnectable: PASSED (1.308s)
[8/27] com.android.internal.telephony.dataconnection.DcTrackerTest#testTrySetupRestrictedDataDisabled: PASSED (1.308s)
[9/27] com.android.internal.telephony.dataconnection.DcTrackerTest#testFetchDunApn: PASSED (905ms)
[10/27] com.android.internal.telephony.dataconnection.DcTrackerTest#testRecoveryStepPDPReset: PASSED (1.182s)
[11/27] com.android.internal.telephony.dataconnection.DcTrackerTest#testNetworkStatusChangedRecoveryON: PASSED (1.383s)
[12/27] com.android.internal.telephony.dataconnection.DcTrackerTest#testDataRatChangeOOS: PASSED (1.559s)
[13/27] com.android.internal.telephony.dataconnection.DcTrackerTest#testUpdateWaitingApnListOnDataRatChange: PASSED (1.534s)
[14/27] com.android.internal.telephony.dataconnection.DcTrackerTest#testRecoveryStepReRegister: PASSED (1.334s)
[15/27] com.android.internal.telephony.dataconnection.DcTrackerTest#testDataRetry: PASSED (1.761s)
[16/27] com.android.internal.telephony.dataconnection.DcTrackerTest#testDataSetup: PASSED (1.333s)
[17/27] com.android.internal.telephony.dataconnection.DcTrackerTest#testFetchDunApnWithPreferredApnSet: PASSED (906ms)
[18/27] com.android.internal.telephony.dataconnection.DcTrackerTest#testTrySetupDefaultInECBM: PASSED (1.282s)
[19/27] com.android.internal.telephony.dataconnection.DcTrackerTest#testGetDataConnectionState: PASSED (1.257s)
[20/27] com.android.internal.telephony.dataconnection.DcTrackerTest#testUserDisableRoaming: PASSED (1.433s)
[21/27] com.android.internal.telephony.dataconnection.DcTrackerTest#testTrySetupDefaultOnIWLAN: PASSED (1.308s)
[22/27] com.android.internal.telephony.dataconnection.DcTrackerTest#testTrySetupMeteredDataDisabled: PASSED (1.333s)
[23/27] com.android.internal.telephony.dataconnection.DcTrackerTest#testTrySetupDataMmsAllowedDataDisabled: PASSED (1.836s)
[24/27] com.android.internal.telephony.dataconnection.DcTrackerTest#testNetworkStatusChangedRecoveryOFF: PASSED (1.534s)
[25/27] com.android.internal.telephony.dataconnection.DcTrackerTest#testTrySetupDataUnmeteredDataDisabled: PASSED (1.333s)
[26/27] com.android.internal.telephony.dataconnection.DcTrackerTest#testTrySetupRestrictedRoamingDisabled: PASSED (1.358s)
[27/27] com.android.internal.telephony.dataconnection.DcTrackerTest#testTrySetupDataUnmeteredDefaultNotSelected: PASSED (1.308s)

Summary
-------
arm64-v8a FrameworksTelephonyTests: Passed: 25, Failed: 0, Ignored: 2, Assumption Failed: 0

All tests passed!

Merged-In: I5b13d62aa8e9375e1db6aff8f639d0827aca8b9a
Change-Id: I5b13d62aa8e9375e1db6aff8f639d0827aca8b9a
parent 8007e177
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -786,6 +786,9 @@ message TelephonyEvent {

    // Emergency Number update event (Device HAL >= 1.4).
    EMERGENCY_NUMBER_REPORT = 21;

    // Signal strength
    SIGNAL_STRENGTH = 23;
  }

  enum ApnType {
@@ -1760,6 +1763,9 @@ message TelephonyEvent {

  // Updated Emergency Call info.
  optional EmergencyNumberInfo updated_emergency_number = 25;

  // Signal strength
  optional int32 signal_strength = 27;
}

message ActiveSubscriptionInfo {
+3 −0
Original line number Diff line number Diff line
@@ -4507,6 +4507,9 @@ public class DcTracker extends Handler {
            if (getOverallState() == DctConstants.State.CONNECTED) {
                // Go through a series of recovery steps, each action transitions to the next action
                @RecoveryAction final int recoveryAction = getRecoveryAction();
                final int signalStrength = mPhone.getSignalStrength().getLevel();
                TelephonyMetrics.getInstance().writeSignalStrengthEvent(
                        mPhone.getPhoneId(), signalStrength);
                TelephonyMetrics.getInstance().writeDataStallEvent(
                        mPhone.getPhoneId(), recoveryAction);
                broadcastDataStallDetected(recoveryAction);
+6 −0
Original line number Diff line number Diff line
@@ -93,6 +93,12 @@ public class TelephonyEventBuilder {
        return this;
    }

    public TelephonyEventBuilder setSignalStrength(int signalstrength) {
        mEvent.type = TelephonyEvent.Type.SIGNAL_STRENGTH;
        mEvent.signalStrength = signalstrength;
        return this;
    }

    public TelephonyEventBuilder setSetupDataCall(RilSetupDataCall request) {
        mEvent.type = TelephonyEvent.Type.DATA_CALL_SETUP;
        mEvent.setupDataCall = request;
+11 −0
Original line number Diff line number Diff line
@@ -1164,6 +1164,17 @@ public class TelephonyMetrics {
                .setDataStallRecoveryAction(recoveryAction).build());
    }

    /**
     * Write SignalStrength event
     *
     * @param phoneId Phone id
     * @param signalStrength Signal strength at the time of data stall recovery
     */
    public void writeSignalStrengthEvent(int phoneId, int signalStrength) {
        addTelephonyEvent(new TelephonyEventBuilder(phoneId)
                .setSignalStrength(signalStrength).build());
    }

    /**
     * Write IMS feature settings changed event
     *
+5 −0
Original line number Diff line number Diff line
@@ -66,6 +66,7 @@ import android.telephony.AccessNetworkConstants.AccessNetworkType;
import android.telephony.CarrierConfigManager;
import android.telephony.NetworkRegistrationInfo;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
@@ -1620,6 +1621,7 @@ public class DcTrackerTest extends TelephonyTest {
        ContentResolver resolver = mContext.getContentResolver();
        Settings.Global.putInt(resolver, Settings.Global.DATA_STALL_RECOVERY_ON_BAD_NETWORK, 1);
        Settings.System.putInt(resolver, "radio.data.stall.recovery.action", 0);
        doReturn(new SignalStrength()).when(mPhone).getSignalStrength();

        mBundle.putStringArray(CarrierConfigManager.KEY_CARRIER_METERED_APN_TYPES_STRINGS,
                new String[]{PhoneConstants.APN_TYPE_DEFAULT, PhoneConstants.APN_TYPE_MMS});
@@ -1662,6 +1664,7 @@ public class DcTrackerTest extends TelephonyTest {
        Settings.Global.putLong(resolver,
                Settings.Global.MIN_DURATION_BETWEEN_RECOVERY_STEPS_IN_MS, 100);
        Settings.System.putInt(resolver, "radio.data.stall.recovery.action", 1);
        doReturn(new SignalStrength()).when(mPhone).getSignalStrength();

        mBundle.putStringArray(CarrierConfigManager.KEY_CARRIER_METERED_APN_TYPES_STRINGS,
                new String[]{PhoneConstants.APN_TYPE_DEFAULT, PhoneConstants.APN_TYPE_MMS});
@@ -1702,6 +1705,7 @@ public class DcTrackerTest extends TelephonyTest {
        Settings.Global.putLong(resolver,
                Settings.Global.MIN_DURATION_BETWEEN_RECOVERY_STEPS_IN_MS, 100);
        Settings.System.putInt(resolver, "radio.data.stall.recovery.action", 2);
        doReturn(new SignalStrength()).when(mPhone).getSignalStrength();

        mBundle.putStringArray(CarrierConfigManager.KEY_CARRIER_METERED_APN_TYPES_STRINGS,
                new String[]{PhoneConstants.APN_TYPE_DEFAULT, PhoneConstants.APN_TYPE_MMS});
@@ -1739,6 +1743,7 @@ public class DcTrackerTest extends TelephonyTest {
        Settings.Global.putLong(resolver,
                Settings.Global.MIN_DURATION_BETWEEN_RECOVERY_STEPS_IN_MS, 100);
        Settings.System.putInt(resolver, "radio.data.stall.recovery.action", 3);
        doReturn(new SignalStrength()).when(mPhone).getSignalStrength();

        mBundle.putStringArray(CarrierConfigManager.KEY_CARRIER_METERED_APN_TYPES_STRINGS,
                new String[]{PhoneConstants.APN_TYPE_DEFAULT, PhoneConstants.APN_TYPE_MMS});