script-astra/Android/Sdk/sources/android-35/com/android/internal/telephony/RadioSimProxy.java
localadmin 4380f00a78 init
2025-01-20 18:15:20 +03:00

798 lines
30 KiB
Java

/*
* Copyright (C) 2021 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.internal.telephony;
import android.os.RemoteException;
import android.telephony.CarrierRestrictionRules;
import android.telephony.ImsiEncryptionInfo;
import android.telephony.Rlog;
import com.android.internal.telephony.uicc.IccCardApplicationStatus.PersoSubState;
import com.android.internal.telephony.uicc.SimPhonebookRecord;
/**
* A holder for IRadioSim.
* Use getAidl to get IRadioSim and call the AIDL implementations of the HAL APIs.
*/
public class RadioSimProxy extends RadioServiceProxy {
private static final String TAG = "RadioSimProxy";
private volatile android.hardware.radio.sim.IRadioSim mSimProxy = null;
/**
* Set IRadioSim as the AIDL implementation for RadioServiceProxy
* @param halVersion Radio HAL version
* @param sim IRadioSim implementation
*
* @return updated HAL version
*/
public HalVersion setAidl(HalVersion halVersion, android.hardware.radio.sim.IRadioSim sim) {
HalVersion version = halVersion;
try {
version = RIL.getServiceHalVersion(sim.getInterfaceVersion());
} catch (RemoteException e) {
Rlog.e(TAG, "setAidl: " + e);
}
mHalVersion = version;
mSimProxy = sim;
mIsAidl = true;
Rlog.d(TAG, "AIDL initialized mHalVersion=" + mHalVersion);
return mHalVersion;
}
/**
* Get the AIDL implementation of RadioSimProxy
* @return IRadioSim implementation
*/
public android.hardware.radio.sim.IRadioSim getAidl() {
return mSimProxy;
}
/**
* Reset RadioSimProxy
*/
@Override
public void clear() {
super.clear();
mSimProxy = null;
}
/**
* Check whether a RadioSim implementation exists
* @return true if there is neither a HIDL nor AIDL implementation
*/
@Override
public boolean isEmpty() {
return mRadioProxy == null && mSimProxy == null;
}
/**
* Call IRadioSim#areUiccApplicationsEnabled
* @param serial Serial number of request
* @throws RemoteException
*/
public void areUiccApplicationsEnabled(int serial) throws RemoteException {
if (isEmpty() || mHalVersion.less(RIL.RADIO_HAL_VERSION_1_5)) return;
if (isAidl()) {
mSimProxy.areUiccApplicationsEnabled(serial);
} else {
((android.hardware.radio.V1_5.IRadio) mRadioProxy).areUiccApplicationsEnabled(serial);
}
}
/**
* Call IRadioSim#changeIccPin2ForApp
* @param serial Serial number of request
* @param oldPin2 Old PIN value
* @param newPin2 New PIN value
* @param aid Application ID
* @throws RemoteException
*/
public void changeIccPin2ForApp(int serial, String oldPin2, String newPin2, String aid)
throws RemoteException {
if (isEmpty()) return;
if (isAidl()) {
mSimProxy.changeIccPin2ForApp(serial, oldPin2, newPin2, aid);
} else {
mRadioProxy.changeIccPin2ForApp(serial, oldPin2, newPin2, aid);
}
}
/**
* Call IRadioSim#changeIccPinForApp
* @param serial Serial number of request
* @param oldPin Old PIN value
* @param newPin New PIN value
* @param aid Application ID
* @throws RemoteException
*/
public void changeIccPinForApp(int serial, String oldPin, String newPin, String aid)
throws RemoteException {
if (isEmpty()) return;
if (isAidl()) {
mSimProxy.changeIccPinForApp(serial, oldPin, newPin, aid);
} else {
mRadioProxy.changeIccPinForApp(serial, oldPin, newPin, aid);
}
}
/**
* Call IRadioSim#enableUiccApplications
* @param serial Serial number of request
* @param enable Whether or not to enable UiccApplications on the SIM
* @throws RemoteException
*/
public void enableUiccApplications(int serial, boolean enable) throws RemoteException {
if (isEmpty() || mHalVersion.less(RIL.RADIO_HAL_VERSION_1_5)) return;
if (isAidl()) {
mSimProxy.enableUiccApplications(serial, enable);
} else {
((android.hardware.radio.V1_5.IRadio) mRadioProxy).enableUiccApplications(
serial, enable);
}
}
/**
* Call IRadioSim#getAllowedCarriers
* @param serial Serial number of request
* @throws RemoteException
*/
public void getAllowedCarriers(int serial) throws RemoteException {
if (isEmpty()) return;
if (isAidl()) {
mSimProxy.getAllowedCarriers(serial);
} else {
mRadioProxy.getAllowedCarriers_1_4(serial);
}
}
/**
* Call IRadioSim#getCdmaSubscription
* @param serial Serial number of request
* @throws RemoteException
*/
public void getCdmaSubscription(int serial) throws RemoteException {
if (isEmpty()) return;
if (isAidl()) {
mSimProxy.getCdmaSubscription(serial);
} else {
mRadioProxy.getCDMASubscription(serial);
}
}
/**
* Call IRadioSim#getCdmaSubscriptionSource
* @param serial Serial number of request
* @throws RemoteException
*/
public void getCdmaSubscriptionSource(int serial) throws RemoteException {
if (isEmpty()) return;
if (isAidl()) {
mSimProxy.getCdmaSubscriptionSource(serial);
} else {
mRadioProxy.getCdmaSubscriptionSource(serial);
}
}
/**
* Call IRadioSim#getFacilityLockForApp
* @param serial Serial number of request
* @param facility One of CB_FACILTY_*
* @param password Password or "" if not required
* @param serviceClass Sum of SERVICE_CLASS_*
* @param appId Application ID or null if none
* @throws RemoteException
*/
public void getFacilityLockForApp(int serial, String facility, String password,
int serviceClass, String appId) throws RemoteException {
if (isEmpty()) return;
if (isAidl()) {
mSimProxy.getFacilityLockForApp(serial, facility, password, serviceClass, appId);
} else {
mRadioProxy.getFacilityLockForApp(serial, facility, password, serviceClass, appId);
}
}
/**
* Call IRadioSim#getIccCardStatus
* @param serial Serial number of request
* @throws RemoteException
*/
public void getIccCardStatus(int serial) throws RemoteException {
if (isEmpty()) return;
if (isAidl()) {
mSimProxy.getIccCardStatus(serial);
} else {
mRadioProxy.getIccCardStatus(serial);
}
}
/**
* Call IRadioSim#getImsiForApp
* @param serial Serial number of request
* @param aid Application ID
* @throws RemoteException
*/
public void getImsiForApp(int serial, String aid) throws RemoteException {
if (isEmpty()) return;
if (isAidl()) {
mSimProxy.getImsiForApp(serial, aid);
} else {
mRadioProxy.getImsiForApp(serial, aid);
}
}
/**
* Call IRadioSim#getSimPhonebookCapacity
* @param serial Serial number of request
* @throws RemoteException
*/
public void getSimPhonebookCapacity(int serial) throws RemoteException {
if (isEmpty() || mHalVersion.less(RIL.RADIO_HAL_VERSION_1_6)) return;
if (isAidl()) {
mSimProxy.getSimPhonebookCapacity(serial);
} else {
((android.hardware.radio.V1_6.IRadio) mRadioProxy).getSimPhonebookCapacity(serial);
}
}
/**
* Call IRadioSim#getSimPhonebookRecords
* @param serial Serial number of request
* @throws RemoteException
*/
public void getSimPhonebookRecords(int serial) throws RemoteException {
if (isEmpty() || mHalVersion.less(RIL.RADIO_HAL_VERSION_1_6)) return;
if (isAidl()) {
mSimProxy.getSimPhonebookRecords(serial);
} else {
((android.hardware.radio.V1_6.IRadio) mRadioProxy).getSimPhonebookRecords(serial);
}
}
/**
* Call IRadioSim#iccCloseLogicalChannelWithSessionInfo
* @param serial Serial number of request
* @param channelId Channel ID of the channel to be closed
* @param isEs10 Whether the logical channel is opened for performing ES10 operations.
* @throws RemoteException
*/
public void iccCloseLogicalChannel(int serial,
int channelId, boolean isEs10) throws RemoteException {
if (isEmpty()) return;
if (isAidl()) {
if (mHalVersion.greaterOrEqual(RIL.RADIO_HAL_VERSION_2_1)) {
android.hardware.radio.sim.SessionInfo info =
new android.hardware.radio.sim.SessionInfo();
info.sessionId = channelId;
info.isEs10 = isEs10;
mSimProxy.iccCloseLogicalChannelWithSessionInfo(serial, info);
return;
}
mSimProxy.iccCloseLogicalChannel(serial, channelId);
} else {
mRadioProxy.iccCloseLogicalChannel(serial, channelId);
}
}
/**
* Call IRadioSim#iccIoForApp
* @param serial Serial number of request
* @param command Command
* @param fileId File ID
* @param path Path
* @param p1 P1 value of the command
* @param p2 P2 value of the command
* @param p3 P3 value of the command
* @param data Data to be sent
* @param pin2 PIN 2 value
* @param aid Application ID
* @throws RemoteException
*/
public void iccIoForApp(int serial, int command, int fileId, String path, int p1, int p2,
int p3, String data, String pin2, String aid) throws RemoteException {
if (isEmpty()) return;
if (isAidl()) {
android.hardware.radio.sim.IccIo iccIo = new android.hardware.radio.sim.IccIo();
iccIo.command = command;
iccIo.fileId = fileId;
iccIo.path = path;
iccIo.p1 = p1;
iccIo.p2 = p2;
iccIo.p3 = p3;
iccIo.data = data;
iccIo.pin2 = pin2;
iccIo.aid = aid;
mSimProxy.iccIoForApp(serial, iccIo);
} else {
android.hardware.radio.V1_0.IccIo iccIo = new android.hardware.radio.V1_0.IccIo();
iccIo.command = command;
iccIo.fileId = fileId;
iccIo.path = path;
iccIo.p1 = p1;
iccIo.p2 = p2;
iccIo.p3 = p3;
iccIo.data = data;
iccIo.pin2 = pin2;
iccIo.aid = aid;
mRadioProxy.iccIOForApp(serial, iccIo);
}
}
/**
* Call IRadioSim#iccOpenLogicalChannel
* @param serial Serial number of request
* @param aid Application ID
* @param p2 P2 value of the command
* @throws RemoteException
*/
public void iccOpenLogicalChannel(int serial, String aid, int p2) throws RemoteException {
if (isEmpty()) return;
if (isAidl()) {
mSimProxy.iccOpenLogicalChannel(serial, aid, p2);
} else {
mRadioProxy.iccOpenLogicalChannel(serial, aid, p2);
}
}
/**
* Call IRadioSim#iccTransmitApduBasicChannel
* @param serial Serial number of request
* @param cla Class of the command
* @param instruction Instruction of the command
* @param p1 P1 value of the command
* @param p2 P2 value of the command
* @param p3 P3 value of the command
* @param data Data to be sent
* @throws RemoteException
*/
public void iccTransmitApduBasicChannel(int serial, int cla, int instruction, int p1, int p2,
int p3, String data) throws RemoteException {
if (isEmpty()) return;
if (isAidl()) {
mSimProxy.iccTransmitApduBasicChannel(serial,
RILUtils.convertToHalSimApduAidl(0, cla, instruction, p1, p2, p3, data,
false, mHalVersion));
} else {
mRadioProxy.iccTransmitApduBasicChannel(serial,
RILUtils.convertToHalSimApdu(0, cla, instruction, p1, p2, p3, data));
}
}
/**
* Call IRadioSim#iccTransmitApduLogicalChannel
* @param serial Serial number of request
* @param channel Channel ID of the channel to use for communication
* @param cla Class of the command
* @param instruction Instruction of the command
* @param p1 P1 value of the command
* @param p2 P2 value of the command
* @param p3 P3 value of the command
* @param data Data to be sent
* @throws RemoteException
*/
public void iccTransmitApduLogicalChannel(int serial, int channel, int cla, int instruction,
int p1, int p2, int p3, String data) throws RemoteException {
iccTransmitApduLogicalChannel(serial, channel, cla, instruction, p1, p2, p3, data, false);
}
/**
* Call IRadioSim#iccTransmitApduLogicalChannel
* @param serial Serial number of request
* @param channel Channel ID of the channel to use for communication
* @param cla Class of the command
* @param instruction Instruction of the command
* @param p1 P1 value of the command
* @param p2 P2 value of the command
* @param p3 P3 value of the command
* @param data Data to be sent
* @param isEs10Command APDU is an isEs10 command or not
* @throws RemoteException
*/
public void iccTransmitApduLogicalChannel(int serial, int channel, int cla, int instruction,
int p1, int p2, int p3, String data, boolean isEs10Command) throws RemoteException {
if (isEmpty()) return;
if (isAidl()) {
mSimProxy.iccTransmitApduLogicalChannel(serial,
RILUtils.convertToHalSimApduAidl(channel, cla, instruction, p1, p2, p3, data,
isEs10Command, mHalVersion));
} else {
mRadioProxy.iccTransmitApduLogicalChannel(serial,
RILUtils.convertToHalSimApdu(channel, cla, instruction, p1, p2, p3, data));
}
}
/**
* Call IRadioSim#reportStkServiceIsRunning
* @param serial Serial number of request
* @throws RemoteException
*/
public void reportStkServiceIsRunning(int serial) throws RemoteException {
if (isEmpty()) return;
if (isAidl()) {
mSimProxy.reportStkServiceIsRunning(serial);
} else {
mRadioProxy.reportStkServiceIsRunning(serial);
}
}
/**
* Call IRadioSim#requestIccSimAuthentication
* @param serial Serial number of request
* @param authContext P2 parameter that specifies the authentication context
* @param authData Authentication challenge data
* @param aid Application ID of the application/slot to send the auth command to
* @throws RemoteException
*/
public void requestIccSimAuthentication(int serial, int authContext, String authData,
String aid) throws RemoteException {
if (isEmpty()) return;
if (isAidl()) {
mSimProxy.requestIccSimAuthentication(serial, authContext, authData, aid);
} else {
mRadioProxy.requestIccSimAuthentication(serial, authContext, authData, aid);
}
}
/**
* Call IRadioSim#responseAcknowledgement
* @throws RemoteException
*/
@Override
public void responseAcknowledgement() throws RemoteException {
if (isEmpty()) return;
if (isAidl()) {
mSimProxy.responseAcknowledgement();
} else {
mRadioProxy.responseAcknowledgement();
}
}
/**
* Call IRadioSim#sendEnvelope
* @param serial Serial number of request
* @param contents String containing SAT/USAT response in hexadecimal format starting with
* command tag
* @throws RemoteException
*/
public void sendEnvelope(int serial, String contents) throws RemoteException {
if (isEmpty()) return;
if (isAidl()) {
mSimProxy.sendEnvelope(serial, contents);
} else {
mRadioProxy.sendEnvelope(serial, contents);
}
}
/**
* Call IRadioSim#sendEnvelopeWithStatus
* @param serial Serial number of request
* @param contents String containing SAT/USAT response in hexadecimal format starting with
* command tag
* @throws RemoteException
*/
public void sendEnvelopeWithStatus(int serial, String contents) throws RemoteException {
if (isEmpty()) return;
if (isAidl()) {
mSimProxy.sendEnvelopeWithStatus(serial, contents);
} else {
mRadioProxy.sendEnvelopeWithStatus(serial, contents);
}
}
/**
* Call IRadioSim#sendTerminalResponseToSim
* @param serial Serial number of request
* @param contents String containing SAT/USAT response in hexadecimal format starting with
* first byte of response data
* @throws RemoteException
*/
public void sendTerminalResponseToSim(int serial, String contents) throws RemoteException {
if (isEmpty()) return;
if (isAidl()) {
mSimProxy.sendTerminalResponseToSim(serial, contents);
} else {
mRadioProxy.sendTerminalResponseToSim(serial, contents);
}
}
/**
* Call IRadioSim#setAllowedCarriers
* @param serial Serial number of request
* @param carrierRestrictionRules Allowed carriers
* @throws RemoteException
*/
public void setAllowedCarriers(int serial, CarrierRestrictionRules carrierRestrictionRules)
throws RemoteException {
if (isEmpty()) return;
if (isAidl()) {
// Prepare structure with allowed list, excluded list and priority
android.hardware.radio.sim.CarrierRestrictions carrierRestrictions =
new android.hardware.radio.sim.CarrierRestrictions();
carrierRestrictions.allowedCarriers = RILUtils.convertToHalCarrierRestrictionListAidl(
carrierRestrictionRules.getAllowedCarriers());
carrierRestrictions.excludedCarriers = RILUtils.convertToHalCarrierRestrictionListAidl(
carrierRestrictionRules.getExcludedCarriers());
carrierRestrictions.allowedCarriersPrioritized =
(carrierRestrictionRules.getDefaultCarrierRestriction()
== CarrierRestrictionRules.CARRIER_RESTRICTION_DEFAULT_NOT_ALLOWED);
mSimProxy.setAllowedCarriers(serial, carrierRestrictions,
RILUtils.convertToHalSimLockMultiSimPolicyAidl(
carrierRestrictionRules.getMultiSimPolicy()));
} else {
// Prepare structure with allowed list, excluded list and priority
android.hardware.radio.V1_4.CarrierRestrictionsWithPriority carrierRestrictions =
new android.hardware.radio.V1_4.CarrierRestrictionsWithPriority();
carrierRestrictions.allowedCarriers = RILUtils.convertToHalCarrierRestrictionList(
carrierRestrictionRules.getAllowedCarriers());
carrierRestrictions.excludedCarriers = RILUtils.convertToHalCarrierRestrictionList(
carrierRestrictionRules.getExcludedCarriers());
carrierRestrictions.allowedCarriersPrioritized =
(carrierRestrictionRules.getDefaultCarrierRestriction()
== CarrierRestrictionRules.CARRIER_RESTRICTION_DEFAULT_NOT_ALLOWED);
mRadioProxy.setAllowedCarriers_1_4(serial, carrierRestrictions,
RILUtils.convertToHalSimLockMultiSimPolicy(
carrierRestrictionRules.getMultiSimPolicy()));
}
}
/**
* Call IRadioSim#setCarrierInfoForImsiEncryption
* @param serial Serial number of request
* @param imsiEncryptionInfo ImsiEncryptionInfo
* @throws RemoteException
*/
public void setCarrierInfoForImsiEncryption(int serial, ImsiEncryptionInfo imsiEncryptionInfo)
throws RemoteException {
if (isEmpty()) return;
if (isAidl()) {
android.hardware.radio.sim.ImsiEncryptionInfo halImsiInfo =
new android.hardware.radio.sim.ImsiEncryptionInfo();
halImsiInfo.mnc = imsiEncryptionInfo.getMnc();
halImsiInfo.mcc = imsiEncryptionInfo.getMcc();
halImsiInfo.keyIdentifier = imsiEncryptionInfo.getKeyIdentifier();
if (imsiEncryptionInfo.getExpirationTime() != null) {
halImsiInfo.expirationTime = imsiEncryptionInfo.getExpirationTime().getTime();
}
halImsiInfo.carrierKey = imsiEncryptionInfo.getPublicKey().getEncoded();
halImsiInfo.keyType = (byte) imsiEncryptionInfo.getKeyType();
mSimProxy.setCarrierInfoForImsiEncryption(serial, halImsiInfo);
} else if (mHalVersion.greaterOrEqual(RIL.RADIO_HAL_VERSION_1_6)) {
android.hardware.radio.V1_6.ImsiEncryptionInfo halImsiInfo =
new android.hardware.radio.V1_6.ImsiEncryptionInfo();
halImsiInfo.base.mnc = imsiEncryptionInfo.getMnc();
halImsiInfo.base.mcc = imsiEncryptionInfo.getMcc();
halImsiInfo.base.keyIdentifier = imsiEncryptionInfo.getKeyIdentifier();
if (imsiEncryptionInfo.getExpirationTime() != null) {
halImsiInfo.base.expirationTime = imsiEncryptionInfo.getExpirationTime().getTime();
}
for (byte b : imsiEncryptionInfo.getPublicKey().getEncoded()) {
halImsiInfo.base.carrierKey.add(Byte.valueOf(b));
}
halImsiInfo.keyType = (byte) imsiEncryptionInfo.getKeyType();
((android.hardware.radio.V1_6.IRadio) mRadioProxy).setCarrierInfoForImsiEncryption_1_6(
serial, halImsiInfo);
} else {
android.hardware.radio.V1_1.ImsiEncryptionInfo halImsiInfo =
new android.hardware.radio.V1_1.ImsiEncryptionInfo();
halImsiInfo.mnc = imsiEncryptionInfo.getMnc();
halImsiInfo.mcc = imsiEncryptionInfo.getMcc();
halImsiInfo.keyIdentifier = imsiEncryptionInfo.getKeyIdentifier();
if (imsiEncryptionInfo.getExpirationTime() != null) {
halImsiInfo.expirationTime = imsiEncryptionInfo.getExpirationTime().getTime();
}
for (byte b : imsiEncryptionInfo.getPublicKey().getEncoded()) {
halImsiInfo.carrierKey.add(Byte.valueOf(b));
}
mRadioProxy.setCarrierInfoForImsiEncryption(serial, halImsiInfo);
}
}
/**
* Call IRadioSim#setCdmaSubscriptionSource
* @param serial Serial number of request
* @param cdmaSub One of CDMA_SUBSCRIPTION_*
* @throws RemoteException
*/
public void setCdmaSubscriptionSource(int serial, int cdmaSub) throws RemoteException {
if (isEmpty()) return;
if (isAidl()) {
mSimProxy.setCdmaSubscriptionSource(serial, cdmaSub);
} else {
mRadioProxy.setCdmaSubscriptionSource(serial, cdmaSub);
}
}
/**
* Call IRadioSim#setFacilityLockForApp
* @param serial Serial number of request
* @param facility One of CB_FACILTY_*
* @param lockState True means lock, false means unlock
* @param password Password or "" if not required
* @param serviceClass Sum of SERVICE_CLASS_*
* @param appId Application ID or null if none
* @throws RemoteException
*/
public void setFacilityLockForApp(int serial, String facility, boolean lockState,
String password, int serviceClass, String appId) throws RemoteException {
if (isEmpty()) return;
if (isAidl()) {
mSimProxy.setFacilityLockForApp(
serial, facility, lockState, password, serviceClass, appId);
} else {
mRadioProxy.setFacilityLockForApp(
serial, facility, lockState, password, serviceClass, appId);
}
}
/**
* Call IRadioSim#setSimCardPower
* @param serial Serial number of request
* @param state SIM state (power down, power up, pass through)
* @throws RemoteException
*/
public void setSimCardPower(int serial, int state) throws RemoteException {
if (isEmpty()) return;
if (isAidl()) {
mSimProxy.setSimCardPower(serial, state);
} else if (mHalVersion.greaterOrEqual(RIL.RADIO_HAL_VERSION_1_6)) {
((android.hardware.radio.V1_6.IRadio) mRadioProxy).setSimCardPower_1_6(serial, state);
} else {
mRadioProxy.setSimCardPower_1_1(serial, state);
}
}
/**
* Call IRadioSim#setUiccSubscription
* @param serial Serial number of request
* @param slotId Slot ID
* @param appIndex Application index in the card
* @param subId Subscription ID
* @param subStatus Activation status; 1 = activate and 0 = deactivate
* @throws RemoteException
*/
public void setUiccSubscription(int serial, int slotId, int appIndex, int subId, int subStatus)
throws RemoteException {
if (isEmpty()) return;
if (isAidl()) {
android.hardware.radio.sim.SelectUiccSub info =
new android.hardware.radio.sim.SelectUiccSub();
info.slot = slotId;
info.appIndex = appIndex;
info.subType = subId;
info.actStatus = subStatus;
mSimProxy.setUiccSubscription(serial, info);
} else {
android.hardware.radio.V1_0.SelectUiccSub info =
new android.hardware.radio.V1_0.SelectUiccSub();
info.slot = slotId;
info.appIndex = appIndex;
info.subType = subId;
info.actStatus = subStatus;
mRadioProxy.setUiccSubscription(serial, info);
}
}
/**
* Call IRadioSim#supplyIccPin2ForApp
* @param serial Serial number of request
* @param pin2 PIN 2 value
* @param aid Application ID
* @throws RemoteException
*/
public void supplyIccPin2ForApp(int serial, String pin2, String aid) throws RemoteException {
if (isEmpty()) return;
if (isAidl()) {
mSimProxy.supplyIccPin2ForApp(serial, pin2, aid);
} else {
mRadioProxy.supplyIccPin2ForApp(serial, pin2, aid);
}
}
/**
* Call IRadioSim#supplyIccPinForApp
* @param serial Serial number of request
* @param pin PIN value
* @param aid Application ID
* @throws RemoteException
*/
public void supplyIccPinForApp(int serial, String pin, String aid) throws RemoteException {
if (isEmpty()) return;
if (isAidl()) {
mSimProxy.supplyIccPinForApp(serial, pin, aid);
} else {
mRadioProxy.supplyIccPinForApp(serial, pin, aid);
}
}
/**
* Call IRadioSim#supplyIccPuk2ForApp
* @param serial Serial number of request
* @param puk2 PUK 2 value
* @param pin2 PIN 2 value
* @param aid Application ID
* @throws RemoteException
*/
public void supplyIccPuk2ForApp(int serial, String puk2, String pin2, String aid)
throws RemoteException {
if (isEmpty()) return;
if (isAidl()) {
mSimProxy.supplyIccPuk2ForApp(serial, puk2, pin2, aid);
} else {
mRadioProxy.supplyIccPuk2ForApp(serial, puk2, pin2, aid);
}
}
/**
* Call IRadioSim#supplyIccPukForApp
* @param serial Serial number of request
* @param puk PUK value
* @param pin PIN value
* @param aid Application ID
* @throws RemoteException
*/
public void supplyIccPukForApp(int serial, String puk, String pin, String aid)
throws RemoteException {
if (isEmpty()) return;
if (isAidl()) {
mSimProxy.supplyIccPukForApp(serial, puk, pin, aid);
} else {
mRadioProxy.supplyIccPukForApp(serial, puk, pin, aid);
}
}
/**
* Call IRadioSim#supplySimDepersonalization
* @param serial Serial number of request
* @param persoType SIM personalization type
* @param controlKey Unlock code for removing SIM personalization from this device
* @throws RemoteException
*/
public void supplySimDepersonalization(int serial, PersoSubState persoType, String controlKey)
throws RemoteException {
if (isEmpty() || mHalVersion.less(RIL.RADIO_HAL_VERSION_1_5)) return;
if (isAidl()) {
mSimProxy.supplySimDepersonalization(serial,
RILUtils.convertToHalPersoTypeAidl(persoType), controlKey);
} else {
((android.hardware.radio.V1_5.IRadio) mRadioProxy).supplySimDepersonalization(serial,
RILUtils.convertToHalPersoType(persoType), controlKey);
}
}
/**
* Call IRadioSim#updateSimPhonebookRecords
* @param serial Serial number of request
* @param recordInfo ADN record information to be updated
* @throws RemoteException
*/
public void updateSimPhonebookRecords(int serial, SimPhonebookRecord recordInfo)
throws RemoteException {
if (isEmpty() || mHalVersion.less(RIL.RADIO_HAL_VERSION_1_6)) return;
if (isAidl()) {
mSimProxy.updateSimPhonebookRecords(serial,
RILUtils.convertToHalPhonebookRecordInfoAidl(recordInfo));
} else {
((android.hardware.radio.V1_6.IRadio) mRadioProxy).updateSimPhonebookRecords(serial,
RILUtils.convertToHalPhonebookRecordInfo(recordInfo));
}
}
}