altosdroid: override add_reply() to add android based debugging
[fw/altos] / altosdroid / src / org / altusmetrum / AltosDroid / AltosBluetooth.java
index 5a8ed096ff429f6e88b5ddf60006ebbe7fd24390..4c8136aa4bc4cb510a27c60c4289c9889675ab20 100644 (file)
@@ -59,8 +59,6 @@ public class AltosBluetooth extends AltosLink {
                connect_thread = new ConnectThread(device);
                connect_thread.start();
 
-               input_thread = new Thread(this);
-               input_thread.start();
        }
 
        private class ConnectThread extends Thread {
@@ -108,20 +106,22 @@ public class AltosBluetooth extends AltosLink {
                                        return;
                                }
 
+                               input_thread = new Thread(AltosBluetooth.this);
+                               input_thread.start();
+
                                // Configure the newly connected device for telemetry
                                print("~\nE 0\n");
                                set_monitor(false);
 
-                               // Reset the ConnectThread because we're done
-                               connect_thread = null;
-
-                               // Send the device name back to the Telemetry Service
-                               name = device.getName();
+                               // Let TelemetryService know we're connected
                                handler.obtainMessage(TelemetryService.MSG_CONNECTED).sendToTarget();
 
                                // Notify other waiting threads, now that we're connected
                                AltosBluetooth.this.notifyAll();
 
+                               // Reset the ConnectThread because we're done
+                               connect_thread = null;
+
                                if (D) Log.d(TAG, "ConnectThread: Connect completed");
                        }
                }
@@ -143,7 +143,7 @@ public class AltosBluetooth extends AltosLink {
                }
        }
 
-       private void connection_failed() {
+       private void connection_lost() {
                if (D) Log.e(TAG, "Connection lost during I/O");
                handler.obtainMessage(TelemetryService.MSG_DISCONNECTED).sendToTarget();
        }
@@ -156,9 +156,9 @@ public class AltosBluetooth extends AltosLink {
                        output.write(bytes);
                        if (D) Log.d(TAG, "print(): Wrote bytes: '" + data.replace('\n', '\\') + "'");
                } catch (IOException e) {
-                       connection_failed();
+                       connection_lost();
                } catch (InterruptedException e) {
-                       connection_failed();
+                       connection_lost();
                }
        }
 
@@ -167,9 +167,9 @@ public class AltosBluetooth extends AltosLink {
                        wait_connected();
                        return input.read();
                } catch (IOException e) {
-                       connection_failed();
+                       connection_lost();
                } catch (java.lang.InterruptedException e) {
-                       connection_failed();
+                       connection_lost();
                }
                return AltosLink.ERROR;
        }
@@ -207,6 +207,13 @@ public class AltosBluetooth extends AltosLink {
        }
 
 
+       // We override this method so that we can add some debugging. Not 100% elegant, but more useful
+       // than debugging one char at a time above in getchar()!
+       public void add_reply(AltosLine line) throws InterruptedException {
+               if (D) Log.d(TAG, String.format("Got REPLY: %s", line.line));
+               super.add_reply(line);
+       }
+
        //public void flush_output() { super.flush_output(); }
 
        // Stubs of required methods when extending AltosLink