diff --git a/androidgcs/res/drawable-hdpi/icon.png b/androidgcs/res/drawable-hdpi/icon.png index 8074c4c57..eab1fc68f 100644 Binary files a/androidgcs/res/drawable-hdpi/icon.png and b/androidgcs/res/drawable-hdpi/icon.png differ diff --git a/androidgcs/res/drawable-ldpi/icon.png b/androidgcs/res/drawable-ldpi/icon.png index 1095584ec..eab1fc68f 100644 Binary files a/androidgcs/res/drawable-ldpi/icon.png and b/androidgcs/res/drawable-ldpi/icon.png differ diff --git a/androidgcs/res/drawable-mdpi/icon.png b/androidgcs/res/drawable-mdpi/icon.png index a07c69fa5..eab1fc68f 100644 Binary files a/androidgcs/res/drawable-mdpi/icon.png and b/androidgcs/res/drawable-mdpi/icon.png differ diff --git a/androidgcs/res/layout/main.xml b/androidgcs/res/layout/main.xml index 7e4a852bf..9e5f90add 100644 --- a/androidgcs/res/layout/main.xml +++ b/androidgcs/res/layout/main.xml @@ -8,4 +8,6 @@ android:layout_width="fill_parent" android:layout_height="wrap_content" /> + + diff --git a/androidgcs/src/org/openpilot/androidgcs/ObjectBrowser.java b/androidgcs/src/org/openpilot/androidgcs/ObjectBrowser.java index 3c6231258..a8c58d58d 100644 --- a/androidgcs/src/org/openpilot/androidgcs/ObjectBrowser.java +++ b/androidgcs/src/org/openpilot/androidgcs/ObjectBrowser.java @@ -1,6 +1,8 @@ package org.openpilot.androidgcs; import java.io.IOException; +import java.util.Observable; +import java.util.Observer; import java.util.Set; import java.util.UUID; @@ -10,11 +12,15 @@ import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothSocket; import android.content.Intent; import android.os.Bundle; +import android.os.Handler; import android.util.Log; +import android.widget.TextView; +import android.widget.ToggleButton; import org.openpilot.androidgcs.*; import org.openpilot.uavtalk.Telemetry; import org.openpilot.uavtalk.TelemetryMonitor; +import org.openpilot.uavtalk.UAVObject; import org.openpilot.uavtalk.UAVObjectManager; import org.openpilot.uavtalk.UAVTalk; import org.openpilot.uavtalk.uavobjects.UAVObjectsInitialize; @@ -26,9 +32,35 @@ public class ObjectBrowser extends Activity { private final int REQUEST_ENABLE_BT = 0; private UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); BluetoothAdapter mBluetoothAdapter; + BluetoothSocket socket; + boolean connected; UAVObjectManager objMngr; UAVTalk uavTalk; + final Handler uavobjHandler = new Handler(); + final Runnable updateText = new Runnable() { + public void run() { + ToggleButton button = (ToggleButton) findViewById(R.id.toggleButton1); + button.setChecked(!connected); + + Log.d(TAG,"HERE" + connected); + + TextView text = (TextView) findViewById(R.id.textView1); + + UAVObject obj1 = objMngr.getObject("SystemStats"); + UAVObject obj2 = objMngr.getObject("AttitudeRaw"); + UAVObject obj3 = objMngr.getObject("AttitudeActual"); + UAVObject obj4 = objMngr.getObject("SystemAlarms"); + + if(obj1 == null || obj2 == null || obj3 == null || obj4 == null) + return; + + Log.d(TAG,"And here"); + text.setText(obj1.toString() + "\n" + obj2.toString() + "\n" + obj3.toString() + "\n" + obj4.toString() ); + + } + }; + /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { @@ -36,11 +68,16 @@ public class ObjectBrowser extends Activity { setContentView(R.layout.main); Log.d(TAG, "Launching Object Browser"); + + connected = false; + objMngr = new UAVObjectManager(); + UAVObjectsInitialize.register(objMngr); + mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (mBluetoothAdapter == null) { // Device does not support Bluetooth - Log.d(TAG, "Device does not support Bluetooth"); + Log.e(TAG, "Device does not support Bluetooth"); return; } @@ -50,16 +87,49 @@ public class ObjectBrowser extends Activity { } else { queryDevices(); } + + + UAVObject obj = objMngr.getObject("SystemStats"); + if(obj != null) + obj.addUpdatedObserver(new Observer() { + public void update(Observable observable, Object data) { + uavobjHandler.post(updateText); + } + }); + obj = objMngr.getObject("AttitudeRaw"); + if(obj != null) + obj.addUpdatedObserver(new Observer() { + public void update(Observable observable, Object data) { + uavobjHandler.post(updateText); + } + }); + obj = objMngr.getObject("AttitudeActual"); + if(obj != null) + obj.addUpdatedObserver(new Observer() { + public void update(Observable observable, Object data) { + uavobjHandler.post(updateText); + } + }); + obj = objMngr.getObject("SystemAlarms"); + if(obj != null) + obj.addUpdatedObserver(new Observer() { + public void update(Observable observable, Object data) { + uavobjHandler.post(updateText); + } + }); + + } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode == REQUEST_ENABLE_BT && resultCode == RESULT_OK) { - Log.d(TAG, "Bluetooth started succesfully"); + //Log.d(TAG, "Bluetooth started succesfully"); queryDevices(); } - if(requestCode == REQUEST_ENABLE_BT && resultCode != RESULT_OK) - Log.d(TAG, "Bluetooth could not be started"); + if(requestCode == REQUEST_ENABLE_BT && resultCode != RESULT_OK) { + //Log.d(TAG, "Bluetooth could not be started"); + } } @@ -84,12 +154,13 @@ public class ObjectBrowser extends Activity { private void openTelmetryBluetooth(BluetoothDevice device) { Log.d(TAG, "Opening conncetion to " + device.getName()); - BluetoothSocket socket = null; + socket = null; + connected = false; try { socket = device.createInsecureRfcommSocketToServiceRecord(MY_UUID); } catch (IOException e) { Log.e(TAG,"Unable to create Rfcomm socket"); - e.printStackTrace(); + //e.printStackTrace(); } mBluetoothAdapter.cancelDiscovery(); @@ -102,20 +173,19 @@ public class ObjectBrowser extends Activity { try { socket.close(); } catch (IOException e2) { - Log.e(TAG, "unable to close() socket during connection failure", e2); + //Log.e(TAG, "unable to close() socket during connection failure", e2); } return; } - objMngr = new UAVObjectManager(); - UAVObjectsInitialize.register(objMngr); - + connected = true; + try { uavTalk = new UAVTalk(socket.getInputStream(), socket.getOutputStream(), objMngr); } catch (IOException e) { Log.e(TAG,"Error starting UAVTalk"); // TODO Auto-generated catch block - e.printStackTrace(); + //e.printStackTrace(); return; }