aboutsummaryrefslogtreecommitdiff
path: root/src/java/com/android/internal/telephony/subscription/SubscriptionDatabaseManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/java/com/android/internal/telephony/subscription/SubscriptionDatabaseManager.java')
-rw-r--r--src/java/com/android/internal/telephony/subscription/SubscriptionDatabaseManager.java71
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();
}