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