Loading telephony/java/com/android/internal/telephony/IccConstants.java +33 −28 Original line number Diff line number Diff line Loading @@ -21,39 +21,44 @@ package com.android.internal.telephony; */ public interface IccConstants { // GSM SIM file ids from TS 51.011 public static final int EF_ADN = 0x6F3A; public static final int EF_FDN = 0x6F3B; public static final int EF_SDN = 0x6F49; public static final int EF_EXT1 = 0x6F4A; public static final int EF_EXT2 = 0x6F4B; public static final int EF_EXT3 = 0x6F4C; public static final int EF_EXT6 = 0x6fc8; // Ext record for EF[MBDN] public static final int EF_MWIS = 0x6FCA; public static final int EF_MBDN = 0x6fc7; public static final int EF_PNN = 0x6fc5; public static final int EF_SPN = 0x6F46; public static final int EF_SMS = 0x6F3C; public static final int EF_ICCID = 0x2fe2; public static final int EF_AD = 0x6FAD; public static final int EF_MBI = 0x6fc9; public static final int EF_MSISDN = 0x6f40; public static final int EF_SPDI = 0x6fcd; public static final int EF_SST = 0x6f38; public static final int EF_CFIS = 0x6FCB; public static final int EF_IMG = 0x4f20; static final int EF_ADN = 0x6F3A; static final int EF_FDN = 0x6F3B; static final int EF_SDN = 0x6F49; static final int EF_EXT1 = 0x6F4A; static final int EF_EXT2 = 0x6F4B; static final int EF_EXT3 = 0x6F4C; static final int EF_EXT6 = 0x6fc8; // Ext record for EF[MBDN] static final int EF_MWIS = 0x6FCA; static final int EF_MBDN = 0x6fc7; static final int EF_PNN = 0x6fc5; static final int EF_SPN = 0x6F46; static final int EF_SMS = 0x6F3C; static final int EF_ICCID = 0x2fe2; static final int EF_AD = 0x6FAD; static final int EF_MBI = 0x6fc9; static final int EF_MSISDN = 0x6f40; static final int EF_SPDI = 0x6fcd; static final int EF_SST = 0x6f38; static final int EF_CFIS = 0x6FCB; static final int EF_IMG = 0x4f20; // GSM SIM file ids from CPHS (phase 2, version 4.2) CPHS4_2.WW6 public static final int EF_MAILBOX_CPHS = 0x6F17; public static final int EF_VOICE_MAIL_INDICATOR_CPHS = 0x6F11; public static final int EF_CFF_CPHS = 0x6F13; public static final int EF_SPN_CPHS = 0x6f14; public static final int EF_SPN_SHORT_CPHS = 0x6f18; public static final int EF_INFO_CPHS = 0x6f16; static final int EF_MAILBOX_CPHS = 0x6F17; static final int EF_VOICE_MAIL_INDICATOR_CPHS = 0x6F11; static final int EF_CFF_CPHS = 0x6F13; static final int EF_SPN_CPHS = 0x6f14; static final int EF_SPN_SHORT_CPHS = 0x6f18; static final int EF_INFO_CPHS = 0x6f16; // CDMA RUIM file ids from 3GPP2 C.S0023-0 public static final int EF_CST = 0x6f32; public static final int EF_RUIM_SPN =0x6F41; static final int EF_CST = 0x6f32; static final int EF_RUIM_SPN =0x6F41; // SMS record length from TS 51.011 10.5.3 static public final int SMS_RECORD_LENGTH = 176; static final String MF_SIM = "3F00"; static final String DF_TELECOM = "7F10"; static final String DF_GRAPHICS = "5F50"; static final String DF_GSM = "7F20"; } telephony/java/com/android/internal/telephony/IccFileHandler.java +41 −10 Original line number Diff line number Diff line Loading @@ -23,7 +23,7 @@ import java.util.ArrayList; /** * {@hide} */ public abstract class IccFileHandler extends Handler { public abstract class IccFileHandler extends Handler implements IccConstants { //from TS 11.11 9.1 or elsewhere static protected final int COMMAND_READ_BINARY = 0xb0; Loading Loading @@ -145,7 +145,7 @@ public abstract class IccFileHandler extends Handler { = obtainMessage(EVENT_GET_RECORD_SIZE_DONE, new LoadLinearFixedContext(fileid, recordNum, onLoaded)); phone.mCM.iccIO(COMMAND_GET_RESPONSE, fileid, null, phone.mCM.iccIO(COMMAND_GET_RESPONSE, fileid, getEFPath(fileid), 0, 0, GET_RESPONSE_EF_SIZE_BYTES, null, null, response); } Loading @@ -163,6 +163,7 @@ public abstract class IccFileHandler extends Handler { new LoadLinearFixedContext(IccConstants.EF_IMG, recordNum, onLoaded)); // TODO(): Verify when path changes are done. phone.mCM.iccIO(COMMAND_GET_RESPONSE, IccConstants.EF_IMG, "img", recordNum, READ_RECORD_MODE_ABSOLUTE, GET_RESPONSE_EF_IMG_SIZE_BYTES, null, null, response); Loading @@ -181,7 +182,7 @@ public abstract class IccFileHandler extends Handler { Message response = obtainMessage(EVENT_GET_EF_LINEAR_RECORD_SIZE_DONE, new LoadLinearFixedContext(fileid, onLoaded)); phone.mCM.iccIO(COMMAND_GET_RESPONSE, fileid, null, phone.mCM.iccIO(COMMAND_GET_RESPONSE, fileid, getEFPath(fileid), 0, 0, GET_RESPONSE_EF_SIZE_BYTES, null, null, response); } Loading @@ -198,7 +199,7 @@ public abstract class IccFileHandler extends Handler { Message response = obtainMessage(EVENT_GET_RECORD_SIZE_DONE, new LoadLinearFixedContext(fileid,onLoaded)); phone.mCM.iccIO(COMMAND_GET_RESPONSE, fileid, null, phone.mCM.iccIO(COMMAND_GET_RESPONSE, fileid, getEFPath(fileid), 0, 0, GET_RESPONSE_EF_SIZE_BYTES, null, null, response); } Loading @@ -216,7 +217,7 @@ public abstract class IccFileHandler extends Handler { Message response = obtainMessage(EVENT_GET_BINARY_SIZE_DONE, fileid, 0, onLoaded); phone.mCM.iccIO(COMMAND_GET_RESPONSE, fileid, null, phone.mCM.iccIO(COMMAND_GET_RESPONSE, fileid, getEFPath(fileid), 0, 0, GET_RESPONSE_EF_SIZE_BYTES, null, null, response); } Loading Loading @@ -250,7 +251,7 @@ public abstract class IccFileHandler extends Handler { */ public void updateEFLinearFixed(int fileid, int recordNum, byte[] data, String pin2, Message onComplete) { phone.mCM.iccIO(COMMAND_UPDATE_RECORD, fileid, null, phone.mCM.iccIO(COMMAND_UPDATE_RECORD, fileid, getEFPath(fileid), recordNum, READ_RECORD_MODE_ABSOLUTE, data.length, IccUtils.bytesToHexString(data), pin2, onComplete); } Loading @@ -261,7 +262,7 @@ public abstract class IccFileHandler extends Handler { * @param data must be exactly as long as the EF */ public void updateEFTransparent(int fileid, byte[] data, Message onComplete) { phone.mCM.iccIO(COMMAND_UPDATE_BINARY, fileid, null, phone.mCM.iccIO(COMMAND_UPDATE_BINARY, fileid, getEFPath(fileid), 0, 0, data.length, IccUtils.bytesToHexString(data), null, onComplete); } Loading Loading @@ -394,7 +395,7 @@ public abstract class IccFileHandler extends Handler { lc.results = new ArrayList<byte[]>(lc.countRecords); } phone.mCM.iccIO(COMMAND_READ_RECORD, lc.efid, null, phone.mCM.iccIO(COMMAND_READ_RECORD, lc.efid, getEFPath(lc.efid), lc.recordNum, READ_RECORD_MODE_ABSOLUTE, lc.recordSize, null, null, Loading Loading @@ -432,7 +433,7 @@ public abstract class IccFileHandler extends Handler { size = ((data[RESPONSE_DATA_FILE_SIZE_1] & 0xff) << 8) + (data[RESPONSE_DATA_FILE_SIZE_2] & 0xff); phone.mCM.iccIO(COMMAND_READ_BINARY, fileid, null, phone.mCM.iccIO(COMMAND_READ_BINARY, fileid, getEFPath(fileid), 0, 0, size, null, null, obtainMessage(EVENT_READ_BINARY_DONE, fileid, 0, response)); Loading Loading @@ -467,7 +468,7 @@ public abstract class IccFileHandler extends Handler { if (lc.recordNum > lc.countRecords) { sendResult(response, lc.results, null); } else { phone.mCM.iccIO(COMMAND_READ_RECORD, lc.efid, null, phone.mCM.iccIO(COMMAND_READ_RECORD, lc.efid, getEFPath(lc.efid), lc.recordNum, READ_RECORD_MODE_ABSOLUTE, lc.recordSize, null, null, Loading Loading @@ -506,6 +507,36 @@ public abstract class IccFileHandler extends Handler { } } /** * Returns the root path of the EF file. * i.e returns MasterFile + DFfile as a string. * Ex: For EF_ADN on a SIM, it will return "3F007F10" * This function handles only EFids that are common to * RUIM, SIM, USIM and other types of Icc cards. * * @param efId * @return root path of the file. */ protected String getCommonIccEFPath(int efid) { switch(efid) { case EF_ADN: case EF_FDN: case EF_MSISDN: case EF_SDN: case EF_EXT1: case EF_EXT2: case EF_EXT3: return MF_SIM + DF_TELECOM; case EF_ICCID: return MF_SIM; case EF_IMG: return MF_SIM + DF_TELECOM + DF_GRAPHICS; } return null; } protected abstract String getEFPath(int efid); protected abstract void logd(String s); protected abstract void loge(String s); Loading telephony/java/com/android/internal/telephony/cdma/RuimFileHandler.java +5 −1 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package com.android.internal.telephony.cdma; import android.os.*; import android.os.AsyncResult; import android.util.Log; import com.android.internal.telephony.IccConstants; Loading Loading @@ -68,6 +67,11 @@ public final class RuimFileHandler extends IccFileHandler { super.handleMessage(msg); } protected String getEFPath(int efid) { // TODO(): Implement for CDMA EFs. return getCommonIccEFPath(efid); } protected void logd(String msg) { Log.d(LOG_TAG, "[RuimFileHandler] " + msg); } Loading telephony/java/com/android/internal/telephony/gsm/SIMFileHandler.java +34 −10 Original line number Diff line number Diff line Loading @@ -16,26 +16,19 @@ package com.android.internal.telephony.gsm; import android.os.*; import android.os.AsyncResult; import android.os.Message; import android.util.Log; import com.android.internal.telephony.IccConstants; import com.android.internal.telephony.IccException; import com.android.internal.telephony.IccFileHandler; import com.android.internal.telephony.IccFileTypeMismatch; import com.android.internal.telephony.IccIoResult; import com.android.internal.telephony.IccUtils; import com.android.internal.telephony.PhoneProxy; import java.util.ArrayList; /** * {@hide} */ public final class SIMFileHandler extends IccFileHandler { public final class SIMFileHandler extends IccFileHandler implements IccConstants { static final String LOG_TAG = "GSM"; //***** Instance Variables //***** Constructor Loading @@ -59,6 +52,37 @@ public final class SIMFileHandler extends IccFileHandler { super.handleMessage(msg); } protected String getEFPath(int efid) { // TODO(): Make changes when USIM is supported // TODO(): DF_GSM can be 7F20 or 7F21 to handle backward compatibility. // Implement this after discussion with OEMs. switch(efid) { case EF_SMS: return MF_SIM + DF_TELECOM; case EF_EXT6: case EF_MWIS: case EF_MBI: case EF_SPN: case EF_AD: case EF_MBDN: case EF_PNN: case EF_SPDI: case EF_SST: case EF_CFIS: return MF_SIM + DF_GSM; case EF_MAILBOX_CPHS: case EF_VOICE_MAIL_INDICATOR_CPHS: case EF_CFF_CPHS: case EF_SPN_CPHS: case EF_SPN_SHORT_CPHS: case EF_INFO_CPHS: return MF_SIM + DF_GSM; } return getCommonIccEFPath(efid); } protected void logd(String msg) { Log.d(LOG_TAG, "[SIMFileHandler] " + msg); } Loading Loading
telephony/java/com/android/internal/telephony/IccConstants.java +33 −28 Original line number Diff line number Diff line Loading @@ -21,39 +21,44 @@ package com.android.internal.telephony; */ public interface IccConstants { // GSM SIM file ids from TS 51.011 public static final int EF_ADN = 0x6F3A; public static final int EF_FDN = 0x6F3B; public static final int EF_SDN = 0x6F49; public static final int EF_EXT1 = 0x6F4A; public static final int EF_EXT2 = 0x6F4B; public static final int EF_EXT3 = 0x6F4C; public static final int EF_EXT6 = 0x6fc8; // Ext record for EF[MBDN] public static final int EF_MWIS = 0x6FCA; public static final int EF_MBDN = 0x6fc7; public static final int EF_PNN = 0x6fc5; public static final int EF_SPN = 0x6F46; public static final int EF_SMS = 0x6F3C; public static final int EF_ICCID = 0x2fe2; public static final int EF_AD = 0x6FAD; public static final int EF_MBI = 0x6fc9; public static final int EF_MSISDN = 0x6f40; public static final int EF_SPDI = 0x6fcd; public static final int EF_SST = 0x6f38; public static final int EF_CFIS = 0x6FCB; public static final int EF_IMG = 0x4f20; static final int EF_ADN = 0x6F3A; static final int EF_FDN = 0x6F3B; static final int EF_SDN = 0x6F49; static final int EF_EXT1 = 0x6F4A; static final int EF_EXT2 = 0x6F4B; static final int EF_EXT3 = 0x6F4C; static final int EF_EXT6 = 0x6fc8; // Ext record for EF[MBDN] static final int EF_MWIS = 0x6FCA; static final int EF_MBDN = 0x6fc7; static final int EF_PNN = 0x6fc5; static final int EF_SPN = 0x6F46; static final int EF_SMS = 0x6F3C; static final int EF_ICCID = 0x2fe2; static final int EF_AD = 0x6FAD; static final int EF_MBI = 0x6fc9; static final int EF_MSISDN = 0x6f40; static final int EF_SPDI = 0x6fcd; static final int EF_SST = 0x6f38; static final int EF_CFIS = 0x6FCB; static final int EF_IMG = 0x4f20; // GSM SIM file ids from CPHS (phase 2, version 4.2) CPHS4_2.WW6 public static final int EF_MAILBOX_CPHS = 0x6F17; public static final int EF_VOICE_MAIL_INDICATOR_CPHS = 0x6F11; public static final int EF_CFF_CPHS = 0x6F13; public static final int EF_SPN_CPHS = 0x6f14; public static final int EF_SPN_SHORT_CPHS = 0x6f18; public static final int EF_INFO_CPHS = 0x6f16; static final int EF_MAILBOX_CPHS = 0x6F17; static final int EF_VOICE_MAIL_INDICATOR_CPHS = 0x6F11; static final int EF_CFF_CPHS = 0x6F13; static final int EF_SPN_CPHS = 0x6f14; static final int EF_SPN_SHORT_CPHS = 0x6f18; static final int EF_INFO_CPHS = 0x6f16; // CDMA RUIM file ids from 3GPP2 C.S0023-0 public static final int EF_CST = 0x6f32; public static final int EF_RUIM_SPN =0x6F41; static final int EF_CST = 0x6f32; static final int EF_RUIM_SPN =0x6F41; // SMS record length from TS 51.011 10.5.3 static public final int SMS_RECORD_LENGTH = 176; static final String MF_SIM = "3F00"; static final String DF_TELECOM = "7F10"; static final String DF_GRAPHICS = "5F50"; static final String DF_GSM = "7F20"; }
telephony/java/com/android/internal/telephony/IccFileHandler.java +41 −10 Original line number Diff line number Diff line Loading @@ -23,7 +23,7 @@ import java.util.ArrayList; /** * {@hide} */ public abstract class IccFileHandler extends Handler { public abstract class IccFileHandler extends Handler implements IccConstants { //from TS 11.11 9.1 or elsewhere static protected final int COMMAND_READ_BINARY = 0xb0; Loading Loading @@ -145,7 +145,7 @@ public abstract class IccFileHandler extends Handler { = obtainMessage(EVENT_GET_RECORD_SIZE_DONE, new LoadLinearFixedContext(fileid, recordNum, onLoaded)); phone.mCM.iccIO(COMMAND_GET_RESPONSE, fileid, null, phone.mCM.iccIO(COMMAND_GET_RESPONSE, fileid, getEFPath(fileid), 0, 0, GET_RESPONSE_EF_SIZE_BYTES, null, null, response); } Loading @@ -163,6 +163,7 @@ public abstract class IccFileHandler extends Handler { new LoadLinearFixedContext(IccConstants.EF_IMG, recordNum, onLoaded)); // TODO(): Verify when path changes are done. phone.mCM.iccIO(COMMAND_GET_RESPONSE, IccConstants.EF_IMG, "img", recordNum, READ_RECORD_MODE_ABSOLUTE, GET_RESPONSE_EF_IMG_SIZE_BYTES, null, null, response); Loading @@ -181,7 +182,7 @@ public abstract class IccFileHandler extends Handler { Message response = obtainMessage(EVENT_GET_EF_LINEAR_RECORD_SIZE_DONE, new LoadLinearFixedContext(fileid, onLoaded)); phone.mCM.iccIO(COMMAND_GET_RESPONSE, fileid, null, phone.mCM.iccIO(COMMAND_GET_RESPONSE, fileid, getEFPath(fileid), 0, 0, GET_RESPONSE_EF_SIZE_BYTES, null, null, response); } Loading @@ -198,7 +199,7 @@ public abstract class IccFileHandler extends Handler { Message response = obtainMessage(EVENT_GET_RECORD_SIZE_DONE, new LoadLinearFixedContext(fileid,onLoaded)); phone.mCM.iccIO(COMMAND_GET_RESPONSE, fileid, null, phone.mCM.iccIO(COMMAND_GET_RESPONSE, fileid, getEFPath(fileid), 0, 0, GET_RESPONSE_EF_SIZE_BYTES, null, null, response); } Loading @@ -216,7 +217,7 @@ public abstract class IccFileHandler extends Handler { Message response = obtainMessage(EVENT_GET_BINARY_SIZE_DONE, fileid, 0, onLoaded); phone.mCM.iccIO(COMMAND_GET_RESPONSE, fileid, null, phone.mCM.iccIO(COMMAND_GET_RESPONSE, fileid, getEFPath(fileid), 0, 0, GET_RESPONSE_EF_SIZE_BYTES, null, null, response); } Loading Loading @@ -250,7 +251,7 @@ public abstract class IccFileHandler extends Handler { */ public void updateEFLinearFixed(int fileid, int recordNum, byte[] data, String pin2, Message onComplete) { phone.mCM.iccIO(COMMAND_UPDATE_RECORD, fileid, null, phone.mCM.iccIO(COMMAND_UPDATE_RECORD, fileid, getEFPath(fileid), recordNum, READ_RECORD_MODE_ABSOLUTE, data.length, IccUtils.bytesToHexString(data), pin2, onComplete); } Loading @@ -261,7 +262,7 @@ public abstract class IccFileHandler extends Handler { * @param data must be exactly as long as the EF */ public void updateEFTransparent(int fileid, byte[] data, Message onComplete) { phone.mCM.iccIO(COMMAND_UPDATE_BINARY, fileid, null, phone.mCM.iccIO(COMMAND_UPDATE_BINARY, fileid, getEFPath(fileid), 0, 0, data.length, IccUtils.bytesToHexString(data), null, onComplete); } Loading Loading @@ -394,7 +395,7 @@ public abstract class IccFileHandler extends Handler { lc.results = new ArrayList<byte[]>(lc.countRecords); } phone.mCM.iccIO(COMMAND_READ_RECORD, lc.efid, null, phone.mCM.iccIO(COMMAND_READ_RECORD, lc.efid, getEFPath(lc.efid), lc.recordNum, READ_RECORD_MODE_ABSOLUTE, lc.recordSize, null, null, Loading Loading @@ -432,7 +433,7 @@ public abstract class IccFileHandler extends Handler { size = ((data[RESPONSE_DATA_FILE_SIZE_1] & 0xff) << 8) + (data[RESPONSE_DATA_FILE_SIZE_2] & 0xff); phone.mCM.iccIO(COMMAND_READ_BINARY, fileid, null, phone.mCM.iccIO(COMMAND_READ_BINARY, fileid, getEFPath(fileid), 0, 0, size, null, null, obtainMessage(EVENT_READ_BINARY_DONE, fileid, 0, response)); Loading Loading @@ -467,7 +468,7 @@ public abstract class IccFileHandler extends Handler { if (lc.recordNum > lc.countRecords) { sendResult(response, lc.results, null); } else { phone.mCM.iccIO(COMMAND_READ_RECORD, lc.efid, null, phone.mCM.iccIO(COMMAND_READ_RECORD, lc.efid, getEFPath(lc.efid), lc.recordNum, READ_RECORD_MODE_ABSOLUTE, lc.recordSize, null, null, Loading Loading @@ -506,6 +507,36 @@ public abstract class IccFileHandler extends Handler { } } /** * Returns the root path of the EF file. * i.e returns MasterFile + DFfile as a string. * Ex: For EF_ADN on a SIM, it will return "3F007F10" * This function handles only EFids that are common to * RUIM, SIM, USIM and other types of Icc cards. * * @param efId * @return root path of the file. */ protected String getCommonIccEFPath(int efid) { switch(efid) { case EF_ADN: case EF_FDN: case EF_MSISDN: case EF_SDN: case EF_EXT1: case EF_EXT2: case EF_EXT3: return MF_SIM + DF_TELECOM; case EF_ICCID: return MF_SIM; case EF_IMG: return MF_SIM + DF_TELECOM + DF_GRAPHICS; } return null; } protected abstract String getEFPath(int efid); protected abstract void logd(String s); protected abstract void loge(String s); Loading
telephony/java/com/android/internal/telephony/cdma/RuimFileHandler.java +5 −1 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package com.android.internal.telephony.cdma; import android.os.*; import android.os.AsyncResult; import android.util.Log; import com.android.internal.telephony.IccConstants; Loading Loading @@ -68,6 +67,11 @@ public final class RuimFileHandler extends IccFileHandler { super.handleMessage(msg); } protected String getEFPath(int efid) { // TODO(): Implement for CDMA EFs. return getCommonIccEFPath(efid); } protected void logd(String msg) { Log.d(LOG_TAG, "[RuimFileHandler] " + msg); } Loading
telephony/java/com/android/internal/telephony/gsm/SIMFileHandler.java +34 −10 Original line number Diff line number Diff line Loading @@ -16,26 +16,19 @@ package com.android.internal.telephony.gsm; import android.os.*; import android.os.AsyncResult; import android.os.Message; import android.util.Log; import com.android.internal.telephony.IccConstants; import com.android.internal.telephony.IccException; import com.android.internal.telephony.IccFileHandler; import com.android.internal.telephony.IccFileTypeMismatch; import com.android.internal.telephony.IccIoResult; import com.android.internal.telephony.IccUtils; import com.android.internal.telephony.PhoneProxy; import java.util.ArrayList; /** * {@hide} */ public final class SIMFileHandler extends IccFileHandler { public final class SIMFileHandler extends IccFileHandler implements IccConstants { static final String LOG_TAG = "GSM"; //***** Instance Variables //***** Constructor Loading @@ -59,6 +52,37 @@ public final class SIMFileHandler extends IccFileHandler { super.handleMessage(msg); } protected String getEFPath(int efid) { // TODO(): Make changes when USIM is supported // TODO(): DF_GSM can be 7F20 or 7F21 to handle backward compatibility. // Implement this after discussion with OEMs. switch(efid) { case EF_SMS: return MF_SIM + DF_TELECOM; case EF_EXT6: case EF_MWIS: case EF_MBI: case EF_SPN: case EF_AD: case EF_MBDN: case EF_PNN: case EF_SPDI: case EF_SST: case EF_CFIS: return MF_SIM + DF_GSM; case EF_MAILBOX_CPHS: case EF_VOICE_MAIL_INDICATOR_CPHS: case EF_CFF_CPHS: case EF_SPN_CPHS: case EF_SPN_SHORT_CPHS: case EF_INFO_CPHS: return MF_SIM + DF_GSM; } return getCommonIccEFPath(efid); } protected void logd(String msg) { Log.d(LOG_TAG, "[SIMFileHandler] " + msg); } Loading