Merge "Update satellite APIs from feedback" into udc-dev
This commit is contained in:
@@ -21,13 +21,6 @@ package android.telephony.satellite;
|
||||
* @hide
|
||||
*/
|
||||
oneway interface ISatelliteStateCallback {
|
||||
/**
|
||||
* Indicates that the satellite has pending datagrams for the device to be pulled.
|
||||
*
|
||||
* @param count Number of pending datagrams.
|
||||
*/
|
||||
void onPendingDatagramCount(in int count);
|
||||
|
||||
/**
|
||||
* Indicates that the satellite modem state has changed.
|
||||
*
|
||||
|
||||
@@ -22,7 +22,7 @@ import android.telephony.satellite.PointingInfo;
|
||||
* Interface for position update and datagram transfer state change callback.
|
||||
* @hide
|
||||
*/
|
||||
oneway interface ISatellitePositionUpdateCallback {
|
||||
oneway interface ISatelliteTransmissionUpdateCallback {
|
||||
/**
|
||||
* Called when satellite datagram transfer state changed.
|
||||
*
|
||||
@@ -30,31 +30,12 @@ public final class PointingInfo implements Parcelable {
|
||||
/** Satellite elevation in degrees */
|
||||
private float mSatelliteElevationDegrees;
|
||||
|
||||
/** Antenna azimuth in degrees */
|
||||
private float mAntennaAzimuthDegrees;
|
||||
|
||||
/**
|
||||
* Angle of rotation about the x axis. This value represents the angle between a plane
|
||||
* parallel to the device's screen and a plane parallel to the ground.
|
||||
*/
|
||||
private float mAntennaPitchDegrees;
|
||||
|
||||
/**
|
||||
* Angle of rotation about the y axis. This value represents the angle between a plane
|
||||
* perpendicular to the device's screen and a plane parallel to the ground.
|
||||
*/
|
||||
private float mAntennaRollDegrees;
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
public PointingInfo(float satelliteAzimuthDegrees, float satelliteElevationDegrees,
|
||||
float antennaAzimuthDegrees, float antennaPitchDegrees, float antennaRollDegrees) {
|
||||
public PointingInfo(float satelliteAzimuthDegrees, float satelliteElevationDegrees) {
|
||||
mSatelliteAzimuthDegrees = satelliteAzimuthDegrees;
|
||||
mSatelliteElevationDegrees = satelliteElevationDegrees;
|
||||
mAntennaAzimuthDegrees = antennaAzimuthDegrees;
|
||||
mAntennaPitchDegrees = antennaPitchDegrees;
|
||||
mAntennaRollDegrees = antennaRollDegrees;
|
||||
}
|
||||
|
||||
private PointingInfo(Parcel in) {
|
||||
@@ -70,9 +51,6 @@ public final class PointingInfo implements Parcelable {
|
||||
public void writeToParcel(@NonNull Parcel out, int flags) {
|
||||
out.writeFloat(mSatelliteAzimuthDegrees);
|
||||
out.writeFloat(mSatelliteElevationDegrees);
|
||||
out.writeFloat(mAntennaAzimuthDegrees);
|
||||
out.writeFloat(mAntennaPitchDegrees);
|
||||
out.writeFloat(mAntennaRollDegrees);
|
||||
}
|
||||
|
||||
public static final @android.annotation.NonNull Creator<PointingInfo> CREATOR =
|
||||
@@ -99,18 +77,6 @@ public final class PointingInfo implements Parcelable {
|
||||
|
||||
sb.append("SatelliteElevationDegrees:");
|
||||
sb.append(mSatelliteElevationDegrees);
|
||||
sb.append(",");
|
||||
|
||||
sb.append("AntennaAzimuthDegrees:");
|
||||
sb.append(mAntennaAzimuthDegrees);
|
||||
sb.append(",");
|
||||
|
||||
sb.append("AntennaPitchDegrees:");
|
||||
sb.append(mAntennaPitchDegrees);
|
||||
sb.append(",");
|
||||
|
||||
sb.append("AntennaRollDegrees:");
|
||||
sb.append(mAntennaRollDegrees);
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
@@ -122,23 +88,8 @@ public final class PointingInfo implements Parcelable {
|
||||
return mSatelliteElevationDegrees;
|
||||
}
|
||||
|
||||
public float getAntennaAzimuthDegrees() {
|
||||
return mAntennaAzimuthDegrees;
|
||||
}
|
||||
|
||||
public float getAntennaPitchDegrees() {
|
||||
return mAntennaPitchDegrees;
|
||||
}
|
||||
|
||||
public float getAntennaRollDegrees() {
|
||||
return mAntennaRollDegrees;
|
||||
}
|
||||
|
||||
private void readFromParcel(Parcel in) {
|
||||
mSatelliteAzimuthDegrees = in.readFloat();
|
||||
mSatelliteElevationDegrees = in.readFloat();
|
||||
mAntennaAzimuthDegrees = in.readFloat();
|
||||
mAntennaPitchDegrees = in.readFloat();
|
||||
mAntennaRollDegrees = in.readFloat();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,32 +32,25 @@ public final class SatelliteCapabilities implements Parcelable {
|
||||
*/
|
||||
@NonNull @SatelliteManager.NTRadioTechnology private Set<Integer> mSupportedRadioTechnologies;
|
||||
|
||||
/**
|
||||
* Whether satellite modem is always on.
|
||||
* This indicates the power impact of keeping it on is very minimal.
|
||||
*/
|
||||
private boolean mIsAlwaysOn;
|
||||
|
||||
/**
|
||||
* Whether UE needs to point to a satellite to send and receive data.
|
||||
*/
|
||||
private boolean mNeedsPointingToSatellite;
|
||||
private boolean mIsPointingRequired;
|
||||
|
||||
/**
|
||||
* Whether UE needs a separate SIM profile to communicate with the satellite network.
|
||||
* The maximum number of bytes per datagram that can be sent over satellite.
|
||||
*/
|
||||
private boolean mNeedsSeparateSimProfile;
|
||||
private int mMaxBytesPerOutgoingDatagram;
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
public SatelliteCapabilities(Set<Integer> supportedRadioTechnologies, boolean isAlwaysOn,
|
||||
boolean needsPointingToSatellite, boolean needsSeparateSimProfile) {
|
||||
public SatelliteCapabilities(Set<Integer> supportedRadioTechnologies,
|
||||
boolean isPointingRequired, int maxBytesPerOutgoingDatagram) {
|
||||
mSupportedRadioTechnologies = supportedRadioTechnologies == null
|
||||
? new HashSet<>() : supportedRadioTechnologies;
|
||||
mIsAlwaysOn = isAlwaysOn;
|
||||
mNeedsPointingToSatellite = needsPointingToSatellite;
|
||||
mNeedsSeparateSimProfile = needsSeparateSimProfile;
|
||||
mIsPointingRequired = isPointingRequired;
|
||||
mMaxBytesPerOutgoingDatagram = maxBytesPerOutgoingDatagram;
|
||||
}
|
||||
|
||||
private SatelliteCapabilities(Parcel in) {
|
||||
@@ -80,9 +73,8 @@ public final class SatelliteCapabilities implements Parcelable {
|
||||
out.writeInt(0);
|
||||
}
|
||||
|
||||
out.writeBoolean(mIsAlwaysOn);
|
||||
out.writeBoolean(mNeedsPointingToSatellite);
|
||||
out.writeBoolean(mNeedsSeparateSimProfile);
|
||||
out.writeBoolean(mIsPointingRequired);
|
||||
out.writeInt(mMaxBytesPerOutgoingDatagram);
|
||||
}
|
||||
|
||||
@NonNull public static final Creator<SatelliteCapabilities> CREATOR = new Creator<>() {
|
||||
@@ -111,16 +103,12 @@ public final class SatelliteCapabilities implements Parcelable {
|
||||
sb.append("none,");
|
||||
}
|
||||
|
||||
sb.append("isAlwaysOn:");
|
||||
sb.append(mIsAlwaysOn);
|
||||
sb.append("isPointingRequired:");
|
||||
sb.append(mIsPointingRequired);
|
||||
sb.append(",");
|
||||
|
||||
sb.append("needsPointingToSatellite:");
|
||||
sb.append(mNeedsPointingToSatellite);
|
||||
sb.append(",");
|
||||
|
||||
sb.append("needsSeparateSimProfile:");
|
||||
sb.append(mNeedsSeparateSimProfile);
|
||||
sb.append("maxBytesPerOutgoingDatagram");
|
||||
sb.append(mMaxBytesPerOutgoingDatagram);
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
@@ -132,34 +120,23 @@ public final class SatelliteCapabilities implements Parcelable {
|
||||
return mSupportedRadioTechnologies;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get whether the satellite modem is always on.
|
||||
* This indicates the power impact of keeping it on is very minimal.
|
||||
*
|
||||
* @return {@code true} if the satellite modem is always on and {@code false} otherwise.
|
||||
*/
|
||||
public boolean isAlwaysOn() {
|
||||
return mIsAlwaysOn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get whether UE needs to point to a satellite to send and receive data.
|
||||
*
|
||||
* @return {@code true} if UE needs to pointing to a satellite to send and receive data and
|
||||
* @return {@code true} if UE needs to point to a satellite to send and receive data and
|
||||
* {@code false} otherwise.
|
||||
*/
|
||||
public boolean needsPointingToSatellite() {
|
||||
return mNeedsPointingToSatellite;
|
||||
public boolean isPointingRequired() {
|
||||
return mIsPointingRequired;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get whether UE needs a separate SIM profile to communicate with the satellite network.
|
||||
* The maximum number of bytes per datagram that can be sent over satellite.
|
||||
*
|
||||
* @return {@code true} if UE needs a separate SIM profile to comunicate with the satellite
|
||||
* network and {@code false} otherwise.
|
||||
* @return The maximum number of bytes per datagram that can be sent over satellite.
|
||||
*/
|
||||
public boolean needsSeparateSimProfile() {
|
||||
return mNeedsSeparateSimProfile;
|
||||
public int getMaxBytesPerOutgoingDatagram() {
|
||||
return mMaxBytesPerOutgoingDatagram;
|
||||
}
|
||||
|
||||
private void readFromParcel(Parcel in) {
|
||||
@@ -171,8 +148,7 @@ public final class SatelliteCapabilities implements Parcelable {
|
||||
}
|
||||
}
|
||||
|
||||
mIsAlwaysOn = in.readBoolean();
|
||||
mNeedsPointingToSatellite = in.readBoolean();
|
||||
mNeedsSeparateSimProfile = in.readBoolean();
|
||||
mIsPointingRequired = in.readBoolean();
|
||||
mMaxBytesPerOutgoingDatagram = in.readInt();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package android.telephony.satellite;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
|
||||
@@ -28,7 +27,7 @@ public final class SatelliteDatagram implements Parcelable {
|
||||
/**
|
||||
* Datagram to be sent or received over satellite.
|
||||
*/
|
||||
private byte[] mData;
|
||||
@NonNull private byte[] mData;
|
||||
|
||||
/**
|
||||
* @hide
|
||||
@@ -51,8 +50,8 @@ public final class SatelliteDatagram implements Parcelable {
|
||||
out.writeByteArray(mData);
|
||||
}
|
||||
|
||||
public static final @android.annotation.NonNull Creator<SatelliteDatagram> CREATOR =
|
||||
new Creator<SatelliteDatagram>() {
|
||||
@NonNull public static final Creator<SatelliteDatagram> CREATOR =
|
||||
new Creator<>() {
|
||||
@Override
|
||||
public SatelliteDatagram createFromParcel(Parcel in) {
|
||||
return new SatelliteDatagram(in);
|
||||
@@ -64,8 +63,7 @@ public final class SatelliteDatagram implements Parcelable {
|
||||
}
|
||||
};
|
||||
|
||||
@Nullable
|
||||
public byte[] getSatelliteDatagram() {
|
||||
@NonNull public byte[] getSatelliteDatagram() {
|
||||
return mData;
|
||||
}
|
||||
|
||||
|
||||
@@ -17,48 +17,18 @@
|
||||
package android.telephony.satellite;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.os.Binder;
|
||||
|
||||
import com.android.internal.telephony.ILongConsumer;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
/**
|
||||
* A callback class for listening to satellite datagrams.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public class SatelliteDatagramCallback {
|
||||
private final CallbackBinder mBinder = new CallbackBinder(this);
|
||||
|
||||
private static class CallbackBinder extends ISatelliteDatagramCallback.Stub {
|
||||
private final SatelliteDatagramCallback mLocalCallback;
|
||||
private Executor mExecutor;
|
||||
|
||||
private CallbackBinder(SatelliteDatagramCallback localCallback) {
|
||||
mLocalCallback = localCallback;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSatelliteDatagramReceived(long datagramId,
|
||||
@NonNull SatelliteDatagram datagram, int pendingCount,
|
||||
@NonNull ILongConsumer callback) {
|
||||
final long callingIdentity = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mExecutor.execute(() -> mLocalCallback.onSatelliteDatagramReceived(datagramId,
|
||||
datagram, pendingCount, callback));
|
||||
} finally {
|
||||
restoreCallingIdentity(callingIdentity);
|
||||
}
|
||||
}
|
||||
|
||||
private void setExecutor(Executor executor) {
|
||||
mExecutor = executor;
|
||||
}
|
||||
}
|
||||
|
||||
public interface SatelliteDatagramCallback {
|
||||
/**
|
||||
* Called when there is an incoming datagram to be received.
|
||||
*
|
||||
* @param datagramId An id that uniquely identifies incoming datagram.
|
||||
* @param datagram Datagram to be received over satellite.
|
||||
* @param pendingCount Number of datagrams yet to be received by the app.
|
||||
@@ -66,19 +36,6 @@ public class SatelliteDatagramCallback {
|
||||
* datagramId to Telephony. If the callback is not received within five minutes,
|
||||
* Telephony will resend the datagram.
|
||||
*/
|
||||
public void onSatelliteDatagramReceived(long datagramId, @NonNull SatelliteDatagram datagram,
|
||||
int pendingCount, @NonNull ILongConsumer callback) {
|
||||
// Base Implementation
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
@NonNull
|
||||
final ISatelliteDatagramCallback getBinder() {
|
||||
return mBinder;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public void setExecutor(@NonNull Executor executor) {
|
||||
mBinder.setExecutor(executor);
|
||||
}
|
||||
void onSatelliteDatagramReceived(long datagramId, @NonNull SatelliteDatagram datagram,
|
||||
int pendingCount, @NonNull ILongConsumer callback);
|
||||
}
|
||||
|
||||
@@ -36,12 +36,15 @@ import android.telephony.SubscriptionManager;
|
||||
import android.telephony.TelephonyFrameworkInitializer;
|
||||
|
||||
import com.android.internal.telephony.IIntegerConsumer;
|
||||
import com.android.internal.telephony.ILongConsumer;
|
||||
import com.android.internal.telephony.ITelephony;
|
||||
import com.android.telephony.Rlog;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.time.Duration;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
@@ -55,6 +58,17 @@ import java.util.function.Consumer;
|
||||
public class SatelliteManager {
|
||||
private static final String TAG = "SatelliteManager";
|
||||
|
||||
private static final ConcurrentHashMap<SatelliteDatagramCallback, ISatelliteDatagramCallback>
|
||||
sSatelliteDatagramCallbackMap = new ConcurrentHashMap<>();
|
||||
private static final ConcurrentHashMap<SatelliteProvisionStateCallback,
|
||||
ISatelliteProvisionStateCallback> sSatelliteProvisionStateCallbackMap =
|
||||
new ConcurrentHashMap<>();
|
||||
private static final ConcurrentHashMap<SatelliteStateCallback, ISatelliteStateCallback>
|
||||
sSatelliteStateCallbackMap = new ConcurrentHashMap<>();
|
||||
private static final ConcurrentHashMap<SatelliteTransmissionUpdateCallback,
|
||||
ISatelliteTransmissionUpdateCallback> sSatelliteTransmissionUpdateCallbackMap =
|
||||
new ConcurrentHashMap<>();
|
||||
|
||||
private final int mSubId;
|
||||
|
||||
/**
|
||||
@@ -66,6 +80,7 @@ public class SatelliteManager {
|
||||
* Create an instance of the SatelliteManager.
|
||||
*
|
||||
* @param context The context the SatelliteManager belongs to.
|
||||
* @hide
|
||||
*/
|
||||
public SatelliteManager(@Nullable Context context) {
|
||||
this(context, SubscriptionManager.DEFAULT_SUBSCRIPTION_ID);
|
||||
@@ -116,7 +131,7 @@ public class SatelliteManager {
|
||||
|
||||
/**
|
||||
* Bundle key to get the response from
|
||||
* {@link #requestIsSatelliteDemoModeEnabled(Executor, OutcomeReceiver)}.
|
||||
* {@link #requestIsDemoModeEnabled(Executor, OutcomeReceiver)}.
|
||||
* @hide
|
||||
*/
|
||||
public static final String KEY_DEMO_MODE_ENABLED = "demo_mode_enabled";
|
||||
@@ -135,14 +150,6 @@ public class SatelliteManager {
|
||||
*/
|
||||
public static final String KEY_SATELLITE_CAPABILITIES = "satellite_capabilities";
|
||||
|
||||
/**
|
||||
* Bundle key to get the response from
|
||||
* {@link #requestMaxSizePerSendingDatagram(Executor, OutcomeReceiver)} .
|
||||
* @hide
|
||||
*/
|
||||
public static final String KEY_MAX_CHARACTERS_PER_SATELLITE_TEXT =
|
||||
"max_characters_per_satellite_text";
|
||||
|
||||
/**
|
||||
* Bundle key to get the response from
|
||||
* {@link #requestIsSatelliteProvisioned(Executor, OutcomeReceiver)}.
|
||||
@@ -319,23 +326,25 @@ public class SatelliteManager {
|
||||
public @interface NTRadioTechnology {}
|
||||
|
||||
/**
|
||||
* Request to enable or disable the satellite modem. If the satellite modem is enabled, this
|
||||
* will also disable the cellular modem, and if the satellite modem is disabled, this will also
|
||||
* re-enable the cellular modem.
|
||||
* 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 enable {@code true} to enable the satellite modem and {@code false} to disable.
|
||||
* @param enableSatellite {@code true} to enable the satellite modem and
|
||||
* {@code false} to disable.
|
||||
* @param enableDemoMode {@code true} to enable demo mode and {@code false} to disable.
|
||||
* @param executor The executor on which the error code listener will be called.
|
||||
* @param errorCodeListener Listener for the {@link SatelliteError} result of the operation.
|
||||
* @param resultListener Listener for the {@link SatelliteError} result of the operation.
|
||||
*
|
||||
* @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 requestSatelliteEnabled(
|
||||
boolean enable, @NonNull @CallbackExecutor Executor executor,
|
||||
@NonNull Consumer<Integer> errorCodeListener) {
|
||||
public void requestSatelliteEnabled(boolean enableSatellite, boolean enableDemoMode,
|
||||
@NonNull @CallbackExecutor Executor executor,
|
||||
@SatelliteError @NonNull Consumer<Integer> resultListener) {
|
||||
Objects.requireNonNull(executor);
|
||||
Objects.requireNonNull(errorCodeListener);
|
||||
Objects.requireNonNull(resultListener);
|
||||
|
||||
try {
|
||||
ITelephony telephony = getITelephony();
|
||||
@@ -344,10 +353,11 @@ public class SatelliteManager {
|
||||
@Override
|
||||
public void accept(int result) {
|
||||
executor.execute(() -> Binder.withCleanCallingIdentity(
|
||||
() -> errorCodeListener.accept(result)));
|
||||
() -> resultListener.accept(result)));
|
||||
}
|
||||
};
|
||||
telephony.requestSatelliteEnabled(mSubId, enable, errorCallback);
|
||||
telephony.requestSatelliteEnabled(mSubId, enableSatellite, enableDemoMode,
|
||||
errorCallback);
|
||||
} else {
|
||||
throw new IllegalStateException("telephony service is null.");
|
||||
}
|
||||
@@ -411,51 +421,14 @@ public class SatelliteManager {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Request to enable or disable the satellite service demo mode.
|
||||
*
|
||||
* @param enable {@code true} to enable the satellite demo mode and {@code false} to disable.
|
||||
* @param executor The executor on which the error code listener will be called.
|
||||
* @param errorCodeListener Listener for the {@link SatelliteError} result of the operation.
|
||||
*
|
||||
* @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 requestSatelliteDemoModeEnabled(boolean enable,
|
||||
@NonNull @CallbackExecutor Executor executor,
|
||||
@NonNull Consumer<Integer> errorCodeListener) {
|
||||
Objects.requireNonNull(executor);
|
||||
Objects.requireNonNull(errorCodeListener);
|
||||
|
||||
try {
|
||||
ITelephony telephony = getITelephony();
|
||||
if (telephony != null) {
|
||||
IIntegerConsumer errorCallback = new IIntegerConsumer.Stub() {
|
||||
@Override
|
||||
public void accept(int result) {
|
||||
executor.execute(() -> Binder.withCleanCallingIdentity(
|
||||
() -> errorCodeListener.accept(result)));
|
||||
}
|
||||
};
|
||||
telephony.requestSatelliteDemoModeEnabled(mSubId, enable, errorCallback);
|
||||
} else {
|
||||
throw new IllegalStateException("telephony service is null.");
|
||||
}
|
||||
} catch (RemoteException ex) {
|
||||
Rlog.e(TAG, "requestSatelliteDemoModeEnabled() RemoteException: ", ex);
|
||||
ex.rethrowFromSystemServer();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Request to get whether the satellite service demo mode is enabled.
|
||||
*
|
||||
* @param executor The executor on which the callback will be called.
|
||||
* @param callback The callback object to which the result will be delivered.
|
||||
* If the request is successful, {@link OutcomeReceiver#onResult(Object)}
|
||||
* will return a {@code boolean} with value {@code true} if the satellite
|
||||
* demo mode is enabled and {@code false} otherwise.
|
||||
* will return a {@code boolean} with value {@code true} if demo mode is enabled
|
||||
* and {@code false} otherwise.
|
||||
* If the request is not successful, {@link OutcomeReceiver#onError(Throwable)}
|
||||
* will return a {@link SatelliteException} with the {@link SatelliteError}.
|
||||
*
|
||||
@@ -463,7 +436,7 @@ public class SatelliteManager {
|
||||
* @throws IllegalStateException if the Telephony process is not currently available.
|
||||
*/
|
||||
@RequiresPermission(Manifest.permission.SATELLITE_COMMUNICATION)
|
||||
public void requestIsSatelliteDemoModeEnabled(@NonNull @CallbackExecutor Executor executor,
|
||||
public void requestIsDemoModeEnabled(@NonNull @CallbackExecutor Executor executor,
|
||||
@NonNull OutcomeReceiver<Boolean, SatelliteException> callback) {
|
||||
Objects.requireNonNull(executor);
|
||||
Objects.requireNonNull(callback);
|
||||
@@ -492,12 +465,12 @@ public class SatelliteManager {
|
||||
}
|
||||
}
|
||||
};
|
||||
telephony.requestIsSatelliteDemoModeEnabled(mSubId, receiver);
|
||||
telephony.requestIsDemoModeEnabled(mSubId, receiver);
|
||||
} else {
|
||||
throw new IllegalStateException("telephony service is null.");
|
||||
}
|
||||
} catch (RemoteException ex) {
|
||||
loge("requestIsSatelliteDemoModeEnabled() RemoteException: " + ex);
|
||||
loge("requestIsDemoModeEnabled() RemoteException: " + ex);
|
||||
ex.rethrowFromSystemServer();
|
||||
}
|
||||
}
|
||||
@@ -742,145 +715,117 @@ public class SatelliteManager {
|
||||
public @interface DatagramType {}
|
||||
|
||||
/**
|
||||
* Start receiving satellite position updates.
|
||||
* Start receiving satellite transmission updates.
|
||||
* This can be called by the pointing UI when the user starts pointing to the satellite.
|
||||
* Modem should continue to report the pointing input as the device or satellite moves.
|
||||
* Satellite position updates are started only on {@link #SATELLITE_ERROR_NONE}.
|
||||
* Satellite transmission updates are started only on {@link #SATELLITE_ERROR_NONE}.
|
||||
* All other results indicate that this operation failed.
|
||||
* Once satellite position updates begin, datagram transfer state updates will be sent
|
||||
* through {@link SatellitePositionUpdateCallback}.
|
||||
* Once satellite transmission updates begin, position and datagram transfer state updates
|
||||
* will be sent through {@link SatelliteTransmissionUpdateCallback}.
|
||||
*
|
||||
* @param executor The executor on which the callback and error code listener will be called.
|
||||
* @param errorCodeListener Listener for the {@link SatelliteError} result of the operation.
|
||||
* @param callback The callback to notify of changes in satellite position.
|
||||
* @param resultListener Listener for the {@link SatelliteError} result of the operation.
|
||||
* @param callback The callback to notify of satellite transmission updates.
|
||||
*
|
||||
* @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 startSatellitePositionUpdates(@NonNull @CallbackExecutor Executor executor,
|
||||
@NonNull Consumer<Integer> errorCodeListener,
|
||||
@NonNull SatellitePositionUpdateCallback callback) {
|
||||
public void startSatelliteTransmissionUpdates(@NonNull @CallbackExecutor Executor executor,
|
||||
@SatelliteError @NonNull Consumer<Integer> resultListener,
|
||||
@NonNull SatelliteTransmissionUpdateCallback callback) {
|
||||
Objects.requireNonNull(executor);
|
||||
Objects.requireNonNull(errorCodeListener);
|
||||
Objects.requireNonNull(resultListener);
|
||||
Objects.requireNonNull(callback);
|
||||
|
||||
try {
|
||||
ITelephony telephony = getITelephony();
|
||||
if (telephony != null) {
|
||||
callback.setExecutor(executor);
|
||||
IIntegerConsumer errorCallback = new IIntegerConsumer.Stub() {
|
||||
@Override
|
||||
public void accept(int result) {
|
||||
executor.execute(() -> Binder.withCleanCallingIdentity(
|
||||
() -> errorCodeListener.accept(result)));
|
||||
() -> resultListener.accept(result)));
|
||||
}
|
||||
};
|
||||
telephony.startSatellitePositionUpdates(
|
||||
mSubId, errorCallback, callback.getBinder());
|
||||
ISatelliteTransmissionUpdateCallback internalCallback =
|
||||
new ISatelliteTransmissionUpdateCallback.Stub() {
|
||||
@Override
|
||||
public void onDatagramTransferStateChanged(int state,
|
||||
int sendPendingCount, int receivePendingCount, int errorCode) {
|
||||
executor.execute(() -> Binder.withCleanCallingIdentity(
|
||||
() -> callback.onDatagramTransferStateChanged(
|
||||
state, sendPendingCount, receivePendingCount,
|
||||
errorCode)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSatellitePositionChanged(PointingInfo pointingInfo) {
|
||||
executor.execute(() -> Binder.withCleanCallingIdentity(
|
||||
() -> callback.onSatellitePositionChanged(pointingInfo)));
|
||||
}
|
||||
};
|
||||
sSatelliteTransmissionUpdateCallbackMap.put(callback, internalCallback);
|
||||
telephony.startSatelliteTransmissionUpdates(mSubId, errorCallback,
|
||||
internalCallback);
|
||||
} else {
|
||||
throw new IllegalStateException("telephony service is null.");
|
||||
}
|
||||
} catch (RemoteException ex) {
|
||||
loge("startSatellitePositionUpdates() RemoteException: " + ex);
|
||||
loge("startSatelliteTransmissionUpdates() RemoteException: " + ex);
|
||||
ex.rethrowFromSystemServer();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Stop receiving satellite position updates.
|
||||
* Stop receiving satellite transmission updates.
|
||||
* This can be called by the pointing UI when the user stops pointing to the satellite.
|
||||
* Satellite position updates are stopped and the callback is unregistered only on
|
||||
* Satellite transmission updates are stopped and the callback is unregistered only on
|
||||
* {@link #SATELLITE_ERROR_NONE}. All other results that this operation failed.
|
||||
*
|
||||
* @param callback The callback that was passed to
|
||||
* {@link #startSatellitePositionUpdates(Executor, Consumer, SatellitePositionUpdateCallback)}.
|
||||
* @param callback The callback that was passed to {@link
|
||||
* #startSatelliteTransmissionUpdates(Executor, Consumer, SatelliteTransmissionUpdateCallback)}.
|
||||
* @param executor The executor on which the error code listener will be called.
|
||||
* @param errorCodeListener Listener for the {@link SatelliteError} result of the operation.
|
||||
* @param resultListener Listener for the {@link SatelliteError} result of the operation.
|
||||
*
|
||||
* @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 stopSatellitePositionUpdates(@NonNull SatellitePositionUpdateCallback callback,
|
||||
public void stopSatelliteTransmissionUpdates(
|
||||
@NonNull SatelliteTransmissionUpdateCallback callback,
|
||||
@NonNull @CallbackExecutor Executor executor,
|
||||
@NonNull Consumer<Integer> errorCodeListener) {
|
||||
@SatelliteError @NonNull Consumer<Integer> resultListener) {
|
||||
Objects.requireNonNull(callback);
|
||||
Objects.requireNonNull(executor);
|
||||
Objects.requireNonNull(errorCodeListener);
|
||||
Objects.requireNonNull(resultListener);
|
||||
ISatelliteTransmissionUpdateCallback internalCallback =
|
||||
sSatelliteTransmissionUpdateCallbackMap.remove(callback);
|
||||
|
||||
try {
|
||||
ITelephony telephony = getITelephony();
|
||||
if (telephony != null) {
|
||||
IIntegerConsumer errorCallback = new IIntegerConsumer.Stub() {
|
||||
@Override
|
||||
public void accept(int result) {
|
||||
executor.execute(() -> Binder.withCleanCallingIdentity(
|
||||
() -> errorCodeListener.accept(result)));
|
||||
}
|
||||
};
|
||||
telephony.stopSatellitePositionUpdates(mSubId, errorCallback,
|
||||
callback.getBinder());
|
||||
// TODO: Notify SmsHandler that pointing UI stopped
|
||||
} else {
|
||||
throw new IllegalStateException("telephony service is null.");
|
||||
}
|
||||
} catch (RemoteException ex) {
|
||||
loge("stopSatellitePositionUpdates() RemoteException: " + ex);
|
||||
ex.rethrowFromSystemServer();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Request to get the maximum number of bytes per datagram that can be sent to satellite.
|
||||
*
|
||||
* @param executor The executor on which the callback will be called.
|
||||
* @param callback The callback object to which the result will be delivered.
|
||||
* If the request is successful, {@link OutcomeReceiver#onResult(Object)}
|
||||
* will return the maximum number of bytes per datagram that can be sent to
|
||||
* satellite.
|
||||
* If the request is not successful, {@link OutcomeReceiver#onError(Throwable)}
|
||||
*
|
||||
* @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 requestMaxSizePerSendingDatagram(
|
||||
@NonNull @CallbackExecutor Executor executor,
|
||||
@NonNull OutcomeReceiver<Integer, SatelliteException> callback) {
|
||||
Objects.requireNonNull(executor);
|
||||
Objects.requireNonNull(callback);
|
||||
|
||||
try {
|
||||
ITelephony telephony = getITelephony();
|
||||
if (telephony != null) {
|
||||
ResultReceiver receiver = new ResultReceiver(null) {
|
||||
@Override
|
||||
protected void onReceiveResult(int resultCode, Bundle resultData) {
|
||||
if (resultCode == SATELLITE_ERROR_NONE) {
|
||||
if (resultData.containsKey(KEY_MAX_CHARACTERS_PER_SATELLITE_TEXT)) {
|
||||
int maxCharacters =
|
||||
resultData.getInt(KEY_MAX_CHARACTERS_PER_SATELLITE_TEXT);
|
||||
executor.execute(() -> Binder.withCleanCallingIdentity(() ->
|
||||
callback.onResult(maxCharacters)));
|
||||
} else {
|
||||
loge("KEY_MAX_CHARACTERS_PER_SATELLITE_TEXT does not exist.");
|
||||
executor.execute(() -> Binder.withCleanCallingIdentity(() ->
|
||||
callback.onError(
|
||||
new SatelliteException(SATELLITE_REQUEST_FAILED))));
|
||||
}
|
||||
} else {
|
||||
executor.execute(() -> Binder.withCleanCallingIdentity(() ->
|
||||
callback.onError(new SatelliteException(resultCode))));
|
||||
if (internalCallback != null) {
|
||||
IIntegerConsumer errorCallback = new IIntegerConsumer.Stub() {
|
||||
@Override
|
||||
public void accept(int result) {
|
||||
executor.execute(() -> Binder.withCleanCallingIdentity(
|
||||
() -> resultListener.accept(result)));
|
||||
}
|
||||
}
|
||||
};
|
||||
telephony.requestMaxSizePerSendingDatagram(mSubId, receiver);
|
||||
};
|
||||
telephony.stopSatelliteTransmissionUpdates(mSubId, errorCallback,
|
||||
internalCallback);
|
||||
// TODO: Notify SmsHandler that pointing UI stopped
|
||||
} else {
|
||||
loge("stopSatelliteTransmissionUpdates: No internal callback.");
|
||||
executor.execute(() -> Binder.withCleanCallingIdentity(
|
||||
() -> resultListener.accept(SATELLITE_INVALID_ARGUMENTS)));
|
||||
}
|
||||
} else {
|
||||
throw new IllegalStateException("telephony service is null.");
|
||||
}
|
||||
} catch (RemoteException ex) {
|
||||
loge("requestMaxCharactersPerSatelliteTextMessage() RemoteException: " + ex);
|
||||
loge("stopSatelliteTransmissionUpdates() RemoteException: " + ex);
|
||||
ex.rethrowFromSystemServer();
|
||||
}
|
||||
}
|
||||
@@ -891,23 +836,24 @@ public class SatelliteManager {
|
||||
*
|
||||
* @param token The token to be used as a unique identifier for provisioning with satellite
|
||||
* gateway.
|
||||
* @param regionId The region ID for the device's current location.
|
||||
* @param cancellationSignal The optional signal used by the caller to cancel the provision
|
||||
* request. Even when the cancellation is signaled, Telephony will
|
||||
* still trigger the callback to return the result of this request.
|
||||
* @param executor The executor on which the error code listener will be called.
|
||||
* @param errorCodeListener Listener for the {@link SatelliteError} result of the operation.
|
||||
* @param resultListener Listener for the {@link SatelliteError} result of the operation.
|
||||
*
|
||||
* @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 provisionSatelliteService(@NonNull String token,
|
||||
public void provisionSatelliteService(@NonNull String token, @NonNull String regionId,
|
||||
@Nullable CancellationSignal cancellationSignal,
|
||||
@NonNull @CallbackExecutor Executor executor,
|
||||
@SatelliteError @NonNull Consumer<Integer> errorCodeListener) {
|
||||
@SatelliteError @NonNull Consumer<Integer> resultListener) {
|
||||
Objects.requireNonNull(token);
|
||||
Objects.requireNonNull(executor);
|
||||
Objects.requireNonNull(errorCodeListener);
|
||||
Objects.requireNonNull(resultListener);
|
||||
|
||||
ICancellationSignal cancelRemote = null;
|
||||
try {
|
||||
@@ -917,10 +863,11 @@ public class SatelliteManager {
|
||||
@Override
|
||||
public void accept(int result) {
|
||||
executor.execute(() -> Binder.withCleanCallingIdentity(
|
||||
() -> errorCodeListener.accept(result)));
|
||||
() -> resultListener.accept(result)));
|
||||
}
|
||||
};
|
||||
cancelRemote = telephony.provisionSatelliteService(mSubId, token, errorCallback);
|
||||
cancelRemote = telephony.provisionSatelliteService(mSubId, token, regionId,
|
||||
errorCallback);
|
||||
} else {
|
||||
throw new IllegalStateException("telephony service is null.");
|
||||
}
|
||||
@@ -942,7 +889,7 @@ public class SatelliteManager {
|
||||
* {@link #provisionSatelliteService(String, CancellationSignal, Executor, Consumer)}.
|
||||
*
|
||||
* @param token The token of the device/subscription to be deprovisioned.
|
||||
* @param errorCodeListener Listener for the {@link SatelliteError} result of the operation.
|
||||
* @param resultListener Listener for the {@link SatelliteError} result of the operation.
|
||||
*
|
||||
* @throws SecurityException if the caller doesn't have required permission.
|
||||
* @throws IllegalStateException if the Telephony process is not currently available.
|
||||
@@ -950,10 +897,10 @@ public class SatelliteManager {
|
||||
@RequiresPermission(Manifest.permission.SATELLITE_COMMUNICATION)
|
||||
public void deprovisionSatelliteService(@NonNull String token,
|
||||
@NonNull @CallbackExecutor Executor executor,
|
||||
@SatelliteError @NonNull Consumer<Integer> errorCodeListener) {
|
||||
@SatelliteError @NonNull Consumer<Integer> resultListener) {
|
||||
Objects.requireNonNull(token);
|
||||
Objects.requireNonNull(executor);
|
||||
Objects.requireNonNull(errorCodeListener);
|
||||
Objects.requireNonNull(resultListener);
|
||||
|
||||
try {
|
||||
ITelephony telephony = getITelephony();
|
||||
@@ -962,7 +909,7 @@ public class SatelliteManager {
|
||||
@Override
|
||||
public void accept(int result) {
|
||||
executor.execute(() -> Binder.withCleanCallingIdentity(
|
||||
() -> errorCodeListener.accept(result)));
|
||||
() -> resultListener.accept(result)));
|
||||
}
|
||||
};
|
||||
telephony.deprovisionSatelliteService(mSubId, token, errorCallback);
|
||||
@@ -996,9 +943,18 @@ public class SatelliteManager {
|
||||
try {
|
||||
ITelephony telephony = getITelephony();
|
||||
if (telephony != null) {
|
||||
callback.setExecutor(executor);
|
||||
ISatelliteProvisionStateCallback internalCallback =
|
||||
new ISatelliteProvisionStateCallback.Stub() {
|
||||
@Override
|
||||
public void onSatelliteProvisionStateChanged(boolean provisioned) {
|
||||
executor.execute(() -> Binder.withCleanCallingIdentity(
|
||||
() -> callback.onSatelliteProvisionStateChanged(
|
||||
provisioned)));
|
||||
}
|
||||
};
|
||||
sSatelliteProvisionStateCallbackMap.put(callback, internalCallback);
|
||||
return telephony.registerForSatelliteProvisionStateChanged(
|
||||
mSubId, callback.getBinder());
|
||||
mSubId, internalCallback);
|
||||
} else {
|
||||
throw new IllegalStateException("telephony service is null.");
|
||||
}
|
||||
@@ -1023,11 +979,17 @@ public class SatelliteManager {
|
||||
public void unregisterForSatelliteProvisionStateChanged(
|
||||
@NonNull SatelliteProvisionStateCallback callback) {
|
||||
Objects.requireNonNull(callback);
|
||||
ISatelliteProvisionStateCallback internalCallback =
|
||||
sSatelliteProvisionStateCallbackMap.remove(callback);
|
||||
|
||||
try {
|
||||
ITelephony telephony = getITelephony();
|
||||
if (telephony != null) {
|
||||
telephony.unregisterForSatelliteProvisionStateChanged(mSubId, callback.getBinder());
|
||||
if (internalCallback != null) {
|
||||
telephony.unregisterForSatelliteProvisionStateChanged(mSubId, internalCallback);
|
||||
} else {
|
||||
loge("unregisterForSatelliteProvisionStateChanged: No internal callback.");
|
||||
}
|
||||
} else {
|
||||
throw new IllegalStateException("telephony service is null.");
|
||||
}
|
||||
@@ -1112,9 +1074,15 @@ public class SatelliteManager {
|
||||
try {
|
||||
ITelephony telephony = getITelephony();
|
||||
if (telephony != null) {
|
||||
callback.setExecutor(executor);
|
||||
return telephony.registerForSatelliteModemStateChanged(mSubId,
|
||||
callback.getBinder());
|
||||
ISatelliteStateCallback internalCallback = new ISatelliteStateCallback.Stub() {
|
||||
@Override
|
||||
public void onSatelliteModemStateChanged(int state) {
|
||||
executor.execute(() -> Binder.withCleanCallingIdentity(() ->
|
||||
callback.onSatelliteModemStateChanged(state)));
|
||||
}
|
||||
};
|
||||
sSatelliteStateCallbackMap.put(callback, internalCallback);
|
||||
return telephony.registerForSatelliteModemStateChanged(mSubId, internalCallback);
|
||||
} else {
|
||||
throw new IllegalStateException("telephony service is null.");
|
||||
}
|
||||
@@ -1138,11 +1106,16 @@ public class SatelliteManager {
|
||||
@RequiresPermission(Manifest.permission.SATELLITE_COMMUNICATION)
|
||||
public void unregisterForSatelliteModemStateChanged(@NonNull SatelliteStateCallback callback) {
|
||||
Objects.requireNonNull(callback);
|
||||
ISatelliteStateCallback internalCallback = sSatelliteStateCallbackMap.remove(callback);
|
||||
|
||||
try {
|
||||
ITelephony telephony = getITelephony();
|
||||
if (telephony != null) {
|
||||
telephony.unregisterForSatelliteModemStateChanged(mSubId, callback.getBinder());
|
||||
if (internalCallback != null) {
|
||||
telephony.unregisterForSatelliteModemStateChanged(mSubId, internalCallback);
|
||||
} else {
|
||||
loge("unregisterForSatelliteModemStateChanged: No internal callback.");
|
||||
}
|
||||
} else {
|
||||
throw new IllegalStateException("telephony service is null.");
|
||||
}
|
||||
@@ -1155,8 +1128,6 @@ public class SatelliteManager {
|
||||
/**
|
||||
* Register to receive incoming datagrams over satellite.
|
||||
*
|
||||
* @param datagramType datagram type indicating whether the datagram is of type
|
||||
* SOS_SMS or LOCATION_SHARING.
|
||||
* @param executor The executor on which the callback will be called.
|
||||
* @param callback The callback to handle incoming datagrams over satellite.
|
||||
* This callback with be invoked when a new datagram is received from satellite.
|
||||
@@ -1167,7 +1138,7 @@ public class SatelliteManager {
|
||||
* @throws IllegalStateException if the Telephony process is not currently available.
|
||||
*/
|
||||
@RequiresPermission(Manifest.permission.SATELLITE_COMMUNICATION)
|
||||
@SatelliteError public int registerForSatelliteDatagram(@DatagramType int datagramType,
|
||||
@SatelliteError public int registerForSatelliteDatagram(
|
||||
@NonNull @CallbackExecutor Executor executor,
|
||||
@NonNull SatelliteDatagramCallback callback) {
|
||||
Objects.requireNonNull(executor);
|
||||
@@ -1176,9 +1147,19 @@ public class SatelliteManager {
|
||||
try {
|
||||
ITelephony telephony = getITelephony();
|
||||
if (telephony != null) {
|
||||
callback.setExecutor(executor);
|
||||
return telephony.registerForSatelliteDatagram(mSubId, datagramType,
|
||||
callback.getBinder());
|
||||
ISatelliteDatagramCallback internalCallback =
|
||||
new ISatelliteDatagramCallback.Stub() {
|
||||
@Override
|
||||
public void onSatelliteDatagramReceived(long datagramId,
|
||||
@NonNull SatelliteDatagram datagram, int pendingCount,
|
||||
@NonNull ILongConsumer ack) {
|
||||
executor.execute(() -> Binder.withCleanCallingIdentity(
|
||||
() -> callback.onSatelliteDatagramReceived(
|
||||
datagramId, datagram, pendingCount, ack)));
|
||||
}
|
||||
};
|
||||
sSatelliteDatagramCallbackMap.put(callback, internalCallback);
|
||||
return telephony.registerForSatelliteDatagram(mSubId, internalCallback);
|
||||
} else {
|
||||
throw new IllegalStateException("telephony service is null.");
|
||||
}
|
||||
@@ -1194,7 +1175,7 @@ public class SatelliteManager {
|
||||
* If callback was not registered before, the request will be ignored.
|
||||
*
|
||||
* @param callback The callback that was passed to
|
||||
* {@link #registerForSatelliteDatagram(int, Executor, SatelliteDatagramCallback)}.
|
||||
* {@link #registerForSatelliteDatagram(Executor, SatelliteDatagramCallback)}.
|
||||
*
|
||||
* @throws SecurityException if the caller doesn't have required permission.
|
||||
* @throws IllegalStateException if the Telephony process is not currently available.
|
||||
@@ -1202,11 +1183,17 @@ public class SatelliteManager {
|
||||
@RequiresPermission(Manifest.permission.SATELLITE_COMMUNICATION)
|
||||
public void unregisterForSatelliteDatagram(@NonNull SatelliteDatagramCallback callback) {
|
||||
Objects.requireNonNull(callback);
|
||||
ISatelliteDatagramCallback internalCallback =
|
||||
sSatelliteDatagramCallbackMap.remove(callback);
|
||||
|
||||
try {
|
||||
ITelephony telephony = getITelephony();
|
||||
if (telephony != null) {
|
||||
telephony.unregisterForSatelliteDatagram(mSubId, callback.getBinder());
|
||||
if (internalCallback != null) {
|
||||
telephony.unregisterForSatelliteDatagram(mSubId, internalCallback);
|
||||
} else {
|
||||
loge("unregisterForSatelliteDatagram: No internal callback.");
|
||||
}
|
||||
} else {
|
||||
throw new IllegalStateException("telephony service is null.");
|
||||
}
|
||||
@@ -1222,7 +1209,7 @@ public class SatelliteManager {
|
||||
* This method requests modem to check if there are any pending datagrams to be received over
|
||||
* satellite. If there are any incoming datagrams, they will be received via
|
||||
* {@link SatelliteDatagramCallback#onSatelliteDatagramReceived(long, SatelliteDatagram, int,
|
||||
* ISatelliteDatagramReceiverAck)}
|
||||
* ILongConsumer)}
|
||||
*
|
||||
* @param executor The executor on which the result listener will be called.
|
||||
* @param resultListener Listener for the {@link SatelliteError} result of the operation.
|
||||
@@ -1371,9 +1358,8 @@ public class SatelliteManager {
|
||||
}
|
||||
|
||||
/**
|
||||
* Request to get the time after which the satellite will be visible. This is an
|
||||
* {@code int} representing the duration in seconds after which the satellite will be visible.
|
||||
* This will return {@code 0} if the satellite is currently visible.
|
||||
* Request to get the duration in seconds after which the satellite will be visible.
|
||||
* This will be {@link Duration#ZERO} if the satellite is currently visible.
|
||||
*
|
||||
* @param executor The executor on which the callback will be called.
|
||||
* @param callback The callback object to which the result will be delivered.
|
||||
@@ -1387,7 +1373,7 @@ public class SatelliteManager {
|
||||
*/
|
||||
@RequiresPermission(Manifest.permission.SATELLITE_COMMUNICATION)
|
||||
public void requestTimeForNextSatelliteVisibility(@NonNull @CallbackExecutor Executor executor,
|
||||
@NonNull OutcomeReceiver<Integer, SatelliteException> callback) {
|
||||
@NonNull OutcomeReceiver<Duration, SatelliteException> callback) {
|
||||
Objects.requireNonNull(executor);
|
||||
Objects.requireNonNull(callback);
|
||||
|
||||
@@ -1402,7 +1388,8 @@ public class SatelliteManager {
|
||||
int nextVisibilityDuration =
|
||||
resultData.getInt(KEY_SATELLITE_NEXT_VISIBILITY);
|
||||
executor.execute(() -> Binder.withCleanCallingIdentity(() ->
|
||||
callback.onResult(nextVisibilityDuration)));
|
||||
callback.onResult(
|
||||
Duration.ofSeconds(nextVisibilityDuration))));
|
||||
} else {
|
||||
loge("KEY_SATELLITE_NEXT_VISIBILITY does not exist.");
|
||||
executor.execute(() -> Binder.withCleanCallingIdentity(() ->
|
||||
|
||||
@@ -1,104 +0,0 @@
|
||||
/*
|
||||
* 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;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.os.Binder;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
/**
|
||||
* A callback class for monitoring satellite position update and datagram transfer state change
|
||||
* events.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public class SatellitePositionUpdateCallback {
|
||||
private final CallbackBinder mBinder = new CallbackBinder(this);
|
||||
|
||||
private static class CallbackBinder extends ISatellitePositionUpdateCallback.Stub {
|
||||
private final SatellitePositionUpdateCallback mLocalCallback;
|
||||
private Executor mExecutor;
|
||||
|
||||
private CallbackBinder(SatellitePositionUpdateCallback localCallback) {
|
||||
mLocalCallback = localCallback;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSatellitePositionChanged(@NonNull PointingInfo pointingInfo) {
|
||||
final long callingIdentity = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mExecutor.execute(() ->
|
||||
mLocalCallback.onSatellitePositionChanged(pointingInfo));
|
||||
} finally {
|
||||
restoreCallingIdentity(callingIdentity);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDatagramTransferStateChanged(
|
||||
@SatelliteManager.SatelliteDatagramTransferState int state, int sendPendingCount,
|
||||
int receivePendingCount, @SatelliteManager.SatelliteError int errorCode) {
|
||||
final long callingIdentity = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mExecutor.execute(() ->
|
||||
mLocalCallback.onDatagramTransferStateChanged(
|
||||
state, sendPendingCount, receivePendingCount, errorCode));
|
||||
} finally {
|
||||
restoreCallingIdentity(callingIdentity);
|
||||
}
|
||||
}
|
||||
|
||||
private void setExecutor(Executor executor) {
|
||||
mExecutor = executor;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the satellite position changed.
|
||||
*
|
||||
* @param pointingInfo The pointing info containing the satellite location.
|
||||
*/
|
||||
public void onSatellitePositionChanged(@NonNull PointingInfo pointingInfo) {
|
||||
// Base Implementation
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when satellite datagram transfer state changed.
|
||||
*
|
||||
* @param state The new datagram transfer state.
|
||||
* @param sendPendingCount The number of datagrams that are currently being sent.
|
||||
* @param receivePendingCount The number of datagrams that are currently being received.
|
||||
* @param errorCode If datagram transfer failed, the reason for failure.
|
||||
*/
|
||||
public void onDatagramTransferStateChanged(
|
||||
@SatelliteManager.SatelliteDatagramTransferState int state, int sendPendingCount,
|
||||
int receivePendingCount, @SatelliteManager.SatelliteError int errorCode) {
|
||||
// Base Implementation
|
||||
}
|
||||
|
||||
/**@hide*/
|
||||
@NonNull
|
||||
final ISatellitePositionUpdateCallback getBinder() {
|
||||
return mBinder;
|
||||
}
|
||||
|
||||
/**@hide*/
|
||||
public void setExecutor(@NonNull Executor executor) {
|
||||
mBinder.setExecutor(executor);
|
||||
}
|
||||
}
|
||||
@@ -16,61 +16,17 @@
|
||||
|
||||
package android.telephony.satellite;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.os.Binder;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
/**
|
||||
* A callback class for monitoring satellite provision state change events.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public class SatelliteProvisionStateCallback {
|
||||
private final CallbackBinder mBinder = new CallbackBinder(this);
|
||||
|
||||
private static class CallbackBinder extends ISatelliteProvisionStateCallback.Stub {
|
||||
private final SatelliteProvisionStateCallback mLocalCallback;
|
||||
private Executor mExecutor;
|
||||
|
||||
private CallbackBinder(SatelliteProvisionStateCallback localCallback) {
|
||||
mLocalCallback = localCallback;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSatelliteProvisionStateChanged(boolean provisioned) {
|
||||
final long callingIdentity = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mExecutor.execute(() ->
|
||||
mLocalCallback.onSatelliteProvisionStateChanged(provisioned));
|
||||
} finally {
|
||||
restoreCallingIdentity(callingIdentity);
|
||||
}
|
||||
}
|
||||
|
||||
private void setExecutor(Executor executor) {
|
||||
mExecutor = executor;
|
||||
}
|
||||
}
|
||||
|
||||
public interface SatelliteProvisionStateCallback {
|
||||
/**
|
||||
* Called when satellite provision state changes.
|
||||
*
|
||||
* @param provisioned The new provision state. {@code true} means satellite is provisioned
|
||||
* {@code false} means satellite is not provisioned.
|
||||
*/
|
||||
public void onSatelliteProvisionStateChanged(boolean provisioned) {
|
||||
// Base Implementation
|
||||
}
|
||||
|
||||
/**@hide*/
|
||||
@NonNull
|
||||
final ISatelliteProvisionStateCallback getBinder() {
|
||||
return mBinder;
|
||||
}
|
||||
|
||||
/**@hide*/
|
||||
public void setExecutor(@NonNull Executor executor) {
|
||||
mBinder.setExecutor(executor);
|
||||
}
|
||||
void onSatelliteProvisionStateChanged(boolean provisioned);
|
||||
}
|
||||
|
||||
@@ -16,80 +16,15 @@
|
||||
|
||||
package android.telephony.satellite;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.os.Binder;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
/**
|
||||
* A callback class for monitoring satellite modem state change events.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public class SatelliteStateCallback {
|
||||
private final CallbackBinder mBinder = new CallbackBinder(this);
|
||||
|
||||
private static class CallbackBinder extends ISatelliteStateCallback.Stub {
|
||||
private final SatelliteStateCallback mLocalCallback;
|
||||
private Executor mExecutor;
|
||||
|
||||
private CallbackBinder(SatelliteStateCallback localCallback) {
|
||||
mLocalCallback = localCallback;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSatelliteModemStateChanged(@SatelliteManager.SatelliteModemState int state) {
|
||||
final long callingIdentity = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mExecutor.execute(() ->
|
||||
mLocalCallback.onSatelliteModemStateChanged(state));
|
||||
} finally {
|
||||
restoreCallingIdentity(callingIdentity);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPendingDatagramCount(int count) {
|
||||
final long callingIdentity = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mExecutor.execute(() ->
|
||||
mLocalCallback.onPendingDatagramCount(count));
|
||||
} finally {
|
||||
restoreCallingIdentity(callingIdentity);
|
||||
}
|
||||
}
|
||||
|
||||
private void setExecutor(Executor executor) {
|
||||
mExecutor = executor;
|
||||
}
|
||||
}
|
||||
|
||||
public interface SatelliteStateCallback {
|
||||
/**
|
||||
* Called when satellite modem state changes.
|
||||
* @param state The new satellite modem state.
|
||||
*/
|
||||
public void onSatelliteModemStateChanged(@SatelliteManager.SatelliteModemState int state) {
|
||||
// Base Implementation
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when there are pending datagrams to be received from satellite.
|
||||
* @param count Pending datagram count.
|
||||
*/
|
||||
public void onPendingDatagramCount(int count) {
|
||||
// Base Implementation
|
||||
}
|
||||
|
||||
//TODO: Add an API for datagram transfer state update here.
|
||||
|
||||
/**@hide*/
|
||||
@NonNull
|
||||
final ISatelliteStateCallback getBinder() {
|
||||
return mBinder;
|
||||
}
|
||||
|
||||
/**@hide*/
|
||||
public void setExecutor(@NonNull Executor executor) {
|
||||
mBinder.setExecutor(executor);
|
||||
}
|
||||
void onSatelliteModemStateChanged(@SatelliteManager.SatelliteModemState int state);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
* 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;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
|
||||
/**
|
||||
* A callback class for monitoring satellite position update and datagram transfer state change
|
||||
* events.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public interface SatelliteTransmissionUpdateCallback {
|
||||
/**
|
||||
* Called when the satellite position changed.
|
||||
*
|
||||
* @param pointingInfo The pointing info containing the satellite location.
|
||||
*/
|
||||
void onSatellitePositionChanged(@NonNull PointingInfo pointingInfo);
|
||||
|
||||
/**
|
||||
* Called when satellite datagram transfer state changed.
|
||||
*
|
||||
* @param state The new datagram transfer state.
|
||||
* @param sendPendingCount The number of datagrams that are currently being sent.
|
||||
* @param receivePendingCount The number of datagrams that are currently being received.
|
||||
* @param errorCode If datagram transfer failed, the reason for failure.
|
||||
*/
|
||||
void onDatagramTransferStateChanged(@SatelliteManager.SatelliteDatagramTransferState int state,
|
||||
int sendPendingCount, int receivePendingCount,
|
||||
@SatelliteManager.SatelliteError int errorCode);
|
||||
}
|
||||
@@ -49,10 +49,9 @@ oneway interface ISatellite {
|
||||
* Listening mode allows the satellite service to listen for incoming pages.
|
||||
*
|
||||
* @param enable True to enable satellite listening mode and false to disable.
|
||||
* @param isDemoMode Whether demo mode is enabled.
|
||||
* @param timeout How long the satellite modem should wait for the next incoming page before
|
||||
* disabling listening mode.
|
||||
* @param errorCallback The callback to receive the error code result of the operation.
|
||||
* @param resultCallback The callback to receive the error code result of the operation.
|
||||
*
|
||||
* Valid error codes returned:
|
||||
* SatelliteError:ERROR_NONE
|
||||
@@ -64,16 +63,17 @@ oneway interface ISatellite {
|
||||
* SatelliteError:REQUEST_NOT_SUPPORTED
|
||||
* SatelliteError:NO_RESOURCES
|
||||
*/
|
||||
void requestSatelliteListeningEnabled(in boolean enable, in boolean isDemoMode, in int timeout,
|
||||
in IIntegerConsumer errorCallback);
|
||||
void requestSatelliteListeningEnabled(in boolean enable, in int timeout,
|
||||
in IIntegerConsumer resultCallback);
|
||||
|
||||
/**
|
||||
* Request to enable or disable the satellite modem. If the satellite modem is enabled,
|
||||
* this will also disable the cellular modem, and if the satellite modem is disabled,
|
||||
* this will also re-enable the cellular modem.
|
||||
* 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 enable True to enable the satellite modem and false to disable.
|
||||
* @param errorCallback The callback to receive the error code result of the operation.
|
||||
* @param enableSatellite True to enable the satellite modem and false to disable.
|
||||
* @param enableDemoMode True to enable demo mode and false to disable.
|
||||
* @param resultCallback The callback to receive the error code result of the operation.
|
||||
*
|
||||
* Valid error codes returned:
|
||||
* SatelliteError:ERROR_NONE
|
||||
@@ -85,13 +85,14 @@ oneway interface ISatellite {
|
||||
* SatelliteError:REQUEST_NOT_SUPPORTED
|
||||
* SatelliteError:NO_RESOURCES
|
||||
*/
|
||||
void requestSatelliteEnabled(in boolean enabled, in IIntegerConsumer errorCallback);
|
||||
void requestSatelliteEnabled(in boolean enableSatellite, in boolean enableDemoMode,
|
||||
in IIntegerConsumer resultCallback);
|
||||
|
||||
/**
|
||||
* Request to get whether the satellite modem is enabled.
|
||||
*
|
||||
* @param errorCallback The callback to receive the error code result of the operation.
|
||||
* This must only be sent when the result is not SatelliteError#ERROR_NONE.
|
||||
* @param resultCallback The callback to receive the error code result of the operation.
|
||||
* This must only be sent when the error is not SatelliteError#ERROR_NONE.
|
||||
* @param callback If the result is SatelliteError#ERROR_NONE, the callback to receive
|
||||
* whether the satellite modem is enabled.
|
||||
*
|
||||
@@ -105,13 +106,13 @@ oneway interface ISatellite {
|
||||
* SatelliteError:REQUEST_NOT_SUPPORTED
|
||||
* SatelliteError:NO_RESOURCES
|
||||
*/
|
||||
void requestIsSatelliteEnabled(in IIntegerConsumer errorCallback, in IBooleanConsumer callback);
|
||||
void requestIsSatelliteEnabled(in IIntegerConsumer resultCallback, in IBooleanConsumer callback);
|
||||
|
||||
/**
|
||||
* Request to get whether the satellite service is supported on the device.
|
||||
*
|
||||
* @param errorCallback The callback to receive the error code result of the operation.
|
||||
* This must only be sent when the result is not SatelliteError#ERROR_NONE.
|
||||
* @param resultCallback The callback to receive the error code result of the operation.
|
||||
* This must only be sent when the error is not SatelliteError#ERROR_NONE.
|
||||
* @param callback If the result is SatelliteError#ERROR_NONE, the callback to receive
|
||||
* whether the satellite service is supported on the device.
|
||||
*
|
||||
@@ -125,14 +126,14 @@ oneway interface ISatellite {
|
||||
* SatelliteError:REQUEST_NOT_SUPPORTED
|
||||
* SatelliteError:NO_RESOURCES
|
||||
*/
|
||||
void requestIsSatelliteSupported(in IIntegerConsumer errorCallback,
|
||||
void requestIsSatelliteSupported(in IIntegerConsumer resultCallback,
|
||||
in IBooleanConsumer callback);
|
||||
|
||||
/**
|
||||
* Request to get the SatelliteCapabilities of the satellite service.
|
||||
*
|
||||
* @param errorCallback The callback to receive the error code result of the operation.
|
||||
* This must only be sent when the result is not SatelliteError#ERROR_NONE.
|
||||
* @param resultCallback The callback to receive the error code result of the operation.
|
||||
* This must only be sent when the error is not SatelliteError#ERROR_NONE.
|
||||
* @param callback If the result is SatelliteError#ERROR_NONE, the callback to receive
|
||||
* the SatelliteCapabilities of the satellite service.
|
||||
*
|
||||
@@ -146,7 +147,7 @@ oneway interface ISatellite {
|
||||
* SatelliteError:REQUEST_NOT_SUPPORTED
|
||||
* SatelliteError:NO_RESOURCES
|
||||
*/
|
||||
void requestSatelliteCapabilities(in IIntegerConsumer errorCallback,
|
||||
void requestSatelliteCapabilities(in IIntegerConsumer resultCallback,
|
||||
in ISatelliteCapabilitiesConsumer callback);
|
||||
|
||||
/**
|
||||
@@ -154,7 +155,7 @@ oneway interface ISatellite {
|
||||
* The satellite service should report the satellite pointing info via
|
||||
* ISatelliteListener#onSatellitePositionChanged as the user device/satellite moves.
|
||||
*
|
||||
* @param errorCallback The callback to receive the error code result of the operation.
|
||||
* @param resultCallback The callback to receive the error code result of the operation.
|
||||
*
|
||||
* Valid error codes returned:
|
||||
* SatelliteError:ERROR_NONE
|
||||
@@ -166,13 +167,13 @@ oneway interface ISatellite {
|
||||
* SatelliteError:REQUEST_NOT_SUPPORTED
|
||||
* SatelliteError:NO_RESOURCES
|
||||
*/
|
||||
void startSendingSatellitePointingInfo(in IIntegerConsumer errorCallback);
|
||||
void startSendingSatellitePointingInfo(in IIntegerConsumer resultCallback);
|
||||
|
||||
/**
|
||||
* User stopped pointing to the satellite.
|
||||
* The satellite service should stop reporting satellite pointing info to the framework.
|
||||
*
|
||||
* @param errorCallback The callback to receive the error code result of the operation.
|
||||
* @param resultCallback The callback to receive the error code result of the operation.
|
||||
*
|
||||
* Valid error codes returned:
|
||||
* SatelliteError:ERROR_NONE
|
||||
@@ -184,28 +185,7 @@ oneway interface ISatellite {
|
||||
* SatelliteError:REQUEST_NOT_SUPPORTED
|
||||
* SatelliteError:NO_RESOURCES
|
||||
*/
|
||||
void stopSendingSatellitePointingInfo(in IIntegerConsumer errorCallback);
|
||||
|
||||
/**
|
||||
* Request to get the maximum number of characters per MO text message on satellite.
|
||||
*
|
||||
* @param errorCallback The callback to receive the error code result of the operation.
|
||||
* This must only be sent when the result is not SatelliteError#ERROR_NONE.
|
||||
* @param callback If the result is SatelliteError#ERROR_NONE, the callback to receive
|
||||
* the maximum number of characters per MO text message on satellite.
|
||||
*
|
||||
* Valid error codes returned:
|
||||
* SatelliteError:ERROR_NONE
|
||||
* SatelliteError:SERVICE_ERROR
|
||||
* SatelliteError:MODEM_ERROR
|
||||
* SatelliteError:INVALID_MODEM_STATE
|
||||
* SatelliteError:INVALID_ARGUMENTS
|
||||
* SatelliteError:RADIO_NOT_AVAILABLE
|
||||
* SatelliteError:REQUEST_NOT_SUPPORTED
|
||||
* SatelliteError:NO_RESOURCES
|
||||
*/
|
||||
void requestMaxCharactersPerMOTextMessage(in IIntegerConsumer errorCallback,
|
||||
in IIntegerConsumer callback);
|
||||
void stopSendingSatellitePointingInfo(in IIntegerConsumer resultCallback);
|
||||
|
||||
/**
|
||||
* Provision the device with a satellite provider.
|
||||
@@ -214,7 +194,8 @@ oneway interface ISatellite {
|
||||
*
|
||||
* @param token The token to be used as a unique identifier for provisioning with satellite
|
||||
* gateway.
|
||||
* @param errorCallback The callback to receive the error code result of the operation.
|
||||
* @param regionId The region ID for the device's current location.
|
||||
* @param resultCallback The callback to receive the error code result of the operation.
|
||||
*
|
||||
* Valid error codes returned:
|
||||
* SatelliteError:ERROR_NONE
|
||||
@@ -229,7 +210,8 @@ oneway interface ISatellite {
|
||||
* SatelliteError:REQUEST_ABORTED
|
||||
* SatelliteError:NETWORK_TIMEOUT
|
||||
*/
|
||||
void provisionSatelliteService(in String token, in IIntegerConsumer errorCallback);
|
||||
void provisionSatelliteService(in String token, in String regionId,
|
||||
in IIntegerConsumer resultCallback);
|
||||
|
||||
/**
|
||||
* Deprovision the device with the satellite provider.
|
||||
@@ -237,7 +219,7 @@ oneway interface ISatellite {
|
||||
* Once deprovisioned, ISatelliteListener#onSatelliteProvisionStateChanged should report false.
|
||||
*
|
||||
* @param token The token of the device/subscription to be deprovisioned.
|
||||
* @param errorCallback The callback to receive the error code result of the operation.
|
||||
* @param resultCallback The callback to receive the error code result of the operation.
|
||||
*
|
||||
* Valid error codes returned:
|
||||
* SatelliteError:ERROR_NONE
|
||||
@@ -252,13 +234,13 @@ oneway interface ISatellite {
|
||||
* SatelliteError:REQUEST_ABORTED
|
||||
* SatelliteError:NETWORK_TIMEOUT
|
||||
*/
|
||||
void deprovisionSatelliteService(in String token, in IIntegerConsumer errorCallback);
|
||||
void deprovisionSatelliteService(in String token, in IIntegerConsumer resultCallback);
|
||||
|
||||
/**
|
||||
* Request to get whether this device is provisioned with a satellite provider.
|
||||
*
|
||||
* @param errorCallback The callback to receive the error code result of the operation.
|
||||
* This must only be sent when the result is not SatelliteError#ERROR_NONE.
|
||||
* @param resultCallback The callback to receive the error code result of the operation.
|
||||
* This must only be sent when the error is not SatelliteError#ERROR_NONE.
|
||||
* @param callback If the result is SatelliteError#ERROR_NONE, the callback to receive
|
||||
* whether this device is provisioned with a satellite provider.
|
||||
*
|
||||
@@ -272,7 +254,7 @@ oneway interface ISatellite {
|
||||
* SatelliteError:REQUEST_NOT_SUPPORTED
|
||||
* SatelliteError:NO_RESOURCES
|
||||
*/
|
||||
void requestIsSatelliteProvisioned(in IIntegerConsumer errorCallback,
|
||||
void requestIsSatelliteProvisioned(in IIntegerConsumer resultCallback,
|
||||
in IBooleanConsumer callback);
|
||||
|
||||
/**
|
||||
@@ -280,7 +262,7 @@ oneway interface ISatellite {
|
||||
* The satellite service should check if there are any pending datagrams to be received over
|
||||
* satellite and report them via ISatelliteListener#onSatelliteDatagramsReceived.
|
||||
*
|
||||
* @param errorCallback The callback to receive the error code result of the operation.
|
||||
* @param resultCallback The callback to receive the error code result of the operation.
|
||||
*
|
||||
* Valid error codes returned:
|
||||
* SatelliteError:ERROR_NONE
|
||||
@@ -297,15 +279,14 @@ oneway interface ISatellite {
|
||||
* SatelliteError:SATELLITE_NOT_REACHABLE
|
||||
* SatelliteError:NOT_AUTHORIZED
|
||||
*/
|
||||
void pollPendingSatelliteDatagrams(in IIntegerConsumer errorCallback);
|
||||
void pollPendingSatelliteDatagrams(in IIntegerConsumer resultCallback);
|
||||
|
||||
/**
|
||||
* Send datagram over satellite.
|
||||
*
|
||||
* @param datagram Datagram to send in byte format.
|
||||
* @param isDemoMode Whether demo mode is enabled.
|
||||
* @param isEmergency Whether this is an emergency datagram.
|
||||
* @param errorCallback The callback to receive the error code result of the operation.
|
||||
* @param resultCallback The callback to receive the error code result of the operation.
|
||||
*
|
||||
* Valid error codes returned:
|
||||
* SatelliteError:ERROR_NONE
|
||||
@@ -323,16 +304,16 @@ oneway interface ISatellite {
|
||||
* SatelliteError:SATELLITE_NOT_REACHABLE
|
||||
* SatelliteError:NOT_AUTHORIZED
|
||||
*/
|
||||
void sendSatelliteDatagram(in SatelliteDatagram datagram, in boolean isDemoMode,
|
||||
in boolean isEmergency, in IIntegerConsumer errorCallback);
|
||||
void sendSatelliteDatagram(in SatelliteDatagram datagram, in boolean isEmergency,
|
||||
in IIntegerConsumer resultCallback);
|
||||
|
||||
/**
|
||||
* Request the current satellite modem state.
|
||||
* The satellite service should report the current satellite modem state via
|
||||
* ISatelliteListener#onSatelliteModemStateChanged.
|
||||
*
|
||||
* @param errorCallback The callback to receive the error code result of the operation.
|
||||
* This must only be sent when the result is not SatelliteError#ERROR_NONE.
|
||||
* @param resultCallback The callback to receive the error code result of the operation.
|
||||
* This must only be sent when the error is not SatelliteError#ERROR_NONE.
|
||||
* @param callback If the result is SatelliteError#ERROR_NONE, the callback to receive
|
||||
* the current satellite modem state.
|
||||
*
|
||||
@@ -346,14 +327,14 @@ oneway interface ISatellite {
|
||||
* SatelliteError:REQUEST_NOT_SUPPORTED
|
||||
* SatelliteError:NO_RESOURCES
|
||||
*/
|
||||
void requestSatelliteModemState(in IIntegerConsumer errorCallback,
|
||||
void requestSatelliteModemState(in IIntegerConsumer resultCallback,
|
||||
in IIntegerConsumer callback);
|
||||
|
||||
/**
|
||||
* Request to get whether satellite communication is allowed for the current location.
|
||||
*
|
||||
* @param errorCallback The callback to receive the error code result of the operation.
|
||||
* This must only be sent when the result is not SatelliteError#ERROR_NONE.
|
||||
* @param resultCallback The callback to receive the error code result of the operation.
|
||||
* This must only be sent when the error is not SatelliteError#ERROR_NONE.
|
||||
* @param callback If the result is SatelliteError#ERROR_NONE, the callback to receive
|
||||
* whether satellite communication is allowed for the current location.
|
||||
*
|
||||
@@ -368,15 +349,15 @@ oneway interface ISatellite {
|
||||
* SatelliteError:NO_RESOURCES
|
||||
*/
|
||||
void requestIsSatelliteCommunicationAllowedForCurrentLocation(
|
||||
in IIntegerConsumer errorCallback, in IBooleanConsumer callback);
|
||||
in IIntegerConsumer resultCallback, in IBooleanConsumer callback);
|
||||
|
||||
/**
|
||||
* 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 errorCallback The callback to receive the error code result of the operation.
|
||||
* This must only be sent when the result is not SatelliteError#ERROR_NONE.
|
||||
* @param resultCallback The callback to receive the error code result of the operation.
|
||||
* This must only be sent when the error is not SatelliteError#ERROR_NONE.
|
||||
* @param callback If the result is SatelliteError#ERROR_NONE, the callback to receive
|
||||
* the time after which the satellite will be visible.
|
||||
*
|
||||
@@ -390,6 +371,6 @@ oneway interface ISatellite {
|
||||
* SatelliteError:REQUEST_NOT_SUPPORTED
|
||||
* SatelliteError:NO_RESOURCES
|
||||
*/
|
||||
void requestTimeForNextSatelliteVisibility(in IIntegerConsumer errorCallback,
|
||||
void requestTimeForNextSatelliteVisibility(in IIntegerConsumer resultCallback,
|
||||
in IIntegerConsumer callback);
|
||||
}
|
||||
|
||||
@@ -43,10 +43,8 @@ oneway interface ISatelliteListener {
|
||||
|
||||
/**
|
||||
* Indicates that the satellite has pending datagrams for the device to be pulled.
|
||||
*
|
||||
* @param count Number of pending datagrams.
|
||||
*/
|
||||
void onPendingDatagramCount(in int count);
|
||||
void onPendingDatagrams();
|
||||
|
||||
/**
|
||||
* Indicates that the satellite pointing input has changed.
|
||||
@@ -61,11 +59,4 @@ oneway interface ISatelliteListener {
|
||||
* @param state The current satellite modem state.
|
||||
*/
|
||||
void onSatelliteModemStateChanged(in SatelliteModemState state);
|
||||
|
||||
/**
|
||||
* Indicates that the satellite radio technology has changed.
|
||||
*
|
||||
* @param technology The current satellite radio technology.
|
||||
*/
|
||||
void onSatelliteRadioTechnologyChanged(in NTRadioTechnology technology);
|
||||
}
|
||||
|
||||
@@ -29,21 +29,4 @@ parcelable PointingInfo {
|
||||
* Satellite elevation in degrees.
|
||||
*/
|
||||
float satelliteElevation;
|
||||
|
||||
/**
|
||||
* Antenna azimuth in degrees.
|
||||
*/
|
||||
float antennaAzimuth;
|
||||
|
||||
/**
|
||||
* Angle of rotation about the x axis. This value represents the angle between a plane
|
||||
* parallel to the device's screen and a plane parallel to the ground.
|
||||
*/
|
||||
float antennaPitch;
|
||||
|
||||
/**
|
||||
* Angle of rotation about the y axis. This value represents the angle between a plane
|
||||
* perpendicular to the device's screen and a plane parallel to the ground.
|
||||
*/
|
||||
float antennaRoll;
|
||||
}
|
||||
|
||||
@@ -27,19 +27,13 @@ parcelable SatelliteCapabilities {
|
||||
*/
|
||||
NTRadioTechnology[] supportedRadioTechnologies;
|
||||
|
||||
/**
|
||||
* Whether satellite modem is always on.
|
||||
* This indicates the power impact of keeping it on is very minimal.
|
||||
*/
|
||||
boolean isAlwaysOn;
|
||||
|
||||
/**
|
||||
* Whether UE needs to point to a satellite to send and receive data.
|
||||
*/
|
||||
boolean needsPointingToSatellite;
|
||||
boolean isPointingRequired;
|
||||
|
||||
/**
|
||||
* Whether UE needs a separate SIM profile to communicate with the satellite network.
|
||||
* The maximum number of bytes per datagram that can be sent over satellite.
|
||||
*/
|
||||
boolean needsSeparateSimProfile;
|
||||
int maxBytesPerOutgoingDatagram;
|
||||
}
|
||||
|
||||
@@ -70,20 +70,21 @@ public class SatelliteImplBase extends SatelliteService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void requestSatelliteListeningEnabled(boolean enable, boolean isDemoMode,
|
||||
int timeout, IIntegerConsumer errorCallback) throws RemoteException {
|
||||
public void requestSatelliteListeningEnabled(boolean enable, int timeout,
|
||||
IIntegerConsumer errorCallback) throws RemoteException {
|
||||
executeMethodAsync(
|
||||
() -> SatelliteImplBase.this
|
||||
.requestSatelliteListeningEnabled(
|
||||
enable, isDemoMode, timeout, errorCallback),
|
||||
.requestSatelliteListeningEnabled(enable, timeout, errorCallback),
|
||||
"requestSatelliteListeningEnabled");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void requestSatelliteEnabled(boolean enable, IIntegerConsumer errorCallback)
|
||||
throws RemoteException {
|
||||
public void requestSatelliteEnabled(boolean enableSatellite, boolean enableDemoMode,
|
||||
IIntegerConsumer errorCallback) throws RemoteException {
|
||||
executeMethodAsync(
|
||||
() -> SatelliteImplBase.this.requestSatelliteEnabled(enable, errorCallback),
|
||||
() -> SatelliteImplBase.this
|
||||
.requestSatelliteEnabled(
|
||||
enableSatellite, enableDemoMode, errorCallback),
|
||||
"requestSatelliteEnabled");
|
||||
}
|
||||
|
||||
@@ -131,19 +132,11 @@ public class SatelliteImplBase extends SatelliteService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void requestMaxCharactersPerMOTextMessage(IIntegerConsumer errorCallback,
|
||||
IIntegerConsumer callback) throws RemoteException {
|
||||
public void provisionSatelliteService(String token, String regionId,
|
||||
IIntegerConsumer errorCallback) throws RemoteException {
|
||||
executeMethodAsync(
|
||||
() -> SatelliteImplBase.this
|
||||
.requestMaxCharactersPerMOTextMessage(errorCallback, callback),
|
||||
"requestMaxCharactersPerMOTextMessage");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void provisionSatelliteService(String token, IIntegerConsumer errorCallback)
|
||||
throws RemoteException {
|
||||
executeMethodAsync(
|
||||
() -> SatelliteImplBase.this.provisionSatelliteService(token, errorCallback),
|
||||
.provisionSatelliteService(token, regionId, errorCallback),
|
||||
"provisionSatelliteService");
|
||||
}
|
||||
|
||||
@@ -173,12 +166,11 @@ public class SatelliteImplBase extends SatelliteService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendSatelliteDatagram(SatelliteDatagram datagram, boolean isDemoMode,
|
||||
boolean isEmergency, IIntegerConsumer errorCallback) throws RemoteException {
|
||||
public void sendSatelliteDatagram(SatelliteDatagram datagram, boolean isEmergency,
|
||||
IIntegerConsumer errorCallback) throws RemoteException {
|
||||
executeMethodAsync(
|
||||
() -> SatelliteImplBase.this
|
||||
.sendSatelliteDatagram(
|
||||
datagram, isDemoMode, isEmergency, errorCallback),
|
||||
.sendSatelliteDatagram(datagram, isEmergency, errorCallback),
|
||||
"sendSatelliteDatagram");
|
||||
}
|
||||
|
||||
@@ -249,7 +241,6 @@ public class SatelliteImplBase extends SatelliteService {
|
||||
* Listening mode allows the satellite service to listen for incoming pages.
|
||||
*
|
||||
* @param enable True to enable satellite listening mode and false to disable.
|
||||
* @param isDemoMode Whether demo mode is enabled.
|
||||
* @param timeout How long the satellite modem should wait for the next incoming page before
|
||||
* disabling listening mode.
|
||||
* @param errorCallback The callback to receive the error code result of the operation.
|
||||
@@ -264,17 +255,18 @@ public class SatelliteImplBase extends SatelliteService {
|
||||
* SatelliteError:REQUEST_NOT_SUPPORTED
|
||||
* SatelliteError:NO_RESOURCES
|
||||
*/
|
||||
public void requestSatelliteListeningEnabled(boolean enable, boolean isDemoMode, int timeout,
|
||||
public void requestSatelliteListeningEnabled(boolean enable, int timeout,
|
||||
@NonNull IIntegerConsumer errorCallback) {
|
||||
// stub implementation
|
||||
}
|
||||
|
||||
/**
|
||||
* Request to enable or disable the satellite modem. If the satellite modem is enabled,
|
||||
* this will also disable the cellular modem, and if the satellite modem is disabled,
|
||||
* this will also re-enable the cellular modem.
|
||||
* 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 enable True to enable the satellite modem and false to disable.
|
||||
* @param enableSatellite True to enable the satellite modem and false to disable.
|
||||
* @param enableDemoMode True to enable demo mode and false to disable.
|
||||
* @param errorCallback The callback to receive the error code result of the operation.
|
||||
*
|
||||
* Valid error codes returned:
|
||||
@@ -287,7 +279,8 @@ public class SatelliteImplBase extends SatelliteService {
|
||||
* SatelliteError:REQUEST_NOT_SUPPORTED
|
||||
* SatelliteError:NO_RESOURCES
|
||||
*/
|
||||
public void requestSatelliteEnabled(boolean enable, @NonNull IIntegerConsumer errorCallback) {
|
||||
public void requestSatelliteEnabled(boolean enableSatellite, boolean enableDemoMode,
|
||||
@NonNull IIntegerConsumer errorCallback) {
|
||||
// stub implementation
|
||||
}
|
||||
|
||||
@@ -401,29 +394,6 @@ public class SatelliteImplBase extends SatelliteService {
|
||||
// stub implementation
|
||||
}
|
||||
|
||||
/**
|
||||
* Request to get the maximum number of characters per MO text message on satellite.
|
||||
*
|
||||
* @param errorCallback The callback to receive the error code result of the operation.
|
||||
* This must only be sent when the result is not SatelliteError#ERROR_NONE.
|
||||
* @param callback If the result is SatelliteError#ERROR_NONE, the callback to receive
|
||||
* the maximum number of characters per MO text message on satellite.
|
||||
*
|
||||
* Valid error codes returned:
|
||||
* SatelliteError:ERROR_NONE
|
||||
* SatelliteError:SERVICE_ERROR
|
||||
* SatelliteError:MODEM_ERROR
|
||||
* SatelliteError:INVALID_MODEM_STATE
|
||||
* SatelliteError:INVALID_ARGUMENTS
|
||||
* SatelliteError:RADIO_NOT_AVAILABLE
|
||||
* SatelliteError:REQUEST_NOT_SUPPORTED
|
||||
* SatelliteError:NO_RESOURCES
|
||||
*/
|
||||
public void requestMaxCharactersPerMOTextMessage(@NonNull IIntegerConsumer errorCallback,
|
||||
@NonNull IIntegerConsumer callback) {
|
||||
// stub implementation
|
||||
}
|
||||
|
||||
/**
|
||||
* Provision the device with a satellite provider.
|
||||
* This is needed if the provider allows dynamic registration.
|
||||
@@ -431,6 +401,7 @@ public class SatelliteImplBase extends SatelliteService {
|
||||
*
|
||||
* @param token The token to be used as a unique identifier for provisioning with satellite
|
||||
* gateway.
|
||||
* @param regionId The region ID for the device's current location.
|
||||
* @param errorCallback The callback to receive the error code result of the operation.
|
||||
*
|
||||
* Valid error codes returned:
|
||||
@@ -446,7 +417,7 @@ public class SatelliteImplBase extends SatelliteService {
|
||||
* SatelliteError:REQUEST_ABORTED
|
||||
* SatelliteError:NETWORK_TIMEOUT
|
||||
*/
|
||||
public void provisionSatelliteService(@NonNull String token,
|
||||
public void provisionSatelliteService(@NonNull String token, @NonNull String regionId,
|
||||
@NonNull IIntegerConsumer errorCallback) {
|
||||
// stub implementation
|
||||
}
|
||||
@@ -530,7 +501,6 @@ public class SatelliteImplBase extends SatelliteService {
|
||||
* Send datagram over satellite.
|
||||
*
|
||||
* @param datagram Datagram to send in byte format.
|
||||
* @param isDemoMode Whether demo mode is enabled.
|
||||
* @param isEmergency Whether this is an emergency datagram.
|
||||
* @param errorCallback The callback to receive the error code result of the operation.
|
||||
*
|
||||
@@ -550,8 +520,8 @@ public class SatelliteImplBase extends SatelliteService {
|
||||
* SatelliteError:SATELLITE_NOT_REACHABLE
|
||||
* SatelliteError:NOT_AUTHORIZED
|
||||
*/
|
||||
public void sendSatelliteDatagram(@NonNull SatelliteDatagram datagram, boolean isDemoMode,
|
||||
boolean isEmergency, @NonNull IIntegerConsumer errorCallback) {
|
||||
public void sendSatelliteDatagram(@NonNull SatelliteDatagram datagram, boolean isEmergency,
|
||||
@NonNull IIntegerConsumer errorCallback) {
|
||||
// stub implementation
|
||||
}
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ import android.telephony.ims.aidl.IImsRegistration;
|
||||
import android.telephony.ims.aidl.IImsRegistrationCallback;
|
||||
import android.telephony.ims.aidl.IRcsConfigCallback;
|
||||
import android.telephony.satellite.ISatelliteDatagramCallback;
|
||||
import android.telephony.satellite.ISatellitePositionUpdateCallback;
|
||||
import android.telephony.satellite.ISatelliteTransmissionUpdateCallback;
|
||||
import android.telephony.satellite.ISatelliteProvisionStateCallback;
|
||||
import android.telephony.satellite.ISatelliteStateCallback;
|
||||
import android.telephony.satellite.SatelliteCapabilities;
|
||||
@@ -2726,11 +2726,13 @@ interface ITelephony {
|
||||
*
|
||||
* @param subId The subId of the subscription to enable or disable the satellite modem for.
|
||||
* @param enable True to enable the satellite modem and false to disable.
|
||||
* @param callback The callback to get the error code of the request.
|
||||
* @param isDemoModeEnabled True if demo mode is enabled and false otherwise.
|
||||
* @param callback The callback to get the result of the request.
|
||||
*/
|
||||
@JavaPassthrough(annotation="@android.annotation.RequiresPermission("
|
||||
+ "android.Manifest.permission.SATELLITE_COMMUNICATION)")
|
||||
void requestSatelliteEnabled(int subId, boolean enable, in IIntegerConsumer callback);
|
||||
void requestSatelliteEnabled(int subId, boolean enable, boolean isDemoModeEnabled,
|
||||
in IIntegerConsumer callback);
|
||||
|
||||
/**
|
||||
* Request to get whether the satellite modem is enabled.
|
||||
@@ -2743,17 +2745,6 @@ interface ITelephony {
|
||||
+ "android.Manifest.permission.SATELLITE_COMMUNICATION)")
|
||||
void requestIsSatelliteEnabled(int subId, in ResultReceiver receiver);
|
||||
|
||||
/**
|
||||
* Request to enable or disable the satellite service demo mode.
|
||||
*
|
||||
* @param subId The subId of the subscription to enable or disable the satellite demo mode for.
|
||||
* @param enable True to enable the satellite demo mode and false to disable.
|
||||
* @param callback The callback to get the error code of the request.
|
||||
*/
|
||||
@JavaPassthrough(annotation="@android.annotation.RequiresPermission("
|
||||
+ "android.Manifest.permission.SATELLITE_COMMUNICATION)")
|
||||
void requestSatelliteDemoModeEnabled(int subId, boolean enable, in IIntegerConsumer callback);
|
||||
|
||||
/**
|
||||
* Request to get whether the satellite service demo mode is enabled.
|
||||
*
|
||||
@@ -2764,7 +2755,7 @@ interface ITelephony {
|
||||
*/
|
||||
@JavaPassthrough(annotation="@android.annotation.RequiresPermission("
|
||||
+ "android.Manifest.permission.SATELLITE_COMMUNICATION)")
|
||||
void requestIsSatelliteDemoModeEnabled(int subId, in ResultReceiver receiver);
|
||||
void requestIsDemoModeEnabled(int subId, in ResultReceiver receiver);
|
||||
|
||||
/**
|
||||
* Request to get whether the satellite service is supported on the device.
|
||||
@@ -2787,39 +2778,28 @@ interface ITelephony {
|
||||
void requestSatelliteCapabilities(int subId, in ResultReceiver receiver);
|
||||
|
||||
/**
|
||||
* Start receiving satellite pointing updates.
|
||||
* Start receiving satellite transmission updates.
|
||||
*
|
||||
* @param subId The subId of the subscription to stop satellite position updates for.
|
||||
* @param errorCallback The callback to get the error code of the request.
|
||||
* @param callback The callback to handle position updates.
|
||||
* @param subId The subId of the subscription to stop satellite transmission updates for.
|
||||
* @param resultCallback The callback to get the result of the request.
|
||||
* @param callback The callback to handle transmission updates.
|
||||
*/
|
||||
@JavaPassthrough(annotation="@android.annotation.RequiresPermission("
|
||||
+ "android.Manifest.permission.SATELLITE_COMMUNICATION)")
|
||||
void startSatellitePositionUpdates(int subId, in IIntegerConsumer errorCallback,
|
||||
in ISatellitePositionUpdateCallback callback);
|
||||
void startSatelliteTransmissionUpdates(int subId, in IIntegerConsumer resultCallback,
|
||||
in ISatelliteTransmissionUpdateCallback callback);
|
||||
|
||||
/**
|
||||
* Stop receiving satellite pointing updates.
|
||||
* Stop receiving satellite transmission updates.
|
||||
*
|
||||
* @param subId The subId of the subscritpion to stop satellite position updates for.
|
||||
* @param errorCallback The callback to get the error code of the request.
|
||||
* @param callback The callback that was passed to startSatellitePositionUpdates.
|
||||
* @param subId The subId of the subscritpion to stop satellite transmission updates for.
|
||||
* @param resultCallback The callback to get the result of the request.
|
||||
* @param callback The callback that was passed to startSatelliteTransmissionUpdates.
|
||||
*/
|
||||
@JavaPassthrough(annotation="@android.annotation.RequiresPermission("
|
||||
+ "android.Manifest.permission.SATELLITE_COMMUNICATION)")
|
||||
void stopSatellitePositionUpdates(int subId, in IIntegerConsumer errorCallback,
|
||||
in ISatellitePositionUpdateCallback callback);
|
||||
|
||||
/**
|
||||
* Request to get the maximum number of bytes per datagram that can be sent to satellite.
|
||||
*
|
||||
* @param subId The subId of the subscription to get the maximum number of characters for.
|
||||
* @param receiver Result receiver to get the error code of the request and the requested
|
||||
* maximum number of bytes per datagram that can be sent to satellite.
|
||||
*/
|
||||
@JavaPassthrough(annotation="@android.annotation.RequiresPermission("
|
||||
+ "android.Manifest.permission.SATELLITE_COMMUNICATION)")
|
||||
void requestMaxSizePerSendingDatagram(int subId, in ResultReceiver receiver);
|
||||
void stopSatelliteTransmissionUpdates(int subId, in IIntegerConsumer resultCallback,
|
||||
in ISatelliteTransmissionUpdateCallback callback);
|
||||
|
||||
/**
|
||||
* Register the subscription with a satellite provider.
|
||||
@@ -2828,13 +2808,14 @@ interface ITelephony {
|
||||
* @param subId The subId of the subscription to be provisioned.
|
||||
* @param token The token to be used as a unique identifier for provisioning with satellite
|
||||
* gateway.
|
||||
* @param callback The callback to get the error code of the request.
|
||||
* @param regionId The region ID for the device's current location.
|
||||
* @param callback The callback to get the result of the request.
|
||||
*
|
||||
* @return The signal transport used by callers to cancel the provision request.
|
||||
*/
|
||||
@JavaPassthrough(annotation="@android.annotation.RequiresPermission("
|
||||
+ "android.Manifest.permission.SATELLITE_COMMUNICATION)")
|
||||
ICancellationSignal provisionSatelliteService(int subId, in String token,
|
||||
ICancellationSignal provisionSatelliteService(int subId, in String token, in String regionId,
|
||||
in IIntegerConsumer callback);
|
||||
|
||||
/**
|
||||
@@ -2846,7 +2827,7 @@ interface ITelephony {
|
||||
*
|
||||
* @param subId The subId of the subscription to be deprovisioned.
|
||||
* @param token The token of the device/subscription to be deprovisioned.
|
||||
* @param callback The callback to get the error code of the request.
|
||||
* @param callback The callback to get the result of the request.
|
||||
*/
|
||||
@JavaPassthrough(annotation="@android.annotation.RequiresPermission("
|
||||
+ "android.Manifest.permission.SATELLITE_COMMUNICATION)")
|
||||
@@ -2916,15 +2897,13 @@ interface ITelephony {
|
||||
* Register to receive incoming datagrams over satellite.
|
||||
*
|
||||
* @param subId The subId of the subscription to register for incoming satellite datagrams.
|
||||
* @param datagramType Type of datagram.
|
||||
* @param callback The callback to handle the incoming datagrams.
|
||||
*
|
||||
* @return The {@link SatelliteError} result of the operation.
|
||||
*/
|
||||
@JavaPassthrough(annotation="@android.annotation.RequiresPermission("
|
||||
+ "android.Manifest.permission.SATELLITE_COMMUNICATION)")
|
||||
int registerForSatelliteDatagram(
|
||||
int subId, int datagramType, ISatelliteDatagramCallback callback);
|
||||
int registerForSatelliteDatagram(int subId, ISatelliteDatagramCallback callback);
|
||||
|
||||
/**
|
||||
* Unregister to stop receiving incoming datagrams over satellite.
|
||||
@@ -2941,7 +2920,7 @@ interface ITelephony {
|
||||
* Poll pending satellite datagrams over satellite.
|
||||
*
|
||||
* @param subId The subId of the subscription used for receiving datagrams.
|
||||
* @param callback The callback to get the error code of the request.
|
||||
* @param callback The callback to get the result of the request.
|
||||
*/
|
||||
@JavaPassthrough(annotation="@android.annotation.RequiresPermission("
|
||||
+ "android.Manifest.permission.SATELLITE_COMMUNICATION)")
|
||||
@@ -2955,7 +2934,7 @@ interface ITelephony {
|
||||
* @param datagram Datagram to send over satellite.
|
||||
* @param needFullScreenPointingUI this is used to indicate pointingUI app to open in
|
||||
* full screen mode.
|
||||
* @param callback The callback to get the error code of the request.
|
||||
* @param callback The callback to get the result of the request.
|
||||
*/
|
||||
@JavaPassthrough(annotation="@android.annotation.RequiresPermission("
|
||||
+ "android.Manifest.permission.SATELLITE_COMMUNICATION)")
|
||||
|
||||
Reference in New Issue
Block a user