Merge "Add new fields for counting sms sms message for Satellite" into main
diff --git a/proto/src/persist_atoms.proto b/proto/src/persist_atoms.proto
index cca2435..445664d 100644
--- a/proto/src/persist_atoms.proto
+++ b/proto/src/persist_atoms.proto
@@ -728,6 +728,12 @@
     optional int32 count_of_p2p_sms_available_notification_removed = 35;
     optional bool is_ntn_only_carrier = 36;
     optional int32 version_of_satellite_access_config = 37;
+    optional int32 count_of_incoming_datagram_type_sos_sms_success = 38;
+    optional int32 count_of_incoming_datagram_type_sos_sms_fail = 39;
+    optional int32 count_of_outgoing_datagram_type_sms_success = 40;
+    optional int32 count_of_outgoing_datagram_type_sms_fail = 41;
+    optional int32 count_of_incoming_datagram_type_sms_success = 42;
+    optional int32 count_of_incoming_datagram_type_sms_fail = 43;
 }
 
 message SatelliteSession {
diff --git a/src/java/com/android/internal/telephony/metrics/MetricsCollector.java b/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
index a5df6e6..7863b25 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 @@
                 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 9f6af3f..4346da4 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 @@
                     += 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 c46a53f..59ceb6d 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 @@
         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 @@
                 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 @@
             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 @@
             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 @@
             }
 
             /**
+             * 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 @@
                     + ", countOfP2PSmsAvailableNotificationRemoved="
                     + mCountOfP2PSmsAvailableNotificationRemoved
                     + ", versionOfSatelliteAccessConfig=" + sVersionOfSatelliteAccessConfig
+                    + ", countOfIncomingDatagramTypeSosSmsSuccess="
+                    + mCountOfIncomingDatagramTypeSosSmsSuccess
+                    + ", countOfIncomingDatagramTypeSosSmsFail="
+                    + mCountOfIncomingDatagramTypeSosSmsFail
+                    + ", countOfOutgoingDatagramTypeSmsSuccess="
+                    + mCountOfOutgoingDatagramTypeSmsSuccess
+                    + ", countOfOutgoingDatagramTypeSmsFail=" + mCountOfOutgoingDatagramTypeSmsFail
+                    + ", countOfIncomingDatagramTypeSmsSuccess="
+                    + mCountOfIncomingDatagramTypeSmsSuccess
+                    + ", countOfIncomingDatagramTypeSmsFail=" + mCountOfIncomingDatagramTypeSmsFail
                     + ")";
         }
     }
@@ -2892,6 +3010,16 @@
                 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 0b85893..bc7d5d1 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 @@
         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 d44100d..11d2b76 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 @@
         } 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 aef0808..5d0fa9d 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 @@
                 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 @@
                 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 @@
         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 @@
             }
         } 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 @@
         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;
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 7bd8234..5bc8e68 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/metrics/PersistAtomsStorageTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/metrics/PersistAtomsStorageTest.java
@@ -1153,6 +1153,13 @@
         mSatelliteController1.countOfP2PSmsAvailableNotificationShown = 3;
         mSatelliteController1.countOfP2PSmsAvailableNotificationRemoved = 5;
         mSatelliteController1.isNtnOnlyCarrier = false;
+        mSatelliteController1.versionOfSatelliteAccessConfig = 10;
+        mSatelliteController1.countOfIncomingDatagramTypeSosSmsSuccess = 1;
+        mSatelliteController1.countOfIncomingDatagramTypeSosSmsFail = 2;
+        mSatelliteController1.countOfOutgoingDatagramTypeSmsSuccess = 3;
+        mSatelliteController1.countOfOutgoingDatagramTypeSmsFail = 4;
+        mSatelliteController1.countOfIncomingDatagramTypeSmsSuccess = 5;
+        mSatelliteController1.countOfIncomingDatagramTypeSmsFail = 6;
 
         mSatelliteController2 = new SatelliteController();
         mSatelliteController2.countOfSatelliteServiceEnablementsSuccess = 2 + 1;
@@ -1187,6 +1194,13 @@
         mSatelliteController2.countOfP2PSmsAvailableNotificationShown = 30;
         mSatelliteController2.countOfP2PSmsAvailableNotificationRemoved = 50;
         mSatelliteController2.isNtnOnlyCarrier = true;
+        mSatelliteController2.versionOfSatelliteAccessConfig = 12;
+        mSatelliteController2.countOfIncomingDatagramTypeSosSmsSuccess = 11;
+        mSatelliteController2.countOfIncomingDatagramTypeSosSmsFail = 12;
+        mSatelliteController2.countOfOutgoingDatagramTypeSmsSuccess = 31;
+        mSatelliteController2.countOfOutgoingDatagramTypeSmsFail = 14;
+        mSatelliteController2.countOfIncomingDatagramTypeSmsSuccess = 15;
+        mSatelliteController2.countOfIncomingDatagramTypeSmsFail = 16;
 
         // SatelliteController atom has one data point
         mSatelliteControllers =
@@ -4458,6 +4472,20 @@
         expected.countOfP2PSmsAvailableNotificationRemoved =
                 mSatelliteController1.countOfP2PSmsAvailableNotificationRemoved * 2;
         expected.isNtnOnlyCarrier = mSatelliteController1.isNtnOnlyCarrier;
+        expected.versionOfSatelliteAccessConfig =
+                mSatelliteController1.versionOfSatelliteAccessConfig;
+        expected.countOfIncomingDatagramTypeSosSmsSuccess =
+                mSatelliteController1.countOfIncomingDatagramTypeSosSmsSuccess * 2;
+        expected.countOfIncomingDatagramTypeSosSmsFail =
+                mSatelliteController1.countOfIncomingDatagramTypeSosSmsFail * 2;
+        expected.countOfOutgoingDatagramTypeSmsSuccess =
+                mSatelliteController1.countOfOutgoingDatagramTypeSmsSuccess * 2;
+        expected.countOfOutgoingDatagramTypeSmsFail =
+                mSatelliteController1.countOfOutgoingDatagramTypeSmsFail * 2;
+        expected.countOfIncomingDatagramTypeSmsSuccess =
+                mSatelliteController1.countOfIncomingDatagramTypeSmsSuccess * 2;
+        expected.countOfIncomingDatagramTypeSmsFail =
+                mSatelliteController1.countOfIncomingDatagramTypeSmsFail * 2;
 
         // Service state and service switch should be added successfully
         verifyCurrentStateSavedToFileOnce();
@@ -4610,6 +4638,26 @@
                 satelliteController1.countOfP2PSmsAvailableNotificationRemoved
                         + satelliteController2.countOfP2PSmsAvailableNotificationRemoved;
         expected.isNtnOnlyCarrier = false;
+        expected.versionOfSatelliteAccessConfig =
+                mSatelliteController2.versionOfSatelliteAccessConfig;
+        expected.countOfIncomingDatagramTypeSosSmsSuccess =
+                mSatelliteController1.countOfIncomingDatagramTypeSosSmsSuccess
+                        + mSatelliteController2.countOfIncomingDatagramTypeSosSmsSuccess;
+        expected.countOfIncomingDatagramTypeSosSmsFail =
+                mSatelliteController1.countOfIncomingDatagramTypeSosSmsFail
+                        + mSatelliteController2.countOfIncomingDatagramTypeSosSmsFail;
+        expected.countOfOutgoingDatagramTypeSmsSuccess =
+                mSatelliteController1.countOfOutgoingDatagramTypeSmsSuccess
+                        + mSatelliteController2.countOfOutgoingDatagramTypeSmsSuccess;
+        expected.countOfOutgoingDatagramTypeSmsFail =
+                mSatelliteController1.countOfOutgoingDatagramTypeSmsFail
+                        + mSatelliteController2.countOfOutgoingDatagramTypeSmsFail;
+        expected.countOfIncomingDatagramTypeSmsSuccess =
+                mSatelliteController1.countOfIncomingDatagramTypeSmsSuccess
+                        + mSatelliteController2.countOfIncomingDatagramTypeSmsSuccess;
+        expected.countOfIncomingDatagramTypeSmsFail =
+                mSatelliteController1.countOfIncomingDatagramTypeSmsFail
+                        + mSatelliteController2.countOfIncomingDatagramTypeSmsFail;
 
         // Service state and service switch should be added successfully
         verifyCurrentStateSavedToFileOnce();
@@ -6058,6 +6106,20 @@
                         stats.countOfP2PSmsAvailableNotificationShown);
                 assertEquals(expectedStats.countOfP2PSmsAvailableNotificationRemoved,
                         stats.countOfP2PSmsAvailableNotificationRemoved);
+                assertEquals(expectedStats.versionOfSatelliteAccessConfig,
+                        stats.versionOfSatelliteAccessConfig);
+                assertEquals(expectedStats.countOfIncomingDatagramTypeSosSmsSuccess,
+                        stats.countOfIncomingDatagramTypeSosSmsSuccess);
+                assertEquals(expectedStats.countOfIncomingDatagramTypeSosSmsFail,
+                        stats.countOfIncomingDatagramTypeSosSmsFail);
+                assertEquals(expectedStats.countOfOutgoingDatagramTypeSmsSuccess,
+                        stats.countOfOutgoingDatagramTypeSmsSuccess);
+                assertEquals(expectedStats.countOfOutgoingDatagramTypeSmsFail,
+                        stats.countOfOutgoingDatagramTypeSmsFail);
+                assertEquals(expectedStats.countOfIncomingDatagramTypeSmsSuccess,
+                        stats.countOfIncomingDatagramTypeSmsSuccess);
+                assertEquals(expectedStats.countOfIncomingDatagramTypeSmsFail,
+                        stats.countOfIncomingDatagramTypeSmsFail);
                 actualCount++;
             }
         }
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 540f7ff..d438198 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/metrics/SatelliteStatsTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/metrics/SatelliteStatsTest.java
@@ -111,6 +111,13 @@
                         .setCountOfP2PSmsAvailableNotificationShown(3)
                         .setCountOfP2PSmsAvailableNotificationRemoved(3)
                         .setIsNtnOnlyCarrier(false)
+                        .setVersionOfSatelliteAccessControl(10)
+                        .setCountOfIncomingDatagramTypeSosSmsSuccess(1)
+                        .setCountOfIncomingDatagramTypeSmsFail(2)
+                        .setCountOfOutgoingDatagramTypeSmsSuccess(3)
+                        .setCountOfOutgoingDatagramTypeSmsFail(4)
+                        .setCountOfIncomingDatagramTypeSmsSuccess(5)
+                        .setCountOfIncomingDatagramTypeSmsFail(6)
                         .build();
 
         mSatelliteStats.onSatelliteControllerMetrics(param);
@@ -182,6 +189,20 @@
                 stats.countOfP2PSmsAvailableNotificationRemoved);
         assertEquals(SatelliteStats.SatelliteControllerParams.isNtnOnlyCarrier(),
                 stats.isNtnOnlyCarrier);
+        assertEquals(SatelliteStats.SatelliteControllerParams.getVersionSatelliteAccessConfig(),
+                stats.versionOfSatelliteAccessConfig);
+        assertEquals(param.getCountOfIncomingDatagramTypeSosSmsSuccess(),
+                stats.countOfIncomingDatagramTypeSosSmsSuccess);
+        assertEquals(param.getCountOfIncomingDatagramTypeSosSmsFail(),
+                stats.countOfIncomingDatagramTypeSosSmsFail);
+        assertEquals(param.getCountOfOutgoingDatagramTypeSmsSuccess(),
+                stats.countOfOutgoingDatagramTypeSmsSuccess);
+        assertEquals(param.getCountOfOutgoingDatagramTypeSmsFail(),
+                stats.countOfOutgoingDatagramTypeSmsFail);
+        assertEquals(param.getCountOfIncomingDatagramTypeSmsSuccess(),
+                stats.countOfIncomingDatagramTypeSmsSuccess);
+        assertEquals(param.getCountOfIncomingDatagramTypeSmsSuccess(),
+                stats.countOfIncomingDatagramTypeSmsSuccess);
 
         verifyNoMoreInteractions(mPersistAtomsStorage);
     }