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

Commit 27aa3414 authored by Jaesik Kong's avatar Jaesik Kong Committed by Android (Google) Code Review
Browse files

Merge "Add override_voice_service to CellularServiceState" into udc-qpr-dev

parents 0b3abe62 cea9c16e
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -378,6 +378,7 @@ message CellularServiceState {
    optional bool is_emergency_only = 10;
    optional bool is_internet_pdn_up = 11;
    optional int32 fold_state = 12;
    optional bool override_voice_service = 13;

    // Internal use only
    optional int64 last_used_millis = 10001;
+1 −0
Original line number Diff line number Diff line
@@ -680,6 +680,7 @@ public class GsmCdmaPhone extends Phone {
        mTelecomVoiceServiceStateOverride = newOverride;
        if (changed && mSST != null) {
            mSST.onTelecomVoiceServiceStateOverrideChanged();
            mSST.getServiceStateStats().onVoiceServiceStateOverrideChanged(hasService);
        }
    }

+2 −1
Original line number Diff line number Diff line
@@ -923,7 +923,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback {
                roundAndConvertMillisToSeconds(state.totalTimeMillis),
                state.isEmergencyOnly,
                state.isInternetPdnUp,
                state.foldState);
                state.foldState,
                state.overrideVoiceService);
    }

    private static StatsEvent buildStatsEvent(VoiceCallRatUsage usage) {
+2 −1
Original line number Diff line number Diff line
@@ -1709,7 +1709,8 @@ public class PersistAtomsStorage {
                    && state.carrierId == key.carrierId
                    && state.isEmergencyOnly == key.isEmergencyOnly
                    && state.isInternetPdnUp == key.isInternetPdnUp
                    && state.foldState == key.foldState) {
                    && state.foldState == key.foldState
                    && state.overrideVoiceService == key.overrideVoiceService) {
                return state;
            }
        }
+24 −0
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ import com.android.internal.telephony.nano.PersistAtomsProto.CellularServiceStat
import com.android.telephony.Rlog;

import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;

/** Tracks service state duration and switch metrics for each phone. */
@@ -54,6 +55,7 @@ public class ServiceStateStats extends DataNetworkControllerCallback {

    private final AtomicReference<TimestampedServiceState> mLastState =
            new AtomicReference<>(new TimestampedServiceState(null, 0L));
    private final AtomicBoolean mOverrideVoiceService = new AtomicBoolean(false);
    private final Phone mPhone;
    private final PersistAtomsStorage mStorage;
    private final DeviceStateHelper mDeviceStateHelper;
@@ -127,6 +129,7 @@ public class ServiceStateStats extends DataNetworkControllerCallback {
            newState.isEmergencyOnly = isEmergencyOnly(serviceState);
            newState.isInternetPdnUp = isInternetPdnUp(mPhone);
            newState.foldState = mDeviceStateHelper.getFoldState();
            newState.overrideVoiceService = mOverrideVoiceService.get();
            TimestampedServiceState prevState =
                    mLastState.getAndSet(new TimestampedServiceState(newState, now));
            addServiceStateAndSwitch(
@@ -154,6 +157,26 @@ public class ServiceStateStats extends DataNetworkControllerCallback {
        }
    }

    /** Updates override state for voice service state when voice calling capability changes */
    public void onVoiceServiceStateOverrideChanged(boolean override) {
        if (override == mOverrideVoiceService.get()) {
            return;
        }
        mOverrideVoiceService.set(override);
        final long now = getTimeMillis();
        TimestampedServiceState lastState =
                mLastState.getAndUpdate(
                        state -> {
                            if (state.mServiceState == null) {
                                return new TimestampedServiceState(null, now);
                            }
                            CellularServiceState newServiceState = copyOf(state.mServiceState);
                            newServiceState.overrideVoiceService = mOverrideVoiceService.get();
                            return new TimestampedServiceState(newServiceState, now);
                        });
        addServiceState(lastState, now);
    }

    private void addServiceState(TimestampedServiceState prevState, long now) {
        addServiceStateAndSwitch(prevState, now, null);
    }
@@ -275,6 +298,7 @@ public class ServiceStateStats extends DataNetworkControllerCallback {
        copy.isEmergencyOnly = state.isEmergencyOnly;
        copy.isInternetPdnUp = state.isInternetPdnUp;
        copy.foldState = state.foldState;
        copy.overrideVoiceService = state.overrideVoiceService;
        return copy;
    }

Loading