Loading src/java/com/android/internal/telephony/CommandException.java +6 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,8 @@ public class CommandException extends RuntimeException { MODE_NOT_SUPPORTED, FDN_CHECK_FAILURE, ILLEGAL_SIM_OR_ME, MISSING_RESOURCE, NO_SUCH_ELEMENT, } public CommandException(Error e) { Loading Loading @@ -83,6 +85,10 @@ public class CommandException extends RuntimeException { return new CommandException(Error.FDN_CHECK_FAILURE); case RILConstants.ILLEGAL_SIM_OR_ME: return new CommandException(Error.ILLEGAL_SIM_OR_ME); case RILConstants.MISSING_RESOURCE: return new CommandException(Error.MISSING_RESOURCE); case RILConstants.NO_SUCH_ELEMENT: return new CommandException(Error.NO_SUCH_ELEMENT); default: Rlog.e("GSM", "Unrecognized RIL errno " + ril_errno); return new CommandException(Error.INVALID_RESPONSE); Loading src/java/com/android/internal/telephony/CommandsInterface.java +59 −0 Original line number Diff line number Diff line Loading @@ -1700,6 +1700,65 @@ public interface CommandsInterface { */ public void testingEmergencyCall(); /** * Open a logical channel to the SIM. * * Input parameters equivalent to TS 27.007 AT+CCHO command. * * @param AID Application id. See ETSI 102.221 and 101.220. * @param response Callback message. response.obj will be an int [1] with * element [0] set to the id of the logical channel. If set to 0, * the channel is invalid. */ public void iccOpenLogicalChannel(String AID, Message response); /** * Close a previously opened logical channel to the SIM. * * Input parameters equivalent to TS 27.007 AT+CCHC command. * * @param channel Channel id. Id of the channel to be closed. * @param response Callback message. */ public void iccCloseLogicalChannel(int channel, Message response); /** * Exchange APDUs with the SIM on a logical channel. * * Input parameters equivalent to TS 27.007 AT+CGLA command. * * @param channel Channel id of the channel to use for communication. Has to * be greater than zero. * @param cla Class of the APDU command. * @param instruction Instruction of the APDU command. * @param p1 P1 value of the APDU command. * @param p2 P2 value of the APDU command. * @param p3 P3 value of the APDU command. If p3 is negative a 4 byte APDU * is sent to the SIM. * @param data Data to be sent with the APDU. * @param response Callback message. response.obj.userObj will be * an IccIoResult on success. */ public void iccTransmitApduLogicalChannel(int channel, int cla, int instruction, int p1, int p2, int p3, String data, Message response); /** * Exchange APDUs with the SIM on a basic channel. * * Input parameters equivalent to TS 27.007 AT+CSIM command. * * @param cla Class of the APDU command. * @param instruction Instruction of the APDU command. * @param p1 P1 value of the APDU command. * @param p2 P2 value of the APDU command. * @param p3 P3 value of the APDU command. If p3 is negative a 4 byte APDU * is sent to the SIM. * @param data Data to be sent with the APDU. * @param response Callback message. response.obj.userObj will be * an IccIoResult on success. */ public void iccTransmitApduBasicChannel(int cla, int instruction, int p1, int p2, int p3, String data, Message response); /** * @return version of the ril. Loading src/java/com/android/internal/telephony/RIL.java +85 −0 Original line number Diff line number Diff line Loading @@ -2435,6 +2435,10 @@ public final class RIL extends BaseCommands implements CommandsInterface { case RIL_REQUEST_SET_INITIAL_ATTACH_APN: ret = responseVoid(p); break; case RIL_REQUEST_IMS_REGISTRATION_STATE: ret = responseInts(p); break; case RIL_REQUEST_IMS_SEND_SMS: ret = responseSMS(p); break; case RIL_REQUEST_SIM_TRANSMIT_APDU_BASIC: ret = responseICC_IO(p); break; case RIL_REQUEST_SIM_OPEN_CHANNEL: ret = responseInts(p); break; case RIL_REQUEST_SIM_CLOSE_CHANNEL: ret = responseVoid(p); break; case RIL_REQUEST_SIM_TRANSMIT_APDU_CHANNEL: ret = responseICC_IO(p); break; default: throw new RuntimeException("Unrecognized solicited response: " + rr.mRequest); //break; Loading Loading @@ -3740,6 +3744,10 @@ public final class RIL extends BaseCommands implements CommandsInterface { case RIL_REQUEST_SET_INITIAL_ATTACH_APN: return "RIL_REQUEST_SET_INITIAL_ATTACH_APN"; case RIL_REQUEST_IMS_REGISTRATION_STATE: return "RIL_REQUEST_IMS_REGISTRATION_STATE"; case RIL_REQUEST_IMS_SEND_SMS: return "RIL_REQUEST_IMS_SEND_SMS"; case RIL_REQUEST_SIM_TRANSMIT_APDU_BASIC: return "RIL_REQUEST_SIM_TRANSMIT_APDU_BASIC"; case RIL_REQUEST_SIM_OPEN_CHANNEL: return "RIL_REQUEST_SIM_OPEN_CHANNEL"; case RIL_REQUEST_SIM_CLOSE_CHANNEL: return "RIL_REQUEST_SIM_CLOSE_CHANNEL"; case RIL_REQUEST_SIM_TRANSMIT_APDU_CHANNEL: return "RIL_REQUEST_SIM_TRANSMIT_APDU_CHANNEL"; default: return "<unknown request>"; } } Loading Loading @@ -4110,4 +4118,81 @@ public final class RIL extends BaseCommands implements CommandsInterface { pw.println(" mLastNITZTimeInfo=" + mLastNITZTimeInfo); pw.println(" mTestingEmergencyCall=" + mTestingEmergencyCall.get()); } /** * {@inheritDoc} */ @Override public void iccOpenLogicalChannel(String AID, Message response) { RILRequest rr = RILRequest.obtain(RIL_REQUEST_SIM_OPEN_CHANNEL, response); rr.mParcel.writeString(AID); if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); send(rr); } /** * {@inheritDoc} */ @Override public void iccCloseLogicalChannel(int channel, Message response) { RILRequest rr = RILRequest.obtain(RIL_REQUEST_SIM_CLOSE_CHANNEL, response); rr.mParcel.writeInt(1); rr.mParcel.writeInt(channel); if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); send(rr); } /** * {@inheritDoc} */ @Override public void iccTransmitApduLogicalChannel(int channel, int cla, int instruction, int p1, int p2, int p3, String data, Message response) { if (channel <= 0) { throw new RuntimeException( "Invalid channel in iccTransmitApduLogicalChannel: " + channel); } iccTransmitApduHelper(channel, cla, instruction, p1, p2, p3, data, response); } /** * {@inheritDoc} */ @Override public void iccTransmitApduBasicChannel(int cla, int instruction, int p1, int p2, int p3, String data, Message response) { iccTransmitApduHelper(0, cla, instruction, p1, p2, p3, data, response); } /* * Helper function for the iccTransmitApdu* commands above. */ private void iccTransmitApduHelper(int channel, int cla, int instruction, int p1, int p2, int p3, String data, Message response) { RILRequest rr; if (channel == 0) rr = RILRequest.obtain(RIL_REQUEST_SIM_TRANSMIT_APDU_BASIC, response); else rr = RILRequest.obtain(RIL_REQUEST_SIM_TRANSMIT_APDU_CHANNEL, response); rr.mParcel.writeInt(channel); rr.mParcel.writeInt(cla); rr.mParcel.writeInt(instruction); rr.mParcel.writeInt(p1); rr.mParcel.writeInt(p2); rr.mParcel.writeInt(p3); rr.mParcel.writeString(data); if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); send(rr); } } src/java/com/android/internal/telephony/sip/SipCommandInterface.java +18 −0 Original line number Diff line number Diff line Loading @@ -555,4 +555,22 @@ class SipCommandInterface extends BaseCommands implements CommandsInterface { public void setInitialAttachApn(String apn, String protocol, int authType, String username, String password, Message result) { } @Override public void iccOpenLogicalChannel(String AID, Message response) { } @Override public void iccCloseLogicalChannel(int channel, Message response) { } @Override public void iccTransmitApduLogicalChannel(int channel, int cla, int instruction, int p1, int p2, int p3, String data, Message response) { } @Override public void iccTransmitApduBasicChannel(int cla, int instruction, int p1, int p2, int p3, String data, Message response) { } } src/java/com/android/internal/telephony/test/SimulatedCommands.java +22 −0 Original line number Diff line number Diff line Loading @@ -1677,4 +1677,26 @@ public final class SimulatedCommands extends BaseCommands int retry, int messageRef, Message response){ unimplemented(response); } @Override public void iccOpenLogicalChannel(String AID, Message response) { unimplemented(response); } @Override public void iccCloseLogicalChannel(int channel, Message response) { unimplemented(response); } @Override public void iccTransmitApduLogicalChannel(int channel, int cla, int instruction, int p1, int p2, int p3, String data, Message response) { unimplemented(response); } @Override public void iccTransmitApduBasicChannel(int cla, int instruction, int p1, int p2, int p3, String data, Message response) { unimplemented(response); } } Loading
src/java/com/android/internal/telephony/CommandException.java +6 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,8 @@ public class CommandException extends RuntimeException { MODE_NOT_SUPPORTED, FDN_CHECK_FAILURE, ILLEGAL_SIM_OR_ME, MISSING_RESOURCE, NO_SUCH_ELEMENT, } public CommandException(Error e) { Loading Loading @@ -83,6 +85,10 @@ public class CommandException extends RuntimeException { return new CommandException(Error.FDN_CHECK_FAILURE); case RILConstants.ILLEGAL_SIM_OR_ME: return new CommandException(Error.ILLEGAL_SIM_OR_ME); case RILConstants.MISSING_RESOURCE: return new CommandException(Error.MISSING_RESOURCE); case RILConstants.NO_SUCH_ELEMENT: return new CommandException(Error.NO_SUCH_ELEMENT); default: Rlog.e("GSM", "Unrecognized RIL errno " + ril_errno); return new CommandException(Error.INVALID_RESPONSE); Loading
src/java/com/android/internal/telephony/CommandsInterface.java +59 −0 Original line number Diff line number Diff line Loading @@ -1700,6 +1700,65 @@ public interface CommandsInterface { */ public void testingEmergencyCall(); /** * Open a logical channel to the SIM. * * Input parameters equivalent to TS 27.007 AT+CCHO command. * * @param AID Application id. See ETSI 102.221 and 101.220. * @param response Callback message. response.obj will be an int [1] with * element [0] set to the id of the logical channel. If set to 0, * the channel is invalid. */ public void iccOpenLogicalChannel(String AID, Message response); /** * Close a previously opened logical channel to the SIM. * * Input parameters equivalent to TS 27.007 AT+CCHC command. * * @param channel Channel id. Id of the channel to be closed. * @param response Callback message. */ public void iccCloseLogicalChannel(int channel, Message response); /** * Exchange APDUs with the SIM on a logical channel. * * Input parameters equivalent to TS 27.007 AT+CGLA command. * * @param channel Channel id of the channel to use for communication. Has to * be greater than zero. * @param cla Class of the APDU command. * @param instruction Instruction of the APDU command. * @param p1 P1 value of the APDU command. * @param p2 P2 value of the APDU command. * @param p3 P3 value of the APDU command. If p3 is negative a 4 byte APDU * is sent to the SIM. * @param data Data to be sent with the APDU. * @param response Callback message. response.obj.userObj will be * an IccIoResult on success. */ public void iccTransmitApduLogicalChannel(int channel, int cla, int instruction, int p1, int p2, int p3, String data, Message response); /** * Exchange APDUs with the SIM on a basic channel. * * Input parameters equivalent to TS 27.007 AT+CSIM command. * * @param cla Class of the APDU command. * @param instruction Instruction of the APDU command. * @param p1 P1 value of the APDU command. * @param p2 P2 value of the APDU command. * @param p3 P3 value of the APDU command. If p3 is negative a 4 byte APDU * is sent to the SIM. * @param data Data to be sent with the APDU. * @param response Callback message. response.obj.userObj will be * an IccIoResult on success. */ public void iccTransmitApduBasicChannel(int cla, int instruction, int p1, int p2, int p3, String data, Message response); /** * @return version of the ril. Loading
src/java/com/android/internal/telephony/RIL.java +85 −0 Original line number Diff line number Diff line Loading @@ -2435,6 +2435,10 @@ public final class RIL extends BaseCommands implements CommandsInterface { case RIL_REQUEST_SET_INITIAL_ATTACH_APN: ret = responseVoid(p); break; case RIL_REQUEST_IMS_REGISTRATION_STATE: ret = responseInts(p); break; case RIL_REQUEST_IMS_SEND_SMS: ret = responseSMS(p); break; case RIL_REQUEST_SIM_TRANSMIT_APDU_BASIC: ret = responseICC_IO(p); break; case RIL_REQUEST_SIM_OPEN_CHANNEL: ret = responseInts(p); break; case RIL_REQUEST_SIM_CLOSE_CHANNEL: ret = responseVoid(p); break; case RIL_REQUEST_SIM_TRANSMIT_APDU_CHANNEL: ret = responseICC_IO(p); break; default: throw new RuntimeException("Unrecognized solicited response: " + rr.mRequest); //break; Loading Loading @@ -3740,6 +3744,10 @@ public final class RIL extends BaseCommands implements CommandsInterface { case RIL_REQUEST_SET_INITIAL_ATTACH_APN: return "RIL_REQUEST_SET_INITIAL_ATTACH_APN"; case RIL_REQUEST_IMS_REGISTRATION_STATE: return "RIL_REQUEST_IMS_REGISTRATION_STATE"; case RIL_REQUEST_IMS_SEND_SMS: return "RIL_REQUEST_IMS_SEND_SMS"; case RIL_REQUEST_SIM_TRANSMIT_APDU_BASIC: return "RIL_REQUEST_SIM_TRANSMIT_APDU_BASIC"; case RIL_REQUEST_SIM_OPEN_CHANNEL: return "RIL_REQUEST_SIM_OPEN_CHANNEL"; case RIL_REQUEST_SIM_CLOSE_CHANNEL: return "RIL_REQUEST_SIM_CLOSE_CHANNEL"; case RIL_REQUEST_SIM_TRANSMIT_APDU_CHANNEL: return "RIL_REQUEST_SIM_TRANSMIT_APDU_CHANNEL"; default: return "<unknown request>"; } } Loading Loading @@ -4110,4 +4118,81 @@ public final class RIL extends BaseCommands implements CommandsInterface { pw.println(" mLastNITZTimeInfo=" + mLastNITZTimeInfo); pw.println(" mTestingEmergencyCall=" + mTestingEmergencyCall.get()); } /** * {@inheritDoc} */ @Override public void iccOpenLogicalChannel(String AID, Message response) { RILRequest rr = RILRequest.obtain(RIL_REQUEST_SIM_OPEN_CHANNEL, response); rr.mParcel.writeString(AID); if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); send(rr); } /** * {@inheritDoc} */ @Override public void iccCloseLogicalChannel(int channel, Message response) { RILRequest rr = RILRequest.obtain(RIL_REQUEST_SIM_CLOSE_CHANNEL, response); rr.mParcel.writeInt(1); rr.mParcel.writeInt(channel); if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); send(rr); } /** * {@inheritDoc} */ @Override public void iccTransmitApduLogicalChannel(int channel, int cla, int instruction, int p1, int p2, int p3, String data, Message response) { if (channel <= 0) { throw new RuntimeException( "Invalid channel in iccTransmitApduLogicalChannel: " + channel); } iccTransmitApduHelper(channel, cla, instruction, p1, p2, p3, data, response); } /** * {@inheritDoc} */ @Override public void iccTransmitApduBasicChannel(int cla, int instruction, int p1, int p2, int p3, String data, Message response) { iccTransmitApduHelper(0, cla, instruction, p1, p2, p3, data, response); } /* * Helper function for the iccTransmitApdu* commands above. */ private void iccTransmitApduHelper(int channel, int cla, int instruction, int p1, int p2, int p3, String data, Message response) { RILRequest rr; if (channel == 0) rr = RILRequest.obtain(RIL_REQUEST_SIM_TRANSMIT_APDU_BASIC, response); else rr = RILRequest.obtain(RIL_REQUEST_SIM_TRANSMIT_APDU_CHANNEL, response); rr.mParcel.writeInt(channel); rr.mParcel.writeInt(cla); rr.mParcel.writeInt(instruction); rr.mParcel.writeInt(p1); rr.mParcel.writeInt(p2); rr.mParcel.writeInt(p3); rr.mParcel.writeString(data); if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); send(rr); } }
src/java/com/android/internal/telephony/sip/SipCommandInterface.java +18 −0 Original line number Diff line number Diff line Loading @@ -555,4 +555,22 @@ class SipCommandInterface extends BaseCommands implements CommandsInterface { public void setInitialAttachApn(String apn, String protocol, int authType, String username, String password, Message result) { } @Override public void iccOpenLogicalChannel(String AID, Message response) { } @Override public void iccCloseLogicalChannel(int channel, Message response) { } @Override public void iccTransmitApduLogicalChannel(int channel, int cla, int instruction, int p1, int p2, int p3, String data, Message response) { } @Override public void iccTransmitApduBasicChannel(int cla, int instruction, int p1, int p2, int p3, String data, Message response) { } }
src/java/com/android/internal/telephony/test/SimulatedCommands.java +22 −0 Original line number Diff line number Diff line Loading @@ -1677,4 +1677,26 @@ public final class SimulatedCommands extends BaseCommands int retry, int messageRef, Message response){ unimplemented(response); } @Override public void iccOpenLogicalChannel(String AID, Message response) { unimplemented(response); } @Override public void iccCloseLogicalChannel(int channel, Message response) { unimplemented(response); } @Override public void iccTransmitApduLogicalChannel(int channel, int cla, int instruction, int p1, int p2, int p3, String data, Message response) { unimplemented(response); } @Override public void iccTransmitApduBasicChannel(int cla, int instruction, int p1, int p2, int p3, String data, Message response) { unimplemented(response); } }