X-Git-Url: https://git.gag.com/?a=blobdiff_plain;ds=sidebyside;f=altosdroid%2Fsrc%2Forg%2Faltusmetrum%2FAltosDroid%2FAltosBluetooth.java;h=4a1fc3716c9320d6cbf8bca44990832d1edce89c;hb=bc3fbcb35090be3856284ccf4d908ebf39d02bec;hp=0aea06f1cf22a242cf89489768070522caafdf15;hpb=8d1d8d2a3c129cdbd55427bcda0f26715b02f1ee;p=fw%2Faltos diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosBluetooth.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosBluetooth.java index 0aea06f1..4a1fc371 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosBluetooth.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosBluetooth.java @@ -31,7 +31,7 @@ import android.os.Handler; //import android.os.Message; import android.util.Log; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_5.*; public class AltosBluetooth extends AltosLink { @@ -52,6 +52,7 @@ public class AltosBluetooth extends AltosLink { // Constructor public AltosBluetooth(BluetoothDevice in_device, Handler in_handler) { +// set_debug(D); adapter = BluetoothAdapter.getDefaultAdapter(); device = in_device; handler = in_handler; @@ -136,6 +137,22 @@ public class AltosBluetooth extends AltosLink { } } + public double frequency() { + return frequency; + } + + public int telemetry_rate() { + return telemetry_rate; + } + + public void save_frequency() { + AltosPreferences.set_frequency(serial, frequency); + } + + public void save_telemetry_rate() { + AltosPreferences.set_telemetry_rate(serial, telemetry_rate); + } + private synchronized void wait_connected() throws InterruptedException, IOException { if (input == null) { wait(); @@ -162,16 +179,41 @@ public class AltosBluetooth extends AltosLink { } } - public int getchar() { + public void putchar(byte c) { + byte[] bytes = { c }; + if (D) Log.d(TAG, "print(): begin"); try { wait_connected(); - return input.read(); + output.write(bytes); + if (D) Log.d(TAG, "print(): Wrote byte: '" + c + "'"); } catch (IOException e) { connection_lost(); - } catch (java.lang.InterruptedException e) { + } catch (InterruptedException e) { connection_lost(); } - return AltosLink.ERROR; + } + + private static final int buffer_size = 1024; + + private byte[] buffer = new byte[buffer_size]; + private int buffer_len = 0; + private int buffer_off = 0; + + public int getchar() { + while (buffer_off == buffer_len) { + try { + wait_connected(); + buffer_len = input.read(buffer); + buffer_off = 0; + } catch (IOException e) { + connection_lost(); + return AltosLink.ERROR; + } catch (java.lang.InterruptedException e) { + connection_lost(); + return AltosLink.ERROR; + } + } + return buffer[buffer_off++]; } public void close() {