EriManager.java revision 88e3f827e657ef741099b24896c17533fa9ef61e
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;
88e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
89e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    public static final int ERI_FROM_XML          = 0;
90e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    public static final int ERI_FROM_FILE_SYSTEM  = 1;
91e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    public static final int ERI_FROM_MODEM        = 2;
92e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
93e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    private PhoneBase mPhone;
94e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    private Context mContext;
95e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    private int mEriFileSource = ERI_FROM_XML;
96f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville    private boolean isEriFileLoaded;
97e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    private EriFile mEriFile;
98e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
99e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    public EriManager(PhoneBase phone, Context context, int eriFileSource) {
100e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        this.mPhone = phone;
101e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        this.mContext = context;
102e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        this.mEriFileSource = eriFileSource;
103e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        this.mEriFile = new EriFile();
104e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    }
105e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
106e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    public void dispose() {
107e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        mEriFile = new EriFile();
108e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        isEriFileLoaded = false;
109e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    }
110e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
111e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
112e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    public void loadEriFile() {
113e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        switch (mEriFileSource) {
114e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        case ERI_FROM_MODEM:
115e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            loadEriFileFromModem();
116e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            break;
117e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
118e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        case ERI_FROM_FILE_SYSTEM:
119e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            loadEriFileFromFileSystem();
120e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            break;
121e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
122e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        case ERI_FROM_XML:
123e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        default:
124e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            loadEriFileFromXml();
125e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            break;
126e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        }
127e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    }
128e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
129e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
130e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * Load the ERI file from the MODEM through chipset specific RIL_REQUEST_OEM_HOOK
131e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     *
132e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * In this case the ERI file can be updated from the Phone Support Tool available
133e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * from the Chipset vendor
134e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
135e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    private void loadEriFileFromModem() {
136e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        // NOT IMPLEMENTED, Chipset vendor/Operator specific
137e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    }
138e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
139e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
140e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * Load the ERI file from a File System file
141e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     *
142e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * In this case the a Phone Support Tool to update the ERI file must be provided
143e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * to the Operator
144e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
145e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    private void loadEriFileFromFileSystem() {
146e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        // NOT IMPLEMENTED, Chipset vendor/Operator specific
147e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    }
148e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
149e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
150e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * Load the ERI file from the application framework resources encoded in XML
151e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     *
152e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
153e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    private void loadEriFileFromXml() {
15488e3f827e657ef741099b24896c17533fa9ef61eWink Saville        XmlPullParser parser = null;
15588e3f827e657ef741099b24896c17533fa9ef61eWink Saville        FileInputStream stream = null;
156e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        Resources r = mContext.getResources();
15788e3f827e657ef741099b24896c17533fa9ef61eWink Saville
15888e3f827e657ef741099b24896c17533fa9ef61eWink Saville        try {
15988e3f827e657ef741099b24896c17533fa9ef61eWink Saville            if (DBG) Log.d(LOG_TAG, "loadEriFileFromXml: check for alternate file");
16088e3f827e657ef741099b24896c17533fa9ef61eWink Saville            stream = new FileInputStream(
16188e3f827e657ef741099b24896c17533fa9ef61eWink Saville                            r.getString(com.android.internal.R.string.alternate_eri_file));
16288e3f827e657ef741099b24896c17533fa9ef61eWink Saville            parser = Xml.newPullParser();
16388e3f827e657ef741099b24896c17533fa9ef61eWink Saville            parser.setInput(stream, null);
16488e3f827e657ef741099b24896c17533fa9ef61eWink Saville            if (DBG) Log.d(LOG_TAG, "loadEriFileFromXml: opened alternate file");
16588e3f827e657ef741099b24896c17533fa9ef61eWink Saville        } catch (FileNotFoundException e) {
16688e3f827e657ef741099b24896c17533fa9ef61eWink Saville            if (DBG) Log.d(LOG_TAG, "loadEriFileFromXml: no alternate file");
16788e3f827e657ef741099b24896c17533fa9ef61eWink Saville            parser = null;
16888e3f827e657ef741099b24896c17533fa9ef61eWink Saville        } catch (XmlPullParserException e) {
16988e3f827e657ef741099b24896c17533fa9ef61eWink Saville            if (DBG) Log.d(LOG_TAG, "loadEriFileFromXml: no parser for alternate file");
17088e3f827e657ef741099b24896c17533fa9ef61eWink Saville            parser = null;
17188e3f827e657ef741099b24896c17533fa9ef61eWink Saville        }
17288e3f827e657ef741099b24896c17533fa9ef61eWink Saville
17388e3f827e657ef741099b24896c17533fa9ef61eWink Saville        if (parser == null) {
17488e3f827e657ef741099b24896c17533fa9ef61eWink Saville            if (DBG) Log.d(LOG_TAG, "loadEriFileFromXml: open normal file");
17588e3f827e657ef741099b24896c17533fa9ef61eWink Saville            parser = r.getXml(com.android.internal.R.xml.eri);
17688e3f827e657ef741099b24896c17533fa9ef61eWink Saville        }
17788e3f827e657ef741099b24896c17533fa9ef61eWink Saville
178e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        try {
179e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            XmlUtils.beginDocument(parser, "EriFile");
180e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            mEriFile.mVersionNumber = Integer.parseInt(
181e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    parser.getAttributeValue(null, "VersionNumber"));
182e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            mEriFile.mNumberOfEriEntries = Integer.parseInt(
183e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    parser.getAttributeValue(null, "NumberOfEriEntries"));
184e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            mEriFile.mEriFileType = Integer.parseInt(
185e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    parser.getAttributeValue(null, "EriFileType"));
186e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
187e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            int parsedEriEntries = 0;
188e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            while(true) {
189e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                XmlUtils.nextElement(parser);
190e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                String name = parser.getName();
191e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                if (name == null) {
192e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    if (parsedEriEntries != mEriFile.mNumberOfEriEntries)
193e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                        Log.e(LOG_TAG, "Error Parsing ERI file: " +  mEriFile.mNumberOfEriEntries
194e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                                + " defined, " + parsedEriEntries + " parsed!");
195e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    break;
196e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                } else if (name.equals("CallPromptId")) {
197e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    int id = Integer.parseInt(parser.getAttributeValue(null, "Id"));
198e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    String text = parser.getAttributeValue(null, "CallPromptText");
199e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    if (id >= 0 && id <= 2) {
200e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                        mEriFile.mCallPromptId[id] = text;
201e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    } else {
202e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                        Log.e(LOG_TAG, "Error Parsing ERI file: found" + id + " CallPromptId");
203e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    }
204e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
205e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                } else if (name.equals("EriInfo")) {
206e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    int roamingIndicator = Integer.parseInt(
207e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                            parser.getAttributeValue(null, "RoamingIndicator"));
208e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    int iconIndex = Integer.parseInt(parser.getAttributeValue(null, "IconIndex"));
209e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    int iconMode = Integer.parseInt(parser.getAttributeValue(null, "IconMode"));
210e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    String eriText = parser.getAttributeValue(null, "EriText");
211e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    int callPromptId = Integer.parseInt(
212e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                            parser.getAttributeValue(null, "CallPromptId"));
213e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    int alertId = Integer.parseInt(parser.getAttributeValue(null, "AlertId"));
214e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    parsedEriEntries++;
215e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                    mEriFile.mRoamIndTable.put(roamingIndicator, new EriInfo (roamingIndicator,
216e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                            iconIndex, iconMode, eriText, callPromptId, alertId));
217e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                }
218e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            }
219e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
22088e3f827e657ef741099b24896c17533fa9ef61eWink Saville            if (DBG) Log.d(LOG_TAG, "loadEriFileFromXml: eri parsing successful, file loaded");
221e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            isEriFileLoaded = true;
222e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
223e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        } catch (Exception e) {
224e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            Log.e(LOG_TAG, "Got exception while loading ERI file.", e);
225e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        } finally {
22688e3f827e657ef741099b24896c17533fa9ef61eWink Saville            if (parser instanceof XmlResourceParser) {
22788e3f827e657ef741099b24896c17533fa9ef61eWink Saville                ((XmlResourceParser)parser).close();
22888e3f827e657ef741099b24896c17533fa9ef61eWink Saville            }
22988e3f827e657ef741099b24896c17533fa9ef61eWink Saville            try {
23088e3f827e657ef741099b24896c17533fa9ef61eWink Saville                if (stream != null) {
23188e3f827e657ef741099b24896c17533fa9ef61eWink Saville                    stream.close();
23288e3f827e657ef741099b24896c17533fa9ef61eWink Saville                }
23388e3f827e657ef741099b24896c17533fa9ef61eWink Saville            } catch (IOException e) {
23488e3f827e657ef741099b24896c17533fa9ef61eWink Saville                // Ignore
23588e3f827e657ef741099b24896c17533fa9ef61eWink Saville            }
236e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        }
237e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    }
238e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
239e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
240e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * Returns the version of the ERI file
241e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     *
242e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
243e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    public int getEriFileVersion() {
244e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        return mEriFile.mVersionNumber;
245e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    }
246e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
247e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
248e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * Returns the number of ERI entries parsed
249e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     *
250e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
251e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    public int getEriNumberOfEntries() {
252e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        return mEriFile.mNumberOfEriEntries;
253e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    }
254e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
255e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
256e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * Returns the ERI file type value ( 0 for Phase 0, 1 for Phase 1)
257e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     *
258e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
259e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    public int getEriFileType() {
260e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        return mEriFile.mEriFileType;
261e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    }
262e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
263e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
264e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * Returns if the ERI file has been loaded
265e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     *
266e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
267e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    public boolean isEriFileLoaded() {
268e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        return isEriFileLoaded;
269e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    }
270e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
271e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
272e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * Returns the EriInfo record associated with roamingIndicator
273e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * or null if the entry is not found
274e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
275f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville    private EriInfo getEriInfo(int roamingIndicator) {
276e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        if (mEriFile.mRoamIndTable.containsKey(roamingIndicator)) {
277e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            return mEriFile.mRoamIndTable.get(roamingIndicator);
278e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        } else {
279e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville            return null;
280e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        }
281e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    }
282f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville
283f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville    private EriDisplayInformation getEriDisplayInformation(int roamInd, int defRoamInd){
284f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        //int iconIndex = -1;
285f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        //int iconMode = -1;
286f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        //String iconText = "ERI text";
287f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        EriDisplayInformation ret;
288f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville
289f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        switch (roamInd) {
290f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        // Handling the standard roaming indicator (non-ERI)
291f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        case EriInfo.ROAMING_INDICATOR_ON:
292f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            ret = new EriDisplayInformation(
293f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_INDICATOR_ON,
294f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
295f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText0).toString());
296f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            break;
2972563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville
298f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        case EriInfo.ROAMING_INDICATOR_OFF:
299f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            ret = new EriDisplayInformation(
300f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_INDICATOR_OFF,
301f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
302f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText1).toString());
303f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            break;
304f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville
305f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        case EriInfo.ROAMING_INDICATOR_FLASH:
306f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            ret = new EriDisplayInformation(
307f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_INDICATOR_FLASH,
308f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_ICON_MODE_FLASH,
309f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText2).toString());
310f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            break;
311f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville
312f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville
313f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        // Handling the standard ERI
314f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        case 3:
315f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            ret = new EriDisplayInformation(
316f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    roamInd,
317f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
318f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText3).toString());
319f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            break;
320f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville
321f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        case 4:
322f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            ret = new EriDisplayInformation(
323f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    roamInd,
324f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
325f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText4).toString());
326f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            break;
3272563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville
328f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        case 5:
329f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            ret = new EriDisplayInformation(
330f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    roamInd,
331f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
332f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText5).toString());
333f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            break;
3342563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville
335f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        case 6:
336f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            ret = new EriDisplayInformation(
337f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    roamInd,
338f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
339f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText6).toString());
340f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            break;
3412563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville
342f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        case 7:
343f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            ret = new EriDisplayInformation(
344f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    roamInd,
345f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
346f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText7).toString());
347f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            break;
3482563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville
349f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        case 8:
350f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            ret = new EriDisplayInformation(
351f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    roamInd,
352f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
353f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText8).toString());
354f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            break;
3552563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville
356f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        case 9:
357f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            ret = new EriDisplayInformation(
358f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    roamInd,
359f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
360f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText9).toString());
361f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            break;
3622563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville
363f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        case 10:
364f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            ret = new EriDisplayInformation(
365f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    roamInd,
366f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
367f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText10).toString());
368f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            break;
3692563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville
370f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        case 11:
371f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            ret = new EriDisplayInformation(
372f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    roamInd,
373f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
374f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText11).toString());
375f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            break;
3762563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville
377f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        case 12:
378f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            ret = new EriDisplayInformation(
379f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    roamInd,
380f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    EriInfo.ROAMING_ICON_MODE_NORMAL,
381f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    mContext.getText(com.android.internal.R.string.roamingText12).toString());
382f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            break;
383f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville
384f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        // Handling the non standard Enhanced Roaming Indicator (roamInd > 63)
385f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville        default:
386f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            if (!isEriFileLoaded) {
387f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                // ERI file NOT loaded
38888e3f827e657ef741099b24896c17533fa9ef61eWink Saville                if (DBG) Log.d(LOG_TAG, "ERI File not loaded");
389f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                if(defRoamInd > 2) {
39088e3f827e657ef741099b24896c17533fa9ef61eWink Saville                    if (DBG) Log.d(LOG_TAG, "ERI defRoamInd > 2 ...flashing");
391f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    ret = new EriDisplayInformation(
392f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                            EriInfo.ROAMING_INDICATOR_FLASH,
393f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                            EriInfo.ROAMING_ICON_MODE_FLASH,
394f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                            mContext.getText(com.android.internal
395f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                                            .R.string.roamingText2).toString());
396f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                } else {
39788e3f827e657ef741099b24896c17533fa9ef61eWink Saville                    if (DBG) Log.d(LOG_TAG, "ERI defRoamInd <= 2");
398f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    switch (defRoamInd) {
399f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    case EriInfo.ROAMING_INDICATOR_ON:
400f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                        ret = new EriDisplayInformation(
401f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                EriInfo.ROAMING_INDICATOR_ON,
402f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                EriInfo.ROAMING_ICON_MODE_NORMAL,
403f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                mContext.getText(com.android.internal
404f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                                            .R.string.roamingText0).toString());
405f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                        break;
4062563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville
407f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    case EriInfo.ROAMING_INDICATOR_OFF:
408f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                        ret = new EriDisplayInformation(
409f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                EriInfo.ROAMING_INDICATOR_OFF,
410f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                EriInfo.ROAMING_ICON_MODE_NORMAL,
411f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                mContext.getText(com.android.internal
412f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                                            .R.string.roamingText1).toString());
413f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                        break;
4142563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville
415f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    case EriInfo.ROAMING_INDICATOR_FLASH:
416f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                        ret = new EriDisplayInformation(
417f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                EriInfo.ROAMING_INDICATOR_FLASH,
418f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                EriInfo.ROAMING_ICON_MODE_FLASH,
419f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                mContext.getText(com.android.internal
420f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                                                            .R.string.roamingText2).toString());
421f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                        break;
4222563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville
423f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    default:
424f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                        ret = new EriDisplayInformation(-1, -1, "ERI text");
425f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                    }
426f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                }
427f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville            } else {
428f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                // ERI file loaded
42988e3f827e657ef741099b24896c17533fa9ef61eWink Saville                if (DBG) Log.d(LOG_TAG, "ERI File loaded");
430f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                EriInfo eriInfo = getEriInfo(roamInd);
431f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                EriInfo defEriInfo = getEriInfo(defRoamInd);
432f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville                if (eriInfo == null) {
43388e3f827e657ef741099b24896c17533fa9ef61eWink Saville                    if (DBG) {
43488e3f827e657ef741099b24896c17533fa9ef61eWink Saville                        Log.d(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 {
44788e3f827e657ef741099b24896c17533fa9ef61eWink Saville                        if (DBG) {
44888e3f827e657ef741099b24896c17533fa9ef61eWink Saville                            Log.d(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 {
45688e3f827e657ef741099b24896c17533fa9ef61eWink Saville                    if (DBG) Log.d(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        }
46588e3f827e657ef741099b24896c17533fa9ef61eWink Saville        if (DBG) Log.d(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