Satellite demo mode : Simulated sending and receiving

Message sending/receive is considered successful when the device is towards satellite within a reasonable margin

Bug: 276058936
Test: cts/SatelliteManagerTest, SatelliteManagerTestOnMockService
Change-Id: Id99e419778826b046aafccd13e62cb3463ad2f84
diff --git a/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java b/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java
index 22debf9..ef3115b 100644
--- a/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java
+++ b/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java
@@ -18,13 +18,16 @@
 
 import static android.telephony.satellite.SatelliteManager.SatelliteException;
 
+import android.Manifest;
 import android.annotation.CallbackExecutor;
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.RequiresPermission;
 import android.content.Context;
 import android.os.CancellationSignal;
 import android.os.OutcomeReceiver;
+import android.os.RemoteException;
 import android.telephony.satellite.AntennaPosition;
 import android.telephony.satellite.PointingInfo;
 import android.telephony.satellite.SatelliteCapabilities;
@@ -721,6 +724,13 @@
     mSatelliteManager.requestTimeForNextSatelliteVisibility(executor, internalCallback);
   }
 
+  /**
+   * Inform whether the device is aligned with the satellite for demo mode.
+   */
+  public void onDeviceAlignedWithSatellite(boolean isAligned) {
+    mSatelliteManager.onDeviceAlignedWithSatellite(isAligned);
+  }
+
   private Map<Integer, AntennaPositionWrapper> transformToAntennaPositionWrapperMap(
       Map<Integer, AntennaPosition> input) {
     Map<Integer, AntennaPositionWrapper> output = new HashMap<>();