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

Commit 52e2925d authored by Hakjun Choi's avatar Hakjun Choi Committed by Android (Google) Code Review
Browse files

Merge "Add a new field is_multi into Satellite atoms" into main

parents c537808d 13c136c8
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -825,6 +825,7 @@ message CarrierRoamingSatelliteSession {
    repeated int32 supported_satellite_services = 17;
    optional int32 service_data_policy = 18;
    optional int64 satellite_data_consumed_bytes = 19;
    optional bool is_multi_sim = 20;
}

message CarrierRoamingSatelliteControllerStats {
@@ -837,6 +838,7 @@ message CarrierRoamingSatelliteControllerStats {
    optional int32 satellite_session_gap_max_sec = 7;
    optional int32 carrier_id = 8;
    optional bool is_device_entitled = 9;
    optional bool is_multi_sim = 10;
}

message SatelliteEntitlement {
+4 −2
Original line number Diff line number Diff line
@@ -1596,7 +1596,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback {
                stats.countOfOutgoingMms,
                stats.supportedSatelliteServices,
                stats.serviceDataPolicy,
                stats.satelliteDataConsumedBytes);
                stats.satelliteDataConsumedBytes,
                stats.isMultiSim);
    }

    private static StatsEvent buildStatsEvent(CarrierRoamingSatelliteControllerStats stats) {
@@ -1610,7 +1611,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback {
                stats.satelliteSessionGapAvgSec,
                stats.satelliteSessionGapMaxSec,
                stats.carrierId,
                stats.isDeviceEntitled);
                stats.isDeviceEntitled,
                stats.isMultiSim);
    }

    private static StatsEvent buildStatsEvent(SatelliteEntitlement stats) {
+1 −0
Original line number Diff line number Diff line
@@ -885,6 +885,7 @@ public class PersistAtomsStorage {
            // Does not update configDataSource, carrierId, isDeviceEntitled, due to  they are
            // dimension fields.
            existingStats.isDeviceEntitled = stats.isDeviceEntitled;
            existingStats.isMultiSim = stats.isMultiSim;
        } else {
            mAtoms.carrierRoamingSatelliteControllerStats = insertAtRandomPlace(
                    mAtoms.carrierRoamingSatelliteControllerStats, stats, mMaxNumSatelliteStats);
+59 −7
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ import java.util.Optional;
/** Tracks Satellite metrics for each phone */
public class SatelliteStats {
    private static final String TAG = SatelliteStats.class.getSimpleName();
    private static final boolean DBG = false;

    private final PersistAtomsStorage mAtomsStorage =
            PhoneFactory.getMetricsCollector().getAtomsStorage();
@@ -1765,6 +1766,7 @@ public class SatelliteStats {
        private final int[] mSupportedSatelliteServices;
        private final int mServiceDataPolicy;
        private final long mSatelliteDataConsumedBytes;
        private final boolean mIsMultiSim;

        private CarrierRoamingSatelliteSessionParams(Builder builder) {
            this.mCarrierId = builder.mCarrierId;
@@ -1788,6 +1790,7 @@ public class SatelliteStats {
            this.mServiceDataPolicy = builder.mServiceDataPolicy;
            this.mSatelliteDataConsumedBytes =
                    builder.mSatelliteDataConsumedBytes;
            this.mIsMultiSim = builder.mIsMultiSim;
        }

        public int getCarrierId() {
@@ -1858,7 +1861,6 @@ public class SatelliteStats {
            return mSupportedSatelliteServices;
        }


        public int getServiceDataPolicy() {
            return mServiceDataPolicy;
        }
@@ -1867,6 +1869,10 @@ public class SatelliteStats {
            return mSatelliteDataConsumedBytes;
        }

        public boolean isMultiSim() {
            return mIsMultiSim;
        }

        /**
         * A builder class to create {@link CarrierRoamingSatelliteSessionParams} data structure
         * class
@@ -1892,6 +1898,7 @@ public class SatelliteStats {
            int mServiceDataPolicy =
                    SatelliteConstants.SATELLITE_ENTITLEMENT_SERVICE_POLICY_UNKNOWN;
            long mSatelliteDataConsumedBytes = 0L;
            private boolean mIsMultiSim = false;

            /**
             * Sets carrierId value of {@link CarrierRoamingSatelliteSession} atom
@@ -2068,6 +2075,15 @@ public class SatelliteStats {
                return this;
            }

            /**
             * Sets isMultiSim value of {@link CarrierRoamingSatelliteSession} atom, which indicates
             * whether multi sim are activated or not, then returns Builder class
             */
            public Builder setIsMultiSim(boolean isMultiSim) {
                this.mIsMultiSim = isMultiSim;
                return this;
            }

            /**
             * Returns CarrierRoamingSatelliteSessionParams, which contains whole component of
             * {@link CarrierRoamingSatelliteSession} atom
@@ -2101,6 +2117,7 @@ public class SatelliteStats {
                    + ", supportedSatelliteServices=" + Arrays.toString(mSupportedSatelliteServices)
                    + ", serviceDataPolicy=" + mServiceDataPolicy
                    + ", SatelliteDataConsumedBytes=" + mSatelliteDataConsumedBytes
                    + ", isMultiSim=" + mIsMultiSim
                    + ")";
        }
    }
@@ -2120,6 +2137,7 @@ public class SatelliteStats {
        private static int sSatelliteSessionGapMaxSec;
        private static int sCarrierId;
        private static boolean sIsDeviceEntitled;
        private static boolean sIsMultiSim;

        private CarrierRoamingSatelliteControllerStatsParams(Builder builder) {
            this.mConfigDataSource = builder.mConfigDataSource;
@@ -2132,23 +2150,28 @@ public class SatelliteStats {

            // Update session gap params only when they are explicitly provided
            if (builder.mSatelliteSessionGapMinSec.isPresent()) {
                this.sSatelliteSessionGapMinSec = builder.mSatelliteSessionGapMinSec.get();
                sSatelliteSessionGapMinSec = builder.mSatelliteSessionGapMinSec.get();
            }
            if (builder.mSatelliteSessionGapAvgSec.isPresent()) {
                this.sSatelliteSessionGapAvgSec = builder.mSatelliteSessionGapAvgSec.get();
                sSatelliteSessionGapAvgSec = builder.mSatelliteSessionGapAvgSec.get();
            }
            if (builder.mSatelliteSessionGapMaxSec.isPresent()) {
                this.sSatelliteSessionGapMaxSec = builder.mSatelliteSessionGapMaxSec.get();
                sSatelliteSessionGapMaxSec = builder.mSatelliteSessionGapMaxSec.get();
            }

            // Carrier ID value should be updated only when it is meaningful.
            if (builder.mCarrierId.isPresent()) {
                this.sCarrierId = builder.mCarrierId.get();
                sCarrierId = builder.mCarrierId.get();
            }

            // isDeviceEntitled value should be updated only when it is meaningful.
            if (builder.mIsDeviceEntitled.isPresent()) {
                this.sIsDeviceEntitled = builder.mIsDeviceEntitled.get();
                sIsDeviceEntitled = builder.mIsDeviceEntitled.get();
            }

            // isMulti value should be updated only when it is meaningful.
            if (builder.mIsMultiSim.isPresent()) {
                sIsMultiSim = builder.mIsMultiSim.get();
            }
        }

@@ -2189,6 +2212,10 @@ public class SatelliteStats {
            return sIsDeviceEntitled;
        }

        public boolean isMultiSim() {
            return sIsMultiSim;
        }

        /**
         * A builder class to create {@link CarrierRoamingSatelliteControllerStatsParams}
         * data structure class
@@ -2203,6 +2230,7 @@ public class SatelliteStats {
            private Optional<Integer> mSatelliteSessionGapMaxSec = Optional.empty();
            private Optional<Integer> mCarrierId = Optional.empty();
            private Optional<Boolean> mIsDeviceEntitled = Optional.empty();
            private Optional<Boolean> mIsMultiSim = Optional.empty();

            /**
             * Sets configDataSource value of {@link CarrierRoamingSatelliteControllerStats} atom
@@ -2282,6 +2310,12 @@ public class SatelliteStats {
                return this;
            }

            /** Sets whether the device is in DSDS state or not. */
            public Builder setIsMultiSim(boolean isMultiSim) {
                this.mIsMultiSim = Optional.of(isMultiSim);
                return this;
            }

            /**
             * Returns CarrierRoamingSatelliteControllerStatsParams, which contains whole component
             * of {@link CarrierRoamingSatelliteControllerStats} atom
@@ -2307,6 +2341,7 @@ public class SatelliteStats {
                    + ", satelliteSessionGapMaxSec=" + sSatelliteSessionGapMaxSec
                    + ", carrierId=" + sCarrierId
                    + ", isDeviceEntitled=" + sIsDeviceEntitled
                    + ", isMultiSim=" + sIsMultiSim
                    + ")";
        }
    }
@@ -2837,7 +2872,7 @@ public class SatelliteStats {
                param.getCountOfP2PSmsAvailableNotificationRemoved();
        proto.isNtnOnlyCarrier = param.isNtnOnlyCarrier();
        proto.versionOfSatelliteAccessConfig = param.getVersionSatelliteAccessConfig();

        if (DBG) logd("onSatelliteControllerMetrics" + param);
        mAtomsStorage.addSatelliteControllerStats(proto);
    }

@@ -2866,6 +2901,7 @@ public class SatelliteStats {
        proto.isEmergency = param.getIsEmergency();
        proto.isNtnOnlyCarrier = param.isNtnOnlyCarrier();
        proto.maxInactivityDurationSec = param.getMaxInactivityDurationSec();
        if (DBG) logd("onSatelliteSessionMetrics" + param);
        mAtomsStorage.addSatelliteSessionStats(proto);
    }

@@ -2879,6 +2915,7 @@ public class SatelliteStats {
        proto.isDemoMode = param.getIsDemoMode();
        proto.carrierId = param.getCarrierId();
        proto.isNtnOnlyCarrier = param.isNtnOnlyCarrier();
        if (DBG) logd("onSatelliteIncomingDatagramMetrics" + param);
        mAtomsStorage.addSatelliteIncomingDatagramStats(proto);
    }

@@ -2893,6 +2930,7 @@ public class SatelliteStats {
        proto.isDemoMode = param.getIsDemoMode();
        proto.carrierId = param.getCarrierId();
        proto.isNtnOnlyCarrier = param.isNtnOnlyCarrier();
        if (DBG) logd("onSatelliteOutgoingDatagramMetrics: " + param);
        mAtomsStorage.addSatelliteOutgoingDatagramStats(proto);
    }

@@ -2905,6 +2943,7 @@ public class SatelliteStats {
        proto.isCanceled = param.getIsCanceled();
        proto.carrierId = param.getCarrierId();
        proto.isNtnOnlyCarrier = param.isNtnOnlyCarrier();
        if (DBG) logd("onSatelliteProvisionMetrics: " + param);
        mAtomsStorage.addSatelliteProvisionStats(proto);
    }

@@ -2923,6 +2962,7 @@ public class SatelliteStats {
        proto.carrierId = param.getCarrierId();
        proto.isNtnOnlyCarrier = param.isNtnOnlyCarrier();
        proto.count = 1;
        if (DBG) logd("onSatelliteSosMessageRecommender: " + param);
        mAtomsStorage.addSatelliteSosMessageRecommenderStats(proto);
    }

@@ -2949,6 +2989,8 @@ public class SatelliteStats {
        proto.supportedSatelliteServices = param.mSupportedSatelliteServices;
        proto.serviceDataPolicy = param.mServiceDataPolicy;
        proto.satelliteDataConsumedBytes = param.mSatelliteDataConsumedBytes;
        proto.isMultiSim = param.isMultiSim();
        if (DBG) logd("onCarrierRoamingSatelliteSessionMetrics: " + param);
        mAtomsStorage.addCarrierRoamingSatelliteSessionStats(proto);
    }

@@ -2965,11 +3007,14 @@ public class SatelliteStats {
        proto.satelliteSessionGapMaxSec = param.getSatelliteSessionGapMaxSec();
        proto.carrierId = param.getCarrierId();
        proto.isDeviceEntitled = param.isDeviceEntitled();
        proto.isMultiSim = param.isMultiSim();
        if (DBG) logd("onCarrierRoamingSatelliteControllerStatsMetrics: " + param);
        mAtomsStorage.addCarrierRoamingSatelliteControllerStats(proto);
    }

    /** Reset carrier roaming satellite controller stats after atom is pulled. */
    public synchronized void resetCarrierRoamingSatelliteControllerStats() {
        if (DBG) logd("resetCarrierRoamingSatelliteControllerStats:");
        com.android.internal.telephony.satellite.metrics
                .CarrierRoamingSatelliteControllerStats.getOrCreateInstance()
                .resetSessionGapLists();
@@ -2986,6 +3031,7 @@ public class SatelliteStats {
        proto.isAllowedServiceEntitlement = param.getIsAllowedServiceEntitlement();
        proto.entitlementServiceType = param.getEntitlementServiceType();
        proto.entitlementDataPolicy = param.getEntitlementDataPolicy();
        if (DBG) logd("onSatelliteEntitlementMetrics: " + param);
        mAtomsStorage.addSatelliteEntitlementStats(proto);
    }

@@ -2996,6 +3042,7 @@ public class SatelliteStats {
        proto.oemConfigResult = param.getOemConfigResult();
        proto.carrierConfigResult = param.getCarrierConfigResult();
        proto.count = param.getCount();
        if (DBG) logd("onSatelliteConfigUpdaterMetrics: " + param);
        mAtomsStorage.addSatelliteConfigUpdaterStats(proto);
    }

@@ -3015,6 +3062,11 @@ public class SatelliteStats {
        proto.carrierId = param.getCarrierId();
        proto.triggeringEvent = param.getTriggeringEvent();
        proto.isNtnOnlyCarrier = param.isNtnOnlyCarrier();
        if (DBG) logd("onSatelliteAccessControllerMetrics: " + param);
        mAtomsStorage.addSatelliteAccessControllerStats(proto);
    }

    private static void logd(String msg) {
        Rlog.d(TAG, msg);
    }
}
+14 −1
Original line number Diff line number Diff line
@@ -19,8 +19,10 @@ package com.android.internal.telephony.satellite.metrics;
import android.annotation.NonNull;
import android.util.Log;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.metrics.SatelliteStats;
import com.android.internal.telephony.satellite.SatelliteConstants;
import com.android.internal.telephony.subscription.SubscriptionManagerService;

import java.util.ArrayList;
import java.util.Collections;
@@ -30,7 +32,6 @@ public class CarrierRoamingSatelliteControllerStats {
    private static final String TAG = CarrierRoamingSatelliteControllerStats.class.getSimpleName();
    private static CarrierRoamingSatelliteControllerStats sInstance = null;
    private static final int ADD_COUNT = 1;

    private SatelliteStats mSatelliteStats;
    private List<Long> mSessionStartTimeList;
    private List<Long> mSessionEndTimeList;
@@ -60,6 +61,7 @@ public class CarrierRoamingSatelliteControllerStats {
        mSatelliteStats.onCarrierRoamingSatelliteControllerStatsMetrics(
                new SatelliteStats.CarrierRoamingSatelliteControllerStatsParams.Builder()
                        .setConfigDataSource(configDataSource)
                        .setIsMultiSim(isMultiSim())
                        .build());
    }

@@ -68,6 +70,7 @@ public class CarrierRoamingSatelliteControllerStats {
        mSatelliteStats.onCarrierRoamingSatelliteControllerStatsMetrics(
                new SatelliteStats.CarrierRoamingSatelliteControllerStatsParams.Builder()
                        .setCountOfEntitlementStatusQueryRequest(ADD_COUNT)
                        .setIsMultiSim(isMultiSim())
                        .build());
    }

@@ -76,6 +79,7 @@ public class CarrierRoamingSatelliteControllerStats {
        mSatelliteStats.onCarrierRoamingSatelliteControllerStatsMetrics(
                new SatelliteStats.CarrierRoamingSatelliteControllerStatsParams.Builder()
                        .setCountOfSatelliteConfigUpdateRequest(ADD_COUNT)
                        .setIsMultiSim(isMultiSim())
                        .build());
    }

@@ -84,6 +88,7 @@ public class CarrierRoamingSatelliteControllerStats {
        mSatelliteStats.onCarrierRoamingSatelliteControllerStatsMetrics(
                new SatelliteStats.CarrierRoamingSatelliteControllerStatsParams.Builder()
                        .setCountOfSatelliteNotificationDisplayed(ADD_COUNT)
                        .setIsMultiSim(isMultiSim())
                        .build());
    }

@@ -92,6 +97,7 @@ public class CarrierRoamingSatelliteControllerStats {
        mSatelliteStats.onCarrierRoamingSatelliteControllerStatsMetrics(
                new SatelliteStats.CarrierRoamingSatelliteControllerStatsParams.Builder()
                        .setCarrierId(carrierId)
                        .setIsMultiSim(isMultiSim())
                        .build());
    }

@@ -100,6 +106,7 @@ public class CarrierRoamingSatelliteControllerStats {
        mSatelliteStats.onCarrierRoamingSatelliteControllerStatsMetrics(
                new SatelliteStats.CarrierRoamingSatelliteControllerStatsParams.Builder()
                        .setIsDeviceEntitled(isDeviceEntitled)
                        .setIsMultiSim(isMultiSim())
                        .build());
    }

@@ -126,6 +133,7 @@ public class CarrierRoamingSatelliteControllerStats {
                        .setSatelliteSessionGapMinSec(satelliteSessionGapMinSec)
                        .setSatelliteSessionGapAvgSec(getAvg(sessionGapList))
                        .setSatelliteSessionGapMaxSec(satelliteSessionGapMaxSec)
                        .setIsMultiSim(isMultiSim())
                        .build());
    }

@@ -173,6 +181,11 @@ public class CarrierRoamingSatelliteControllerStats {
        return System.currentTimeMillis();
    }

    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
    public boolean isMultiSim() {
        return SubscriptionManagerService.getInstance().getActiveSubIdList(true).length > 1;
    }

    private static void logd(@NonNull String log) {
        Log.d(TAG, log);
    }
Loading