Add deprovisionSatelliteService API

Bug: 266013384
Test: atest android.telephony.cts.SatelliteManagerTest

Change-Id: Iafc69f2d7ba64e9d818db4cc27ec455d0cd5344f
This commit is contained in:
Thomas Nguyen
2023-02-13 10:36:59 -08:00
parent ea4678a2e7
commit ec1f17860f
4 changed files with 66 additions and 10 deletions

View File

@@ -23,7 +23,7 @@ import android.telephony.satellite.PointingInfo;
* @hide
*/
oneway interface ISatelliteStateListener {
void onSatelliteProvisionStateChanged(in int[] features, in boolean provisioned);
void onSatelliteProvisionStateChanged(in boolean provisioned);
void onSatellitePositionUpdate(in PointingInfo pointingInfo);
void onMessageTransferStateUpdate(in int state);
}

View File

@@ -18,7 +18,6 @@ package android.telephony.satellite;
import android.annotation.NonNull;
import android.os.Binder;
import android.telephony.satellite.stub.SatelliteImplBase;
import java.lang.ref.WeakReference;
import java.util.concurrent.Executor;
@@ -63,12 +62,10 @@ public class SatelliteCallback {
/**
* Called when satellite provision state changes.
*
* @param features The list of provisioned features.
* @param provisioned The new provision state. {@code true} means satellite is provisioned
* {@code false} means satellite is not provisioned.
*/
void onSatelliteProvisionStateChanged(
@SatelliteImplBase.Feature int[] features, boolean provisioned);
void onSatelliteProvisionStateChanged(boolean provisioned);
}
/**
@@ -100,14 +97,13 @@ public class SatelliteCallback {
mExecutor = executor;
}
public void onSatelliteProvisionStateChanged(
@SatelliteImplBase.Feature int[] features, boolean provisioned) {
public void onSatelliteProvisionStateChanged(boolean provisioned) {
SatelliteProvisionStateListener listener =
(SatelliteProvisionStateListener) mSatelliteCallbackWeakRef.get();
if (listener == null) return;
Binder.withCleanCallingIdentity(() -> mExecutor.execute(
() -> listener.onSatelliteProvisionStateChanged(features, provisioned)));
() -> listener.onSatelliteProvisionStateChanged(provisioned)));
}
public void onSatellitePositionUpdate(@NonNull PointingInfo pointingInfo) {

View File

@@ -638,7 +638,8 @@ public class SatelliteManager {
* Provision the device with a satellite provider.
* This is needed if the provider allows dynamic registration.
*
* @param token The security token of the device/subscription to be provisioned.
* @param token The token to be used as a unique identifier for provisioning with satellite
* gateway.
* @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.
@@ -681,6 +682,48 @@ public class SatelliteManager {
}
}
/**
* Deprovision the device with the satellite provider.
* This is needed if the provider allows dynamic registration. Once deprovisioned,
* {@link SatelliteCallback.SatelliteProvisionStateListener#onSatelliteProvisionStateChanged}
* should report as deprovisioned.
* For provisioning satellite service, refer to
* {@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.
*
* @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 deprovisionSatelliteService(@NonNull String token,
@NonNull @CallbackExecutor Executor executor,
@SatelliteError @NonNull Consumer<Integer> errorCodeListener) {
Objects.requireNonNull(token);
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.deprovisionSatelliteService(mSubId, token, errorCallback);
} else {
throw new IllegalStateException("telephony service is null.");
}
} catch (RemoteException ex) {
loge("deprovisionSatelliteService RemoteException=" + ex);
ex.rethrowFromSystemServer();
}
}
/**
* Register for the satellite provision state change.
*

View File

@@ -2783,7 +2783,8 @@ interface ITelephony {
* This is needed to register the subscription if the provider allows dynamic registration.
*
* @param subId The subId of the subscription to be provisioned.
* @param token The security token of the device/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.
*
* @return The signal transport used by callers to cancel the provision request.
@@ -2793,6 +2794,22 @@ interface ITelephony {
ICancellationSignal provisionSatelliteService(int subId, in String token,
in IIntegerConsumer callback);
/**
* Unregister the subscription with the satellite provider.
* This is needed to unregister the subscription if the provider allows dynamic registration.
* Once deprovisioned,
* {@link SatelliteCallback.SatelliteProvisionStateListener#onSatelliteProvisionStateChanged}
* should report as deprovisioned.
*
* @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.
*/
@JavaPassthrough(annotation="@android.annotation.RequiresPermission("
+ "android.Manifest.permission.SATELLITE_COMMUNICATION)")
void deprovisionSatelliteService(int subId, in String token, in IIntegerConsumer callback);
/**
* Register for the satellite provision state change.
*