Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a485eef3 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "PhoneBook: Specify file path when reading EFs of PBR"

parents b2c6b7c0 4e94fc3b
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -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");
+17 −6
Original line number Diff line number Diff line
@@ -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));
@@ -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);
@@ -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 {
@@ -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 {
@@ -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();
@@ -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();
@@ -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();
@@ -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();
@@ -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();
@@ -1073,6 +1076,7 @@ public class UsimPhoneBookManager extends Handler implements IccConstants {

                mFh.updateEFLinearFixed(
                        efid,
                        getPBPath(efid),
                        recordNumber,
                        data,
                        null,
@@ -1135,6 +1139,7 @@ public class UsimPhoneBookManager extends Handler implements IccConstants {

                mFh.updateEFLinearFixed(
                        efid,
                        getPBPath(efid),
                        recordNumber,
                        data,
                        null,
@@ -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,
@@ -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;
    }
}
+2 −2
Original line number Diff line number Diff line
@@ -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() {
+10 −8
Original line number Diff line number Diff line
@@ -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,
@@ -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;

@@ -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));
    }

@@ -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;
@@ -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");
@@ -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,
+60 −17
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ public class AdnRecordLoader extends Handler {
    private IccFileHandler mFh;
    int mEf;
    int mExtensionEF;
    String mPath;
    int mPendingExtLoads;
    Message mUserResponse;
    String mPin2;
@@ -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));
@@ -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
@@ -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(
@@ -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
@@ -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,
@@ -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:
@@ -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