Loading src/java/com/android/internal/telephony/DefaultPhoneNotifier.java +8 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import android.telephony.emergency.EmergencyNumber; import android.telephony.ims.ImsCallSession; import android.telephony.ims.ImsReasonInfo; import android.telephony.ims.MediaQualityStatus; import android.telephony.satellite.NtnSignalStrength; import com.android.internal.telephony.flags.FeatureFlags; import com.android.telephony.Rlog; Loading Loading @@ -348,6 +349,13 @@ public class DefaultPhoneNotifier implements PhoneNotifier { sender.getSubId(), availableServices); } @Override public void notifyCarrierRoamingNtnSignalStrengthChanged(Phone sender, @NonNull NtnSignalStrength ntnSignalStrength) { mTelephonyRegistryMgr.notifyCarrierRoamingNtnSignalStrengthChanged( sender.getSubId(), ntnSignalStrength); } /** * Convert the {@link Call.State} enum into the PreciseCallState.PRECISE_CALL_STATE_* constants * for the public API. Loading src/java/com/android/internal/telephony/Phone.java +13 −0 Original line number Diff line number Diff line Loading @@ -74,6 +74,7 @@ import android.telephony.emergency.EmergencyNumber; import android.telephony.ims.RegistrationManager; import android.telephony.ims.feature.MmTelFeature; import android.telephony.ims.stub.ImsRegistrationImplBase; import android.telephony.satellite.NtnSignalStrength; import android.text.TextUtils; import android.util.LocalLog; import android.util.Log; Loading Loading @@ -5380,6 +5381,18 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { mNotifier.notifyCarrierRoamingNtnAvailableServicesChanged(this, availableServices); } /** * Notify external listeners that carrier roaming non-terrestrial network * signal strength changed. * @param ntnSignalStrength non-terrestrial network signal strength. */ public void notifyCarrierRoamingNtnSignalStrengthChanged( @NonNull NtnSignalStrength ntnSignalStrength) { logd("notifyCarrierRoamingNtnSignalStrengthChanged: ntnSignalStrength=" + ntnSignalStrength.getLevel()); mNotifier.notifyCarrierRoamingNtnSignalStrengthChanged(this, ntnSignalStrength); } public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { pw.println("Phone: subId=" + getSubId()); pw.println(" mPhoneId=" + mPhoneId); Loading src/java/com/android/internal/telephony/PhoneNotifier.java +5 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ import android.telephony.TelephonyManager.EmergencyCallbackModeType; import android.telephony.emergency.EmergencyNumber; import android.telephony.ims.ImsReasonInfo; import android.telephony.ims.MediaQualityStatus; import android.telephony.satellite.NtnSignalStrength; import java.util.List; import java.util.Set; Loading Loading @@ -169,4 +170,8 @@ public interface PhoneNotifier { /** Notify carrier roaming non-terrestrial available services changed. */ void notifyCarrierRoamingNtnAvailableServicesChanged( Phone sender, @NetworkRegistrationInfo.ServiceType int[] availableServices); /** Notify carrier roaming non-terrestrial network signal strength changed. */ void notifyCarrierRoamingNtnSignalStrengthChanged(Phone sender, @NonNull NtnSignalStrength ntnSignalStrength); } src/java/com/android/internal/telephony/satellite/SatelliteController.java +69 −18 Original line number Diff line number Diff line Loading @@ -291,6 +291,7 @@ public class SatelliteController extends Handler { protected static final int EVENT_SATELLITE_REGISTRATION_FAILURE = 54; private static final int EVENT_TERRESTRIAL_NETWORK_AVAILABLE_CHANGED = 55; private static final int EVENT_SET_NETWORK_SELECTION_AUTO_DONE = 56; private static final int EVENT_SIGNAL_STRENGTH_CHANGED = 57; @NonNull private static SatelliteController sInstance; @NonNull private final Context mContext; Loading Loading @@ -516,6 +517,10 @@ public class SatelliteController extends Handler { @NonNull private final Map<Integer, List<Integer>> mSatModeCapabilitiesForCarrierRoaming = new HashMap<>(); @GuardedBy("mSatelliteConnectedLock") private SparseArray<NtnSignalStrength> mLastNotifiedCarrierRoamingNtnSignalStrength = new SparseArray<>(); /** * This is used for testing only. When mEnforcedEmergencyCallToSatelliteHandoverType is valid, * Telephony will ignore the IMS registration status and cellular availability, and always send Loading Loading @@ -815,6 +820,7 @@ public class SatelliteController extends Handler { registerForPendingDatagramCount(); registerForSatelliteModemStateChanged(); registerForServiceStateChanged(); registerForSignalStrengthChanged(); mContentResolver = mContext.getContentResolver(); mCarrierConfigManager = mContext.getSystemService(CarrierConfigManager.class); Loading Loading @@ -1701,6 +1707,7 @@ public class SatelliteController extends Handler { ploge("EVENT_SATELLITE_MODEM_STATE_CHANGED: result is null"); } else { handleEventSatelliteModemStateChanged((int) ar.result); updateLastNotifiedCarrierRoamingNtnSignalStrengthAndNotify(getSatellitePhone()); } break; Loading Loading @@ -1790,6 +1797,7 @@ public class SatelliteController extends Handler { ploge("EVENT_NTN_SIGNAL_STRENGTH_CHANGED: result is null"); } else { handleEventNtnSignalStrengthChanged((NtnSignalStrength) ar.result); updateLastNotifiedCarrierRoamingNtnSignalStrengthAndNotify(getSatellitePhone()); } break; } Loading Loading @@ -2003,6 +2011,13 @@ public class SatelliteController extends Handler { break; } case EVENT_SIGNAL_STRENGTH_CHANGED: { ar = (AsyncResult) msg.obj; int phoneId = (int) ar.userObj; updateLastNotifiedCarrierRoamingNtnSignalStrengthAndNotify( PhoneFactory.getPhone(phoneId)); } default: Log.w(TAG, "SatelliteControllerHandler: unexpected message code: " + msg.what); Loading Loading @@ -3896,24 +3911,7 @@ public class SatelliteController extends Handler { * else {@return false} */ public boolean isInCarrierRoamingNbIotNtn() { if (!mFeatureFlags.carrierRoamingNbIotNtn()) { plogd("isInCarrierRoamingNbIotNtn: carrier roaming nb iot ntn " + "feature flag is disabled"); return false; } if (!isSatelliteEnabled()) { plogd("iisInCarrierRoamingNbIotNtn: satellite is disabled"); return false; } Phone satellitePhone = getSatellitePhone(); if (!isCarrierRoamingNtnEligible(satellitePhone)) { plogd("isInCarrierRoamingNbIotNtn: not carrier roaming ntn eligible."); return false; } plogd("isInCarrierRoamingNbIotNtn: carrier roaming ntn eligible."); return true; return isInCarrierRoamingNbIotNtn(getSatellitePhone()); } /** Loading Loading @@ -5693,6 +5691,13 @@ public class SatelliteController extends Handler { } } private void registerForSignalStrengthChanged() { for (Phone phone : PhoneFactory.getPhones()) { phone.getSignalStrengthController().registerForSignalStrengthChanged(this, EVENT_SIGNAL_STRENGTH_CHANGED, phone.getPhoneId()); } } private void handleEventServiceStateChanged() { handleStateChangedForCarrierRoamingNtnEligibility(); handleServiceStateForSatelliteConnectionViaCarrier(); Loading Loading @@ -5758,6 +5763,7 @@ public class SatelliteController extends Handler { mWasSatelliteConnectedViaCarrier.put(subId, false); } updateLastNotifiedNtnModeAndNotify(phone); updateLastNotifiedCarrierRoamingNtnSignalStrengthAndNotify(phone); } } determineAutoConnectSystemNotification(); Loading @@ -5778,6 +5784,7 @@ public class SatelliteController extends Handler { if (!initialized) mInitialized.put(subId, true); mLastNotifiedNtnMode.put(subId, currNtnMode); phone.notifyCarrierRoamingNtnModeChanged(currNtnMode); updateLastNotifiedCarrierRoamingNtnSignalStrengthAndNotify(phone); logCarrierRoamingSatelliteSessionStats(phone, lastNotifiedNtnMode, currNtnMode); if(mIsNotificationShowing && !currNtnMode) { dismissSatelliteNotification(); Loading Loading @@ -7694,6 +7701,50 @@ public class SatelliteController extends Handler { logd("notifyEnabledStateChanged to " + isEnabled); } private NtnSignalStrength getCarrierRoamingNtnSignalStrength(@NonNull Phone phone) { NtnSignalStrength carrierRoamingNtnSignalStrength = new NtnSignalStrength( NTN_SIGNAL_STRENGTH_NONE); if (isInCarrierRoamingNbIotNtn(phone)) { if (mSatelliteSessionController.isInConnectedState()) { synchronized (mNtnSignalsStrengthLock) { carrierRoamingNtnSignalStrength = mNtnSignalStrength; } plogd("getCarrierRoamingNtnSignalStrength[phoneId=" + phone.getPhoneId() + "]: in carrier roaming nb iot ntn mode."); } } else if (isInSatelliteModeForCarrierRoaming(phone)) { ServiceState serviceState = phone.getServiceState(); if (serviceState.getState() != ServiceState.STATE_OUT_OF_SERVICE) { carrierRoamingNtnSignalStrength = new NtnSignalStrength( phone.getSignalStrength().getLevel()); plogd("getCarrierRoamingNtnSignalStrength[phoneId=" + phone.getPhoneId() + "]: is in satellite mode for carrier roaming."); } } return carrierRoamingNtnSignalStrength; } private void updateLastNotifiedCarrierRoamingNtnSignalStrengthAndNotify(@Nullable Phone phone) { if (!mFeatureFlags.carrierRoamingNbIotNtn()) return; if (phone == null) { return; } NtnSignalStrength currSignalStrength = getCarrierRoamingNtnSignalStrength(phone); int subId = phone.getSubId(); synchronized (mSatelliteConnectedLock) { NtnSignalStrength lastNotifiedSignalStrength = mLastNotifiedCarrierRoamingNtnSignalStrength.get(subId); if (lastNotifiedSignalStrength == null || lastNotifiedSignalStrength.getLevel() != currSignalStrength.getLevel()) { mLastNotifiedCarrierRoamingNtnSignalStrength.put(subId, currSignalStrength); phone.notifyCarrierRoamingNtnSignalStrengthChanged(currSignalStrength); } } } /** Returns whether to send SMS to DatagramDispatcher or not. */ public boolean shouldSendSmsToDatagramDispatcher(@NonNull Phone phone) { if (!isInCarrierRoamingNbIotNtn(phone)) { Loading src/java/com/android/internal/telephony/satellite/SatelliteSessionController.java +11 −0 Original line number Diff line number Diff line Loading @@ -592,6 +592,17 @@ public class SatelliteSessionController extends StateMachine { return getCurrentState() == mDisablingState; } /** * Get whether state machine is in connected state. * * @return {@code true} if state machine is in connected state and {@code false} otherwise. */ public boolean isInConnectedState() { if (DBG) plogd("isInConnectedState: getCurrentState=" + getCurrentState()); return getCurrentState() == mConnectedState; } /** * Release all resource. */ Loading Loading
src/java/com/android/internal/telephony/DefaultPhoneNotifier.java +8 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import android.telephony.emergency.EmergencyNumber; import android.telephony.ims.ImsCallSession; import android.telephony.ims.ImsReasonInfo; import android.telephony.ims.MediaQualityStatus; import android.telephony.satellite.NtnSignalStrength; import com.android.internal.telephony.flags.FeatureFlags; import com.android.telephony.Rlog; Loading Loading @@ -348,6 +349,13 @@ public class DefaultPhoneNotifier implements PhoneNotifier { sender.getSubId(), availableServices); } @Override public void notifyCarrierRoamingNtnSignalStrengthChanged(Phone sender, @NonNull NtnSignalStrength ntnSignalStrength) { mTelephonyRegistryMgr.notifyCarrierRoamingNtnSignalStrengthChanged( sender.getSubId(), ntnSignalStrength); } /** * Convert the {@link Call.State} enum into the PreciseCallState.PRECISE_CALL_STATE_* constants * for the public API. Loading
src/java/com/android/internal/telephony/Phone.java +13 −0 Original line number Diff line number Diff line Loading @@ -74,6 +74,7 @@ import android.telephony.emergency.EmergencyNumber; import android.telephony.ims.RegistrationManager; import android.telephony.ims.feature.MmTelFeature; import android.telephony.ims.stub.ImsRegistrationImplBase; import android.telephony.satellite.NtnSignalStrength; import android.text.TextUtils; import android.util.LocalLog; import android.util.Log; Loading Loading @@ -5380,6 +5381,18 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { mNotifier.notifyCarrierRoamingNtnAvailableServicesChanged(this, availableServices); } /** * Notify external listeners that carrier roaming non-terrestrial network * signal strength changed. * @param ntnSignalStrength non-terrestrial network signal strength. */ public void notifyCarrierRoamingNtnSignalStrengthChanged( @NonNull NtnSignalStrength ntnSignalStrength) { logd("notifyCarrierRoamingNtnSignalStrengthChanged: ntnSignalStrength=" + ntnSignalStrength.getLevel()); mNotifier.notifyCarrierRoamingNtnSignalStrengthChanged(this, ntnSignalStrength); } public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { pw.println("Phone: subId=" + getSubId()); pw.println(" mPhoneId=" + mPhoneId); Loading
src/java/com/android/internal/telephony/PhoneNotifier.java +5 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ import android.telephony.TelephonyManager.EmergencyCallbackModeType; import android.telephony.emergency.EmergencyNumber; import android.telephony.ims.ImsReasonInfo; import android.telephony.ims.MediaQualityStatus; import android.telephony.satellite.NtnSignalStrength; import java.util.List; import java.util.Set; Loading Loading @@ -169,4 +170,8 @@ public interface PhoneNotifier { /** Notify carrier roaming non-terrestrial available services changed. */ void notifyCarrierRoamingNtnAvailableServicesChanged( Phone sender, @NetworkRegistrationInfo.ServiceType int[] availableServices); /** Notify carrier roaming non-terrestrial network signal strength changed. */ void notifyCarrierRoamingNtnSignalStrengthChanged(Phone sender, @NonNull NtnSignalStrength ntnSignalStrength); }
src/java/com/android/internal/telephony/satellite/SatelliteController.java +69 −18 Original line number Diff line number Diff line Loading @@ -291,6 +291,7 @@ public class SatelliteController extends Handler { protected static final int EVENT_SATELLITE_REGISTRATION_FAILURE = 54; private static final int EVENT_TERRESTRIAL_NETWORK_AVAILABLE_CHANGED = 55; private static final int EVENT_SET_NETWORK_SELECTION_AUTO_DONE = 56; private static final int EVENT_SIGNAL_STRENGTH_CHANGED = 57; @NonNull private static SatelliteController sInstance; @NonNull private final Context mContext; Loading Loading @@ -516,6 +517,10 @@ public class SatelliteController extends Handler { @NonNull private final Map<Integer, List<Integer>> mSatModeCapabilitiesForCarrierRoaming = new HashMap<>(); @GuardedBy("mSatelliteConnectedLock") private SparseArray<NtnSignalStrength> mLastNotifiedCarrierRoamingNtnSignalStrength = new SparseArray<>(); /** * This is used for testing only. When mEnforcedEmergencyCallToSatelliteHandoverType is valid, * Telephony will ignore the IMS registration status and cellular availability, and always send Loading Loading @@ -815,6 +820,7 @@ public class SatelliteController extends Handler { registerForPendingDatagramCount(); registerForSatelliteModemStateChanged(); registerForServiceStateChanged(); registerForSignalStrengthChanged(); mContentResolver = mContext.getContentResolver(); mCarrierConfigManager = mContext.getSystemService(CarrierConfigManager.class); Loading Loading @@ -1701,6 +1707,7 @@ public class SatelliteController extends Handler { ploge("EVENT_SATELLITE_MODEM_STATE_CHANGED: result is null"); } else { handleEventSatelliteModemStateChanged((int) ar.result); updateLastNotifiedCarrierRoamingNtnSignalStrengthAndNotify(getSatellitePhone()); } break; Loading Loading @@ -1790,6 +1797,7 @@ public class SatelliteController extends Handler { ploge("EVENT_NTN_SIGNAL_STRENGTH_CHANGED: result is null"); } else { handleEventNtnSignalStrengthChanged((NtnSignalStrength) ar.result); updateLastNotifiedCarrierRoamingNtnSignalStrengthAndNotify(getSatellitePhone()); } break; } Loading Loading @@ -2003,6 +2011,13 @@ public class SatelliteController extends Handler { break; } case EVENT_SIGNAL_STRENGTH_CHANGED: { ar = (AsyncResult) msg.obj; int phoneId = (int) ar.userObj; updateLastNotifiedCarrierRoamingNtnSignalStrengthAndNotify( PhoneFactory.getPhone(phoneId)); } default: Log.w(TAG, "SatelliteControllerHandler: unexpected message code: " + msg.what); Loading Loading @@ -3896,24 +3911,7 @@ public class SatelliteController extends Handler { * else {@return false} */ public boolean isInCarrierRoamingNbIotNtn() { if (!mFeatureFlags.carrierRoamingNbIotNtn()) { plogd("isInCarrierRoamingNbIotNtn: carrier roaming nb iot ntn " + "feature flag is disabled"); return false; } if (!isSatelliteEnabled()) { plogd("iisInCarrierRoamingNbIotNtn: satellite is disabled"); return false; } Phone satellitePhone = getSatellitePhone(); if (!isCarrierRoamingNtnEligible(satellitePhone)) { plogd("isInCarrierRoamingNbIotNtn: not carrier roaming ntn eligible."); return false; } plogd("isInCarrierRoamingNbIotNtn: carrier roaming ntn eligible."); return true; return isInCarrierRoamingNbIotNtn(getSatellitePhone()); } /** Loading Loading @@ -5693,6 +5691,13 @@ public class SatelliteController extends Handler { } } private void registerForSignalStrengthChanged() { for (Phone phone : PhoneFactory.getPhones()) { phone.getSignalStrengthController().registerForSignalStrengthChanged(this, EVENT_SIGNAL_STRENGTH_CHANGED, phone.getPhoneId()); } } private void handleEventServiceStateChanged() { handleStateChangedForCarrierRoamingNtnEligibility(); handleServiceStateForSatelliteConnectionViaCarrier(); Loading Loading @@ -5758,6 +5763,7 @@ public class SatelliteController extends Handler { mWasSatelliteConnectedViaCarrier.put(subId, false); } updateLastNotifiedNtnModeAndNotify(phone); updateLastNotifiedCarrierRoamingNtnSignalStrengthAndNotify(phone); } } determineAutoConnectSystemNotification(); Loading @@ -5778,6 +5784,7 @@ public class SatelliteController extends Handler { if (!initialized) mInitialized.put(subId, true); mLastNotifiedNtnMode.put(subId, currNtnMode); phone.notifyCarrierRoamingNtnModeChanged(currNtnMode); updateLastNotifiedCarrierRoamingNtnSignalStrengthAndNotify(phone); logCarrierRoamingSatelliteSessionStats(phone, lastNotifiedNtnMode, currNtnMode); if(mIsNotificationShowing && !currNtnMode) { dismissSatelliteNotification(); Loading Loading @@ -7694,6 +7701,50 @@ public class SatelliteController extends Handler { logd("notifyEnabledStateChanged to " + isEnabled); } private NtnSignalStrength getCarrierRoamingNtnSignalStrength(@NonNull Phone phone) { NtnSignalStrength carrierRoamingNtnSignalStrength = new NtnSignalStrength( NTN_SIGNAL_STRENGTH_NONE); if (isInCarrierRoamingNbIotNtn(phone)) { if (mSatelliteSessionController.isInConnectedState()) { synchronized (mNtnSignalsStrengthLock) { carrierRoamingNtnSignalStrength = mNtnSignalStrength; } plogd("getCarrierRoamingNtnSignalStrength[phoneId=" + phone.getPhoneId() + "]: in carrier roaming nb iot ntn mode."); } } else if (isInSatelliteModeForCarrierRoaming(phone)) { ServiceState serviceState = phone.getServiceState(); if (serviceState.getState() != ServiceState.STATE_OUT_OF_SERVICE) { carrierRoamingNtnSignalStrength = new NtnSignalStrength( phone.getSignalStrength().getLevel()); plogd("getCarrierRoamingNtnSignalStrength[phoneId=" + phone.getPhoneId() + "]: is in satellite mode for carrier roaming."); } } return carrierRoamingNtnSignalStrength; } private void updateLastNotifiedCarrierRoamingNtnSignalStrengthAndNotify(@Nullable Phone phone) { if (!mFeatureFlags.carrierRoamingNbIotNtn()) return; if (phone == null) { return; } NtnSignalStrength currSignalStrength = getCarrierRoamingNtnSignalStrength(phone); int subId = phone.getSubId(); synchronized (mSatelliteConnectedLock) { NtnSignalStrength lastNotifiedSignalStrength = mLastNotifiedCarrierRoamingNtnSignalStrength.get(subId); if (lastNotifiedSignalStrength == null || lastNotifiedSignalStrength.getLevel() != currSignalStrength.getLevel()) { mLastNotifiedCarrierRoamingNtnSignalStrength.put(subId, currSignalStrength); phone.notifyCarrierRoamingNtnSignalStrengthChanged(currSignalStrength); } } } /** Returns whether to send SMS to DatagramDispatcher or not. */ public boolean shouldSendSmsToDatagramDispatcher(@NonNull Phone phone) { if (!isInCarrierRoamingNbIotNtn(phone)) { Loading
src/java/com/android/internal/telephony/satellite/SatelliteSessionController.java +11 −0 Original line number Diff line number Diff line Loading @@ -592,6 +592,17 @@ public class SatelliteSessionController extends StateMachine { return getCurrentState() == mDisablingState; } /** * Get whether state machine is in connected state. * * @return {@code true} if state machine is in connected state and {@code false} otherwise. */ public boolean isInConnectedState() { if (DBG) plogd("isInConnectedState: getCurrentState=" + getCurrentState()); return getCurrentState() == mConnectedState; } /** * Release all resource. */ Loading