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

Commit 34eccfcf authored by Hakjun Choi's avatar Hakjun Choi Committed by Automerger Merge Worker
Browse files

Merge "Enforce satellite session metrics" into 24D1-dev am: bb2c1762

parents d782b86b bb2c1762
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -671,6 +671,14 @@ message SatelliteSession {
    optional int32 satellite_service_initialization_result = 1;
    optional int32 satellite_technology = 2;
    optional int32 count = 3;
    optional int32 satellite_service_termination_result = 4;
    optional int64 initialization_processing_time_millis = 5;
    optional int64 termination_processing_time_millis = 6;
    optional int32 session_duration_seconds = 7;
    optional int32 count_of_outgoing_datagram_success = 8;
    optional int32 count_of_outgoing_datagram_failed = 9;
    optional int32 count_of_incoming_datagram_success = 10;
    optional int32 count_of_incoming_datagram_failed = 11;
}

message SatelliteIncomingDatagram {
+9 −1
Original line number Diff line number Diff line
@@ -1374,7 +1374,15 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback {
                SATELLITE_SESSION,
                satelliteSession.satelliteServiceInitializationResult,
                satelliteSession.satelliteTechnology,
                satelliteSession.count);
                satelliteSession.count,
                satelliteSession.satelliteServiceTerminationResult,
                satelliteSession.initializationProcessingTimeMillis,
                satelliteSession.terminationProcessingTimeMillis,
                satelliteSession.sessionDurationSeconds,
                satelliteSession.countOfOutgoingDatagramSuccess,
                satelliteSession.countOfOutgoingDatagramFailed,
                satelliteSession.countOfIncomingDatagramSuccess,
                satelliteSession.countOfIncomingDatagramFailed);
    }

    private static StatsEvent buildStatsEvent(SatelliteIncomingDatagram stats) {
+11 −1
Original line number Diff line number Diff line
@@ -2109,7 +2109,17 @@ public class PersistAtomsStorage {
        for (SatelliteSession stats : mAtoms.satelliteSession) {
            if (stats.satelliteServiceInitializationResult
                    == key.satelliteServiceInitializationResult
                    && stats.satelliteTechnology == key.satelliteTechnology) {
                    && stats.satelliteTechnology == key.satelliteTechnology
                    && stats.satelliteServiceTerminationResult
                    == key.satelliteServiceTerminationResult
                    && stats.initializationProcessingTimeMillis
                    == key.initializationProcessingTimeMillis
                    && stats.terminationProcessingTimeMillis == key.terminationProcessingTimeMillis
                    && stats.sessionDurationSeconds == key.sessionDurationSeconds
                    && stats.countOfOutgoingDatagramSuccess == key.countOfOutgoingDatagramSuccess
                    && stats.countOfOutgoingDatagramFailed == key.countOfOutgoingDatagramFailed
                    && stats.countOfIncomingDatagramSuccess == key.countOfIncomingDatagramSuccess
                    && stats.countOfIncomingDatagramFailed == key.countOfIncomingDatagramFailed) {
                return stats;
            }
        }
+124 −1
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.internal.telephony.metrics;

import android.telephony.satellite.SatelliteManager;

import com.android.internal.telephony.PhoneFactory;
import com.android.internal.telephony.nano.PersistAtomsProto.SatelliteController;
import com.android.internal.telephony.nano.PersistAtomsProto.SatelliteIncomingDatagram;
@@ -385,11 +387,28 @@ public class SatelliteStats {
    public class SatelliteSessionParams {
        private final int mSatelliteServiceInitializationResult;
        private final int mSatelliteTechnology;
        private final int mTerminationResult;
        private final long mInitializationProcessingTimeMillis;
        private final long mTerminationProcessingTimeMillis;
        private final int mSessionDurationSec;
        private final int mCountOfOutgoingDatagramSuccess;
        private final int mCountOfOutgoingDatagramFailed;
        private final int mCountOfIncomingDatagramSuccess;
        private final int mCountOfIncomingDatagramFailed;

        private SatelliteSessionParams(Builder builder) {
            this.mSatelliteServiceInitializationResult =
                    builder.mSatelliteServiceInitializationResult;
            this.mSatelliteTechnology = builder.mSatelliteTechnology;
            this.mTerminationResult = builder.mTerminationResult;
            this.mInitializationProcessingTimeMillis = builder.mInitializationProcessingTimeMillis;
            this.mTerminationProcessingTimeMillis =
                    builder.mTerminationProcessingTimeMillis;
            this.mSessionDurationSec = builder.mSessionDurationSec;
            this.mCountOfOutgoingDatagramSuccess = builder.mCountOfOutgoingDatagramSuccess;
            this.mCountOfOutgoingDatagramFailed = builder.mCountOfOutgoingDatagramFailed;
            this.mCountOfIncomingDatagramSuccess = builder.mCountOfIncomingDatagramSuccess;
            this.mCountOfIncomingDatagramFailed = builder.mCountOfIncomingDatagramFailed;
        }

        public int getSatelliteServiceInitializationResult() {
@@ -400,12 +419,52 @@ public class SatelliteStats {
            return mSatelliteTechnology;
        }

        public int getTerminationResult() {
            return mTerminationResult;
        }

        public long getInitializationProcessingTime() {
            return mInitializationProcessingTimeMillis;
        }

        public long getTerminationProcessingTime() {
            return mTerminationProcessingTimeMillis;
        }

        public int getSessionDuration() {
            return mSessionDurationSec;
        }

        public int getCountOfOutgoingDatagramSuccess() {
            return mCountOfOutgoingDatagramSuccess;
        }

        public int getCountOfOutgoingDatagramFailed() {
            return mCountOfOutgoingDatagramFailed;
        }

        public int getCountOfIncomingDatagramSuccess() {
            return mCountOfIncomingDatagramSuccess;
        }

        public int getCountOfIncomingDatagramFailed() {
            return mCountOfIncomingDatagramFailed;
        }

        /**
         * A builder class to create {@link SatelliteSessionParams} data structure class
         */
        public static class Builder {
            private int mSatelliteServiceInitializationResult = -1;
            private int mSatelliteTechnology = -1;
            private int mTerminationResult = -1;
            private long mInitializationProcessingTimeMillis = -1;
            private long mTerminationProcessingTimeMillis = -1;
            private int mSessionDurationSec = -1;
            private int mCountOfOutgoingDatagramSuccess = -1;
            private int mCountOfOutgoingDatagramFailed = -1;
            private int mCountOfIncomingDatagramSuccess = -1;
            private int mCountOfIncomingDatagramFailed = -1;

            /**
             * Sets satelliteServiceInitializationResult value of {@link SatelliteSession}
@@ -426,6 +485,55 @@ public class SatelliteStats {
                return this;
            }

            /** Sets the satellite de-initialization result. */
            public Builder setTerminationResult(
                    @SatelliteManager.SatelliteResult int result) {
                this.mTerminationResult = result;
                return this;
            }

            /** Sets the satellite initialization processing time. */
            public Builder setInitializationProcessingTime(long processingTime) {
                this.mInitializationProcessingTimeMillis = processingTime;
                return this;
            }

            /** Sets the satellite de-initialization processing time. */
            public Builder setTerminationProcessingTime(long processingTime) {
                this.mTerminationProcessingTimeMillis = processingTime;
                return this;
            }

            /** Sets the total enabled time for the satellite session. */
            public Builder setSessionDuration(int sessionDurationSec) {
                this.mSessionDurationSec = sessionDurationSec;
                return this;
            }

            /** Sets the total number of successful outgoing datagram transmission. */
            public Builder setCountOfOutgoingDatagramSuccess(int countOfoutgoingDatagramSuccess) {
                this.mCountOfOutgoingDatagramSuccess = countOfoutgoingDatagramSuccess;
                return this;
            }

            /** Sets the total number of failed outgoing datagram transmission. */
            public Builder setCountOfOutgoingDatagramFailed(int countOfoutgoingDatagramFailed) {
                this.mCountOfOutgoingDatagramFailed = countOfoutgoingDatagramFailed;
                return this;
            }

            /** Sets the total number of successful incoming datagram transmission. */
            public Builder setCountOfIncomingDatagramSuccess(int countOfincomingDatagramSuccess) {
                this.mCountOfIncomingDatagramSuccess = countOfincomingDatagramSuccess;
                return this;
            }

            /** Sets the total number of failed incoming datagram transmission. */
            public Builder setCountOfIncomingDatagramFailed(int countOfincomingDatagramFailed) {
                this.mCountOfIncomingDatagramFailed = countOfincomingDatagramFailed;
                return this;
            }

            /**
             * Returns SessionParams, which contains whole component of
             * {@link SatelliteSession} atom
@@ -441,7 +549,14 @@ public class SatelliteStats {
            return "SessionParams("
                    + ", satelliteServiceInitializationResult="
                    + mSatelliteServiceInitializationResult
                    + ", satelliteTechnology=" + mSatelliteTechnology
                    + ", TerminationResult=" + mTerminationResult
                    + ", InitializationProcessingTimeMillis=" + mInitializationProcessingTimeMillis
                    + ", TerminationProcessingTimeMillis=" + mTerminationProcessingTimeMillis
                    + ", SessionDurationSec=" + mSessionDurationSec
                    + ", CountOfOutgoingDatagramSuccess=" + mCountOfOutgoingDatagramSuccess
                    + ", CountOfOutgoingDatagramFailed=" + mCountOfOutgoingDatagramFailed
                    + ", CountOfIncomingDatagramSuccess=" + mCountOfIncomingDatagramSuccess
                    + ", CountOfIncomingDatagramFailed=" + mCountOfIncomingDatagramFailed
                    + ")";
        }
    }
@@ -912,6 +1027,14 @@ public class SatelliteStats {
                param.getSatelliteServiceInitializationResult();
        proto.satelliteTechnology = param.getSatelliteTechnology();
        proto.count = 1;
        proto.satelliteServiceTerminationResult = param.getTerminationResult();
        proto.initializationProcessingTimeMillis = param.getInitializationProcessingTime();
        proto.terminationProcessingTimeMillis = param.getTerminationProcessingTime();
        proto.sessionDurationSeconds = param.getSessionDuration();
        proto.countOfOutgoingDatagramSuccess = param.getCountOfIncomingDatagramSuccess();
        proto.countOfOutgoingDatagramFailed = param.getCountOfOutgoingDatagramFailed();
        proto.countOfIncomingDatagramSuccess = param.getCountOfIncomingDatagramSuccess();
        proto.countOfIncomingDatagramFailed = param.getCountOfOutgoingDatagramFailed();
        mAtomsStorage.addSatelliteSessionStats(proto);
    }

+11 −2
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.metrics.SatelliteStats;
import com.android.internal.telephony.satellite.metrics.ControllerMetricsStats;
import com.android.internal.telephony.satellite.metrics.SessionMetricsStats;

import java.util.LinkedHashMap;
import java.util.Map.Entry;
@@ -70,6 +71,7 @@ public class DatagramDispatcher extends Handler {
    @NonNull private final Context mContext;
    @NonNull private final DatagramController mDatagramController;
    @NonNull private final ControllerMetricsStats mControllerMetricsStats;
    @NonNull private final SessionMetricsStats mSessionMetricsStats;

    private boolean mIsDemoMode = false;
    private boolean mIsAligned = false;
@@ -134,6 +136,7 @@ public class DatagramDispatcher extends Handler {
        mContext = context;
        mDatagramController = datagramController;
        mControllerMetricsStats = ControllerMetricsStats.getInstance();
        mSessionMetricsStats = SessionMetricsStats.getInstance();

        synchronized (mLock) {
            mSendingDatagramInProgress = false;
@@ -276,6 +279,7 @@ public class DatagramDispatcher extends Handler {
                                getPendingDatagramCount(), error);
                        mControllerMetricsStats.reportOutgoingDatagramSuccessCount(
                                argument.datagramType);
                        mSessionMetricsStats.addCountOfSuccessfulOutgoingDatagram();
                        startWaitForSimulatedPollDatagramsDelayTimer(request);
                        if (getPendingDatagramCount() > 0) {
                            // Send response for current datagram
@@ -304,6 +308,7 @@ public class DatagramDispatcher extends Handler {
                        // Abort sending all the pending datagrams
                        mControllerMetricsStats.reportOutgoingDatagramFailCount(
                                argument.datagramType);
                        mSessionMetricsStats.addCountOfFailedOutgoingDatagram();
                        abortSendingPendingDatagrams(argument.subId,
                                SatelliteManager.SATELLITE_RESULT_REQUEST_ABORTED);
                    }
@@ -593,8 +598,10 @@ public class DatagramDispatcher extends Handler {
                        .setDatagramType(argument.datagramType)
                        .setResultCode(resultCode)
                        .setDatagramSizeBytes(argument.getDatagramRoundedSizeBytes())
                        .setDatagramTransferTimeMillis(
                                System.currentTimeMillis() - argument.datagramStartTime)
                        /* In case pending datagram has not been attempted to send to modem
                        interface. transfer time will be 0. */
                        .setDatagramTransferTimeMillis(argument.datagramStartTime > 0
                                ? (System.currentTimeMillis() - argument.datagramStartTime) : 0)
                        .build());
    }

@@ -719,6 +726,8 @@ public class DatagramDispatcher extends Handler {
                    0, SatelliteManager.SATELLITE_RESULT_SUCCESS);
            abortSendingPendingDatagrams(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID,
                    SATELLITE_RESULT_NOT_REACHABLE);
            mControllerMetricsStats.reportOutgoingDatagramFailCount(argument.datagramType);
            mSessionMetricsStats.addCountOfFailedOutgoingDatagram();
        }
    }

Loading