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

Commit ae2e7676 authored by Chi Zhang's avatar Chi Zhang Committed by Automerger Merge Worker
Browse files
parents 29a01218 d35a9ac7
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -303,6 +303,7 @@ message CellularServiceState {
    optional bool is_multi_sim = 7;
    optional int32 carrier_id = 8;
    optional int64 total_time_millis = 9; // Duration needs to be rounded when pulled
    optional bool is_emergency_only = 10;

    // Internal use only
    optional int64 last_used_millis = 10001;
+2 −1
Original line number Diff line number Diff line
@@ -717,7 +717,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback {
                state.simSlotIndex,
                state.isMultiSim,
                state.carrierId,
                (int) (round(state.totalTimeMillis, DURATION_BUCKET_MILLIS) / SECOND_IN_MILLIS));
                (int) (round(state.totalTimeMillis, DURATION_BUCKET_MILLIS) / SECOND_IN_MILLIS),
                state.isEmergencyOnly);
    }

    private static StatsEvent buildStatsEvent(VoiceCallRatUsage usage) {
+2 −1
Original line number Diff line number Diff line
@@ -1258,7 +1258,8 @@ public class PersistAtomsStorage {
                    && state.isEndc == key.isEndc
                    && state.simSlotIndex == key.simSlotIndex
                    && state.isMultiSim == key.isMultiSim
                    && state.carrierId == key.carrierId) {
                    && state.carrierId == key.carrierId
                    && state.isEmergencyOnly == key.isEmergencyOnly) {
                return state;
            }
        }
+25 −3
Original line number Diff line number Diff line
@@ -92,6 +92,7 @@ public class ServiceStateStats {
            newState.simSlotIndex = mPhone.getPhoneId();
            newState.isMultiSim = SimSlotState.isMultiSim();
            newState.carrierId = mPhone.getCarrierId();
            newState.isEmergencyOnly = isEmergencyOnly(serviceState);

            TimestampedServiceState prevState =
                    mLastState.getAndSet(new TimestampedServiceState(newState, now));
@@ -212,6 +213,7 @@ public class ServiceStateStats {
        copy.isMultiSim = state.isMultiSim;
        copy.carrierId = state.carrierId;
        copy.totalTimeMillis = state.totalTimeMillis;
        copy.isEmergencyOnly = state.isEmergencyOnly;
        return copy;
    }

@@ -238,10 +240,22 @@ public class ServiceStateStats {
        if (imsPhone != null) {
            @NetworkType int imsVoiceRat = imsPhone.getImsStats().getImsVoiceRadioTech();
            if (imsVoiceRat != TelephonyManager.NETWORK_TYPE_UNKNOWN) {
                return imsVoiceRat;
                // If IMS is over WWAN but WWAN PS is not in-service, then IMS RAT is invalid
                boolean isImsVoiceRatValid =
                        (imsVoiceRat == TelephonyManager.NETWORK_TYPE_IWLAN
                                || getDataRat(state) != TelephonyManager.NETWORK_TYPE_UNKNOWN);
                return isImsVoiceRatValid ? imsVoiceRat : TelephonyManager.NETWORK_TYPE_UNKNOWN;
            }
        }
        return state.getVoiceNetworkType();

        // If WWAN CS is not in-service, we should return NETWORK_TYPE_UNKNOWN
        final NetworkRegistrationInfo wwanRegInfo =
                state.getNetworkRegistrationInfo(
                        NetworkRegistrationInfo.DOMAIN_CS,
                        AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
        return wwanRegInfo != null && wwanRegInfo.isInService()
                ? wwanRegInfo.getAccessNetworkTechnology()
                : TelephonyManager.NETWORK_TYPE_UNKNOWN;
    }

    /**
@@ -263,11 +277,19 @@ public class ServiceStateStats {
                state.getNetworkRegistrationInfo(
                        NetworkRegistrationInfo.DOMAIN_PS,
                        AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
        return wwanRegInfo != null
        return wwanRegInfo != null && wwanRegInfo.isInService()
                ? wwanRegInfo.getAccessNetworkTechnology()
                : TelephonyManager.NETWORK_TYPE_UNKNOWN;
    }

    private static boolean isEmergencyOnly(ServiceState state) {
        NetworkRegistrationInfo regInfo =
                state.getNetworkRegistrationInfo(
                        NetworkRegistrationInfo.DOMAIN_CS,
                        AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
        return regInfo != null && !regInfo.isInService() && regInfo.isEmergencyEnabled();
    }

    private static boolean isEndc(ServiceState state) {
        if (getDataRat(state) != TelephonyManager.NETWORK_TYPE_LTE) {
            return false;
+1 −0
Original line number Diff line number Diff line
@@ -123,6 +123,7 @@ public class ImsStatsTest extends TelephonyTest {
        // WWAN PS RAT is LTE
        doReturn(new NetworkRegistrationInfo.Builder()
                .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_LTE)
                .setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_HOME)
                .build())
                .when(mServiceState).getNetworkRegistrationInfo(DOMAIN_PS, TRANSPORT_TYPE_WWAN);

Loading