Update APIs which is the provisioning per SubscriberId related according to the design doc changes. 1. Rename requestProvisionSubscriberIds and parameter. 2. Remove api requestIsProvisioned in SatelliteManagerWrapper 3. Add new api isSatelliteSubscriberIdSupported in SatelliteManagerWrapper 4. Apply builder pattern to SatelliteSubscriberInfoWrapper 5. Add two parameters(subId and SubscriberIdType) in SatelliteSubscriberInfoWrapper Bug: 359366004 Test: build Flag: com.android.internal.telephony.flags.carrier_roaming_nb_iot_ntn Change-Id: If94b881d3b1dd3d79ab946458ad5145507b4cbe7
diff --git a/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java b/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java index 77903d4..21a08c4 100644 --- a/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java +++ b/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java
@@ -58,6 +58,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; +import java.lang.reflect.Method; import java.time.Duration; import java.util.ArrayList; import java.util.HashMap; @@ -1468,20 +1469,18 @@ * SatelliteException. */ @FlaggedApi(Flags.FLAG_CARRIER_ROAMING_NB_IOT_NTN) - public void requestProvisionSubscriberIds(@NonNull @CallbackExecutor Executor executor, - @NonNull OutcomeReceiver<List<SatelliteSubscriberInfoWrapper>, - SatelliteExceptionWrapper> callback) { + public void requestSatelliteSubscriberProvisionStatus( + @NonNull @CallbackExecutor Executor executor, + @NonNull OutcomeReceiver<List<SatelliteSubscriberProvisionStatusWrapper>, + SatelliteExceptionWrapper> callback) { Objects.requireNonNull(executor); Objects.requireNonNull(callback); OutcomeReceiver internalCallback = - new OutcomeReceiver<List<SatelliteSubscriberInfo>, SatelliteException>() { + new OutcomeReceiver<List<SatelliteSubscriberProvisionStatus>, SatelliteException>() { @Override - public void onResult(List<SatelliteSubscriberInfo> result) { - callback.onResult(result.stream().map(info -> new SatelliteSubscriberInfoWrapper - .Builder().setSubscriberId(info.getSubscriberId()) - .setCarrierId(info.getCarrierId()).setNiddApn(info.getNiddApn()) - .build()).collect(Collectors.toList())); + public void onResult(List<SatelliteSubscriberProvisionStatus> result) { + callback.onResult(transformToWrapperList(result)); } @Override @@ -1489,33 +1488,7 @@ callback.onError(new SatelliteExceptionWrapper(exception.getErrorCode())); } }; - mSatelliteManager.requestProvisionSubscriberIds(executor, internalCallback); - } - - /** - * Request to get provisioned status for given a satellite subscriber id. - * - * @param satelliteSubscriberId Satellite subscriber id requiring provisioned status check. - * @param executor The executor on which the callback will be called. - * @param callback The callback object to which the result will be delivered. - */ - @FlaggedApi(Flags.FLAG_CARRIER_ROAMING_NB_IOT_NTN) - public void requestIsProvisioned(@NonNull String satelliteSubscriberId, - @NonNull @CallbackExecutor Executor executor, - @NonNull OutcomeReceiver<Boolean, SatelliteExceptionWrapper> callback) { - OutcomeReceiver internalCallback = - new OutcomeReceiver<Boolean, SatelliteException>() { - @Override - public void onResult(Boolean result) { - callback.onResult(result); - } - - @Override - public void onError(SatelliteException exception) { - callback.onError(new SatelliteExceptionWrapper(exception.getErrorCode())); - } - }; - mSatelliteManager.requestIsProvisioned(satelliteSubscriberId, executor, internalCallback); + mSatelliteManager.requestSatelliteSubscriberProvisionStatus(executor, internalCallback); } /** @@ -1542,8 +1515,11 @@ } }; mSatelliteManager.provisionSatellite(list.stream() - .map(wrapper -> new SatelliteSubscriberInfo(wrapper.getSubscriberId(), - wrapper.getCarrierId(), wrapper.getNiddApn())) + .map(info -> new SatelliteSubscriberInfo.Builder() + .setSubscriberId(info.getSubscriberId()) + .setCarrierId(info.getCarrierId()).setNiddApn(info.getNiddApn()) + .setSubId(info.getSubId()).setSubscriberIdType(info.getSubscriberIdType()) + .build()) .collect(Collectors.toList()), executor, internalCallback); } @@ -1559,12 +1535,25 @@ new SatelliteSubscriberInfoWrapper.Builder() .setSubscriberId(info.getSubscriberId()) .setCarrierId(info.getCarrierId()).setNiddApn(info.getNiddApn()) + .setSubId(info.getSubId()) + .setSubscriberIdType(info.getSubscriberIdType()) .build()).build()); } } return output; } + public boolean isSatelliteSubscriberIdSupported() { + try { + final String methodName = "requestSatelliteSubscriberProvisioningStatus"; + Method method = mSatelliteManager.getClass().getMethod(methodName, Executor.class, + OutcomeReceiver.class); + return method != null; + } catch (NoSuchMethodException e) { + return false; + } + } + @Nullable private ServiceState getServiceStateForSubscriptionId(int subId) { if (!mSubscriptionManager.isValidSubscriptionId(subId)) {
diff --git a/satellite_client/src/android/telephony/satellite/wrapper/SatelliteSubscriberInfoWrapper.java b/satellite_client/src/android/telephony/satellite/wrapper/SatelliteSubscriberInfoWrapper.java index da6e1af..ce0daaa 100644 --- a/satellite_client/src/android/telephony/satellite/wrapper/SatelliteSubscriberInfoWrapper.java +++ b/satellite_client/src/android/telephony/satellite/wrapper/SatelliteSubscriberInfoWrapper.java
@@ -17,12 +17,15 @@ package android.telephony.satellite.wrapper; import android.annotation.FlaggedApi; +import android.annotation.IntDef; import android.annotation.NonNull; import android.os.Parcel; import android.os.Parcelable; import com.android.internal.telephony.flags.Flags; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; import java.util.Objects; @FlaggedApi(Flags.FLAG_CARRIER_ROAMING_NB_IOT_NTN) @@ -30,12 +33,35 @@ @NonNull private final String mSubscriberId; @NonNull private final int mCarrierId; @NonNull private final String mNiddApn; + @NonNull private int mSubId; + + /** SubscriberId format is the ICCID. */ + @FlaggedApi(Flags.FLAG_OEM_ENABLED_SATELLITE_FLAG) + public static final int ICCID = 0; + /** SubscriberId format is the 6 digit of IMSI + MSISDN. */ + @FlaggedApi(Flags.FLAG_OEM_ENABLED_SATELLITE_FLAG) + public static final int IMSI_MSISDN = 1; + + /** Type of subscriber id */ + @SubscriberIdType + @NonNull private int mSubscriberIdType; + + /** @hide */ + @IntDef(prefix = "SubscriberId_Type_", value = { + ICCID, + IMSI_MSISDN + }) + @Retention(RetentionPolicy.SOURCE) + public @interface SubscriberIdType { + } @FlaggedApi(Flags.FLAG_CARRIER_ROAMING_NB_IOT_NTN) public SatelliteSubscriberInfoWrapper(@NonNull Builder builder) { this.mSubscriberId = builder.mSubscriberId; this.mCarrierId = builder.mCarrierId; this.mNiddApn = builder.mNiddApn; + this.mSubId = builder.mSubId; + this.mSubscriberIdType = builder.mSubscriberIdType; } /** @@ -48,6 +74,8 @@ @NonNull private String mSubscriberId; @NonNull private int mCarrierId; @NonNull private String mNiddApn; + @NonNull private int mSubId; + @NonNull @SubscriberIdType private int mSubscriberIdType; /** * Set the SubscriberId and returns the Builder class. @@ -84,6 +112,28 @@ } /** + * Set the subId and returns the Builder class. + * @hide + */ + @FlaggedApi(Flags.FLAG_CARRIER_ROAMING_NB_IOT_NTN) + @NonNull + public Builder setSubId(int subId) { + mSubId = subId; + return this; + } + + /** + * Set the SubscriberIdType and returns the Builder class. + * @hide + */ + @FlaggedApi(Flags.FLAG_CARRIER_ROAMING_NB_IOT_NTN) + @NonNull + public Builder setSubscriberIdType(@SubscriberIdType int subscriberIdType) { + mSubscriberIdType = subscriberIdType; + return this; + } + + /** * Returns SatelliteSubscriberInfoWrapper object. * @hide */ @@ -98,6 +148,8 @@ mSubscriberId = in.readString(); mCarrierId = in.readInt(); mNiddApn = in.readString(); + mSubId = in.readInt(); + mSubscriberIdType = in.readInt(); } /** @@ -109,6 +161,8 @@ out.writeString(mSubscriberId); out.writeInt(mCarrierId); out.writeString(mNiddApn); + out.writeInt(mSubId); + out.writeInt(mSubscriberIdType); } @FlaggedApi(Flags.FLAG_CARRIER_ROAMING_NB_IOT_NTN) @@ -153,6 +207,18 @@ return mNiddApn; } + @FlaggedApi(Flags.FLAG_CARRIER_ROAMING_NB_IOT_NTN) + @NonNull + public int getSubId() { + return mSubId; + } + + @FlaggedApi(Flags.FLAG_CARRIER_ROAMING_NB_IOT_NTN) + @NonNull + public @SubscriberIdType int getSubscriberIdType() { + return mSubscriberIdType; + } + @Override @NonNull public String toString() { @@ -167,6 +233,14 @@ sb.append("niddApn:"); sb.append(mNiddApn); + sb.append(","); + + sb.append("SubId:"); + sb.append(mSubId); + sb.append(","); + + sb.append("SubscriberIdType:"); + sb.append(mSubscriberIdType); return sb.toString(); } @@ -176,11 +250,12 @@ if (!(o instanceof SatelliteSubscriberInfoWrapper)) return false; SatelliteSubscriberInfoWrapper that = (SatelliteSubscriberInfoWrapper) o; return Objects.equals(mSubscriberId, that.mSubscriberId) - && mCarrierId == that.mCarrierId && Objects.equals(mNiddApn, that.mNiddApn); + && mCarrierId == that.mCarrierId && Objects.equals(mNiddApn, that.mNiddApn) + && mSubId == that.mSubId && mSubscriberIdType == that.mSubscriberIdType; } @Override public int hashCode() { - return Objects.hash(mSubscriberId, mCarrierId, mNiddApn); + return Objects.hash(mSubscriberId, mCarrierId, mNiddApn, mSubId, mSubscriberIdType); } }