Loading src/java/com/android/internal/telephony/satellite/SatelliteController.java +1 −9 Original line number Diff line number Diff line Loading @@ -4628,15 +4628,7 @@ public class SatelliteController extends Handler { mSessionStartTimeStamp = 0; mSessionProcessingTimeStamp = 0; } else { /* * Unregister Importance Listener for Pointing UI when Satellite is disabled */ synchronized (mNeedsSatellitePointingLock) { if (mNeedsSatellitePointing) { mPointingAppController.removeListenerForPointingUI(); } } moveSatelliteToOffStateAndCleanUpResources(SATELLITE_RESULT_MODEM_TIMEOUT, null); notifyEnablementFailedToSatelliteSessionController(); mControllerMetricsStats.onSatelliteDisabled(); mWaitingForDisableSatelliteModemResponse = false; mWaitingForSatelliteModemOff = false; Loading src/java/com/android/internal/telephony/satellite/SatelliteSessionController.java +31 −2 Original line number Diff line number Diff line Loading @@ -41,7 +41,6 @@ import android.os.RemoteException; import android.os.SystemProperties; import android.telephony.DropBoxManagerLoggerBackend; import android.telephony.PersistentLogger; import android.telephony.Rlog; import android.telephony.satellite.ISatelliteModemStateCallback; import android.telephony.satellite.SatelliteManager; import android.telephony.satellite.stub.ISatelliteGateway; Loading Loading @@ -139,6 +138,7 @@ public class SatelliteSessionController extends StateMachine { private long mSatelliteNbIotInactivityTimeoutMillis; private final ConcurrentHashMap<IBinder, ISatelliteModemStateCallback> mListeners; @SatelliteManager.SatelliteModemState private int mCurrentState; @SatelliteManager.SatelliteModemState private int mPreviousState; final boolean mIsSatelliteSupported; private boolean mIsDemoMode = false; @GuardedBy("mLock") Loading @@ -147,7 +147,6 @@ public class SatelliteSessionController extends StateMachine { @NonNull private final DatagramController mDatagramController; @Nullable private PersistentLogger mPersistentLogger = null; /** * @return The singleton instance of SatelliteSessionController. */ Loading Loading @@ -215,6 +214,7 @@ public class SatelliteSessionController extends StateMachine { getSatelliteNbIotInactivityTimeoutMillis(); mListeners = new ConcurrentHashMap<>(); mIsSendingTriggeredDuringTransferringState = new AtomicBoolean(false); mPreviousState = SatelliteManager.SATELLITE_MODEM_STATE_UNKNOWN; mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_UNKNOWN; mIsSatelliteSupported = isSatelliteSupported; mExponentialBackoff = new ExponentialBackoff(REBIND_INITIAL_DELAY, REBIND_MAXIMUM_DELAY, Loading Loading @@ -441,6 +441,7 @@ public class SatelliteSessionController extends StateMachine { @Override public void enter() { if (DBG) plogd("Entering UnavailableState"); mPreviousState = mCurrentState; mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_UNAVAILABLE; notifyStateChangedEvent(SatelliteManager.SATELLITE_MODEM_STATE_UNAVAILABLE); } Loading @@ -457,6 +458,7 @@ public class SatelliteSessionController extends StateMachine { public void enter() { if (DBG) plogd("Entering PowerOffState"); mPreviousState = mCurrentState; mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_OFF; mIsSendingTriggeredDuringTransferringState.set(false); synchronized (mLock) { Loading Loading @@ -501,6 +503,7 @@ public class SatelliteSessionController extends StateMachine { public void enter() { if (DBG) plogd("Entering EnablingState"); mPreviousState = mCurrentState; mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_ENABLING_SATELLITE; notifyStateChangedEvent(SatelliteManager.SATELLITE_MODEM_STATE_ENABLING_SATELLITE); } Loading Loading @@ -554,6 +557,7 @@ public class SatelliteSessionController extends StateMachine { public void enter() { if (DBG) plogd("Entering DisablingState"); mPreviousState = mCurrentState; mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_DISABLING_SATELLITE; notifyStateChangedEvent(SatelliteManager.SATELLITE_MODEM_STATE_DISABLING_SATELLITE); } Loading @@ -570,6 +574,19 @@ public class SatelliteSessionController extends StateMachine { case EVENT_SATELLITE_ENABLED_STATE_CHANGED: handleSatelliteEnabledStateChanged((boolean) msg.obj); break; case EVENT_SATELLITE_ENABLEMENT_FAILED: if (mPreviousState == SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED || mPreviousState == SatelliteManager.SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING || mPreviousState == SatelliteManager.SATELLITE_MODEM_STATE_LISTENING) { transitionTo(mConnectedState); } else { transitionTo(mNotConnectedState); } break; case EVENT_SATELLITE_MODEM_STATE_CHANGED: handleEventSatelliteModemStateChanged(msg.arg1); break; } // Ignore all unexpected events. return HANDLED; Loading @@ -582,12 +599,20 @@ public class SatelliteSessionController extends StateMachine { transitionTo(mPowerOffState); } } private void handleEventSatelliteModemStateChanged( @SatelliteManager.SatelliteModemState int state) { if (state == SatelliteManager.SATELLITE_MODEM_STATE_NOT_CONNECTED) { mPreviousState = state; } } } private class IdleState extends State { @Override public void enter() { if (DBG) plogd("Entering IdleState"); mPreviousState = mCurrentState; mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_IDLE; mIsSendingTriggeredDuringTransferringState.set(false); stopNbIotInactivityTimer(); Loading Loading @@ -686,6 +711,7 @@ public class SatelliteSessionController extends StateMachine { public void enter() { if (DBG) plogd("Entering TransferringState"); stopNbIotInactivityTimer(); mPreviousState = mCurrentState; mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING; notifyStateChangedEvent(SatelliteManager.SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING); } Loading Loading @@ -745,6 +771,7 @@ public class SatelliteSessionController extends StateMachine { public void enter() { if (DBG) plogd("Entering ListeningState"); mPreviousState = mCurrentState; mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_LISTENING; long timeoutMillis = updateListeningMode(true); sendMessageDelayed(EVENT_LISTENING_TIMER_TIMEOUT, timeoutMillis); Loading Loading @@ -808,6 +835,7 @@ public class SatelliteSessionController extends StateMachine { public void enter() { if (DBG) plogd("Entering NotConnectedState"); mPreviousState = mCurrentState; mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_NOT_CONNECTED; notifyStateChangedEvent(SatelliteManager.SATELLITE_MODEM_STATE_NOT_CONNECTED); startNbIotInactivityTimer(); Loading Loading @@ -873,6 +901,7 @@ public class SatelliteSessionController extends StateMachine { public void enter() { if (DBG) plogd("Entering ConnectedState"); mPreviousState = mCurrentState; mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED; notifyStateChangedEvent(SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED); startNbIotInactivityTimer(); Loading tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java +3 −2 Original line number Diff line number Diff line Loading @@ -3434,7 +3434,8 @@ public class SatelliteControllerTest extends TelephonyTest { assertEquals(SATELLITE_RESULT_MODEM_TIMEOUT, (long) mIIntegerConsumerResults.get(0)); verify(mMockSatelliteModemInterface, never()).requestSatelliteEnabled(anyBoolean(), anyBoolean(), anyBoolean(), any(Message.class)); verifySatelliteEnabled(false, SATELLITE_RESULT_SUCCESS); // Satellite should state at enabled state since satellite disable request failed verifySatelliteEnabled(true, SATELLITE_RESULT_SUCCESS); // Send the response for the above request to disable satellite. SatelliteController should // ignore the event Loading @@ -3442,7 +3443,7 @@ public class SatelliteControllerTest extends TelephonyTest { AsyncResult.forMessage(response, null, null); response.sendToTarget(); processAllMessages(); verifySatelliteEnabled(false, SATELLITE_RESULT_SUCCESS); verifySatelliteEnabled(true, SATELLITE_RESULT_SUCCESS); } @Test Loading tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteSessionControllerTest.java +32 −7 Original line number Diff line number Diff line Loading @@ -936,28 +936,41 @@ public class SatelliteSessionControllerTest extends TelephonyTest { assertNotNull(mTestSatelliteSessionController); assertEquals(STATE_POWER_OFF, mTestSatelliteSessionController.getCurrentStateName()); // IDLE -> DISABLING // IDLE -> DISABLING request failed -> NOT_CONNECTED moveToIdleState(); moveSatelliteToDisablingRequestFailed(SatelliteManager.SATELLITE_MODEM_STATE_NOT_CONNECTED, STATE_NOT_CONNECTED); // NOT_CONNECTED -> DISABLING -> POWER_OFF moveSatelliteToDisablingState(); moveToPowerOffState(); // DISABLING -> POWER_OFF // IDLE -> DISABLING -> POWER_OFF moveToIdleState(); moveSatelliteToDisablingState(); moveToPowerOffState(); // TRANSFERRING -> DISABLING // TRANSFERRING -> DISABLING request failed -> CONNECTED moveToIdleState(); moveIdleToTransferringState(); moveSatelliteToDisablingRequestFailed( SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED, STATE_CONNECTED); // CONNECTED -> DISABLING -> POWER_OFF moveSatelliteToDisablingState(); moveToPowerOffState(); // DISABLING -> POWER_OFF // TRANSFERRING -> DISABLING -> POWER_OFF moveToIdleState(); moveIdleToTransferringState(); moveSatelliteToDisablingState(); moveToPowerOffState(); // LISTENING -> DISABLING // LISTENING -> DISABLING -> POWER_OFF moveToIdleState(); moveIdleToTransferringState(); moveTransferringToListeningState(); moveSatelliteToDisablingState(); // DISABLING -> POWER_OFF moveToPowerOffState(); } Loading Loading @@ -1112,6 +1125,18 @@ public class SatelliteSessionControllerTest extends TelephonyTest { STATE_DISABLING_SATELLITE, mTestSatelliteSessionController.getCurrentStateName()); } private void moveSatelliteToDisablingRequestFailed(int state, String stateName) { moveSatelliteToDisablingState(); // Satellite disabled request failed mTestSatelliteSessionController.onSatelliteEnablementFailed(); processAllMessages(); // Satellite should stay in previous state as satellite disable request failed assertSuccessfulModemStateChangedCallback(mTestSatelliteModemStateCallback, state); assertEquals(stateName, mTestSatelliteSessionController.getCurrentStateName()); } private static class TestSatelliteModemInterface extends SatelliteModemInterface { private final AtomicInteger mListeningEnabledCount = new AtomicInteger(0); private final AtomicInteger mListeningDisabledCount = new AtomicInteger(0); Loading Loading
src/java/com/android/internal/telephony/satellite/SatelliteController.java +1 −9 Original line number Diff line number Diff line Loading @@ -4628,15 +4628,7 @@ public class SatelliteController extends Handler { mSessionStartTimeStamp = 0; mSessionProcessingTimeStamp = 0; } else { /* * Unregister Importance Listener for Pointing UI when Satellite is disabled */ synchronized (mNeedsSatellitePointingLock) { if (mNeedsSatellitePointing) { mPointingAppController.removeListenerForPointingUI(); } } moveSatelliteToOffStateAndCleanUpResources(SATELLITE_RESULT_MODEM_TIMEOUT, null); notifyEnablementFailedToSatelliteSessionController(); mControllerMetricsStats.onSatelliteDisabled(); mWaitingForDisableSatelliteModemResponse = false; mWaitingForSatelliteModemOff = false; Loading
src/java/com/android/internal/telephony/satellite/SatelliteSessionController.java +31 −2 Original line number Diff line number Diff line Loading @@ -41,7 +41,6 @@ import android.os.RemoteException; import android.os.SystemProperties; import android.telephony.DropBoxManagerLoggerBackend; import android.telephony.PersistentLogger; import android.telephony.Rlog; import android.telephony.satellite.ISatelliteModemStateCallback; import android.telephony.satellite.SatelliteManager; import android.telephony.satellite.stub.ISatelliteGateway; Loading Loading @@ -139,6 +138,7 @@ public class SatelliteSessionController extends StateMachine { private long mSatelliteNbIotInactivityTimeoutMillis; private final ConcurrentHashMap<IBinder, ISatelliteModemStateCallback> mListeners; @SatelliteManager.SatelliteModemState private int mCurrentState; @SatelliteManager.SatelliteModemState private int mPreviousState; final boolean mIsSatelliteSupported; private boolean mIsDemoMode = false; @GuardedBy("mLock") Loading @@ -147,7 +147,6 @@ public class SatelliteSessionController extends StateMachine { @NonNull private final DatagramController mDatagramController; @Nullable private PersistentLogger mPersistentLogger = null; /** * @return The singleton instance of SatelliteSessionController. */ Loading Loading @@ -215,6 +214,7 @@ public class SatelliteSessionController extends StateMachine { getSatelliteNbIotInactivityTimeoutMillis(); mListeners = new ConcurrentHashMap<>(); mIsSendingTriggeredDuringTransferringState = new AtomicBoolean(false); mPreviousState = SatelliteManager.SATELLITE_MODEM_STATE_UNKNOWN; mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_UNKNOWN; mIsSatelliteSupported = isSatelliteSupported; mExponentialBackoff = new ExponentialBackoff(REBIND_INITIAL_DELAY, REBIND_MAXIMUM_DELAY, Loading Loading @@ -441,6 +441,7 @@ public class SatelliteSessionController extends StateMachine { @Override public void enter() { if (DBG) plogd("Entering UnavailableState"); mPreviousState = mCurrentState; mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_UNAVAILABLE; notifyStateChangedEvent(SatelliteManager.SATELLITE_MODEM_STATE_UNAVAILABLE); } Loading @@ -457,6 +458,7 @@ public class SatelliteSessionController extends StateMachine { public void enter() { if (DBG) plogd("Entering PowerOffState"); mPreviousState = mCurrentState; mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_OFF; mIsSendingTriggeredDuringTransferringState.set(false); synchronized (mLock) { Loading Loading @@ -501,6 +503,7 @@ public class SatelliteSessionController extends StateMachine { public void enter() { if (DBG) plogd("Entering EnablingState"); mPreviousState = mCurrentState; mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_ENABLING_SATELLITE; notifyStateChangedEvent(SatelliteManager.SATELLITE_MODEM_STATE_ENABLING_SATELLITE); } Loading Loading @@ -554,6 +557,7 @@ public class SatelliteSessionController extends StateMachine { public void enter() { if (DBG) plogd("Entering DisablingState"); mPreviousState = mCurrentState; mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_DISABLING_SATELLITE; notifyStateChangedEvent(SatelliteManager.SATELLITE_MODEM_STATE_DISABLING_SATELLITE); } Loading @@ -570,6 +574,19 @@ public class SatelliteSessionController extends StateMachine { case EVENT_SATELLITE_ENABLED_STATE_CHANGED: handleSatelliteEnabledStateChanged((boolean) msg.obj); break; case EVENT_SATELLITE_ENABLEMENT_FAILED: if (mPreviousState == SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED || mPreviousState == SatelliteManager.SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING || mPreviousState == SatelliteManager.SATELLITE_MODEM_STATE_LISTENING) { transitionTo(mConnectedState); } else { transitionTo(mNotConnectedState); } break; case EVENT_SATELLITE_MODEM_STATE_CHANGED: handleEventSatelliteModemStateChanged(msg.arg1); break; } // Ignore all unexpected events. return HANDLED; Loading @@ -582,12 +599,20 @@ public class SatelliteSessionController extends StateMachine { transitionTo(mPowerOffState); } } private void handleEventSatelliteModemStateChanged( @SatelliteManager.SatelliteModemState int state) { if (state == SatelliteManager.SATELLITE_MODEM_STATE_NOT_CONNECTED) { mPreviousState = state; } } } private class IdleState extends State { @Override public void enter() { if (DBG) plogd("Entering IdleState"); mPreviousState = mCurrentState; mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_IDLE; mIsSendingTriggeredDuringTransferringState.set(false); stopNbIotInactivityTimer(); Loading Loading @@ -686,6 +711,7 @@ public class SatelliteSessionController extends StateMachine { public void enter() { if (DBG) plogd("Entering TransferringState"); stopNbIotInactivityTimer(); mPreviousState = mCurrentState; mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING; notifyStateChangedEvent(SatelliteManager.SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING); } Loading Loading @@ -745,6 +771,7 @@ public class SatelliteSessionController extends StateMachine { public void enter() { if (DBG) plogd("Entering ListeningState"); mPreviousState = mCurrentState; mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_LISTENING; long timeoutMillis = updateListeningMode(true); sendMessageDelayed(EVENT_LISTENING_TIMER_TIMEOUT, timeoutMillis); Loading Loading @@ -808,6 +835,7 @@ public class SatelliteSessionController extends StateMachine { public void enter() { if (DBG) plogd("Entering NotConnectedState"); mPreviousState = mCurrentState; mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_NOT_CONNECTED; notifyStateChangedEvent(SatelliteManager.SATELLITE_MODEM_STATE_NOT_CONNECTED); startNbIotInactivityTimer(); Loading Loading @@ -873,6 +901,7 @@ public class SatelliteSessionController extends StateMachine { public void enter() { if (DBG) plogd("Entering ConnectedState"); mPreviousState = mCurrentState; mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED; notifyStateChangedEvent(SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED); startNbIotInactivityTimer(); Loading
tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java +3 −2 Original line number Diff line number Diff line Loading @@ -3434,7 +3434,8 @@ public class SatelliteControllerTest extends TelephonyTest { assertEquals(SATELLITE_RESULT_MODEM_TIMEOUT, (long) mIIntegerConsumerResults.get(0)); verify(mMockSatelliteModemInterface, never()).requestSatelliteEnabled(anyBoolean(), anyBoolean(), anyBoolean(), any(Message.class)); verifySatelliteEnabled(false, SATELLITE_RESULT_SUCCESS); // Satellite should state at enabled state since satellite disable request failed verifySatelliteEnabled(true, SATELLITE_RESULT_SUCCESS); // Send the response for the above request to disable satellite. SatelliteController should // ignore the event Loading @@ -3442,7 +3443,7 @@ public class SatelliteControllerTest extends TelephonyTest { AsyncResult.forMessage(response, null, null); response.sendToTarget(); processAllMessages(); verifySatelliteEnabled(false, SATELLITE_RESULT_SUCCESS); verifySatelliteEnabled(true, SATELLITE_RESULT_SUCCESS); } @Test Loading
tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteSessionControllerTest.java +32 −7 Original line number Diff line number Diff line Loading @@ -936,28 +936,41 @@ public class SatelliteSessionControllerTest extends TelephonyTest { assertNotNull(mTestSatelliteSessionController); assertEquals(STATE_POWER_OFF, mTestSatelliteSessionController.getCurrentStateName()); // IDLE -> DISABLING // IDLE -> DISABLING request failed -> NOT_CONNECTED moveToIdleState(); moveSatelliteToDisablingRequestFailed(SatelliteManager.SATELLITE_MODEM_STATE_NOT_CONNECTED, STATE_NOT_CONNECTED); // NOT_CONNECTED -> DISABLING -> POWER_OFF moveSatelliteToDisablingState(); moveToPowerOffState(); // DISABLING -> POWER_OFF // IDLE -> DISABLING -> POWER_OFF moveToIdleState(); moveSatelliteToDisablingState(); moveToPowerOffState(); // TRANSFERRING -> DISABLING // TRANSFERRING -> DISABLING request failed -> CONNECTED moveToIdleState(); moveIdleToTransferringState(); moveSatelliteToDisablingRequestFailed( SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED, STATE_CONNECTED); // CONNECTED -> DISABLING -> POWER_OFF moveSatelliteToDisablingState(); moveToPowerOffState(); // DISABLING -> POWER_OFF // TRANSFERRING -> DISABLING -> POWER_OFF moveToIdleState(); moveIdleToTransferringState(); moveSatelliteToDisablingState(); moveToPowerOffState(); // LISTENING -> DISABLING // LISTENING -> DISABLING -> POWER_OFF moveToIdleState(); moveIdleToTransferringState(); moveTransferringToListeningState(); moveSatelliteToDisablingState(); // DISABLING -> POWER_OFF moveToPowerOffState(); } Loading Loading @@ -1112,6 +1125,18 @@ public class SatelliteSessionControllerTest extends TelephonyTest { STATE_DISABLING_SATELLITE, mTestSatelliteSessionController.getCurrentStateName()); } private void moveSatelliteToDisablingRequestFailed(int state, String stateName) { moveSatelliteToDisablingState(); // Satellite disabled request failed mTestSatelliteSessionController.onSatelliteEnablementFailed(); processAllMessages(); // Satellite should stay in previous state as satellite disable request failed assertSuccessfulModemStateChangedCallback(mTestSatelliteModemStateCallback, state); assertEquals(stateName, mTestSatelliteSessionController.getCurrentStateName()); } private static class TestSatelliteModemInterface extends SatelliteModemInterface { private final AtomicInteger mListeningEnabledCount = new AtomicInteger(0); private final AtomicInteger mListeningDisabledCount = new AtomicInteger(0); Loading