Merge "Add count for SatelliteSession metrics when p2p satellite is disconnected due to TN network" into main
diff --git a/src/java/com/android/internal/telephony/MultiSimSettingController.java b/src/java/com/android/internal/telephony/MultiSimSettingController.java
index 3c35f1a..881adde 100644
--- a/src/java/com/android/internal/telephony/MultiSimSettingController.java
+++ b/src/java/com/android/internal/telephony/MultiSimSettingController.java
@@ -513,8 +513,8 @@
SatelliteController satelliteController = SatelliteController.getInstance();
boolean isSatelliteEnabledOrBeingEnabled = false;
if (satelliteController != null) {
- isSatelliteEnabledOrBeingEnabled = satelliteController.isSatelliteEnabled()
- || satelliteController.isSatelliteBeingEnabled();
+ isSatelliteEnabledOrBeingEnabled =
+ satelliteController.isSatelliteEnabledOrBeingEnabled();
}
if (DBG) {
diff --git a/src/java/com/android/internal/telephony/emergency/EmergencyStateTracker.java b/src/java/com/android/internal/telephony/emergency/EmergencyStateTracker.java
index f983108..53a3fe8 100644
--- a/src/java/com/android/internal/telephony/emergency/EmergencyStateTracker.java
+++ b/src/java/com/android/internal/telephony/emergency/EmergencyStateTracker.java
@@ -1588,7 +1588,7 @@
final boolean isAirplaneModeOn = isAirplaneModeOn(mContext);
boolean needToTurnOnRadio = !isRadioOn() || isAirplaneModeOn;
final SatelliteController satelliteController = SatelliteController.getInstance();
- boolean needToTurnOffSatellite = satelliteController.isSatelliteEnabled();
+ boolean needToTurnOffSatellite = satelliteController.isSatelliteEnabledOrBeingEnabled();
if (isAirplaneModeOn && !isPowerOff()
&& !phone.getServiceStateTracker().getDesiredPowerState()) {
@@ -1614,7 +1614,7 @@
@Override
public void onComplete(RadioOnStateListener listener, boolean isRadioReady) {
if (!isRadioReady) {
- if (satelliteController.isSatelliteEnabled()) {
+ if (satelliteController.isSatelliteEnabledOrBeingEnabled()) {
// Could not turn satellite off
Rlog.e(TAG, "Failed to turn off satellite modem.");
completeEmergencyMode(emergencyType, DisconnectCause.SATELLITE_ENABLED);
@@ -1647,7 +1647,7 @@
return false;
}
return phone.getServiceStateTracker().isRadioOn()
- && !satelliteController.isSatelliteEnabled();
+ && !satelliteController.isSatelliteEnabledOrBeingEnabled();
}
@Override
@@ -1659,7 +1659,7 @@
}
// onTimeout shall be called only with the Phone for emergency
return phone.getServiceStateTracker().isRadioOn()
- && !satelliteController.isSatelliteEnabled();
+ && !satelliteController.isSatelliteEnabledOrBeingEnabled();
}
}, !isTestEmergencyNumber, phone, isTestEmergencyNumber, waitForInServiceTimeout,
/* forNormalRoutingEmergencyCall */ false);
diff --git a/src/java/com/android/internal/telephony/emergency/RadioOnHelper.java b/src/java/com/android/internal/telephony/emergency/RadioOnHelper.java
index 26da1c2..11162b8 100644
--- a/src/java/com/android/internal/telephony/emergency/RadioOnHelper.java
+++ b/src/java/com/android/internal/telephony/emergency/RadioOnHelper.java
@@ -104,11 +104,8 @@
}
powerOnRadio(forEmergencyCall, phoneForEmergencyCall, isTestEmergencyNumber,
forNormalRoutingEmergencyCall);
- if (SatelliteController.getInstance().isSatelliteEnabled()
- || SatelliteController.getInstance().isSatelliteBeingEnabled()) {
- // TODO: phoneForEmergencyCall is actually ignored, SatelliteController#mSatelliePhone
- // is being used instead.
- powerOffSatellite(phoneForEmergencyCall);
+ if (SatelliteController.getInstance().isSatelliteEnabledOrBeingEnabled()) {
+ powerOffSatellite();
}
}
@@ -162,7 +159,7 @@
* Attempt to power off the satellite modem. We'll eventually get an
* onSatelliteModemStateChanged() callback when the satellite modem is successfully disabled.
*/
- private void powerOffSatellite(Phone phoneForEmergencyCall) {
+ private void powerOffSatellite() {
SatelliteController satelliteController = SatelliteController.getInstance();
satelliteController.requestSatelliteEnabled(
false /* enableSatellite */, false /* enableDemoMode */, false /* isEmergency */,
diff --git a/src/java/com/android/internal/telephony/emergency/RadioOnStateListener.java b/src/java/com/android/internal/telephony/emergency/RadioOnStateListener.java
index 1b1922c..3a3f6c8 100644
--- a/src/java/com/android/internal/telephony/emergency/RadioOnStateListener.java
+++ b/src/java/com/android/internal/telephony/emergency/RadioOnStateListener.java
@@ -230,7 +230,7 @@
// Register for RADIO_OFF to handle cases where emergency call is dialed before
// we receive UNSOL_RESPONSE_RADIO_STATE_CHANGED with RADIO_OFF.
registerForRadioOff();
- if (mSatelliteController.isSatelliteEnabled()) {
+ if (mSatelliteController.isSatelliteEnabledOrBeingEnabled()) {
// Register for satellite modem state changed to notify when satellite is disabled.
registerForSatelliteEnabledChanged();
}
@@ -401,7 +401,7 @@
Rlog.d(TAG, "Trying (again) to turn the radio on and satellite modem off.");
mPhone.setRadioPower(true, mForEmergencyCall, mSelectedPhoneForEmergencyCall,
false);
- if (mSatelliteController.isSatelliteEnabled()) {
+ if (mSatelliteController.isSatelliteEnabledOrBeingEnabled()) {
mSatelliteController.requestSatelliteEnabled(
false /* enableSatellite */, false /* enableDemoMode */,
false /* isEmergency*/,
diff --git a/src/java/com/android/internal/telephony/satellite/SatelliteController.java b/src/java/com/android/internal/telephony/satellite/SatelliteController.java
index c89aa65..be96c0e 100644
--- a/src/java/com/android/internal/telephony/satellite/SatelliteController.java
+++ b/src/java/com/android/internal/telephony/satellite/SatelliteController.java
@@ -2094,13 +2094,15 @@
*
* @return {@code true} if the satellite modem is enabled and {@code false} otherwise.
*/
- public boolean isSatelliteEnabled() {
+ private boolean isSatelliteEnabled() {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
plogd("isSatelliteEnabled: oemEnabledSatelliteFlag is disabled");
return false;
}
- if (mIsSatelliteEnabled == null) return false;
- return mIsSatelliteEnabled;
+ synchronized (mIsSatelliteEnabledLock) {
+ if (mIsSatelliteEnabled == null) return false;
+ return mIsSatelliteEnabled;
+ }
}
/**
@@ -2108,7 +2110,7 @@
*
* @return {@code true} if the satellite modem is being enabled and {@code false} otherwise.
*/
- public boolean isSatelliteBeingEnabled() {
+ private boolean isSatelliteBeingEnabled() {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
plogd("isSatelliteBeingEnabled: oemEnabledSatelliteFlag is disabled");
return false;
@@ -2121,6 +2123,17 @@
}
/**
+ * Get whether the satellite modem is enabled or being enabled.
+ * This will return the cached value instead of querying the satellite modem.
+ *
+ * @return {@code true} if the satellite modem is enabled or being enabled, {@code false}
+ * otherwise.
+ */
+ public boolean isSatelliteEnabledOrBeingEnabled() {
+ return isSatelliteEnabled() || isSatelliteBeingEnabled();
+ }
+
+ /**
* Get whether satellite modem is being disabled.
*
* @return {@code true} if the satellite modem is being disabled and {@code false} otherwise.
@@ -3502,7 +3515,7 @@
return false;
}
- if (!isSatelliteEnabled()) {
+ if (!isSatelliteEnabledOrBeingEnabled()) {
plogd("iisInCarrierRoamingNbIotNtn: satellite is disabled");
return false;
}
@@ -4139,7 +4152,7 @@
mWaitingForSatelliteModemOff = false;
}
} else {
- if (isSatelliteEnabled() || isSatelliteBeingEnabled() || isSatelliteBeingDisabled()) {
+ if (isSatelliteEnabledOrBeingEnabled() || isSatelliteBeingDisabled()) {
notifyModemStateChangedToSessionController(state);
} else {
// Telephony framework and modem are out of sync. We need to disable modem
@@ -5629,7 +5642,7 @@
return;
}
- if (!isSatelliteEnabled()) {
+ if (!isSatelliteEnabledOrBeingEnabled()) {
plogd("handleCmdUpdateNtnSignalStrengthReporting: ignore request, satellite is "
+ "disabled");
return;
diff --git a/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java b/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java
index 353493b..4e28d00 100644
--- a/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java
+++ b/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java
@@ -1450,8 +1450,8 @@
SatelliteController satelliteController = SatelliteController.getInstance();
boolean isSatelliteEnabledOrBeingEnabled = false;
if (satelliteController != null) {
- isSatelliteEnabledOrBeingEnabled = satelliteController.isSatelliteEnabled()
- || satelliteController.isSatelliteBeingEnabled();
+ isSatelliteEnabledOrBeingEnabled =
+ satelliteController.isSatelliteEnabledOrBeingEnabled();
}
if (!isSatelliteEnabledOrBeingEnabled) {
diff --git a/tests/telephonytests/src/com/android/internal/telephony/emergency/EmergencyStateTrackerTest.java b/tests/telephonytests/src/com/android/internal/telephony/emergency/EmergencyStateTrackerTest.java
index 25e9715..2664ff3 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/emergency/EmergencyStateTrackerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/emergency/EmergencyStateTrackerTest.java
@@ -346,7 +346,7 @@
true /* isRadioOn */);
when(mSST.isRadioOn()).thenReturn(true);
// Satellite enabled
- when(mSatelliteController.isSatelliteEnabled()).thenReturn(true);
+ when(mSatelliteController.isSatelliteEnabledOrBeingEnabled()).thenReturn(true);
setConfigForDdsSwitch(testPhone, null,
CarrierConfigManager.Gps.SUPL_EMERGENCY_MODE_TYPE_DP_ONLY, "150");
@@ -363,7 +363,7 @@
// isOkToCall() should return true once satellite modem is off
assertFalse(callback.getValue()
.isOkToCall(testPhone, ServiceState.STATE_IN_SERVICE, false));
- when(mSatelliteController.isSatelliteEnabled()).thenReturn(false);
+ when(mSatelliteController.isSatelliteEnabledOrBeingEnabled()).thenReturn(false);
assertTrue(callback.getValue()
.isOkToCall(testPhone, ServiceState.STATE_IN_SERVICE, false));
// Once radio on is complete, trigger delay dial
@@ -391,7 +391,7 @@
Phone testPhone = setupTestPhoneForEmergencyCall(false /* isRoaming */,
true /* isRadioOn */);
// Satellite enabled
- when(mSatelliteController.isSatelliteEnabled()).thenReturn(true);
+ when(mSatelliteController.isSatelliteEnabledOrBeingEnabled()).thenReturn(true);
CompletableFuture<Integer> future = emergencyStateTracker.startEmergencyCall(testPhone,
mTestConnection1, false);
diff --git a/tests/telephonytests/src/com/android/internal/telephony/emergency/RadioOnStateListenerTest.java b/tests/telephonytests/src/com/android/internal/telephony/emergency/RadioOnStateListenerTest.java
index bb349a7..e9bff91 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/emergency/RadioOnStateListenerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/emergency/RadioOnStateListenerTest.java
@@ -104,7 +104,7 @@
*/
@Test
public void testRegisterForSatelliteCallback() {
- doReturn(true).when(mSatelliteController).isSatelliteEnabled();
+ doReturn(true).when(mSatelliteController).isSatelliteEnabledOrBeingEnabled();
mListener.waitForRadioOn(mMockPhone, mCallback, false, false, 0);
waitForHandlerAction(mListener.getHandler(), TIMEOUT_MS);
@@ -229,7 +229,7 @@
@Test
public void testTimeout_RetryFailure_WithSatellite() {
- doReturn(true).when(mSatelliteController).isSatelliteEnabled();
+ doReturn(true).when(mSatelliteController).isSatelliteEnabledOrBeingEnabled();
ServiceState state = new ServiceState();
state.setState(ServiceState.STATE_POWER_OFF);
when(mMockPhone.getState()).thenReturn(PhoneConstants.State.IDLE);
diff --git a/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java b/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java
index db46a00..60d229c 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java
@@ -1548,7 +1548,7 @@
public void testIsSatelliteEnabled() {
logd("testIsSatelliteEnabled: starting");
setUpResponseForRequestIsSatelliteEnabled(true, SATELLITE_RESULT_SUCCESS);
- assertFalse(mSatelliteControllerUT.isSatelliteEnabled());
+ assertFalse(mSatelliteControllerUT.isSatelliteEnabledOrBeingEnabled());
mIsSatelliteEnabledSemaphore.drainPermits();
mSatelliteControllerUT.requestIsSatelliteEnabled(mIsSatelliteEnabledReceiver);
processAllMessages();
@@ -1564,7 +1564,8 @@
mSatelliteControllerUT.requestIsSatelliteEnabled(mIsSatelliteEnabledReceiver);
processAllMessages();
assertEquals(SATELLITE_RESULT_SUCCESS, mQueriedIsSatelliteEnabledResultCode);
- assertEquals(mSatelliteControllerUT.isSatelliteEnabled(), mQueriedIsSatelliteEnabled);
+ assertEquals(mSatelliteControllerUT.isSatelliteEnabledOrBeingEnabled(),
+ mQueriedIsSatelliteEnabled);
}
@Test