projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altoslib/altosuilib: Fix equals methods, add hashCode
[fw/altos]
/
altoslib
/
AltosLink.java
diff --git
a/altoslib/AltosLink.java
b/altoslib/AltosLink.java
index 62bd82b93c2ae617c4d67a305696e99a32bd3ba7..4f3a1ed24a1d3db89b4393a5771d8b8c050c6857 100644
(file)
--- a/
altoslib/AltosLink.java
+++ b/
altoslib/AltosLink.java
@@
-15,7
+15,7
@@
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
-package org.altusmetrum.altoslib_
5
;
+package org.altusmetrum.altoslib_
7
;
import java.io.*;
import java.util.concurrent.*;
import java.io.*;
import java.util.concurrent.*;
@@
-55,8
+55,11
@@
public abstract class AltosLink implements Runnable {
public void printf(String format, Object ... arguments) {
String line = String.format(format, arguments);
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) {
try {
print(line);
} catch (InterruptedException ie) {
@@
-83,10
+86,17
@@
public abstract class AltosLink implements Runnable {
public boolean reply_abort;
public int in_reply;
public boolean reply_abort;
public int in_reply;
+ boolean cancel_enable = true;
+
+ public void set_cancel_enable(boolean e) {
+ cancel_enable = e;
+ }
boolean reply_timeout_shown = false;
private boolean check_reply_timeout() {
boolean reply_timeout_shown = false;
private boolean check_reply_timeout() {
+ if (!cancel_enable)
+ return false;
if (!reply_timeout_shown)
reply_timeout_shown = show_reply_timeout();
return reply_abort;
if (!reply_timeout_shown)
reply_timeout_shown = show_reply_timeout();
return reply_abort;
@@
-286,12
+296,14
@@
public abstract class AltosLink implements Runnable {
binary_queue.put(dup);
}
binary_queue.put(dup);
}
- public void flush_output() {
+ public
synchronized
void flush_output() {
if (pending_output == null)
return;
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 {
}
public void flush_input(int timeout) throws InterruptedException {
@@
-349,7
+361,7
@@
public abstract class AltosLink implements Runnable {
if (frequency == 0)
return;
if (has_frequency)
if (frequency == 0)
return;
if (has_frequency)
- set_radio_freq((int) Math.floor (frequency * 1000));
+ set_radio_freq((int) Math.floor (frequency * 1000
+ 0.5
));
else if (has_setting)
set_radio_setting(AltosConvert.radio_frequency_to_setting(frequency, cal));
else
else if (has_setting)
set_radio_setting(AltosConvert.radio_frequency_to_setting(frequency, cal));
else
@@
-381,7
+393,7
@@
public abstract class AltosLink implements Runnable {
flush_output();
}
flush_output();
}
- public void set_monitor(boolean monitor) {
+ public
synchronized
void set_monitor(boolean monitor) {
monitor_mode = monitor;
if (monitor)
printf("m %x\n", telemetry_len());
monitor_mode = monitor;
if (monitor)
printf("m %x\n", telemetry_len());
@@
-390,6
+402,10
@@
public abstract class AltosLink implements Runnable {
flush_output();
}
flush_output();
}
+ public synchronized boolean get_monitor() {
+ return monitor_mode;
+ }
+
private void set_channel(int channel) {
if (monitor_mode)
printf("m 0\nc r %d\nm %x\n",
private void set_channel(int channel) {
if (monitor_mode)
printf("m 0\nc r %d\nm %x\n",
@@
-422,8
+438,10
@@
public abstract class AltosLink implements Runnable {
public void set_callsign(String callsign) {
this.callsign = callsign;
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 {
}
public boolean is_loader() throws InterruptedException {
@@
-462,7
+480,7
@@
public abstract class AltosLink implements Runnable {
if (telemetry_rate < 0)
telemetry_rate = AltosPreferences.telemetry_rate(serial);
set_telemetry_rate(telemetry_rate);
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");
callsign = AltosPreferences.callsign();
set_callsign(callsign);
printf("p\nE 0\n");