diff options
Diffstat (limited to 'src/java/com/android/internal/telephony/subscription/SubscriptionDatabaseManager.java')
-rw-r--r-- | src/java/com/android/internal/telephony/subscription/SubscriptionDatabaseManager.java | 71 |
1 files changed, 67 insertions, 4 deletions
diff --git a/src/java/com/android/internal/telephony/subscription/SubscriptionDatabaseManager.java b/src/java/com/android/internal/telephony/subscription/SubscriptionDatabaseManager.java index 124437cd6b..7b927f21e3 100644 --- a/src/java/com/android/internal/telephony/subscription/SubscriptionDatabaseManager.java +++ b/src/java/com/android/internal/telephony/subscription/SubscriptionDatabaseManager.java @@ -48,6 +48,7 @@ import android.util.LocalLog; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; +import com.android.internal.telephony.flags.FeatureFlags; import com.android.internal.telephony.uicc.UiccController; import com.android.internal.util.function.TriConsumer; import com.android.telephony.Rlog; @@ -274,7 +275,13 @@ public class SubscriptionDatabaseManager extends Handler { SubscriptionInfoInternal::getUserId), new AbstractMap.SimpleImmutableEntry<>( SimInfo.COLUMN_SATELLITE_ENABLED, - SubscriptionInfoInternal::getSatelliteEnabled) + SubscriptionInfoInternal::getSatelliteEnabled), + new AbstractMap.SimpleImmutableEntry<>( + SimInfo.COLUMN_SATELLITE_ATTACH_ENABLED_FOR_CARRIER, + SubscriptionInfoInternal::getSatelliteAttachEnabledForCarrier), + new AbstractMap.SimpleImmutableEntry<>( + SimInfo.COLUMN_IS_NTN, + SubscriptionInfoInternal::getOnlyNonTerrestrialNetwork) ); /** @@ -399,7 +406,13 @@ public class SubscriptionDatabaseManager extends Handler { SubscriptionDatabaseManager::setUserId), new AbstractMap.SimpleImmutableEntry<>( SimInfo.COLUMN_SATELLITE_ENABLED, - SubscriptionDatabaseManager::setSatelliteEnabled) + SubscriptionDatabaseManager::setSatelliteEnabled), + new AbstractMap.SimpleImmutableEntry<>( + SimInfo.COLUMN_SATELLITE_ATTACH_ENABLED_FOR_CARRIER, + SubscriptionDatabaseManager::setSatelliteAttachEnabledForCarrier), + new AbstractMap.SimpleImmutableEntry<>( + SimInfo.COLUMN_IS_NTN, + SubscriptionDatabaseManager::setNtn) ); /** @@ -508,7 +521,9 @@ public class SubscriptionDatabaseManager extends Handler { SimInfo.COLUMN_VOIMS_OPT_IN_STATUS, SimInfo.COLUMN_D2D_STATUS_SHARING_SELECTED_CONTACTS, SimInfo.COLUMN_NR_ADVANCED_CALLING_ENABLED, - SimInfo.COLUMN_USER_HANDLE + SimInfo.COLUMN_USER_HANDLE, + SimInfo.COLUMN_SATELLITE_ENABLED, + SimInfo.COLUMN_SATELLITE_ATTACH_ENABLED_FOR_CARRIER ); /** @@ -529,6 +544,10 @@ public class SubscriptionDatabaseManager extends Handler { @NonNull private final Context mContext; + /** The feature flags */ + @NonNull + private final FeatureFlags mFeatureFlags; + /** The callback used for passing events back to {@link SubscriptionManagerService}. */ @NonNull private final SubscriptionDatabaseManagerCallback mCallback; @@ -619,9 +638,11 @@ public class SubscriptionDatabaseManager extends Handler { * * @param context The context. * @param looper Looper for the handler. + * @param featureFlags The feature flags. * @param callback Subscription database callback. */ public SubscriptionDatabaseManager(@NonNull Context context, @NonNull Looper looper, + @NonNull FeatureFlags featureFlags, @NonNull SubscriptionDatabaseManagerCallback callback) { super(looper); log("Created SubscriptionDatabaseManager."); @@ -630,6 +651,7 @@ public class SubscriptionDatabaseManager extends Handler { mUiccController = UiccController.getInstance(); mAsyncMode = mContext.getResources().getBoolean( com.android.internal.R.bool.config_subscription_database_async_update); + mFeatureFlags = featureFlags; initializeDatabase(); } @@ -1988,6 +2010,40 @@ public class SubscriptionDatabaseManager extends Handler { } /** + * Set whether satellite attach for carrier is enabled or disabled by user. + * + * @param subId Subscription id. + * @param isSatelliteAttachEnabledForCarrier Whether satellite attach for carrier is enabled or + * disabled. + * + * @throws IllegalArgumentException if the subscription does not exist. + */ + public void setSatelliteAttachEnabledForCarrier(int subId, + int isSatelliteAttachEnabledForCarrier) { + writeDatabaseAndCacheHelper(subId, + SimInfo.COLUMN_SATELLITE_ATTACH_ENABLED_FOR_CARRIER, + isSatelliteAttachEnabledForCarrier, + SubscriptionInfoInternal.Builder::setSatelliteAttachEnabledForCarrier); + } + + /** + * Set whether the subscription is exclusively used for non-terrestrial networks or not. + * + * @param subId Subscription ID. + * @param isNtn {@code 1} if it is a non-terrestrial network subscription. + * {@code 0} otherwise. + * + * @throws IllegalArgumentException if the subscription does not exist. + */ + public void setNtn(int subId, int isNtn) { + if (!mFeatureFlags.oemEnabledSatelliteFlag()) { + return; + } + writeDatabaseAndCacheHelper(subId, SimInfo.COLUMN_IS_NTN, isNtn, + SubscriptionInfoInternal.Builder::setOnlyNonTerrestrialNetwork); + } + + /** * Set whether group of the subscription is disabled. This is only useful if it's a grouped * opportunistic subscription. In this case, if all primary (non-opportunistic) * subscriptions in the group are deactivated (unplugged pSIM or deactivated eSIM profile), @@ -2243,7 +2299,14 @@ public class SubscriptionDatabaseManager extends Handler { .setUserId(cursor.getInt(cursor.getColumnIndexOrThrow( SimInfo.COLUMN_USER_HANDLE))) .setSatelliteEnabled(cursor.getInt(cursor.getColumnIndexOrThrow( - SimInfo.COLUMN_SATELLITE_ENABLED))); + SimInfo.COLUMN_SATELLITE_ENABLED))) + .setSatelliteAttachEnabledForCarrier(cursor.getInt( + cursor.getColumnIndexOrThrow( + SimInfo.COLUMN_SATELLITE_ATTACH_ENABLED_FOR_CARRIER))); + if (mFeatureFlags.oemEnabledSatelliteFlag()) { + builder.setOnlyNonTerrestrialNetwork(cursor.getInt(cursor.getColumnIndexOrThrow( + SimInfo.COLUMN_IS_NTN))); + } return builder.build(); } |