diff --git a/satellite_client/src/android/telephony/satellite/wrapper/SatelliteGatewayServiceWrapper.java b/satellite_client/src/android/telephony/satellite/wrapper/SatelliteGatewayServiceWrapper.java
new file mode 100644
index 0000000..dd6ac55
--- /dev/null
+++ b/satellite_client/src/android/telephony/satellite/wrapper/SatelliteGatewayServiceWrapper.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.satellite.wrapper;
+
+import android.telephony.satellite.stub.SatelliteGatewayService;
+
+/**
+ * Wrapper for SatelliteGatewayService. The application must declare that they require the
+ * "android.permission.BIND_SATELLITE_GATEWAY_SERVICE" permission to ensure that nothing else can
+ * bind to their service except the Telephony framework. The SatelliteGatewayService definition in
+ * the manifest must follow the following format:
+ * ...
+ * <service android:name=".EgSatelliteGatewayService"
+ *     android:permission="android.permission.BIND_SATELLITE_GATEWAY_SERVICE" >
+ *     ...
+ *     <intent-filter>
+ *         <action android:name="android.telephony.satellite.SatelliteGatewayService" />
+ *     </intent-filter>
+ * </service>
+ * ...
+ *
+ * <p>The telephony framework will then bind to the SatelliteGatewayService defined in the manifest
+ * if it is the default SatelliteGatewayService defined in the device overlay
+ * "config_satellite_gateway_service_package".
+ */
+public abstract class SatelliteGatewayServiceWrapper extends SatelliteGatewayService {}
diff --git a/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java b/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java
index 22debf9..b13a0fc 100644
--- a/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java
+++ b/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java
@@ -287,6 +287,10 @@
   public static final int SATELLITE_NOT_AUTHORIZED = 19;
   /** The device does not support satellite. */
   public static final int SATELLITE_NOT_SUPPORTED = 20;
+  /** The current request is already in-progress. */
+  public static final int SATELLITE_REQUEST_IN_PROGRESS = 21;
+  /** Satellite modem is currently busy due to which current request cannot be processed. */
+  public static final int SATELLITE_MODEM_BUSY = 22;
 
   /** @hide */
   @IntDef(
@@ -312,7 +316,9 @@
         SATELLITE_NETWORK_TIMEOUT,
         SATELLITE_NOT_REACHABLE,
         SATELLITE_NOT_AUTHORIZED,
-        SATELLITE_NOT_SUPPORTED
+        SATELLITE_NOT_SUPPORTED,
+        SATELLITE_REQUEST_IN_PROGRESS,
+        SATELLITE_MODEM_BUSY
       })
   @Retention(RetentionPolicy.SOURCE)
   public @interface SatelliteError {}
@@ -721,6 +727,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<>();
