Google contribution item #12 - subitem #1
[VZW-Skylo] Check previous state when request to disable TN scan is completed

Add some conditions for coexistence with P2P

Bug: 376269243
Flag: EXEMPT bugfix

Change-Id: I12e2337c03782e155e69c245b57c15f047020791
Signed-off-by: jaeshin <js074.lee@samsung.corp-partner.google.com>
diff --git a/src/java/com/android/internal/telephony/satellite/SatelliteSessionController.java b/src/java/com/android/internal/telephony/satellite/SatelliteSessionController.java
index 1b6f9f1..dc9bc30 100644
--- a/src/java/com/android/internal/telephony/satellite/SatelliteSessionController.java
+++ b/src/java/com/android/internal/telephony/satellite/SatelliteSessionController.java
@@ -188,6 +188,8 @@
     @Nullable private DeviceStateMonitor mDeviceStateMonitor;
     @NonNull private SessionMetricsStats mSessionMetricsStats;
     @NonNull private FeatureFlags mFeatureFlags;
+    @SatelliteManager.SatelliteModemState private int mModemStateFromController =
+            SATELLITE_MODEM_STATE_UNKNOWN;
     @NonNull private AlarmManager mAlarmManager;
     private final AlarmManager.OnAlarmListener mAlarmListener = new AlarmManager.OnAlarmListener() {
         @Override
@@ -382,6 +384,10 @@
      */
     @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
     public void onSatelliteModemStateChanged(@SatelliteManager.SatelliteModemState int state) {
+        if (mFeatureFlags.carrierRoamingNbIotNtn()) {
+            plogd("onSatelliteModemStateChanged from SatelliteController : " + state);
+            mModemStateFromController = state;
+        }
         sendMessage(EVENT_SATELLITE_MODEM_STATE_CHANGED, state);
     }
 
@@ -998,7 +1004,15 @@
                     int error = SatelliteServiceUtils.getSatelliteError(
                             result, "DisableCellularModemWhileSatelliteModeIsOnDone");
                     if (error == SatelliteManager.SATELLITE_RESULT_SUCCESS) {
-                        transitionTo(mNotConnectedState);
+                        if (mFeatureFlags.carrierRoamingNbIotNtn()
+                                && mModemStateFromController == SATELLITE_MODEM_STATE_CONNECTED) {
+                            ploge("mPreviousState : " + mPreviousState
+                                    + " mModemStateFromController : "
+                                    + mModemStateFromController + " I->C");
+                            transitionTo(mConnectedState);
+                        } else {
+                            transitionTo(mNotConnectedState);
+                        }
                     }
                     mIsDisableCellularModemInProgress = false;
                 } else {
@@ -1659,6 +1673,13 @@
         }
         mIsScreenOn = screenOn;
 
+        if (mSatelliteController.getRequestIsEmergency()) {
+            if (DBG) logd("handleEventScreenStateChanged: Emergency mode");
+            // This is for coexistence
+            // emergency mode can be set after registerForScreenStateChanged() called for P2P-sms
+            return;
+        }
+
         if (!screenOn) {
             // Screen off, start timer
             int timeoutMillis = getScreenOffInactivityTimeoutDurationSec() * 1000;
@@ -1813,6 +1834,15 @@
     }
 
     private void handleEventScreenOffInactivityTimerTimedOut() {
+        if (mSatelliteController.getRequestIsEmergency()) {
+            loge("handleEventScreenOffInactivityTimerTimedOut: Emergency mode");
+            /* This is for coexistence
+             * mIsEmergency can be set after
+             * EVENT_SCREEN_OFF_INACTIVITY_TIMER_TIMED_OUT timer started
+             */
+            return;
+        }
+
         plogd("handleEventScreenOffInactivityTimerTimedOut: request disable satellite");
 
         mSatelliteController.requestSatelliteEnabled(