Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d831ae75 authored by Thomas Nguyen's avatar Thomas Nguyen
Browse files

Use carrier timer only when connected to carrier satellite within hysteresis time

Flag: EXEMPT bugfix
Bug: 368149157
Test: SatelliteSOSMessageRecommenderTest
Manually tested handover from E911 to eSOS and T911

Change-Id: I61ec736c078c83c9a1a96ecfbebb625f832253c7
parent 6966f43b
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -316,7 +316,8 @@ public class SatelliteSOSMessageRecommender extends Handler {
            boolean isCellularAvailable = SatelliteServiceUtils.isCellularAvailable();
            if (!isCellularAvailable
                    && isSatelliteAllowed()
                    && (isSatelliteViaOemAvailable() || isSatelliteViaCarrierAvailable())
                    && (isSatelliteViaOemAvailable()
                    || isSatelliteConnectedViaCarrierWithinHysteresisTime())
                    && shouldTrackCall(mEmergencyConnection.getState())) {
                plogd("handleTimeoutEvent: Sent EVENT_DISPLAY_EMERGENCY_MESSAGE to Dialer");
                Bundle extras = createExtraBundleForEventDisplayEmergencyMessage();
@@ -336,7 +337,7 @@ public class SatelliteSOSMessageRecommender extends Handler {

    private boolean isSatelliteAllowed() {
        synchronized (mLock) {
            if (isSatelliteViaCarrierAvailable()) return true;
            if (isSatelliteConnectedViaCarrierWithinHysteresisTime()) return true;
            return mIsSatelliteAllowedForCurrentLocation;
        }
    }
@@ -358,7 +359,7 @@ public class SatelliteSOSMessageRecommender extends Handler {
        return satelliteProvisioned != null ? satelliteProvisioned : false;
    }

    private boolean isSatelliteViaCarrierAvailable() {
    private boolean isSatelliteConnectedViaCarrierWithinHysteresisTime() {
        return mIsSatelliteConnectedViaCarrierWithinHysteresisTime.get();
    }

@@ -532,7 +533,7 @@ public class SatelliteSOSMessageRecommender extends Handler {
    }

    private void selectEmergencyCallWaitForConnectionTimeoutDuration() {
        if (mSatelliteController.isSatelliteEmergencyMessagingSupportedViaCarrier()) {
        if (isSatelliteConnectedViaCarrierWithinHysteresisTime()) {
            mTimeoutMillis =
                    mSatelliteController.getCarrierEmergencyCallWaitForConnectionTimeoutMillis();
        } else {
@@ -639,7 +640,7 @@ public class SatelliteSOSMessageRecommender extends Handler {
        String className = oemSatelliteMessagingApp.second;
        String action = getSatelliteEmergencyHandoverIntentActionFromOverlayConfig(mContext);

        if (isSatelliteViaCarrierAvailable()
        if (isSatelliteConnectedViaCarrierWithinHysteresisTime()
                || isEmergencyCallToSatelliteHandoverTypeT911Enforced()) {
            ComponentName defaultSmsAppComponent = getDefaultSmsApp();
            handoverType = EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_T911;
@@ -723,7 +724,7 @@ public class SatelliteSOSMessageRecommender extends Handler {
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
    public int getEmergencyCallToSatelliteHandoverType() {
        if (Flags.carrierRoamingNbIotNtn() && isSatelliteViaOemAvailable()
                && isSatelliteViaCarrierAvailable()) {
                && isSatelliteConnectedViaCarrierWithinHysteresisTime()) {
            Phone satellitePhone = mSatelliteController.getSatellitePhone();
            if (satellitePhone == null) {
                ploge("getEmergencyCallToSatelliteHandoverType: satellitePhone is null");
@@ -732,7 +733,7 @@ public class SatelliteSOSMessageRecommender extends Handler {
            int satelliteSubId = satellitePhone.getSubId();
            return mSatelliteController.getCarrierRoamingNtnEmergencyCallToSatelliteHandoverType(
                    satelliteSubId);
        } else if (isSatelliteViaCarrierAvailable()) {
        } else if (isSatelliteConnectedViaCarrierWithinHysteresisTime()) {
            return EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_T911;
        } else {
            return EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_SOS;
+14 −1
Original line number Diff line number Diff line
@@ -549,9 +549,22 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {
        assertEquals(TEST_EMERGENCY_CALL_TO_SOS_MSG_HYSTERESIS_TIMEOUT_MILLIS,
                mTestSOSMessageRecommender.getTimeOutMillis());

        // Both OEM and carrier support satellite. Thus, carrier's timeout duration will be used
        // Both OEM and carrier support satellite, but device is not connected to carrier satellite
        // within hysteresis time. Thus, OEM timer will be used.
        long carrierTimeoutMillis = 1000;
        mTestSatelliteController.isSatelliteEmergencyMessagingSupportedViaCarrier = true;
        mTestSatelliteController.setSatelliteConnectedViaCarrierWithinHysteresisTime(false);
        mTestSatelliteController.carrierEmergencyCallWaitForConnectionTimeoutMillis =
                carrierTimeoutMillis;
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection);
        processAllMessages();
        assertEquals(TEST_EMERGENCY_CALL_TO_SOS_MSG_HYSTERESIS_TIMEOUT_MILLIS,
                mTestSOSMessageRecommender.getTimeOutMillis());

        // Both OEM and carrier support satellite, and device is connected to carrier satellite
        // within hysteresis time. Thus, carrier timer will be used.
        mTestSatelliteController.isSatelliteEmergencyMessagingSupportedViaCarrier = true;
        mTestSatelliteController.setSatelliteConnectedViaCarrierWithinHysteresisTime(true);
        mTestSatelliteController.carrierEmergencyCallWaitForConnectionTimeoutMillis =
                carrierTimeoutMillis;
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection);