diff options
author | 2024-05-06 22:35:42 +0000 | |
---|---|---|
committer | 2024-05-21 20:51:48 +0000 | |
commit | e207f9341c17c87bdbf98cd44d3d1d6d1101e34b (patch) | |
tree | ebfcb67028a4b30eaffc8ff286ed47704bdeede6 | |
parent | 0b4557fd7b93134ebdc79447c273d31aec155f12 (diff) |
Add max signal level into satellite session metrics
It is added to report latest ntn signal strength when the latest is stronger than prior one. the max value will be logged per enabled satellite session
Bug: 336858177
Test: SatelliteStatsTest PersistAtomsStorageTest
manually tested using satellite enable and compare log and the value in persist_atoms.pb proto
Change-Id: Id79f4eda855acb17b31fde7fbf4a7fe5505dac1e
8 files changed, 59 insertions, 13 deletions
diff --git a/proto/src/persist_atoms.proto b/proto/src/persist_atoms.proto index 46a2400e4d..3847fcd5db 100644 --- a/proto/src/persist_atoms.proto +++ b/proto/src/persist_atoms.proto @@ -682,6 +682,7 @@ message SatelliteSession { optional int32 count_of_incoming_datagram_success = 10; optional int32 count_of_incoming_datagram_failed = 11; optional bool is_demo_mode = 12; + optional int32 max_ntn_signal_strength_level = 13; } message SatelliteIncomingDatagram { diff --git a/src/java/com/android/internal/telephony/metrics/MetricsCollector.java b/src/java/com/android/internal/telephony/metrics/MetricsCollector.java index 61325316b6..0031c7e38a 100644 --- a/src/java/com/android/internal/telephony/metrics/MetricsCollector.java +++ b/src/java/com/android/internal/telephony/metrics/MetricsCollector.java @@ -1370,7 +1370,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback { satelliteSession.countOfOutgoingDatagramFailed, satelliteSession.countOfIncomingDatagramSuccess, satelliteSession.countOfIncomingDatagramFailed, - satelliteSession.isDemoMode); + satelliteSession.isDemoMode, + satelliteSession.maxNtnSignalStrengthLevel); } private static StatsEvent buildStatsEvent(SatelliteIncomingDatagram stats) { diff --git a/src/java/com/android/internal/telephony/metrics/PersistAtomsStorage.java b/src/java/com/android/internal/telephony/metrics/PersistAtomsStorage.java index 979777b3dd..8afdc36602 100644 --- a/src/java/com/android/internal/telephony/metrics/PersistAtomsStorage.java +++ b/src/java/com/android/internal/telephony/metrics/PersistAtomsStorage.java @@ -2066,7 +2066,7 @@ public class PersistAtomsStorage { } /** - * Returns SatelliteOutgoingDatagram atom that has same values or {@code null} + * Returns SatelliteSession atom that has same values or {@code null} * if it does not exist. */ private @Nullable SatelliteSession find( @@ -2085,7 +2085,8 @@ public class PersistAtomsStorage { && stats.countOfOutgoingDatagramFailed == key.countOfOutgoingDatagramFailed && stats.countOfIncomingDatagramSuccess == key.countOfIncomingDatagramSuccess && stats.countOfIncomingDatagramFailed == key.countOfIncomingDatagramFailed - && stats.isDemoMode == key.isDemoMode) { + && stats.isDemoMode == key.isDemoMode + && stats.maxNtnSignalStrengthLevel == key.maxNtnSignalStrengthLevel) { return stats; } } @@ -2093,7 +2094,7 @@ public class PersistAtomsStorage { } /** - * Returns SatelliteOutgoingDatagram atom that has same values or {@code null} + * Returns SatelliteSosMessageRecommender atom that has same values or {@code null} * if it does not exist. */ private @Nullable SatelliteSosMessageRecommender find( diff --git a/src/java/com/android/internal/telephony/metrics/SatelliteStats.java b/src/java/com/android/internal/telephony/metrics/SatelliteStats.java index a9aab58ad8..e097c62e3f 100644 --- a/src/java/com/android/internal/telephony/metrics/SatelliteStats.java +++ b/src/java/com/android/internal/telephony/metrics/SatelliteStats.java @@ -16,6 +16,9 @@ package com.android.internal.telephony.metrics; +import static android.telephony.satellite.NtnSignalStrength.NTN_SIGNAL_STRENGTH_NONE; + +import android.telephony.satellite.NtnSignalStrength; import android.telephony.satellite.SatelliteManager; import com.android.internal.telephony.PhoneFactory; @@ -560,6 +563,7 @@ public class SatelliteStats { private final int mCountOfIncomingDatagramSuccess; private final int mCountOfIncomingDatagramFailed; private final boolean mIsDemoMode; + private final @NtnSignalStrength.NtnSignalStrengthLevel int mMaxNtnSignalStrengthLevel; private SatelliteSessionParams(Builder builder) { this.mSatelliteServiceInitializationResult = @@ -575,6 +579,7 @@ public class SatelliteStats { this.mCountOfIncomingDatagramSuccess = builder.mCountOfIncomingDatagramSuccess; this.mCountOfIncomingDatagramFailed = builder.mCountOfIncomingDatagramFailed; this.mIsDemoMode = builder.mIsDemoMode; + this.mMaxNtnSignalStrengthLevel = builder.mMaxNtnSignalStrengthLevel; } public int getSatelliteServiceInitializationResult() { @@ -621,6 +626,10 @@ public class SatelliteStats { return mIsDemoMode; } + public @NtnSignalStrength.NtnSignalStrengthLevel int getMaxNtnSignalStrengthLevel() { + return mMaxNtnSignalStrengthLevel; + } + /** * A builder class to create {@link SatelliteSessionParams} data structure class */ @@ -636,6 +645,8 @@ public class SatelliteStats { private int mCountOfIncomingDatagramSuccess = -1; private int mCountOfIncomingDatagramFailed = -1; private boolean mIsDemoMode = false; + private @NtnSignalStrength.NtnSignalStrengthLevel int mMaxNtnSignalStrengthLevel = + NTN_SIGNAL_STRENGTH_NONE; /** * Sets satelliteServiceInitializationResult value of {@link SatelliteSession} @@ -711,6 +722,13 @@ public class SatelliteStats { return this; } + /** Sets the max ntn signal strength for the satellite session */ + public Builder setMaxNtnSignalStrengthLevel( + @NtnSignalStrength.NtnSignalStrengthLevel int maxNtnSignalStrengthLevel) { + this.mMaxNtnSignalStrengthLevel = maxNtnSignalStrengthLevel; + return this; + } + /** * Returns SessionParams, which contains whole component of * {@link SatelliteSession} atom @@ -735,6 +753,7 @@ public class SatelliteStats { + ", CountOfIncomingDatagramSuccess=" + mCountOfIncomingDatagramSuccess + ", CountOfIncomingDatagramFailed=" + mCountOfIncomingDatagramFailed + ", IsDemoMode=" + mIsDemoMode + + ", MaxNtnSignalStrengthLevel=" + mMaxNtnSignalStrengthLevel + ")"; } } @@ -1261,6 +1280,7 @@ public class SatelliteStats { proto.countOfIncomingDatagramSuccess = param.getCountOfIncomingDatagramSuccess(); proto.countOfIncomingDatagramFailed = param.getCountOfOutgoingDatagramFailed(); proto.isDemoMode = param.getIsDemoMode(); + proto.maxNtnSignalStrengthLevel = param.getMaxNtnSignalStrengthLevel(); mAtomsStorage.addSatelliteSessionStats(proto); } diff --git a/src/java/com/android/internal/telephony/satellite/SatelliteController.java b/src/java/com/android/internal/telephony/satellite/SatelliteController.java index c0917fe6df..acdb6c298a 100644 --- a/src/java/com/android/internal/telephony/satellite/SatelliteController.java +++ b/src/java/com/android/internal/telephony/satellite/SatelliteController.java @@ -3430,6 +3430,7 @@ public class SatelliteController extends Handler { synchronized (mNtnSignalsStrengthLock) { mNtnSignalStrength = ntnSignalStrength; } + mSessionMetricsStats.updateMaxNtnSignalStrengthLevel(ntnSignalStrength.getLevel()); List<INtnSignalStrengthCallback> deadCallersList = new ArrayList<>(); mNtnSignalStrengthChangedListeners.values().forEach(listener -> { diff --git a/src/java/com/android/internal/telephony/satellite/metrics/SessionMetricsStats.java b/src/java/com/android/internal/telephony/satellite/metrics/SessionMetricsStats.java index c50db076b1..73ede600e8 100644 --- a/src/java/com/android/internal/telephony/satellite/metrics/SessionMetricsStats.java +++ b/src/java/com/android/internal/telephony/satellite/metrics/SessionMetricsStats.java @@ -16,7 +16,10 @@ package com.android.internal.telephony.satellite.metrics; +import static android.telephony.satellite.NtnSignalStrength.NTN_SIGNAL_STRENGTH_NONE; + import android.annotation.NonNull; +import android.telephony.satellite.NtnSignalStrength; import android.telephony.satellite.SatelliteManager; import android.util.Log; @@ -41,7 +44,7 @@ public class SessionMetricsStats { private int mCountOfSuccessfulIncomingDatagram; private int mCountOfIncomingDatagramFailed; private boolean mIsDemoMode; - + private @NtnSignalStrength.NtnSignalStrengthLevel int mMaxNtnSignalStrengthLevel; private SessionMetricsStats() { initializeSessionMetricsParam(); @@ -144,6 +147,17 @@ public class SessionMetricsStats { return this; } + /** Updates the max Ntn signal strength level for the session. */ + public SessionMetricsStats updateMaxNtnSignalStrengthLevel( + @NtnSignalStrength.NtnSignalStrengthLevel int latestNtnSignalStrengthLevel) { + if (latestNtnSignalStrengthLevel > mMaxNtnSignalStrengthLevel) { + mMaxNtnSignalStrengthLevel = latestNtnSignalStrengthLevel; + } + logd("updateMaxNtnSignalsStrength: latest signal strength=" + latestNtnSignalStrengthLevel + + ", max signal strength=" + mMaxNtnSignalStrengthLevel); + return this; + } + /** Report the session metrics atoms to PersistAtomsStorage in telephony. */ public void reportSessionMetrics() { SatelliteStats.SatelliteSessionParams sessionParams = @@ -159,6 +173,7 @@ public class SessionMetricsStats { .setCountOfIncomingDatagramSuccess(mCountOfSuccessfulIncomingDatagram) .setCountOfIncomingDatagramFailed(mCountOfIncomingDatagramFailed) .setIsDemoMode(mIsDemoMode) + .setMaxNtnSignalStrengthLevel(mMaxNtnSignalStrengthLevel) .build(); logd("reportSessionMetrics: " + sessionParams.toString()); SatelliteStats.getInstance().onSatelliteSessionMetrics(sessionParams); @@ -187,6 +202,7 @@ public class SessionMetricsStats { mCountOfSuccessfulIncomingDatagram = 0; mCountOfIncomingDatagramFailed = 0; mIsDemoMode = false; + mMaxNtnSignalStrengthLevel = NTN_SIGNAL_STRENGTH_NONE; } private static void logd(@NonNull String log) { diff --git a/tests/telephonytests/src/com/android/internal/telephony/metrics/PersistAtomsStorageTest.java b/tests/telephonytests/src/com/android/internal/telephony/metrics/PersistAtomsStorageTest.java index 3aad3333b0..5e5cb9adfb 100644 --- a/tests/telephonytests/src/com/android/internal/telephony/metrics/PersistAtomsStorageTest.java +++ b/tests/telephonytests/src/com/android/internal/telephony/metrics/PersistAtomsStorageTest.java @@ -1149,6 +1149,7 @@ public class PersistAtomsStorageTest extends TelephonyTest { mSatelliteSession1.countOfIncomingDatagramSuccess = 1; mSatelliteSession1.countOfIncomingDatagramFailed = 0; mSatelliteSession1.isDemoMode = false; + mSatelliteSession1.maxNtnSignalStrengthLevel = 2; mSatelliteSession2 = new SatelliteSession(); mSatelliteSession2.satelliteServiceInitializationResult = @@ -1156,16 +1157,17 @@ public class PersistAtomsStorageTest extends TelephonyTest { mSatelliteSession2.satelliteTechnology = SatelliteProtoEnums.NT_RADIO_TECHNOLOGY_NB_IOT_NTN; mSatelliteSession2.count = 1; - mSatelliteSession1.satelliteServiceTerminationResult = + mSatelliteSession2.satelliteServiceTerminationResult = SatelliteProtoEnums.SATELLITE_ERROR_NONE; - mSatelliteSession1.initializationProcessingTimeMillis = 300; - mSatelliteSession1.terminationProcessingTimeMillis = 100; - mSatelliteSession1.sessionDurationSeconds = 10; - mSatelliteSession1.countOfOutgoingDatagramSuccess = 0; - mSatelliteSession1.countOfOutgoingDatagramFailed = 2; - mSatelliteSession1.countOfIncomingDatagramSuccess = 0; - mSatelliteSession1.countOfIncomingDatagramFailed = 1; + mSatelliteSession2.initializationProcessingTimeMillis = 300; + mSatelliteSession2.terminationProcessingTimeMillis = 100; + mSatelliteSession2.sessionDurationSeconds = 10; + mSatelliteSession2.countOfOutgoingDatagramSuccess = 0; + mSatelliteSession2.countOfOutgoingDatagramFailed = 2; + mSatelliteSession2.countOfIncomingDatagramSuccess = 0; + mSatelliteSession2.countOfIncomingDatagramFailed = 1; mSatelliteSession2.isDemoMode = true; + mSatelliteSession2.maxNtnSignalStrengthLevel = 4; mSatelliteSessions = new SatelliteSession[] { diff --git a/tests/telephonytests/src/com/android/internal/telephony/metrics/SatelliteStatsTest.java b/tests/telephonytests/src/com/android/internal/telephony/metrics/SatelliteStatsTest.java index 9a84224c98..bc665f85e4 100644 --- a/tests/telephonytests/src/com/android/internal/telephony/metrics/SatelliteStatsTest.java +++ b/tests/telephonytests/src/com/android/internal/telephony/metrics/SatelliteStatsTest.java @@ -16,6 +16,8 @@ package com.android.internal.telephony.metrics; +import static android.telephony.satellite.NtnSignalStrength.NTN_SIGNAL_STRENGTH_GOOD; + import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; @@ -167,6 +169,7 @@ public class SatelliteStatsTest extends TelephonyTest { .setCountOfIncomingDatagramSuccess(1) .setCountOfIncomingDatagramFailed(0) .setIsDemoMode(false) + .setMaxNtnSignalStrengthLevel(NTN_SIGNAL_STRENGTH_GOOD) .build(); mSatelliteStats.onSatelliteSessionMetrics(param); @@ -189,6 +192,7 @@ public class SatelliteStatsTest extends TelephonyTest { stats.countOfIncomingDatagramSuccess); assertEquals(param.getCountOfIncomingDatagramFailed(), stats.countOfIncomingDatagramFailed); assertEquals(param.getIsDemoMode(), stats.isDemoMode); + assertEquals(param.getMaxNtnSignalStrengthLevel(), stats.maxNtnSignalStrengthLevel); verifyNoMoreInteractions(mPersistAtomsStorage); } |