summaryrefslogtreecommitdiffstats
path: root/SamsungServiceMode/src/com/cyanogenmod/samsungservicemode/SamsungServiceModeActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'SamsungServiceMode/src/com/cyanogenmod/samsungservicemode/SamsungServiceModeActivity.java')
-rw-r--r--SamsungServiceMode/src/com/cyanogenmod/samsungservicemode/SamsungServiceModeActivity.java277
1 files changed, 0 insertions, 277 deletions
diff --git a/SamsungServiceMode/src/com/cyanogenmod/samsungservicemode/SamsungServiceModeActivity.java b/SamsungServiceMode/src/com/cyanogenmod/samsungservicemode/SamsungServiceModeActivity.java
deleted file mode 100644
index 59c0139..0000000
--- a/SamsungServiceMode/src/com/cyanogenmod/samsungservicemode/SamsungServiceModeActivity.java
+++ /dev/null
@@ -1,277 +0,0 @@
-package com.cyanogenmod.samsungservicemode;
-
-import android.app.Activity;
-import android.os.AsyncResult;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.text.TextUtils;
-import android.util.Log;
-import android.view.View;
-import android.widget.AdapterView;
-import android.widget.ArrayAdapter;
-import android.widget.ListView;
-
-import com.android.internal.telephony.Phone;
-import com.android.internal.telephony.PhoneFactory;
-
-public class SamsungServiceModeActivity extends Activity implements AdapterView.OnItemClickListener {
-
- private static final String TAG = "SamsungServiceModeActivity";
-
- public static final String EXTRA_SECRET_CODE = "secret_code";
-
- private static final int ID_SERVICE_MODE_REFRESH = 1001;
- private static final int ID_SERVICE_MODE_REQUEST = 1008;
- private static final int ID_SERVICE_MODE_END = 1009;
-
- private static final int CHARS_PER_LINE = 34;
- private static final int LINES = 11;
-
- private ListView mListView;
- private String[] mDisplay = new String[LINES];
-
- private int mCurrentSvcMode;
- private int mCurrentModeType;
-
- // Disable back when initialized with certain commands due to crash
- private boolean mAllowBack;
- private boolean mFirstRun = true;
- private String mFirstPageHead;
-
- private Phone mPhone;
- private Handler mHandler = new Handler() {
-
- @Override
- public void handleMessage(Message msg) {
- switch(msg.what) {
- case ID_SERVICE_MODE_REFRESH:
- Log.v(TAG, "Tick");
- byte[] data = null;
- switch(mCurrentSvcMode) {
- case OemCommands.OEM_SM_ENTER_MODE_MESSAGE:
- data = OemCommands.getEnterServiceModeData(0, 0, OemCommands.OEM_SM_QUERY);
- break;
- case OemCommands.OEM_SM_PROCESS_KEY_MESSAGE:
- data = OemCommands.getPressKeyData('\0', OemCommands.OEM_SM_QUERY);
- break;
- default:
- Log.e(TAG, "Unknown mode: " + mCurrentSvcMode);
- break;
- }
-
- if (data != null) {
- sendRequest(data, ID_SERVICE_MODE_REQUEST);
- }
- break;
- case ID_SERVICE_MODE_REQUEST:
- AsyncResult result = (AsyncResult)msg.obj;
- if (result.exception != null) {
- Log.e(TAG, "", result.exception);
- return;
- }
- if (result.result == null) {
- Log.v(TAG, "No need to refresh.");
- return;
- }
- byte[] aob = (byte[])result.result;
-
- if (aob.length == 0) {
- Log.v(TAG, "Length = 0");
- return;
- }
-
- int lines = aob.length / CHARS_PER_LINE;
- if (lines > LINES) {
- Log.e(TAG, "Datasize " + aob.length + " larger than expected");
- return;
- }
-
- for (int i = 0; i < lines; i++) {
- StringBuilder strb = new StringBuilder(CHARS_PER_LINE);
- for (int j = 2; i < CHARS_PER_LINE; j++) {
- int pos = i * CHARS_PER_LINE + j;
- if (pos >= aob.length) {
- Log.e(TAG, "Unexpected EOF");
- break;
- }
- if (aob[pos] == 0) {
- break;
- }
- strb.append((char)aob[pos]);
- }
- mDisplay[i] = strb.toString();
- }
-
- mListView.setAdapter(new ArrayAdapter<String>(
- SamsungServiceModeActivity.this, R.layout.list_item, mDisplay));
-
- if (mFirstRun) {
- mFirstPageHead = mDisplay[0];
- mFirstRun = false;
- }
-
- if (mDisplay[0].contains("End service mode")) {
- finish();
- } else if (((mDisplay[0].contains("[")) && (mDisplay[0].contains("]")))
- || ((mDisplay[1].contains("[")) && (mDisplay[1].contains("]")))) {
- // This is a menu, don't refresh
- } else if ((mDisplay[0].length() != 0) && (mDisplay[1].length() == 0)
- && (mDisplay[0].charAt(1) > 48) && (mDisplay[0].charAt(1) < 58)) {
- // Only numerical display, refresh
- mHandler.sendEmptyMessageDelayed(ID_SERVICE_MODE_REFRESH, 200);
- } else {
- // Periodical refresh
- mHandler.sendEmptyMessageDelayed(ID_SERVICE_MODE_REFRESH, 1500);
- }
- break;
- case ID_SERVICE_MODE_END:
- Log.v(TAG, "Service Mode End");
- break;
- }
- }
-
- };
-
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
-
- mListView = (ListView)findViewById(R.id.displayList);
- mListView.setOnItemClickListener(this);
-
- mPhone = PhoneFactory.getDefaultPhone();
-
- // Go to the page specified by the code used to enter service mode
- String code = getIntent().getStringExtra(EXTRA_SECRET_CODE);
-
- // Default to main page
- int modeType = OemCommands.OEM_SM_TYPE_TEST_MANUAL;
- int subType = OemCommands.OEM_SM_TYPE_SUB_ENTER;
- mAllowBack = true; // Some commands don't like having "back" executed on them
-
- if (TextUtils.isEmpty(code) || code.equals("197328640")) {
- // Use default (this exists to prevent NPE when code is null)
- }
- else if (code.equals("0011")) {
- modeType = OemCommands.OEM_SM_TYPE_MONITOR;
- subType = OemCommands.OEM_SM_TYPE_SUB_ENTER;
- } else if (code.equals("0228")) { // 0BAT
- subType = OemCommands.OEM_SM_TYPE_SUB_BATTERY_INFO_ENTER;
- } else if (code.equals("32489")) {
- subType = OemCommands.OEM_SM_TYPE_SUB_CIPHERING_PROTECTION_ENTER;
- } else if (code.equals("2580")) { // ALT0
- subType = OemCommands.OEM_SM_TYPE_SUB_INTEGRITY_PROTECTION_ENTER;
- } else if (code.equals("9090") || code.equals("7284")) { // PATH
- subType = OemCommands.OEM_SM_TYPE_SUB_USB_UART_DIAG_CONTROL_ENTER;
- mAllowBack = false;
- } else if (code.equals("0599") || code.equals("301279") || code.equals("279301")) {
- subType = OemCommands.OEM_SM_TYPE_SUB_RRC_VERSION_ENTER;
- mAllowBack = false;
- } else if (code.equals("2263")) { // BAND
- subType = OemCommands.OEM_SM_TYPE_SUB_BAND_SEL_ENTER;
- mAllowBack = false;
- } else if (code.equals("4238378")) { // GCFTEST
- subType = OemCommands.OEM_SM_TYPE_SUB_GCF_TESTMODE_ENTER;
- mAllowBack = false;
- } else if (code.equals("0283")) { // 0AUD
- subType = OemCommands.OEM_SM_TYPE_SUB_GSM_FACTORY_AUDIO_LB_ENTER;
- } else if (code.equals("1575")) {
- subType = OemCommands.OEM_SM_TYPE_SUB_GPSONE_SS_TEST_ENTER;
- } else if (code.equals("73876766")) { // SETSMSON
- subType = OemCommands.OEM_SM_TYPE_SUB_SELLOUT_SMS_ENABLE_ENTER;
- mAllowBack = false;
- } else if (code.equals("738767633")) { // SETSMSOFF
- subType = OemCommands.OEM_SM_TYPE_SUB_SELLOUT_SMS_DISABLE_ENTER;
- mAllowBack = false;
- } else if (code.equals("7387678378")) { // SETSMSTEST
- subType = OemCommands.OEM_SM_TYPE_SUB_SELLOUT_SMS_TEST_MODE_ON;
- mAllowBack = false;
- } else if (code.equals("7387677763")) { // SETSMSPROD
- subType = OemCommands.OEM_SM_TYPE_SUB_SELLOUT_SMS_PRODUCT_MODE_ON;
- mAllowBack = false;
- } else if (code.equals("4387264636")) {
- subType = OemCommands.OEM_SM_TYPE_SUB_GET_SELLOUT_SMS_INFO_ENTER;
- mAllowBack = false;
- } else if (code.equals("6984125*") || code.equals("2886")) { // AUTO
- // crash
- subType = OemCommands.OEM_SM_TYPE_SUB_TST_AUTO_ANSWER_ENTER;
- } else if (code.equals("2767*2878")) {
- // crash
- subType = OemCommands.OEM_SM_TYPE_SUB_TST_NV_RESET_ENTER;
- } else if (code.equals("1111")) {
- subType = OemCommands.OEM_SM_TYPE_SUB_TST_FTA_SW_VERSION_ENTER;
- mAllowBack = false;
- } else if (code.equals("2222")) {
- subType = OemCommands.OEM_SM_TYPE_SUB_TST_FTA_HW_VERSION_ENTER;
- mAllowBack = false;
- }
-
- enterServiceMode(modeType, subType);
- }
-
- @Override
- public void onBackPressed() {
- if (!mAllowBack && mDisplay[0].equals(mFirstPageHead)) {
- Log.v(TAG, "Back disabled. Ending service mode.");
- endServiceMode();
- } else {
- sendChar((char) 92);
- }
- }
-
- @Override
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- String str = mDisplay[position];
- int start = str.indexOf('[');
- int end = str.indexOf(']');
-
- if (start == -1 || end == -1) {
- // This menu is not clickable
- return;
- }
- sendChar(str.charAt(start + 1));
- }
-
- @Override
- public void onPause() {
- super.onPause();
- mHandler.removeMessages(ID_SERVICE_MODE_REFRESH);
- }
-
- private void enterServiceMode(int modeType, int subType) {
- mCurrentSvcMode = OemCommands.OEM_SM_ENTER_MODE_MESSAGE;
- mCurrentModeType = modeType;
- byte[] data = OemCommands.getEnterServiceModeData(modeType, subType, OemCommands.OEM_SM_ACTION);
- sendRequest(data, ID_SERVICE_MODE_REQUEST);
- }
-
- private void endServiceMode() {
- mCurrentSvcMode = OemCommands.OEM_SM_END_MODE_MESSAGE;
- mHandler.removeMessages(ID_SERVICE_MODE_REFRESH);
- byte[] data = OemCommands.getEndServiceModeData(mCurrentModeType);
- sendRequest(data, ID_SERVICE_MODE_END);
- finish();
- }
-
- private void sendChar(char chr) {
- mCurrentSvcMode = OemCommands.OEM_SM_PROCESS_KEY_MESSAGE;
- mHandler.removeMessages(ID_SERVICE_MODE_REFRESH);
- if (chr >= 'a' && chr <= 'f') {
- chr = Character.toUpperCase(chr);
- } else if (chr == '-') {
- chr = '*';
- }
-
- byte[] data = OemCommands.getPressKeyData(chr, OemCommands.OEM_SM_ACTION);
- sendRequest(data, ID_SERVICE_MODE_REQUEST);
- }
-
- private void sendRequest(byte[] data, int id) {
- Message msg = mHandler.obtainMessage(id);
- mPhone.invokeOemRilRequestRaw(data, msg);
- }
-
-} \ No newline at end of file