10825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/*
20825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Copyright (C) 2009 The Android Open Source Project
30825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
40825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Licensed under the Apache License, Version 2.0 (the "License");
50825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * you may not use this file except in compliance with the License.
60825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * You may obtain a copy of the License at
70825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
80825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *      http://www.apache.org/licenses/LICENSE-2.0
90825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Unless required by applicable law or agreed to in writing, software
110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * distributed under the License is distributed on an "AS IS" BASIS,
120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * See the License for the specific language governing permissions and
140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * limitations under the License.
150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */
160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
170825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepackage com.android.internal.telephony.cdma;
180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
190825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.content.Context;
200825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.content.res.Resources;
210825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.content.res.XmlResourceParser;
220825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Message;
230825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.util.Log;
240825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.util.Xml;
250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
260825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.Phone;
270825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.PhoneBase;
280825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.util.XmlUtils;
290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
310825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport org.xmlpull.v1.XmlPullParser;
320825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport org.xmlpull.v1.XmlPullParserException;
330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
340825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.FileInputStream;
350825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.FileNotFoundException;
360825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.IOException;
370825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.util.HashMap;
380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/**
400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * EriManager loads the ERI file definitions and manages the CDMA roaming information.
410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */
430825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepublic final class EriManager {
440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    class EriFile {
460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        public int mVersionNumber;                      // File version number
480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        public int mNumberOfEriEntries;                 // Number of entries
490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        public int mEriFileType;                        // Eri Phase 0/1
500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        //public int mNumberOfIconImages;               // reserved for future use
510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        //public int mIconImageType;                    // reserved for future use
520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        public String[] mCallPromptId;                  // reserved for future use
530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        public HashMap<Integer, EriInfo> mRoamIndTable; // Roaming Indicator Table
540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        public EriFile() {
560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            this.mVersionNumber = -1;
570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            this.mNumberOfEriEntries = 0;
580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            this.mEriFileType = -1;
590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            this.mCallPromptId = new String[] { "", "", "" };
600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            this.mRoamIndTable = new HashMap<Integer, EriInfo>();
610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    class EriDisplayInformation {
650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        public int mEriIconIndex;
660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        public int mEriIconMode;
670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        public String mEriIconText;
680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        public EriDisplayInformation(int eriIconIndex, int eriIconMode, String eriIconText) {
700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mEriIconIndex = eriIconIndex;
710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mEriIconMode = eriIconMode;
720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mEriIconText = eriIconText;
730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville//        public void setParameters(int eriIconIndex, int eriIconMode, String eriIconText){
760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville//            this.mEriIconIndex = eriIconIndex;
770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville//            this.mEriIconMode = eriIconMode;
780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville//            this.mEriIconText = eriIconText;
790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville//        }
800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        @Override
820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        public String toString() {
830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            return "EriDisplayInformation: {" + " IconIndex: " + mEriIconIndex + " EriIconMode: "
840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    + mEriIconMode + " EriIconText: " + mEriIconText + " }";
850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private static final String LOG_TAG = "CDMA";
890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private static final boolean DBG = true;
900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private static final boolean VDBG = false;
910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static final int ERI_FROM_XML          = 0;
930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static final int ERI_FROM_FILE_SYSTEM  = 1;
940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static final int ERI_FROM_MODEM        = 2;
950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private PhoneBase mPhone;
970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private Context mContext;
980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private int mEriFileSource = ERI_FROM_XML;
990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private boolean isEriFileLoaded;
1000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private EriFile mEriFile;
1010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public EriManager(PhoneBase phone, Context context, int eriFileSource) {
1030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        this.mPhone = phone;
1040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        this.mContext = context;
1050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        this.mEriFileSource = eriFileSource;
1060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        this.mEriFile = new EriFile();
1070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void dispose() {
1100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mEriFile = new EriFile();
1110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        isEriFileLoaded = false;
1120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void loadEriFile() {
1160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch (mEriFileSource) {
1170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case ERI_FROM_MODEM:
1180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            loadEriFileFromModem();
1190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
1200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case ERI_FROM_FILE_SYSTEM:
1220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            loadEriFileFromFileSystem();
1230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
1240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case ERI_FROM_XML:
1260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        default:
1270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            loadEriFileFromXml();
1280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
1290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
1330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Load the ERI file from the MODEM through chipset specific RIL_REQUEST_OEM_HOOK
1340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
1350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * In this case the ERI file can be updated from the Phone Support Tool available
1360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * from the Chipset vendor
1370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
1380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private void loadEriFileFromModem() {
1390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // NOT IMPLEMENTED, Chipset vendor/Operator specific
1400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
1430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Load the ERI file from a File System file
1440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
1450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * In this case the a Phone Support Tool to update the ERI file must be provided
1460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * to the Operator
1470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
1480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private void loadEriFileFromFileSystem() {
1490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // NOT IMPLEMENTED, Chipset vendor/Operator specific
1500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
1530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Load the ERI file from the application framework resources encoded in XML
1540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
1550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
1560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private void loadEriFileFromXml() {
1570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        XmlPullParser parser = null;
1580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        FileInputStream stream = null;
1590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Resources r = mContext.getResources();
1600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
1620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if (DBG) Log.d(LOG_TAG, "loadEriFileFromXml: check for alternate file");
1630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            stream = new FileInputStream(
1640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                            r.getString(com.android.internal.R.string.alternate_eri_file));
1650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            parser = Xml.newPullParser();
1660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            parser.setInput(stream, null);
1670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if (DBG) Log.d(LOG_TAG, "loadEriFileFromXml: opened alternate file");
1680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (FileNotFoundException e) {
1690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if (DBG) Log.d(LOG_TAG, "loadEriFileFromXml: no alternate file");
1700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            parser = null;
1710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (XmlPullParserException e) {
1720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if (DBG) Log.d(LOG_TAG, "loadEriFileFromXml: no parser for alternate file");
1730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            parser = null;
1740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (parser == null) {
1770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if (DBG) Log.d(LOG_TAG, "loadEriFileFromXml: open normal file");
1780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            parser = r.getXml(com.android.internal.R.xml.eri);
1790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
1820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            XmlUtils.beginDocument(parser, "EriFile");
1830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mEriFile.mVersionNumber = Integer.parseInt(
1840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    parser.getAttributeValue(null, "VersionNumber"));
1850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mEriFile.mNumberOfEriEntries = Integer.parseInt(
1860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    parser.getAttributeValue(null, "NumberOfEriEntries"));
1870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mEriFile.mEriFileType = Integer.parseInt(
1880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    parser.getAttributeValue(null, "EriFileType"));
1890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            int parsedEriEntries = 0;
1910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            while(true) {
1920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                XmlUtils.nextElement(parser);
1930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                String name = parser.getName();
1940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                if (name == null) {
1950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    if (parsedEriEntries != mEriFile.mNumberOfEriEntries)
1960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                        Log.e(LOG_TAG, "Error Parsing ERI file: " +  mEriFile.mNumberOfEriEntries
1970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                                + " defined, " + parsedEriEntries + " parsed!");
1980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    break;
1990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                } else if (name.equals("CallPromptId")) {
2000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    int id = Integer.parseInt(parser.getAttributeValue(null, "Id"));
2010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    String text = parser.getAttributeValue(null, "CallPromptText");
2020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    if (id >= 0 && id <= 2) {
2030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                        mEriFile.mCallPromptId[id] = text;
2040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    } else {
2050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                        Log.e(LOG_TAG, "Error Parsing ERI file: found" + id + " CallPromptId");
2060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    }
2070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                } else if (name.equals("EriInfo")) {
2090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    int roamingIndicator = Integer.parseInt(
2100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                            parser.getAttributeValue(null, "RoamingIndicator"));
2110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    int iconIndex = Integer.parseInt(parser.getAttributeValue(null, "IconIndex"));
2120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    int iconMode = Integer.parseInt(parser.getAttributeValue(null, "IconMode"));
2130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    String eriText = parser.getAttributeValue(null, "EriText");
2140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    int callPromptId = Integer.parseInt(
2150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                            parser.getAttributeValue(null, "CallPromptId"));
2160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    int alertId = Integer.parseInt(parser.getAttributeValue(null, "AlertId"));
2170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    parsedEriEntries++;
2180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    mEriFile.mRoamIndTable.put(roamingIndicator, new EriInfo (roamingIndicator,
2190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                            iconIndex, iconMode, eriText, callPromptId, alertId));
2200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                }
2210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
2220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if (DBG) Log.d(LOG_TAG, "loadEriFileFromXml: eri parsing successful, file loaded");
2240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            isEriFileLoaded = true;
2250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (Exception e) {
2270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            Log.e(LOG_TAG, "Got exception while loading ERI file.", e);
2280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } finally {
2290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if (parser instanceof XmlResourceParser) {
2300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                ((XmlResourceParser)parser).close();
2310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
2320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            try {
2330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                if (stream != null) {
2340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    stream.close();
2350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                }
2360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            } catch (IOException e) {
2370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                // Ignore
2380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
2390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
2430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Returns the version of the ERI file
2440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
2450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public int getEriFileVersion() {
2470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mEriFile.mVersionNumber;
2480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
2510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Returns the number of ERI entries parsed
2520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
2530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public int getEriNumberOfEntries() {
2550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mEriFile.mNumberOfEriEntries;
2560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
2590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Returns the ERI file type value ( 0 for Phase 0, 1 for Phase 1)
2600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
2610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public int getEriFileType() {
2630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mEriFile.mEriFileType;
2640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
2670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Returns if the ERI file has been loaded
2680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
2690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean isEriFileLoaded() {
2710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return isEriFileLoaded;
2720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
2750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Returns the EriInfo record associated with roamingIndicator
2760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * or null if the entry is not found
2770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private EriInfo getEriInfo(int roamingIndicator) {
2790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (mEriFile.mRoamIndTable.containsKey(roamingIndicator)) {
2800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            return mEriFile.mRoamIndTable.get(roamingIndicator);
2810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } else {
2820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            return null;
2830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private EriDisplayInformation getEriDisplayInformation(int roamInd, int defRoamInd){
2870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        EriDisplayInformation ret;
2880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // Carrier can use eri.xml to customize any built-in roaming display indications
2900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (isEriFileLoaded) {
2910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            EriInfo eriInfo = getEriInfo(roamInd);
2920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if (eriInfo != null) {
2930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                if (VDBG) Log.v(LOG_TAG, "ERI roamInd " + roamInd + " found in ERI file");
2940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                ret = new EriDisplayInformation(
2950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                        eriInfo.mIconIndex,
2960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                        eriInfo.mIconMode,
2970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                        eriInfo.mEriText);
2980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return ret;
2990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
3000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
3010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch (roamInd) {
3030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // Handling the standard roaming indicator (non-ERI)
3040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case EriInfo.ROAMING_INDICATOR_ON:
3050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            ret = new EriDisplayInformation(
3060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    EriInfo.ROAMING_INDICATOR_ON,
3070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
3080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText0).toString());
3090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
3100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case EriInfo.ROAMING_INDICATOR_OFF:
3120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            ret = new EriDisplayInformation(
3130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    EriInfo.ROAMING_INDICATOR_OFF,
3140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
3150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText1).toString());
3160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
3170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case EriInfo.ROAMING_INDICATOR_FLASH:
3190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            ret = new EriDisplayInformation(
3200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    EriInfo.ROAMING_INDICATOR_FLASH,
3210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    EriInfo.ROAMING_ICON_MODE_FLASH,
3220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText2).toString());
3230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
3240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // Handling the standard ERI
3270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case 3:
3280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            ret = new EriDisplayInformation(
3290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    roamInd,
3300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
3310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText3).toString());
3320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
3330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case 4:
3350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            ret = new EriDisplayInformation(
3360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    roamInd,
3370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
3380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText4).toString());
3390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
3400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case 5:
3420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            ret = new EriDisplayInformation(
3430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    roamInd,
3440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
3450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText5).toString());
3460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
3470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case 6:
3490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            ret = new EriDisplayInformation(
3500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    roamInd,
3510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
3520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText6).toString());
3530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
3540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case 7:
3560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            ret = new EriDisplayInformation(
3570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    roamInd,
3580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
3590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText7).toString());
3600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
3610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case 8:
3630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            ret = new EriDisplayInformation(
3640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    roamInd,
3650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
3660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText8).toString());
3670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
3680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case 9:
3700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            ret = new EriDisplayInformation(
3710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    roamInd,
3720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
3730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText9).toString());
3740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
3750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case 10:
3770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            ret = new EriDisplayInformation(
3780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    roamInd,
3790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
3800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText10).toString());
3810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
3820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case 11:
3840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            ret = new EriDisplayInformation(
3850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    roamInd,
3860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
3870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText11).toString());
3880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
3890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case 12:
3910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            ret = new EriDisplayInformation(
3920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    roamInd,
3930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
3940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText12).toString());
3950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
3960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // Handling the non standard Enhanced Roaming Indicator (roamInd > 63)
3980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        default:
3990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            if (!isEriFileLoaded) {
4000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                // ERI file NOT loaded
4010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                if (DBG) Log.d(LOG_TAG, "ERI File not loaded");
4020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                if(defRoamInd > 2) {
4030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    if (VDBG) Log.v(LOG_TAG, "ERI defRoamInd > 2 ...flashing");
4040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    ret = new EriDisplayInformation(
4050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                            EriInfo.ROAMING_INDICATOR_FLASH,
4060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                            EriInfo.ROAMING_ICON_MODE_FLASH,
4070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                            mContext.getText(com.android.internal
4080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                                                            .R.string.roamingText2).toString());
4090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                } else {
4100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    if (VDBG) Log.v(LOG_TAG, "ERI defRoamInd <= 2");
4110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    switch (defRoamInd) {
4120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    case EriInfo.ROAMING_INDICATOR_ON:
4130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                        ret = new EriDisplayInformation(
4140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                                EriInfo.ROAMING_INDICATOR_ON,
4150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                                EriInfo.ROAMING_ICON_MODE_NORMAL,
4160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                                mContext.getText(com.android.internal
4170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                                                            .R.string.roamingText0).toString());
4180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                        break;
4190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    case EriInfo.ROAMING_INDICATOR_OFF:
4210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                        ret = new EriDisplayInformation(
4220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                                EriInfo.ROAMING_INDICATOR_OFF,
4230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                                EriInfo.ROAMING_ICON_MODE_NORMAL,
4240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                                mContext.getText(com.android.internal
4250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                                                            .R.string.roamingText1).toString());
4260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                        break;
4270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    case EriInfo.ROAMING_INDICATOR_FLASH:
4290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                        ret = new EriDisplayInformation(
4300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                                EriInfo.ROAMING_INDICATOR_FLASH,
4310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                                EriInfo.ROAMING_ICON_MODE_FLASH,
4320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                                mContext.getText(com.android.internal
4330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                                                            .R.string.roamingText2).toString());
4340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                        break;
4350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    default:
4370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                        ret = new EriDisplayInformation(-1, -1, "ERI text");
4380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    }
4390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                }
4400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            } else {
4410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                // ERI file loaded
4420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                EriInfo eriInfo = getEriInfo(roamInd);
4430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                EriInfo defEriInfo = getEriInfo(defRoamInd);
4440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                if (eriInfo == null) {
4450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    if (VDBG) {
4460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                        Log.v(LOG_TAG, "ERI roamInd " + roamInd
4470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                            + " not found in ERI file ...using defRoamInd " + defRoamInd);
4480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    }
4490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    if(defEriInfo == null) {
4500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                        Log.e(LOG_TAG, "ERI defRoamInd " + defRoamInd
4510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                                + " not found in ERI file ...on");
4520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                        ret = new EriDisplayInformation(
4530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                                EriInfo.ROAMING_INDICATOR_ON,
4540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                                EriInfo.ROAMING_ICON_MODE_NORMAL,
4550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                                mContext.getText(com.android.internal
4560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                                                             .R.string.roamingText0).toString());
4570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    } else {
4590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                        if (VDBG) {
4600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                            Log.v(LOG_TAG, "ERI defRoamInd " + defRoamInd + " found in ERI file");
4610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                        }
4620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                        ret = new EriDisplayInformation(
4630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                                defEriInfo.mIconIndex,
4640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                                defEriInfo.mIconMode,
4650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                                defEriInfo.mEriText);
4660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    }
4670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                } else {
4680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    if (VDBG) Log.v(LOG_TAG, "ERI roamInd " + roamInd + " found in ERI file");
4690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    ret = new EriDisplayInformation(
4700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                            eriInfo.mIconIndex,
4710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                            eriInfo.mIconMode,
4720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                            eriInfo.mEriText);
4730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                }
4740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
4750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
4760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
4770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (VDBG) Log.v(LOG_TAG, "Displaying ERI " + ret.toString());
4780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return ret;
4790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public int getCdmaEriIconIndex(int roamInd, int defRoamInd){
4820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return getEriDisplayInformation(roamInd, defRoamInd).mEriIconIndex;
4830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public int getCdmaEriIconMode(int roamInd, int defRoamInd){
4860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return getEriDisplayInformation(roamInd, defRoamInd).mEriIconMode;
4870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getCdmaEriText(int roamInd, int defRoamInd){
4900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return getEriDisplayInformation(roamInd, defRoamInd).mEriIconText;
4910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville}
493