| /* |
| * Copyright (C) 2022 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.stub; |
| |
| import android.annotation.NonNull; |
| import android.os.IBinder; |
| import android.os.RemoteException; |
| import android.telephony.IBooleanConsumer; |
| import android.telephony.IIntegerConsumer; |
| import android.util.Log; |
| |
| import com.android.internal.telephony.util.TelephonyUtils; |
| |
| import java.util.List; |
| import java.util.concurrent.CancellationException; |
| import java.util.concurrent.CompletableFuture; |
| import java.util.concurrent.CompletionException; |
| import java.util.concurrent.Executor; |
| |
| /** |
| * Base implementation of satellite service. |
| * Any service wishing to provide satellite services should extend this class and implement all |
| * methods that the service supports. |
| * @hide |
| */ |
| public class SatelliteImplBase extends SatelliteService { |
| private static final String TAG = "SatelliteImplBase"; |
| |
| protected final Executor mExecutor; |
| |
| /** |
| * Create SatelliteImplBase using the Executor specified for methods being called from the |
| * framework. |
| * @param executor The executor for the framework to use when executing the methods overridden |
| * by the implementation of Satellite. |
| * @hide |
| */ |
| public SatelliteImplBase(@NonNull Executor executor) { |
| super(); |
| mExecutor = executor; |
| } |
| |
| /** |
| * @return The binder for the Satellite implementation. |
| * @hide |
| */ |
| public final IBinder getBinder() { |
| return mBinder; |
| } |
| |
| private final IBinder mBinder = new ISatellite.Stub() { |
| @Override |
| public void setSatelliteListener(ISatelliteListener listener) throws RemoteException { |
| executeMethodAsync( |
| () -> SatelliteImplBase.this.setSatelliteListener(listener), |
| "setSatelliteListener"); |
| } |
| |
| @Override |
| public void requestSatelliteListeningEnabled(boolean enable, int timeout, |
| IIntegerConsumer resultCallback) throws RemoteException { |
| executeMethodAsync( |
| () -> SatelliteImplBase.this |
| .requestSatelliteListeningEnabled(enable, timeout, resultCallback), |
| "requestSatelliteListeningEnabled"); |
| } |
| |
| @Override |
| public void enableCellularModemWhileSatelliteModeIsOn(boolean enabled, |
| IIntegerConsumer resultCallback) throws RemoteException { |
| executeMethodAsync( |
| () -> SatelliteImplBase.this |
| .enableCellularModemWhileSatelliteModeIsOn(enabled, resultCallback), |
| "enableCellularModemWhileSatelliteModeIsOn"); |
| } |
| |
| @Override |
| public void requestSatelliteEnabled(boolean enableSatellite, boolean enableDemoMode, |
| boolean isEmergency, IIntegerConsumer resultCallback) throws RemoteException { |
| executeMethodAsync( |
| () -> SatelliteImplBase.this |
| .requestSatelliteEnabled( |
| enableSatellite, enableDemoMode, isEmergency, resultCallback), |
| "requestSatelliteEnabled"); |
| } |
| |
| @Override |
| public void requestIsSatelliteEnabled(IIntegerConsumer resultCallback, |
| IBooleanConsumer callback) throws RemoteException { |
| executeMethodAsync( |
| () -> SatelliteImplBase.this |
| .requestIsSatelliteEnabled(resultCallback, callback), |
| "requestIsSatelliteEnabled"); |
| } |
| |
| @Override |
| public void requestIsSatelliteSupported(IIntegerConsumer resultCallback, |
| IBooleanConsumer callback) throws RemoteException { |
| executeMethodAsync( |
| () -> SatelliteImplBase.this |
| .requestIsSatelliteSupported(resultCallback, callback), |
| "requestIsSatelliteSupported"); |
| } |
| |
| @Override |
| public void requestSatelliteCapabilities(IIntegerConsumer resultCallback, |
| ISatelliteCapabilitiesConsumer callback) throws RemoteException { |
| executeMethodAsync( |
| () -> SatelliteImplBase.this |
| .requestSatelliteCapabilities(resultCallback, callback), |
| "requestSatelliteCapabilities"); |
| } |
| |
| @Override |
| public void startSendingSatellitePointingInfo(IIntegerConsumer resultCallback) |
| throws RemoteException { |
| executeMethodAsync( |
| () -> SatelliteImplBase.this.startSendingSatellitePointingInfo(resultCallback), |
| "startSendingSatellitePointingInfo"); |
| } |
| |
| @Override |
| public void stopSendingSatellitePointingInfo(IIntegerConsumer resultCallback) |
| throws RemoteException { |
| executeMethodAsync( |
| () -> SatelliteImplBase.this.stopSendingSatellitePointingInfo(resultCallback), |
| "stopSendingSatellitePointingInfo"); |
| } |
| |
| @Override |
| public void provisionSatelliteService(String token, byte[] provisionData, |
| IIntegerConsumer resultCallback) throws RemoteException { |
| executeMethodAsync( |
| () -> SatelliteImplBase.this |
| .provisionSatelliteService(token, provisionData, resultCallback), |
| "provisionSatelliteService"); |
| } |
| |
| @Override |
| public void deprovisionSatelliteService(String token, IIntegerConsumer resultCallback) |
| throws RemoteException { |
| executeMethodAsync( |
| () -> SatelliteImplBase.this.deprovisionSatelliteService(token, resultCallback), |
| "deprovisionSatelliteService"); |
| } |
| |
| @Override |
| public void requestIsSatelliteProvisioned(IIntegerConsumer resultCallback, |
| IBooleanConsumer callback) throws RemoteException { |
| executeMethodAsync( |
| () -> SatelliteImplBase.this |
| .requestIsSatelliteProvisioned(resultCallback, callback), |
| "requestIsSatelliteProvisioned"); |
| } |
| |
| @Override |
| public void pollPendingSatelliteDatagrams(IIntegerConsumer resultCallback) |
| throws RemoteException { |
| executeMethodAsync( |
| () -> SatelliteImplBase.this.pollPendingSatelliteDatagrams(resultCallback), |
| "pollPendingSatelliteDatagrams"); |
| } |
| |
| @Override |
| public void sendSatelliteDatagram(SatelliteDatagram datagram, boolean isEmergency, |
| IIntegerConsumer resultCallback) throws RemoteException { |
| executeMethodAsync( |
| () -> SatelliteImplBase.this |
| .sendSatelliteDatagram(datagram, isEmergency, resultCallback), |
| "sendDatagram"); |
| } |
| |
| @Override |
| public void requestSatelliteModemState(IIntegerConsumer resultCallback, |
| IIntegerConsumer callback) throws RemoteException { |
| executeMethodAsync( |
| () -> SatelliteImplBase.this |
| .requestSatelliteModemState(resultCallback, callback), |
| "requestSatelliteModemState"); |
| } |
| |
| @Override |
| public void requestTimeForNextSatelliteVisibility(IIntegerConsumer resultCallback, |
| IIntegerConsumer callback) throws RemoteException { |
| executeMethodAsync( |
| () -> SatelliteImplBase.this |
| .requestTimeForNextSatelliteVisibility(resultCallback, callback), |
| "requestTimeForNextSatelliteVisibility"); |
| } |
| |
| @Override |
| public void setSatellitePlmn(int simSlot, List<String> carrierPlmnList, |
| List<String> devicePlmnList, IIntegerConsumer resultCallback) |
| throws RemoteException { |
| executeMethodAsync( |
| () -> SatelliteImplBase.this.setSatellitePlmn( |
| simSlot, carrierPlmnList, devicePlmnList, resultCallback), |
| "setSatellitePlmn"); |
| } |
| |
| @Override |
| public void setSatelliteEnabledForCarrier(int simSlot, boolean enableSatellite, |
| IIntegerConsumer resultCallback) throws RemoteException { |
| executeMethodAsync( |
| () -> SatelliteImplBase.this.setSatelliteEnabledForCarrier( |
| simSlot, enableSatellite, resultCallback), |
| "setSatelliteEnabledForCarrier"); |
| } |
| |
| @Override |
| public void requestIsSatelliteEnabledForCarrier(int simSlot, |
| IIntegerConsumer resultCallback, IBooleanConsumer callback) throws RemoteException { |
| executeMethodAsync( |
| () -> SatelliteImplBase.this |
| .requestIsSatelliteEnabledForCarrier(simSlot, resultCallback, callback), |
| "requestIsSatelliteEnabledForCarrier"); |
| } |
| |
| @Override |
| public void requestSignalStrength(IIntegerConsumer resultCallback, |
| INtnSignalStrengthConsumer callback) throws RemoteException { |
| executeMethodAsync( |
| () -> SatelliteImplBase.this.requestSignalStrength(resultCallback, callback), |
| "requestSignalStrength"); |
| } |
| |
| @Override |
| public void startSendingNtnSignalStrength(IIntegerConsumer resultCallback) |
| throws RemoteException { |
| executeMethodAsync( |
| () -> SatelliteImplBase.this.startSendingNtnSignalStrength(resultCallback), |
| "startSendingNtnSignalStrength"); |
| } |
| |
| @Override |
| public void stopSendingNtnSignalStrength(IIntegerConsumer resultCallback) |
| throws RemoteException { |
| executeMethodAsync( |
| () -> SatelliteImplBase.this.stopSendingNtnSignalStrength(resultCallback), |
| "stopSendingNtnSignalStrength"); |
| } |
| |
| @Override |
| public void abortSendingSatelliteDatagrams(IIntegerConsumer resultCallback) |
| throws RemoteException { |
| executeMethodAsync( |
| () -> SatelliteImplBase.this.abortSendingSatelliteDatagrams(resultCallback), |
| "abortSendingSatelliteDatagrams"); |
| } |
| |
| // Call the methods with a clean calling identity on the executor and wait indefinitely for |
| // the future to return. |
| private void executeMethodAsync(Runnable r, String errorLogName) throws RemoteException { |
| try { |
| CompletableFuture.runAsync( |
| () -> TelephonyUtils.runWithCleanCallingIdentity(r), mExecutor).join(); |
| } catch (CancellationException | CompletionException e) { |
| Log.w(TAG, "SatelliteImplBase Binder - " + errorLogName + " exception: " |
| + e.getMessage()); |
| throw new RemoteException(e.getMessage()); |
| } |
| } |
| }; |
| |
| /** |
| * Register the callback interface with satellite service. |
| * |
| * @param listener The callback interface to handle satellite service indications. |
| * |
| * Valid result codes returned: |
| * SatelliteResult:SATELLITE_RESULT_SUCCESS |
| * SatelliteResult:SATELLITE_RESULT_SERVICE_ERROR |
| * SatelliteResult:SATELLITE_RESULT_MODEM_ERROR |
| * SatelliteResult:SATELLITE_RESULT_INVALID_MODEM_STATE |
| * SatelliteResult:SATELLITE_RESULT_INVALID_ARGUMENTS |
| * SatelliteResult:SATELLITE_RESULT_RADIO_NOT_AVAILABLE |
| * SatelliteResult:SATELLITE_RESULT_REQUEST_NOT_SUPPORTED |
| * SatelliteResult:SATELLITE_RESULT_NO_RESOURCES |
| */ |
| public void setSatelliteListener(@NonNull ISatelliteListener listener) { |
| // stub implementation |
| } |
| |
| /** |
| * Request to enable or disable the satellite service listening mode. |
| * Listening mode allows the satellite service to listen for incoming pages. |
| * |
| * @param enable True to enable satellite listening mode and false to disable. |
| * @param timeout How long the satellite modem should wait for the next incoming page before |
| * disabling listening mode. |
| * @param resultCallback The callback to receive the error code result of the operation. |
| * |
| * Valid result codes returned: |
| * SatelliteResult:SATELLITE_RESULT_SUCCESS |
| * SatelliteResult:SATELLITE_RESULT_SERVICE_ERROR |
| * SatelliteResult:SATELLITE_RESULT_MODEM_ERROR |
| * SatelliteResult:SATELLITE_RESULT_INVALID_MODEM_STATE |
| * SatelliteResult:SATELLITE_RESULT_INVALID_ARGUMENTS |
| * SatelliteResult:SATELLITE_RESULT_RADIO_NOT_AVAILABLE |
| * SatelliteResult:SATELLITE_RESULT_REQUEST_NOT_SUPPORTED |
| * SatelliteResult:SATELLITE_RESULT_NO_RESOURCES |
| */ |
| public void requestSatelliteListeningEnabled(boolean enable, int timeout, |
| @NonNull IIntegerConsumer resultCallback) { |
| // stub implementation |
| } |
| |
| /** |
| * Allow cellular modem scanning while satellite mode is on. |
| * @param enabled {@code true} to enable cellular modem while satellite mode is on |
| * and {@code false} to disable |
| * @param resultCallback The callback to receive the error code result of the operation. |
| */ |
| public void enableCellularModemWhileSatelliteModeIsOn(boolean enabled, |
| @NonNull IIntegerConsumer resultCallback) { |
| // stub implementation |
| } |
| |
| /** |
| * Request to enable or disable the satellite modem and demo mode. If the satellite modem is |
| * enabled, this may also disable the cellular modem, and if the satellite modem is disabled, |
| * this may also re-enable the cellular modem. |
| * |
| * @param enableSatellite True to enable the satellite modem and false to disable. |
| * @param enableDemoMode True to enable demo mode and false to disable. |
| * @param isEmergency To specify the satellite is enabled for emergency session and false for |
| * non emergency session. Note: it is possible that a emergency session started get converted |
| * to a non emergency session and vice versa. |
| * @param resultCallback The callback to receive the error code result of the operation. |
| * |
| * Valid result codes returned: |
| * SatelliteResult:SATELLITE_RESULT_SUCCESS |
| * SatelliteResult:SATELLITE_RESULT_SERVICE_ERROR |
| * SatelliteResult:SATELLITE_RESULT_MODEM_ERROR |
| * SatelliteResult:SATELLITE_RESULT_INVALID_MODEM_STATE |
| * SatelliteResult:SATELLITE_RESULT_INVALID_ARGUMENTS |
| * SatelliteResult:SATELLITE_RESULT_RADIO_NOT_AVAILABLE |
| * SatelliteResult:SATELLITE_RESULT_REQUEST_NOT_SUPPORTED |
| * SatelliteResult:SATELLITE_RESULT_NO_RESOURCES |
| */ |
| public void requestSatelliteEnabled(boolean enableSatellite, boolean enableDemoMode, |
| boolean isEmergency, @NonNull IIntegerConsumer resultCallback) { |
| // stub implementation |
| } |
| |
| /** |
| * Request to get whether the satellite modem is enabled. |
| * |
| * @param resultCallback The callback to receive the error code result of the operation. |
| * This must only be sent when the result is not |
| * SatelliteResult#SATELLITE_RESULT_SUCCESS. |
| * @param callback If the result is SatelliteResult#SATELLITE_RESULT_SUCCESS, the callback to |
| * receive whether the satellite modem is enabled. |
| * |
| * Valid result codes returned: |
| * SatelliteResult:SATELLITE_RESULT_SUCCESS |
| * SatelliteResult:SATELLITE_RESULT_SERVICE_ERROR |
| * SatelliteResult:SATELLITE_RESULT_MODEM_ERROR |
| * SatelliteResult:SATELLITE_RESULT_INVALID_MODEM_STATE |
| * SatelliteResult:SATELLITE_RESULT_INVALID_ARGUMENTS |
| * SatelliteResult:SATELLITE_RESULT_RADIO_NOT_AVAILABLE |
| * SatelliteResult:SATELLITE_RESULT_REQUEST_NOT_SUPPORTED |
| * SatelliteResult:SATELLITE_RESULT_NO_RESOURCES |
| */ |
| public void requestIsSatelliteEnabled(@NonNull IIntegerConsumer resultCallback, |
| @NonNull IBooleanConsumer callback) { |
| // stub implementation |
| } |
| |
| /** |
| * Request to get whether the satellite service is supported on the device. |
| * |
| * @param resultCallback The callback to receive the error code result of the operation. |
| * This must only be sent when the result is not |
| * SatelliteResult#SATELLITE_RESULT_SUCCESS. |
| * @param callback If the result is SatelliteResult#SATELLITE_RESULT_SUCCESS, the callback to |
| * receive whether the satellite service is supported on the device. |
| * |
| * Valid result codes returned: |
| * SatelliteResult:SATELLITE_RESULT_SUCCESS |
| * SatelliteResult:SATELLITE_RESULT_SERVICE_ERROR |
| * SatelliteResult:SATELLITE_RESULT_MODEM_ERROR |
| * SatelliteResult:SATELLITE_RESULT_INVALID_MODEM_STATE |
| * SatelliteResult:SATELLITE_RESULT_INVALID_ARGUMENTS |
| * SatelliteResult:SATELLITE_RESULT_RADIO_NOT_AVAILABLE |
| * SatelliteResult:SATELLITE_RESULT_REQUEST_NOT_SUPPORTED |
| * SatelliteResult:SATELLITE_RESULT_NO_RESOURCES |
| */ |
| public void requestIsSatelliteSupported(@NonNull IIntegerConsumer resultCallback, |
| @NonNull IBooleanConsumer callback) { |
| // stub implementation |
| } |
| |
| /** |
| * Request to get the SatelliteCapabilities of the satellite service. |
| * |
| * @param resultCallback The callback to receive the error code result of the operation. |
| * This must only be sent when the result is not |
| * SatelliteResult#SATELLITE_RESULT_SUCCESS. |
| * @param callback If the result is SatelliteResult#SATELLITE_RESULT_SUCCESS, the callback to |
| * receive the SatelliteCapabilities of the satellite service. |
| * |
| * Valid result codes returned: |
| * SatelliteResult:SATELLITE_RESULT_SUCCESS |
| * SatelliteResult:SATELLITE_RESULT_SERVICE_ERROR |
| * SatelliteResult:SATELLITE_RESULT_MODEM_ERROR |
| * SatelliteResult:SATELLITE_RESULT_INVALID_MODEM_STATE |
| * SatelliteResult:SATELLITE_RESULT_INVALID_ARGUMENTS |
| * SatelliteResult:SATELLITE_RESULT_RADIO_NOT_AVAILABLE |
| * SatelliteResult:SATELLITE_RESULT_REQUEST_NOT_SUPPORTED |
| * SatelliteResult:SATELLITE_RESULT_NO_RESOURCES |
| */ |
| public void requestSatelliteCapabilities(@NonNull IIntegerConsumer resultCallback, |
| @NonNull ISatelliteCapabilitiesConsumer callback) { |
| // stub implementation |
| } |
| |
| /** |
| * User started pointing to the satellite. |
| * The satellite service should report the satellite pointing info via |
| * ISatelliteListener#onSatellitePositionChanged as the user device/satellite moves. |
| * |
| * @param resultCallback The callback to receive the error code result of the operation. |
| * |
| * Valid result codes returned: |
| * SatelliteResult:SATELLITE_RESULT_SUCCESS |
| * SatelliteResult:SATELLITE_RESULT_SERVICE_ERROR |
| * SatelliteResult:SATELLITE_RESULT_MODEM_ERROR |
| * SatelliteResult:SATELLITE_RESULT_INVALID_MODEM_STATE |
| * SatelliteResult:SATELLITE_RESULT_INVALID_ARGUMENTS |
| * SatelliteResult:SATELLITE_RESULT_RADIO_NOT_AVAILABLE |
| * SatelliteResult:SATELLITE_RESULT_REQUEST_NOT_SUPPORTED |
| * SatelliteResult:SATELLITE_RESULT_NO_RESOURCES |
| */ |
| public void startSendingSatellitePointingInfo(@NonNull IIntegerConsumer resultCallback) { |
| // stub implementation |
| } |
| |
| /** |
| * User stopped pointing to the satellite. |
| * The satellite service should stop reporting satellite pointing info to the framework. |
| * |
| * @param resultCallback The callback to receive the error code result of the operation. |
| * |
| * Valid result codes returned: |
| * SatelliteResult:SATELLITE_RESULT_SUCCESS |
| * SatelliteResult:SATELLITE_RESULT_SERVICE_ERROR |
| * SatelliteResult:SATELLITE_RESULT_MODEM_ERROR |
| * SatelliteResult:SATELLITE_RESULT_INVALID_MODEM_STATE |
| * SatelliteResult:SATELLITE_RESULT_INVALID_ARGUMENTS |
| * SatelliteResult:SATELLITE_RESULT_RADIO_NOT_AVAILABLE |
| * SatelliteResult:SATELLITE_RESULT_REQUEST_NOT_SUPPORTED |
| * SatelliteResult:SATELLITE_RESULT_NO_RESOURCES |
| */ |
| public void stopSendingSatellitePointingInfo(@NonNull IIntegerConsumer resultCallback) { |
| // stub implementation |
| } |
| |
| /** |
| * Provision the device with a satellite provider. |
| * This is needed if the provider allows dynamic registration. |
| * Once provisioned, ISatelliteListener#onSatelliteProvisionStateChanged should report true. |
| * |
| * @param token The token to be used as a unique identifier for provisioning with satellite |
| * gateway. |
| * @param provisionData Data from the provisioning app that can be used by provisioning |
| * server |
| * @param resultCallback The callback to receive the error code result of the operation. |
| * |
| * Valid result codes returned: |
| * SatelliteResult:SATELLITE_RESULT_SUCCESS |
| * SatelliteResult:SATELLITE_RESULT_SERVICE_ERROR |
| * SatelliteResult:SATELLITE_RESULT_MODEM_ERROR |
| * SatelliteResult:SATELLITE_RESULT_NETWORK_ERROR |
| * SatelliteResult:SATELLITE_RESULT_INVALID_MODEM_STATE |
| * SatelliteResult:SATELLITE_RESULT_INVALID_ARGUMENTS |
| * SatelliteResult:SATELLITE_RESULT_RADIO_NOT_AVAILABLE |
| * SatelliteResult:SATELLITE_RESULT_REQUEST_NOT_SUPPORTED |
| * SatelliteResult:SATELLITE_RESULT_NO_RESOURCES |
| * SatelliteResult:SATELLITE_RESULT_REQUEST_ABORTED |
| * SatelliteResult:SATELLITE_RESULT_NETWORK_TIMEOUT |
| */ |
| public void provisionSatelliteService(@NonNull String token, @NonNull byte[] provisionData, |
| @NonNull IIntegerConsumer resultCallback) { |
| // stub implementation |
| } |
| |
| /** |
| * Deprovision the device with the satellite provider. |
| * This is needed if the provider allows dynamic registration. |
| * Once deprovisioned, ISatelliteListener#onSatelliteProvisionStateChanged should report false. |
| * |
| * @param token The token of the device/subscription to be deprovisioned. |
| * @param resultCallback The callback to receive the error code result of the operation. |
| * |
| * Valid result codes returned: |
| * SatelliteResult:SATELLITE_RESULT_SUCCESS |
| * SatelliteResult:SATELLITE_RESULT_SERVICE_ERROR |
| * SatelliteResult:SATELLITE_RESULT_MODEM_ERROR |
| * SatelliteResult:SATELLITE_RESULT_NETWORK_ERROR |
| * SatelliteResult:SATELLITE_RESULT_INVALID_MODEM_STATE |
| * SatelliteResult:SATELLITE_RESULT_INVALID_ARGUMENTS |
| * SatelliteResult:SATELLITE_RESULT_RADIO_NOT_AVAILABLE |
| * SatelliteResult:SATELLITE_RESULT_REQUEST_NOT_SUPPORTED |
| * SatelliteResult:SATELLITE_RESULT_NO_RESOURCES |
| * SatelliteResult:SATELLITE_RESULT_REQUEST_ABORTED |
| * SatelliteResult:SATELLITE_RESULT_NETWORK_TIMEOUT |
| */ |
| public void deprovisionSatelliteService(@NonNull String token, |
| @NonNull IIntegerConsumer resultCallback) { |
| // stub implementation |
| } |
| |
| /** |
| * Request to get whether this device is provisioned with a satellite provider. |
| * |
| * @param resultCallback The callback to receive the error code result of the operation. |
| * This must only be sent when the result is not |
| * SatelliteResult#SATELLITE_RESULT_SUCCESS. |
| * @param callback If the result is SatelliteResult#SATELLITE_RESULT_SUCCESS, the callback to |
| * receive whether this device is provisioned with a satellite provider. |
| * |
| * Valid result codes returned: |
| * SatelliteResult:SATELLITE_RESULT_SUCCESS |
| * SatelliteResult:SATELLITE_RESULT_SERVICE_ERROR |
| * SatelliteResult:SATELLITE_RESULT_MODEM_ERROR |
| * SatelliteResult:SATELLITE_RESULT_INVALID_MODEM_STATE |
| * SatelliteResult:SATELLITE_RESULT_INVALID_ARGUMENTS |
| * SatelliteResult:SATELLITE_RESULT_RADIO_NOT_AVAILABLE |
| * SatelliteResult:SATELLITE_RESULT_REQUEST_NOT_SUPPORTED |
| * SatelliteResult:SATELLITE_RESULT_NO_RESOURCES |
| */ |
| public void requestIsSatelliteProvisioned(@NonNull IIntegerConsumer resultCallback, |
| @NonNull IBooleanConsumer callback) { |
| // stub implementation |
| } |
| |
| /** |
| * Poll the pending datagrams to be received over satellite. |
| * The satellite service should check if there are any pending datagrams to be received over |
| * satellite and report them via ISatelliteListener#onSatelliteDatagramsReceived. |
| * |
| * @param resultCallback The callback to receive the error code result of the operation. |
| * |
| * Valid result codes returned: |
| * SatelliteResult:SATELLITE_RESULT_SUCCESS |
| * SatelliteResult:SATELLITE_RESULT_SERVICE_ERROR |
| * SatelliteResult:SATELLITE_RESULT_MODEM_ERROR |
| * SatelliteResult:SATELLITE_RESULT_NETWORK_ERROR |
| * SatelliteResult:SATELLITE_RESULT_INVALID_MODEM_STATE |
| * SatelliteResult:SATELLITE_RESULT_INVALID_ARGUMENTS |
| * SatelliteResult:SATELLITE_RESULT_RADIO_NOT_AVAILABLE |
| * SatelliteResult:SATELLITE_RESULT_REQUEST_NOT_SUPPORTED |
| * SatelliteResult:SATELLITE_RESULT_NO_RESOURCES |
| * SatelliteResult:SATELLITE_RESULT_ACCESS_BARRED |
| * SatelliteResult:SATELLITE_RESULT_NETWORK_TIMEOUT |
| * SatelliteResult:SATELLITE_RESULT_NOT_REACHABLE |
| * SatelliteResult:SATELLITE_RESULT_NOT_AUTHORIZED |
| */ |
| public void pollPendingSatelliteDatagrams(@NonNull IIntegerConsumer resultCallback) { |
| // stub implementation |
| } |
| |
| /** |
| * Send datagram over satellite. |
| * |
| * @param datagram Datagram to send in byte format. |
| * @param isEmergency Whether this is an emergency datagram. |
| * @param resultCallback The callback to receive the error code result of the operation. |
| * |
| * Valid result codes returned: |
| * SatelliteResult:SATELLITE_RESULT_SUCCESS |
| * SatelliteResult:SATELLITE_RESULT_SERVICE_ERROR |
| * SatelliteResult:SATELLITE_RESULT_MODEM_ERROR |
| * SatelliteResult:SATELLITE_RESULT_NETWORK_ERROR |
| * SatelliteResult:SATELLITE_RESULT_INVALID_MODEM_STATE |
| * SatelliteResult:SATELLITE_RESULT_INVALID_ARGUMENTS |
| * SatelliteResult:SATELLITE_RESULT_RADIO_NOT_AVAILABLE |
| * SatelliteResult:SATELLITE_RESULT_REQUEST_NOT_SUPPORTED |
| * SatelliteResult:SATELLITE_RESULT_NO_RESOURCES |
| * SatelliteResult:SATELLITE_RESULT_REQUEST_ABORTED |
| * SatelliteResult:SATELLITE_RESULT_ACCESS_BARRED |
| * SatelliteResult:SATELLITE_RESULT_NETWORK_TIMEOUT |
| * SatelliteResult:SATELLITE_RESULT_NOT_REACHABLE |
| * SatelliteResult:SATELLITE_RESULT_NOT_AUTHORIZED |
| */ |
| public void sendSatelliteDatagram(@NonNull SatelliteDatagram datagram, boolean isEmergency, |
| @NonNull IIntegerConsumer resultCallback) { |
| // stub implementation |
| } |
| |
| /** |
| * Request the current satellite modem state. |
| * The satellite service should report the current satellite modem state via |
| * ISatelliteListener#onSatelliteModemStateChanged. |
| * |
| * @param resultCallback The callback to receive the error code result of the operation. |
| * This must only be sent when the result is not |
| * SatelliteResult#SATELLITE_RESULT_SUCCESS. |
| * @param callback If the result is SatelliteResult#SATELLITE_RESULT_SUCCESS, the callback to |
| * receive the current satellite modem state. |
| * |
| * Valid result codes returned: |
| * SatelliteResult:SATELLITE_RESULT_SUCCESS |
| * SatelliteResult:SATELLITE_RESULT_SERVICE_ERROR |
| * SatelliteResult:SATELLITE_RESULT_MODEM_ERROR |
| * SatelliteResult:SATELLITE_RESULT_INVALID_MODEM_STATE |
| * SatelliteResult:SATELLITE_RESULT_INVALID_ARGUMENTS |
| * SatelliteResult:SATELLITE_RESULT_RADIO_NOT_AVAILABLE |
| * SatelliteResult:SATELLITE_RESULT_REQUEST_NOT_SUPPORTED |
| * SatelliteResult:SATELLITE_RESULT_NO_RESOURCES |
| */ |
| public void requestSatelliteModemState(@NonNull IIntegerConsumer resultCallback, |
| @NonNull IIntegerConsumer callback) { |
| // stub implementation |
| } |
| |
| /** |
| * Request to get the time after which the satellite will be visible. This is an int |
| * representing the duration in seconds after which the satellite will be visible. |
| * This will return 0 if the satellite is currently visible. |
| * |
| * @param resultCallback The callback to receive the error code result of the operation. |
| * This must only be sent when the result is not |
| * SatelliteResult#SATELLITE_RESULT_SUCCESS. |
| * @param callback If the result is SatelliteResult#SATELLITE_RESULT_SUCCESS, the callback to |
| * receive the time after which the satellite will be visible. |
| * |
| * Valid result codes returned: |
| * SatelliteResult:SATELLITE_RESULT_SUCCESS |
| * SatelliteResult:SATELLITE_RESULT_SERVICE_ERROR |
| * SatelliteResult:SATELLITE_RESULT_MODEM_ERROR |
| * SatelliteResult:SATELLITE_RESULT_INVALID_MODEM_STATE |
| * SatelliteResult:SATELLITE_RESULT_INVALID_ARGUMENTS |
| * SatelliteResult:SATELLITE_RESULT_RADIO_NOT_AVAILABLE |
| * SatelliteResult:SATELLITE_RESULT_REQUEST_NOT_SUPPORTED |
| * SatelliteResult:SATELLITE_RESULT_NO_RESOURCES |
| */ |
| public void requestTimeForNextSatelliteVisibility(@NonNull IIntegerConsumer resultCallback, |
| @NonNull IIntegerConsumer callback) { |
| // stub implementation |
| } |
| |
| |
| /** |
| * Set the non-terrestrial PLMN with lower priority than terrestrial networks. |
| * MCC/MNC broadcast by the non-terrestrial networks may not be included in OPLMNwACT file on |
| * SIM profile. Acquisition of satellite based system is lower priority to terrestrial |
| * networks. UE shall make all attempts to acquire terrestrial service prior to camping on |
| * satellite LTE service. |
| * |
| * @param simLogicalSlotIndex Indicates the SIM logical slot index to which this API will be |
| * applied. The modem will use this information to determine the relevant carrier. |
| * @param resultCallback The callback to receive the error code result of the operation. |
| * @param carrierPlmnList The list of roaming PLMN used for connecting to satellite networks |
| * supported by user subscription. |
| * @param allSatellitePlmnList Modem should use the allSatellitePlmnList to identify satellite |
| * PLMNs that are not supported by the carrier and make sure not to |
| * attach to them. |
| * |
| * Valid result codes returned: |
| * SatelliteResult:NONE |
| * SatelliteResult:SATELLITE_RESULT_INVALID_ARGUMENTS |
| * SatelliteResult:SATELLITE_RESULT_INVALID_MODEM_STATE |
| * SatelliteResult:MODEM_ERR |
| * SatelliteResult:SATELLITE_RESULT_NO_RESOURCES |
| * SatelliteResult:SATELLITE_RESULT_RADIO_NOT_AVAILABLE |
| * SatelliteResult:SATELLITE_RESULT_REQUEST_NOT_SUPPORTED |
| */ |
| public void setSatellitePlmn(@NonNull int simLogicalSlotIndex, |
| @NonNull List<String> carrierPlmnList, @NonNull List<String> allSatellitePlmnList, |
| @NonNull IIntegerConsumer resultCallback) { |
| // stub implementation |
| } |
| |
| /** |
| * Request to enable or disable carrier supported satellite plmn scan and attach by modem. |
| * Refer {@link #setSatellitePlmn} for the details of satellite PLMN scanning process. |
| * |
| * @param simLogicalSlotIndex Indicates the SIM logical slot index to which this API will be |
| * applied. The modem will use this information to determine the relevant carrier. |
| * @param satelliteEnabled {@code true} to enable satellite, {@code false} to disable satellite. |
| * @param callback {@code true} to enable satellite, {@code false} to disable satellite. |
| * |
| * Valid result codes returned: |
| * SatelliteResult:SATELLITE_RESULT_SUCCESS |
| * SatelliteResult:SATELLITE_RESULT_INVALID_MODEM_STATE |
| * SatelliteResult:SATELLITE_RESULT_MODEM_ERROR |
| * SatelliteResult:SATELLITE_RESULT_RADIO_NOT_AVAILABLE |
| * SatelliteResult:SATELLITE_RESULT_REQUEST_NOT_SUPPORTED |
| */ |
| public void setSatelliteEnabledForCarrier(@NonNull int simLogicalSlotIndex, |
| @NonNull boolean satelliteEnabled, @NonNull IIntegerConsumer callback) { |
| // stub implementation |
| } |
| |
| /** |
| * Request to get whether the satellite is enabled in the cellular modem associated with a |
| * carrier. |
| * |
| * @param simLogicalSlotIndex Indicates the SIM logical slot index to which this API will be |
| * applied. The modem will use this information to determine the relevant carrier. |
| * @param resultCallback The callback to receive the error code result of the operation. |
| * @param callback {@code true} to satellite enabled, {@code false} to satellite disabled. |
| * |
| * Valid result codes returned: |
| * SatelliteResult:SATELLITE_RESULT_SUCCESS |
| * SatelliteResult:SATELLITE_RESULT_INVALID_MODEM_STATE |
| * SatelliteResult:SATELLITE_RESULT_MODEM_ERROR |
| * SatelliteResult:SATELLITE_RESULT_RADIO_NOT_AVAILABLE |
| * SatelliteResult:SATELLITE_RESULT_REQUEST_NOT_SUPPORTED |
| */ |
| public void requestIsSatelliteEnabledForCarrier(@NonNull int simLogicalSlotIndex, |
| @NonNull IIntegerConsumer resultCallback, @NonNull IBooleanConsumer callback) { |
| // stub implementation |
| } |
| |
| /** |
| * Request to get the signal strength of the satellite connection. |
| * |
| * @param resultCallback The {@link SatelliteError} result of the operation. |
| * @param callback The callback to handle the NTN signal strength changed event. |
| */ |
| public void requestSignalStrength(@NonNull IIntegerConsumer resultCallback, |
| INtnSignalStrengthConsumer callback) { |
| // stub implementation |
| } |
| |
| /** |
| * Requests to deliver signal strength changed events through the |
| * {@link ISatelliteListener#onNtnSignalStrengthChanged(NtnSignalStrength ntnSignalStrength)} |
| * callback. |
| * |
| * @param resultCallback The {@link SatelliteError} result of the operation. |
| */ |
| public void startSendingNtnSignalStrength(@NonNull IIntegerConsumer resultCallback) { |
| // stub implementation |
| } |
| |
| /** |
| * Requests to stop signal strength changed events |
| * |
| * @param resultCallback The {@link SatelliteError} result of the operation. |
| */ |
| public void stopSendingNtnSignalStrength(@NonNull IIntegerConsumer resultCallback){ |
| // stub implementation |
| } |
| |
| /** |
| * Requests to abort sending satellite datagrams |
| * |
| * @param resultCallback The {@link SatelliteError} result of the operation. |
| */ |
| public void abortSendingSatelliteDatagrams(@NonNull IIntegerConsumer resultCallback){ |
| // stub implementation |
| } |
| } |