summaryrefslogtreecommitdiff
path: root/altoslib/AltosLink.java
diff options
context:
space:
mode:
authorBdale Garbee <bdale@gag.com>2014-12-06 15:39:53 -0700
committerBdale Garbee <bdale@gag.com>2014-12-06 15:39:53 -0700
commit7339d2379713b5b7e4c4fe6bad89ed93f9d39e82 (patch)
tree41e653c4014940a0d78900fddd433514b9dbfc66 /altoslib/AltosLink.java
parentd1f9121593fe30b924223e89ef4d596b5bec2b25 (diff)
parentb6462ca3a7e99fe390ec97f94c23d36fab8c294d (diff)
Merge branch 'master' of ssh://git.gag.com/scm/git/fw/altos
Diffstat (limited to 'altoslib/AltosLink.java')
-rw-r--r--altoslib/AltosLink.java25
1 files changed, 16 insertions, 9 deletions
diff --git a/altoslib/AltosLink.java b/altoslib/AltosLink.java
index 62bd82b9..639d2ac7 100644
--- a/altoslib/AltosLink.java
+++ b/altoslib/AltosLink.java
@@ -55,8 +55,11 @@ public abstract class AltosLink implements Runnable {
public void printf(String format, Object ... arguments) {
String line = String.format(format, arguments);
- if (debug)
- pending_output.add(line);
+ if (debug) {
+ synchronized (pending_output) {
+ pending_output.add(line);
+ }
+ }
try {
print(line);
} catch (InterruptedException ie) {
@@ -286,12 +289,14 @@ public abstract class AltosLink implements Runnable {
binary_queue.put(dup);
}
- public void flush_output() {
+ public synchronized void flush_output() {
if (pending_output == null)
return;
- for (String s : pending_output)
- System.out.print(s);
- pending_output.clear();
+ synchronized (pending_output) {
+ for (String s : pending_output)
+ System.out.print(s);
+ pending_output.clear();
+ }
}
public void flush_input(int timeout) throws InterruptedException {
@@ -422,8 +427,10 @@ public abstract class AltosLink implements Runnable {
public void set_callsign(String callsign) {
this.callsign = callsign;
- printf ("c c %s\n", callsign);
- flush_output();
+ if (callsign != null) {
+ printf ("c c %s\n", callsign);
+ flush_output();
+ }
}
public boolean is_loader() throws InterruptedException {
@@ -462,7 +469,7 @@ public abstract class AltosLink implements Runnable {
if (telemetry_rate < 0)
telemetry_rate = AltosPreferences.telemetry_rate(serial);
set_telemetry_rate(telemetry_rate);
- if (callsign.equals(""))
+ if (callsign == null || callsign.equals(""))
callsign = AltosPreferences.callsign();
set_callsign(callsign);
printf("p\nE 0\n");