package lu.fisch.canze.activities; import android.os.Bundle; import android.view.Menu; import android.widget.TextView; import lu.fisch.canze.R; import lu.fisch.canze.actors.Field; import lu.fisch.canze.actors.Fields; import lu.fisch.canze.actors.Message; import lu.fisch.canze.bluetooth.BluetoothManager; /* CanZE Take a closer look at your ZE car Copyright (C) 2015 - The CanZE Team http://canze.fisch.lu This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ public class ElmTestActivity extends CanzeActivity { private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_elm_test); textView = (TextView) findViewById(R.id.textResult); new Thread(new Runnable() { @Override public void run() { appendResult(MainActivity.getStringSingle(R.string.message_PollerStopping)); if (MainActivity.device != null){ // stop the poller thread MainActivity.device.stopAndJoin(); } if (!BluetoothManager.getInstance().isConnected()) { appendResult(MainActivity.getStringSingle(R.string.message_NoConnection)); return; } doTest(); } }).start(); } protected void initListeners () {} void doTest () { Field field; Message message; String backRes; clearResult(); appendResult(R.string.message_SendingInit); if (!MainActivity.device.initDevice(1)) { appendResult(MainActivity.getStringSingle(R.string.message_InitFailed)); appendResult(MainActivity.getStringSingle(R.string.message_Problem) + MainActivity.device.getLastInitProblem() + "\n"); return; } appendResult(R.string.message_ExpectedResult); appendResult(R.string.message_PrepIsoTp); field = Fields.getInstance().getBySID("763.6180.144"); if (field == null) { appendResult(R.string.message_FieldNotExists); return; } message = MainActivity.device.requestFrame(field.getFrame()); if (message.isError()) { appendResult(message.getError() + "\n"); return; } backRes = message.getData(); if (backRes.equals("")) { appendResult(R.string.message_ResultEmpty); return; } if (!backRes.startsWith("6180")) { appendResult(MainActivity.getStringSingle(R.string.message_UnexpectedResult) + backRes.replace('\r', '•') + "]\n"); return; } appendResult(R.string.message_ExpectedResult); appendResult(R.string.message_PrepFree); field = Fields.getInstance().getBySID("4f8.4"); if (field == null) { appendResult(R.string.message_FieldNotExists); return; } message = MainActivity.device.requestFrame(field.getFrame()); if (message.isError()) { appendResult(R.string.message_MessageNull); return; } backRes = message.getData(); if (backRes.equals("")) { appendResult(R.string.message_ResultEmpty); return; } if (backRes.length() != 10) { appendResult(MainActivity.getStringSingle(R.string.message_UnexpectedResult) + backRes.replace('\r', '•') + "]\n"); return; } appendResult(R.string.message_ExpectedResult); appendResult(R.string.message_DevicePassed); } // Ensure all UI updates are done on the UiThread private void clearResult() { runOnUiThread(new Runnable() { @Override public void run() { textView.setText(""); } }); } private void appendResult(String str) { final String localStr = str; runOnUiThread(new Runnable() { @Override public void run() { textView.append(localStr); } }); } private void appendResult(int strResource) { final String localStr = MainActivity.getStringSingle(strResource); runOnUiThread(new Runnable() { @Override public void run() { textView.append(localStr); } }); } // UI elements @Override protected void onDestroy() { // restart the poller if(MainActivity.device!=null) MainActivity.device.initConnection(); super.onDestroy(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_empty, menu); return true; } }