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

Commit 67bd82bd authored by Aishwarya Mallampati's avatar Aishwarya Mallampati Committed by Automerger Merge Worker
Browse files

Merge "1. Add rsrp and rssnr average and median in...

Merge "1. Add rsrp and rssnr average and median in CarrierRoamingSatelliteSession 2. Add count of incomingSms, outgoingSms in CarrierRoamingSatelliteSession" into 24D1-dev am: 33e5fd6f

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/opt/telephony/+/27252400



Change-Id: I22046ec7113495d904f19f95115fea661c07e336
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 29ce646b 33e5fd6f
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -74,6 +74,7 @@ import com.android.internal.telephony.SmsConstants.MessageClass;
import com.android.internal.telephony.analytics.TelephonyAnalytics;
import com.android.internal.telephony.analytics.TelephonyAnalytics.SmsMmsAnalytics;
import com.android.internal.telephony.metrics.TelephonyMetrics;
import com.android.internal.telephony.satellite.metrics.CarrierRoamingSatelliteSessionStats;
import com.android.internal.telephony.util.NotificationChannelController;
import com.android.internal.telephony.util.TelephonyUtils;
import com.android.internal.util.HexDump;
@@ -1104,6 +1105,9 @@ public abstract class InboundSmsHandler extends StateMachine {
                format, timestamps, block, tracker.getMessageId());
        mPhone.getSmsStats().onIncomingSmsSuccess(is3gpp2(), tracker.getSource(),
                messageCount, block, tracker.getMessageId());
        CarrierRoamingSatelliteSessionStats sessionStats =
                CarrierRoamingSatelliteSessionStats.getInstance(mPhone.getSubId());
        sessionStats.onIncomingSms();
        if (mPhone != null) {
            TelephonyAnalytics telephonyAnalytics = mPhone.getTelephonyAnalytics();
            if (telephonyAnalytics != null) {
+4 −0
Original line number Diff line number Diff line
@@ -89,6 +89,7 @@ import com.android.internal.telephony.GsmAlphabet.TextEncodingDetails;
import com.android.internal.telephony.analytics.TelephonyAnalytics;
import com.android.internal.telephony.analytics.TelephonyAnalytics.SmsMmsAnalytics;
import com.android.internal.telephony.cdma.sms.UserData;
import com.android.internal.telephony.satellite.metrics.CarrierRoamingSatelliteSessionStats;
import com.android.internal.telephony.subscription.SubscriptionInfoInternal;
import com.android.internal.telephony.subscription.SubscriptionManagerService;
import com.android.internal.telephony.uicc.IccRecords;
@@ -1066,6 +1067,9 @@ public abstract class SMSDispatcher extends Handler {
                    tracker.isFromDefaultSmsApplication(mContext),
                    tracker.getInterval(),
                    mTelephonyManager.isEmergencyNumber(tracker.mDestAddress));
            CarrierRoamingSatelliteSessionStats sessionStats =
                    CarrierRoamingSatelliteSessionStats.getInstance(mPhone.getSubId());
            sessionStats.onOutgoingSms();
            if (mPhone != null) {
                TelephonyAnalytics telephonyAnalytics = mPhone.getTelephonyAnalytics();
                if (telephonyAnalytics != null) {
+1 −4
Original line number Diff line number Diff line
@@ -35,9 +35,6 @@ import com.android.internal.telephony.nano.PersistAtomsProto.SatelliteSosMessage
import com.android.internal.telephony.satellite.SatelliteConstants;
import com.android.telephony.Rlog;

import java.util.ArrayList;
import java.util.List;

/** Tracks Satellite metrics for each phone */
public class SatelliteStats {
    private static final String TAG = SatelliteStats.class.getSimpleName();
@@ -1534,7 +1531,7 @@ public class SatelliteStats {
                    + ", rsrpAvg=" + mRsrpAvg
                    + ", rsrpMedian=" + mRsrpMedian
                    + ", rssnrAvg=" + mRssnrAvg
                    + ", rssnrMedian=" + mRsrpMedian
                    + ", rssnrMedian=" + mRssnrMedian
                    + ", countOfIncomingSms=" + mCountOfIncomingSms
                    + ", countOfOutgoingSms=" + mCountOfOutgoingSms
                    + ", countOfIncomingMms=" + mCountOfIncomingMms
+8 −5
Original line number Diff line number Diff line
@@ -4192,10 +4192,13 @@ public class SatelliteController extends Handler {
                        mCarrierRoamingSatelliteSessionStatsMap.get(subId);

                if (serviceState.isUsingNonTerrestrialNetwork()) {
                    if (sessionStats != null && !mWasSatelliteConnectedViaCarrier.get(subId)) {
                    if (sessionStats != null) {
                        sessionStats.onSignalStrength(phone);
                        if (!mWasSatelliteConnectedViaCarrier.get(subId)) {
                            // Log satellite connection start
                            sessionStats.onConnectionStart();
                        }
                    }

                    resetCarrierRoamingSatelliteModeParams(subId);
                    mWasSatelliteConnectedViaCarrier.put(subId, true);
@@ -4263,8 +4266,8 @@ public class SatelliteController extends Handler {
            if (!lastNotifiedNtnMode && currNtnMode) {
                // Log satellite session start
                CarrierRoamingSatelliteSessionStats sessionStats =
                        new CarrierRoamingSatelliteSessionStats(mContext, phone.getCarrierId());
                sessionStats.onSessionStart();
                        CarrierRoamingSatelliteSessionStats.getInstance(subId);
                sessionStats.onSessionStart(phone.getCarrierId());
                mCarrierRoamingSatelliteSessionStatsMap.put(subId, sessionStats);
            } else if (lastNotifiedNtnMode && !currNtnMode) {
                // Log satellite session end
+92 −26
Original line number Diff line number Diff line
@@ -17,10 +17,15 @@
package com.android.internal.telephony.satellite.metrics;

import android.annotation.NonNull;
import android.content.Context;
import android.telephony.CellInfo;
import android.telephony.CellSignalStrength;
import android.telephony.CellSignalStrengthLte;
import android.telephony.SignalStrength;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.util.SparseArray;

import com.android.internal.telephony.Phone;
import com.android.internal.telephony.metrics.SatelliteStats;

import java.util.ArrayList;
@@ -29,14 +34,10 @@ import java.util.List;

public class CarrierRoamingSatelliteSessionStats {
    private static final String TAG = CarrierRoamingSatelliteSessionStats.class.getSimpleName();
    private final Context mContext;

    private static final SparseArray<CarrierRoamingSatelliteSessionStats>
            sCarrierRoamingSatelliteSessionStats = new SparseArray<>();
    private int mCarrierId;
    private boolean mIsNtnRoamingInHomeCountry;
    private int mRsrpAvg;
    private int mRsrpMedian;
    private int mRssnrAvg;
    private int mRssnrMedian;
    private int mCountOfIncomingSms;
    private int mCountOfOutgoingSms;
    private int mCountOfIncomingMms;
@@ -45,17 +46,28 @@ public class CarrierRoamingSatelliteSessionStats {
    private int mSessionStartTimeSec;
    private List<Long> mConnectionStartTimeList;
    private List<Long> mConnectionEndTimeList;
    private List<Integer> mRsrpList;
    private List<Integer> mRssnrList;

    public CarrierRoamingSatelliteSessionStats(@NonNull Context context, int carrierId) {
    public CarrierRoamingSatelliteSessionStats() {
        logd("Create new CarrierRoamingSatelliteSessionStats.");
        initializeParams();
    }

        mContext = context;
        mCarrierId = carrierId;
    /** Gets a CarrierRoamingSatelliteSessionStats instance. */
    public static CarrierRoamingSatelliteSessionStats getInstance(int subId) {
        synchronized (sCarrierRoamingSatelliteSessionStats) {
            if (sCarrierRoamingSatelliteSessionStats.get(subId) == null) {
                sCarrierRoamingSatelliteSessionStats.put(subId,
                        new CarrierRoamingSatelliteSessionStats());
            }
            return sCarrierRoamingSatelliteSessionStats.get(subId);
        }
    }

    /** Log carrier roaming satellite session start */
    public void onSessionStart() {
    public void onSessionStart(int carrierId) {
        mCarrierId = carrierId;
        mSessionStartTimeSec = getCurrentTimeInSec();
        onConnectionStart();
    }
@@ -76,6 +88,36 @@ public class CarrierRoamingSatelliteSessionStats {
        mConnectionEndTimeList.add(getCurrentTime());
    }

    /** Log rsrp and rssnr when occurred the service state change with NTN is connected. */
    public void onSignalStrength(Phone phone) {
        CellSignalStrengthLte cellSignalStrengthLte = getCellSignalStrengthLte(phone);
        int rsrp = cellSignalStrengthLte.getRsrp();
        int rssnr = cellSignalStrengthLte.getRssnr();
        if (rsrp == CellInfo.UNAVAILABLE) {
            logd("onSignalStrength: rsrp unavailable");
            return;
        }
        if (rssnr == CellInfo.UNAVAILABLE) {
            logd("onSignalStrength: rssnr unavailable");
            return;
        }
        mRsrpList.add(rsrp);
        mRssnrList.add(rssnr);
        logd("onSignalStrength : rsrp=" + rsrp + ", rssnr=" + rssnr);
    }

    /** Log incoming sms success case */
    public void onIncomingSms() {
        mCountOfIncomingSms += 1;
        logd("onIncomingSms: mCountOfIncomingSms=" + mCountOfIncomingSms);
    }

    /** Log outgoing sms success case */
    public void onOutgoingSms() {
        mCountOfOutgoingSms += 1;
        logd("onOutgoingSms: mCountOfOutgoingSms=" + mCountOfOutgoingSms);
    }

    private void reportMetrics() {
        int totalSatelliteModeTimeSec = mSessionStartTimeSec > 0
                ? getCurrentTimeInSec() - mSessionStartTimeSec : 0;
@@ -100,12 +142,12 @@ public class CarrierRoamingSatelliteSessionStats {
                        .setNumberOfSatelliteConnections(numberOfSatelliteConnections)
                        .setAvgDurationOfSatelliteConnectionSec(avgDurationOfSatelliteConnectionSec)
                        .setSatelliteConnectionGapMinSec(satelliteConnectionGapMinSec)
                        .setSatelliteConnectionGapAvgSec(getAvgConnectionGapSec(connectionGapList))
                        .setSatelliteConnectionGapAvgSec(getAvg(connectionGapList))
                        .setSatelliteConnectionGapMaxSec(satelliteConnectionGapMaxSec)
                        .setRsrpAvg(mRsrpAvg)
                        .setRsrpMedian(mRsrpMedian)
                        .setRssnrAvg(mRssnrAvg)
                        .setRssnrMedian(mRssnrMedian)
                        .setRsrpAvg(getAvg(mRsrpList))
                        .setRsrpMedian(getMedian(mRsrpList))
                        .setRssnrAvg(getAvg(mRssnrList))
                        .setRssnrMedian(getMedian(mRssnrList))
                        .setCountOfIncomingSms(mCountOfIncomingSms)
                        .setCountOfOutgoingSms(mCountOfOutgoingSms)
                        .setCountOfIncomingMms(mCountOfIncomingMms)
@@ -119,10 +161,6 @@ public class CarrierRoamingSatelliteSessionStats {
    private void initializeParams() {
        mCarrierId = TelephonyManager.UNKNOWN_CARRIER_ID;
        mIsNtnRoamingInHomeCountry = false;
        mRsrpAvg = 0;
        mRsrpMedian = 0;
        mRssnrAvg = 0;
        mRssnrMedian = 0;
        mCountOfIncomingSms = 0;
        mCountOfOutgoingSms = 0;
        mCountOfIncomingMms = 0;
@@ -131,6 +169,20 @@ public class CarrierRoamingSatelliteSessionStats {
        mSessionStartTimeSec = 0;
        mConnectionStartTimeList = new ArrayList<>();
        mConnectionEndTimeList = new ArrayList<>();
        mRsrpList = new ArrayList<>();
        mRssnrList = new ArrayList<>();
    }

    private CellSignalStrengthLte getCellSignalStrengthLte(Phone phone) {
        SignalStrength signalStrength = phone.getSignalStrength();
        List<CellSignalStrength> cellSignalStrengths = signalStrength.getCellSignalStrengths();
        for (CellSignalStrength cellSignalStrength : cellSignalStrengths) {
            if (cellSignalStrength instanceof CellSignalStrengthLte) {
                return (CellSignalStrengthLte) cellSignalStrength;
            }
        }

        return new CellSignalStrengthLte();
    }

    private int getNumberOfSatelliteConnections() {
@@ -172,17 +224,31 @@ public class CarrierRoamingSatelliteSessionStats {
        return connectionGapList;
    }

    private int getAvgConnectionGapSec(@NonNull List<Integer> connectionGapList) {
        if (connectionGapList.isEmpty()) {
    private int getAvg(@NonNull List<Integer> list) {
        if (list.isEmpty()) {
            return 0;
        }

        int totalConnectionGap = 0;
        for (int gap : connectionGapList) {
            totalConnectionGap += gap;
        int total = 0;
        for (int num : list) {
            total += num;
        }

        return total / list.size();
    }

    private int getMedian(@NonNull List<Integer> list) {
        if (list.isEmpty()) {
            return 0;
        }
        int size = list.size();
        if (size == 1) {
            return list.get(0);
        }

        return (totalConnectionGap / connectionGapList.size());
        Collections.sort(list);
        return size % 2 == 0 ? (list.get(size / 2 - 1) + list.get(size / 2)) / 2
                : list.get(size / 2);
    }

    private int getCurrentTimeInSec() {
Loading