Merge "Add callback method to notify the emergency mode included in satellite enable request is changed" into main
diff --git a/satellite_client/src/android/telephony/satellite/wrapper/CarrierRoamingNtnModeListenerWrapper.java b/satellite_client/src/android/telephony/satellite/wrapper/CarrierRoamingNtnModeListenerWrapper.java
index 4a2436e..1c0a840 100644
--- a/satellite_client/src/android/telephony/satellite/wrapper/CarrierRoamingNtnModeListenerWrapper.java
+++ b/satellite_client/src/android/telephony/satellite/wrapper/CarrierRoamingNtnModeListenerWrapper.java
@@ -16,6 +16,9 @@
 
 package android.telephony.satellite.wrapper;
 
+import android.telephony.CarrierConfigManager;
+import android.telephony.ServiceState;
+
 /** Interface for carrier roaming non-terrestrial network listener. */
 public interface CarrierRoamingNtnModeListenerWrapper {
     /**
@@ -28,4 +31,22 @@
      *                           {code false} otherwise.
      */
     void onCarrierRoamingNtnModeChanged(boolean active);
+
+    /**
+     * Callback invoked when eligibility to connect to carrier roaming non-terrestrial network
+     * changes.
+     *
+     * @param eligible {@code true} when the device is eligible for satellite
+     * communication if all the following conditions are met:
+     * <ul>
+     * <li>Any subscription on the device supports P2P satellite messaging which is defined by
+     * {@link CarrierConfigManager#KEY_SATELLITE_ATTACH_SUPPORTED_BOOL} </li>
+     * <li>{@link CarrierConfigManager#KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT} set to
+     * {@link CarrierConfigManager#CARRIER_ROAMING_NTN_CONNECT_MANUAL} </li>
+     * <li>The device is in {@link ServiceState#STATE_OUT_OF_SERVICE}, not connected to Wi-Fi,
+     * and the hysteresis timer defined by {@link CarrierConfigManager
+     * #KEY_CARRIER_SUPPORTED_SATELLITE_NOTIFICATION_HYSTERESIS_SEC_INT} is expired. </li>
+     * </ul>
+     */
+    default void onCarrierRoamingNtnEligibleStateChanged(boolean eligible) {}
 }
diff --git a/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java b/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java
index 8948172..87b7786 100644
--- a/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java
+++ b/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java
@@ -156,6 +156,11 @@
    * is the last message to emergency service provider indicating no more help is needed.
    */
   public static final int DATAGRAM_TYPE_LAST_SOS_MESSAGE_NO_HELP_NEEDED = 5;
+  /**
+   * Datagram type indicating that the message to be sent or received is of type SMS.
+   */
+  public static final int DATAGRAM_TYPE_SMS = 6;
+
   /** @hide */
   @IntDef(
       prefix = "DATAGRAM_TYPE_",
@@ -165,7 +170,8 @@
               DATAGRAM_TYPE_LOCATION_SHARING,
               DATAGRAM_TYPE_KEEP_ALIVE,
               DATAGRAM_TYPE_LAST_SOS_MESSAGE_STILL_NEED_HELP,
-              DATAGRAM_TYPE_LAST_SOS_MESSAGE_NO_HELP_NEEDED
+              DATAGRAM_TYPE_LAST_SOS_MESSAGE_NO_HELP_NEEDED,
+              DATAGRAM_TYPE_SMS
       })
   @Retention(RetentionPolicy.SOURCE)
   public @interface DatagramType {}
@@ -843,6 +849,12 @@
       logd("onCarrierRoamingNtnModeChanged: active=" + active);
       mListenerWrapper.onCarrierRoamingNtnModeChanged(active);
     }
+
+    @Override
+    public void onCarrierRoamingNtnEligibleStateChanged(boolean eligible) {
+      logd("onCarrierRoamingNtnEligibleStateChanged: eligible=" + eligible);
+      mListenerWrapper.onCarrierRoamingNtnEligibleStateChanged(eligible);
+    }
   }
 
   /** Register for carrier roaming non-terrestrial network mode changes. */