Loading src/java/com/android/internal/telephony/IccPhoneBookInterfaceManager.java +2 −1 Original line number Diff line number Diff line Loading @@ -384,7 +384,8 @@ public abstract class IccPhoneBookInterfaceManager { AtomicBoolean status = new AtomicBoolean(false); Message response = mBaseHandler.obtainMessage(EVENT_LOAD_DONE, status); if (mAdnCache != null) { mAdnCache.requestLoadAllAdnLike(efid, mAdnCache.extensionEfForEf(efid), response); mAdnCache.requestLoadAllAdnLike(efid, mAdnCache.extensionEfForEf(efid), null, response); waitForResult(status); } else { loge("Failure while trying to load from SIM due to uninitialised adncache"); Loading src/java/com/android/internal/telephony/gsm/UsimPhoneBookManager.java +17 −6 Original line number Diff line number Diff line Loading @@ -230,6 +230,7 @@ public class UsimPhoneBookManager extends Handler implements IccConstants { return; } mFh.loadEFLinearFixedAll(fileIds.get(USIM_EFEMAIL_TAG), getPBPath(fileIds.get(USIM_EFEMAIL_TAG)), obtainMessage(EVENT_EMAIL_LOAD_DONE, recNum)); log("readEmailFileAndWait email efid is : " + fileIds.get(USIM_EFEMAIL_TAG)); Loading @@ -242,7 +243,7 @@ public class UsimPhoneBookManager extends Handler implements IccConstants { } else { // Read all Email files per Record for (int efid: mPbrFile.mEmailFileIds.get(recNum)) { mFh.loadEFLinearFixedPart(efid, getValidRecordNums(recNum), mFh.loadEFLinearFixedPart(efid, getPBPath(efid), getValidRecordNums(recNum), obtainMessage(EVENT_EMAIL_LOAD_DONE, recNum)); log("readEmailFileAndWait email efid is : " + efid + " recNum:" + recNum); Loading Loading @@ -287,6 +288,7 @@ public class UsimPhoneBookManager extends Handler implements IccConstants { return; } mFh.loadEFLinearFixedAll(fileIds.get(USIM_EFANR_TAG), getPBPath(fileIds.get(USIM_EFANR_TAG)), obtainMessage(EVENT_ANR_LOAD_DONE, recNum)); log("readAnrFileAndWait anr efid is : " + fileIds.get(USIM_EFANR_TAG)); try { Loading @@ -297,7 +299,7 @@ public class UsimPhoneBookManager extends Handler implements IccConstants { } else { // Read all Anr files for each Adn Record for (int efid: mPbrFile.mAnrFileIds.get(recNum)) { mFh.loadEFLinearFixedPart(efid, getValidRecordNums(recNum), mFh.loadEFLinearFixedPart(efid, getPBPath(efid), getValidRecordNums(recNum), obtainMessage(EVENT_ANR_LOAD_DONE, recNum)); log("readAnrFileAndWait anr efid is : " + efid + " recNum:" + recNum); try { Loading @@ -324,7 +326,7 @@ public class UsimPhoneBookManager extends Handler implements IccConstants { private void readIapFileAndWait(int efid, int recNum) { log("pbrIndex is " + recNum + ",iap efid is : " + efid); mFh.loadEFLinearFixedPart(efid, getValidRecordNums(recNum), mFh.loadEFLinearFixedPart(efid, getPBPath(efid), getValidRecordNums(recNum), obtainMessage(EVENT_IAP_LOAD_DONE, recNum)); try { mLock.wait(); Loading Loading @@ -361,7 +363,7 @@ public class UsimPhoneBookManager extends Handler implements IccConstants { } if (mSuccess) { synchronized (mLock) { mFh.getEFLinearRecordSize(efid, mFh.getEFLinearRecordSize(efid, getPBPath(efid), obtainMessage(EVENT_EF_EMAIL_RECORD_SIZE_DONE, adnRecNum, efid, emails)); try { mLock.wait(); Loading Loading @@ -402,7 +404,7 @@ public class UsimPhoneBookManager extends Handler implements IccConstants { mSuccess = true; } synchronized (mLock) { mFh.getEFLinearRecordSize(efid, mFh.getEFLinearRecordSize(efid, getPBPath(efid), obtainMessage(EVENT_EF_ANR_RECORD_SIZE_DONE, adnRecNum, efid, anrs)); try { mLock.wait(); Loading Loading @@ -439,7 +441,7 @@ public class UsimPhoneBookManager extends Handler implements IccConstants { log("updateIapFile efid=" + efid + ", recordNumber= " + recordNumber + ", adnRecNum=" + adnRecNum); synchronized (mLock) { mFh.getEFLinearRecordSize(efid, mFh.getEFLinearRecordSize(efid, getPBPath(efid), obtainMessage(EVENT_EF_IAP_RECORD_SIZE_DONE, adnRecNum, recordNumber, tag)); try { mLock.wait(); Loading Loading @@ -734,6 +736,7 @@ public class UsimPhoneBookManager extends Handler implements IccConstants { } log("readAdnFileAndWait adn efid is : " + fileIds.get(USIM_EFADN_TAG)); mAdnCache.requestLoadAllAdnLike(fileIds.get(USIM_EFADN_TAG), extEf, getPBPath(fileIds.get(USIM_EFADN_TAG)), obtainMessage(EVENT_USIM_ADN_LOAD_DONE, recNum)); try { mLock.wait(); Loading Loading @@ -1073,6 +1076,7 @@ public class UsimPhoneBookManager extends Handler implements IccConstants { mFh.updateEFLinearFixed( efid, getPBPath(efid), recordNumber, data, null, Loading Loading @@ -1135,6 +1139,7 @@ public class UsimPhoneBookManager extends Handler implements IccConstants { mFh.updateEFLinearFixed( efid, getPBPath(efid), recordNumber, data, null, Loading Loading @@ -1245,6 +1250,7 @@ public class UsimPhoneBookManager extends Handler implements IccConstants { + " with value= " + IccUtils.bytesToHexString(record_data)); mFh.updateEFLinearFixed( efid, getPBPath(efid), recordIndex + 1, record_data, null, Loading Loading @@ -1526,4 +1532,9 @@ public class UsimPhoneBookManager extends Handler implements IccConstants { return 0; } } public String getPBPath(int efid) { //Only support global PB return MF_SIM + DF_TELECOM + DF_PHONEBOOK; } } src/java/com/android/internal/telephony/uicc/AdnRecord.java +2 −2 Original line number Diff line number Diff line Loading @@ -176,8 +176,8 @@ public class AdnRecord implements Parcelable { @Override public String toString() { return "ADN Record '" + mAlphaTag + "' '" + mNumber + " " + mEmails + " " + mAdditionalNumbers + "'"; return "ADN Record 'Tag:" + mAlphaTag + "', Num:'" + mNumber + ", Emails:" + Arrays.toString(mEmails) + ", Anrs:" + Arrays.toString(mAdditionalNumbers) + "'"; } public boolean isEmpty() { Loading src/java/com/android/internal/telephony/uicc/AdnRecordCache.java +10 −8 Original line number Diff line number Diff line Loading @@ -278,7 +278,8 @@ public final class AdnRecordCache extends Handler implements IccConstants { } if (efid == EF_PBR) { updateEmailAndAnr(efid, oldAdn, newAdn, index, pin2, response); updateEmailAndAnr(efid, mUsimPhoneBookManager.getPBPath(efid), oldAdn, newAdn, index, pin2, response); } else { mUserWriteResponse.put(efid, response); new AdnRecordLoader(mFh).updateEF(newAdn, efid, extensionEF, Loading @@ -293,7 +294,7 @@ public final class AdnRecordCache extends Handler implements IccConstants { * record */ public void requestLoadAllAdnLike (int efid, int extensionEf, Message response) { requestLoadAllAdnLike (int efid, int extensionEf, String path, Message response) { ArrayList<Message> waiters; ArrayList<AdnRecord> result; Loading Loading @@ -345,7 +346,7 @@ public final class AdnRecordCache extends Handler implements IccConstants { return; } new AdnRecordLoader(mFh).loadAllFromEF(efid, extensionEf, new AdnRecordLoader(mFh).loadAllFromEF(efid, extensionEf, path, obtainMessage(EVENT_LOAD_ALL_ADN_LIKE_DONE, efid, 0)); } Loading Loading @@ -421,8 +422,8 @@ public final class AdnRecordCache extends Handler implements IccConstants { } private void updateEmailAndAnr(int efid, AdnRecord oldAdn, AdnRecord newAdn, int index, String pin2, Message response) { private void updateEmailAndAnr(int efid, String path, AdnRecord oldAdn, AdnRecord newAdn, int index, String pin2, Message response) { int extensionEF; extensionEF = extensionEfForEf(newAdn.mEfid); boolean success = false; Loading @@ -437,7 +438,7 @@ public final class AdnRecordCache extends Handler implements IccConstants { if (success) { mUserWriteResponse.put(efid, response); new AdnRecordLoader(mFh).updateEF(newAdn, newAdn.mEfid, extensionEF, newAdn.mRecordNumber, pin2, path, newAdn.mRecordNumber, pin2, obtainMessage(EVENT_UPDATE_ADN_DONE, efid, index, newAdn)); } else { sendErrorResponse(response, "update anr failed"); Loading Loading @@ -576,7 +577,8 @@ public final class AdnRecordCache extends Handler implements IccConstants { } if (efid == EF_PBR) { updateEmailAndAnr(efid, oldAdnList.get(index - 1), newAdn, index, pin2, response); updateEmailAndAnr(efid, mUsimPhoneBookManager.getPBPath(efid), oldAdnList.get(index - 1), newAdn, index, pin2, response); } else { mUserWriteResponse.put(efid, response); new AdnRecordLoader(mFh).updateEF(newAdn, efid, extensionEF, index, pin2, Loading src/java/com/android/internal/telephony/uicc/AdnRecordLoader.java +60 −17 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ public class AdnRecordLoader extends Handler { private IccFileHandler mFh; int mEf; int mExtensionEF; String mPath; int mPendingExtLoads; Message mUserResponse; String mPin2; Loading Loading @@ -87,10 +88,12 @@ public class AdnRecordLoader extends Handler { mUserResponse = response; if (ef == IccConstants.EF_ADN) { mPath = getEFPath(ef); mFh.loadEFLinearFixed( ef, getEFPath(ef), recordNumber, obtainMessage(EVENT_ADN_LOAD_DONE)); } else { mPath = null; mFh.loadEFLinearFixed( ef, recordNumber, obtainMessage(EVENT_ADN_LOAD_DONE)); Loading @@ -104,10 +107,11 @@ public class AdnRecordLoader extends Handler { * or response.obj.exception is set */ public void loadAllFromEF(int ef, int extensionEF, loadAllFromEF(int ef, int extensionEF, String path, Message response) { mEf = ef; mExtensionEF = extensionEF; mPath = path; mUserResponse = response; /* If we are loading from EF_ADN, specifically Loading @@ -115,9 +119,12 @@ public class AdnRecordLoader extends Handler { * the fileid is not unique. */ if (ef == IccConstants.EF_ADN) { mPath = getEFPath(ef); } if (mPath != null) { mFh.loadEFLinearFixedAll( ef, getEFPath(ef), ef, mPath, obtainMessage(EVENT_ADN_LOAD_ALL_DONE)); } else { mFh.loadEFLinearFixedAll( Loading @@ -134,26 +141,50 @@ public class AdnRecordLoader extends Handler { * @param adn is set with alphaTag and phone number * @param ef EF fileid * @param extensionEF extension EF fileid * @param ef EF path * @param recordNumber 1-based record index * @param pin2 for CHV2 operations, must be null if pin2 is not needed * @param response will be sent to its handler when completed */ public void updateEF(AdnRecord adn, int ef, int extensionEF, int recordNumber, updateEF(AdnRecord adn, int ef, int extensionEF, String path, int recordNumber, String pin2, Message response) { mEf = ef; mExtensionEF = extensionEF; mPath = path; mRecordNumber = recordNumber; mUserResponse = response; mPin2 = pin2; if (ef == IccConstants.EF_ADN) { mFh.getEFLinearRecordSize( ef, getEFPath(ef), if (path != null) { mFh.getEFLinearRecordSize(ef, path, obtainMessage(EVENT_EF_LINEAR_RECORD_SIZE_DONE, adn)); } else { mFh.getEFLinearRecordSize(ef, obtainMessage(EVENT_EF_LINEAR_RECORD_SIZE_DONE, adn)); } } /** * Write adn to a EF SIM record * It will get the record size of EF record and compose hex adn array * then write the hex array to EF record * * @param adn is set with alphaTag and phone number * @param ef EF fileid * @param extensionEF extension EF fileid * @param recordNumber 1-based record index * @param pin2 for CHV2 operations, must be null if pin2 is not needed * @param response will be sent to its handler when completed */ public void updateEF(AdnRecord adn, int ef, int extensionEF, int recordNumber, String pin2, Message response) { String path = null; if (ef == IccConstants.EF_ADN) { path = getEFPath(ef); } updateEF(adn, ef, extensionEF, path, recordNumber, pin2, response); } //***** Overridden from Handler Loading Loading @@ -194,8 +225,8 @@ public class AdnRecordLoader extends Handler { ar.exception); } if (mEf == IccConstants.EF_ADN) { mFh.updateEFLinearFixed(mEf, getEFPath(mEf), mRecordNumber, if (mPath != null) { mFh.updateEFLinearFixed(mEf, mPath, mRecordNumber, data, mPin2, obtainMessage(EVENT_UPDATE_RECORD_DONE)); } else { mFh.updateEFLinearFixed(mEf, mRecordNumber, Loading Loading @@ -239,10 +270,16 @@ public class AdnRecordLoader extends Handler { mPendingExtLoads = 1; if (mPath != null) { mFh.loadEFLinearFixed( mExtensionEF, mPath, adn.mExtRecord, obtainMessage(EVENT_EXT_RECORD_LOAD_DONE, adn)); } else { mFh.loadEFLinearFixed( mExtensionEF, adn.mExtRecord, obtainMessage(EVENT_EXT_RECORD_LOAD_DONE, adn)); } } break; case EVENT_EXT_RECORD_LOAD_DONE: Loading Loading @@ -289,11 +326,17 @@ public class AdnRecordLoader extends Handler { mPendingExtLoads++; if (mPath != null) { mFh.loadEFLinearFixed( mExtensionEF, mPath, adn.mExtRecord, obtainMessage(EVENT_EXT_RECORD_LOAD_DONE, adn)); } else { mFh.loadEFLinearFixed( mExtensionEF, adn.mExtRecord, obtainMessage(EVENT_EXT_RECORD_LOAD_DONE, adn)); } } } break; } } catch (RuntimeException exc) { Loading Loading
src/java/com/android/internal/telephony/IccPhoneBookInterfaceManager.java +2 −1 Original line number Diff line number Diff line Loading @@ -384,7 +384,8 @@ public abstract class IccPhoneBookInterfaceManager { AtomicBoolean status = new AtomicBoolean(false); Message response = mBaseHandler.obtainMessage(EVENT_LOAD_DONE, status); if (mAdnCache != null) { mAdnCache.requestLoadAllAdnLike(efid, mAdnCache.extensionEfForEf(efid), response); mAdnCache.requestLoadAllAdnLike(efid, mAdnCache.extensionEfForEf(efid), null, response); waitForResult(status); } else { loge("Failure while trying to load from SIM due to uninitialised adncache"); Loading
src/java/com/android/internal/telephony/gsm/UsimPhoneBookManager.java +17 −6 Original line number Diff line number Diff line Loading @@ -230,6 +230,7 @@ public class UsimPhoneBookManager extends Handler implements IccConstants { return; } mFh.loadEFLinearFixedAll(fileIds.get(USIM_EFEMAIL_TAG), getPBPath(fileIds.get(USIM_EFEMAIL_TAG)), obtainMessage(EVENT_EMAIL_LOAD_DONE, recNum)); log("readEmailFileAndWait email efid is : " + fileIds.get(USIM_EFEMAIL_TAG)); Loading @@ -242,7 +243,7 @@ public class UsimPhoneBookManager extends Handler implements IccConstants { } else { // Read all Email files per Record for (int efid: mPbrFile.mEmailFileIds.get(recNum)) { mFh.loadEFLinearFixedPart(efid, getValidRecordNums(recNum), mFh.loadEFLinearFixedPart(efid, getPBPath(efid), getValidRecordNums(recNum), obtainMessage(EVENT_EMAIL_LOAD_DONE, recNum)); log("readEmailFileAndWait email efid is : " + efid + " recNum:" + recNum); Loading Loading @@ -287,6 +288,7 @@ public class UsimPhoneBookManager extends Handler implements IccConstants { return; } mFh.loadEFLinearFixedAll(fileIds.get(USIM_EFANR_TAG), getPBPath(fileIds.get(USIM_EFANR_TAG)), obtainMessage(EVENT_ANR_LOAD_DONE, recNum)); log("readAnrFileAndWait anr efid is : " + fileIds.get(USIM_EFANR_TAG)); try { Loading @@ -297,7 +299,7 @@ public class UsimPhoneBookManager extends Handler implements IccConstants { } else { // Read all Anr files for each Adn Record for (int efid: mPbrFile.mAnrFileIds.get(recNum)) { mFh.loadEFLinearFixedPart(efid, getValidRecordNums(recNum), mFh.loadEFLinearFixedPart(efid, getPBPath(efid), getValidRecordNums(recNum), obtainMessage(EVENT_ANR_LOAD_DONE, recNum)); log("readAnrFileAndWait anr efid is : " + efid + " recNum:" + recNum); try { Loading @@ -324,7 +326,7 @@ public class UsimPhoneBookManager extends Handler implements IccConstants { private void readIapFileAndWait(int efid, int recNum) { log("pbrIndex is " + recNum + ",iap efid is : " + efid); mFh.loadEFLinearFixedPart(efid, getValidRecordNums(recNum), mFh.loadEFLinearFixedPart(efid, getPBPath(efid), getValidRecordNums(recNum), obtainMessage(EVENT_IAP_LOAD_DONE, recNum)); try { mLock.wait(); Loading Loading @@ -361,7 +363,7 @@ public class UsimPhoneBookManager extends Handler implements IccConstants { } if (mSuccess) { synchronized (mLock) { mFh.getEFLinearRecordSize(efid, mFh.getEFLinearRecordSize(efid, getPBPath(efid), obtainMessage(EVENT_EF_EMAIL_RECORD_SIZE_DONE, adnRecNum, efid, emails)); try { mLock.wait(); Loading Loading @@ -402,7 +404,7 @@ public class UsimPhoneBookManager extends Handler implements IccConstants { mSuccess = true; } synchronized (mLock) { mFh.getEFLinearRecordSize(efid, mFh.getEFLinearRecordSize(efid, getPBPath(efid), obtainMessage(EVENT_EF_ANR_RECORD_SIZE_DONE, adnRecNum, efid, anrs)); try { mLock.wait(); Loading Loading @@ -439,7 +441,7 @@ public class UsimPhoneBookManager extends Handler implements IccConstants { log("updateIapFile efid=" + efid + ", recordNumber= " + recordNumber + ", adnRecNum=" + adnRecNum); synchronized (mLock) { mFh.getEFLinearRecordSize(efid, mFh.getEFLinearRecordSize(efid, getPBPath(efid), obtainMessage(EVENT_EF_IAP_RECORD_SIZE_DONE, adnRecNum, recordNumber, tag)); try { mLock.wait(); Loading Loading @@ -734,6 +736,7 @@ public class UsimPhoneBookManager extends Handler implements IccConstants { } log("readAdnFileAndWait adn efid is : " + fileIds.get(USIM_EFADN_TAG)); mAdnCache.requestLoadAllAdnLike(fileIds.get(USIM_EFADN_TAG), extEf, getPBPath(fileIds.get(USIM_EFADN_TAG)), obtainMessage(EVENT_USIM_ADN_LOAD_DONE, recNum)); try { mLock.wait(); Loading Loading @@ -1073,6 +1076,7 @@ public class UsimPhoneBookManager extends Handler implements IccConstants { mFh.updateEFLinearFixed( efid, getPBPath(efid), recordNumber, data, null, Loading Loading @@ -1135,6 +1139,7 @@ public class UsimPhoneBookManager extends Handler implements IccConstants { mFh.updateEFLinearFixed( efid, getPBPath(efid), recordNumber, data, null, Loading Loading @@ -1245,6 +1250,7 @@ public class UsimPhoneBookManager extends Handler implements IccConstants { + " with value= " + IccUtils.bytesToHexString(record_data)); mFh.updateEFLinearFixed( efid, getPBPath(efid), recordIndex + 1, record_data, null, Loading Loading @@ -1526,4 +1532,9 @@ public class UsimPhoneBookManager extends Handler implements IccConstants { return 0; } } public String getPBPath(int efid) { //Only support global PB return MF_SIM + DF_TELECOM + DF_PHONEBOOK; } }
src/java/com/android/internal/telephony/uicc/AdnRecord.java +2 −2 Original line number Diff line number Diff line Loading @@ -176,8 +176,8 @@ public class AdnRecord implements Parcelable { @Override public String toString() { return "ADN Record '" + mAlphaTag + "' '" + mNumber + " " + mEmails + " " + mAdditionalNumbers + "'"; return "ADN Record 'Tag:" + mAlphaTag + "', Num:'" + mNumber + ", Emails:" + Arrays.toString(mEmails) + ", Anrs:" + Arrays.toString(mAdditionalNumbers) + "'"; } public boolean isEmpty() { Loading
src/java/com/android/internal/telephony/uicc/AdnRecordCache.java +10 −8 Original line number Diff line number Diff line Loading @@ -278,7 +278,8 @@ public final class AdnRecordCache extends Handler implements IccConstants { } if (efid == EF_PBR) { updateEmailAndAnr(efid, oldAdn, newAdn, index, pin2, response); updateEmailAndAnr(efid, mUsimPhoneBookManager.getPBPath(efid), oldAdn, newAdn, index, pin2, response); } else { mUserWriteResponse.put(efid, response); new AdnRecordLoader(mFh).updateEF(newAdn, efid, extensionEF, Loading @@ -293,7 +294,7 @@ public final class AdnRecordCache extends Handler implements IccConstants { * record */ public void requestLoadAllAdnLike (int efid, int extensionEf, Message response) { requestLoadAllAdnLike (int efid, int extensionEf, String path, Message response) { ArrayList<Message> waiters; ArrayList<AdnRecord> result; Loading Loading @@ -345,7 +346,7 @@ public final class AdnRecordCache extends Handler implements IccConstants { return; } new AdnRecordLoader(mFh).loadAllFromEF(efid, extensionEf, new AdnRecordLoader(mFh).loadAllFromEF(efid, extensionEf, path, obtainMessage(EVENT_LOAD_ALL_ADN_LIKE_DONE, efid, 0)); } Loading Loading @@ -421,8 +422,8 @@ public final class AdnRecordCache extends Handler implements IccConstants { } private void updateEmailAndAnr(int efid, AdnRecord oldAdn, AdnRecord newAdn, int index, String pin2, Message response) { private void updateEmailAndAnr(int efid, String path, AdnRecord oldAdn, AdnRecord newAdn, int index, String pin2, Message response) { int extensionEF; extensionEF = extensionEfForEf(newAdn.mEfid); boolean success = false; Loading @@ -437,7 +438,7 @@ public final class AdnRecordCache extends Handler implements IccConstants { if (success) { mUserWriteResponse.put(efid, response); new AdnRecordLoader(mFh).updateEF(newAdn, newAdn.mEfid, extensionEF, newAdn.mRecordNumber, pin2, path, newAdn.mRecordNumber, pin2, obtainMessage(EVENT_UPDATE_ADN_DONE, efid, index, newAdn)); } else { sendErrorResponse(response, "update anr failed"); Loading Loading @@ -576,7 +577,8 @@ public final class AdnRecordCache extends Handler implements IccConstants { } if (efid == EF_PBR) { updateEmailAndAnr(efid, oldAdnList.get(index - 1), newAdn, index, pin2, response); updateEmailAndAnr(efid, mUsimPhoneBookManager.getPBPath(efid), oldAdnList.get(index - 1), newAdn, index, pin2, response); } else { mUserWriteResponse.put(efid, response); new AdnRecordLoader(mFh).updateEF(newAdn, efid, extensionEF, index, pin2, Loading
src/java/com/android/internal/telephony/uicc/AdnRecordLoader.java +60 −17 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ public class AdnRecordLoader extends Handler { private IccFileHandler mFh; int mEf; int mExtensionEF; String mPath; int mPendingExtLoads; Message mUserResponse; String mPin2; Loading Loading @@ -87,10 +88,12 @@ public class AdnRecordLoader extends Handler { mUserResponse = response; if (ef == IccConstants.EF_ADN) { mPath = getEFPath(ef); mFh.loadEFLinearFixed( ef, getEFPath(ef), recordNumber, obtainMessage(EVENT_ADN_LOAD_DONE)); } else { mPath = null; mFh.loadEFLinearFixed( ef, recordNumber, obtainMessage(EVENT_ADN_LOAD_DONE)); Loading @@ -104,10 +107,11 @@ public class AdnRecordLoader extends Handler { * or response.obj.exception is set */ public void loadAllFromEF(int ef, int extensionEF, loadAllFromEF(int ef, int extensionEF, String path, Message response) { mEf = ef; mExtensionEF = extensionEF; mPath = path; mUserResponse = response; /* If we are loading from EF_ADN, specifically Loading @@ -115,9 +119,12 @@ public class AdnRecordLoader extends Handler { * the fileid is not unique. */ if (ef == IccConstants.EF_ADN) { mPath = getEFPath(ef); } if (mPath != null) { mFh.loadEFLinearFixedAll( ef, getEFPath(ef), ef, mPath, obtainMessage(EVENT_ADN_LOAD_ALL_DONE)); } else { mFh.loadEFLinearFixedAll( Loading @@ -134,26 +141,50 @@ public class AdnRecordLoader extends Handler { * @param adn is set with alphaTag and phone number * @param ef EF fileid * @param extensionEF extension EF fileid * @param ef EF path * @param recordNumber 1-based record index * @param pin2 for CHV2 operations, must be null if pin2 is not needed * @param response will be sent to its handler when completed */ public void updateEF(AdnRecord adn, int ef, int extensionEF, int recordNumber, updateEF(AdnRecord adn, int ef, int extensionEF, String path, int recordNumber, String pin2, Message response) { mEf = ef; mExtensionEF = extensionEF; mPath = path; mRecordNumber = recordNumber; mUserResponse = response; mPin2 = pin2; if (ef == IccConstants.EF_ADN) { mFh.getEFLinearRecordSize( ef, getEFPath(ef), if (path != null) { mFh.getEFLinearRecordSize(ef, path, obtainMessage(EVENT_EF_LINEAR_RECORD_SIZE_DONE, adn)); } else { mFh.getEFLinearRecordSize(ef, obtainMessage(EVENT_EF_LINEAR_RECORD_SIZE_DONE, adn)); } } /** * Write adn to a EF SIM record * It will get the record size of EF record and compose hex adn array * then write the hex array to EF record * * @param adn is set with alphaTag and phone number * @param ef EF fileid * @param extensionEF extension EF fileid * @param recordNumber 1-based record index * @param pin2 for CHV2 operations, must be null if pin2 is not needed * @param response will be sent to its handler when completed */ public void updateEF(AdnRecord adn, int ef, int extensionEF, int recordNumber, String pin2, Message response) { String path = null; if (ef == IccConstants.EF_ADN) { path = getEFPath(ef); } updateEF(adn, ef, extensionEF, path, recordNumber, pin2, response); } //***** Overridden from Handler Loading Loading @@ -194,8 +225,8 @@ public class AdnRecordLoader extends Handler { ar.exception); } if (mEf == IccConstants.EF_ADN) { mFh.updateEFLinearFixed(mEf, getEFPath(mEf), mRecordNumber, if (mPath != null) { mFh.updateEFLinearFixed(mEf, mPath, mRecordNumber, data, mPin2, obtainMessage(EVENT_UPDATE_RECORD_DONE)); } else { mFh.updateEFLinearFixed(mEf, mRecordNumber, Loading Loading @@ -239,10 +270,16 @@ public class AdnRecordLoader extends Handler { mPendingExtLoads = 1; if (mPath != null) { mFh.loadEFLinearFixed( mExtensionEF, mPath, adn.mExtRecord, obtainMessage(EVENT_EXT_RECORD_LOAD_DONE, adn)); } else { mFh.loadEFLinearFixed( mExtensionEF, adn.mExtRecord, obtainMessage(EVENT_EXT_RECORD_LOAD_DONE, adn)); } } break; case EVENT_EXT_RECORD_LOAD_DONE: Loading Loading @@ -289,11 +326,17 @@ public class AdnRecordLoader extends Handler { mPendingExtLoads++; if (mPath != null) { mFh.loadEFLinearFixed( mExtensionEF, mPath, adn.mExtRecord, obtainMessage(EVENT_EXT_RECORD_LOAD_DONE, adn)); } else { mFh.loadEFLinearFixed( mExtensionEF, adn.mExtRecord, obtainMessage(EVENT_EXT_RECORD_LOAD_DONE, adn)); } } } break; } } catch (RuntimeException exc) { Loading