Loading src/java/com/android/internal/telephony/satellite/SatelliteController.java +17 −10 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ import android.os.Message; import android.os.PersistableBundle; import android.os.RemoteException; import android.os.ResultReceiver; import android.os.ServiceSpecificException; import android.os.SystemClock; import android.os.SystemProperties; import android.provider.Settings; Loading Loading @@ -2005,23 +2006,29 @@ public class SatelliteController extends Handler { } /** * Registers for NTN signal strength changed from satellite modem. * Registers for NTN signal strength changed from satellite modem. If the registration operation * is not successful, a {@link ServiceSpecificException} that contains * {@link SatelliteManager.SatelliteResult} will be thrown. * * @param subId The id of the subscription to request for. * @param callback The callback to handle the non-terrestrial network signal strength changed * event. * @param callback The callback to handle the NTN signal strength changed event. If the * operation is successful, {@link INtnSignalStrengthCallback#onNtnSignalStrengthChanged( * NtnSignalStrength)} will return an instance of {@link NtnSignalStrength} with a value of * {@link NtnSignalStrength.NtnSignalStrengthLevel} when the signal strength of non-terrestrial * network has changed. * * @return The {@link SatelliteManager.SatelliteResult} result of the operation. * @throws ServiceSpecificException If the callback registration operation fails. */ @SatelliteManager.SatelliteResult public int registerForNtnSignalStrengthChanged( int subId, @NonNull INtnSignalStrengthCallback callback) { public void registerForNtnSignalStrengthChanged(int subId, @NonNull INtnSignalStrengthCallback callback) throws RemoteException { if (DBG) logd("registerForNtnSignalStrengthChanged()"); int error = evaluateOemSatelliteRequestAllowed(true); if (error != SATELLITE_RESULT_SUCCESS) return error; if (error == SATELLITE_RESULT_SUCCESS) { mNtnSignalStrengthChangedListeners.put(callback.asBinder(), callback); return SATELLITE_RESULT_SUCCESS; } else { throw new ServiceSpecificException(error); } } /** Loading tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java +39 −21 Original line number Diff line number Diff line Loading @@ -61,6 +61,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertThrows; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; Loading Loading @@ -91,7 +92,9 @@ import android.os.ICancellationSignal; import android.os.Looper; import android.os.Message; import android.os.PersistableBundle; import android.os.RemoteException; import android.os.ResultReceiver; import android.os.ServiceSpecificException; import android.telephony.CarrierConfigManager; import android.telephony.Rlog; import android.telephony.ServiceState; Loading Loading @@ -2156,16 +2159,16 @@ public class SatelliteControllerTest extends TelephonyTest { } }; int errorCode = mSatelliteControllerUT.registerForNtnSignalStrengthChanged(SUB_ID, callback); assertEquals(SATELLITE_RESULT_INVALID_TELEPHONY_STATE, errorCode); @NtnSignalStrength.NtnSignalStrengthLevel int expectedLevel = NTN_SIGNAL_STRENGTH_NONE; verifyRegisterForNtnSignalStrengthChanged(SUB_ID, callback, SATELLITE_RESULT_INVALID_TELEPHONY_STATE); setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_RESULT_SUCCESS); verifySatelliteSupported(false, SATELLITE_RESULT_SUCCESS); errorCode = mSatelliteControllerUT.registerForNtnSignalStrengthChanged(SUB_ID, callback); assertEquals(SATELLITE_RESULT_NOT_SUPPORTED, errorCode); verifyRegisterForNtnSignalStrengthChanged(SUB_ID, callback, SATELLITE_RESULT_NOT_SUPPORTED); @NtnSignalStrength.NtnSignalStrengthLevel int expectedLevel = NTN_SIGNAL_STRENGTH_NONE; verifyRequestNtnSignalStrength(expectedLevel, SATELLITE_RESULT_NOT_SUPPORTED); resetSatelliteControllerUT(); Loading @@ -2173,8 +2176,8 @@ public class SatelliteControllerTest extends TelephonyTest { setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); setUpResponseForRequestNtnSignalStrength(expectedLevel, SATELLITE_RESULT_SUCCESS); verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); errorCode = mSatelliteControllerUT.registerForNtnSignalStrengthChanged(SUB_ID, callback); assertEquals(SATELLITE_RESULT_SUCCESS, errorCode); verifyRegisterForNtnSignalStrengthChanged(SUB_ID, callback, SATELLITE_RESULT_SUCCESS); verifyRequestNtnSignalStrength(expectedLevel, SATELLITE_RESULT_SUCCESS); expectedLevel = NTN_SIGNAL_STRENGTH_GOOD; Loading Loading @@ -2225,15 +2228,14 @@ public class SatelliteControllerTest extends TelephonyTest { } }; int errorCode = mSatelliteControllerUT.registerForNtnSignalStrengthChanged(SUB_ID, callback); assertEquals(SATELLITE_RESULT_REQUEST_NOT_SUPPORTED, errorCode); verifyRegisterForNtnSignalStrengthChanged(SUB_ID, callback, SATELLITE_RESULT_REQUEST_NOT_SUPPORTED); setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_RESULT_SUCCESS); verifySatelliteSupported(false, SATELLITE_RESULT_NOT_SUPPORTED); errorCode = mSatelliteControllerUT.registerForNtnSignalStrengthChanged(SUB_ID, callback); assertEquals(SATELLITE_RESULT_REQUEST_NOT_SUPPORTED, errorCode); verifyRegisterForNtnSignalStrengthChanged(SUB_ID, callback, SATELLITE_RESULT_REQUEST_NOT_SUPPORTED); setUpResponseForRequestNtnSignalStrength(NTN_SIGNAL_STRENGTH_NONE, SATELLITE_RESULT_SUCCESS); verifyRequestNtnSignalStrength(NTN_SIGNAL_STRENGTH_NONE, Loading @@ -2242,8 +2244,8 @@ public class SatelliteControllerTest extends TelephonyTest { resetSatelliteControllerUT(); setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); verifySatelliteSupported(false, SATELLITE_RESULT_NOT_SUPPORTED); errorCode = mSatelliteControllerUT.registerForNtnSignalStrengthChanged(SUB_ID, callback); assertEquals(SATELLITE_RESULT_REQUEST_NOT_SUPPORTED, errorCode); verifyRegisterForNtnSignalStrengthChanged(SUB_ID, callback, SATELLITE_RESULT_REQUEST_NOT_SUPPORTED); verifyRequestNtnSignalStrength(NTN_SIGNAL_STRENGTH_NONE, SATELLITE_RESULT_REQUEST_NOT_SUPPORTED); Loading Loading @@ -3101,6 +3103,22 @@ public class SatelliteControllerTest extends TelephonyTest { mSimulatedCommands.setRadioPower(on, false, false, null); } private void verifyRegisterForNtnSignalStrengthChanged(int subId, INtnSignalStrengthCallback callback, int expectedError) { if (expectedError == SATELLITE_RESULT_SUCCESS) { try { mSatelliteControllerUT.registerForNtnSignalStrengthChanged(subId, callback); } catch (RemoteException ex) { throw new AssertionError(); } } else { ServiceSpecificException ex = assertThrows(ServiceSpecificException.class, () -> mSatelliteControllerUT.registerForNtnSignalStrengthChanged(subId, callback)); assertEquals(expectedError, ex.errorCode); } } private static void loge(String message) { Rlog.e(TAG, message); } Loading Loading
src/java/com/android/internal/telephony/satellite/SatelliteController.java +17 −10 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ import android.os.Message; import android.os.PersistableBundle; import android.os.RemoteException; import android.os.ResultReceiver; import android.os.ServiceSpecificException; import android.os.SystemClock; import android.os.SystemProperties; import android.provider.Settings; Loading Loading @@ -2005,23 +2006,29 @@ public class SatelliteController extends Handler { } /** * Registers for NTN signal strength changed from satellite modem. * Registers for NTN signal strength changed from satellite modem. If the registration operation * is not successful, a {@link ServiceSpecificException} that contains * {@link SatelliteManager.SatelliteResult} will be thrown. * * @param subId The id of the subscription to request for. * @param callback The callback to handle the non-terrestrial network signal strength changed * event. * @param callback The callback to handle the NTN signal strength changed event. If the * operation is successful, {@link INtnSignalStrengthCallback#onNtnSignalStrengthChanged( * NtnSignalStrength)} will return an instance of {@link NtnSignalStrength} with a value of * {@link NtnSignalStrength.NtnSignalStrengthLevel} when the signal strength of non-terrestrial * network has changed. * * @return The {@link SatelliteManager.SatelliteResult} result of the operation. * @throws ServiceSpecificException If the callback registration operation fails. */ @SatelliteManager.SatelliteResult public int registerForNtnSignalStrengthChanged( int subId, @NonNull INtnSignalStrengthCallback callback) { public void registerForNtnSignalStrengthChanged(int subId, @NonNull INtnSignalStrengthCallback callback) throws RemoteException { if (DBG) logd("registerForNtnSignalStrengthChanged()"); int error = evaluateOemSatelliteRequestAllowed(true); if (error != SATELLITE_RESULT_SUCCESS) return error; if (error == SATELLITE_RESULT_SUCCESS) { mNtnSignalStrengthChangedListeners.put(callback.asBinder(), callback); return SATELLITE_RESULT_SUCCESS; } else { throw new ServiceSpecificException(error); } } /** Loading
tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java +39 −21 Original line number Diff line number Diff line Loading @@ -61,6 +61,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertThrows; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; Loading Loading @@ -91,7 +92,9 @@ import android.os.ICancellationSignal; import android.os.Looper; import android.os.Message; import android.os.PersistableBundle; import android.os.RemoteException; import android.os.ResultReceiver; import android.os.ServiceSpecificException; import android.telephony.CarrierConfigManager; import android.telephony.Rlog; import android.telephony.ServiceState; Loading Loading @@ -2156,16 +2159,16 @@ public class SatelliteControllerTest extends TelephonyTest { } }; int errorCode = mSatelliteControllerUT.registerForNtnSignalStrengthChanged(SUB_ID, callback); assertEquals(SATELLITE_RESULT_INVALID_TELEPHONY_STATE, errorCode); @NtnSignalStrength.NtnSignalStrengthLevel int expectedLevel = NTN_SIGNAL_STRENGTH_NONE; verifyRegisterForNtnSignalStrengthChanged(SUB_ID, callback, SATELLITE_RESULT_INVALID_TELEPHONY_STATE); setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_RESULT_SUCCESS); verifySatelliteSupported(false, SATELLITE_RESULT_SUCCESS); errorCode = mSatelliteControllerUT.registerForNtnSignalStrengthChanged(SUB_ID, callback); assertEquals(SATELLITE_RESULT_NOT_SUPPORTED, errorCode); verifyRegisterForNtnSignalStrengthChanged(SUB_ID, callback, SATELLITE_RESULT_NOT_SUPPORTED); @NtnSignalStrength.NtnSignalStrengthLevel int expectedLevel = NTN_SIGNAL_STRENGTH_NONE; verifyRequestNtnSignalStrength(expectedLevel, SATELLITE_RESULT_NOT_SUPPORTED); resetSatelliteControllerUT(); Loading @@ -2173,8 +2176,8 @@ public class SatelliteControllerTest extends TelephonyTest { setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); setUpResponseForRequestNtnSignalStrength(expectedLevel, SATELLITE_RESULT_SUCCESS); verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); errorCode = mSatelliteControllerUT.registerForNtnSignalStrengthChanged(SUB_ID, callback); assertEquals(SATELLITE_RESULT_SUCCESS, errorCode); verifyRegisterForNtnSignalStrengthChanged(SUB_ID, callback, SATELLITE_RESULT_SUCCESS); verifyRequestNtnSignalStrength(expectedLevel, SATELLITE_RESULT_SUCCESS); expectedLevel = NTN_SIGNAL_STRENGTH_GOOD; Loading Loading @@ -2225,15 +2228,14 @@ public class SatelliteControllerTest extends TelephonyTest { } }; int errorCode = mSatelliteControllerUT.registerForNtnSignalStrengthChanged(SUB_ID, callback); assertEquals(SATELLITE_RESULT_REQUEST_NOT_SUPPORTED, errorCode); verifyRegisterForNtnSignalStrengthChanged(SUB_ID, callback, SATELLITE_RESULT_REQUEST_NOT_SUPPORTED); setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_RESULT_SUCCESS); verifySatelliteSupported(false, SATELLITE_RESULT_NOT_SUPPORTED); errorCode = mSatelliteControllerUT.registerForNtnSignalStrengthChanged(SUB_ID, callback); assertEquals(SATELLITE_RESULT_REQUEST_NOT_SUPPORTED, errorCode); verifyRegisterForNtnSignalStrengthChanged(SUB_ID, callback, SATELLITE_RESULT_REQUEST_NOT_SUPPORTED); setUpResponseForRequestNtnSignalStrength(NTN_SIGNAL_STRENGTH_NONE, SATELLITE_RESULT_SUCCESS); verifyRequestNtnSignalStrength(NTN_SIGNAL_STRENGTH_NONE, Loading @@ -2242,8 +2244,8 @@ public class SatelliteControllerTest extends TelephonyTest { resetSatelliteControllerUT(); setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); verifySatelliteSupported(false, SATELLITE_RESULT_NOT_SUPPORTED); errorCode = mSatelliteControllerUT.registerForNtnSignalStrengthChanged(SUB_ID, callback); assertEquals(SATELLITE_RESULT_REQUEST_NOT_SUPPORTED, errorCode); verifyRegisterForNtnSignalStrengthChanged(SUB_ID, callback, SATELLITE_RESULT_REQUEST_NOT_SUPPORTED); verifyRequestNtnSignalStrength(NTN_SIGNAL_STRENGTH_NONE, SATELLITE_RESULT_REQUEST_NOT_SUPPORTED); Loading Loading @@ -3101,6 +3103,22 @@ public class SatelliteControllerTest extends TelephonyTest { mSimulatedCommands.setRadioPower(on, false, false, null); } private void verifyRegisterForNtnSignalStrengthChanged(int subId, INtnSignalStrengthCallback callback, int expectedError) { if (expectedError == SATELLITE_RESULT_SUCCESS) { try { mSatelliteControllerUT.registerForNtnSignalStrengthChanged(subId, callback); } catch (RemoteException ex) { throw new AssertionError(); } } else { ServiceSpecificException ex = assertThrows(ServiceSpecificException.class, () -> mSatelliteControllerUT.registerForNtnSignalStrengthChanged(subId, callback)); assertEquals(expectedError, ex.errorCode); } } private static void loge(String message) { Rlog.e(TAG, message); } Loading