Snap for 12151362 from 60b073420c5f352e4845ce1c5ab38c7b001212ca to mainline-permission-release Change-Id: I9847a4b67e2b7e2d4d250136a0d6313bb71f996b
diff --git a/satellite_client/src/android/telephony/satellite/wrapper/CarrierRoamingNtnModeListenerWrapper.java b/satellite_client/src/android/telephony/satellite/wrapper/CarrierRoamingNtnModeListenerWrapper.java index 4a2436e..1c0a840 100644 --- a/satellite_client/src/android/telephony/satellite/wrapper/CarrierRoamingNtnModeListenerWrapper.java +++ b/satellite_client/src/android/telephony/satellite/wrapper/CarrierRoamingNtnModeListenerWrapper.java
@@ -16,6 +16,9 @@ package android.telephony.satellite.wrapper; +import android.telephony.CarrierConfigManager; +import android.telephony.ServiceState; + /** Interface for carrier roaming non-terrestrial network listener. */ public interface CarrierRoamingNtnModeListenerWrapper { /** @@ -28,4 +31,22 @@ * {code false} otherwise. */ void onCarrierRoamingNtnModeChanged(boolean active); + + /** + * Callback invoked when eligibility to connect to carrier roaming non-terrestrial network + * changes. + * + * @param eligible {@code true} when the device is eligible for satellite + * communication if all the following conditions are met: + * <ul> + * <li>Any subscription on the device supports P2P satellite messaging which is defined by + * {@link CarrierConfigManager#KEY_SATELLITE_ATTACH_SUPPORTED_BOOL} </li> + * <li>{@link CarrierConfigManager#KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT} set to + * {@link CarrierConfigManager#CARRIER_ROAMING_NTN_CONNECT_MANUAL} </li> + * <li>The device is in {@link ServiceState#STATE_OUT_OF_SERVICE}, not connected to Wi-Fi, + * and the hysteresis timer defined by {@link CarrierConfigManager + * #KEY_CARRIER_SUPPORTED_SATELLITE_NOTIFICATION_HYSTERESIS_SEC_INT} is expired. </li> + * </ul> + */ + default void onCarrierRoamingNtnEligibleStateChanged(boolean eligible) {} }
diff --git a/satellite_client/src/android/telephony/satellite/wrapper/ProvisionSubscriberIdWrapper.java b/satellite_client/src/android/telephony/satellite/wrapper/ProvisionSubscriberIdWrapper.java index 760fc34..c547ee0 100644 --- a/satellite_client/src/android/telephony/satellite/wrapper/ProvisionSubscriberIdWrapper.java +++ b/satellite_client/src/android/telephony/satellite/wrapper/ProvisionSubscriberIdWrapper.java
@@ -21,13 +21,14 @@ import java.util.Objects; public class ProvisionSubscriberIdWrapper { - @NonNull - private final String subscriberId; + @NonNull private final String subscriberId; private int carrierId; + @NonNull private final String niddApn; - public ProvisionSubscriberIdWrapper(String subscriberId, int carrierId) { + public ProvisionSubscriberIdWrapper(String subscriberId, int carrierId, String niddApn) { this.subscriberId = subscriberId; this.carrierId = carrierId; + this.niddApn = niddApn; } @NonNull @@ -39,6 +40,11 @@ return carrierId; } + @NonNull + public String getNiddApn() { + return niddApn; + } + @Override @NonNull public String toString() { @@ -49,6 +55,10 @@ sb.append("carrierId:"); sb.append(carrierId); + sb.append(","); + + sb.append("niddApn:"); + sb.append(niddApn); return sb.toString(); } @@ -58,11 +68,11 @@ if (o == null || getClass() != o.getClass()) return false; ProvisionSubscriberIdWrapper that = (ProvisionSubscriberIdWrapper) o; return Objects.equals(subscriberId, that.subscriberId) - && carrierId == that.carrierId; + && carrierId == that.carrierId && Objects.equals(niddApn, that.niddApn); } @Override public int hashCode() { - return Objects.hash(subscriberId, carrierId); + return Objects.hash(subscriberId, carrierId, niddApn); } }
diff --git a/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java b/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java index 8bc9e6d..2227a75 100644 --- a/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java +++ b/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java
@@ -104,8 +104,8 @@ SatelliteSupportedStateCallbackWrapper, SatelliteSupportedStateCallback> sSatelliteSupportedStateCallbackWrapperMap = new ConcurrentHashMap<>(); - private static final ConcurrentHashMap< - CarrierRoamingNtnModeListenerWrapper, TelephonyCallback.CarrierRoamingNtnModeListener> + private static final ConcurrentHashMap<CarrierRoamingNtnModeListenerWrapper, + CarrierRoamingNtnModeListener> sCarrierRoamingNtnModeListenerWrapperMap = new ConcurrentHashMap<>(); private static final ConcurrentHashMap<SatelliteCommunicationAllowedStateCallbackWrapper, @@ -156,6 +156,11 @@ * is the last message to emergency service provider indicating no more help is needed. */ public static final int DATAGRAM_TYPE_LAST_SOS_MESSAGE_NO_HELP_NEEDED = 5; + /** + * Datagram type indicating that the message to be sent or received is of type SMS. + */ + public static final int DATAGRAM_TYPE_SMS = 6; + /** @hide */ @IntDef( prefix = "DATAGRAM_TYPE_", @@ -165,7 +170,8 @@ DATAGRAM_TYPE_LOCATION_SHARING, DATAGRAM_TYPE_KEEP_ALIVE, DATAGRAM_TYPE_LAST_SOS_MESSAGE_STILL_NEED_HELP, - DATAGRAM_TYPE_LAST_SOS_MESSAGE_NO_HELP_NEEDED + DATAGRAM_TYPE_LAST_SOS_MESSAGE_NO_HELP_NEEDED, + DATAGRAM_TYPE_SMS }) @Retention(RetentionPolicy.SOURCE) public @interface DatagramType {} @@ -825,31 +831,49 @@ } } + private class CarrierRoamingNtnModeListener extends TelephonyCallback + implements TelephonyCallback.CarrierRoamingNtnModeListener { + + private CarrierRoamingNtnModeListenerWrapper mListenerWrapper; + + public CarrierRoamingNtnModeListener(CarrierRoamingNtnModeListenerWrapper listenerWrapper) { + mListenerWrapper = listenerWrapper; + } + + @Override + public void onCarrierRoamingNtnModeChanged(boolean active) { + logd("onCarrierRoamingNtnModeChanged: active=" + active); + mListenerWrapper.onCarrierRoamingNtnModeChanged(active); + } + + @Override + public void onCarrierRoamingNtnEligibleStateChanged(boolean eligible) { + logd("onCarrierRoamingNtnEligibleStateChanged: eligible=" + eligible); + mListenerWrapper.onCarrierRoamingNtnEligibleStateChanged(eligible); + } + } + /** Register for carrier roaming non-terrestrial network mode changes. */ public void registerForCarrierRoamingNtnModeChanged(int subId, @NonNull @CallbackExecutor Executor executor, @NonNull CarrierRoamingNtnModeListenerWrapper listener) { - TelephonyCallback.CarrierRoamingNtnModeListener internalListener = new TelephonyCallback - .CarrierRoamingNtnModeListener() { - @Override - public void onCarrierRoamingNtnModeChanged(boolean active) { - listener.onCarrierRoamingNtnModeChanged(active); - } - }; + logd("registerForCarrierRoamingNtnModeChanged: subId=" + subId); + CarrierRoamingNtnModeListener internalListener = new CarrierRoamingNtnModeListener(listener); sCarrierRoamingNtnModeListenerWrapperMap.put(listener, internalListener); TelephonyManager tm = mTelephonyManager.createForSubscriptionId(subId); - tm.registerTelephonyCallback(executor, (TelephonyCallback) internalListener); + tm.registerTelephonyCallback(executor, internalListener); } /** Unregister for carrier roaming non-terrestrial network mode changes. */ public void unregisterForCarrierRoamingNtnModeChanged(int subId, @NonNull CarrierRoamingNtnModeListenerWrapper listener) { - TelephonyCallback.CarrierRoamingNtnModeListener internalListener = + logd("unregisterForCarrierRoamingNtnModeChanged: subId=" + subId); + CarrierRoamingNtnModeListener internalListener = sCarrierRoamingNtnModeListenerWrapperMap.get(listener); if (internalListener != null) { TelephonyManager tm = mTelephonyManager.createForSubscriptionId(subId); - tm.unregisterTelephonyCallback((TelephonyCallback) internalListener); + tm.unregisterTelephonyCallback(internalListener); } } @@ -1417,7 +1441,8 @@ @Override public void onResult(List<ProvisionSubscriberId> result) { callback.onResult(result.stream().map(ids -> new ProvisionSubscriberIdWrapper( - ids.getSubscriberId(), ids.getCarrierId())).collect(Collectors.toList())); + ids.getSubscriberId(), ids.getCarrierId(), ids.getNiddApn())).collect( + Collectors.toList())); } @Override @@ -1479,7 +1504,7 @@ }; mSatelliteManager.provisionSatellite(list.stream() .map(wrapper -> new ProvisionSubscriberId(wrapper.getSubscriberId(), - wrapper.getCarrierId())) + wrapper.getCarrierId(), wrapper.getNiddApn())) .collect(Collectors.toList()), executor, internalCallback); }