altoslib: Support binary reading/writing in AltosLink
[fw/altos] / altosdroid / src / org / altusmetrum / AltosDroid / AltosBluetooth.java
index 0076fc53f9fa4b368cf06109704f87ce7bdf5cf1..643e94f5fa3f8802fef2b7985c058d4dd2deec0c 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Copyright © 2011 Keith Packard <keithp@keithp.com>
- * Copyright © 2012 Mike Beattie <mike@ethernal.org>
+ * Copyright Â© 2011 Keith Packard <keithp@keithp.com>
+ * Copyright Â© 2012 Mike Beattie <mike@ethernal.org>
  *
  * 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
@@ -31,7 +31,7 @@ import android.os.Handler;
 //import android.os.Message;
 import android.util.Log;
 
-import org.altusmetrum.AltosLib.*;
+import org.altusmetrum.altoslib_2.*;
 
 public class AltosBluetooth extends AltosLink {
 
@@ -162,6 +162,20 @@ public class AltosBluetooth extends AltosLink {
                }
        }
 
+       public void putchar(byte c) {
+               byte[] bytes = { c };
+               if (D) Log.d(TAG, "print(): begin");
+               try {
+                       wait_connected();
+                       output.write(bytes);
+                       if (D) Log.d(TAG, "print(): Wrote byte: '" + c + "'");
+               } catch (IOException e) {
+                       connection_lost();
+               } catch (InterruptedException e) {
+                       connection_lost();
+               }
+       }               
+
        public int getchar() {
                try {
                        wait_connected();
@@ -207,6 +221,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