Loading src/java/com/android/internal/telephony/GsmCdmaPhone.java +5 −2 Original line number Diff line number Diff line Loading @@ -4675,8 +4675,11 @@ public class GsmCdmaPhone extends Phone { return; } String iccId = slot.getIccId(); if (iccId == null) return; UiccPort port = mUiccController.getUiccPort(mPhoneId); String iccId = (port == null) ? null : port.getIccId(); if (iccId == null) { return; } SubscriptionInfo info = SubscriptionController.getInstance().getSubInfoForIccId( IccUtils.stripTrailingFs(iccId)); Loading src/java/com/android/internal/telephony/RILUtils.java +44 −16 Original line number Diff line number Diff line Loading @@ -309,6 +309,7 @@ import android.telephony.SignalStrength; import android.telephony.SignalThresholdInfo; import android.telephony.SmsManager; import android.telephony.TelephonyManager; import android.telephony.UiccSlotMapping; import android.telephony.data.ApnSetting; import android.telephony.data.DataCallResponse; import android.telephony.data.DataProfile; Loading Loading @@ -338,6 +339,7 @@ import com.android.internal.telephony.data.KeepaliveStatus.KeepaliveStatusCode; import com.android.internal.telephony.uicc.AdnCapacity; import com.android.internal.telephony.uicc.IccCardApplicationStatus; import com.android.internal.telephony.uicc.IccCardStatus; import com.android.internal.telephony.uicc.IccSimPortInfo; import com.android.internal.telephony.uicc.IccSlotPortMapping; import com.android.internal.telephony.uicc.IccSlotStatus; import com.android.internal.telephony.uicc.IccUtils; Loading Loading @@ -4406,10 +4408,16 @@ public class RILUtils { for (android.hardware.radio.config.SimSlotStatus slotStatus : halSlotStatusArray) { IccSlotStatus iccSlotStatus = new IccSlotStatus(); iccSlotStatus.setCardState(slotStatus.cardState); iccSlotStatus.setSlotState(slotStatus.portInfo[0].portActive ? 1 : 0); iccSlotStatus.logicalSlotIndex = slotStatus.portInfo[0].logicalSlotId; int portCount = slotStatus.portInfo.length; iccSlotStatus.mSimPortInfos = new IccSimPortInfo[portCount]; for (int i = 0; i < portCount; i++) { IccSimPortInfo simPortInfo = new IccSimPortInfo(); simPortInfo.mIccId = slotStatus.portInfo[i].iccId; simPortInfo.mLogicalSlotIndex = slotStatus.portInfo[i].logicalSlotId; simPortInfo.mPortActive = slotStatus.portInfo[i].portActive; iccSlotStatus.mSimPortInfos[i] = simPortInfo; } iccSlotStatus.atr = slotStatus.atr; iccSlotStatus.iccid = slotStatus.portInfo[0].iccId; iccSlotStatus.eid = slotStatus.eid; response.add(iccSlotStatus); } Loading @@ -4423,10 +4431,14 @@ public class RILUtils { halSlotStatusArray) { IccSlotStatus iccSlotStatus = new IccSlotStatus(); iccSlotStatus.setCardState(slotStatus.base.cardState); iccSlotStatus.setSlotState(slotStatus.base.slotState); iccSlotStatus.logicalSlotIndex = slotStatus.base.logicalSlotId; // Old HAL versions does not support MEP, so only one port is available. iccSlotStatus.mSimPortInfos = new IccSimPortInfo[1]; IccSimPortInfo simPortInfo = new IccSimPortInfo(); simPortInfo.mIccId = slotStatus.base.iccid; simPortInfo.mLogicalSlotIndex = slotStatus.base.logicalSlotId; simPortInfo.mPortActive = (slotStatus.base.slotState == IccSlotStatus.STATE_ACTIVE); iccSlotStatus.mSimPortInfos[TelephonyManager.DEFAULT_PORT_INDEX] = simPortInfo; iccSlotStatus.atr = slotStatus.base.atr; iccSlotStatus.iccid = slotStatus.base.iccid; iccSlotStatus.eid = slotStatus.eid; response.add(iccSlotStatus); } Loading @@ -4440,10 +4452,14 @@ public class RILUtils { halSlotStatusArray) { IccSlotStatus iccSlotStatus = new IccSlotStatus(); iccSlotStatus.setCardState(slotStatus.cardState); iccSlotStatus.setSlotState(slotStatus.slotState); iccSlotStatus.logicalSlotIndex = slotStatus.logicalSlotId; // Old HAL versions does not support MEP, so only one port is available. iccSlotStatus.mSimPortInfos = new IccSimPortInfo[1]; IccSimPortInfo simPortInfo = new IccSimPortInfo(); simPortInfo.mIccId = slotStatus.iccid; simPortInfo.mLogicalSlotIndex = slotStatus.logicalSlotId; simPortInfo.mPortActive = (slotStatus.slotState == IccSlotStatus.STATE_ACTIVE); iccSlotStatus.mSimPortInfos[TelephonyManager.DEFAULT_PORT_INDEX] = simPortInfo; iccSlotStatus.atr = slotStatus.atr; iccSlotStatus.iccid = slotStatus.iccid; response.add(iccSlotStatus); } return response; Loading @@ -4452,21 +4468,33 @@ public class RILUtils { } /** * Convert int[] list to SlotPortMapping[] * @param list int[] of slots mapping * Convert List<UiccSlotMapping> list to SlotPortMapping[] * @param list List<UiccSlotMapping> of slots mapping * @return SlotPortMapping[] of slots mapping */ public static android.hardware.radio.config.SlotPortMapping[] convertSimSlotsMapping( int[] list) { List<UiccSlotMapping> slotMapping) { android.hardware.radio.config.SlotPortMapping[] res = new android.hardware.radio.config.SlotPortMapping[list.length]; for (int i : list) { res[i] = new android.hardware.radio.config.SlotPortMapping(); res[i].portId = i; new android.hardware.radio.config.SlotPortMapping[slotMapping.size()]; for (UiccSlotMapping mapping : slotMapping) { int logicalSlotIdx = mapping.getLogicalSlotIndex(); res[logicalSlotIdx] = new android.hardware.radio.config.SlotPortMapping(); res[logicalSlotIdx].physicalSlotId = mapping.getPhysicalSlotIndex(); res[logicalSlotIdx].portId = mapping.getPortIndex(); } return res; } /** Convert a list of UiccSlotMapping to an ArrayList<Integer>.*/ public static ArrayList<Integer> convertSlotMappingToList( List<UiccSlotMapping> slotMapping) { int[] physicalSlots = new int[slotMapping.size()]; for (UiccSlotMapping mapping : slotMapping) { physicalSlots[mapping.getLogicalSlotIndex()] = mapping.getPhysicalSlotIndex(); } return primitiveArrayToArrayList(physicalSlots); } /** * Convert PhoneCapability to telephony PhoneCapability. Loading src/java/com/android/internal/telephony/RadioConfig.java +4 −3 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ import android.os.RemoteException; import android.os.ServiceManager; import android.os.WorkSource; import android.telephony.TelephonyManager; import android.telephony.UiccSlotMapping; import android.util.SparseArray; import com.android.telephony.Rlog; Loading Loading @@ -514,7 +515,7 @@ public class RadioConfig extends Handler { /** * Wrapper function for IRadioConfig.setSimSlotsMapping(int32_t serial, vec<uint32_t> slotMap). */ public void setSimSlotsMapping(int[] physicalSlots, Message result) { public void setSimSlotsMapping(List<UiccSlotMapping> slotMapping, Message result) { RadioConfigProxy proxy = getRadioConfigProxy(result); if (proxy.isEmpty()) return; Loading @@ -522,10 +523,10 @@ public class RadioConfig extends Handler { mDefaultWorkSource); if (DBG) { logd(rr.serialString() + "> " + RILUtils.requestToString(rr.mRequest) + " " + Arrays.toString(physicalSlots)); + slotMapping); } try { proxy.setSimSlotsMapping(rr.mSerial, physicalSlots); proxy.setSimSlotsMapping(rr.mSerial, slotMapping); } catch (RemoteException | RuntimeException e) { resetProxyAndRequestList("setSimSlotsMapping", e); } Loading src/java/com/android/internal/telephony/RadioConfigProxy.java +9 −6 Original line number Diff line number Diff line Loading @@ -19,9 +19,11 @@ package com.android.internal.telephony; import android.os.HwBinder; import android.os.IBinder; import android.os.RemoteException; import android.telephony.UiccSlotMapping; import com.android.telephony.Rlog; import java.util.List; import java.util.Set; /** Loading Loading @@ -217,15 +219,16 @@ public class RadioConfigProxy { } /** * Wrapper function for IRadioConfig.setSimSlotsMapping(int32_t serial, vec<uint32_t> slotMap). * TODO(ag/15898089): Interface for setSimSlotsMapping was changes but underlying implementation * was not provided. Need to update this with proper implementation. * Wrapper function for IRadioConfig.setSimSlotsMapping(int32_t serial, * vec<SlotPortMapping> portMap). */ public void setSimSlotsMapping(int serial, int[] slots) throws RemoteException { public void setSimSlotsMapping(int serial, List<UiccSlotMapping> slotMapping) throws RemoteException { if (isAidl()) { getAidl().setSimSlotsMapping(serial, RILUtils.convertSimSlotsMapping(slots)); getAidl().setSimSlotsMapping(serial, RILUtils.convertSimSlotsMapping(slotMapping)); } else { getHidl10().setSimSlotsMapping(serial, RILUtils.primitiveArrayToArrayList(slots)); getHidl10().setSimSlotsMapping(serial, RILUtils.convertSlotMappingToList(slotMapping)); } } Loading src/java/com/android/internal/telephony/SubscriptionController.java +12 −4 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ import android.telephony.TelephonyRegistryManager; import android.telephony.UiccAccessRule; import android.telephony.UiccPortInfo; import android.telephony.UiccSlotInfo; import android.telephony.UiccSlotMapping; import android.telephony.euicc.EuiccManager; import android.text.TextUtils; import android.util.EventLog; Loading Loading @@ -1163,9 +1164,12 @@ public class SubscriptionController extends ISub.Stub { for (UiccSlot uiccSlot : uiccSlots) { if (uiccSlot != null && uiccSlot.getCardState() != null && uiccSlot.getCardState().isCardPresent() && !uiccSlot.isEuicc() && !TextUtils.isEmpty(uiccSlot.getIccId())) { ret.add(IccUtils.stripTrailingFs(uiccSlot.getIccId())); && !uiccSlot.isEuicc()) { // Non euicc slots will have single port, so use default port index. String iccId = uiccSlot.getIccId(TelephonyManager.DEFAULT_PORT_INDEX); if (!TextUtils.isEmpty(iccId)) { ret.add(IccUtils.stripTrailingFs(iccId)); } } } Loading Loading @@ -4093,7 +4097,11 @@ public class SubscriptionController extends ISub.Stub { PhoneConfigurationManager.getInstance().switchMultiSimConfig( mTelephonyManager.getSupportedModemCount()); } else { UiccController.getInstance().switchSlots(new int[]{physicalSlotIndex}, null); List<UiccSlotMapping> slotMapping = new ArrayList<>(); // As this is single sim mode, set port index to 0 and logical slot index is 0 slotMapping.add(new UiccSlotMapping(TelephonyManager.DEFAULT_PORT_INDEX, physicalSlotIndex, 0)); UiccController.getInstance().switchSlots(slotMapping, null); } } return true; Loading Loading
src/java/com/android/internal/telephony/GsmCdmaPhone.java +5 −2 Original line number Diff line number Diff line Loading @@ -4675,8 +4675,11 @@ public class GsmCdmaPhone extends Phone { return; } String iccId = slot.getIccId(); if (iccId == null) return; UiccPort port = mUiccController.getUiccPort(mPhoneId); String iccId = (port == null) ? null : port.getIccId(); if (iccId == null) { return; } SubscriptionInfo info = SubscriptionController.getInstance().getSubInfoForIccId( IccUtils.stripTrailingFs(iccId)); Loading
src/java/com/android/internal/telephony/RILUtils.java +44 −16 Original line number Diff line number Diff line Loading @@ -309,6 +309,7 @@ import android.telephony.SignalStrength; import android.telephony.SignalThresholdInfo; import android.telephony.SmsManager; import android.telephony.TelephonyManager; import android.telephony.UiccSlotMapping; import android.telephony.data.ApnSetting; import android.telephony.data.DataCallResponse; import android.telephony.data.DataProfile; Loading Loading @@ -338,6 +339,7 @@ import com.android.internal.telephony.data.KeepaliveStatus.KeepaliveStatusCode; import com.android.internal.telephony.uicc.AdnCapacity; import com.android.internal.telephony.uicc.IccCardApplicationStatus; import com.android.internal.telephony.uicc.IccCardStatus; import com.android.internal.telephony.uicc.IccSimPortInfo; import com.android.internal.telephony.uicc.IccSlotPortMapping; import com.android.internal.telephony.uicc.IccSlotStatus; import com.android.internal.telephony.uicc.IccUtils; Loading Loading @@ -4406,10 +4408,16 @@ public class RILUtils { for (android.hardware.radio.config.SimSlotStatus slotStatus : halSlotStatusArray) { IccSlotStatus iccSlotStatus = new IccSlotStatus(); iccSlotStatus.setCardState(slotStatus.cardState); iccSlotStatus.setSlotState(slotStatus.portInfo[0].portActive ? 1 : 0); iccSlotStatus.logicalSlotIndex = slotStatus.portInfo[0].logicalSlotId; int portCount = slotStatus.portInfo.length; iccSlotStatus.mSimPortInfos = new IccSimPortInfo[portCount]; for (int i = 0; i < portCount; i++) { IccSimPortInfo simPortInfo = new IccSimPortInfo(); simPortInfo.mIccId = slotStatus.portInfo[i].iccId; simPortInfo.mLogicalSlotIndex = slotStatus.portInfo[i].logicalSlotId; simPortInfo.mPortActive = slotStatus.portInfo[i].portActive; iccSlotStatus.mSimPortInfos[i] = simPortInfo; } iccSlotStatus.atr = slotStatus.atr; iccSlotStatus.iccid = slotStatus.portInfo[0].iccId; iccSlotStatus.eid = slotStatus.eid; response.add(iccSlotStatus); } Loading @@ -4423,10 +4431,14 @@ public class RILUtils { halSlotStatusArray) { IccSlotStatus iccSlotStatus = new IccSlotStatus(); iccSlotStatus.setCardState(slotStatus.base.cardState); iccSlotStatus.setSlotState(slotStatus.base.slotState); iccSlotStatus.logicalSlotIndex = slotStatus.base.logicalSlotId; // Old HAL versions does not support MEP, so only one port is available. iccSlotStatus.mSimPortInfos = new IccSimPortInfo[1]; IccSimPortInfo simPortInfo = new IccSimPortInfo(); simPortInfo.mIccId = slotStatus.base.iccid; simPortInfo.mLogicalSlotIndex = slotStatus.base.logicalSlotId; simPortInfo.mPortActive = (slotStatus.base.slotState == IccSlotStatus.STATE_ACTIVE); iccSlotStatus.mSimPortInfos[TelephonyManager.DEFAULT_PORT_INDEX] = simPortInfo; iccSlotStatus.atr = slotStatus.base.atr; iccSlotStatus.iccid = slotStatus.base.iccid; iccSlotStatus.eid = slotStatus.eid; response.add(iccSlotStatus); } Loading @@ -4440,10 +4452,14 @@ public class RILUtils { halSlotStatusArray) { IccSlotStatus iccSlotStatus = new IccSlotStatus(); iccSlotStatus.setCardState(slotStatus.cardState); iccSlotStatus.setSlotState(slotStatus.slotState); iccSlotStatus.logicalSlotIndex = slotStatus.logicalSlotId; // Old HAL versions does not support MEP, so only one port is available. iccSlotStatus.mSimPortInfos = new IccSimPortInfo[1]; IccSimPortInfo simPortInfo = new IccSimPortInfo(); simPortInfo.mIccId = slotStatus.iccid; simPortInfo.mLogicalSlotIndex = slotStatus.logicalSlotId; simPortInfo.mPortActive = (slotStatus.slotState == IccSlotStatus.STATE_ACTIVE); iccSlotStatus.mSimPortInfos[TelephonyManager.DEFAULT_PORT_INDEX] = simPortInfo; iccSlotStatus.atr = slotStatus.atr; iccSlotStatus.iccid = slotStatus.iccid; response.add(iccSlotStatus); } return response; Loading @@ -4452,21 +4468,33 @@ public class RILUtils { } /** * Convert int[] list to SlotPortMapping[] * @param list int[] of slots mapping * Convert List<UiccSlotMapping> list to SlotPortMapping[] * @param list List<UiccSlotMapping> of slots mapping * @return SlotPortMapping[] of slots mapping */ public static android.hardware.radio.config.SlotPortMapping[] convertSimSlotsMapping( int[] list) { List<UiccSlotMapping> slotMapping) { android.hardware.radio.config.SlotPortMapping[] res = new android.hardware.radio.config.SlotPortMapping[list.length]; for (int i : list) { res[i] = new android.hardware.radio.config.SlotPortMapping(); res[i].portId = i; new android.hardware.radio.config.SlotPortMapping[slotMapping.size()]; for (UiccSlotMapping mapping : slotMapping) { int logicalSlotIdx = mapping.getLogicalSlotIndex(); res[logicalSlotIdx] = new android.hardware.radio.config.SlotPortMapping(); res[logicalSlotIdx].physicalSlotId = mapping.getPhysicalSlotIndex(); res[logicalSlotIdx].portId = mapping.getPortIndex(); } return res; } /** Convert a list of UiccSlotMapping to an ArrayList<Integer>.*/ public static ArrayList<Integer> convertSlotMappingToList( List<UiccSlotMapping> slotMapping) { int[] physicalSlots = new int[slotMapping.size()]; for (UiccSlotMapping mapping : slotMapping) { physicalSlots[mapping.getLogicalSlotIndex()] = mapping.getPhysicalSlotIndex(); } return primitiveArrayToArrayList(physicalSlots); } /** * Convert PhoneCapability to telephony PhoneCapability. Loading
src/java/com/android/internal/telephony/RadioConfig.java +4 −3 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ import android.os.RemoteException; import android.os.ServiceManager; import android.os.WorkSource; import android.telephony.TelephonyManager; import android.telephony.UiccSlotMapping; import android.util.SparseArray; import com.android.telephony.Rlog; Loading Loading @@ -514,7 +515,7 @@ public class RadioConfig extends Handler { /** * Wrapper function for IRadioConfig.setSimSlotsMapping(int32_t serial, vec<uint32_t> slotMap). */ public void setSimSlotsMapping(int[] physicalSlots, Message result) { public void setSimSlotsMapping(List<UiccSlotMapping> slotMapping, Message result) { RadioConfigProxy proxy = getRadioConfigProxy(result); if (proxy.isEmpty()) return; Loading @@ -522,10 +523,10 @@ public class RadioConfig extends Handler { mDefaultWorkSource); if (DBG) { logd(rr.serialString() + "> " + RILUtils.requestToString(rr.mRequest) + " " + Arrays.toString(physicalSlots)); + slotMapping); } try { proxy.setSimSlotsMapping(rr.mSerial, physicalSlots); proxy.setSimSlotsMapping(rr.mSerial, slotMapping); } catch (RemoteException | RuntimeException e) { resetProxyAndRequestList("setSimSlotsMapping", e); } Loading
src/java/com/android/internal/telephony/RadioConfigProxy.java +9 −6 Original line number Diff line number Diff line Loading @@ -19,9 +19,11 @@ package com.android.internal.telephony; import android.os.HwBinder; import android.os.IBinder; import android.os.RemoteException; import android.telephony.UiccSlotMapping; import com.android.telephony.Rlog; import java.util.List; import java.util.Set; /** Loading Loading @@ -217,15 +219,16 @@ public class RadioConfigProxy { } /** * Wrapper function for IRadioConfig.setSimSlotsMapping(int32_t serial, vec<uint32_t> slotMap). * TODO(ag/15898089): Interface for setSimSlotsMapping was changes but underlying implementation * was not provided. Need to update this with proper implementation. * Wrapper function for IRadioConfig.setSimSlotsMapping(int32_t serial, * vec<SlotPortMapping> portMap). */ public void setSimSlotsMapping(int serial, int[] slots) throws RemoteException { public void setSimSlotsMapping(int serial, List<UiccSlotMapping> slotMapping) throws RemoteException { if (isAidl()) { getAidl().setSimSlotsMapping(serial, RILUtils.convertSimSlotsMapping(slots)); getAidl().setSimSlotsMapping(serial, RILUtils.convertSimSlotsMapping(slotMapping)); } else { getHidl10().setSimSlotsMapping(serial, RILUtils.primitiveArrayToArrayList(slots)); getHidl10().setSimSlotsMapping(serial, RILUtils.convertSlotMappingToList(slotMapping)); } } Loading
src/java/com/android/internal/telephony/SubscriptionController.java +12 −4 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ import android.telephony.TelephonyRegistryManager; import android.telephony.UiccAccessRule; import android.telephony.UiccPortInfo; import android.telephony.UiccSlotInfo; import android.telephony.UiccSlotMapping; import android.telephony.euicc.EuiccManager; import android.text.TextUtils; import android.util.EventLog; Loading Loading @@ -1163,9 +1164,12 @@ public class SubscriptionController extends ISub.Stub { for (UiccSlot uiccSlot : uiccSlots) { if (uiccSlot != null && uiccSlot.getCardState() != null && uiccSlot.getCardState().isCardPresent() && !uiccSlot.isEuicc() && !TextUtils.isEmpty(uiccSlot.getIccId())) { ret.add(IccUtils.stripTrailingFs(uiccSlot.getIccId())); && !uiccSlot.isEuicc()) { // Non euicc slots will have single port, so use default port index. String iccId = uiccSlot.getIccId(TelephonyManager.DEFAULT_PORT_INDEX); if (!TextUtils.isEmpty(iccId)) { ret.add(IccUtils.stripTrailingFs(iccId)); } } } Loading Loading @@ -4093,7 +4097,11 @@ public class SubscriptionController extends ISub.Stub { PhoneConfigurationManager.getInstance().switchMultiSimConfig( mTelephonyManager.getSupportedModemCount()); } else { UiccController.getInstance().switchSlots(new int[]{physicalSlotIndex}, null); List<UiccSlotMapping> slotMapping = new ArrayList<>(); // As this is single sim mode, set port index to 0 and logical slot index is 0 slotMapping.add(new UiccSlotMapping(TelephonyManager.DEFAULT_PORT_INDEX, physicalSlotIndex, 0)); UiccController.getInstance().switchSlots(slotMapping, null); } } return true; Loading