From 5c8178d266b3881b669687686a86660841b3d1d5 Mon Sep 17 00:00:00 2001 From: Hakjun Choi Date: Tue, 25 Apr 2023 10:59:43 +0000 Subject: [PATCH] Satellite demo mode : Simulated sending and receiving Message sending/receive is considered successful when the device is towars satellite within a reasonable margin Bug: 276058936 Test: cts/SatelliteManagerTest, SatelliteManagerTestOnMockService Change-Id: Icf82ade2bb18bce6d9561d023ebfde37065ba278 --- .../telephony/satellite/SatelliteManager.java | 25 +++++++++++++++++++ .../internal/telephony/ITelephony.aidl | 19 ++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/telephony/java/android/telephony/satellite/SatelliteManager.java b/telephony/java/android/telephony/satellite/SatelliteManager.java index c5830b8249c81..431e9e6289623 100644 --- a/telephony/java/android/telephony/satellite/SatelliteManager.java +++ b/telephony/java/android/telephony/satellite/SatelliteManager.java @@ -1503,6 +1503,31 @@ public class SatelliteManager { } } + /** + * Inform whether the device is aligned with the satellite for demo mode. + * + * @param isAligned {@true} Device is aligned with the satellite for demo mode + * {@false} Device is not aligned with the satellite for demo mode + * + * @throws SecurityException if the caller doesn't have required permission. + * @throws IllegalStateException if the Telephony process is not currently available. + */ + @RequiresPermission(Manifest.permission.SATELLITE_COMMUNICATION) + + public void onDeviceAlignedWithSatellite(boolean isAligned) { + try { + ITelephony telephony = getITelephony(); + if (telephony != null) { + telephony.onDeviceAlignedWithSatellite(mSubId, isAligned); + } else { + throw new IllegalStateException("telephony service is null."); + } + } catch (RemoteException ex) { + loge("informDeviceAlignedToSatellite() RemoteException:" + ex); + ex.rethrowFromSystemServer(); + } + } + private static ITelephony getITelephony() { ITelephony binder = ITelephony.Stub.asInterface(TelephonyFrameworkInitializer .getTelephonyServiceManager() diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl index 18e4c37f3e238..21aad73ce0057 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -2981,6 +2981,16 @@ interface ITelephony { + "android.Manifest.permission.SATELLITE_COMMUNICATION)") void requestTimeForNextSatelliteVisibility(int subId, in ResultReceiver receiver); + /** + * Inform whether the device is aligned with the satellite within in margin for demo mode. + * + * @param isAligned {@true} Device is aligned with the satellite for demo mode + * {@false} Device is not aligned with the satellite for demo mode + */ + @JavaPassthrough(annotation="@android.annotation.RequiresPermission(" + + "android.Manifest.permission.SATELLITE_COMMUNICATION)") + void onDeviceAlignedWithSatellite(int subId, in boolean isAligned); + /** * This API can be used by only CTS to update satellite vendor service package name. * @@ -3018,4 +3028,13 @@ interface ITelephony { * {@code false} otherwise. */ boolean setSatellitePointingUiClassName(in String packageName, in String className); + + /** + * This API can be used by only CTS to update the timeout duration in milliseconds whether + * the device is aligned with the satellite for demo mode + * + * @param timeoutMillis The timeout duration in millisecond. + * @return {@code true} if the timeout duration is set successfully, {@code false} otherwise. + */ + boolean setSatelliteDeviceAlignedTimeoutDuration(long timeoutMillis); }