1e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville/*
2cea764088d48723d3b58c0bc3a2ffba15770bb7dWink Saville * Copyright (C) 2009 The Android Open Source Project
3cea764088d48723d3b58c0bc3a2ffba15770bb7dWink Saville *
4e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * Licensed under the Apache License, Version 2.0 (the "License");
5e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * you may not use this file except in compliance with the License.
6e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * You may obtain a copy of the License at
7e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville *
8e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville *      http://www.apache.org/licenses/LICENSE-2.0
9e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville *
10e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * Unless required by applicable law or agreed to in writing, software
11e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * distributed under the License is distributed on an "AS IS" BASIS,
12e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * See the License for the specific language governing permissions and
14e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * limitations under the License.
15e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */
16e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
17e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Savillepackage com.android.internal.telephony.cdma;
18e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
19e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Savilleimport android.content.Context;
20e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Savilleimport android.content.res.Resources;
21e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Savilleimport android.content.res.XmlResourceParser;
22e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Savilleimport android.os.Message;
23e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Savilleimport android.util.Log;
2488e3f827e657ef741099b24896c17533fa9ef61eWink Savilleimport android.util.Xml;
25e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
26e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Savilleimport com.android.internal.telephony.Phone;
27e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Savilleimport com.android.internal.telephony.PhoneBase;
282269d1572e5fcfb725ea55f5764d8c3280d69f6dDianne Hackbornimport com.android.internal.util.XmlUtils;
29e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
30e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
3188e3f827e657ef741099b24896c17533fa9ef61eWink Savilleimport org.xmlpull.v1.XmlPullParser;
3288e3f827e657ef741099b24896c17533fa9ef61eWink Savilleimport org.xmlpull.v1.XmlPullParserException;
3388e3f827e657ef741099b24896c17533fa9ef61eWink Saville
3488e3f827e657ef741099b24896c17533fa9ef61eWink Savilleimport java.io.FileInputStream;
3588e3f827e657ef741099b24896c17533fa9ef61eWink Savilleimport java.io.FileNotFoundException;
3688e3f827e657ef741099b24896c17533fa9ef61eWink Savilleimport java.io.IOException;
37e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Savilleimport java.util.HashMap;
38e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
39e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville/**
40f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville * EriManager loads the ERI file definitions and manages the CDMA roaming information.
41f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville *
42e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */
43e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Savillepublic final class EriManager {
44e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
45e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    class EriFile {
46e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
47e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        public int mVersionNumber;                      // File version number
48e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        public int mNumberOfEriEntries;                 // Number of entries
49e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        public int mEriFileType;                        // Eri Phase 0/1
50e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        //public int mNumberOfIconImages;               // reserved for future use
51e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        //public int mIconImageType;                    // reserved for future use
52e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        public String[] mCallPromptId;                  // reserved for future use
53e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        public HashMap<Integer, EriInfo> mRoamIndTable; // Roaming Indicator Table
54e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
55e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        public EriFile() {
56e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            this.mVersionNumber = -1;
57e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            this.mNumberOfEriEntries = 0;
58e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            this.mEriFileType = -1;
59e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            this.mCallPromptId = new String[] { "", "", "" };
60e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            this.mRoamIndTable = new HashMap<Integer, EriInfo>();
61e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        }
62f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville    }
63f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville
64f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville    class EriDisplayInformation {
65f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        public int mEriIconIndex;
66f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        public int mEriIconMode;
67f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        public String mEriIconText;
68f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville
69f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        public EriDisplayInformation(int eriIconIndex, int eriIconMode, String eriIconText) {
70f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            mEriIconIndex = eriIconIndex;
71f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            mEriIconMode = eriIconMode;
72f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            mEriIconText = eriIconText;
73f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        }
74f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville
75f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville//        public void setParameters(int eriIconIndex, int eriIconMode, String eriIconText){
76f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville//            this.mEriIconIndex = eriIconIndex;
77f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville//            this.mEriIconMode = eriIconMode;
78f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville//            this.mEriIconText = eriIconText;
79f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville//        }
80e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
81f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        @Override
82f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        public String toString() {
83f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            return "EriDisplayInformation: {" + " IconIndex: " + mEriIconIndex + " EriIconMode: "
84f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    + mEriIconMode + " EriIconText: " + mEriIconText + " }";
85f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        }
86e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    }
87e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
8888e3f827e657ef741099b24896c17533fa9ef61eWink Saville    private static final String LOG_TAG = "CDMA";
8988e3f827e657ef741099b24896c17533fa9ef61eWink Saville    private static final boolean DBG = true;
9071f48a21b0533a5b9dc1c0eab3c675800b78fa5eRobert Greenwalt    private static final boolean VDBG = false;
91e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
92e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    public static final int ERI_FROM_XML          = 0;
93e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    public static final int ERI_FROM_FILE_SYSTEM  = 1;
94e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    public static final int ERI_FROM_MODEM        = 2;
95e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
96e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    private PhoneBase mPhone;
97e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    private Context mContext;
98e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    private int mEriFileSource = ERI_FROM_XML;
99f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville    private boolean isEriFileLoaded;
100e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    private EriFile mEriFile;
101e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
102e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    public EriManager(PhoneBase phone, Context context, int eriFileSource) {
103e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        this.mPhone = phone;
104e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        this.mContext = context;
105e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        this.mEriFileSource = eriFileSource;
106e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        this.mEriFile = new EriFile();
107e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    }
108e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
109e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    public void dispose() {
110e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        mEriFile = new EriFile();
111e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        isEriFileLoaded = false;
112e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    }
113e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
114e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
115e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    public void loadEriFile() {
116e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        switch (mEriFileSource) {
117e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        case ERI_FROM_MODEM:
118e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            loadEriFileFromModem();
119e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            break;
120e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
121e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        case ERI_FROM_FILE_SYSTEM:
122e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            loadEriFileFromFileSystem();
123e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            break;
124e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
125e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        case ERI_FROM_XML:
126e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        default:
127e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            loadEriFileFromXml();
128e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            break;
129e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        }
130e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    }
131e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
132e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
133e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * Load the ERI file from the MODEM through chipset specific RIL_REQUEST_OEM_HOOK
134e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     *
135e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * In this case the ERI file can be updated from the Phone Support Tool available
136e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * from the Chipset vendor
137e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
138e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    private void loadEriFileFromModem() {
139e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        // NOT IMPLEMENTED, Chipset vendor/Operator specific
140e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    }
141e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
142e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
143e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * Load the ERI file from a File System file
144e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     *
145e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * In this case the a Phone Support Tool to update the ERI file must be provided
146e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * to the Operator
147e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
148e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    private void loadEriFileFromFileSystem() {
149e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        // NOT IMPLEMENTED, Chipset vendor/Operator specific
150e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    }
151e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
152e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
153e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * Load the ERI file from the application framework resources encoded in XML
154e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     *
155e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
156e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    private void loadEriFileFromXml() {
15788e3f827e657ef741099b24896c17533fa9ef61eWink Saville        XmlPullParser parser = null;
15888e3f827e657ef741099b24896c17533fa9ef61eWink Saville        FileInputStream stream = null;
159e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        Resources r = mContext.getResources();
16088e3f827e657ef741099b24896c17533fa9ef61eWink Saville
16188e3f827e657ef741099b24896c17533fa9ef61eWink Saville        try {
16288e3f827e657ef741099b24896c17533fa9ef61eWink Saville            if (DBG) Log.d(LOG_TAG, "loadEriFileFromXml: check for alternate file");
16388e3f827e657ef741099b24896c17533fa9ef61eWink Saville            stream = new FileInputStream(
16488e3f827e657ef741099b24896c17533fa9ef61eWink Saville                            r.getString(com.android.internal.R.string.alternate_eri_file));
16588e3f827e657ef741099b24896c17533fa9ef61eWink Saville            parser = Xml.newPullParser();
16688e3f827e657ef741099b24896c17533fa9ef61eWink Saville            parser.setInput(stream, null);
16788e3f827e657ef741099b24896c17533fa9ef61eWink Saville            if (DBG) Log.d(LOG_TAG, "loadEriFileFromXml: opened alternate file");
16888e3f827e657ef741099b24896c17533fa9ef61eWink Saville        } catch (FileNotFoundException e) {
16988e3f827e657ef741099b24896c17533fa9ef61eWink Saville            if (DBG) Log.d(LOG_TAG, "loadEriFileFromXml: no alternate file");
17088e3f827e657ef741099b24896c17533fa9ef61eWink Saville            parser = null;
17188e3f827e657ef741099b24896c17533fa9ef61eWink Saville        } catch (XmlPullParserException e) {
17288e3f827e657ef741099b24896c17533fa9ef61eWink Saville            if (DBG) Log.d(LOG_TAG, "loadEriFileFromXml: no parser for alternate file");
17388e3f827e657ef741099b24896c17533fa9ef61eWink Saville            parser = null;
17488e3f827e657ef741099b24896c17533fa9ef61eWink Saville        }
17588e3f827e657ef741099b24896c17533fa9ef61eWink Saville
17688e3f827e657ef741099b24896c17533fa9ef61eWink Saville        if (parser == null) {
17788e3f827e657ef741099b24896c17533fa9ef61eWink Saville            if (DBG) Log.d(LOG_TAG, "loadEriFileFromXml: open normal file");
17888e3f827e657ef741099b24896c17533fa9ef61eWink Saville            parser = r.getXml(com.android.internal.R.xml.eri);
17988e3f827e657ef741099b24896c17533fa9ef61eWink Saville        }
18088e3f827e657ef741099b24896c17533fa9ef61eWink Saville
181e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        try {
182e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            XmlUtils.beginDocument(parser, "EriFile");
183e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            mEriFile.mVersionNumber = Integer.parseInt(
184e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    parser.getAttributeValue(null, "VersionNumber"));
185e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            mEriFile.mNumberOfEriEntries = Integer.parseInt(
186e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    parser.getAttributeValue(null, "NumberOfEriEntries"));
187e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            mEriFile.mEriFileType = Integer.parseInt(
188e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    parser.getAttributeValue(null, "EriFileType"));
189e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
190e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            int parsedEriEntries = 0;
191e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            while(true) {
192e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                XmlUtils.nextElement(parser);
193e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                String name = parser.getName();
194e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                if (name == null) {
195e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    if (parsedEriEntries != mEriFile.mNumberOfEriEntries)
196e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                        Log.e(LOG_TAG, "Error Parsing ERI file: " +  mEriFile.mNumberOfEriEntries
197e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                                + " defined, " + parsedEriEntries + " parsed!");
198e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    break;
199e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                } else if (name.equals("CallPromptId")) {
200e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    int id = Integer.parseInt(parser.getAttributeValue(null, "Id"));
201e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    String text = parser.getAttributeValue(null, "CallPromptText");
202e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    if (id >= 0 && id <= 2) {
203e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                        mEriFile.mCallPromptId[id] = text;
204e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    } else {
205e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                        Log.e(LOG_TAG, "Error Parsing ERI file: found" + id + " CallPromptId");
206e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    }
207e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
208e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                } else if (name.equals("EriInfo")) {
209e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    int roamingIndicator = Integer.parseInt(
210e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                            parser.getAttributeValue(null, "RoamingIndicator"));
211e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    int iconIndex = Integer.parseInt(parser.getAttributeValue(null, "IconIndex"));
212e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    int iconMode = Integer.parseInt(parser.getAttributeValue(null, "IconMode"));
213e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    String eriText = parser.getAttributeValue(null, "EriText");
214e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    int callPromptId = Integer.parseInt(
215e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                            parser.getAttributeValue(null, "CallPromptId"));
216e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    int alertId = Integer.parseInt(parser.getAttributeValue(null, "AlertId"));
217e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    parsedEriEntries++;
218e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    mEriFile.mRoamIndTable.put(roamingIndicator, new EriInfo (roamingIndicator,
219e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                            iconIndex, iconMode, eriText, callPromptId, alertId));
220e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                }
221e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            }
222e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
22388e3f827e657ef741099b24896c17533fa9ef61eWink Saville            if (DBG) Log.d(LOG_TAG, "loadEriFileFromXml: eri parsing successful, file loaded");
224e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            isEriFileLoaded = true;
225e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
226e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        } catch (Exception e) {
227e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            Log.e(LOG_TAG, "Got exception while loading ERI file.", e);
228e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        } finally {
22988e3f827e657ef741099b24896c17533fa9ef61eWink Saville            if (parser instanceof XmlResourceParser) {
23088e3f827e657ef741099b24896c17533fa9ef61eWink Saville                ((XmlResourceParser)parser).close();
23188e3f827e657ef741099b24896c17533fa9ef61eWink Saville            }
23288e3f827e657ef741099b24896c17533fa9ef61eWink Saville            try {
23388e3f827e657ef741099b24896c17533fa9ef61eWink Saville                if (stream != null) {
23488e3f827e657ef741099b24896c17533fa9ef61eWink Saville                    stream.close();
23588e3f827e657ef741099b24896c17533fa9ef61eWink Saville                }
23688e3f827e657ef741099b24896c17533fa9ef61eWink Saville            } catch (IOException e) {
23788e3f827e657ef741099b24896c17533fa9ef61eWink Saville                // Ignore
23888e3f827e657ef741099b24896c17533fa9ef61eWink Saville            }
239e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        }
240e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    }
241e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
242e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
243e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * Returns the version of the ERI file
244e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     *
245e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
246e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    public int getEriFileVersion() {
247e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        return mEriFile.mVersionNumber;
248e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    }
249e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
250e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
251e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * Returns the number of ERI entries parsed
252e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     *
253e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
254e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    public int getEriNumberOfEntries() {
255e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        return mEriFile.mNumberOfEriEntries;
256e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    }
257e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
258e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
259e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * Returns the ERI file type value ( 0 for Phase 0, 1 for Phase 1)
260e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     *
261e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
262e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    public int getEriFileType() {
263e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        return mEriFile.mEriFileType;
264e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    }
265e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
266e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
267e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * Returns if the ERI file has been loaded
268e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     *
269e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
270e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    public boolean isEriFileLoaded() {
271e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        return isEriFileLoaded;
272e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    }
273e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
274e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
275e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * Returns the EriInfo record associated with roamingIndicator
276e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * or null if the entry is not found
277e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
278f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville    private EriInfo getEriInfo(int roamingIndicator) {
279e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        if (mEriFile.mRoamIndTable.containsKey(roamingIndicator)) {
280e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            return mEriFile.mRoamIndTable.get(roamingIndicator);
281e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        } else {
282e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            return null;
283e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        }
284e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    }
285f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville
286f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville    private EriDisplayInformation getEriDisplayInformation(int roamInd, int defRoamInd){
287f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        EriDisplayInformation ret;
288f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville
289febb94cdbb7c7b7091401d21824bfab32b9daca5Libin Tang        // Carrier can use eri.xml to customize any built-in roaming display indications
290febb94cdbb7c7b7091401d21824bfab32b9daca5Libin Tang        if (isEriFileLoaded) {
291febb94cdbb7c7b7091401d21824bfab32b9daca5Libin Tang            EriInfo eriInfo = getEriInfo(roamInd);
292febb94cdbb7c7b7091401d21824bfab32b9daca5Libin Tang            if (eriInfo != null) {
29361c082603fe2bc192606407c9dda2a81d92d44c5Robert Greenwalt                if (VDBG) Log.v(LOG_TAG, "ERI roamInd " + roamInd + " found in ERI file");
294febb94cdbb7c7b7091401d21824bfab32b9daca5Libin Tang                ret = new EriDisplayInformation(
295febb94cdbb7c7b7091401d21824bfab32b9daca5Libin Tang                        eriInfo.mIconIndex,
296febb94cdbb7c7b7091401d21824bfab32b9daca5Libin Tang                        eriInfo.mIconMode,
297febb94cdbb7c7b7091401d21824bfab32b9daca5Libin Tang                        eriInfo.mEriText);
298febb94cdbb7c7b7091401d21824bfab32b9daca5Libin Tang                return ret;
299febb94cdbb7c7b7091401d21824bfab32b9daca5Libin Tang            }
300febb94cdbb7c7b7091401d21824bfab32b9daca5Libin Tang        }
301febb94cdbb7c7b7091401d21824bfab32b9daca5Libin Tang
302f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        switch (roamInd) {
303f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        // Handling the standard roaming indicator (non-ERI)
304f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        case EriInfo.ROAMING_INDICATOR_ON:
305f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            ret = new EriDisplayInformation(
306f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_INDICATOR_ON,
307f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
308f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText0).toString());
309f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            break;
3102563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville
311f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        case EriInfo.ROAMING_INDICATOR_OFF:
312f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            ret = new EriDisplayInformation(
313f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_INDICATOR_OFF,
314f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
315f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText1).toString());
316f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            break;
317f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville
318f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        case EriInfo.ROAMING_INDICATOR_FLASH:
319f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            ret = new EriDisplayInformation(
320f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_INDICATOR_FLASH,
321f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_ICON_MODE_FLASH,
322f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText2).toString());
323f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            break;
324f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville
325f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville
326f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        // Handling the standard ERI
327f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        case 3:
328f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            ret = new EriDisplayInformation(
329f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    roamInd,
330f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
331f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText3).toString());
332f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            break;
333f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville
334f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        case 4:
335f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            ret = new EriDisplayInformation(
336f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    roamInd,
337f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
338f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText4).toString());
339f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            break;
3402563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville
341f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        case 5:
342f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            ret = new EriDisplayInformation(
343f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    roamInd,
344f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
345f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText5).toString());
346f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            break;
3472563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville
348f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        case 6:
349f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            ret = new EriDisplayInformation(
350f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    roamInd,
351f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
352f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText6).toString());
353f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            break;
3542563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville
355f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        case 7:
356f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            ret = new EriDisplayInformation(
357f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    roamInd,
358f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
359f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText7).toString());
360f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            break;
3612563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville
362f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        case 8:
363f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            ret = new EriDisplayInformation(
364f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    roamInd,
365f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
366f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText8).toString());
367f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            break;
3682563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville
369f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        case 9:
370f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            ret = new EriDisplayInformation(
371f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    roamInd,
372f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
373f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText9).toString());
374f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            break;
3752563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville
376f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        case 10:
377f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            ret = new EriDisplayInformation(
378f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    roamInd,
379f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
380f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText10).toString());
381f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            break;
3822563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville
383f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        case 11:
384f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            ret = new EriDisplayInformation(
385f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    roamInd,
386f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
387f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText11).toString());
388f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            break;
3892563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville
390f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        case 12:
391f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            ret = new EriDisplayInformation(
392f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    roamInd,
393f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
394f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText12).toString());
395f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            break;
396f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville
397f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        // Handling the non standard Enhanced Roaming Indicator (roamInd > 63)
398f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        default:
399f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            if (!isEriFileLoaded) {
400f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                // ERI file NOT loaded
40188e3f827e657ef741099b24896c17533fa9ef61eWink Saville                if (DBG) Log.d(LOG_TAG, "ERI File not loaded");
402f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                if(defRoamInd > 2) {
40371f48a21b0533a5b9dc1c0eab3c675800b78fa5eRobert Greenwalt                    if (VDBG) Log.v(LOG_TAG, "ERI defRoamInd > 2 ...flashing");
404f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    ret = new EriDisplayInformation(
405f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                            EriInfo.ROAMING_INDICATOR_FLASH,
406f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                            EriInfo.ROAMING_ICON_MODE_FLASH,
407f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                            mContext.getText(com.android.internal
408f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                                            .R.string.roamingText2).toString());
409f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                } else {
41071f48a21b0533a5b9dc1c0eab3c675800b78fa5eRobert Greenwalt                    if (VDBG) Log.v(LOG_TAG, "ERI defRoamInd <= 2");
411f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    switch (defRoamInd) {
412f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    case EriInfo.ROAMING_INDICATOR_ON:
413f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                        ret = new EriDisplayInformation(
414f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                EriInfo.ROAMING_INDICATOR_ON,
415f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                EriInfo.ROAMING_ICON_MODE_NORMAL,
416f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                mContext.getText(com.android.internal
417f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                                            .R.string.roamingText0).toString());
418f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                        break;
4192563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville
420f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    case EriInfo.ROAMING_INDICATOR_OFF:
421f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                        ret = new EriDisplayInformation(
422f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                EriInfo.ROAMING_INDICATOR_OFF,
423f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                EriInfo.ROAMING_ICON_MODE_NORMAL,
424f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                mContext.getText(com.android.internal
425f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                                            .R.string.roamingText1).toString());
426f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                        break;
4272563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville
428f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    case EriInfo.ROAMING_INDICATOR_FLASH:
429f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                        ret = new EriDisplayInformation(
430f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                EriInfo.ROAMING_INDICATOR_FLASH,
431f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                EriInfo.ROAMING_ICON_MODE_FLASH,
432f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                mContext.getText(com.android.internal
433f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                                            .R.string.roamingText2).toString());
434f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                        break;
4352563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville
436f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    default:
437f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                        ret = new EriDisplayInformation(-1, -1, "ERI text");
438f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    }
439f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                }
440f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            } else {
441f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                // ERI file loaded
442f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                EriInfo eriInfo = getEriInfo(roamInd);
443f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                EriInfo defEriInfo = getEriInfo(defRoamInd);
444f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                if (eriInfo == null) {
44571f48a21b0533a5b9dc1c0eab3c675800b78fa5eRobert Greenwalt                    if (VDBG) {
44671f48a21b0533a5b9dc1c0eab3c675800b78fa5eRobert Greenwalt                        Log.v(LOG_TAG, "ERI roamInd " + roamInd
447f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                            + " not found in ERI file ...using defRoamInd " + defRoamInd);
44888e3f827e657ef741099b24896c17533fa9ef61eWink Saville                    }
449f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    if(defEriInfo == null) {
450f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                        Log.e(LOG_TAG, "ERI defRoamInd " + defRoamInd
451f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                + " not found in ERI file ...on");
452f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                        ret = new EriDisplayInformation(
453f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                EriInfo.ROAMING_INDICATOR_ON,
454f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                EriInfo.ROAMING_ICON_MODE_NORMAL,
455f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                mContext.getText(com.android.internal
456f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                                             .R.string.roamingText0).toString());
457f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville
458f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    } else {
45971f48a21b0533a5b9dc1c0eab3c675800b78fa5eRobert Greenwalt                        if (VDBG) {
46071f48a21b0533a5b9dc1c0eab3c675800b78fa5eRobert Greenwalt                            Log.v(LOG_TAG, "ERI defRoamInd " + defRoamInd + " found in ERI file");
46188e3f827e657ef741099b24896c17533fa9ef61eWink Saville                        }
462f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                        ret = new EriDisplayInformation(
463f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                defEriInfo.mIconIndex,
464f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                defEriInfo.mIconMode,
465f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                defEriInfo.mEriText);
466f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    }
467f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                } else {
46871f48a21b0533a5b9dc1c0eab3c675800b78fa5eRobert Greenwalt                    if (VDBG) Log.v(LOG_TAG, "ERI roamInd " + roamInd + " found in ERI file");
469f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    ret = new EriDisplayInformation(
470f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                            eriInfo.mIconIndex,
471f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                            eriInfo.mIconMode,
472f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                            eriInfo.mEriText);
473f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                }
474f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            }
475f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            break;
476f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        }
47771f48a21b0533a5b9dc1c0eab3c675800b78fa5eRobert Greenwalt        if (VDBG) Log.v(LOG_TAG, "Displaying ERI " + ret.toString());
478f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        return ret;
479f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville    }
480f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville
481f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville    public int getCdmaEriIconIndex(int roamInd, int defRoamInd){
482f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        return getEriDisplayInformation(roamInd, defRoamInd).mEriIconIndex;
483f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville    }
484f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville
485f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville    public int getCdmaEriIconMode(int roamInd, int defRoamInd){
486f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        return getEriDisplayInformation(roamInd, defRoamInd).mEriIconMode;
487f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville    }
488f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville
489f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville    public String getCdmaEriText(int roamInd, int defRoamInd){
490f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        return getEriDisplayInformation(roamInd, defRoamInd).mEriIconText;
491f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville    }
492e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville}
493