RadioInfo.java revision 534f5ae34ee8fa76ed1cecb34c1d7898892f14f8
1afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project/*
2afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Copyright (C) 2006 The Android Open Source Project
3afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project *
4afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
5afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * you may not use this file except in compliance with the License.
6afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * You may obtain a copy of the License at
7afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project *
8afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
9afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project *
10afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
11afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
12afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * See the License for the specific language governing permissions and
14afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * limitations under the License.
15afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */
16afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
17afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectpackage com.android.settings;
18afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
19afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.app.Activity;
20afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.app.AlertDialog;
21afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.DialogInterface;
22afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.Intent;
23afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.SharedPreferences;
24afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.res.Resources;
25afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.net.Uri;
26afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.AsyncResult;
27afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.Bundle;
28afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.Handler;
29afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.INetStatService;
30afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.Message;
31afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.RemoteException;
32afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.ServiceManager;
33afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.SystemProperties;
34afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.PreferenceManager;
35afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.telephony.CellLocation;
36afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.telephony.PhoneStateListener;
37afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.telephony.ServiceState;
38afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.telephony.TelephonyManager;
39afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.telephony.NeighboringCellInfo;
40534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jshimport android.telephony.cdma.CdmaCellLocation;
41afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.telephony.gsm.GsmCellLocation;
42afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.text.format.DateUtils;
43afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.util.Log;
44afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.view.Menu;
45afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.view.MenuItem;
46afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.view.View;
47afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.view.View.OnClickListener;
48afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.widget.AdapterView;
49afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.widget.ArrayAdapter;
50afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.widget.Button;
51afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.widget.Spinner;
52afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.widget.TextView;
53afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.widget.EditText;
54afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
5587fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jshimport com.android.internal.telephony.DataConnection;
56afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.internal.telephony.Phone;
57afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.internal.telephony.PhoneFactory;
58afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.internal.telephony.PhoneStateIntentReceiver;
59afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.internal.telephony.TelephonyProperties;
60afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.internal.telephony.gsm.GSMPhone;
61afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.internal.telephony.gsm.PdpConnection;
62afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
63afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport org.apache.http.HttpResponse;
64afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport org.apache.http.client.HttpClient;
65afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport org.apache.http.client.methods.HttpGet;
66afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport org.apache.http.impl.client.DefaultHttpClient;
67afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
68afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport java.io.ByteArrayOutputStream;
69afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport java.io.DataOutputStream;
70afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport java.io.IOException;
71afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport java.net.UnknownHostException;
72afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport java.util.ArrayList;
73afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport java.util.List;
74afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
75afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectpublic class RadioInfo extends Activity {
76afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private final String TAG = "phone";
77342101a0729a30587dc4fa79b5f017634bd985c0johnwang
78afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private static final int EVENT_PHONE_STATE_CHANGED = 100;
79afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private static final int EVENT_SIGNAL_STRENGTH_CHANGED = 200;
80afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private static final int EVENT_SERVICE_STATE_CHANGED = 300;
81afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private static final int EVENT_CFI_CHANGED = 302;
82afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
83afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private static final int EVENT_QUERY_PREFERRED_TYPE_DONE = 1000;
84afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private static final int EVENT_SET_PREFERRED_TYPE_DONE = 1001;
85afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private static final int EVENT_QUERY_NEIGHBORING_CIDS_DONE = 1002;
86afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private static final int EVENT_SET_QXDMLOG_DONE = 1003;
87afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private static final int EVENT_SET_CIPHER_DONE = 1004;
88afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private static final int EVENT_QUERY_SMSC_DONE = 1005;
89afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private static final int EVENT_UPDATE_SMSC_DONE = 1006;
90afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
91afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private static final int MENU_ITEM_SELECT_BAND  = 0;
92afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private static final int MENU_ITEM_VIEW_ADN     = 1;
93afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private static final int MENU_ITEM_VIEW_FDN     = 2;
94afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private static final int MENU_ITEM_VIEW_SDN     = 3;
95afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private static final int MENU_ITEM_GET_PDP_LIST = 4;
96afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private static final int MENU_ITEM_TOGGLE_DATA  = 5;
97afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private static final int MENU_ITEM_TOGGLE_DATA_ON_BOOT = 6;
98afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
99c38866843e966622346dc8f7b028749cac9c2198Wink Saville    private TextView mDeviceId; //DeviceId is the IMEI in GSM and the MEID in CDMA
100afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private TextView number;
101afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private TextView callState;
102afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private TextView operatorName;
103afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private TextView roamingState;
104afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private TextView gsmState;
105afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private TextView gprsState;
106afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private TextView network;
107afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private TextView dBm;
108afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private TextView mMwi;
109afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private TextView mCfi;
110afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private TextView mLocation;
111afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private TextView mNeighboringCids;
112afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private TextView resets;
113afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private TextView attempts;
114afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private TextView successes;
115afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private TextView disconnects;
116afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private TextView sentSinceReceived;
117afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private TextView sent;
118afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private TextView received;
119afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private TextView mPingIpAddr;
120afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private TextView mPingHostname;
121afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private TextView mHttpClientTest;
122afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private TextView cipherState;
123afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private TextView dnsCheckState;
124afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private EditText smsc;
125afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private Button radioPowerButton;
126afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private Button qxdmLogButton;
127afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private Button cipherToggleButton;
128afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private Button dnsCheckToggleButton;
129afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private Button pingTestButton;
130afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private Button updateSmscButton;
131afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private Button refreshSmscButton;
132afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private Spinner preferredNetworkType;
133afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
134afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private TelephonyManager mTelephonyManager;
135afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private Phone phone = null;
136afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private PhoneStateIntentReceiver mPhoneStateReceiver;
137afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private INetStatService netstat;
138afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
139afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private OemCommands mOem = null;
140afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private boolean mQxdmLogEnabled;
141afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    // The requested cipher state
142afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private boolean mCipherOn;
143afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
144afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private String mPingIpAddrResult;
145afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private String mPingHostnameResult;
146afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private String mHttpClientTestResult;
147afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private boolean mMwiValue = false;
148afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private boolean mCfiValue = false;
149afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
150afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
151afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        @Override
152afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        public void onDataConnectionStateChanged(int state) {
153afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            updateDataState();
154afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            updateDataStats();
155afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            updatePdpList();
156afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            updateNetworkType();
157afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
158afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
159afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        @Override
160afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        public void onDataActivity(int direction) {
161afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            updateDataStats2();
162afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
163afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
164afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        @Override
165afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        public void onCellLocationChanged(CellLocation location) {
166afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            updateLocation(location);
167afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
168afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
169afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        @Override
170afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        public void onMessageWaitingIndicatorChanged(boolean mwi) {
171afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            mMwiValue = mwi;
172afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            updateMessageWaiting();
173afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
174afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
175afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        @Override
176afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        public void onCallForwardingIndicatorChanged(boolean cfi) {
177afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            mCfiValue = cfi;
178afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            updateCallRedirect();
179afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
180afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    };
181afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
182afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private Handler mHandler = new Handler() {
183afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        public void handleMessage(Message msg) {
184afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            AsyncResult ar;
185afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            switch (msg.what) {
186afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                case EVENT_PHONE_STATE_CHANGED:
187afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    updatePhoneState();
188afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    break;
189afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
190afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                case EVENT_SIGNAL_STRENGTH_CHANGED:
191afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    updateSignalStrength();
192afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    break;
193afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
194afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                case EVENT_SERVICE_STATE_CHANGED:
195afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    updateServiceState();
196afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    updatePowerState();
197afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    break;
198afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
199afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                case EVENT_QUERY_PREFERRED_TYPE_DONE:
200afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    ar= (AsyncResult) msg.obj;
201afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    if (ar.exception == null) {
202afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                        int type = ((int[])ar.result)[0];
203afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                        preferredNetworkType.setSelection(type, true);
204afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    } else {
20587fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh                        preferredNetworkType.setSelection(8, true);
206afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    }
207afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    break;
208afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                case EVENT_SET_PREFERRED_TYPE_DONE:
209afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    ar= (AsyncResult) msg.obj;
210afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    if (ar.exception != null) {
211afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                        phone.getPreferredNetworkType(
212afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                                obtainMessage(EVENT_QUERY_PREFERRED_TYPE_DONE));
213afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    }
214afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    break;
215afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                case EVENT_QUERY_NEIGHBORING_CIDS_DONE:
216afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    ar= (AsyncResult) msg.obj;
217afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    if (ar.exception == null) {
218afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                        updateNeighboringCids((ArrayList<NeighboringCellInfo>)ar.result);
219afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    } else {
220afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                        mNeighboringCids.setText("unknown");
221afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    }
222afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    break;
223afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                case EVENT_SET_QXDMLOG_DONE:
224afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    ar= (AsyncResult) msg.obj;
225afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    if (ar.exception == null) {
226afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                        mQxdmLogEnabled = !mQxdmLogEnabled;
227342101a0729a30587dc4fa79b5f017634bd985c0johnwang
228afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                        updateQxdmState(mQxdmLogEnabled);
229afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                        displayQxdmEnableResult();
230afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    }
231afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    break;
232afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                case EVENT_SET_CIPHER_DONE:
233afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    ar= (AsyncResult) msg.obj;
234afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    if (ar.exception == null) {
235afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                        setCiphPref(mCipherOn);
236afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    }
237afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    updateCiphState();
238afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    break;
239afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                case EVENT_QUERY_SMSC_DONE:
240afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    ar= (AsyncResult) msg.obj;
241afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    if (ar.exception != null) {
242afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                        smsc.setText("refresh error");
243afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    } else {
24421dd407c10bb1bade10233e8468ea6729bcf71efjsh                        smsc.setText((String)ar.result);
245afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    }
246afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    break;
247afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                case EVENT_UPDATE_SMSC_DONE:
248afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    updateSmscButton.setEnabled(true);
249afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    ar= (AsyncResult) msg.obj;
250afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    if (ar.exception != null) {
251afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                        smsc.setText("update error");
252afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    }
253afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    break;
254afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                default:
255afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    break;
256afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
257afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            }
258afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
259afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    };
260afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
2618762093e0094e09493fa6cbac8e8fbf265f18165Michael Chan    static private class OemCommands {
2628762093e0094e09493fa6cbac8e8fbf265f18165Michael Chan
2638762093e0094e09493fa6cbac8e8fbf265f18165Michael Chan        public static final int OEM_QXDM_SDLOG_DEFAULT_FILE_SIZE = 32;
2648762093e0094e09493fa6cbac8e8fbf265f18165Michael Chan        public static final int OEM_QXDM_SDLOG_DEFAULT_MASK = 0;
2658762093e0094e09493fa6cbac8e8fbf265f18165Michael Chan        public static final int OEM_QXDM_SDLOG_DEFAULT_MAX_INDEX = 8;
2668762093e0094e09493fa6cbac8e8fbf265f18165Michael Chan
2678762093e0094e09493fa6cbac8e8fbf265f18165Michael Chan        static final int SIZE_OF_INT = 4;
2688762093e0094e09493fa6cbac8e8fbf265f18165Michael Chan        static final int OEM_FEATURE_ENABLE = 1;
2698762093e0094e09493fa6cbac8e8fbf265f18165Michael Chan        static final int OEM_FEATURE_DISABLE = 0;
2708762093e0094e09493fa6cbac8e8fbf265f18165Michael Chan        static final int OEM_SIMPE_FEAUTURE_LEN = 1;
2718762093e0094e09493fa6cbac8e8fbf265f18165Michael Chan
2728762093e0094e09493fa6cbac8e8fbf265f18165Michael Chan        static final int OEM_QXDM_SDLOG_FUNCTAG = 0x00010000;
2738762093e0094e09493fa6cbac8e8fbf265f18165Michael Chan        static final int OEM_QXDM_SDLOG_LEN = 4;
2748762093e0094e09493fa6cbac8e8fbf265f18165Michael Chan        static final int OEM_PS_AUTO_ATTACH_FUNCTAG = 0x00020000;
2758762093e0094e09493fa6cbac8e8fbf265f18165Michael Chan        static final int OEM_CIPHERING_FUNCTAG = 0x00020001;
276342101a0729a30587dc4fa79b5f017634bd985c0johnwang
277afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        /**
278afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * The OEM interface to store QXDM to SD.
279afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         *
280afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * To start/stop logging QXDM logs to SD card, use tag
281afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * OEM_RIL_HOOK_QXDM_SD_LOG_SETUP 0x00010000
282afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         *
283afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * "data" is a const oem_ril_hook_qxdm_sdlog_setup_data_st *
284afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * ((const oem_ril_hook_qxdm_sdlog_setup_data_st *)data)->head.func_tag
285afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * should be OEM_RIL_HOOK_QXDM_SD_LOG_SETUP
286afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * ((const oem_ril_hook_qxdm_sdlog_setup_data_st *)data)->head.len
287afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * should be "sizeof(unsigned int) * 4"
288afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * ((const oem_ril_hook_qxdm_sdlog_setup_data_st *)data)->mode
289afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * could be 0 for 'stop logging', or 1 for 'start logging'
290afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * ((const oem_ril_hook_qxdm_sdlog_setup_data_st *)data)->log_file_size
291afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * will assign the size of each log file, and it could be a value between
292afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * 1 and 512 (in megabytes, default value is recommended to set as 32).
293afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * This value will be ignored when mode == 0.
294afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * ((const oem_ril_hook_qxdm_sdlog_setup_data_st *)data)->log_mask will
295afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * assign the rule to filter logs, and it is a bitmask (bit0 is for MsgAll,
296afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * bit1 is for LogAll, and bit2 is for EventAll) recommended to be set as 0
297afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * by default. This value will be ignored when mode == 0.
298afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * ((const oem_ril_hook_qxdm_sdlog_setup_data_st *)data)->log_max_fileindex
299afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * set the how many logfiles will storted before roll over. This value will
300afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * be ignored when mode == 0.
301afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         *
302afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * "response" is NULL
303afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         *
304afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * typedef struct _oem_ril_hook_raw_head_st {
305afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         *      unsigned int func_tag;
306afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         *      unsigned int len;
307afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * } oem_ril_hook_raw_head_st;
308afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         *
309afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * typedef struct _oem_ril_hook_qxdm_sdlog_setup_data_st {
310afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         *      oem_ril_hook_raw_head_st head;
311afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         *      unsigned int mode;
312afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         *      unsigned int log_file_size;
313afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         *      unsigned int log_mask;
314afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         *      unsigned int log_max_fileindex;
315afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * } oem_ril_hook_qxdm_sdlog_setup_data_st;
316afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         *
317afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * @param enable set true to start logging QXDM in SD card
318afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * @param fileSize is the log file size in MB
319afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * @param mask is the log mask to filter
320afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * @param maxIndex is the maximum roll-over file number
321afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         * @return byteArray to use in RIL RAW command
322afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project         */
323afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        byte[] getQxdmSdlogData(boolean enable, int fileSize, int mask, int maxIndex) {
324afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            ByteArrayOutputStream bos = new ByteArrayOutputStream();
325afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            DataOutputStream dos = new DataOutputStream(bos);
326afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            try {
327afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                writeIntLittleEndian(dos, OEM_QXDM_SDLOG_FUNCTAG);
328afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                writeIntLittleEndian(dos, OEM_QXDM_SDLOG_LEN * SIZE_OF_INT);
329afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                writeIntLittleEndian(dos, enable ?
330afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                        OEM_FEATURE_ENABLE : OEM_FEATURE_DISABLE);
331afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                writeIntLittleEndian(dos, fileSize);
332afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                writeIntLittleEndian(dos, mask);
333afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                writeIntLittleEndian(dos, maxIndex);
334afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            } catch (IOException e) {
335afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                return null;
336afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            }
337afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            return bos.toByteArray();
338afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
339afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
340afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        byte[] getPsAutoAttachData(boolean enable) {
341afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            return getSimpleFeatureData(OEM_PS_AUTO_ATTACH_FUNCTAG, enable);
342afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
343afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
344afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        byte[] getCipheringData(boolean enable) {
345afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            return getSimpleFeatureData(OEM_CIPHERING_FUNCTAG, enable);
346afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
347342101a0729a30587dc4fa79b5f017634bd985c0johnwang
348afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        private byte[] getSimpleFeatureData(int tag, boolean enable) {
349afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            ByteArrayOutputStream bos = new ByteArrayOutputStream();
350afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            DataOutputStream dos = new DataOutputStream(bos);
351afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            try {
352afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                writeIntLittleEndian(dos, tag);
353afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                writeIntLittleEndian(dos, OEM_SIMPE_FEAUTURE_LEN * SIZE_OF_INT);
354afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                writeIntLittleEndian(dos, enable ?
355afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                        OEM_FEATURE_ENABLE : OEM_FEATURE_DISABLE);
356afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            } catch (IOException e) {
357afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                return null;
358afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            }
359afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            return bos.toByteArray();
360afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
361afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
362afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        private void writeIntLittleEndian(DataOutputStream dos, int val)
363afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                throws IOException {
364afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            dos.writeByte(val);
365afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            dos.writeByte(val >> 8);
366afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            dos.writeByte(val >> 16);
367afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            dos.writeByte(val >> 24);
368afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
369afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
370afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
371afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    @Override
372afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    public void onCreate(Bundle icicle) {
373afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        super.onCreate(icicle);
374afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
375afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        setContentView(R.layout.radio_info);
376afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
377afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mTelephonyManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
378afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        phone = PhoneFactory.getDefaultPhone();
379afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
380c38866843e966622346dc8f7b028749cac9c2198Wink Saville        mDeviceId= (TextView) findViewById(R.id.imei);
381afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        number = (TextView) findViewById(R.id.number);
382afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        callState = (TextView) findViewById(R.id.call);
383afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        operatorName = (TextView) findViewById(R.id.operator);
384afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        roamingState = (TextView) findViewById(R.id.roaming);
385afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        gsmState = (TextView) findViewById(R.id.gsm);
386afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        gprsState = (TextView) findViewById(R.id.gprs);
387afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        network = (TextView) findViewById(R.id.network);
388afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        dBm = (TextView) findViewById(R.id.dbm);
389afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mMwi = (TextView) findViewById(R.id.mwi);
390afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mCfi = (TextView) findViewById(R.id.cfi);
391afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mLocation = (TextView) findViewById(R.id.location);
392afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mNeighboringCids = (TextView) findViewById(R.id.neighboring);
393afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
394afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        resets = (TextView) findViewById(R.id.resets);
395afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        attempts = (TextView) findViewById(R.id.attempts);
396afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        successes = (TextView) findViewById(R.id.successes);
397afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        disconnects = (TextView) findViewById(R.id.disconnects);
398afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        sentSinceReceived = (TextView) findViewById(R.id.sentSinceReceived);
399afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        sent = (TextView) findViewById(R.id.sent);
400afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        received = (TextView) findViewById(R.id.received);
401afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        cipherState = (TextView) findViewById(R.id.ciphState);
402afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        smsc = (EditText) findViewById(R.id.smsc);
403afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        dnsCheckState = (TextView) findViewById(R.id.dnsCheckState);
404afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
405afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mPingIpAddr = (TextView) findViewById(R.id.pingIpAddr);
406afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mPingHostname = (TextView) findViewById(R.id.pingHostname);
407afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mHttpClientTest = (TextView) findViewById(R.id.httpClientTest);
408afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
409afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        preferredNetworkType = (Spinner) findViewById(R.id.preferredNetworkType);
410afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        ArrayAdapter<String> adapter = new ArrayAdapter<String> (this,
411afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                android.R.layout.simple_spinner_item, mPreferredNetworkLabels);
412342101a0729a30587dc4fa79b5f017634bd985c0johnwang        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
413afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        preferredNetworkType.setAdapter(adapter);
414afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        preferredNetworkType.setOnItemSelectedListener(mPreferredNetworkHandler);
415afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
416afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        radioPowerButton = (Button) findViewById(R.id.radio_power);
417afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        radioPowerButton.setOnClickListener(mPowerButtonHandler);
418afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
419afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        qxdmLogButton = (Button) findViewById(R.id.qxdm_log);
420afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        qxdmLogButton.setOnClickListener(mQxdmButtonHandler);
421afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
422afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        cipherToggleButton = (Button) findViewById(R.id.ciph_toggle);
423afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        cipherToggleButton.setOnClickListener(mCipherButtonHandler);
424afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        pingTestButton = (Button) findViewById(R.id.ping_test);
425afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        pingTestButton.setOnClickListener(mPingButtonHandler);
426afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        updateSmscButton = (Button) findViewById(R.id.update_smsc);
427afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        updateSmscButton.setOnClickListener(mUpdateSmscButtonHandler);
428afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        refreshSmscButton = (Button) findViewById(R.id.refresh_smsc);
429afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        refreshSmscButton.setOnClickListener(mRefreshSmscButtonHandler);
430afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        dnsCheckToggleButton = (Button) findViewById(R.id.dns_check_toggle);
431afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        dnsCheckToggleButton.setOnClickListener(mDnsCheckButtonHandler);
432342101a0729a30587dc4fa79b5f017634bd985c0johnwang
433afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mPhoneStateReceiver = new PhoneStateIntentReceiver(this, mHandler);
434afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mPhoneStateReceiver.notifySignalStrength(EVENT_SIGNAL_STRENGTH_CHANGED);
435afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mPhoneStateReceiver.notifyServiceState(EVENT_SERVICE_STATE_CHANGED);
436afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mPhoneStateReceiver.notifyPhoneCallState(EVENT_PHONE_STATE_CHANGED);
437342101a0729a30587dc4fa79b5f017634bd985c0johnwang
438afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        updateQxdmState(null);
439afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mOem = new OemCommands();
440afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
441afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        phone.getPreferredNetworkType(
442afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                mHandler.obtainMessage(EVENT_QUERY_PREFERRED_TYPE_DONE));
443afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        phone.getNeighboringCids(
444afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                mHandler.obtainMessage(EVENT_QUERY_NEIGHBORING_CIDS_DONE));
445afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
446afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        netstat = INetStatService.Stub.asInterface(ServiceManager.getService("netstat"));
447afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
448afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        CellLocation.requestLocationUpdate();
449afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
450afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
451afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    @Override
452afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    protected void onResume() {
453afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        super.onResume();
454afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
455afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        updatePhoneState();
456afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        updateSignalStrength();
457afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        updateMessageWaiting();
458afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        updateCallRedirect();
459afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        updateServiceState();
460afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        updateLocation(mTelephonyManager.getCellLocation());
461afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        updateDataState();
462afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        updateDataStats();
463afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        updateDataStats2();
464afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        updatePowerState();
465afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        updateQxdmState(null);
466afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        updateProperties();
467afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        updateCiphState();
468afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        updateDnsCheckState();
469afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
470afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        Log.i(TAG, "[RadioInfo] onResume: register phone & data intents");
471afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
472afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mPhoneStateReceiver.registerIntent();
473afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mTelephonyManager.listen(mPhoneStateListener,
474afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                  PhoneStateListener.LISTEN_DATA_CONNECTION_STATE
475afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                | PhoneStateListener.LISTEN_DATA_ACTIVITY
476afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                | PhoneStateListener.LISTEN_CELL_LOCATION
477afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                | PhoneStateListener.LISTEN_MESSAGE_WAITING_INDICATOR
478afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                | PhoneStateListener.LISTEN_CALL_FORWARDING_INDICATOR);
479afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
480afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
481afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    @Override
482afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    public void onPause() {
483afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        super.onPause();
484afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
485afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        Log.i(TAG, "[RadioInfo] onPause: unregister phone & data intents");
486afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
487afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mPhoneStateReceiver.unregisterIntent();
488afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
489afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
490afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
491afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    @Override
492afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    public boolean onCreateOptionsMenu(Menu menu) {
493c38866843e966622346dc8f7b028749cac9c2198Wink Saville        menu.add(0, MENU_ITEM_SELECT_BAND, 0, R.string.radio_info_band_mode_label)
494c38866843e966622346dc8f7b028749cac9c2198Wink Saville                .setOnMenuItemClickListener(mSelectBandCallback)
495afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                .setAlphabeticShortcut('b');
496afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        menu.add(1, MENU_ITEM_VIEW_ADN, 0,
497afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                R.string.radioInfo_menu_viewADN).setOnMenuItemClickListener(mViewADNCallback);
498afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        menu.add(1, MENU_ITEM_VIEW_FDN, 0,
499afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                R.string.radioInfo_menu_viewFDN).setOnMenuItemClickListener(mViewFDNCallback);
500afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        menu.add(1, MENU_ITEM_VIEW_SDN, 0,
501afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                R.string.radioInfo_menu_viewSDN).setOnMenuItemClickListener(mViewSDNCallback);
502afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        menu.add(1, MENU_ITEM_GET_PDP_LIST,
503afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                0, R.string.radioInfo_menu_getPDP).setOnMenuItemClickListener(mGetPdpList);
504afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        menu.add(1, MENU_ITEM_TOGGLE_DATA,
505afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                0, R.string.radioInfo_menu_disableData).setOnMenuItemClickListener(mToggleData);
506afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        menu.add(1, MENU_ITEM_TOGGLE_DATA_ON_BOOT,
507c38866843e966622346dc8f7b028749cac9c2198Wink Saville                0, R.string.radioInfo_menu_disableDataOnBoot).setOnMenuItemClickListener(
508c38866843e966622346dc8f7b028749cac9c2198Wink Saville                mToggleDataOnBoot);
509afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        return true;
510afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
511afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
512afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
513afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    @Override
514c38866843e966622346dc8f7b028749cac9c2198Wink Saville    public boolean onPrepareOptionsMenu(Menu menu) {
515afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        // Get the TOGGLE DATA menu item in the right state.
516afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        MenuItem item = menu.findItem(MENU_ITEM_TOGGLE_DATA);
517afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        int state = mTelephonyManager.getDataState();
518afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        boolean visible = true;
519afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
520afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        switch (state) {
521afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            case TelephonyManager.DATA_CONNECTED:
522afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            case TelephonyManager.DATA_SUSPENDED:
523afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                item.setTitle(R.string.radioInfo_menu_disableData);
524afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                break;
525afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            case TelephonyManager.DATA_DISCONNECTED:
526afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                item.setTitle(R.string.radioInfo_menu_enableData);
527afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                break;
528afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            default:
529afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                visible = false;
530afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                break;
531afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
532afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        item.setVisible(visible);
533afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
534afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        // Get the toggle-data-on-boot menu item in the right state.
535afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        item = menu.findItem(MENU_ITEM_TOGGLE_DATA_ON_BOOT);
53686997beac8ccd3d9e1deedb4a7afe6ddeb3a0bd7The Android Open Source Project        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(phone.getContext());
537afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        boolean value = sp.getBoolean(GSMPhone.DATA_DISABLED_ON_BOOT_KEY, false);
538afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        if (value) {
539afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            item.setTitle(R.string.radioInfo_menu_enableDataOnBoot);
540afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        } else {
541afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            item.setTitle(R.string.radioInfo_menu_disableDataOnBoot);
542afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
543afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        return true;
544afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
545afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
546afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private boolean isRadioOn() {
547afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        return phone.getServiceState().getState() != ServiceState.STATE_POWER_OFF;
548afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
549342101a0729a30587dc4fa79b5f017634bd985c0johnwang
550afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private void updatePowerState() {
551afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        String buttonText = isRadioOn() ?
552afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                            getString(R.string.turn_off_radio) :
553afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                            getString(R.string.turn_on_radio);
554c38866843e966622346dc8f7b028749cac9c2198Wink Saville        radioPowerButton.setText(buttonText);
555afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
556afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
557afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private void updateQxdmState(Boolean newQxdmStatus) {
558342101a0729a30587dc4fa79b5f017634bd985c0johnwang        SharedPreferences sp =
55986997beac8ccd3d9e1deedb4a7afe6ddeb3a0bd7The Android Open Source Project          PreferenceManager.getDefaultSharedPreferences(phone.getContext());
560afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mQxdmLogEnabled = sp.getBoolean("qxdmstatus", false);
561afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        // This is called from onCreate, onResume, and the handler when the status
562342101a0729a30587dc4fa79b5f017634bd985c0johnwang        // is updated.
563afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        if (newQxdmStatus != null) {
564afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            SharedPreferences.Editor editor = sp.edit();
565afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            editor.putBoolean("qxdmstatus", newQxdmStatus);
566afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            editor.commit();
567afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            mQxdmLogEnabled = newQxdmStatus;
568afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
569342101a0729a30587dc4fa79b5f017634bd985c0johnwang
570afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        String buttonText = mQxdmLogEnabled ?
571afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                            getString(R.string.turn_off_qxdm) :
572afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                            getString(R.string.turn_on_qxdm);
573afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        qxdmLogButton.setText(buttonText);
574afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
575afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
576afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private void setCiphPref(boolean value) {
57786997beac8ccd3d9e1deedb4a7afe6ddeb3a0bd7The Android Open Source Project        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(phone.getContext());
578afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        SharedPreferences.Editor editor = sp.edit();
579afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        editor.putBoolean(GSMPhone.CIPHERING_KEY, value);
580afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        editor.commit();
581afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
582afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
583afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private boolean getCiphPref() {
58486997beac8ccd3d9e1deedb4a7afe6ddeb3a0bd7The Android Open Source Project        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(phone.getContext());
585afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        boolean ret = sp.getBoolean(GSMPhone.CIPHERING_KEY, true);
586afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        return ret;
587afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
588afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
589afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private void updateCiphState() {
590afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        cipherState.setText(getCiphPref() ? "Ciphering ON" : "Ciphering OFF");
591afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
592afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
593afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private void updateDnsCheckState() {
5945304c7e38f89f7616bd4c834a14b4d764356d19bMike Lockwood        dnsCheckState.setText(phone.isDnsCheckDisabled() ?
595afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                "0.0.0.0 allowed" :"0.0.0.0 not allowed");
596afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
597e2a14e35aa525de6cbc0179c67ec971295f2db03Wink Saville
598afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private final void
599afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    updateSignalStrength() {
600e2a14e35aa525de6cbc0179c67ec971295f2db03Wink Saville        // TODO PhoneStateIntentReceiver is deprecated and PhoneStateListener
601e2a14e35aa525de6cbc0179c67ec971295f2db03Wink Saville        // should probably used instead.
602e2a14e35aa525de6cbc0179c67ec971295f2db03Wink Saville        int state = mPhoneStateReceiver.getServiceState().getState();
603afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        Resources r = getResources();
604afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
605afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        if ((ServiceState.STATE_OUT_OF_SERVICE == state) ||
606afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                (ServiceState.STATE_POWER_OFF == state)) {
607afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            dBm.setText("0");
608afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
609e2a14e35aa525de6cbc0179c67ec971295f2db03Wink Saville
610afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        int signalDbm = mPhoneStateReceiver.getSignalStrengthDbm();
611e2a14e35aa525de6cbc0179c67ec971295f2db03Wink Saville
612afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        if (-1 == signalDbm) signalDbm = 0;
613afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
614afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        int signalAsu = mPhoneStateReceiver.getSignalStrength();
615afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
616afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        if (-1 == signalAsu) signalAsu = 0;
617afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
618afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        dBm.setText(String.valueOf(signalDbm) + " "
619afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            + r.getString(R.string.radioInfo_display_dbm) + "   "
620afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            + String.valueOf(signalAsu) + " "
621afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            + r.getString(R.string.radioInfo_display_asu));
622afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
623afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
624afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private final void updateLocation(CellLocation location) {
625534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh        Resources r = getResources();
626c38866843e966622346dc8f7b028749cac9c2198Wink Saville        if (location instanceof GsmCellLocation) {
627c38866843e966622346dc8f7b028749cac9c2198Wink Saville            GsmCellLocation loc = (GsmCellLocation)location;
628534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh            int lac = loc.getLac();
629534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh            int cid = loc.getCid();
630534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh            mLocation.setText(r.getString(R.string.radioInfo_lac) + " = "
631534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh                    + ((lac == -1) ? "unknown" : Integer.toHexString(lac))
632534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh                    + "   "
633534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh                    + r.getString(R.string.radioInfo_cid) + " = "
634534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh                    + ((cid == -1) ? "unknown" : Integer.toHexString(cid)));
635534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh        } else if (location instanceof CdmaCellLocation) {
636534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh            CdmaCellLocation loc = (CdmaCellLocation)location;
637534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh            int bid = loc.getBaseStationId();
638534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh            int sid = loc.getSystemId();
639534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh            int nid = loc.getNetworkId();
640534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh            int lat = loc.getBaseStationLatitude();
641534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh            int lon = loc.getBaseStationLongitude();
642534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh            mLocation.setText("BID = "
643534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh                    + ((bid == -1) ? "unknown" : Integer.toHexString(bid))
644534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh                    + "   "
645534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh                    + "SID = "
646534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh                    + ((sid == -1) ? "unknown" : Integer.toHexString(sid))
647534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh                    + "   "
648534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh                    + "NID = "
649534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh                    + ((nid == -1) ? "unknown" : Integer.toHexString(nid))
650534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh                    + "\n"
651534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh                    + "LAT = "
652534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh                    + ((lat == -1) ? "unknown" : Integer.toHexString(lat))
653534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh                    + "   "
654534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh                    + "LONG = "
655534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh                    + ((lon == -1) ? "unknown" : Integer.toHexString(lon)));
656534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh        } else {
657534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh            mLocation.setText("unknown");
658c38866843e966622346dc8f7b028749cac9c2198Wink Saville        }
659afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
660afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
661afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
662afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
663afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private final void updateNeighboringCids(ArrayList<NeighboringCellInfo> cids) {
664f02c65f8c1092b0d10fe2783f2f9fd9857146f7fjohnwang        StringBuilder sb = new StringBuilder();
665f02c65f8c1092b0d10fe2783f2f9fd9857146f7fjohnwang
666afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        if (cids != null) {
667afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            if ( cids.isEmpty() ) {
668f02c65f8c1092b0d10fe2783f2f9fd9857146f7fjohnwang                sb.append("no neighboring cells");
669afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            } else {
670afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                for (NeighboringCellInfo cell : cids) {
671f02c65f8c1092b0d10fe2783f2f9fd9857146f7fjohnwang                    sb.append(cell.toString()).append(" ");
672afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                }
673afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            }
674afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        } else {
675f02c65f8c1092b0d10fe2783f2f9fd9857146f7fjohnwang            sb.append("unknown");
676afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
677f02c65f8c1092b0d10fe2783f2f9fd9857146f7fjohnwang        mNeighboringCids.setText(sb.toString());
678afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
679afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
680afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private final void
681afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    updateMessageWaiting() {
682afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mMwi.setText(String.valueOf(mMwiValue));
683afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
684afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
685afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private final void
686afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    updateCallRedirect() {
687afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mCfi.setText(String.valueOf(mCfiValue));
688afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
689afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
690afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
691afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private final void
692afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    updateServiceState() {
693afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        ServiceState serviceState = mPhoneStateReceiver.getServiceState();
694afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        int state = serviceState.getState();
695afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        Resources r = getResources();
696afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        String display = r.getString(R.string.radioInfo_unknown);
697342101a0729a30587dc4fa79b5f017634bd985c0johnwang
698afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        switch (state) {
699afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            case ServiceState.STATE_IN_SERVICE:
700afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                display = r.getString(R.string.radioInfo_service_in);
701afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                break;
702afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            case ServiceState.STATE_OUT_OF_SERVICE:
703afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            case ServiceState.STATE_EMERGENCY_ONLY:
704afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                display = r.getString(R.string.radioInfo_service_emergency);
705afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                break;
706afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            case ServiceState.STATE_POWER_OFF:
707afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                display = r.getString(R.string.radioInfo_service_off);
708afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                break;
709afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
710342101a0729a30587dc4fa79b5f017634bd985c0johnwang
711afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        gsmState.setText(display);
712342101a0729a30587dc4fa79b5f017634bd985c0johnwang
713afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        if (serviceState.getRoaming()) {
714afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            roamingState.setText(R.string.radioInfo_roaming_in);
715afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        } else {
716afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            roamingState.setText(R.string.radioInfo_roaming_not);
717afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
718afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
719afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        operatorName.setText(serviceState.getOperatorAlphaLong());
720afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
721afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
722afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private final void
723afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    updatePhoneState() {
724afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        Phone.State state = mPhoneStateReceiver.getPhoneState();
725afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        Resources r = getResources();
726afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        String display = r.getString(R.string.radioInfo_unknown);
727afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
728afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        switch (state) {
729afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            case IDLE:
730afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                display = r.getString(R.string.radioInfo_phone_idle);
731afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                break;
732afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            case RINGING:
733afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                display = r.getString(R.string.radioInfo_phone_ringing);
734afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                break;
735afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            case OFFHOOK:
736afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                display = r.getString(R.string.radioInfo_phone_offhook);
737afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                break;
738afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
739afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
740afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        callState.setText(display);
741afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
742afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
743afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private final void
744afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    updateDataState() {
745afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        int state = mTelephonyManager.getDataState();
746afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        Resources r = getResources();
747afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        String display = r.getString(R.string.radioInfo_unknown);
748afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
749afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        switch (state) {
750afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            case TelephonyManager.DATA_CONNECTED:
751afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                display = r.getString(R.string.radioInfo_data_connected);
752afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                break;
753afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            case TelephonyManager.DATA_CONNECTING:
754afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                display = r.getString(R.string.radioInfo_data_connecting);
755afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                break;
756afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            case TelephonyManager.DATA_DISCONNECTED:
757afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                display = r.getString(R.string.radioInfo_data_disconnected);
758afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                break;
759afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            case TelephonyManager.DATA_SUSPENDED:
760afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                display = r.getString(R.string.radioInfo_data_suspended);
761afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                break;
762afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
763342101a0729a30587dc4fa79b5f017634bd985c0johnwang
764afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        gprsState.setText(display);
765afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
766afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
767afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private final void updateNetworkType() {
768afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        Resources r = getResources();
769afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        String display = SystemProperties.get(TelephonyProperties.PROPERTY_DATA_NETWORK_TYPE,
770afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                r.getString(R.string.radioInfo_unknown));
771afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
772afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        network.setText(display);
773afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
774afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
775afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private final void
776afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    updateProperties() {
777afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        String s;
778afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        Resources r = getResources();
779afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
780afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        s = phone.getDeviceId();
781342101a0729a30587dc4fa79b5f017634bd985c0johnwang        if (s == null) s = r.getString(R.string.radioInfo_unknown);
782c38866843e966622346dc8f7b028749cac9c2198Wink Saville        mDeviceId.setText(s);
783342101a0729a30587dc4fa79b5f017634bd985c0johnwang
784c38866843e966622346dc8f7b028749cac9c2198Wink Saville
785afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        s = phone.getLine1Number();
786342101a0729a30587dc4fa79b5f017634bd985c0johnwang        if (s == null) s = r.getString(R.string.radioInfo_unknown);
787afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        number.setText(s);
788afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
789afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
790afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private final void updateDataStats() {
791afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        String s;
792afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
793afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        s = SystemProperties.get("net.gsm.radio-reset", "0");
794afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        resets.setText(s);
795afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
796afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        s = SystemProperties.get("net.gsm.attempt-gprs", "0");
797afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        attempts.setText(s);
798afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
799afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        s = SystemProperties.get("net.gsm.succeed-gprs", "0");
800afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        successes.setText(s);
801afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
802afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        //s = SystemProperties.get("net.gsm.disconnect", "0");
803afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        //disconnects.setText(s);
804afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
805afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        s = SystemProperties.get("net.ppp.reset-by-timeout", "0");
806afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        sentSinceReceived.setText(s);
807afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
808afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
809afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private final void updateDataStats2() {
810afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        Resources r = getResources();
811afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
812afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        try {
813afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            long txPackets = netstat.getMobileTxPackets();
814afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            long rxPackets = netstat.getMobileRxPackets();
815afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            long txBytes   = netstat.getMobileTxBytes();
816afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            long rxBytes   = netstat.getMobileRxBytes();
817342101a0729a30587dc4fa79b5f017634bd985c0johnwang
818afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            String packets = r.getString(R.string.radioInfo_display_packets);
819afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            String bytes   = r.getString(R.string.radioInfo_display_bytes);
820342101a0729a30587dc4fa79b5f017634bd985c0johnwang
821afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            sent.setText(txPackets + " " + packets + ", " + txBytes + " " + bytes);
822afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            received.setText(rxPackets + " " + packets + ", " + rxBytes + " " + bytes);
823afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        } catch (RemoteException e) {
824afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
825afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
826afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
827afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    /**
828afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project     * Ping a IP address.
829afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project     */
830afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private final void pingIpAddr() {
831afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        try {
832afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            // This is hardcoded IP addr. This is for testing purposes.
833afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            // We would need to get rid of this before release.
834afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            String ipAddress = "74.125.47.104";
835afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            Process p = Runtime.getRuntime().exec("ping -c 1 " + ipAddress);
836afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            int status = p.waitFor();
837afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            if (status == 0) {
838afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                mPingIpAddrResult = "Pass";
839afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            } else {
840afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                mPingIpAddrResult = "Fail: IP addr not reachable";
841afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            }
842afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        } catch (IOException e) {
843afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            mPingIpAddrResult = "Fail: IOException";
844afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        } catch (InterruptedException e) {
845afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            mPingIpAddrResult = "Fail: InterruptedException";
846afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
847afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
848afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
849afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    /**
850afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project     *  Ping a host name
851afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project     */
852afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private final void pingHostname() {
853afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        try {
854342101a0729a30587dc4fa79b5f017634bd985c0johnwang            Process p = Runtime.getRuntime().exec("ping -c 1 www.google.com");
855afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            int status = p.waitFor();
856afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            if (status == 0) {
857afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                mPingHostnameResult = "Pass";
858afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            } else {
859afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                mPingHostnameResult = "Fail: Host unreachable";
860afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            }
861afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        } catch (UnknownHostException e) {
862afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            mPingHostnameResult = "Fail: Unknown Host";
863afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        } catch (IOException e) {
864afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            mPingHostnameResult= "Fail: IOException";
865afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        } catch (InterruptedException e) {
866afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            mPingHostnameResult = "Fail: InterruptedException";
867afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
868afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
869afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
870afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    /**
871afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project     * This function checks for basic functionality of HTTP Client.
872afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project     */
873afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private void httpClientTest() {
874afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        HttpClient client = new DefaultHttpClient();
875afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        try {
876afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            HttpGet request = new HttpGet("http://www.google.com");
877afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            HttpResponse response = client.execute(request);
878afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            if (response.getStatusLine().getStatusCode() == 200) {
879afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                mHttpClientTestResult = "Pass";
880afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            } else {
881afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                mHttpClientTestResult = "Fail: Code: " + String.valueOf(response);
882afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            }
883afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            request.abort();
884afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        } catch (IOException e) {
885afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            mHttpClientTestResult = "Fail: IOException";
886afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
887afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
888afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
889afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private void refreshSmsc() {
89021dd407c10bb1bade10233e8468ea6729bcf71efjsh        phone.getSmscAddress(mHandler.obtainMessage(EVENT_QUERY_SMSC_DONE));
891afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
892afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
893afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private final void updatePingState() {
894afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        final Handler handler = new Handler();
895afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        // Set all to unknown since the threads will take a few secs to update.
896afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mPingIpAddrResult = getResources().getString(R.string.radioInfo_unknown);
897afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mPingHostnameResult = getResources().getString(R.string.radioInfo_unknown);
898afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mHttpClientTestResult = getResources().getString(R.string.radioInfo_unknown);
899afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
900afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mPingIpAddr.setText(mPingIpAddrResult);
901afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mPingHostname.setText(mPingHostnameResult);
902afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mHttpClientTest.setText(mHttpClientTestResult);
903afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
904afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        final Runnable updatePingResults = new Runnable() {
905afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            public void run() {
906afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                mPingIpAddr.setText(mPingIpAddrResult);
907afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                mPingHostname.setText(mPingHostnameResult);
908afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                mHttpClientTest.setText(mHttpClientTestResult);
909afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            }
910afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        };
911afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        Thread ipAddr = new Thread() {
912afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            @Override
913afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            public void run() {
914afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                pingIpAddr();
915afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                handler.post(updatePingResults);
916afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            }
917afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        };
918afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        ipAddr.start();
919afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
920afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        Thread hostname = new Thread() {
921afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            @Override
922afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            public void run() {
923afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                pingHostname();
924afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                handler.post(updatePingResults);
925afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            }
926afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        };
927afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        hostname.start();
928afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
929afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        Thread httpClient = new Thread() {
930afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            @Override
931afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            public void run() {
932afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                httpClientTest();
933afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                handler.post(updatePingResults);
934afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            }
935afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        };
936afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        httpClient.start();
937afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
938afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
939afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private final void updatePdpList() {
940afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        StringBuilder sb = new StringBuilder("========DATA=======\n");
941afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
94287fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh        List<DataConnection> dcs = phone.getCurrentDataConnectionList();
943afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
94487fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh        for (DataConnection dc : dcs) {
94587fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh            sb.append("    State: ").append(dc.getState().toString()).append("\n");
94687fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh            if (dc.getState().isActive()) {
947afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                long timeElapsed =
94887fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh                    (System.currentTimeMillis() - dc.getConnectionTime())/1000;
949afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                sb.append("    connected at ")
95087fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh                  .append(DateUtils.timeString(dc.getConnectionTime()))
951afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                  .append(" and elapsed ")
95287fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh                  .append(DateUtils.formatElapsedTime(timeElapsed));
95387fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh
95487fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh                if (dc instanceof PdpConnection) {
95587fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh                    PdpConnection pdp = (PdpConnection)dc;
95687fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh                    sb.append("\n    to ")
95787fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh                      .append(pdp.getApn().toString());
95887fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh                }
95987fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh                sb.append("\ninterface: ")
960afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                  .append(phone.getInterfaceName(phone.getActiveApnTypes()[0]))
961afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                  .append("\naddress: ")
962afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                  .append(phone.getIpAddress(phone.getActiveApnTypes()[0]))
963afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                  .append("\ngateway: ")
964afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                  .append(phone.getGateway(phone.getActiveApnTypes()[0]));
965afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                String[] dns = phone.getDnsServers(phone.getActiveApnTypes()[0]);
966afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                if (dns != null) {
967afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    sb.append("\ndns: ").append(dns[0]).append(", ").append(dns[1]);
968afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                }
96987fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh            } else if (dc.getState().isInactive()) {
970afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                sb.append("    disconnected with last try at ")
97187fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh                  .append(DateUtils.timeString(dc.getLastFailTime()))
972afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                  .append("\n    fail because ")
97387fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh                  .append(dc.getLastFailCause().toString());
974afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            } else {
97587fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh                if (dc instanceof PdpConnection) {
97687fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh                    PdpConnection pdp = (PdpConnection)dc;
97787fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh                    sb.append("    is connecting to ")
97887fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh                      .append(pdp.getApn().toString());
97987fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh                } else {
98087fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh                    sb.append("    is connecting");
98187fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh                }
982afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            }
983afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            sb.append("\n===================");
984afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
985afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
986afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
987afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        disconnects.setText(sb.toString());
988afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
989afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
990afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private void displayQxdmEnableResult() {
991afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        String status = mQxdmLogEnabled ? "Start QXDM Log" : "Stop QXDM Log";
992afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
9938762093e0094e09493fa6cbac8e8fbf265f18165Michael Chan        new AlertDialog.Builder(this).setMessage(status).show();
994afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
995afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mHandler.postDelayed(
996afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                new Runnable() {
997afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    public void run() {
998afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                        finish();
999afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    }
1000afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                }, 2000);
1001afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
1002afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
1003afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private MenuItem.OnMenuItemClickListener mViewADNCallback = new MenuItem.OnMenuItemClickListener() {
1004afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        public boolean onMenuItemClick(MenuItem item) {
1005afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            Intent intent = new Intent(Intent.ACTION_VIEW);
1006afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            // XXX We need to specify the component here because if we don't
1007afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            // the activity manager will try to resolve the type by calling
1008afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            // the content provider, which causes it to be loaded in a process
1009afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            // other than the Dialer process, which causes a lot of stuff to
1010afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            // break.
1011afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            intent.setClassName("com.android.phone",
1012afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    "com.android.phone.SimContacts");
1013afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            startActivity(intent);
1014afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            return true;
1015afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
1016afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    };
1017afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
1018afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private MenuItem.OnMenuItemClickListener mViewFDNCallback = new MenuItem.OnMenuItemClickListener() {
1019afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        public boolean onMenuItemClick(MenuItem item) {
1020afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            Intent intent = new Intent(Intent.ACTION_VIEW);
1021afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            // XXX We need to specify the component here because if we don't
1022afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            // the activity manager will try to resolve the type by calling
1023afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            // the content provider, which causes it to be loaded in a process
1024afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            // other than the Dialer process, which causes a lot of stuff to
1025afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            // break.
1026afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            intent.setClassName("com.android.phone",
1027afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    "com.android.phone.FdnList");
1028afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            startActivity(intent);
1029afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            return true;
1030afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
1031afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    };
1032afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
1033afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private MenuItem.OnMenuItemClickListener mViewSDNCallback = new MenuItem.OnMenuItemClickListener() {
1034afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        public boolean onMenuItemClick(MenuItem item) {
1035afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            Intent intent = new Intent(
1036c38866843e966622346dc8f7b028749cac9c2198Wink Saville                    Intent.ACTION_VIEW, Uri.parse("content://icc/sdn"));
1037afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            // XXX We need to specify the component here because if we don't
1038afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            // the activity manager will try to resolve the type by calling
1039afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            // the content provider, which causes it to be loaded in a process
1040afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            // other than the Dialer process, which causes a lot of stuff to
1041afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            // break.
1042afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            intent.setClassName("com.android.phone",
1043afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    "com.android.phone.ADNList");
1044afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            startActivity(intent);
1045afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            return true;
1046afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
1047afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    };
1048afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
1049afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private void toggleDataDisabledOnBoot() {
105086997beac8ccd3d9e1deedb4a7afe6ddeb3a0bd7The Android Open Source Project        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(phone.getContext());
1051afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        SharedPreferences.Editor editor = sp.edit();
1052afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        boolean value = sp.getBoolean(GSMPhone.DATA_DISABLED_ON_BOOT_KEY, false);
1053afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        editor.putBoolean(GSMPhone.DATA_DISABLED_ON_BOOT_KEY, !value);
1054afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        byte[] data = mOem.getPsAutoAttachData(value);
1055afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        if (data == null) {
1056afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            // don't commit
1057afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            return;
1058afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
1059afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
1060afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        editor.commit();
1061afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        phone.invokeOemRilRequestRaw(data, null);
1062afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
1063afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
1064afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private MenuItem.OnMenuItemClickListener mToggleDataOnBoot = new MenuItem.OnMenuItemClickListener() {
1065afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        public boolean onMenuItemClick(MenuItem item) {
1066afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            toggleDataDisabledOnBoot();
1067afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            return true;
1068afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
1069afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    };
1070342101a0729a30587dc4fa79b5f017634bd985c0johnwang
1071afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private MenuItem.OnMenuItemClickListener mToggleData = new MenuItem.OnMenuItemClickListener() {
1072afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        public boolean onMenuItemClick(MenuItem item) {
1073afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            int state = mTelephonyManager.getDataState();
1074afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            switch (state) {
1075afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                case TelephonyManager.DATA_CONNECTED:
1076afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    phone.disableDataConnectivity();
1077afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    break;
1078afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                case TelephonyManager.DATA_DISCONNECTED:
1079afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    phone.enableDataConnectivity();
1080afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    break;
1081afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                default:
1082afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    // do nothing
1083afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    break;
1084afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            }
1085afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            return true;
1086afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
1087afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    };
1088afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
1089afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private MenuItem.OnMenuItemClickListener mGetPdpList = new MenuItem.OnMenuItemClickListener() {
1090afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        public boolean onMenuItemClick(MenuItem item) {
1091c38866843e966622346dc8f7b028749cac9c2198Wink Saville            phone.getDataCallList(null);
1092afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            return true;
1093afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
1094afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    };
1095afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
1096afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private MenuItem.OnMenuItemClickListener mSelectBandCallback = new MenuItem.OnMenuItemClickListener() {
1097afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        public boolean onMenuItemClick(MenuItem item) {
1098afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            Intent intent = new Intent();
1099afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            intent.setClass(RadioInfo.this, BandMode.class);
1100afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            startActivity(intent);
1101afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            return true;
1102afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
1103afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    };
1104afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
1105afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    OnClickListener mPowerButtonHandler = new OnClickListener() {
1106afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        public void onClick(View v) {
1107afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            //log("toggle radio power: currently " + (isRadioOn()?"on":"off"));
1108afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            phone.setRadioPower(!isRadioOn());
1109afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
1110afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    };
1111afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
1112afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    OnClickListener mCipherButtonHandler = new OnClickListener() {
1113afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        public void onClick(View v) {
1114afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            mCipherOn = !getCiphPref();
1115afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            byte[] data = mOem.getCipheringData(mCipherOn);
1116342101a0729a30587dc4fa79b5f017634bd985c0johnwang
1117afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            if (data == null)
1118afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                return;
1119afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
1120afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            cipherState.setText("Setting...");
1121afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            phone.invokeOemRilRequestRaw(data,
1122afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    mHandler.obtainMessage(EVENT_SET_CIPHER_DONE));
1123afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
1124afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    };
1125342101a0729a30587dc4fa79b5f017634bd985c0johnwang
1126afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    OnClickListener mDnsCheckButtonHandler = new OnClickListener() {
1127afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        public void onClick(View v) {
1128c38866843e966622346dc8f7b028749cac9c2198Wink Saville            phone.disableDnsCheck(!phone.isDnsCheckDisabled());
1129afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            updateDnsCheckState();
1130afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
1131afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    };
1132342101a0729a30587dc4fa79b5f017634bd985c0johnwang
1133afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    OnClickListener mPingButtonHandler = new OnClickListener() {
1134afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        public void onClick(View v) {
1135afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            updatePingState();
1136afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
1137afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    };
1138afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
1139afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    OnClickListener mUpdateSmscButtonHandler = new OnClickListener() {
1140afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        public void onClick(View v) {
1141afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            updateSmscButton.setEnabled(false);
114221dd407c10bb1bade10233e8468ea6729bcf71efjsh            phone.setSmscAddress(smsc.getText().toString(),
1143afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    mHandler.obtainMessage(EVENT_UPDATE_SMSC_DONE));
1144afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
1145afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    };
1146afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
1147afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    OnClickListener mRefreshSmscButtonHandler = new OnClickListener() {
1148afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        public void onClick(View v) {
1149afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            refreshSmsc();
1150afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
1151afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    };
1152afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
1153afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    OnClickListener mQxdmButtonHandler = new OnClickListener() {
1154afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        public void onClick(View v) {
1155afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            byte[] data = mOem.getQxdmSdlogData(
1156afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    !mQxdmLogEnabled,
1157afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    mOem.OEM_QXDM_SDLOG_DEFAULT_FILE_SIZE,
1158afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    mOem.OEM_QXDM_SDLOG_DEFAULT_MASK,
1159afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    mOem.OEM_QXDM_SDLOG_DEFAULT_MAX_INDEX);
1160afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
1161afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            if (data == null)
1162afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                return;
1163afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
1164afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            phone.invokeOemRilRequestRaw(data,
1165afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    mHandler.obtainMessage(EVENT_SET_QXDMLOG_DONE));
1166afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
1167afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    };
1168afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
1169afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    AdapterView.OnItemSelectedListener
1170afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            mPreferredNetworkHandler = new AdapterView.OnItemSelectedListener() {
1171afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        public void onItemSelected(AdapterView parent, View v, int pos, long id) {
1172afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            Message msg = mHandler.obtainMessage(EVENT_SET_PREFERRED_TYPE_DONE);
1173ead6928894c5f63ba8751962d93987b412b4b209Wink Saville            if (pos>=0 && pos<=7) { //IS THIS NEEDED to extend to the entire range of values
1174afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                phone.setPreferredNetworkType(pos, msg);
1175afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            }
1176afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
1177afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
1178afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        public void onNothingSelected(AdapterView parent) {
1179afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
1180afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    };
1181afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
1182afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private String[] mPreferredNetworkLabels = {
118387fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh            "WCDMA preferred",
118487fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh            "GSM only",
118587fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh            "WCDMA only",
118687fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh            "GSM auto (PRL)",
118787fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh            "CDMA auto (PRL)",
118887fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh            "CDMA only",
118987fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh            "EvDo only",
119087fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh            "GSM/CDMA auto (PRL)",
119187fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh            "Unknown"};
1192afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project}
1193