altosdroid: Can only use message once
[fw/altos] / altosdroid / src / org / altusmetrum / AltosDroid / TelemetryService.java
index 58bf8804513dbf787b0f3514fa3746099b7fa880..63592e2999d26e2ae09b66bd5e4a59b7cb1df32a 100644 (file)
@@ -43,7 +43,7 @@ import android.location.LocationManager;
 import android.location.LocationListener;
 import android.location.Criteria;
 
-import org.altusmetrum.altoslib_7.*;
+import org.altusmetrum.altoslib_10.*;
 
 public class TelemetryService extends Service implements LocationListener {
 
@@ -199,13 +199,11 @@ public class TelemetryService extends Service implements LocationListener {
                                 * Messages from TelemetryReader
                                 */
                        case MSG_TELEMETRY:
-                               AltosDebug.debug("MSG_TELEMETRY");
                                s.telemetry((AltosTelemetry) msg.obj);
                                break;
                        case MSG_CRC_ERROR:
                                // forward crc error messages
                                s.telemetry_state.crc_errors = (Integer) msg.obj;
-                               AltosDebug.debug("MSG_CRC_ERROR");
                                s.send_to_clients();
                                break;
                        default:
@@ -226,7 +224,6 @@ public class TelemetryService extends Service implements LocationListener {
                telem.update_state(state);
                telemetry_state.states.put(telem.serial, state);
                if (state != null) {
-                       AltosDebug.debug("Save state %d", telem.serial);
                        AltosPreferences.set_state(telem.serial, state, null);
                }
                send_to_clients();
@@ -251,7 +248,7 @@ public class TelemetryService extends Service implements LocationListener {
 
                /* On connect, send the current state to the new client
                 */
-               send_to_client(client, message());
+               send_to_client(client);
 
                /* If we've got an address from a previous session, then
                 * go ahead and try to reconnect to the device
@@ -278,9 +275,9 @@ public class TelemetryService extends Service implements LocationListener {
                 }
        }
 
-       private void send_to_client(Messenger client, Message m) {
+       private void send_to_client(Messenger client) {
+               Message m = message();
                try {
-                       AltosDebug.debug("Send message to client %s", client.toString());
                        client.send(m);
                } catch (RemoteException e) {
                        AltosDebug.error("Client %s disappeared", client.toString());
@@ -289,10 +286,8 @@ public class TelemetryService extends Service implements LocationListener {
        }
 
        private void send_to_clients() {
-               Message m = message();
-               AltosDebug.debug("Send message to %d clients", clients.size());
                for (Messenger client : clients)
-                       send_to_client(client, m);
+                       send_to_client(client);
        }
 
        private void disconnect(boolean notify) {
@@ -375,7 +370,6 @@ public class TelemetryService extends Service implements LocationListener {
                if (altos_link != null) {
                        try {
                                double  voltage = altos_link.monitor_battery();
-                               AltosDebug.debug("update receiver voltage %g\n", voltage);
                                telemetry_state.receiver_battery = voltage;
                        } catch (InterruptedException ie) {
                        }
@@ -519,7 +513,11 @@ public class TelemetryService extends Service implements LocationListener {
                // Move us into the foreground.
                startForeground(NOTIFICATION, notification);
 
-               if (intent != null) {
+               /* Start bluetooth if we don't have a connection already */
+               if (intent != null &&
+                   (telemetry_state.connect == TelemetryState.CONNECT_NONE ||
+                    telemetry_state.connect == TelemetryState.CONNECT_DISCONNECTED))
+               {
                        String  action = intent.getAction();
 
                        if (action.equals(AltosDroid.ACTION_BLUETOOTH)) {