[MEP] psim->esim, don't skip carrierConfigChanged with subId -1

After simSlotMapping from psim to esim, since the esim can not be
enabled by the modem, the UI start to enable the esim. Therefore,
when receiver receive the first carrier config changed, UI can
exit waiting state, and then start to enable esim.

Bug: 246556280
Test: Build pass. Verify by QA
Change-Id: I4b8b2f3d1dd014fc1ddb92ebffa614d6daf9d142
This commit is contained in:
SongFerngWang
2022-09-27 20:45:17 +08:00
parent 51cabc5553
commit 078ecbd765
2 changed files with 21 additions and 6 deletions

View File

@@ -32,9 +32,20 @@ public class CarrierConfigChangedReceiver extends BroadcastReceiver {
CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED; CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED;
private final CountDownLatch mLatch; private final CountDownLatch mLatch;
private final boolean mIsWaitingForValidSubId;
public CarrierConfigChangedReceiver(CountDownLatch latch) { /**
* This is the CarrierConfigChanged receiver. If it receives the carrier config changed, then it
* call the CountDownLatch.countDown().
* If the "isWaitingForValidSubId" is true, then the receiver skip the carrier config changed
* with the subId = -1. The receiver executes the countDown when the CarrierConfigChanged
* with valid subId.
* If the "isWaitingForValidSubId" is false, then the receiver executes the countDown when
* receiving any CarrierConfigChanged.
*/
public CarrierConfigChangedReceiver(CountDownLatch latch, boolean isWaitingForValidSubId) {
mLatch = latch; mLatch = latch;
mIsWaitingForValidSubId = isWaitingForValidSubId;
} }
public void registerOn(Context context) { public void registerOn(Context context) {
@@ -53,7 +64,8 @@ public class CarrierConfigChangedReceiver extends BroadcastReceiver {
} }
private void checkSubscriptionIndex(Intent intent) { private void checkSubscriptionIndex(Intent intent) {
if (intent.hasExtra(CarrierConfigManager.EXTRA_SUBSCRIPTION_INDEX)) { if (intent.hasExtra(CarrierConfigManager.EXTRA_SUBSCRIPTION_INDEX)
|| !mIsWaitingForValidSubId) {
int subId = intent.getIntExtra(CarrierConfigManager.EXTRA_SUBSCRIPTION_INDEX, -1); int subId = intent.getIntExtra(CarrierConfigManager.EXTRA_SUBSCRIPTION_INDEX, -1);
Log.i(TAG, "subId from config changed: " + subId); Log.i(TAG, "subId from config changed: " + subId);
mLatch.countDown(); mLatch.countDown();

View File

@@ -141,7 +141,8 @@ public class UiccSlotUtil {
inactiveRemovableSlot, inactiveRemovableSlot,
/*removable sim's port Id*/ TelephonyManager.DEFAULT_PORT_INDEX, /*removable sim's port Id*/ TelephonyManager.DEFAULT_PORT_INDEX,
excludedLogicalSlotIndex), excludedLogicalSlotIndex),
context); context,
/*isWaitingForValidSubId=*/ true);
} }
/** /**
@@ -179,7 +180,8 @@ public class UiccSlotUtil {
performSwitchToSlot(telMgr, performSwitchToSlot(telMgr,
prepareUiccSlotMappings(uiccSlotMappings, /*slot is not psim*/ false, prepareUiccSlotMappings(uiccSlotMappings, /*slot is not psim*/ false,
physicalSlotId, port, excludedLogicalSlotIndex), physicalSlotId, port, excludedLogicalSlotIndex),
context); context,
/*isWaitingForValidSubId=*/ false);
} }
/** /**
@@ -231,7 +233,8 @@ public class UiccSlotUtil {
} }
private static void performSwitchToSlot(TelephonyManager telMgr, private static void performSwitchToSlot(TelephonyManager telMgr,
Collection<UiccSlotMapping> uiccSlotMappings, Context context) Collection<UiccSlotMapping> uiccSlotMappings, Context context,
boolean isWaitingForValidSubId)
throws UiccSlotsException { throws UiccSlotsException {
CarrierConfigChangedReceiver receiver = null; CarrierConfigChangedReceiver receiver = null;
long waitingTimeMillis = long waitingTimeMillis =
@@ -241,7 +244,7 @@ public class UiccSlotUtil {
DEFAULT_WAIT_AFTER_SWITCH_TIMEOUT_MILLIS); DEFAULT_WAIT_AFTER_SWITCH_TIMEOUT_MILLIS);
try { try {
CountDownLatch latch = new CountDownLatch(1); CountDownLatch latch = new CountDownLatch(1);
receiver = new CarrierConfigChangedReceiver(latch); receiver = new CarrierConfigChangedReceiver(latch, isWaitingForValidSubId);
receiver.registerOn(context); receiver.registerOn(context);
telMgr.setSimSlotMapping(uiccSlotMappings); telMgr.setSimSlotMapping(uiccSlotMappings);
latch.await(waitingTimeMillis, TimeUnit.MILLISECONDS); latch.await(waitingTimeMillis, TimeUnit.MILLISECONDS);