Loading src/java/com/android/internal/telephony/emergency/RadioOnStateListener.java +5 −0 Original line number Diff line number Diff line Loading @@ -157,6 +157,11 @@ public class RadioOnStateListener { public void onRegistrationFailure(int causeCode) { Rlog.d(TAG, "onRegistrationFailure: causeCode " + causeCode); } @Override public void onTerrestrialNetworkAvailableChanged(boolean isAvailable) { Rlog.d(TAG, "onTerrestrialNetworkAvailableChanged: isAvailable " + isAvailable); } }; private Callback mCallback; // The callback to notify upon completion. Loading src/java/com/android/internal/telephony/satellite/DemoSimulator.java +2 −2 Original line number Diff line number Diff line Loading @@ -287,12 +287,12 @@ public class DemoSimulator extends StateMachine { * and {@code false} to disable * @param errorCallback The callback to receive the error code result of the operation. */ public void enableCellularModemWhileSatelliteModeIsOn(boolean enabled, public void enableTerrestrialNetworkScanWhileSatelliteModeIsOn(boolean enabled, @NonNull IIntegerConsumer errorCallback) { try { errorCallback.accept(SatelliteResult.SATELLITE_RESULT_SUCCESS); } catch (RemoteException e) { loge("enableCellularModemWhileSatelliteModeIsOn: RemoteException " + e); loge("enableTerrestrialNetworkScanWhileSatelliteModeIsOn: RemoteException " + e); } } Loading src/java/com/android/internal/telephony/satellite/SatelliteController.java +69 −2 Original line number Diff line number Diff line Loading @@ -273,6 +273,7 @@ public class SatelliteController extends Handler { EVENT_WAIT_FOR_UPDATE_SATELLITE_ENABLE_ATTRIBUTES_RESPONSE_TIMED_OUT = 52; private static final int EVENT_WAIT_FOR_REPORT_ENTITLED_TO_MERTICS_HYSTERESIS_TIMED_OUT = 53; protected static final int EVENT_SATELLITE_REGISTRATION_FAILURE = 54; private static final int EVENT_TERRESTRIAL_NETWORK_AVAILABLE_CHANGED = 55; @NonNull private static SatelliteController sInstance; @NonNull private final Context mContext; Loading Loading @@ -355,6 +356,8 @@ public class SatelliteController extends Handler { new AtomicBoolean(false); private final AtomicBoolean mRegisteredForSatelliteRegistrationFailure = new AtomicBoolean(false); private final AtomicBoolean mRegisteredForTerrestrialNetworkAvailableChanged = new AtomicBoolean(false); /** * Map key: subId, value: callback to get error code of the provision request. */ Loading Loading @@ -389,6 +392,12 @@ public class SatelliteController extends Handler { */ private final ConcurrentHashMap<IBinder, ISatelliteModemStateCallback> mSatelliteRegistrationFailureListeners = new ConcurrentHashMap<>(); /** * Map key: binder of the callback, value: callback to receive terrestrial network * available changed */ private final ConcurrentHashMap<IBinder, ISatelliteModemStateCallback> mTerrestrialNetworkAvailableChangedListeners = new ConcurrentHashMap<>(); private final Object mIsSatelliteSupportedLock = new Object(); @GuardedBy("mIsSatelliteSupportedLock") private Boolean mIsSatelliteSupported = null; Loading Loading @@ -1850,6 +1859,15 @@ public class SatelliteController extends Handler { } break; case EVENT_TERRESTRIAL_NETWORK_AVAILABLE_CHANGED: ar = (AsyncResult) msg.obj; if (ar.result == null) { loge("EVENT_TERRESTRIAL_NETWORK_AVAILABLE_CHANGED: result is null"); } else { handleEventTerrestrialNetworkAvailableChanged((boolean) ar.result); } break; default: Log.w(TAG, "SatelliteControllerHandler: unexpected message code: " + msg.what); Loading Loading @@ -2496,8 +2514,9 @@ public class SatelliteController extends Handler { return SatelliteManager.SATELLITE_RESULT_NOT_SUPPORTED; } if (mFeatureFlags.carrierRoamingNbIotNtn()) { plogd("registerForSatelliteModemStateChanged: add RegistrationFailure Listeners"); plogd("registerForSatelliteModemStateChanged: add Listeners for ModemState"); mSatelliteRegistrationFailureListeners.put(callback.asBinder(), callback); mTerrestrialNetworkAvailableChangedListeners.put(callback.asBinder(), callback); } if (mSatelliteSessionController != null) { mSatelliteSessionController.registerForSatelliteModemStateChanged(callback); Loading Loading @@ -2529,8 +2548,9 @@ public class SatelliteController extends Handler { + " is not initialized yet"); } if (mFeatureFlags.carrierRoamingNbIotNtn()) { plogd("unregisterForModemStateChanged: remove RegistrationFailure Listeners"); plogd("unregisterForModemStateChanged: remove Listeners for ModemState"); mSatelliteRegistrationFailureListeners.remove(callback.asBinder()); mTerrestrialNetworkAvailableChangedListeners.remove(callback.asBinder()); } } Loading Loading @@ -4062,6 +4082,7 @@ public class SatelliteController extends Handler { registerForNtnSignalStrengthChanged(); registerForCapabilitiesChanged(); registerForSatelliteRegistrationFailure(); registerForTerrestrialNetworkAvailableChanged(); requestIsSatelliteProvisioned( new ResultReceiver(this) { Loading Loading @@ -4177,6 +4198,16 @@ public class SatelliteController extends Handler { } } private void registerForTerrestrialNetworkAvailableChanged() { if (mFeatureFlags.carrierRoamingNbIotNtn()) { if (!mRegisteredForTerrestrialNetworkAvailableChanged.get()) { mSatelliteModemInterface.registerForTerrestrialNetworkAvailableChanged(this, EVENT_TERRESTRIAL_NETWORK_AVAILABLE_CHANGED, null); mRegisteredForTerrestrialNetworkAvailableChanged.set(true); } } } private void handleEventSatelliteProvisionStateChanged(boolean provisioned) { plogd("handleSatelliteProvisionStateChangedEvent: provisioned=" + provisioned); Loading Loading @@ -6895,6 +6926,42 @@ public class SatelliteController extends Handler { }); } private void handleEventTerrestrialNetworkAvailableChanged(boolean isAvailable) { if (!mFeatureFlags.carrierRoamingNbIotNtn()) { plogd("handleEventTerrestrialNetworkAvailableChanged: " + "carrierRoamingNbIotNtn flag is disabled"); return; } plogd("handleEventTerrestrialNetworkAvailableChanged: " + isAvailable); List<ISatelliteModemStateCallback> deadCallersList = new ArrayList<>(); mTerrestrialNetworkAvailableChangedListeners.values().forEach(listener -> { try { listener.onTerrestrialNetworkAvailableChanged(isAvailable); } catch (RemoteException e) { logd("handleEventTerrestrialNetworkAvailableChanged RemoteException: " + e); deadCallersList.add(listener); } }); deadCallersList.forEach(listener -> { mTerrestrialNetworkAvailableChangedListeners.remove(listener.asBinder()); }); if (isAvailable && !mIsEmergency) { requestSatelliteEnabled( false /* enableSatellite */, false /* enableDemoMode */, false /* isEmergency */, new IIntegerConsumer.Stub() { @Override public void accept(int result) { plogd("handleEventTerrestrialNetworkAvailableChanged:" + " requestSatelliteEnabled result=" + result); } }); } } /** * This API can be used by only CTS to override the cached value for the device overlay config * value : Loading src/java/com/android/internal/telephony/satellite/SatelliteModemInterface.java +31 −3 Original line number Diff line number Diff line Loading @@ -104,6 +104,8 @@ public class SatelliteModemInterface { new RegistrantList(); @NonNull private final RegistrantList mSatelliteRegistrationFailureRegistrants = new RegistrantList(); @NonNull private final RegistrantList mTerrestrialNetworkAvailableChangedRegistrants = new RegistrantList(); private class SatelliteListener extends ISatelliteListener.Stub { Loading Loading @@ -192,6 +194,11 @@ public class SatelliteModemInterface { mSatelliteRegistrationFailureRegistrants.notifyResult(causeCode); } @Override public void onTerrestrialNetworkAvailableChanged(boolean isAvailable) { mTerrestrialNetworkAvailableChangedRegistrants.notifyResult(isAvailable); } private boolean notifyResultIfExpectedListener() { // Demo listener should notify results only during demo mode // Vendor listener should notify result only during real mode Loading Loading @@ -586,6 +593,27 @@ public class SatelliteModemInterface { mSatelliteRegistrationFailureRegistrants.remove(h); } /** * Registers for the terrestrial network available changed. * * @param h Handler for notification message. * @param what User-defined message code. * @param obj User object. */ public void registerForTerrestrialNetworkAvailableChanged( @NonNull Handler h, int what, @Nullable Object obj) { mTerrestrialNetworkAvailableChangedRegistrants.add(h, what, obj); } /** * Unregisters for the terrestrial network available changed. * * @param h Handler to be removed from the registrant list. */ public void unregisterForTerrestrialNetworkAvailableChanged(@NonNull Handler h) { mTerrestrialNetworkAvailableChangedRegistrants.remove(h); } /** * Request to enable or disable the satellite service listening mode. * Listening mode allows the satellite service to listen for incoming pages. Loading Loading @@ -652,14 +680,14 @@ public class SatelliteModemInterface { }; if (mSatelliteController.isDemoModeEnabled()) { mDemoSimulator.enableCellularModemWhileSatelliteModeIsOn( mDemoSimulator.enableTerrestrialNetworkScanWhileSatelliteModeIsOn( enabled, errorCallback); } else { mSatelliteService.enableCellularModemWhileSatelliteModeIsOn( mSatelliteService.enableTerrestrialNetworkScanWhileSatelliteModeIsOn( enabled, errorCallback); } } catch (RemoteException e) { ploge("enableCellularModemWhileSatelliteModeIsOn: RemoteException " + e); ploge("enableTerrestrialNetworkScanWhileSatelliteModeIsOn: RemoteException " + e); if (message != null) { sendMessageWithResult( message, null, SatelliteManager.SATELLITE_RESULT_SERVICE_ERROR); Loading tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java +68 −0 Original line number Diff line number Diff line Loading @@ -1628,6 +1628,11 @@ public class SatelliteControllerTest extends TelephonyTest { public void onRegistrationFailure(int causeCode) { logd("onRegistrationFailure: causeCode=" + causeCode); } @Override public void onTerrestrialNetworkAvailableChanged(boolean isAvailable) { logd("onTerrestrialNetworkAvailableChanged: isAvailable=" + isAvailable); } }; int errorCode = mSatelliteControllerUT.registerForSatelliteModemStateChanged(callback); assertEquals(SATELLITE_RESULT_INVALID_TELEPHONY_STATE, errorCode); Loading Loading @@ -1659,6 +1664,11 @@ public class SatelliteControllerTest extends TelephonyTest { public void onRegistrationFailure(int causeCode) { logd("onRegistrationFailure: causeCode=" + causeCode); } @Override public void onTerrestrialNetworkAvailableChanged(boolean isAvailable) { logd("onTerrestrialNetworkAvailableChanged: isAvailable=" + isAvailable); } }; mSatelliteControllerUT.unregisterForModemStateChanged(callback); verify(mMockSatelliteSessionController, never()) Loading Loading @@ -4243,6 +4253,11 @@ public class SatelliteControllerTest extends TelephonyTest { resultErrorCode[0] = causeCode; semaphore.release(); } @Override public void onTerrestrialNetworkAvailableChanged(boolean isAvailable) { logd("onTerrestrialNetworkAvailableChanged: isAvailable=" + isAvailable); } }; resetSatelliteControllerUTToSupportedAndProvisionedState(); mSatelliteControllerUT.setSatelliteSessionController(mMockSatelliteSessionController); Loading Loading @@ -4296,6 +4311,51 @@ public class SatelliteControllerTest extends TelephonyTest { assertTrue(mSatelliteControllerUT.isFoldable(mContext, foldableDeviceStateList)); } @Test public void testTerrestrialNetworkAvailableChangedCallback() { when(mFeatureFlags.carrierRoamingNbIotNtn()).thenReturn(true); Semaphore semaphore = new Semaphore(0); final int[] receivedScanResult = new int[1]; ISatelliteModemStateCallback callback = new ISatelliteModemStateCallback.Stub() { @Override public void onSatelliteModemStateChanged(int state) { logd("onSatelliteModemStateChanged: state=" + state); } @Override public void onEmergencyModeChanged(boolean isEmergency) { logd("onEmergencyModeChanged: emergency=" + isEmergency); } @Override public void onRegistrationFailure(int causeCode) { logd("onRegistrationFailure: causeCode=" + causeCode); } @Override public void onTerrestrialNetworkAvailableChanged(boolean isAvailable) { logd("onTerrestrialNetworkAvailableChanged: isAvailable=" + isAvailable); receivedScanResult[0] = isAvailable ? 1 : 0; semaphore.release(); } }; resetSatelliteControllerUTToSupportedAndProvisionedState(); mSatelliteControllerUT.setSatelliteSessionController(mMockSatelliteSessionController); int RegisterErrorCode = mSatelliteControllerUT.registerForSatelliteModemStateChanged( callback); assertEquals(SATELLITE_RESULT_SUCCESS, RegisterErrorCode); verify(mMockSatelliteSessionController).registerForSatelliteModemStateChanged(callback); int expectedErrorCode = 1; mIIntegerConsumerResults.clear(); sendTerrestrialNetworkAvailableChangedEvent(true, null); processAllMessages(); assertTrue(waitForForEvents( semaphore, 1, "testRegistrationFailureCallback")); assertEquals(expectedErrorCode, receivedScanResult[0]); } private boolean mProvisionState = false; private int mProvisionSateResultCode = -1; private Semaphore mProvisionSateSemaphore = new Semaphore(0); Loading Loading @@ -5352,6 +5412,14 @@ public class SatelliteControllerTest extends TelephonyTest { msg.sendToTarget(); } private void sendTerrestrialNetworkAvailableChangedEvent(boolean isAvailable, Throwable exception) { Message msg = mSatelliteControllerUT.obtainMessage( 55 /* EVENT_TERRESTRIAL_NETWORK_AVAILABLE_CHANGED */); msg.obj = new AsyncResult(null, isAvailable, exception); msg.sendToTarget(); } private void setRadioPower(boolean on) { mSimulatedCommands.setRadioPower(on, false, false, null); } Loading Loading
src/java/com/android/internal/telephony/emergency/RadioOnStateListener.java +5 −0 Original line number Diff line number Diff line Loading @@ -157,6 +157,11 @@ public class RadioOnStateListener { public void onRegistrationFailure(int causeCode) { Rlog.d(TAG, "onRegistrationFailure: causeCode " + causeCode); } @Override public void onTerrestrialNetworkAvailableChanged(boolean isAvailable) { Rlog.d(TAG, "onTerrestrialNetworkAvailableChanged: isAvailable " + isAvailable); } }; private Callback mCallback; // The callback to notify upon completion. Loading
src/java/com/android/internal/telephony/satellite/DemoSimulator.java +2 −2 Original line number Diff line number Diff line Loading @@ -287,12 +287,12 @@ public class DemoSimulator extends StateMachine { * and {@code false} to disable * @param errorCallback The callback to receive the error code result of the operation. */ public void enableCellularModemWhileSatelliteModeIsOn(boolean enabled, public void enableTerrestrialNetworkScanWhileSatelliteModeIsOn(boolean enabled, @NonNull IIntegerConsumer errorCallback) { try { errorCallback.accept(SatelliteResult.SATELLITE_RESULT_SUCCESS); } catch (RemoteException e) { loge("enableCellularModemWhileSatelliteModeIsOn: RemoteException " + e); loge("enableTerrestrialNetworkScanWhileSatelliteModeIsOn: RemoteException " + e); } } Loading
src/java/com/android/internal/telephony/satellite/SatelliteController.java +69 −2 Original line number Diff line number Diff line Loading @@ -273,6 +273,7 @@ public class SatelliteController extends Handler { EVENT_WAIT_FOR_UPDATE_SATELLITE_ENABLE_ATTRIBUTES_RESPONSE_TIMED_OUT = 52; private static final int EVENT_WAIT_FOR_REPORT_ENTITLED_TO_MERTICS_HYSTERESIS_TIMED_OUT = 53; protected static final int EVENT_SATELLITE_REGISTRATION_FAILURE = 54; private static final int EVENT_TERRESTRIAL_NETWORK_AVAILABLE_CHANGED = 55; @NonNull private static SatelliteController sInstance; @NonNull private final Context mContext; Loading Loading @@ -355,6 +356,8 @@ public class SatelliteController extends Handler { new AtomicBoolean(false); private final AtomicBoolean mRegisteredForSatelliteRegistrationFailure = new AtomicBoolean(false); private final AtomicBoolean mRegisteredForTerrestrialNetworkAvailableChanged = new AtomicBoolean(false); /** * Map key: subId, value: callback to get error code of the provision request. */ Loading Loading @@ -389,6 +392,12 @@ public class SatelliteController extends Handler { */ private final ConcurrentHashMap<IBinder, ISatelliteModemStateCallback> mSatelliteRegistrationFailureListeners = new ConcurrentHashMap<>(); /** * Map key: binder of the callback, value: callback to receive terrestrial network * available changed */ private final ConcurrentHashMap<IBinder, ISatelliteModemStateCallback> mTerrestrialNetworkAvailableChangedListeners = new ConcurrentHashMap<>(); private final Object mIsSatelliteSupportedLock = new Object(); @GuardedBy("mIsSatelliteSupportedLock") private Boolean mIsSatelliteSupported = null; Loading Loading @@ -1850,6 +1859,15 @@ public class SatelliteController extends Handler { } break; case EVENT_TERRESTRIAL_NETWORK_AVAILABLE_CHANGED: ar = (AsyncResult) msg.obj; if (ar.result == null) { loge("EVENT_TERRESTRIAL_NETWORK_AVAILABLE_CHANGED: result is null"); } else { handleEventTerrestrialNetworkAvailableChanged((boolean) ar.result); } break; default: Log.w(TAG, "SatelliteControllerHandler: unexpected message code: " + msg.what); Loading Loading @@ -2496,8 +2514,9 @@ public class SatelliteController extends Handler { return SatelliteManager.SATELLITE_RESULT_NOT_SUPPORTED; } if (mFeatureFlags.carrierRoamingNbIotNtn()) { plogd("registerForSatelliteModemStateChanged: add RegistrationFailure Listeners"); plogd("registerForSatelliteModemStateChanged: add Listeners for ModemState"); mSatelliteRegistrationFailureListeners.put(callback.asBinder(), callback); mTerrestrialNetworkAvailableChangedListeners.put(callback.asBinder(), callback); } if (mSatelliteSessionController != null) { mSatelliteSessionController.registerForSatelliteModemStateChanged(callback); Loading Loading @@ -2529,8 +2548,9 @@ public class SatelliteController extends Handler { + " is not initialized yet"); } if (mFeatureFlags.carrierRoamingNbIotNtn()) { plogd("unregisterForModemStateChanged: remove RegistrationFailure Listeners"); plogd("unregisterForModemStateChanged: remove Listeners for ModemState"); mSatelliteRegistrationFailureListeners.remove(callback.asBinder()); mTerrestrialNetworkAvailableChangedListeners.remove(callback.asBinder()); } } Loading Loading @@ -4062,6 +4082,7 @@ public class SatelliteController extends Handler { registerForNtnSignalStrengthChanged(); registerForCapabilitiesChanged(); registerForSatelliteRegistrationFailure(); registerForTerrestrialNetworkAvailableChanged(); requestIsSatelliteProvisioned( new ResultReceiver(this) { Loading Loading @@ -4177,6 +4198,16 @@ public class SatelliteController extends Handler { } } private void registerForTerrestrialNetworkAvailableChanged() { if (mFeatureFlags.carrierRoamingNbIotNtn()) { if (!mRegisteredForTerrestrialNetworkAvailableChanged.get()) { mSatelliteModemInterface.registerForTerrestrialNetworkAvailableChanged(this, EVENT_TERRESTRIAL_NETWORK_AVAILABLE_CHANGED, null); mRegisteredForTerrestrialNetworkAvailableChanged.set(true); } } } private void handleEventSatelliteProvisionStateChanged(boolean provisioned) { plogd("handleSatelliteProvisionStateChangedEvent: provisioned=" + provisioned); Loading Loading @@ -6895,6 +6926,42 @@ public class SatelliteController extends Handler { }); } private void handleEventTerrestrialNetworkAvailableChanged(boolean isAvailable) { if (!mFeatureFlags.carrierRoamingNbIotNtn()) { plogd("handleEventTerrestrialNetworkAvailableChanged: " + "carrierRoamingNbIotNtn flag is disabled"); return; } plogd("handleEventTerrestrialNetworkAvailableChanged: " + isAvailable); List<ISatelliteModemStateCallback> deadCallersList = new ArrayList<>(); mTerrestrialNetworkAvailableChangedListeners.values().forEach(listener -> { try { listener.onTerrestrialNetworkAvailableChanged(isAvailable); } catch (RemoteException e) { logd("handleEventTerrestrialNetworkAvailableChanged RemoteException: " + e); deadCallersList.add(listener); } }); deadCallersList.forEach(listener -> { mTerrestrialNetworkAvailableChangedListeners.remove(listener.asBinder()); }); if (isAvailable && !mIsEmergency) { requestSatelliteEnabled( false /* enableSatellite */, false /* enableDemoMode */, false /* isEmergency */, new IIntegerConsumer.Stub() { @Override public void accept(int result) { plogd("handleEventTerrestrialNetworkAvailableChanged:" + " requestSatelliteEnabled result=" + result); } }); } } /** * This API can be used by only CTS to override the cached value for the device overlay config * value : Loading
src/java/com/android/internal/telephony/satellite/SatelliteModemInterface.java +31 −3 Original line number Diff line number Diff line Loading @@ -104,6 +104,8 @@ public class SatelliteModemInterface { new RegistrantList(); @NonNull private final RegistrantList mSatelliteRegistrationFailureRegistrants = new RegistrantList(); @NonNull private final RegistrantList mTerrestrialNetworkAvailableChangedRegistrants = new RegistrantList(); private class SatelliteListener extends ISatelliteListener.Stub { Loading Loading @@ -192,6 +194,11 @@ public class SatelliteModemInterface { mSatelliteRegistrationFailureRegistrants.notifyResult(causeCode); } @Override public void onTerrestrialNetworkAvailableChanged(boolean isAvailable) { mTerrestrialNetworkAvailableChangedRegistrants.notifyResult(isAvailable); } private boolean notifyResultIfExpectedListener() { // Demo listener should notify results only during demo mode // Vendor listener should notify result only during real mode Loading Loading @@ -586,6 +593,27 @@ public class SatelliteModemInterface { mSatelliteRegistrationFailureRegistrants.remove(h); } /** * Registers for the terrestrial network available changed. * * @param h Handler for notification message. * @param what User-defined message code. * @param obj User object. */ public void registerForTerrestrialNetworkAvailableChanged( @NonNull Handler h, int what, @Nullable Object obj) { mTerrestrialNetworkAvailableChangedRegistrants.add(h, what, obj); } /** * Unregisters for the terrestrial network available changed. * * @param h Handler to be removed from the registrant list. */ public void unregisterForTerrestrialNetworkAvailableChanged(@NonNull Handler h) { mTerrestrialNetworkAvailableChangedRegistrants.remove(h); } /** * Request to enable or disable the satellite service listening mode. * Listening mode allows the satellite service to listen for incoming pages. Loading Loading @@ -652,14 +680,14 @@ public class SatelliteModemInterface { }; if (mSatelliteController.isDemoModeEnabled()) { mDemoSimulator.enableCellularModemWhileSatelliteModeIsOn( mDemoSimulator.enableTerrestrialNetworkScanWhileSatelliteModeIsOn( enabled, errorCallback); } else { mSatelliteService.enableCellularModemWhileSatelliteModeIsOn( mSatelliteService.enableTerrestrialNetworkScanWhileSatelliteModeIsOn( enabled, errorCallback); } } catch (RemoteException e) { ploge("enableCellularModemWhileSatelliteModeIsOn: RemoteException " + e); ploge("enableTerrestrialNetworkScanWhileSatelliteModeIsOn: RemoteException " + e); if (message != null) { sendMessageWithResult( message, null, SatelliteManager.SATELLITE_RESULT_SERVICE_ERROR); Loading
tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java +68 −0 Original line number Diff line number Diff line Loading @@ -1628,6 +1628,11 @@ public class SatelliteControllerTest extends TelephonyTest { public void onRegistrationFailure(int causeCode) { logd("onRegistrationFailure: causeCode=" + causeCode); } @Override public void onTerrestrialNetworkAvailableChanged(boolean isAvailable) { logd("onTerrestrialNetworkAvailableChanged: isAvailable=" + isAvailable); } }; int errorCode = mSatelliteControllerUT.registerForSatelliteModemStateChanged(callback); assertEquals(SATELLITE_RESULT_INVALID_TELEPHONY_STATE, errorCode); Loading Loading @@ -1659,6 +1664,11 @@ public class SatelliteControllerTest extends TelephonyTest { public void onRegistrationFailure(int causeCode) { logd("onRegistrationFailure: causeCode=" + causeCode); } @Override public void onTerrestrialNetworkAvailableChanged(boolean isAvailable) { logd("onTerrestrialNetworkAvailableChanged: isAvailable=" + isAvailable); } }; mSatelliteControllerUT.unregisterForModemStateChanged(callback); verify(mMockSatelliteSessionController, never()) Loading Loading @@ -4243,6 +4253,11 @@ public class SatelliteControllerTest extends TelephonyTest { resultErrorCode[0] = causeCode; semaphore.release(); } @Override public void onTerrestrialNetworkAvailableChanged(boolean isAvailable) { logd("onTerrestrialNetworkAvailableChanged: isAvailable=" + isAvailable); } }; resetSatelliteControllerUTToSupportedAndProvisionedState(); mSatelliteControllerUT.setSatelliteSessionController(mMockSatelliteSessionController); Loading Loading @@ -4296,6 +4311,51 @@ public class SatelliteControllerTest extends TelephonyTest { assertTrue(mSatelliteControllerUT.isFoldable(mContext, foldableDeviceStateList)); } @Test public void testTerrestrialNetworkAvailableChangedCallback() { when(mFeatureFlags.carrierRoamingNbIotNtn()).thenReturn(true); Semaphore semaphore = new Semaphore(0); final int[] receivedScanResult = new int[1]; ISatelliteModemStateCallback callback = new ISatelliteModemStateCallback.Stub() { @Override public void onSatelliteModemStateChanged(int state) { logd("onSatelliteModemStateChanged: state=" + state); } @Override public void onEmergencyModeChanged(boolean isEmergency) { logd("onEmergencyModeChanged: emergency=" + isEmergency); } @Override public void onRegistrationFailure(int causeCode) { logd("onRegistrationFailure: causeCode=" + causeCode); } @Override public void onTerrestrialNetworkAvailableChanged(boolean isAvailable) { logd("onTerrestrialNetworkAvailableChanged: isAvailable=" + isAvailable); receivedScanResult[0] = isAvailable ? 1 : 0; semaphore.release(); } }; resetSatelliteControllerUTToSupportedAndProvisionedState(); mSatelliteControllerUT.setSatelliteSessionController(mMockSatelliteSessionController); int RegisterErrorCode = mSatelliteControllerUT.registerForSatelliteModemStateChanged( callback); assertEquals(SATELLITE_RESULT_SUCCESS, RegisterErrorCode); verify(mMockSatelliteSessionController).registerForSatelliteModemStateChanged(callback); int expectedErrorCode = 1; mIIntegerConsumerResults.clear(); sendTerrestrialNetworkAvailableChangedEvent(true, null); processAllMessages(); assertTrue(waitForForEvents( semaphore, 1, "testRegistrationFailureCallback")); assertEquals(expectedErrorCode, receivedScanResult[0]); } private boolean mProvisionState = false; private int mProvisionSateResultCode = -1; private Semaphore mProvisionSateSemaphore = new Semaphore(0); Loading Loading @@ -5352,6 +5412,14 @@ public class SatelliteControllerTest extends TelephonyTest { msg.sendToTarget(); } private void sendTerrestrialNetworkAvailableChangedEvent(boolean isAvailable, Throwable exception) { Message msg = mSatelliteControllerUT.obtainMessage( 55 /* EVENT_TERRESTRIAL_NETWORK_AVAILABLE_CHANGED */); msg.obj = new AsyncResult(null, isAvailable, exception); msg.sendToTarget(); } private void setRadioPower(boolean on) { mSimulatedCommands.setRadioPower(on, false, false, null); } Loading