summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Hakjun Choi <hakjunc@google.com> 2024-05-06 22:35:42 +0000
committer Hakjun Choi <hakjunc@google.com> 2024-05-21 20:51:48 +0000
commite207f9341c17c87bdbf98cd44d3d1d6d1101e34b (patch)
treeebfcb67028a4b30eaffc8ff286ed47704bdeede6
parent0b4557fd7b93134ebdc79447c273d31aec155f12 (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
-rw-r--r--proto/src/persist_atoms.proto1
-rw-r--r--src/java/com/android/internal/telephony/metrics/MetricsCollector.java3
-rw-r--r--src/java/com/android/internal/telephony/metrics/PersistAtomsStorage.java7
-rw-r--r--src/java/com/android/internal/telephony/metrics/SatelliteStats.java20
-rw-r--r--src/java/com/android/internal/telephony/satellite/SatelliteController.java1
-rw-r--r--src/java/com/android/internal/telephony/satellite/metrics/SessionMetricsStats.java18
-rw-r--r--tests/telephonytests/src/com/android/internal/telephony/metrics/PersistAtomsStorageTest.java18
-rw-r--r--tests/telephonytests/src/com/android/internal/telephony/metrics/SatelliteStatsTest.java4
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);
}