Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 257b63ee authored by Thomas Nguyen's avatar Thomas Nguyen
Browse files

Fall back to reading config_satellite_sim_identifier from device config

Can't override resource overlay config from adb. Thus, add a code to
fall back to read this config from device config when the overlay config
is empty && mock modem is enabled on the device.

Bug: 307905732
Test: manually test and verify the log as exptecd. SMS, MMS, call with
live network.

Change-Id: I807b93bb270e4390f4b616bb93bfa313dfe52f68
parent 3f666021
Loading
Loading
Loading
Loading
+25 −1
Original line number Diff line number Diff line
@@ -1300,6 +1300,7 @@ public class SatelliteController extends Handler {
     */
    public boolean isSatelliteEnabled() {
        if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
            logd("isSatelliteEnabled: oemEnabledSatelliteFlag is disabled");
            return false;
        }
        if (mIsSatelliteEnabled == null) return false;
@@ -1333,6 +1334,7 @@ public class SatelliteController extends Handler {
     */
    public boolean isDemoModeEnabled() {
        if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
            logd("isDemoModeEnabled: oemEnabledSatelliteFlag is disabled");
            return false;
        }
        return mIsDemoModeEnabled;
@@ -1347,6 +1349,7 @@ public class SatelliteController extends Handler {
     */
    public void requestIsSatelliteSupported(int subId, @NonNull ResultReceiver result) {
        if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
            logd("requestIsSatelliteSupported: oemEnabledSatelliteFlag is disabled");
            result.send(SatelliteManager.SATELLITE_RESULT_NOT_SUPPORTED, null);
            return;
        }
@@ -1558,6 +1561,8 @@ public class SatelliteController extends Handler {
    public void unregisterForSatelliteProvisionStateChanged(
            int subId, @NonNull ISatelliteProvisionStateCallback callback) {
        if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
            logd("unregisterForSatelliteProvisionStateChanged: "
                    + "oemEnabledSatelliteFlag is disabled");
            return;
        }
        mSatelliteProvisionStateChangedListeners.remove(callback.asBinder());
@@ -1602,6 +1607,7 @@ public class SatelliteController extends Handler {
    @SatelliteManager.SatelliteResult public int registerForSatelliteModemStateChanged(int subId,
            @NonNull ISatelliteStateCallback callback) {
        if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
            logd("registerForSatelliteModemStateChanged: oemEnabledSatelliteFlag is disabled");
            return SatelliteManager.SATELLITE_RESULT_NOT_SUPPORTED;
        }
        if (mSatelliteSessionController != null) {
@@ -1625,6 +1631,7 @@ public class SatelliteController extends Handler {
    public void unregisterForSatelliteModemStateChanged(int subId,
            @NonNull ISatelliteStateCallback callback) {
        if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
            logd("unregisterForSatelliteModemStateChanged: oemEnabledSatelliteFlag is disabled");
            return;
        }
        if (mSatelliteSessionController != null) {
@@ -1646,6 +1653,7 @@ public class SatelliteController extends Handler {
    @SatelliteManager.SatelliteResult public int registerForSatelliteDatagram(int subId,
            @NonNull ISatelliteDatagramCallback callback) {
        if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
            logd("registerForSatelliteDatagram: oemEnabledSatelliteFlag is disabled");
            return SatelliteManager.SATELLITE_RESULT_NOT_SUPPORTED;
        }
        if (!mSatelliteModemInterface.isSatelliteServiceSupported()) {
@@ -1665,6 +1673,7 @@ public class SatelliteController extends Handler {
    public void unregisterForSatelliteDatagram(int subId,
            @NonNull ISatelliteDatagramCallback callback) {
        if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
            logd("unregisterForSatelliteDatagram: oemEnabledSatelliteFlag is disabled");
            return;
        }
        if (!mSatelliteModemInterface.isSatelliteServiceSupported()) {
@@ -1779,6 +1788,7 @@ public class SatelliteController extends Handler {
     */
    public void setDeviceAlignedWithSatellite(@NonNull int subId, @NonNull boolean isAligned) {
        if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
            logd("setDeviceAlignedWithSatellite: oemEnabledSatelliteFlag is disabled");
            return;
        }
        mDatagramController.setDeviceAlignedWithSatellite(isAligned);
@@ -1871,6 +1881,8 @@ public class SatelliteController extends Handler {
     */
    @NonNull public Set<Integer> getSatelliteAttachRestrictionReasonsForCarrier(int subId) {
        if (!mFeatureFlags.carrierEnabledSatelliteFlag()) {
            logd("getSatelliteAttachRestrictionReasonsForCarrier: carrierEnabledSatelliteFlag is "
                    + "disabled");
            return new HashSet<>();
        }
        synchronized (mIsSatelliteEnabledLock) {
@@ -1961,9 +1973,13 @@ public class SatelliteController extends Handler {
     */
    public boolean setSatelliteServicePackageName(@Nullable String servicePackageName) {
        if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
            logd("setSatelliteServicePackageName: oemEnabledSatelliteFlag is disabled");
            return false;
        }
        if (!isMockModemAllowed()) {
            logd("setSatelliteServicePackageName: mock modem not allowed");
            return false;
        }
        if (!isMockModemAllowed()) return false;

        // Cached states need to be cleared whenever switching satellite vendor services.
        logd("setSatelliteServicePackageName: Resetting cached states");
@@ -1993,6 +2009,7 @@ public class SatelliteController extends Handler {
     */
    public boolean setSatelliteListeningTimeoutDuration(long timeoutMillis) {
        if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
            logd("setSatelliteListeningTimeoutDuration: oemEnabledSatelliteFlag is disabled");
            return false;
        }
        if (mSatelliteSessionController == null) {
@@ -2011,6 +2028,7 @@ public class SatelliteController extends Handler {
     */
    public boolean setSatelliteDeviceAlignedTimeoutDuration(long timeoutMillis) {
        if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
            logd("setSatelliteDeviceAlignedTimeoutDuration: oemEnabledSatelliteFlag is disabled");
            return false;
        }
        return mDatagramController.setSatelliteDeviceAlignedTimeoutDuration(timeoutMillis);
@@ -2025,6 +2043,7 @@ public class SatelliteController extends Handler {
     */
    public boolean setSatelliteGatewayServicePackageName(@Nullable String servicePackageName) {
        if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
            logd("setSatelliteGatewayServicePackageName: oemEnabledSatelliteFlag is disabled");
            return false;
        }
        if (mSatelliteSessionController == null) {
@@ -2046,6 +2065,7 @@ public class SatelliteController extends Handler {
    public boolean setSatellitePointingUiClassName(
            @Nullable String packageName, @Nullable String className) {
        if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
            logd("setSatellitePointingUiClassName: oemEnabledSatelliteFlag is disabled");
            return false;
        }
        return mPointingAppController.setSatellitePointingUiClassName(packageName, className);
@@ -2065,6 +2085,7 @@ public class SatelliteController extends Handler {
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
    public void onSatelliteServiceConnected() {
        if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
            logd("onSatelliteServiceConnected: oemEnabledSatelliteFlag is disabled");
            return;
        }
        if (mSatelliteModemInterface.isSatelliteServiceSupported()) {
@@ -2115,6 +2136,7 @@ public class SatelliteController extends Handler {
     */
    public boolean isSatelliteSupported() {
        if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
            logd("isSatelliteSupported: oemEnabledSatelliteFlag is disabled");
            return false;
        }
        Boolean supported = isSatelliteSupportedInternal();
@@ -2128,6 +2150,7 @@ public class SatelliteController extends Handler {
    @NonNull
    public List<String> getSatellitePlmnList(int subId) {
        if (!mFeatureFlags.carrierEnabledSatelliteFlag()) {
            logd("getSatellitePlmnList: carrierEnabledSatelliteFlag is disabled");
            return new ArrayList<>();
        }
        synchronized (mSupportedSatelliteServicesLock) {
@@ -2148,6 +2171,7 @@ public class SatelliteController extends Handler {
    @NonNull
    public List<Integer> getSupportedSatelliteServices(int subId, String plmn) {
        if (!mFeatureFlags.carrierEnabledSatelliteFlag()) {
            logd("getSupportedSatelliteServices: carrierEnabledSatelliteFlag is disabled");
            return new ArrayList<>();
        }
        synchronized (mSupportedSatelliteServicesLock) {
+19 −4
Original line number Diff line number Diff line
@@ -44,9 +44,11 @@ import android.os.ParcelUuid;
import android.os.PersistableBundle;
import android.os.Process;
import android.os.RemoteException;
import android.os.SystemProperties;
import android.os.TelephonyServiceManager;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.DeviceConfig;
import android.provider.Settings;
import android.provider.Telephony.SimInfo;
import android.service.carrier.CarrierIdentifier;
@@ -130,6 +132,8 @@ import java.util.stream.IntStream;
 */
public class SubscriptionManagerService extends ISub.Stub {
    private static final String LOG_TAG = "SMSVC";
    private static final String ALLOW_MOCK_MODEM_PROPERTY = "persist.radio.allow_mock_modem";
    private static final String BOOT_ALLOW_MOCK_MODEM_PROPERTY = "ro.boot.radio.allow_mock_modem";

    /** Whether enabling verbose debugging message or not. */
    private static final boolean VDBG = false;
@@ -1145,6 +1149,8 @@ public class SubscriptionManagerService extends ISub.Stub {
                        if (mFeatureFlags.oemEnabledSatelliteFlag()) {
                            builder.setOnlyNonTerrestrialNetwork(
                                    isSatellitePlmn(mcc + mnc) ? 1 : 0);
                        } else {
                            log("updateEmbeddedSubscriptions: oemEnabledSatelliteFlag is disabled");
                        }
                    }
                    // If cardId = unsupported or un-initialized, we have no reason to update DB.
@@ -3983,6 +3989,7 @@ public class SubscriptionManagerService extends ISub.Stub {
     */
    private boolean isSatellitePlmn(@NonNull String mccMnc) {
        if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
            log("isSatellitePlmn: oemEnabledSatelliteFlag is disabled");
            return false;
        }

@@ -3993,11 +4000,19 @@ public class SubscriptionManagerService extends ISub.Stub {
        } catch (Resources.NotFoundException ex) {
            loge("isSatellitePlmn: id= " + id + ", ex=" + ex);
        }
        if (overlayMccMnc == null) {
            return false;
        } else {
            return mccMnc.equals(overlayMccMnc);
        if (TextUtils.isEmpty(overlayMccMnc) && isMockModemAllowed()) {
            log("isSatellitePlmn: Read config_satellite_sim_identifier from device config");
            overlayMccMnc = DeviceConfig.getString(DeviceConfig.NAMESPACE_TELEPHONY,
                    "config_satellite_sim_identifier", "");
        }
        log("isSatellitePlmn: overlayMccMnc=" + overlayMccMnc + ", mccMnc=" + mccMnc);
        return TextUtils.equals(mccMnc, overlayMccMnc);
    }

    private boolean isMockModemAllowed() {
        boolean isAllowed = SystemProperties.getBoolean(ALLOW_MOCK_MODEM_PROPERTY, false);
        return (SystemProperties.getBoolean(ALLOW_MOCK_MODEM_PROPERTY, false)
                || SystemProperties.getBoolean(BOOT_ALLOW_MOCK_MODEM_PROPERTY, false));
    }

    /**