summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
author Hakjun Choi <hakjunc@google.com> 2025-03-12 11:25:18 +0000
committer Hakjun Choi <hakjunc@google.com> 2025-03-12 18:05:28 +0000
commit5ac640563c7dd8a61949f086fd2b4f2d9ca4837a (patch)
tree0429e749540207a634c0d2f12a44033e64161b95 /src
parent0e5c6b485c285307bbd78993409909429574d51e (diff)
Add new fields for counting sms sms message for Satellite
Added counter for successful/failed incoming/outgoing messages Related atom : SatelliteController atom Fields definition 1. count_of_incoming_datagram_type_sos_sms_success : count haw many times sos or sms message have received successfully, this is similar with count_of_datagram_type_sos_sms_success, but it is for outgoing sos or sms message type. 2. count_of_incoming_datagram_type_sos_sms_fail : count how many times sos or sms message receive attempt have failed, this is similar with count_of_datagram_type_sos_sms_fail, but it is for outgoing sos or sms message type. 3. count_of_outgoing_sdatagram_type_sms_success : count how many times sms message have received successfully, this is needed because existing field count_of_datagram_type_sos_sms_success count merged value for sos and sms, we don't have way to distinguish sms or sos, so this field is added. 4. count_of_outgoing_datagram_type_sms_fail : similar with above 5. count_of_incoming_datagram_type_sms_success : similar with above, but it is for incoming sms case 6. count_of_incoming_datagram_type_sms_fail : similar with above Flag: EXEMPT bug fix Bug: 402622532 Test: atest atest PersistAtomsStorageTest SatelliteStatsTest SatelliteControllerTest Test: manually test and check DB whether it is reported or not Change-Id: Ideacbf2a9c56a67cb37b244067a6f6826fe5c354
Diffstat (limited to 'src')
-rw-r--r--src/java/com/android/internal/telephony/metrics/MetricsCollector.java8
-rw-r--r--src/java/com/android/internal/telephony/metrics/PersistAtomsStorage.java12
-rw-r--r--src/java/com/android/internal/telephony/metrics/SatelliteStats.java128
-rw-r--r--src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java2
-rw-r--r--src/java/com/android/internal/telephony/satellite/SatelliteController.java3
-rw-r--r--src/java/com/android/internal/telephony/satellite/metrics/ControllerMetricsStats.java32
6 files changed, 181 insertions, 4 deletions
diff --git a/src/java/com/android/internal/telephony/metrics/MetricsCollector.java b/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
index a5df6e6d9a..7863b25405 100644
--- a/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
+++ b/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
@@ -1485,7 +1485,13 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback {
satelliteController.countOfP2PSmsAvailableNotificationShown,
satelliteController.countOfP2PSmsAvailableNotificationRemoved,
satelliteController.isNtnOnlyCarrier,
- satelliteController.versionOfSatelliteAccessConfig);
+ satelliteController.versionOfSatelliteAccessConfig,
+ satelliteController.countOfIncomingDatagramTypeSosSmsSuccess,
+ satelliteController.countOfIncomingDatagramTypeSosSmsFail,
+ satelliteController.countOfOutgoingDatagramTypeSmsSuccess,
+ satelliteController.countOfOutgoingDatagramTypeSmsFail,
+ satelliteController.countOfIncomingDatagramTypeSmsSuccess,
+ satelliteController.countOfIncomingDatagramTypeSmsFail);
}
private static StatsEvent buildStatsEvent(SatelliteSession satelliteSession) {
diff --git a/src/java/com/android/internal/telephony/metrics/PersistAtomsStorage.java b/src/java/com/android/internal/telephony/metrics/PersistAtomsStorage.java
index 9f6af3f7a1..4346da4b79 100644
--- a/src/java/com/android/internal/telephony/metrics/PersistAtomsStorage.java
+++ b/src/java/com/android/internal/telephony/metrics/PersistAtomsStorage.java
@@ -786,6 +786,18 @@ public class PersistAtomsStorage {
+= stats.countOfP2PSmsAvailableNotificationRemoved;
// Does not update isNtnOnlyCarrier due to it is a dimension field.
existingStats.versionOfSatelliteAccessConfig = stats.versionOfSatelliteAccessConfig;
+ existingStats.countOfIncomingDatagramTypeSosSmsSuccess
+ += stats.countOfIncomingDatagramTypeSosSmsSuccess;
+ existingStats.countOfIncomingDatagramTypeSosSmsFail
+ += stats.countOfIncomingDatagramTypeSosSmsFail;
+ existingStats.countOfOutgoingDatagramTypeSmsSuccess
+ += stats.countOfOutgoingDatagramTypeSmsSuccess;
+ existingStats.countOfOutgoingDatagramTypeSmsFail
+ += stats.countOfOutgoingDatagramTypeSmsFail;
+ existingStats.countOfIncomingDatagramTypeSmsSuccess
+ += stats.countOfIncomingDatagramTypeSmsSuccess;
+ existingStats.countOfIncomingDatagramTypeSmsFail
+ += stats.countOfIncomingDatagramTypeSmsFail;
} else {
mAtoms.satelliteController = insertAtRandomPlace(mAtoms.satelliteController, stats,
mMaxNumSatelliteStats);
diff --git a/src/java/com/android/internal/telephony/metrics/SatelliteStats.java b/src/java/com/android/internal/telephony/metrics/SatelliteStats.java
index c46a53f530..59ceb6d6c7 100644
--- a/src/java/com/android/internal/telephony/metrics/SatelliteStats.java
+++ b/src/java/com/android/internal/telephony/metrics/SatelliteStats.java
@@ -105,6 +105,12 @@ public class SatelliteStats {
private final int mCountOfP2PSmsAvailableNotificationRemoved;
private static boolean sIsNtnOnlyCarrier;
private static int sVersionOfSatelliteAccessConfig;
+ private final int mCountOfIncomingDatagramTypeSosSmsSuccess;
+ private final int mCountOfIncomingDatagramTypeSosSmsFail;
+ private final int mCountOfOutgoingDatagramTypeSmsSuccess;
+ private final int mCountOfOutgoingDatagramTypeSmsFail;
+ private final int mCountOfIncomingDatagramTypeSmsSuccess;
+ private final int mCountOfIncomingDatagramTypeSmsFail;
private SatelliteControllerParams(Builder builder) {
this.mCountOfSatelliteServiceEnablementsSuccess =
@@ -181,6 +187,17 @@ public class SatelliteStats {
this.sVersionOfSatelliteAccessConfig =
builder.mVersionOfSatelliteAccessConfig.get();
}
+
+ this.mCountOfIncomingDatagramTypeSosSmsSuccess =
+ builder.mCountOfIncomingDatagramTypeSosSmsSuccess;
+ this.mCountOfIncomingDatagramTypeSosSmsFail =
+ builder.mCountOfIncomingDatagramTypeSosSmsFail;
+ this.mCountOfOutgoingDatagramTypeSmsSuccess =
+ builder.mCountOfOutgoingDatagramTypeSmsSuccess;
+ this.mCountOfOutgoingDatagramTypeSmsFail = builder.mCountOfOutgoingDatagramTypeSmsFail;
+ this.mCountOfIncomingDatagramTypeSmsSuccess =
+ builder.mCountOfIncomingDatagramTypeSmsSuccess;
+ this.mCountOfIncomingDatagramTypeSmsFail = builder.mCountOfIncomingDatagramTypeSmsFail;
}
public int getCountOfSatelliteServiceEnablementsSuccess() {
@@ -331,6 +348,30 @@ public class SatelliteStats {
return sVersionOfSatelliteAccessConfig;
}
+ public int getCountOfIncomingDatagramTypeSosSmsSuccess() {
+ return mCountOfIncomingDatagramTypeSosSmsSuccess;
+ }
+
+ public int getCountOfIncomingDatagramTypeSosSmsFail() {
+ return mCountOfIncomingDatagramTypeSosSmsFail;
+ }
+
+ public int getCountOfOutgoingDatagramTypeSmsSuccess() {
+ return mCountOfOutgoingDatagramTypeSmsSuccess;
+ }
+
+ public int getCountOfOutgoingDatagramTypeSmsFail() {
+ return mCountOfOutgoingDatagramTypeSmsFail;
+ }
+
+ public int getCountOfIncomingDatagramTypeSmsSuccess() {
+ return mCountOfIncomingDatagramTypeSmsSuccess;
+ }
+
+ public int getCountOfIncomingDatagramTypeSmsFail() {
+ return mCountOfIncomingDatagramTypeSmsFail;
+ }
+
/**
* A builder class to create {@link SatelliteControllerParams} data structure class
*/
@@ -372,6 +413,12 @@ public class SatelliteStats {
private int mCountOfP2PSmsAvailableNotificationRemoved = 0;
private Optional<Boolean> mIsNtnOnlyCarrier = Optional.empty();
private Optional<Integer> mVersionOfSatelliteAccessConfig = Optional.empty();
+ private int mCountOfIncomingDatagramTypeSosSmsSuccess;
+ private int mCountOfIncomingDatagramTypeSosSmsFail;
+ private int mCountOfOutgoingDatagramTypeSmsSuccess;
+ private int mCountOfOutgoingDatagramTypeSmsFail;
+ private int mCountOfIncomingDatagramTypeSmsSuccess;
+ private int mCountOfIncomingDatagramTypeSmsFail;
/**
* Sets countOfSatelliteServiceEnablementsSuccess value of {@link SatelliteController}
@@ -740,6 +787,67 @@ public class SatelliteStats {
}
/**
+ * Sets countOfIncomingDatagramTypeSosSmsSuccess value of {@link SatelliteController}
+ * atom then returns Builder class
+ */
+ public Builder setCountOfIncomingDatagramTypeSosSmsSuccess(
+ int countOfIncomingDatagramTypeSosSmsSuccess) {
+ this.mCountOfIncomingDatagramTypeSosSmsSuccess =
+ countOfIncomingDatagramTypeSosSmsSuccess;
+ return this;
+ }
+
+ /**
+ * Sets countOfIncomingDatagramTypeSosSmsFail value of {@link SatelliteController} atom
+ * then returns Builder class
+ */
+ public Builder setCountOfIncomingDatagramTypeSosSmsFail(
+ int countOfIncomingDatagramTypeSosSmsFail) {
+ this.mCountOfIncomingDatagramTypeSosSmsFail = countOfIncomingDatagramTypeSosSmsFail;
+ return this;
+ }
+
+ /**
+ * Sets countOfOutgoingDatagramTypeSmsSuccess value of {@link SatelliteController} atom
+ * then returns Builder class
+ */
+ public Builder setCountOfOutgoingDatagramTypeSmsSuccess(
+ int countOfOutgoingDatagramTypeSmsSuccess) {
+ this.mCountOfOutgoingDatagramTypeSmsSuccess = countOfOutgoingDatagramTypeSmsSuccess;
+ return this;
+ }
+
+ /**
+ * Sets countOfOutgoingDatagramTypeSmsFail value of {@link SatelliteController} atom
+ * then returns Builder class
+ */
+ public Builder setCountOfOutgoingDatagramTypeSmsFail(
+ int countOfOutgoingDatagramTypeSmsFail) {
+ this.mCountOfOutgoingDatagramTypeSmsFail = countOfOutgoingDatagramTypeSmsFail;
+ return this;
+ }
+
+ /**
+ * Sets countOfIncomingDatagramTypeSmsSuccess value of {@link SatelliteController} atom
+ * then returns Builder class
+ */
+ public Builder setCountOfIncomingDatagramTypeSmsSuccess(
+ int countOfIncomingDatagramTypeSmsSuccess) {
+ this.mCountOfIncomingDatagramTypeSmsSuccess = countOfIncomingDatagramTypeSmsSuccess;
+ return this;
+ }
+
+ /**
+ * Sets countOfIncomingDatagramTypeSmsFail value of {@link SatelliteController} atom
+ * then returns Builder class
+ */
+ public Builder setCountOfIncomingDatagramTypeSmsFail(
+ int countOfIncomingDatagramTypeSmsFail) {
+ this.mCountOfIncomingDatagramTypeSmsFail = countOfIncomingDatagramTypeSmsFail;
+ return this;
+ }
+
+ /**
* Returns ControllerParams, which contains whole component of
* {@link SatelliteController} atom
*/
@@ -799,6 +907,16 @@ public class SatelliteStats {
+ ", countOfP2PSmsAvailableNotificationRemoved="
+ mCountOfP2PSmsAvailableNotificationRemoved
+ ", versionOfSatelliteAccessConfig=" + sVersionOfSatelliteAccessConfig
+ + ", countOfIncomingDatagramTypeSosSmsSuccess="
+ + mCountOfIncomingDatagramTypeSosSmsSuccess
+ + ", countOfIncomingDatagramTypeSosSmsFail="
+ + mCountOfIncomingDatagramTypeSosSmsFail
+ + ", countOfOutgoingDatagramTypeSmsSuccess="
+ + mCountOfOutgoingDatagramTypeSmsSuccess
+ + ", countOfOutgoingDatagramTypeSmsFail=" + mCountOfOutgoingDatagramTypeSmsFail
+ + ", countOfIncomingDatagramTypeSmsSuccess="
+ + mCountOfIncomingDatagramTypeSmsSuccess
+ + ", countOfIncomingDatagramTypeSmsFail=" + mCountOfIncomingDatagramTypeSmsFail
+ ")";
}
}
@@ -2892,6 +3010,16 @@ public class SatelliteStats {
param.getCountOfP2PSmsAvailableNotificationRemoved();
proto.isNtnOnlyCarrier = param.isNtnOnlyCarrier();
proto.versionOfSatelliteAccessConfig = param.getVersionSatelliteAccessConfig();
+ proto.countOfIncomingDatagramTypeSosSmsSuccess =
+ param.getCountOfIncomingDatagramTypeSosSmsSuccess();
+ proto.countOfIncomingDatagramTypeSosSmsFail =
+ param.getCountOfIncomingDatagramTypeSosSmsFail();
+ proto.countOfOutgoingDatagramTypeSmsSuccess =
+ param.getCountOfOutgoingDatagramTypeSmsSuccess();
+ proto.countOfOutgoingDatagramTypeSmsFail = param.getCountOfOutgoingDatagramTypeSmsFail();
+ proto.countOfIncomingDatagramTypeSmsSuccess =
+ param.getCountOfIncomingDatagramTypeSmsSuccess();
+ proto.countOfIncomingDatagramTypeSmsFail = param.getCountOfIncomingDatagramTypeSmsFail();
if (DBG) logd("onSatelliteControllerMetrics" + param);
mAtomsStorage.addSatelliteControllerStats(proto);
}
diff --git a/src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java b/src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java
index 0b8589306f..bc7d5d142f 100644
--- a/src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java
+++ b/src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java
@@ -767,9 +767,11 @@ public class DatagramDispatcher extends Handler {
if (resultCode == SATELLITE_RESULT_SUCCESS) {
long smsTransmissionTime = mSmsTransmissionStartTime > 0
? (System.currentTimeMillis() - mSmsTransmissionStartTime) : 0;
+ mControllerMetricsStats.reportOutgoingDatagramSuccessCount(datagramType, false);
mSessionMetricsStats.addCountOfSuccessfulOutgoingDatagram(
datagramType, smsTransmissionTime);
} else {
+ mControllerMetricsStats.reportOutgoingDatagramFailCount(datagramType, false);
mSessionMetricsStats.addCountOfFailedOutgoingDatagram(
datagramType, resultCode);
}
diff --git a/src/java/com/android/internal/telephony/satellite/SatelliteController.java b/src/java/com/android/internal/telephony/satellite/SatelliteController.java
index d44100d3e5..11d2b765bf 100644
--- a/src/java/com/android/internal/telephony/satellite/SatelliteController.java
+++ b/src/java/com/android/internal/telephony/satellite/SatelliteController.java
@@ -3810,6 +3810,9 @@ public class SatelliteController extends Handler {
} else {
logd("onSmsReceived: DatagramController is not initialized");
}
+
+ mControllerMetricsStats.reportIncomingNtnSmsCount(
+ SatelliteManager.SATELLITE_RESULT_SUCCESS);
}
/**
diff --git a/src/java/com/android/internal/telephony/satellite/metrics/ControllerMetricsStats.java b/src/java/com/android/internal/telephony/satellite/metrics/ControllerMetricsStats.java
index aef0808b59..5d0fa9d2f6 100644
--- a/src/java/com/android/internal/telephony/satellite/metrics/ControllerMetricsStats.java
+++ b/src/java/com/android/internal/telephony/satellite/metrics/ControllerMetricsStats.java
@@ -145,6 +145,9 @@ public class ControllerMetricsStats {
builder.setCountOfDatagramTypeLocationSharingSuccess(ADD_COUNT);
} else if (datagramType == SatelliteManager.DATAGRAM_TYPE_KEEP_ALIVE) {
builder.setCountOfDatagramTypeKeepAliveSuccess(ADD_COUNT).build();
+ } else if (datagramType == SatelliteManager.DATAGRAM_TYPE_SMS) {
+ builder.setCountOfDatagramTypeSosSmsSuccess(ADD_COUNT)
+ .setCountOfOutgoingDatagramTypeSmsSuccess(ADD_COUNT);
}
}
@@ -169,6 +172,9 @@ public class ControllerMetricsStats {
builder.setCountOfDatagramTypeLocationSharingFail(ADD_COUNT);
} else if (datagramType == SatelliteManager.DATAGRAM_TYPE_KEEP_ALIVE) {
builder.setCountOfDatagramTypeKeepAliveFail(ADD_COUNT);
+ } else if (datagramType == SatelliteManager.DATAGRAM_TYPE_SMS) {
+ builder.setCountOfDatagramTypeSosSmsFail(ADD_COUNT)
+ .setCountOfOutgoingDatagramTypeSmsFail(ADD_COUNT);
}
}
@@ -177,7 +183,7 @@ public class ControllerMetricsStats {
mSatelliteStats.onSatelliteControllerMetrics(controllerParam);
}
- /** Report a counter when an attempt for incoming datagram is failed */
+ /** Increase counters for successful and failed incoming datagram attempts */
public void reportIncomingDatagramCount(
@NonNull @SatelliteManager.SatelliteResult int result, boolean isDemoMode) {
SatelliteStats.SatelliteControllerParams.Builder builder =
@@ -190,9 +196,12 @@ public class ControllerMetricsStats {
}
} else {
if (result == SatelliteManager.SATELLITE_RESULT_SUCCESS) {
- builder.setCountOfIncomingDatagramSuccess(ADD_COUNT);
+ builder.setCountOfIncomingDatagramSuccess(ADD_COUNT)
+ .setCountOfIncomingDatagramTypeSosSmsSuccess(ADD_COUNT);
+
} else {
- builder.setCountOfIncomingDatagramFail(ADD_COUNT);
+ builder.setCountOfIncomingDatagramFail(ADD_COUNT)
+ .setCountOfIncomingDatagramTypeSosSmsFail(ADD_COUNT);
}
}
SatelliteStats.SatelliteControllerParams controllerParam = builder.build();
@@ -200,6 +209,23 @@ public class ControllerMetricsStats {
mSatelliteStats.onSatelliteControllerMetrics(controllerParam);
}
+ /** Increase counters for successful and failed incoming ntn sms attempts */
+ public void reportIncomingNtnSmsCount(
+ @NonNull @SatelliteManager.SatelliteResult int result) {
+ SatelliteStats.SatelliteControllerParams.Builder builder =
+ new SatelliteStats.SatelliteControllerParams.Builder();
+ if (result == SatelliteManager.SATELLITE_RESULT_SUCCESS) {
+ builder.setCountOfIncomingDatagramTypeSosSmsSuccess(ADD_COUNT)
+ .setCountOfIncomingDatagramTypeSmsSuccess(ADD_COUNT);
+ } else {
+ builder.setCountOfIncomingDatagramTypeSosSmsFail(ADD_COUNT)
+ .setCountOfIncomingDatagramTypeSmsFail(ADD_COUNT);
+ }
+ SatelliteStats.SatelliteControllerParams controllerParam = builder.build();
+ logd("reportIncomingNtnSmsCount(): " + controllerParam);
+ mSatelliteStats.onSatelliteControllerMetrics(controllerParam);
+ }
+
/** Report a counter when an attempt for de-provision is success or not */
public void reportProvisionCount(@NonNull @SatelliteManager.SatelliteResult int result) {
SatelliteStats.SatelliteControllerParams controllerParam;