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

Commit fb08a041 authored by Arun Voddu's avatar Arun Voddu Committed by Android (Google) Code Review
Browse files

Merge "[Satellite] Satellite metrics to capture pending message count per datagram type." into main

parents b49a3666 9685ac17
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -44,6 +44,8 @@ import android.telephony.PersistentLogger;
import android.telephony.Rlog;
import android.telephony.satellite.SatelliteDatagram;
import android.telephony.satellite.SatelliteManager;
import android.telephony.satellite.SatelliteSessionStats;
import android.util.Log;

import com.android.internal.R;
import com.android.internal.annotations.GuardedBy;
@@ -1404,4 +1406,23 @@ public class DatagramDispatcher extends Handler {
            mPersistentLogger.error(TAG, log);
        }
    }

    public void updateSessionStatsWithPendingUserMsgCount(SatelliteSessionStats datagramStats) {
        Log.d("SessionMetricsStats1",
                " mPendingEmergencyDatagramsMap size = " + mPendingEmergencyDatagramsMap.size());
        Log.d("SessionMetricsStats1", " mPendingNonEmergencyDatagramsMap size = "
                + mPendingNonEmergencyDatagramsMap.size());
        for (Entry<Long, SendSatelliteDatagramArgument> entry :
                mPendingEmergencyDatagramsMap.entrySet()) {
            SendSatelliteDatagramArgument argument = entry.getValue();
            Log.d("SessionMetricsStats1", "DataGramType1 =  " + argument.datagramType);
            datagramStats.updateCountOfUserMessagesInQueueToBeSent(argument.datagramType);
        }
        for (Entry<Long, SendSatelliteDatagramArgument> entry :
                mPendingNonEmergencyDatagramsMap.entrySet()) {
            SendSatelliteDatagramArgument argument = entry.getValue();
            Log.d("SessionMetricsStats1", "DataGramType2 =  " + argument.datagramType);
            datagramStats.updateCountOfUserMessagesInQueueToBeSent(argument.datagramType);
        }
    }
}
+13 −14
Original line number Diff line number Diff line
@@ -37,7 +37,7 @@ import com.android.internal.telephony.satellite.DatagramDispatcher;
 */
public class SessionMetricsStats {
    private static final String TAG = SessionMetricsStats.class.getSimpleName();
    private static final boolean DBG = false;
    private static final boolean DBG = true;

    private static SessionMetricsStats sInstance = null;
    private @SatelliteManager.SatelliteResult int mInitializationResult;
@@ -62,11 +62,11 @@ public class SessionMetricsStats {
    private int mCountOfSatelliteNotificationDisplayed;
    private int mCountOfAutoExitDueToScreenOff;
    private int mCountOfAutoExitDueToTnNetwork;
    private SatelliteSessionStats datagramStats;
    private SatelliteSessionStats mDatagramStats;

    private SessionMetricsStats() {
        initializeSessionMetricsParam();
        datagramStats = new SatelliteSessionStats();
        mDatagramStats = new SatelliteSessionStats();
    }

    /**
@@ -133,7 +133,9 @@ public class SessionMetricsStats {
    public SessionMetricsStats addCountOfSuccessfulOutgoingDatagram(
            @NonNull @SatelliteManager.DatagramType int datagramType,
            long datagramTransmissionTime) {
        datagramStats.recordSuccessfulOutgoingDatagramStats(datagramType, datagramTransmissionTime);
        logd("addCountOfSuccessfulOutgoingDatagram: datagramType=" + datagramType);
        mDatagramStats.recordSuccessfulOutgoingDatagramStats(datagramType,
                datagramTransmissionTime);
        if (datagramType == SatelliteManager.DATAGRAM_TYPE_KEEP_ALIVE) {
            // Ignore KEEP_ALIVE messages
            return this;
@@ -141,8 +143,6 @@ public class SessionMetricsStats {

        mCountOfSuccessfulOutgoingDatagram++;
        mShadowCountOfSuccessfulOutgoingDatagram++;
        logd("addCountOfSuccessfulOutgoingDatagram: current count="
                + mCountOfSuccessfulOutgoingDatagram);
        return this;
    }

@@ -150,7 +150,9 @@ public class SessionMetricsStats {
    public SessionMetricsStats addCountOfFailedOutgoingDatagram(
            @NonNull @SatelliteManager.DatagramType int datagramType,
            @NonNull @SatelliteManager.SatelliteResult int resultCode) {
        datagramStats.addCountOfUnsuccessfulUserMessages(datagramType, resultCode);
        logd("addCountOfFailedOutgoingDatagram: datagramType=" + datagramType + "  resultCode = "
                + resultCode);
        mDatagramStats.addCountOfUnsuccessfulUserMessages(datagramType, resultCode);
        if (datagramType == SatelliteManager.DATAGRAM_TYPE_KEEP_ALIVE) {
            // Ignore KEEP_ALIVE messages
            return this;
@@ -158,14 +160,11 @@ public class SessionMetricsStats {

        mCountOfFailedOutgoingDatagram++;
        mShadowCountOfFailedOutgoingDatagram++;
        logd("addCountOfFailedOutgoingDatagram: current count=" + mCountOfFailedOutgoingDatagram);

        if (resultCode == SatelliteManager.SATELLITE_RESULT_NOT_REACHABLE) {
            addCountOfTimedOutUserMessagesWaitingForConnection(datagramType);
        } else if (resultCode == SatelliteManager.SATELLITE_RESULT_MODEM_TIMEOUT) {
            addCountOfTimedOutUserMessagesWaitingForAck(datagramType);
        }

        return this;
    }

@@ -304,9 +303,9 @@ public class SessionMetricsStats {
                .build();
        bundle.putParcelable(SatelliteManager.KEY_SESSION_STATS, sessionStats);

        // TODO b/381007377 should retrieve MessagesInQueueToBeSent count per messageType and add
        //  to datagramStats
        bundle.putParcelable(KEY_SESSION_STATS_V2, datagramStats);
        DatagramDispatcher.getInstance().updateSessionStatsWithPendingUserMsgCount(mDatagramStats);
        bundle.putParcelable(KEY_SESSION_STATS_V2, mDatagramStats);
        Log.i(TAG, "[END] DatagramStats = " +mDatagramStats);
        result.send(SATELLITE_RESULT_SUCCESS, bundle);
    }

@@ -347,7 +346,7 @@ public class SessionMetricsStats {
        mShadowCountOfFailedOutgoingDatagram = 0;
        mShadowCountOfTimedOutUserMessagesWaitingForConnection = 0;
        mShadowCountOfTimedOutUserMessagesWaitingForAck = 0;
        datagramStats.clear();
        mDatagramStats.clear();
    }

    private static void logd(@NonNull String log) {