altosdroid: remove complexity around message passing
authorMike Beattie <mike@ethernal.org>
Mon, 27 Aug 2012 07:37:16 +0000 (19:37 +1200)
committerMike Beattie <mike@ethernal.org>
Mon, 27 Aug 2012 07:37:16 +0000 (19:37 +1200)
* Don't really need to use bundles
* TelemetryService: Use a local variable to store the bluetooth device object

Signed-off-by: Mike Beattie <mike@ethernal.org>
altosdroid/src/org/altusmetrum/AltosDroid/AltosBluetooth.java
altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java
altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java

index 37e977ad9ed2d4ee2b24b0aa89f8eb575f004f0b..bb188d80ca2a1d95186e9150a3ba3cabdbdf163f 100644 (file)
@@ -26,9 +26,9 @@ import java.util.UUID;
 import android.bluetooth.BluetoothAdapter;
 import android.bluetooth.BluetoothDevice;
 import android.bluetooth.BluetoothSocket;
-import android.os.Bundle;
+//import android.os.Bundle;
 import android.os.Handler;
-import android.os.Message;
+//import android.os.Message;
 import android.util.Log;
 
 import org.altusmetrum.AltosLib.*;
@@ -116,11 +116,7 @@ public class AltosBluetooth extends AltosLink {
 
                                // Send the device name back to the Telemetry Service
                                name = device.getName();
-                               Message msg = handler.obtainMessage(TelemetryService.MSG_CONNECTED);
-                               Bundle b  = new Bundle();
-                               b.putString(TelemetryService.KEY_DEVNAME, name);
-                               msg.setData(b);
-                               handler.sendMessage(msg);
+                               handler.obtainMessage(TelemetryService.MSG_CONNECTED).sendToTarget();
 
                                // Notify other waiting threads, now that we're connected
                                AltosBluetooth.this.notifyAll();
index 3e9998e5f09681b79c716aa6654cc7a9cd947b12..5631ffb7777346e291838e87fe6f9d10798fb5ff 100644 (file)
@@ -123,8 +123,9 @@ public class AltosDroid extends Activity {
                                break;
                        case MSG_DEVNAME:
                                // save the connected device's name
-                               ad.mConnectedDeviceName = msg.getData().getString(KEY_DEVNAME);
-                               Toast.makeText(ad.getApplicationContext(), "Connected to "
+                               ad.mConnectedDeviceName = (String) msg.obj;
+                               if (ad.mConnectedDeviceName != null)
+                                       Toast.makeText(ad.getApplicationContext(), "Connected to "
                                                        + ad.mConnectedDeviceName, Toast.LENGTH_SHORT).show();
                                break;
                        case MSG_TOAST:
index e3f0a739fd5d2a74acdc8494f6952e40ebc15627..c809f733971d0a7ccdda93005da731498834c24d 100644 (file)
@@ -27,7 +27,7 @@ import android.app.PendingIntent;
 import android.app.Service;
 import android.bluetooth.BluetoothDevice;
 import android.content.Intent;
-import android.os.Bundle;
+//import android.os.Bundle;
 import android.os.IBinder;
 import android.os.Handler;
 import android.os.Message;
@@ -67,6 +67,7 @@ public class TelemetryService extends Service {
        final Messenger mMessenger = new Messenger(mHandler); // Target we publish for clients to send messages to IncomingHandler.
 
        // Name of the connected device
+       private BluetoothDevice device = null;
        private String mConnectedDeviceName = null;
        private AltosBluetooth mAltosBluetooth = null;
        private int state = STATE_NONE;
@@ -96,16 +97,13 @@ public class TelemetryService extends Service {
                                break;
                        case MSG_CONNECT:
                                if (D) Log.d(TAG, "Connect command received");
-                               s.startAltosBluetooth((BluetoothDevice) msg.obj);
+                               s.device = (BluetoothDevice) msg.obj;
+                               s.startAltosBluetooth();
                                break;
                        case MSG_CONNECTED:
                                if (D) Log.d(TAG, "Connected to device");
-                               s.mConnectedDeviceName = msg.getData().getString(KEY_DEVNAME);
-                               Message m = Message.obtain(null, AltosDroid.MSG_DEVNAME);
-                               Bundle b = new Bundle();
-                               b.putString(AltosDroid.KEY_DEVNAME, s.mConnectedDeviceName);
-                               m.setData(b);
-                               s.sendMessageToClients(m);
+                               s.mConnectedDeviceName = s.device.getName();
+                               s.sendMessageToClients(Message.obtain(null, AltosDroid.MSG_DEVNAME, s.mConnectedDeviceName));
                                s.setState(STATE_CONNECTED);
                                s.mAltosBluetooth.add_monitor(s.telem);
                                break;
@@ -133,17 +131,19 @@ public class TelemetryService extends Service {
                        mAltosBluetooth.close();
                        mAltosBluetooth = null;
                }
+               mConnectedDeviceName = null;
+               device = null;
                telem.clear();
        }
 
-       private void startAltosBluetooth(BluetoothDevice d) {
+       private void startAltosBluetooth() {
                if (mAltosBluetooth == null) {
-                       if (D) Log.i(TAG, "Connecting to " + d.getName());
-                       mAltosBluetooth = new AltosBluetooth(d, mHandler);
+                       if (D) Log.i(TAG, "Connecting to " + device.getName());
+                       mAltosBluetooth = new AltosBluetooth(device, mHandler);
                        setState(STATE_CONNECTING);
                } else {
                        stopAltosBluetooth();
-                       mHandler.sendMessageDelayed(Message.obtain(null, MSG_CONNECT, d), 1000);
+                       mHandler.sendMessageDelayed(Message.obtain(null, MSG_CONNECT, device), 1000);
                }
        }